LambdaCase
Haskellのラムダ式とcase式を組み合わせたときの書き方を簡潔にできる
\caseって書けるやつ
code:before
\x -> case x of ...
code:after
\case ...
例
「Maybeを使ったfoldr」を使ってsum関数を定義するときの例
ちなみにfoldrの型は、foldr :: (Maybe (a, b) -> b) -> [a] -> b
普通に書くと
code:hs
sum = foldr $ \xx -> case xx of
Just (cur, acc) -> cur + acc
Nothing -> 0
このxxの部分は、謎概念なので命名もしづらいmrsekut.icon
LambdaCaseを使うと
code:hs
{-# LANGUAGE LambdaCase #-}
sum = foldr $ \case
Just (cur, acc) -> cur + acc
Nothing -> 0
ちなみにpursでは、PureScriptの(_)で関数を作ることができるので最初からきれいに書ける
code:purs(hs)
sum = foldr case _ of
Just (Tuple cur acc) -> cur + acc
Nothing -> 0
proposalで\casesと書けるやつがある
複数引数に対応した版
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0302-cases.rst
https://qiita.com/YoshikuniJujo/items/7ee3f393871c9d6935af