Possible bug using funs

Richard Carlsson <>
Wed Jul 17 17:09:44 CEST 2002


On Wed, 17 Jul 2002, Fredrik Linder wrote:

> Hi, I get the following error when writing a fun:
> 
> 19>
> T1=fun([H1|T1],[H2|T2],Acc,Cont)->io:format("~w~n",[Acc]),Cont(T1,T2,[{H1,H2
> }|Acc],Cont); ([],[],Acc,Cont)->lists:reverse(Acc) end.
> #Fun<erl_eval.3.17583228>
> 20> T1([1,2],[1,2],[],T1).
> []
> [{1,1}]
> ** exited: {{illegal_pattern,{cons,1,{var,1,'H1'},{var,1,'T1'}}},
>             [{erl_eval,expr,3}]} **


There was a bug in erl_eval; I've reported it to OTP. Meanwhile, here is
a patch. (If the pattern was a cons, but the value was not, it resulted
in an illegal pattern error, instead of simply a match failure.)

Index: lib/stdlib/src/erl_eval.erl
===================================================================
631a632,633
> match1({cons,_,H,T}, List, Bs0) ->
>     throw(nomatch);


	/Richard


Richard Carlsson ()   (This space intentionally left blank.)
E-mail: 	WWW: http://www.csd.uu.se/~richardc/
 "Having users is like optimization: the wise course is to delay it."
   -- Paul Graham




More information about the erlang-questions mailing list