[erlang-questions] stuck at a exercise
Roelof Wobben
r.wobben@REDACTED
Mon Jan 26 15:35:09 CET 2015
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;
More information about the erlang-questions
mailing list