W Erlang to ... cóż, to nie jest zadanie, to dopasowywanie wzorca (widząc, jak tam jest bez przydziału, jako takiego, w 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]
Dlaczego jest nazywany "dopasowywaniem wzorców"? Ponieważ w rzeczywistości jest to dopasowanie wzorców. Spójrz:
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]
W pierwszym z nich zrobiliśmy co skutecznie sprowadza się do twierdzenia, że lista będzie zacząć [1,2,3,4]
i że wartość piąty może być cokolwiek, ale należy powiązać go do niezwiązanej zmiennej A
. W drugim zrobiliśmy to samo, z tym wyjątkiem, że A
jest teraz powiązany, więc szukamy wyraźnie listy [1,2,3,4,5]
(ponieważ A
jest teraz 5
).
Fajna funkcja? Naprawdę? Nigdy o tym nie słyszałem, ale uważam, że jest to tylko mylące. Wkrótce będziemy potrzebować narzędzi do kodowania "programisty czytelnego". – Damien
@Damien: Wow, sposób na przesadny. –
@Damien: [blub] (http://www.paulgraham.com/avg.html) dużo? –