lunes, 1 de enero de 2024

Erlang: funciones y otras cosas más

Como vimos en un post anterior de Erlang vimos cómo emplear algunas funciones. En este post vamos a ver como emplear funciones propias de Erlang y a crear las nuestras.

Pero antes vamos a repasar algunas cosas sobre módulos en Erlang:

fundamentos.erl

%% @doc Fundamentos en Erlang.
%% @copyright Codemonkey Junior 2023.

%% Nombre de nuestro módulo.
-module(fundamentos).

%% autor del módulo
-author("Codemonkey Junior").

%% versión del módulo
-version("1.0.0").

%% Exportamos las funciones que vamos a usar.
-export([start/0]).

%% Para importar funciones.
-import(io, [fwrite/1]).

%% Para exportar todas las funciones.
-compile(export_all). 

%% Para exportar todas las funciones sin warnings.
-compile(nowarn_export_all).

Como buena práctica podemos documentar el código usando las etiquetas @doc. También escribir comentarios de lo que hace cada función. En este caso exponemos como importar y exportar funciones en nuesto módulo. Para obtener información de nuestro módulo podemos hacer algo como esto:

$ erl
> c(fundamentos).
> fundamentos:module_info().

La función module_info() mostrará la información del módulo. 

Como vimos en un post anterior. Podemos crear funciones para realizar alguna acción. En el caso de abajo, se trata de una función para convertir números binario, octal y hexadecimal a decimal.

-module(fundamentos).
-author("Codemonkey Junior").
-version("1.0").
-export([start/0,convierte/0]).


println(Cosa) -> io:format("~p~n", [Cosa]).


start()->
    println(" ==== Erlang ===="),
    Funcion = fun(X)-> X*2 end,
    println(Funcion(45)),
    println(self()),
    convierte().

convierte()->
    X = 2#101,
    Y = 8#0677,
    Z = 16#AE,
    io:format("De binario a decimal: ~p~n",[X]),
    io:format("De octal a decimal: ~p~n",[Y]),
    io:format("De hexadecimal a decimal: ~p~n",[Z]).

% erl
% c(fundamentos).
% fundamentos:start().

Entramos al REPL o Shell de Erlang, cargamos el programa e invocamos la función.

Erlang al igual que otros lenguajes de programación funcionales plantean una nueva forma de pensar para los programadores que usan Java, C#, C, C++ o Python. Mientras que los programadores Java requieren crear clases y clases, módulos y módulos para resolver un problema planteado con Erlang (Haskell, etc.) bastarán algunos bloques de código para hacer lo mismo. Aunque el código, en un principio, parezca incomprensible.


No hay comentarios:

Publicar un comentario