使用Haskell签名通过不同类型创建函数

时间:2015-10-07 02:20:19

标签: function haskell types signature

我是Haskell的新手,我一直试图让这个函数g :: a -> b -> [(b,a)]

我通过这种方式获得了类型结果[(b,a)](不完全): [(length a , a)]

永远不要正确签名,特别是从a类型传递到b

此特定功能差不多6个小时无法解决。有人能帮我吗? 请注意,我是一个真正的初学者,所以如果可能而且不要求太多,请坚持基础知识。 提前谢谢了。

1 个答案:

答案 0 :(得分:2)

也许你可以从一个更简单的类型开始

g' :: a -> b -> (b,a)

可以理解为g'接受两个参数并以相反的顺序返回它们的元组。

现在,将其扩展为元组列表

g :: a -> b -> [(b,a)]

有一个简单的案例[],单例案例[(b,a)],其中包含单个元素,无限大小写或列表中任意其他数量的元素。例如,

doublePair :: Int -> Int -> [(Int,Int)]
doublePair x y = [(y,x),(y,x)]