【发布时间】:2020-08-15 03:39:06
【问题描述】:
我正在尝试将以下代码从 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
但我不确定出了什么问题/如何解决。任何帮助将不胜感激!
【问题讨论】:
-
错误只是说
List_alg不是类型,但('a, 'b) List_alg是。
标签: haskell functional-programming sml category-theory catamorphism