En Erlang se ... bueno, no es tarea, que es la coincidencia de patrones (ya que no hay ninguna asignación, como tal, en Erlang).
$ erl
Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:true]
Eshell V5.8.1 (abort with ^G)
1> [H1, H2, H3| Rest] = [1,2,3,4,5].
[1,2,3,4,5]
2> H1.
1
3> H2.
2
4> H3.
3
5> Rest.
[4,5]
¿Por qué se llama "coincidencia de patrón"? Porque en realidad está combinando patrones. Mira:
6> [1,2,3,4,A] = [1,2,3,4,5].
[1,2,3,4,5]
7> A.
5
8> [1,2,3,4,A] = [1,2,3,4,6].
** exception error: no match of right hand side value [1,2,3,4,6]
En el primero hicimos lo que equivale en realidad a una afirmación de que la lista sería comenzar con [1,2,3,4]
y que el quinto valor podría ser cualquier cosa, pero por favor, que se unen en la variable no unido A
. En el segundo caso, hicimos lo mismo, excepto que A
está ahora vinculado, por lo que estamos buscando explícitamente la lista [1,2,3,4,5]
(porque A
ahora es 5
).
Función interesante? De Verdad? Nunca había escuchado sobre eso antes pero lo encuentro solo confuso. Pronto necesitaremos algunas herramientas para hacer que el código "programable sea legible". – Damien
@Damien: Wow, forma de reaccionar de forma exagerada. –
@Damien: [blub] (http://www.paulgraham.com/avg.html) mucho? –