Ir al contenido

Programación en Erlang/Declaración, definición y uso de métodos y funciones

De Wikilibros, la colección de libros de texto de contenido libre.

Métodos y funciones en Erlang

[editar]

Para ver una función en Erlang podemos el archivo even_prime.er con el siguiente código -module(even_prime). % 1 -export([is_even_prime/1]). % 2

                                              % 3 

is_even_prime(2) -> % 4 clause 1 is simple

   true;                                      % 5

is_even_prime(N) when is_integer(N) -> % 6 clause 2 has a guard: is_integer(N)

   false;                                     % 7

is_even_prime(Any) -> % 8 clause 3 is simple

   'I prefer integer inputs'.                 % 9

Las clausulas de las funciones están puestas en el orden en el cual se verifican. Primero is_even_prime(2) es verificada para ver si concuerda. Si el argumento es verificado dicha función regresa verdadero. Si is_even_prime(2) no es verificada, entonces se trata is_even_prime(N). is_even_prime(N) es verificada. La declaración when is_integer es una guardia que solo admite tipos integer a N. al final nos dice que la función se terminad definiendo. is_even_prime(Any) coincide con cualquier cosa de cualquier tipo y regresa “i prefer integer imputs” . la función se ha terminado. Esta función es una función total y cumple todos los los posibles argumentos de entrada. Salidas 2> c(even_prime). ./even_prime.erl:8: Warning: variable 'Any' is unused {ok,even_prime}

3> even_prime:is_even_prime(2). true

4> even_prime:is_even_prime(1). false

5> even_prime:is_even_prime(seven). 'I prefer integer inputs'

Estructura de una función

[editar]

================================================================== Syntax/structure of a function: ================================================================== semicolon - ends a clause period - ends a function when - starts a guard arrow - separates the head from the tail of the function function head - input part of function includes the signature and guard function tail - output/consequence(s) part of function signature - the function name and argument structure/count ================================================================== rotate_list( [H|T] ) when is_atom(H) -> T ++ [H].

                                    .

[----signature-----] [----guard----] .

                                    .                     

[-----------function head----------] . [--function tail--]

==================================================================