小编Bob*_*obo的帖子

Concat两个字符串在一起

我想使用Haskell定义我自己的中缀运算符,它将两个字符串连接在一起.但是,我想抛出一个额外的子句,其中运算符将连接两个字符串中的重叠元素.所以一个例子就是

"eagle" myinfix "eagleeyes" = "eagleeyes"
"water" myinfix "book" = "waterbook"
"need" myinfix "education" = "needucation"
Run Code Online (Sandbox Code Playgroud)

我已经想出如何返回字符串中的重叠部分:

check x y = head $ filter (`isPrefixOf` y) (tails x)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将其纳入.任何帮助?

string haskell functional-programming concatenation string-concatenation

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

检查树是否是完美树

我想编写一个Haskell函数来检查树是否是一棵完美的树.我知道如果树的所有叶子处于相同的深度,树是完美的.

我知道我会这样开始的

perfectTree :: Tree a -> Bool

但是看到我对实际定义的掌握不是太强,任何人都可以真正解释一棵完美的树是什么以及如何在Haskell中检查一棵树是完美的

我应该包括我定义的数据类型如下:

data Tree a = Leaf | Node a (Tree a) (Tree a)
Run Code Online (Sandbox Code Playgroud)

tree haskell boolean

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

返回列表,其中包含列表中的前两个字符串作为元组

我正在编写一个Haskell函数,它接受一个字符串列表并返回一个包含前两个字符串的列表作为结果的元组.因此,示例输出将是:

listtuple ["bride", "zilla", "crazy", "women"] = [("bride", "villa")]
listtuple ["basketball", "football"] = [("basketball", "football")]
Run Code Online (Sandbox Code Playgroud)

我正在考虑接近它的方式如下:

listtuple :: Eq a => [Str a] -> [(Str a, Str a)]
listtuple xs = [(x,y) | x <- xs !! 0, y <- xs !! 1]
Run Code Online (Sandbox Code Playgroud)

基本上我认为我可以只选择列表的第一个和第二个索引中的元素,但我收到错误.这里有什么帮助?

string haskell list greedy

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