繁体   English   中英

如何在Haskell中进行数据类型递归

[英]how can I do a data type recursive in haskell

我该怎么做这样的数据类型:

data Xpto = String [Xpto ]

insertHead :: String -> Xpto 
insertHead s = s []

我收到此消息:

Type error in application
*** Expression     : s []
*** Term           : s
*** Type           : [Char]
*** Does not match : a -> b

这与数据类型是递归的事实无关。 您不能定义小写数据类型。 类型以大写字母开头。

此外,您必须定义一个构造函数 ,这里最直接的构造函数也可能是Xpto (构造函数也以大写字母开头)。

所以写:

data Xpto = Xpto String [Xpto]
--          ^ constructor

insertHead :: String -> Xpto
insertHead s = Xpto s []
--             ^ apply the data constructor

或者我们可以通过使用flip来使insertHead指向:

insertHead :: String -> Xpto
insertHead = flip Xpto []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM