你好Haskellers和Haskellettes,哈斯克尔 - 嵌套空列表
阅读http://learnyouahaskell.com/当我的一个朋友想出了一个问题:
是否有可能在Haskell写一个递归函数,提供真正的,如果所有的子-sub -_-子列表为空。我的第一个猜想是 - 应该是 - 但是我写了一个类型注释的问题很大。
他试图像
nullRec l = if null l
then True
else if [] `elem` l
then nullRec (head [l]) && nullRec (tail l)
else False
这是 - 不工作 - :-)
我想出了类似
- 与CONCAT折叠 - 获得AA单一长串
(给我执行问题) - 或制作无限树状数据类型 - 并且使这个从列表
(尚未实施)
但后者听起来有点像矫枉过正这个问题。 什么是你的想法 - 在这样;-)
感谢晴朗的周日提前
为所有评论的反应 - 这是不好的风格,我想补充 这只是一个实验!
不要在家里试试! ;-)
想想这种函数的类型应该是什么(如果您在普通列表上实现它)! – yatima2975
我想到了 - 它应该是无限的[[... [a] ...]],但这不可能在哈斯克尔写下来 - 这就是为什么我想出了第二种方法。但有没有更简单的方法来做到这一点。 另外我的大脑有点慢,因为我今天生病了。 – epsilonhalbe
生病与否,你走在正确的轨道上!编写一系列函数'nullRec2 :: [[a]] - > Bool','nullRec3 :: [[a]] - > Bool'等很简单(尝试一下!),但是你无法让他们轻松适应单一类型签名。您可能需要树型数据,如'数据树a =分支[树a] |节点a'或者可能有类型类的东西(对此方法还没有多少考虑)。 – yatima2975