Int score = s-6ren">
gpt4 book ai didi

haskell - 在 haskell 中的函数中声明字典

转载 作者:行者123 更新时间:2023-12-02 00:22:25 25 4
gpt4 key购买 nike

我正在编写代码

import Data.Map

main = print $ scores ["APPLE","bbd","cat"]
score :: String -> Int
score = sum . map latterScore

scores :: [String] -> [Int]
scores arrayOfStrings = [ score word | word <- arrayOfStrings]

myLookup :: Char -> Int
myLookup inputChar = x <- Data.Map.fromList([("A",1), ("B",3), ("C", 3), ("E", 1), ("D", 2), ("G", 2), ("F", 4), ("I", 1), ("H", 4), ("K", 5), ("J", 8), ("M", 3), ("L", 1), ("O", 1), ("N", 1), ("Q", 10), ("P", 3), ("S", 1), ("R", 1), ("U", 1), ("T", 1), ("W", 4), ("V", 4), ("Y", 4), ("X", 8), ("Z", 10)])
case Data.Map.lookup inputChar x of Nothing -> undefined
(Just v) -> v

但是这显示了一个错误,即第 1 行输入“​​<-”的解析错误,即字典我们可以在不使用案例的情况下编写这段代码吗?

最佳答案

<-用于列表推导式和 do符号,而你两者都没有使用。您可能想使用 let :

myLookup inputChar = let x = ... in case Data.Map.lookup inputChar x of ...

其他选项将使用 where :

myLookup inputChar = case Data.Map.lookup inputChar x of ...
where x = ...

或者只是引入模块级绑定(bind):

x = ...

myLookup inputChar = case Data.Map.lookup inputChar x of ...

至于删除case ,您可以使用 fromJust 导入后Data.Maybe :

fromJust $ Data.Map.lookup inputChar x

哎呀,你甚至可以嵌入 fromList就在那里:

fromJust $ Data.Map.lookup inputChar $ Data.Map.fromList ...

关于haskell - 在 haskell 中的函数中声明字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23332538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com