麻烦理解Haskell树

Trouble Understanding Haskell Trees

我有一些关于树的问题,我试着做一个简化的家谱树(系谱树),我从只有一个人开始,假设鲍勃爷爷,我会尽我最大的努力画这个:

1
2
3
4
5
6
                                        BOB
                                         |
                                     /        \
                                 SIMON         RUDY
                                /    \         /  \
                            ROBBIE  MARTHA  TOM   ISABEL

所以,鲍勃爷爷和奶奶有两个孩子(这不重要),西蒙和鲁迪,然后西蒙和鲁迪都有两个孩子(只有一个家长再次重要),注意,这不一定是我想做的树,但只有一个例子,可以被你们用来帮助我。我想把它作为一个数据家族,然后有一个启动"根"的函数,它将是Bob爷爷,然后有另一个函数,它将允许我向树中添加某人,如AddSimonDescending from Bob。

到目前为止,我有自动取款机(我尝试过其他东西,并把它换了个遍):

1
2
3
4
5
6
7
    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])

现在,这根本不起作用,给了我一个分析错误:

1
t4.hs:9:10: parse error on input ‘=

我尝试过修正这个问题,并改变寻找其他方法的代码,也看到了其他帖子,但没有取得任何进展…

我想我已经说清楚了,提前谢谢。


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

1
2
3
4
5
6
data Family a = Root a [Family a] | Empty deriving (Show, Read)

main :: IO()
main = do
  let root  = (\a  -> Root a [Empty])
  print(root"Bob")

但是,您也可以在主函数之外定义函数,然后调用它们:

1
2
3
4
5
6
root :: String -> Family String
root a = Root a [Empty]

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