escript works - !! yes
Joe Armstrong
joe@REDACTED
Fri Jun 25 21:43:18 CEST 2004
Oh happy day
I found to my *amazement* that escript etc all seems to get build
automatically in the R9C-2 build and everything works nicely. Thanks guys
great work.
This seems to be sparsely documented so I've appended some
information to get you started at the end of this mail.
Personally I very much like Erlang scripts, ideal for automating
lots of trivial tasks.
Questions:
1) Is the fact that this works a happy coincidence - I haven't dared
test the other stuff elink etc.
2) Does the fact that this still work mean that stand-alone Erlang
is still on the agenda?
Cheers
/Joe
If you want to try this at home do like this:
1) Build R9C-2
2) Put a couple of symlinks so that escript and beam_evm can be found
On my home machine I did this:
$ cd ~/bin
$ ln -s /home/joe/installed/otp_src_R9C-2/erts/boot/src/escript
$ ln -s /home/joe/installed/otp_src_R9C-2/bin/i686-pc-linux-gnu/beam_evm
(~/bin is in my path and ~joe/installed/... is where I built R9C)
After this erlang scripting sprang into life:
Here are two example scripts
--- fib1 ---
#!/usr/bin/env escript
-export([main/1]).
main([X]) ->
J = list_to_integer(X),
N = fib(J),
io:format("fib ~w = ~w~n",[J, N]).
fib(0) -> 0;
fib(1) -> 1;
fib(N) ->
fib(N-1) + fib(N-2).
--- fib2 ----
#!/usr/bin/env escript
-export([main/1]).
-mode(compile).
main([X]) ->
J = list_to_integer(X),
N = fib(J),
io:format("fib ~w = ~w~n",[J, N]).
fib(0) -> 0;
fib(1) -> 1;
fib(N) ->
fib(N-1) + fib(N-2).
Just chmod them to executable and off you go.
--------------------
The timings are reasonably ok
$ ./fib1 1 (0.06 sec)
$ ./fib2 1 (0.16 sec)
$ ./fib1 25 (3.06 sec)
$ ./fib2 25 (0.19 sec)
fib2 has a compile annotation, so for lengthy calculations it is better
to incur the 0.14 sec compilation overhead.
More information about the erlang-questions
mailing list