What I find I do if I want to use more complicated expressions in the shell is to define a small module containing the functions I need at the moment and then throw it away when done. Sometimes I even bung them somewhere in the modules I am testing and delete them when done.<br>
<br>One thing to remember is that there is no support in the erlang VM for interpreted code. All functions exist in compiled modules. So it is impossible to mix interpreted and compiled functions and in many lisp systems, there are no interpreted functions. There is an interpreter written in Erlang, erl_eval, which is used by the shell but it has no special status in the system.<br>
<br>Robert<br><br><br><div class="gmail_quote">2009/2/26 Zvi <span dir="ltr"><<a href="mailto:exta7@walla.com">exta7@walla.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;">
<br>
This is very real *practical* example of repeating multiple times measurement<br>
from the shell.<br>
You can't define your _times function from the shell and it's not in<br>
standard library, the closest is lists:foreach/2 .<br>
<br>
So one need to define Times fun from the shell using Y-combinator, before<br>
doing time measurement?<br>
<br>
The second also, very practical. It's hard to work from shell in recursive<br>
language, when you can't define recursive fun from the shell.<br>
You can't use macros from the shell either.<br>
I'd like to define loop funs and spawn processes from the shell, but the<br>
only way is to use uggly Y-combinator trick.<br>
<br>
The practical solution for this is to add times/1 and loop/1 to the<br>
user_defaults.erl or something like this (and make sure that every Erlang VM<br>
installation have this file ...).<br>
<br>
Zvi<br>
<div class="Ih2E3d"><br>
<br>
Why not tailor your own function<br>
<br>
times(F, N) when is_function(F,0), is_integer(N), N>=0 -> _times(F, N).<br>
<br>
_times(_, 0) -> ok;<br>
_times(F, N) -> F(), _times(F, N-1).<br>
<br>
and than you can easily do times(fun()->io:format("hi~n"), 10).<br>
<br>
But anyway, how often you need do something N times without take care for<br>
result for *practical* purpose? I think you choose wrong example ;-)<br>
<br>
<br>
<br>
</div><font color="#888888">--<br>
View this message in context: <a href="http://www.nabble.com/The-Beauty-of-Erlang-Syntax-tp22179816p22231875.html" target="_blank">http://www.nabble.com/The-Beauty-of-Erlang-Syntax-tp22179816p22231875.html</a><br>
</font><div><div></div><div class="Wj3C7c">Sent from the Erlang Questions mailing list archive at Nabble.com.<br>
<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>
</div></div></blockquote></div><br>