我想從「failable」數據類型中輕鬆獲取某個值,或者在發生故障時使用默認值。「應用默認值」的抽象形式
這是我爲Maybe
實現:
infixr 1 <||>
(<||>) :: Maybe a -> a -> a
(<||>) = flip fromMaybe
pred :: String -> String -> Bool
pred x name = (x ==) <$> name `lookup` myMap <||> False
pred
返回True
如果name
映射到x
在myMap
。
但正如Haskell通常的情況一樣,有一種更抽象的方式來做到這一點,我不知道。任何人?
'也許假(x ==)$查找名myMap' – augustss
是的,我想的太,但我在尋找更多的抽象。 –
問題在於,沒有真正的方法可以將'fromMaybe'抽象出來,因爲在一般情況下,函子不允許您提取已包裝的值。你總是需要一個'Maybe'特定的函數,根據你的編寫方式,函數可能是'fromMaybe','fromJust'或'maybe'。 – Tarmil