Maybe列表的Hackage文檔可以作爲Maybe的一個typeclasses摺疊。它還列出了以下功能:爲什麼我不能在Haskell中執行`null(Just 5)`?
null :: Maybe a -> Bool
它甚至還列出了這一功能的實現(從Foldable
):
null :: t a -> Bool
null = foldr (\_ _ -> False) True
...這似乎是相當合理的。它也適用:如果我import qualified Data.Foldable
,我可以在Maybe值上使用foldr
。
然而,當我嘗試調用null
上也許,哈斯克爾認爲我想用設計列表空:
Prelude> :t null
null :: [a] -> Bool
Prelude> null Nothing
<interactive>:3:6:
Couldn't match expected type `[a0]' with actual type `Maybe a1'
In the first argument of `null', namely `Nothing'
In the expression: null Nothing
In an equation for `it': it = null Nothing
我知道有isJust
,我只是想知道如何調用功能如null
任何摺疊。
什麼GHC /基礎版本您使用的?因爲是與基礎4.8.x是['TA - > Bool'](https://hackage.haskell.org/package/base-4.8.1.0/docs/Prelude.html#v:null),但['空'曾經是'[A] - > Bool'](https://hackage.haskell.org/package/base-4.7.0.1/docs/Prelude.html#v:null) – Carsten
@Carsten是的,這正是它 - Ubuntu Vivid顯然仍在發佈[ghc 7.6.3](http://packages.ubuntu.com/vivid/ghc),該版本於2013年4月發佈,並具有較舊版本的基礎。 –
噢,抱歉 - 看到你的答案下旬 - 順便說一句,你可以使用[赫伯特·V. Riedels PPA來源(https://launchpad.net/~hvr/+archive/ubuntu/ghc):d – Carsten