エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
レコードとバリアントの双対性について - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
レコードとバリアントの双対性について - Qiita
{-# LANGUAGE Rank2Types #-} -- パターンマッチ自体をレコードとして表現する data MatchEither a b c ... {-# LANGUAGE Rank2Types #-} -- パターンマッチ自体をレコードとして表現する data MatchEither a b c = MatchEither { whenLeft :: a -> c, whenRight :: b -> c } -- レコードとして表現されたバリアント newtype RecEither a b = RecEither { unRecEither :: forall c. MatchEither a b c -> c } -- コンストラクタ left :: a -> RecEither a b left x = RecEither (\match -> whenLeft match x) right :: b -> RecEither a b right x = RecEither (\match -> whenRight matc