galaxy-sixth-sensey - extensible-effectsのEffでMaybeを使う(Failを使う)
2017/07/20
extensible-effectsのEffでMaybeを使う(Failを使う)

 extensible-effectsにはFailという型(作用)があるので、そちらを使うのが一番楽かと思います 🐕

newtype Exc e v = Exc e
type Fail = Exc ()
{-# LANGUAGE FlexibleContexts #-}

import Control.Eff (Member, Eff, run)
import Control.Eff.Exception(Fail, runFail, liftMaybe)

safeHeadEff :: Member Fail r => [a] -> Eff r a
safeHeadEff [] = liftMaybe Nothing
safeHeadEff (x:_) = return x


main :: IO ()
main = do
  let x = run . runFail $ safeHeadEff [1..10]
  print x

ちなみにliftMaybeMという関数をextensible-effectsにPRしました(マージされた)


この記事はこちらから修正リクエストを送ることができます。
extensible-effectsのEffでMaybeを使う(Failを使う) - github
ゴミ箱ボタンの左にある、鉛筆ボタンを押してね!