In this recipe, we will write our own State Monad. We will use the state monad to store the effect of cursor movements.
Writing a State Monad
How to do it...
- Create a new project state-monad using the stack command with the simple template:
stack new state-monad simple
- Open the file src/Main.hs; we will add our code here after the initial module declaration.
- Import the following modules:
import Prelude hiding (Either(..))
import Data.Functor
import Control.Applicative
import Control.Monad
- 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) }
- Now, we will write the Functor instance...