It's a precedence problem.<br><br>4> rd(test, {my_fun}).<br>test<br>5> MyFun = fun() -> "Hello" end.<br>#Fun<erl_eval.20.67289768><br>6> MyRec = #test{my_fun = MyFun}.<br>#test{my_fun = #Fun<erl_eval.20.67289768>}<br>
7> MyRec#test.my_fun().<br>* 1: syntax error before: '('<br>7> (MyRec#test.my_fun)().<br>"Hello"<br><br><br><div class="gmail_quote">2008/11/5 Jeroen Koops <span dir="ltr"><<a href="mailto:koops.j@gmail.com">koops.j@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello,<br><br>I have a record with a member to which I assign a function:<br><br>$ cat test.hrl<br>
-record(test, { my_fun }).<br>$<br><br>and, from the Erlang shell:<br><br>18> rr("test.hrl").<br>[test]<br>19> X=#test{my_fun = fun(X) -> X*2 end}.     <br>
#test{my_fun = #Fun<erl_eval.6.49591080>}<br><br>When I try to invoke the function, the shell complains with a syntax error:<br><br>20> X#test.my_fun(1).<br>** 1: syntax error before: '(' **<br><br>Of course, it does work when first assigning the record-member to a variable:<br>

<br>21> Y=X#test.my_fun.<br>#Fun<erl_eval.6.49591080><br>22> Y(1).<br>2<br><br>Is there some syntactical subtlety I'm missing out on, or is this something I should just not want?<br><br>Thanks,<br><font color="#888888"><br>
Jeroen<br>
<br>
</font><br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br></blockquote></div><br>