shinichi
λ> e a b = either a b λ> :t e e :: (a -> c) -> (b -> c) -> Either a b -> c λ>
λ> e a b = either a b λ> :t e e :: (a -> c) -> (b -> c) -> Either a b -> c λ>
M × M → M
なので Either a b = a
が求められるので結局無理な気がしますね Haskellの問題ではなくSemiGroupではない何かになってしまうeither
と Either
は違って, eitherはEitherを同じ型にする関数ですmaybe
と同じλ> :t maybe maybe :: b -> (a -> b) -> Maybe a -> b
λ> maybe False odd (Just 4) False λ> maybe False odd (Just 3) True λ> maybe False odd Nothing False
either
な訳ですね。理解しました。<$>
使いますし fromMaybe
はともかく maybe
も either
も私はあまり使いませんねfmap
とは余り近くないですね… 他の言語で言う unwrap_or みたいなのにこれらの関数は相当するかとfmap
は違いますね。。。fmap
も (a -> b) -> [a] -> [b]
ですし。1 -> List A <- A x List A 1 -> B <- B x B
pattern E1 x = Left (Right x)
みたいにやる手も。DeriveAnyClass
を併用したときの怪しいインスタンスに警告が出るようになった」のは以前からで、8.10では -Wno-deriving-defaults
でその警告を抑制できるようになった、というのが変化ですねImportQualifiedPost
で地味に違和感あったこところが解消されてて嬉しい!