[Haskell-beginners] infix and bind pseudonym

Daniel Fischer daniel.is.fischer at web.de
Wed Mar 4 09:56:01 EST 2009


Am Mittwoch, 4. März 2009 15:19 schrieb Magnus Therning:
> On Wed, Mar 4, 2009 at 1:20 PM, Daniel Fischer <daniel.is.fischer at web.de> 
wrote:
> > Am Mittwoch, 4. März 2009 13:59 schrieb Magnus Therning:
> >> 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:[]).
> >
> > ':' is the symbol-equivalent of an upper case letter, so it's special
> > only if it's the first symbol of an operator name, then the operator is a
> > constructor. It can appear in any place but the first in ordinary
> > operators. For example:
> >        (:) :: a -> [a] -> [a]  -- first symbol is ':' => constructor
> >        (:+) :: (RealFloat a) => a -> a -> Complex a    -- constructor
> >        (/:/) :: a -> b -> b    -- ':' not first symbol => ordinary
> > operator
>
> Yes, that's what I meant, but you put it more nicely :-)
>
> Is : really allowed in the middle of an operator like that?  (I can't
> find it at all in the description of var-symbol on the last page in
> http://www.cs.uu.nl/wiki/pub/FP/CourseLiterature/haskellsyntax-main.pdf
> , hence my question.)

When in doubt, consult the report, 
http://haskell.org/onlinereport/lexemes.html

Section 2.4:
varsym 
-> 
( symbol {symbol | :})<reservedop | dashes> 


consym 
-> 
(: {symbol | :})<reservedop> 


reservedop 
-> 
.. | : | :: | = | \ | | | <- | -> | @ | ~ | => 

>
> /M

Cheers,
Daniel



More information about the Beginners mailing list