任务是为以下函数给出适当的定义方程:
咖喱 :: ((a, b) → c) → a → b → c
uncurry :: (a → b → c) → (a, b) → c
curry 接受一个函数和两种类型 (a,b) 并返回 c。
uncurry 接受两个函数并返回 c。
我实际上不知道此时该做什么。有人可以帮忙吗? 预先感谢!
首先为
curry
编写定义,如下所示:
curry :: ((a, b) -> c) -> a -> b -> c
curry f x y = …
所以这里
f
具有类型 (a, b) -> c
,并且 x
和 y
分别具有类型 a
和 b
。现在看看如何组合 f
、x
和 y
来生成具有 c
类型的内容。根据 f
、x
和 y
的类型,只有一种合理的方法可以使用所有变量来实现此目的。
与
uncurry
相同:
uncurry :: (a -> b -> c) -> (a, b) -> c
uncurry f (x, y) = …