gpt4 book ai didi

function - Haskell 中与(高阶)函数的模式匹配

转载 作者:行者123 更新时间:2023-12-02 08:02:18 30 4
gpt4 key购买 nike

我正在尝试通过在线书籍“Learn you a Haskell”来学习一些 Haskell,并且我有一个关于高阶函数的问题。

我看到了some examples我想做一些更高级的功能,但我不知道为什么我总是看到以下异常:

*** Exception: euler13.hs:(11,0)-(15,39): Non-exhaustive patterns in function apply

我定义的函数是这个:

apply :: (Num b, Ord b) => (a -> a) -> b -> [a] -> [a]
apply f n [] = []
apply f n [x]
| n <= 1 = map f [x]
| otherwise = apply f (n-1) (map f [x])

我想将名为“f”的具体函数应用“n”次到列表“[x]”。我试图使这个函数具有多态性,因此参数的类型是“a”。但我也想使用数字和列表,所以直接使用列表(如果我想仅对数字使用该函数,显然是 [number])

有人可以帮我吗?我喜欢这种语言,但学习时有点困难,因为它与 Java 或 c(例如)非常不同

谢谢!

最佳答案

删除x周围的[]。否则,第二个模式只能匹配仅包含 1 个元素的列表。

apply f n x
| n <= 1 = map f x
| otherwise = apply f (n-1) (map f x)

关于function - Haskell 中与(高阶)函数的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4864878/

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