[Haskell-cafe] use of modules to save typing

Tillmann Rendel rendel at informatik.uni-marburg.de
Thu Jul 8 05:55:58 EDT 2010


Michael Mossey wrote:
>> incrCursor :: State PlayState ()
> 
> Additional question: what is proper terminology here?

Proper terminology for monadic things is somewhat debated.

> "incrCursor is a monad"

This is not true.

> "incrCursor is a monadic type" 

incrCursor is not a type, so this can't be correct. However, "incrCursor 
has a monadic type" is somewhat reasonable. However, I would avoid it 
because it is quite vague.

> "incrCursor is a monadic function"
> "incrCursor is a monadic computation"

These sound good to me. I would prefer the latter, because incrCursor 
does not take any arguments, so it is debatable whether it is a 
function. From my point of view, "monadic functions" should mean a 
function of type (a -> m b) where m is a monad, i.e. arrows in a Kleisli 
category.

An alternative to "monadic computation" would be "monadic action".

However, since we know which monad it is, I would prefer "incrCursor is 
a state transformer" or even "incrCursor is a PlayState transformer".

> "State is a monad"
> "State is a type constructor of a monad"
> "State is a monadic type" 

None of these seem to be true. However, the following is: "(State 
PlayState) is a monad".

If you want to say something about State, maybe "State is a parametric 
monad" or "State is a family of monads" is appropriate.

   Tillmann


More information about the Haskell-Cafe mailing list