我的haskell一般树有什么问题?

时间:2017-05-18 15:05:01

标签: haskell tree

这是我的代码,有很多错误,我无法看到。 问题是什么?或者"是什么"问题??我在几行中得到了这些错误:

  • 数据构造函数不在范围内。 NBaum
  • 无法匹配预期类型[NBaum [Char]]'实际类型为`NBaum [Char]'
  • 在NKnoten'的第二个论点中,即`(NBlatt" Io")'
  • 在'NBaum'的第六个参数中,即

    data NBaum a = NBlatt a | NKnoten a [NBaum a]
    deriving(Eq,Show)
    
    
    tree :: NBaum String
    tree  =   
    NBaum "Sonne"  
    (NKnoten "Erde"  
        (NBlatt "MOND"  )
    
    )        
    (NBlatt "Merkur" )  
    (NBlatt "Venus" )  
    
    (NKnoten "MARS" 
    
        (NBlatt "PHOBOS" )  
        (NBlatt "DEIMOS" )  
    )      
    (NKnoten "JUPITER" 
        (NBlatt "Io" )  
        (NBlatt "EUROPA" ) 
        (NBlatt "GANYMED" )
        (NBlatt "KALLISTO" )
    
    ) 
    

1 个答案:

答案 0 :(得分:4)

问题在于,如果您描述列表[] ,则可以在方括号之间用逗号分隔 ,例如[1,4,2,5]不在圆括号之间:这是一个元组。

tree :: NBaum String
tree  = NKnoten "Sonne" [
    NKnoten "Erde"  [NBlatt "MOND"],
    NBlatt "Merkur",
    NBlatt "Venus",

    NKnoten "MARS" [
        NBlatt "PHOBOS",  
        NBlatt "DEIMOS" 
    ],      
    NKnoten "JUPITER" [
        NBlatt "Io",
        NBlatt "EUROPA",
        NBlatt "GANYMED",
        NBlatt "KALLISTO"
    ]
]

此外 - 正如代码片段中突出显示的那样 - 您(可能是意外) - 在第一个对象({{1)处写入了类型名称(NBaum)而不是构造函数名称(NKnoten) }})。