使用 Haskell 签名通过不同类型创建函数
Using Haskell signature to create function through different types
我是 Haskell 的新手,我一直在尝试实现此功能 g :: a -> b -> [(b,a)]
。
我通过这个得到了类型结果 [(b,a)]
(不完全):
[(length a , a)]
.
从未正确制作签名,尤其是从类型 a
传递到 b
。
将近 6 个小时在这个特定的函数上无法弄清楚。有人能帮我吗?
请注意,我是一个真正的初学者,所以如果可能并且要求不高,请坚持基础知识。
提前谢谢了。
也许你可以从更简单的类型开始
g' :: a -> b -> (b,a)
可以理解为 g' 接受两个参数,returns 它们的元组以相反的顺序排列。
现在,将其扩展为元组列表
g :: a -> b -> [(b,a)]
存在简单情况 []
、单例情况 [(b,a)]
具有单个元素、无限情况或列表中任何其他任意数量的元素。例如,
doublePair :: Int -> Int -> [(Int,Int)]
doublePair x y = [(y,x),(y,x)]
我是 Haskell 的新手,我一直在尝试实现此功能 g :: a -> b -> [(b,a)]
。
我通过这个得到了类型结果 [(b,a)]
(不完全):
[(length a , a)]
.
从未正确制作签名,尤其是从类型 a
传递到 b
。
将近 6 个小时在这个特定的函数上无法弄清楚。有人能帮我吗? 请注意,我是一个真正的初学者,所以如果可能并且要求不高,请坚持基础知识。 提前谢谢了。
也许你可以从更简单的类型开始
g' :: a -> b -> (b,a)
可以理解为 g' 接受两个参数,returns 它们的元组以相反的顺序排列。
现在,将其扩展为元组列表
g :: a -> b -> [(b,a)]
存在简单情况 []
、单例情况 [(b,a)]
具有单个元素、无限情况或列表中任何其他任意数量的元素。例如,
doublePair :: Int -> Int -> [(Int,Int)]
doublePair x y = [(y,x),(y,x)]