麻烦理解Haskell树

时间:2017-11-17 19:04:54

标签: haskell tree

我遇到了一些关于树木的问题,我试图制作一个简化的家谱(家谱树),我只从一个人开始,让我们说鲍勃爷爷,我会尽力画出这个:

                                        BOB
                                         |
                                     /        \
                                 SIMON         RUDY
                                /    \         /  \
                            ROBBIE  MARTHA  TOM   ISABEL

所以,爷爷鲍勃有2个孩子和奶奶(这里没关系),西蒙和鲁迪,然后西蒙和鲁迪都有2个孩子(只有1个父母重要),注意这不一定是树我想制作,但只是一个例子,你可以用来帮助我。我希望将它作为一个数据族,然后有一个函数启动“root”,它将是爷爷鲍勃,然后有另一个函数,可以让我添加一个人到树,就像添加西蒙从鲍勃下降。

到目前为止,这就是我所拥有的(我已经尝试了其他的东西并改变了它):

    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

1 个答案:

答案 0 :(得分:2)

你有一个语法错误,你可以用一个let和一个lambda在main中创建一个函数,然后使用它

root :: String -> Family String
root a = Root a [Empty]

main :: IO()
main = do
  print(root "Bob")

但是你也可以在main之外定义函数并将它们称为后者:

{{1}}