
On Wed, Mar 4, 2009 at 12:25 PM, Michael Easter
Folks,
I have a simple type called Beverage and an example that allows me to construct Maybe Beverage types.
Here are some type signatures for example functions:
request :: String -> Maybe Beverage
addMalt :: Beverage -> Maybe Beverage
I have defined a chain function like so:
chain :: (Maybe a) -> (a -> Maybe b) -> (Maybe b) chain = (>>=)
I can do this:
(chain (request "beer") addMalt)
and
request "beer" `chain` addMalt
I think I understand why, as I use the back-ticks for infix.
However, I don't have to do that for the true bind function, (>>=)
request "beer" >>= addMalt
I would like to use chain in this way -- that is without back-ticks. I'm not sure how...
Is there something I'm missing?
Yes, there are certain function names that allow infix usage without the back-ticks, the name 'chain' doesn't. What those function names are? Roughly you can say that functions that they are functions that look like binary operations, like + - ++ >>> etc. I'm not sure I read the pangauage spec correctly, but it looks like operators are made up of the following characters !@#$%^&*+-./\|<=>?~ (IIRC ':' has a special meaning in that it's allowed in "constructors", cf 1:2:[]). /M -- Magnus Therning (OpenPGP: 0xAB4DFBA4) magnus@therning.org Jabber: magnus@therning.org http://therning.org/magnus identi.ca|twitter: magthe