piątek, 24 lutego 2012

Erlang - szybki kurs. Część 2. Funkcje, pliki, kompilacja.

Czas na pierwszy program. Przy okazji poznacie podstawy składni języka Erlang.

Na początek kilka punktów ogólnych:
  • Komentarze w listingach zaczynają się od znaku %
  • Źródła zapisujemy do plików z rozszerzeniem .erl
  • Każdy plik źródłowy musi należeć do pakietu, który nazywa się tak jak plik z pominięciem rozszerzenia. Tak więc plik test.erl powinien zawierać pakiet test. To trochę jak w Javie, gdzie każda funkcja musi należeć do klasy, a w ogólnym przypadku nazwa pliku z klasą musi się nazywać tak jak zawarta w nim klasa z rozszerzeniem .java.
  • Funkcje opisuje się jako funkcja/liczba, np node/0. Wartość po znaku łamania to liczba argumentów funkcji (tzw. arity) - tutaj na przykład mowa o funkcji node nie przyjmującej żadnych argumentów. Arity jest częścią uogólnionej nazwy funkcji (nazwałem to Fully Qualified Function Name, w skrócie FQFN), więc funkcje o tej samej nazwie bazowej a różnej ilości argumentów to zupełnie różne obiekty. test/0 i test/1 to różne funkcje, nie mające (potencjalne) nic ze sobą wspólnego. Trochę działa to na zasadzie przeciążania funkcji w C++.
  • Każda funkcja należy do pakietu i jest wywoływana (jak już wiecie) przez pakiet:funkcja(argumenty). Wyjątek stanowią tzw. funkcje wbudowane (tzw BIF-y od built-in function), które nie należą do żadnego pakietu i  wywołuje się je przez "gołą" nazwę. Poznaliście już dwa BIF-y - to funkcje node/0 i nodes/0.
  • Na początku pliku źródłowego musimy dać listę eksportowanych funkcji. Funkcje nie eksportowane dają się wywołać tylko z poziomu własnego modułu z jednym wyjątkiem - BIFy z rodziny spawn wymagają, aby funkcja będąca ich argumentem była wyeksportowana.
  • Polecenia dla samego kompilatora (i preprocesora) poprzedzamy minusem (odpowiednik # z C/C++) i kończymy kropką.

czwartek, 23 lutego 2012