[erlang-questions] Noob question about records

Rob Elsner <>
Sun Apr 26 03:44:13 CEST 2009


Larry,

A few notes:

You have a period (.) where you need a comma (,) for both match lines.

You also need a variable name

 add(Money1, Money2) ->
        M1 = #money{currency=Cur1, amount=Amt1} = Money1,
        M2 = #money{currency=Cur2, amount=Amt2} = Money2,


On Sat, Apr 25, 2009 at 7:36 PM, Larry White <> wrote:
> I'm on my second day of erlang and getting a compiler error while
> experimenting with Records. Could someone steer me right?
>
> -module(money).
> -export([add/2]).
>
> -record(money, { currency = usd, amount = 0 }).
>
> add(Money1, Money2) ->
>        #money{currency=Cur1, amount=Amt1} = Money1.
>        #money{currency=Cur2, amount=Amt2} = Money2.
>        %% TODO: Check to see that the currencies are the same and throw
> exception if not
>        Total = Amt1 + Amt2.
>        #money{currency=Cur1,amount=
> Total}.
>
> The error I get is:
> ./money.erl:9: syntax error before: '#'
> ./money.erl:11: syntax error before: Total
> ./money.erl:12: syntax error before: '#'
>
> The statement " #money{currency=Cur1, amount=Amt1} = Money1." seems to
> work fine from the command line.
>
> Also, I tried a number of variants: using a guard for example in the
> function header, but couldn't figure out the right syntax for two guards :
> when record(Money1, money) ...?... (Money2, money).
>
> Also I tried using C1 = Money1#money.currency.  - but the next line caused a
> syntax error.
>
> Finally, apologies if this gets double posted. I sent one about 6 hours ago
> but i don't think my subscription was active then.
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions
>



More information about the erlang-questions mailing list