[erlang-questions] stuck at a exercise

Roelof Wobben r.wobben@REDACTED
Mon Jan 26 15:43:55 CET 2015


Ivan Uemlianin schreef op 26-1-2015 om 15:40:
> In case you haven't seen it, the Erlang Handbook is an excellent clear 
> short guide to erlang syntax and practice:
>
>     http://opensource.erlang-solutions.com/erlang-handbook/
>
> Best wishes
>
> Ivan
>
>
> On 26/01/2015 14:35, Roelof Wobben wrote:
>> Leonard Boyce schreef op 26-1-2015 om 15:24:
>>> Hi Roelof,
>>>
>>> Welcome to Erlang.
>>>
>>> On Mon, Jan 26, 2015 at 9:09 AM, Roelof Wobben <r.wobben@REDACTED> 
>>> wrote:
>>>> Hello,
>>>>
>>>> At a book im following with self-study I have to do this exercise :
>>>>
>>>> Write a module boolean.erlthat takes logical expressions and 
>>>> Boolean values
>>>> (represented as the atoms  trueand  false) and returns their 
>>>> Boolean result.
>>>> The functions
>>>> you write should include b_not/1, b_and/2, b_or/2, and b_nand/2. 
>>>> You should
>>>> not use
>>>> the logical constructs  and,  or, and  not, but instead use pattern 
>>>> matching
>>>> to achieve your
>>>> goal.
>>>>
>>>> So I tried the first clause and came with this :
>>>>
>>>> -module(boolean).
>>>>
>>>> -export([boolean/1]).
>>>>
>>>> b_not({true}) ->
>>>>    false.
>>>>
>>>> But as soon as I compile it I see these error messages :
>>>>
>>>> boolean.erl:3: function boolean/1 undefined
>>>> boolean.erl:5: Warning: function b_not/1 is unused
>>>>
>>>> How to solve these ?
>>> I'm sure to get some hate for this, but I often find it easiest to
>>> explain in imperative programming terms to people new to the language;
>>>
>>> module == class
>>> public methods go in -exports([])
>>> private methods are not exported and are only callable from within the
>>> module itself
>>>
>>> In your case you'd want to export the function b_not/1
>>>
>>> Which would be callable as boolean:b_not(X)
>>>
>>> You do not export the module name, only functions you want to be 
>>> callable.
>>>
>>> Leonard
>>>
>>>> Roelof
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> erlang-questions mailing list
>>>> erlang-questions@REDACTED
>>>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>> Thanks
>>
>> Second problem .
>>
>> I added a second clause to it like this:
>>
>> -module(boolean).
>>
>> -export([b_not/1]).
>>
>> b_not(true) ->
>>   false.
>>
>> b_not(false) ->
>>   true.
>>
>> but now I see this message ;
>>
>> boolean.erl:8: function b_not/1 already defined
>> error
>>
>> Which I do not understand because here the same approach is used :
>>
>> -module(shapes).
>>
>> -import(math, [sqrt/1]).
>>
>> -export([area/1]).
>>
>> area({square, Side}) ->
>>   Side * Side ;
>>
>> area({circle, Radius}) ->
>>   math:pi() * Radius * Radius;
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>

Thanks all.

Im reading the erlang programming book.

Roelof




More information about the erlang-questions mailing list