<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>