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 で地味に違和感あったこところが解消されてて嬉しい!