我在树方面遇到了一些问题,我试图制作一个简化的家谱(家谱树),我从只有 1 个人开始,比方说鲍勃爷爷,我会尽力画这个:
BOB
|
/ \
SIMON RUDY
/ \ / \
ROBBIE MARTHA TOM ISABEL
所以,鲍勃爷爷和奶奶(这里不重要)、西蒙和鲁迪有 2 个 child ,然后西蒙和鲁迪各有 2 个 child (再次只有 1 个 parent 重要),请注意,这不一定是树我只想做一个例子,大家可以用它来帮助我。我想将它作为一个数据家族,然后有一个函数来启动“根”,即鲍勃爷爷,然后有另一个函数可以让我将某人添加到树中,就像添加从鲍勃下来的西蒙一样。 p>
到目前为止,这就是我在自动柜员机上拥有的(我尝试过其他东西并全部更改):
module Geneaology where
data Family a = Root a [Family a] | Empty deriving (Show, Read)
main :: IO()
main = do
root :: String -> Family
root a = ((Root a) [Empty])
现在,这根本不起作用并给我一个解析错误:
t4.hs:9:10: parse error on input ‘=’
我尝试修复此问题并更改代码以寻找其他方法,也看到了其他帖子,但没有取得任何进展...
我想我已经说清楚了,先谢谢xD
最佳答案
您有语法错误,您可以在 main 中使用 let 和 lambda 创建一个函数,然后使用它
data Family a = Root a [Family a] | Empty deriving (Show, Read)
main :: IO()
main = do
let root = (\a -> Root a [Empty])
print(root "Bob")
但是您也可以在 main 之外定义函数并在后面调用它们:
root :: String -> Family String
root a = Root a [Empty]
main :: IO()
main = do
print(root "Bob")
关于list - 无法理解 Haskell 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47357604/