aprendiendo ( Erlang ).

sábado, 26 de febrero de 2011

Hola mundo (I)

| 0 comentarios |

Vamos a realizar nuestras primeras rutinas en Erlang. Como es de rigor, he empezado utilizando el manido recurso del Hola mundo de siempre. He creado cuatro distintos para empezar.

El primer "Hola mundo" es un script Erlang y lo he llamado de forma original hola.script. Para ello, sólo tenemos que crear el fichero con un editor de texto cualquiera, por ejemplo ... Emacs (Bien buena elección) y darle permisos de ejecución.

#!/usr/bin/env escript

main(_) ->
  io:format("Hola mundo~n").

Un script de Erlang tiene que tener en la primera línea #!/usr/bin/env escript para que se interprete como Erlang script. Debe tener una función principal o cuerpo del script main. Bueno... ¿y eso? ¿un subrayado? Es un me da igual. Se trata de un mecanismo de "pattern matching" para indicar que se recibe un parámetro pero no vamos a ser uso de él, es decir, un me da igual. La última línea se trata de una llamada al módulo io función format, que imprime por pantalla el original mensaje de hola mundo. Las llamadas tienen el formato de módulo:función(parámetros). Supongo que no hace falta realizar aclaraciones sobre lo que realiza la función format, pues es de todos conocida.

Como es de rigor, compliquemos un poco el problema. Ahora, vamos a realizar otro script en el cual recibiremos un parámetro con el nombre de la persona a la que vamos a saludar.

#!/usr/bin/env escript

main([Nombre]) ->
  io:format("Hola ~s~n", [Nombre]).

Ahora la función main recibe un parámetro (y sólo uno) con el nombre de la persona a saludar. Y cuando digo y sólo uno quiero decir exactamente eso. Si intentamos ejecutar el script con más parámetros la función main no hará pattern matching y dará error.

El siguiente ejemplo es un módulo y siguiendo la originalidad que nos caracteriza lo he llamado nombrado hola.erl. Es importante que el nombre del fichero coincida con el nombre del módulo y queda registrado en la primera línea como podemos ver en el siguiente código.

-module(hola).
-export([hola_mundo/0]).

hola_mundo() ->
    io:format("Hola mundo~n").

La estructura de un módulo es sencilla, se trata de un conjuto de directivas y funciones. Las directivas y la estructura de un módulo Erlang lo veremos en futuros post's. En nuestro caso tenemos las directivas -module(nombre). y la directiva -export([función/aridad]).. La directiva export contiene una lista de funciones con su aridad (número de parámetros que tiene la función), que serán visibles externamente.

Lo primero que debemos hacer para ejecutar nuestro Hola mundo es abrir una consola tecleando erl en Linux o werl en Windows. La consola la explicaremos más a fondo en otro post.

Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
1> c(hola.erl).
{ok,hola}
2> hola:hola_mundo().
Hola mundo
ok
3> q().              
ok
4> 

Tecleamos c(hola.erl). y si todo ha ido bien obtendremos un ok. Bien, ya tenemos compilado el módulo y podemos ejecutar nuestra misteriosa función ... pero que ilu ... que saldrá ... tachaaan ... "Hola mundo". Para salir de la consola ejecutamos el comando q().

Como en el caso de los script's, vamos a realizar una segunda versión un poco más interesante. He añadido dos funciones nuevas (saludar) una con aridad 0 y otra con aridad 1. No creo que tengáis problemas en ver lo que hace.

-module(hola2).
-export([hola_mundo/0, saludar/0, saludar/1]).

hola_mundo() ->
    io:format("Hola mundo~n").

saludar(Nombre) ->
    io:format("Hola ~s ~n ", [Nombre] ).
saludar() ->
    saludar("tu").

Publicar un comentario

0 comentarios:

 
Licencia Creative Commons
Aprendiendo Erlang por Verdi se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.