<div dir="ltr">In your problem4() function:<div><br></div><div><b style="font-family:arial,sans-serif;font-size:13px">problem4()->lists:max(lists:filter(isPal,cand())).</b><br></div><div><b style="font-family:arial,sans-serif;font-size:13px"><br>

</b></div><div>isPal is an atom. It is simply a value. If you want to pass the function isPal declared above as a function, you need to write:<br></div><div><br></div><div><b style="font-size:13px;font-family:arial,sans-serif">problem4()->lists:max(lists:filter(fun isPal/1,cand())).</b><br>

</div><div><b style="font-size:13px;font-family:arial,sans-serif"><br></b></div><div>Functions in Erlang are identified by name *and* arity. That's why you need to explicitly add the arity and use the fun syntax to pass functions around.</div>

</div><div class="gmail_extra"><br clear="all"><div><div><br></div><div><br></div><div><span style="font-size:13px"><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><b>José Valim</b></span></div>

<div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><div><span style="font-family:verdana,sans-serif;font-size:x-small"><a href="http://www.plataformatec.com.br/" style="color:rgb(42,93,176)" target="_blank">www.plataformatec.com.br</a></span></div>

<div><span style="font-family:verdana,sans-serif;font-size:x-small">Skype: jv.ptec</span></div><div><span style="font-family:verdana,sans-serif;font-size:x-small">Founder and Lead Developer</span></div></span></div></span></div>

</div>
<br><br><div class="gmail_quote">On Wed, Aug 28, 2013 at 8:54 AM, Nadav Chernin <span dir="ltr"><<a href="mailto:nadavchernin@gmail.com" target="_blank">nadavchernin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div>Hi, all</div><div><br></div><div>I'm learning Erlang with Project Euler.</div><div><br></div><div>This is my solution for problem 4.</div><div><br></div><div><br></div><div><b>-module(euler).</b></div>


<div><b>-export([problem4/0]).</b></div><div><b><br></b></div><div><b>cand()->[X*Y||X<-lists:seq(100,999),Y<-lists:seq(100,999)].</b></div><div><b>isPal(X)->integer_to_list(X)==lists:reverse(integer_to_list(X)).</b></div>


<div><b>problem4()->lists:max(lists:filter(fun(A)->isPal(A) end,cand())).</b></div><div><b><br></b></div><div>Before it, my code was:</div><div><br></div><div><div><b>-module(euler).</b></div><div><b>-export([problem4/0]).</b></div>


<div><b><br></b></div><div><b>cand()->[X*Y||X<-lists:seq(100,999),Y<-lists:seq(100,999)].</b></div><div><b>isPal(X)->integer_to_list(X)==lists:reverse(integer_to_list(X)).</b></div><div><b>problem4()->lists:max(lists:filter<span style="background-color:rgb(255,0,0)">(isPal</span>,cand())).</b></div>


</div><div><b><br></b></div><div>Difference from my final solution - using isPal instead fun(A)->isPal(A) end</div><div><br></div><div>But exception occured during execution:</div><div><br></div><div><div>exception error: no function clause matching </div>


<div>                    lists:filter(isPal,</div><div>                                 [10000,10100,10200,10300,10400,10500,10600,</div><div>                                  10700,10800,10900,11000,11100,11200,11300,</div>


<div>                                  11400,11500,11600,11700,11800,11900,12000,</div><div>                                  12100,12200,12300,12400,12500,12600|...])</div></div><div><br></div><div>Please, explain me why i can't use function as is, without using lambda function.</div>


<div>I come to Erlang from Haskell, and there i can do this,</div><div><br></div><div>Thanks, Nadav</div><div><br></div></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>