gpt4 book ai didi

haskell - 将函数映射到字符串

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

我的理解是Haskell中的String是一个Char字符列表。所以我应该能够将函数 Char ->Whatever 映射到字符串上,对吧?

testChar :: Char -> String
testChar c = c:c:[]

myFunc :: String -> String
myFunc str = map testChar str

main = do
putStrLn $ myFunc "hi"

当我运行这个时,我得到:

 Couldn't match type ‘[Char]’ with ‘Char’
Expected type: Char -> Char
Actual type: Char -> String
In the first argument of ‘map’, namely ‘testChar’
In the expression: map testChar str

我在这里做错了什么?

最佳答案

ghci 是你的 friend :

Prelude> let testChar c = c:c:[]
Prelude> let myFunc str = map testChar str
Prelude> :t myFunc
myFunc :: [a] -> [[a]]
Prelude> myFunc "abc"
["aa","bb","cc"]

对比:

Prelude> let myFunc' str = concatMap testChar str
Prelude> :t myFunc'
myFunc' :: [b] -> [b]
Prelude> myFunc' "abc"
"aabbcc"

编写此函数的各种等效方法:

myFunc' str = concatMap testChar str
myFunc' = concatMap testChar
myFunc' str = str >>= testChar
myFunc' = (>>= testChar)

关于haskell - 将函数映射到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31731757/

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