我正在尝试用Haskell中的另一个字符串替换字符串.这是我到目前为止的代码,但它并不完全有用.
replace :: [Char] -> [Char]
replace [] = []
replace (h:t) =
if h == "W"
then "VV" : replace t
else h : replace t
Run Code Online (Sandbox Code Playgroud)
我想能够完成这个例子:如果字符串是"HELLO WORLD",结果应该是"HELLO VVORLD".我认为单词/单词会有所帮助,但不完全确定如何实现它.
我按如下方式定义了一个树,并想检查给定元素是否是给定树的元素.这是我的代码,但它不能完全运行.它似乎只能起作用.
我是Haskell的新手,无法弄清楚如何解决这个问题.
data MyTree a = Leaf a | Node [MyTree a] deriving (Eq)
isElem :: (Eq a) => MyTree a -> MyTree a -> Bool
isElem (Node []) _ = error
isElem (Node (h:t)) (Leaf a)
| (Leaf a) `elem` (h:t) = True
| otherwise = False
Run Code Online (Sandbox Code Playgroud)
这是我的第二次尝试.
isElem :: (Eq a) => MyTree a -> MyTree a -> Bool
isElem (Node []) a = False
isElem (Node (h:t)) a
| (a == h) = True
| otherwise = …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何计算 Haskell 中一般树的深度。我可以找出简单二叉树的解决方案,但不能找出具有任意数量叶子的一般树。
这是我的二叉树代码。
--depth of a binary tree.
depth :: Tree a -> Int
depth Nil = 0
depth (Node n x1 x2) = 1 + max (depth x1) (depth x2)
Run Code Online (Sandbox Code Playgroud)
我如何修改一般树的这个?普通树包含一个树列表,这就是我遇到困难的地方。
其次,我想把树变成一个列表(这样我就可以进行计算总和等操作)
同样,我可以计算出二叉树的值,但不能计算出一般树的值。
--tree into a list.
treeToList:: Tree a -> [a]
treeToList Nil = []
treeToList (Node n x1 x2)
= collapse x1 ++ [n] ++ collapse x2
Run Code Online (Sandbox Code Playgroud)