所以我将树定义为
data Tree a = Leaf | Node a (Tree a) (Tree a) deriving Show
Run Code Online (Sandbox Code Playgroud)
我知道我可以将Leaf定义为Leaf a.但我真的只是希望我的节点有值.我的问题是,当我进行搜索时,我有一个类型的返回值函数
Tree a -> a
Run Code Online (Sandbox Code Playgroud)
由于叶子没有价值,我很困惑怎么说如果你遇到一片叶子什么都不做.我试过nil," ",' ',[]似乎没有任何工作.
编辑代码
data Tree a = Leaf | Node a (Tree a) (Tree a) deriving Show
breadthFirst :: Tree a -> [a]
breadthFirst x = _breadthFirst [x]
_breadthFirst :: [Tree a] -> [a]
_breadthFirst [] = []
_breadthFirst xs = map treeValue xs ++
_breadthFirst (concat (map immediateChildren xs)) …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个递归程序,用于将int与列表中的每个值进行比较.问题是我一直收到无法访问的错误,我真的不知道为什么.我的代码是
def isIn(x : Int, l : List[Int]) : Boolean = l match {
case Nil => false
case x => true
case h :: t => isIn(x, t)
}
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么这不起作用.或者我想,我想知道如何将x与头部用例进行比较.
例如,如果x是[1,2,3,4],那么我的程序返回
[ [], [1], [1,2], [1,2,3], [1,2,3,4] ]
Run Code Online (Sandbox Code Playgroud)