gpt4 book ai didi

haskell - Haskell 中的映射函数

转载 作者:行者123 更新时间:2023-12-04 05:07:15 24 4
gpt4 key购买 nike

据我了解,Haskell 中的 map 接受一个函数和一个 List,并将该函数应用于该列表中的每个元素,然后再创建一个新列表,并将该函数应用于每个成员。

试一试,这适用于非常简单的函数,如 (+5)所以如果我输入它可以正常工作:

map (+7) [2,8,9,3]

我得到:
[9,15,16,10]

但是,这不适用于我创建的函数。假设我做了一个函数 shiftLetter其类型声明为:
shiftLetter :: Char -> Int -> Char

(随着 Int 移动返回的字母有多远)

如果我创建一个新函数来使用多个字母并输入:
shiftLetters :: String -> Int -> Char
shiftLetters letters shift = map shiftLetters "AKHLKHN"

我收到错误,这是为什么?

最佳答案

如果您检查 map 的类型函数然后你会看到:

map :: (a -> b) -> [a] -> [b]

所以你需要一个接受一个参数的函数,而你的需要两个。你必须使用
shiftLetters letters shift = map (flip shiftLetter $ shift) letters

或者
shiftLetters letters shift = map (`shiftLetter` shift) letters

无意义的风格:
shiftLetters = flip $ map . flip shiftLetter

关于haskell - Haskell 中的映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19338547/

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