eps*_*lbe 7 haskell nested-lists
您好Haskellers和Haskellettes,
在阅读http://learnyouahaskell.com/时,我的一位朋友提出了一个问题:
在Haskell中是否可以编写递归函数,如果所有子子列表都为空,则该函数给出True.我的第一个猜测是 - 应该是 - 但我只是编写类型注释有一个大问题.
他尝试了类似的东西
nullRec l = if null l
then True
else if [] `elem` l
then nullRec (head [l]) && nullRec (tail l)
else False
Run Code Online (Sandbox Code Playgroud)
这是 - 不工作 - :-)
我想出了类似的东西
但后者对于这个问题听起来有点过分.你有什么想法 - 在这样一个阳光明媚的星期天;-)
提前致谢
作为对所有评论的反应 - 这是糟糕的风格,我想补充一下这只是一个实验!
不要在家尝试做这个!;-)
类型类怎么样?
{-# LANGUAGE FlexibleInstances, OverlappingInstances #-}
class NullRec a where
nullRec :: a -> Bool
instance NullRec a => NullRec [a] where
nullRec [] = True
nullRec ls = all nullRec ls
instance NullRec a where
nullRec _ = False
main = print . nullRec $ ([[[[()]]]] :: [[[[()]]]])
Run Code Online (Sandbox Code Playgroud)