[erlang-questions] Questions on match specifications

wrp i3text@REDACTED
Sat Nov 12 03:21:44 CET 2011


Thanks. That clear things up some. But I'm not sure about this one:

On Nov 11, 6:44 am, Magnus Henoch <magnus.hen...@REDACTED>
wrote:
> > 1. Quoting seems incosistent. Why is 'and' quoted but andalso is not?
>
> Probably a typo.  Both need to be quoted, otherwise you get a syntax
> error.

In the MatchConditions and MatchBody, aren't all the terms passed as
atoms?

Here are all the functions listed as allowed for ETS matches:

        abs       is_atom       is_record      '=:='     'and'
        element   is_binary     is_reference   '=/='     'or'
        hd        is_constant   is_seq_trace   '=='      'not'
        length    is_float      is_tuple       '/='      'xor'
        node      is_function   '+'            '<'       'band'
        round     is_integer    '-'            '=<'      'bor'
        size      is_list       '*'            '>'       'bnot'
        tl        is_number     'div'          '>='      'bxor'
        trunc     is_pid        'rem'          andalso   'bsl'
        self      is_port                      orelse    'bsr'

According to the Erlang rules for atoms, "An atom should be enclosed
in single quotes (') if it does not begin with a lower-case letter or
if it contains other characters than alphanumeric characters,
underscore (_), or @", so only the non-alphanumeric operators should
need quoting. Why do the arithmetic and logical operators need to be
quoted?



More information about the erlang-questions mailing list