将代码从 Haskell 转换为 SML 时遇到问题
Having trouble translating code from Haskell to SML
我正在尝试将以下代码从 SML 翻译成 haskell,但我遇到了一些麻烦。
type List_alg x u = (u, x->u->u)
list_cata :: List_alg x u -> [x] -> u list_cata (a,f) = cata where
cata[] =a
cata (x:l) = f x (cata l)
这是我试过的方法:
type ('a, 'b) List_alg = 'b * ('a -> 'b -> 'b)
fun list_cata (((a, f): List_alg), (l: 'a list)): 'b =
case l of
[] => a
| x::xs => f x (list_cata ((a,f), xs))
我收到错误 Error: type constructor List_alg given 0 arguments, wants 2
但我不确定 wrong/how 是什么来解决这个问题。如有任何帮助,我们将不胜感激!
List_alg
是一个需要两个参数的类型构造函数,但您在第三行没有任何参数地使用了它。尝试将其更改为 ('a, 'b) List_alg
,如
fun list_cata (((a, f): ('a, 'b) List_alg), (l: 'a list)): 'b =
请注意,您的 Haskell 实施还在 List_alg
之后通过了 x
和 u
我正在尝试将以下代码从 SML 翻译成 haskell,但我遇到了一些麻烦。
type List_alg x u = (u, x->u->u)
list_cata :: List_alg x u -> [x] -> u list_cata (a,f) = cata where
cata[] =a
cata (x:l) = f x (cata l)
这是我试过的方法:
type ('a, 'b) List_alg = 'b * ('a -> 'b -> 'b)
fun list_cata (((a, f): List_alg), (l: 'a list)): 'b =
case l of
[] => a
| x::xs => f x (list_cata ((a,f), xs))
我收到错误 Error: type constructor List_alg given 0 arguments, wants 2
但我不确定 wrong/how 是什么来解决这个问题。如有任何帮助,我们将不胜感激!
List_alg
是一个需要两个参数的类型构造函数,但您在第三行没有任何参数地使用了它。尝试将其更改为 ('a, 'b) List_alg
,如
fun list_cata (((a, f): ('a, 'b) List_alg), (l: 'a list)): 'b =
请注意,您的 Haskell 实施还在 List_alg
x
和 u