"failable"데이터 형식에서 값을 쉽게 가져 오거나 실패 할 경우 기본값을 사용하고 싶습니다. myMap
에서"기본값 적용"추상 형식
infixr 1 <||>
(<||>) :: Maybe a -> a -> a
(<||>) = flip fromMaybe
pred :: String -> String -> Bool
pred x name = (x ==) <$> name `lookup` myMap <||> False
pred
반환 x
-True
name
경우지도 :
여기 Maybe
내 구현입니다.
그러나 일반적으로 하스켈의 경우처럼 내가 모르고있는 더 추상적 인 방법이 있습니다. 누군가? 당신이 마지막에 기본와 함께, Alternative
와 결합
class Defaultable f where
infixr 1 <||>
(<||>) :: f a -> a -> a
instance Defaultable Maybe where
(<||>) = flip fromMaybe
instance Defaultable (Either a) where
(Left _) <||> x = x
(Right x) <||> _ = x
가능한 선택을 문자열 수 있습니다
는'어쩌면 거짓 (X ==) $ 조회 이름이 – augustss
예, 저도 그 생각 myMap',하지만 난 더 추상성을 찾고 있어요 : 그 동안 당신은 스스로를 정의 할 수 있습니다. –
문제는 펑터가 일반적인 경우 랩핑 된 값을 추출하지 못하게하기 때문에'fromMaybe '를 추상화하는 방법이 실제로 없다는 것입니다. 당신은 항상'Maybe' 함수가 필요할 것입니다. 이것은'fromMaybe','fromJust' 또는 당신이 그것을 쓰는 방법에 따라'maybe' 일 수 있습니다. – Tarmil