Parcels and motes
I said recently:
Is there any good terminology for a
value of type f a when f is an arbitrary functor?
I will try calling an f t value a “t parcel” and see how that
works.
The more I think about “parcel” the happier I am with it. It strongly
suggests container types, of course, so that a t parcel might be a
boxful of t s. But it also hints at some other possible situations:
- You might open the parcel and find it empty. (
Maybe t )
- You might open the parcel and find, instead of the
t you expected,
a surprising prank snake. (Either ErrorMessage t )
- You might open the parcel and find that your
t has been shipped with assembly required. (env -> t )
- The parcel might explode when you open it. (
IO t )
- And, of course, a burrito is a sort of parcel of meat and beans.
I coined “parcel” thinking that one would want different terminology
for values of type f t depending on whether f was a functor
(“parcel”) or also a monad (“mote”). Of course every mote is a
parcel, but not always vice versa. Now I'm not sure that both terms
are needed. Non-monadic functors are unusual, and non-applicative
functors rare, so perhaps one term will do for all three.
[Other articles in category /prog/haskell]
permanent link
|