Maybe 的 Hackage 文档将 Foldable 列为 Maybe 的类型类之一。它还列出了以下功能:
null :: Maybe a -> Bool
它甚至链接到这个函数的实现(来自Foldable
):
null :: t a -> Bool
null = foldr (\_ _ -> False) True
...这似乎相当合理。它也有效:如果 I import qualified Data.Foldable
,我可以foldr
在 Maybe 值上使用。
但是,当我尝试调用null
Maybe 时,Haskell 认为我想使用为列表设计的 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
任何可折叠的函数。