モナド定義側関数
mrsekut.iconが適当に命名した名前
pop :: State Stack Stringのようなモナドを生成する側の関数のこと
以下のようなコードのpop, push, stackMainp
code:hs
import Control.Monad.State
pop :: State Stack Int
pop = state $ \(x : xs) -> (x, xs) -- (x, xs)は(Int, Stack)
push :: Int -> State Stack ()
push a = state $ \xs -> ((), a : xs)
stackMainp :: State Stack Int
stackMainp = do
push 3
pop
pop
main = do
こうした関数を定義する際に気にすることを見る
code:hs
stackMainp :: State Stack Int
stackMainp = do
-- ここを実装するときに何を意識するか