holamundo.erl
% Hola mundo en Erlang -module(holamundo). -import(io, [format/1]). -export([main/1]). main(_Args) -> format("Hola, mundo con Erlang!!~n").
Ejecutando con Docker:
$ docker run -it --rm --name erlang-inst1 -v "$PWD":/usr/src/myapp -w /usr/src/myapp erlang escript holamundo.erl
Teniendo instalado Erlang en nuestras máquinas el código cambia un poco. No es necesario contar con un método main con un argumento.
holamundo2.erl
% Hola mundo en Erlang -module(holamundo). -import(io, [format/1]). -export([start/0]). start() -> format("Hola, mundo con Erlang!!~n").
Ejecutando sin Docker:
$ erl > c(holamundo2). > holamundo2:start().
Es importante recordar que toda variable en Erlang debe comenzar con una mayúscula y toda instrucción termina con un punto. Tampoco puedes reasignar un valor a una variable con valor asignado previamente.
$ erl Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit] Eshell V12.0 (abort with ^G) 1> E=0. 0 2> 0=E. 0 3> E=8. ** exception error: no match of right hand side value 8 4> E=4. ** exception error: no match of right hand side value 4 5> BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution
Ejemplo. Crear una función que sume dos número enteros.
suma.erl
-module(suma). -author("Codemonkey Junior"). -version("1.0.0"). -export([suma/2, main/1]). -import(io, [format/1]).
-import(io, [format/2]). main(_Args)-> format("Sumar dos numeros en Erlang~n"), A = 2, B = 3, suma(A,B). suma(A, B)-> format("A=~p~n",[A]), format("B=~p~n",[B]), RESULT = A+B, format("Suma=~p~n",[RESULT]). % erl % c(suma). % suma:main(1). % q().
$ erl > c(suma). > suma:main(1). > q().
En próximos post veremos más ejemplos.
Enlaces:
https://codemonkeyjunior.blogspot.com/2020/09/docker-instalando-erlang.html
https://erlang-otp.es/
https://learnyousomeerlang.com/
Está muy bueno!
ResponderEliminarEs una excelente introducción y muy bueno que hayas mostrado escript! 👏
Un tip nomás: en general es preferible no usar -import.
Escribir io:format("Suma=~p~n", [RESULT]). no son tantos caracteres más y tiene varios beneficios:
- Se puede copiar y pegar directo a la consola para debuggear.
- Es claro para quien lo lee que eso no es una función interna del módulo (se ahorra tiempo perdido en buscar dónde está definida la función)
Para más tips de cómo escribir Erlang "prolijito", te recomiendo: https://github.com/inaka/erlang_guidelines
Gracias por tu comentario y sugerencia. Le echaré un vistazo.
Eliminar