2009-09-19 17 views
15

Czy można zrealizować zamknięcie w Erlang?Erlang: Dlaczego to się nie udaje z wyjątkiem 'badarith'?

Na przykład, w jaki sposób mogę przetłumaczyć ten fragment ze schematu?

(define (make-adder n) 
    (lamdba (x) (+ x n))) 

Próbowałem następujących rzeczy, ale wyraźnie czegoś brakuje.

make_adder(n) -> 
    fun (x) -> x + n end. 

Kompilacja ta daje błąd

Warning: this expression will fail with a 'badarith' exception 
+1

Faceci, dlaczego to jest przegłosowane? Wstydzę się, jak kiepskie jest moje pytanie! – grifaton

Odpowiedz

25

Nie można dodać węgla. Zmienne zaczynają się od wielkich liter w erlangu. słowa zaczynające się od małych liter to atomy.

Innymi słowy, Twój problem nie jest w ogóle związany z fun s, wystarczy, że zamienisz nazwy zmiennych na wielkie.

+0

Dzięki! Usuwam pytanie i kładę się spać! – grifaton

+1

Nie mogę usunąć pytania ... po prostu kładę się spać. – grifaton

+1

Pozostaw pytanie i zmień tytuł na "Dlaczego otrzymuję" wyrażenie to kończy się niepowodzeniem z wyjątkiem "badarith"? lub coś w tym stylu. W ten sposób wszyscy inni początkujący erlang, którzy popełnią ten błąd (wiem, że to zrobiłem) z łatwością odnajdą go podczas wyszukiwania wiadomości. – sepp2k

0

Zmienne początek WERSALIKAMI Erlang. słowa rozpoczynające się od małych liter są atomami.

Powiązane problemy