gpt4 book ai didi

haskell - 为什么我在此 Haskell 代码中得到 `Couldn' t match expected type?

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

我有一个功能可以正常工作:

      z::Int->Int->[Char]
z x y =show(x)++show(y)++show(x*y)

它实际上只是一个将一些数字转换为字符串的函数。然后我使用我的快速排序函数对字符串进行快速排序。

quicksort.z 2 3

但是这里我得到了错误

Couldn't match expected type `a0 -> [a1]' with actual type `[Char]'
In the return type of a call of `z'
In the second argument of `(.)', namely `z 2 3'
In the expression: flagskib . z 2 3

我尝试了括号和 $ 函数的使用等修复,但没有帮助。

我很欣赏上面的任何文字。问题已经解决了,所以这篇文章的全部意义就是学习。

最佳答案

quicksort 采用一个参数。 z 需要两个。组合运算符具有以下类型

(.) :: (b -> c) -> (a -> b) -> a -> c

也许你现在可以看出问题所在了。类型不匹配。

quicksort $ z 2 3

会起作用。 quicksort 也是如此。 z 2 $ 3 或类似的 (quicksort . z 2) 3 因为将 z 应用于参数 2 会返回一个函数一个参数,匹配 (.) 的类型(部分应用)。

关于haskell - 为什么我在此 Haskell 代码中得到 `Couldn' t match expected type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10271219/

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