我遇到了一些关于树木的问题,我试图制作一个简化的家谱(家谱树),我只从一个人开始,让我们说鲍勃爷爷,我会尽力画出这个:
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
答案 0 :(得分:2)
你有一个语法错误,你可以用一个let和一个lambda在main中创建一个函数,然后使用它
root :: String -> Family String
root a = Root a [Empty]
main :: IO()
main = do
print(root "Bob")
但是你也可以在main之外定义函数并将它们称为后者:
{{1}}