Syntax is throughing my understanding off.

Robert Virding <>
Tue Sep 28 23:42:36 CEST 2004


It's even more basic than that.

A function name is an atom.
An atom is either a lowercase letter followed by letters, digits and '_'.
For example myfun, lotsOfStuff1 or even_more_stuff.
or
an atom is a single quote ' followed by any characters up to the next single
quote. There are rules for entering funny characters in quoted atoms. For
example '#text#', 'this is a n atom', or '->'.

These rules apply to all atoms, everywhere.

Robert

----- Original Message ----- 
From: "Eric Newhuis" <>
To: "Edward Ing" <>; <>
Sent: Thursday, September 23, 2004 6:33 AM
Subject: Re: Syntax is throughing my understanding off.


> The previous response still holds.
>
> Erlang needs a hint that the function name is still just an atom like
every
> other function name.  There is nothing special about the use of an atom in
> the function name.
>
> The following are equivalent:
>
> myfun () -> 0.
>
> 'myfun' () -> 0.
>
>
> But because Erlang treats # as a special character you cannot declare an
> atom in a function declaration starting with the # sign.  You must
> explicitly tell the parser/lexical analyzer that you are feeding it an
atom.
>
> <atom> <left-paren> <param-list> <right-paren> <arrow> <function-body>
<dot>
>
> Atoms are expressed as words beginning with lower case letters or as
> single-quoted character globs.
>
> You'll also see stuff like this from time to time:
>
> 'CapitalLetterFunctionName' () -> 0.
>
> '$BettingThatNobodyElseThinksOfUsingDollarSignToAvoidGlobalNameConflict'()
> -> 0.
>
> Ciao.  Happy Erlanging.
>
>
> On 9/22/04 8:51 PM, "Edward Ing" <> wrote:
>
> > Okay,
> >
> > In most programming languages I work with, the name of a function is a
> > 'symbol'.   And characters like " ' " are tokens which demarcate a
literal
> > in between. Is it the case that erlang evaluating '#text#' to make up
the
> > function name symbol?
> >
> > ----- Original Message -----
> > From: "Bengt Kleberg" <>
> > To: <>
> > Sent: Wednesday, September 22, 2004 1:44 AM
> > Subject: Re: Syntax is throughing my understanding off.
> >
> >
> >> Edward Ing wrote:
> >>> Hi,
> >>> I am new to Erlang and I am trying to learn to use it to manipulate
XML.
> >>> I am lookng into the source files and see this definition:
> >>>
> >>> '#text#'(Text) ->
> >>>     export_text(Text).
> >>>
> >>> I cannot find any reference material to explain what this means, the
> >>> '#text#'(Text).
> >>>
> >>> Obviously it is defining a function, but what is how do you invoke
this
> >>> function? Is '#text#' some kind of macro substitution?
> >>
> >> 1 you call the function like an ordinary function:
> >>
> >> '#text#'("a text").
> >>
> >> (or F = '#text', F("a text"), etc.)
> >>
> >>
> >> 2 it is not a macro. (macros are accessed with '?' ,ie ?A_MACRO). what
> >> is happening is the creation of an _atom_ . atoms are usually small
> >> letters, numbers and '_', but they can be anything. you just have to
> >> single quote (') them. eg 'This is an atom!'
> >>
> >>
> >> bengt
>
>
>




More information about the erlang-questions mailing list