How to do it...

  1. Create a new project state-monad using the stack command with the simple template:
        stack new state-monad simple
  1. Open the file src/Main.hs; we will add our code here after the initial module declaration.
  2. Import the following modules:
        import Prelude hiding (Either(..))        import Data.Functor        import Control.Applicative        import Control.Monad
  1. Now, add the definition for the State Monad. A State Monad will store state s with the monad:
        data State s a = State { runState :: s -> (a, s) } 
  1. Now, we will write the Functor instance for the state. Writing the Functor instance is easy; we need to transform output a with the function f :: a -> b and produce b:
        instance Functor (State s) where        fmap f (State stateFunc) =  let nextStateFunction ...

Get Haskell Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.