librelist archives

« back to archive

Hola mundo!

Hola mundo!

From:
Leonardo Apelhanz
Date:
2010-06-25 @ 20:10
main(_) ->
io:format("Hello World\n").

Bueno, la verdad ni idea de Erlang (esto lo copie de acá
http://onlamp.com/pub/a/onlamp/2007/09/13/introduction-to-erlang.html) en
fin, vi el anuncio en la lista de python, y asi como python me abrio sus
puertas (ahora laburo como programador python), espero que Erlang sea mi
compañero para entrar en el mundo de la programación funcional y la
programación concurrente.

Saludos!

Hola mundo!

From:
dequis
Date:
2010-08-10 @ 02:13
Buenas, soy nuevo, vengo aprendiendo erlang desde hace una semana mas
o menos, y por suerte me estoy acostumbrando a las mañas de la
sintaxis. Este es mi hola mundo, acepto (y pido) críticas.

%%%%%%%%%%%%%%%%%%%%%%%%%%
-module(hello).
-export([rot13/1, hello/0]).

rot13_letter(L, Start) ->
    (L - Start + 13) rem 26 + Start.

rot13_char(C) when C >= 65, C =< 90 ->
    rot13_letter(C, 65);
rot13_char(C) when C >= 97, C =< 122 ->
    rot13_letter(C, 97);
rot13_char(C) ->
    C.

rot13(String) ->
    [rot13_char(X) || X <- String].

hello() ->
    io:format("~s~n", [rot13("Ubyn zhaqb!")]).
%%%%%%%%%%%%%%%%%%%%%%%%%%

Y es oficialmente mi primer programa en erlang (no hice ni los del
tutorial). Un par de preguntas:
-¿Es lo mismo un list comprehension que llama a una función que
lists:map? ¿O conviene uno más que el otro?
-¿Se pueden poner las funciones extremadamente cortas en una sola
linea? Vengo de python, donde los oneliners son herejía, pero allá no
escribía funciones TAN cortas.
-¿Se les ocurre una mejor implementación de rot13?

Re: [erlar] Hola mundo!

From:
Mariano Guerra
Date:
2010-08-10 @ 02:46
2010/8/9 dequis <dx@dxzone.com.ar>:
> Buenas, soy nuevo, vengo aprendiendo erlang desde hace una semana mas
> o menos, y por suerte me estoy acostumbrando a las mañas de la
> sintaxis. Este es mi hola mundo, acepto (y pido) críticas.
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%
> -module(hello).
> -export([rot13/1, hello/0]).
>
> rot13_letter(L, Start) ->
>    (L - Start + 13) rem 26 + Start.
>
> rot13_char(C) when C >= 65, C =< 90 ->
>    rot13_letter(C, 65);
> rot13_char(C) when C >= 97, C =< 122 ->
>    rot13_letter(C, 97);
> rot13_char(C) ->
>    C.
>
> rot13(String) ->
>    [rot13_char(X) || X <- String].
>
> hello() ->
>    io:format("~s~n", [rot13("Ubyn zhaqb!")]).
> %%%%%%%%%%%%%%%%%%%%%%%%%%

Bienvenido, creo que te conozco de algún lado :P

> Y es oficialmente mi primer programa en erlang (no hice ni los del
> tutorial). Un par de preguntas:
> -¿Es lo mismo un list comprehension que llama a una función que
> lists:map? ¿O conviene uno más que el otro?

no se pueden hacer asunciones sin medir pero la implementación de map
es como esperarías que fuera:

http://github.com/erlang/otp/blob/dev/lib/stdlib/src/lists.erl#L945

y por lo que se ve no se puede aplicar tail call optimization, además
incurrís en una llamada a una función por cada elemento mientras que
una list comprehension es una operacion builtin.

si tenes curiosidad agarra un ejemplo como el siguiente:

-module(test).

-export([listcomp/1, map/1]).

listcomp(List) ->
    [X + 1 || X <- List].

map(List) ->
    lists:map(fun (X) -> X + 1 end, List).

y corre

erlc -S test.erl

mira el archivo test.S, al menos hasta ese nivel no hizo ninguna
optimización interesante (quizas mas abajo haga algo)

> -¿Se pueden poner las funciones extremadamente cortas en una sola
> linea? Vengo de python, donde los oneliners son herejía, pero allá no
> escribía funciones TAN cortas.

he visto muchas funciones definidas en una linea si tienen menos de 80
caracteres asi que supongo que esta todo bien.

> -¿Se les ocurre una mejor implementación de rot13?

para mi esta bastante claro (tengo menos de un anio programando en
erlang asi que puede que haya alguna mejora).

saludos

Re: [erlar] Hola mundo!

From:
Mariano Guerra
Date:
2010-06-25 @ 20:22
2010/6/25 Leonardo Apelhanz <elmaildejapel@gmail.com>:
> main(_) ->
> io:format("Hello World\n").
>
> Bueno, la verdad ni idea de Erlang (esto lo copie de acá
> http://onlamp.com/pub/a/onlamp/2007/09/13/introduction-to-erlang.html) en
> fin, vi el anuncio en la lista de python, y asi como python me abrio sus
> puertas (ahora laburo como programador python), espero que Erlang sea mi
> compañero para entrar en el mundo de la programación funcional y la
> programación concurrente.
> Saludos!

bienvenido, la idea es aprender, asi que estas en el lugar indicado.

Saludos