小编and*_*ndy的帖子

在Haskell中,为什么在下面的函数之前使用Eq a => [a]很重要?

我有这个功能

sameElts :: Eq a => [a] -> Bool 
Run Code Online (Sandbox Code Playgroud)

如果给定一个列表,当列表的所有元素相等时返回True,否则返回False.

例如:

sameElts [1,2] = False
sameElts [2,2] = True
sameElts [2] = True
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释Eq a =>对类型的代码片段的需求sameElts吗?我假设它强制类型为数字列表,以便使用equals运算符.

haskell functional-programming

3
推荐指数
1
解决办法
186
查看次数

如何递归定义我自己的haskell函数来附加两个列表?

如何定义一个带有两个列表和输出1列表的追加函数.

所以plusplus [1,2,3] [4,5,6]应该回来[1,2,3,4,5,6].

到目前为止,我有以下内容:

plusplus :: [Int] -> [Int] -> [Int]
plusplus [] [] = []
plusplus [] [x] = [x]
plusplus [x] [] = [x]
plusplus (x:xs) (y:ys) = x: plusplus xs (y:ys)
Run Code Online (Sandbox Code Playgroud)

我想定义自己的++函数,但是使用递归.当我用两个列表实际执行它时,上面的代码给出了一个错误.

这是我通过命令获得的错误示例:

plusplus [1,2,3] [4,5,6] 
[1,2,3*** Exception: baby.hs:(...): Non-exhaustive patterns in function plusplus
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

1
推荐指数
1
解决办法
525
查看次数

标签 统计

functional-programming ×2

haskell ×2