state monad
a
s