Programowanie funkcyjne/Scheme: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Kubica (dyskusja | edycje)
Nie podano opisu zmian
 
Kubica (dyskusja | edycje)
Linia 10: Linia 10:
Tak jak inne dialekty ML-a, Ocaml charakteryzuje się:
Tak jak inne dialekty ML-a, Ocaml charakteryzuje się:
* ścisłą statyczną kontrolą typów,  
* ścisłą statyczną kontrolą typów,  
*
* polimorfizmem, oraz
* tym, że zawiera konstrukcje imperatywne.
<p align="justify">
W tym i kolejnym wykładzie zobaczymy przedstawicieli innych rodzin funkcyjnych języków programowania.
W tym wykładzie poznamy język Scheme -- dialekt Lispu.
</p>
 
== Kombinacje i wyrażenia ==
<p align="justify">
Podstawową konstrukcją składniową w Scheme'ie jest <i>kombinacja</i>.
Jest to sekwencja wartości ujętych w nawiasy.
Pierwsza z tych wartości musi być procedurą.
Kolejne wartości stanowią argumenty.
Obliczenie wartości kombinacji polega na wywołaniu procedury będącej pierwszym elementem
kombinacji i zastosowaniu jej do pozostałych elementów kombinacji.
</p>
 
<p align="justify">
Wyrażenia, nazywane również S-wyrażeniami, budujemy używając kombinacji,
nazwanych wartości i stałych.
</p>
 
<wyrażenie>    ::= <stała> | <kombinacja>
<kombinacja>    ::= <u>(</u> { <wyrażenie> }<sup>+</sup> <u>)</u>
<stała>        ::= <identyfikator> | <liczba> | ...
 
42
(+ 36 6)
          \textsl{- : int = 42}
          ~~
          3 * 14;;
          \textsl{- : int = 42}
          ~~
          100 - 58;;
          \textsl{- : int = 42}
          ~~
          1 * 2 * 3 * 4 * 5 - ((6 + 7) * 8 * 9 / 12);;
          \textsl{- : int = 42}
          ~~
          silnia 7 / silnia 5;;
          \textsl{- : int = 42}
          ~~
          596.4 /. 14.2;;
          \textsl{- : float = 42.}

Wersja z 21:24, 17 gru 2006

Wstęp

W dotychczasowych wykładach poznawaliśmy i używaliśmy języka Ocaml. Ocaml (Objective Caml) to dialekt języka ML. Wśród dialektów ML-a jest to język bogaty, ze względu na to, że zawiera:

  • bogaty zestaw bibliotek,
  • programowanie obiektowe,
  • system modułów i funktorów, wraz z funktorami wyższych rzędów.

Tak jak inne dialekty ML-a, Ocaml charakteryzuje się:

  • ścisłą statyczną kontrolą typów,
  • polimorfizmem, oraz
  • tym, że zawiera konstrukcje imperatywne.

W tym i kolejnym wykładzie zobaczymy przedstawicieli innych rodzin funkcyjnych języków programowania. W tym wykładzie poznamy język Scheme -- dialekt Lispu.

Kombinacje i wyrażenia

Podstawową konstrukcją składniową w Scheme'ie jest kombinacja. Jest to sekwencja wartości ujętych w nawiasy. Pierwsza z tych wartości musi być procedurą. Kolejne wartości stanowią argumenty. Obliczenie wartości kombinacji polega na wywołaniu procedury będącej pierwszym elementem kombinacji i zastosowaniu jej do pozostałych elementów kombinacji.

Wyrażenia, nazywane również S-wyrażeniami, budujemy używając kombinacji, nazwanych wartości i stałych.

<wyrażenie>     ::= <stała> | <kombinacja> 
<kombinacja>    ::= ( { <wyrażenie> }+ )
<stała>         ::= <identyfikator> | <liczba> | ...
42
(+ 36 6)
         \textsl{- : int = 42}
         ~~
         3 * 14;;
         \textsl{- : int = 42}
         ~~
         100 - 58;;
         \textsl{- : int = 42}
         ~~
         1 * 2 * 3 * 4 * 5 - ((6 + 7) * 8 * 9 / 12);;
         \textsl{- : int = 42}
         ~~
         silnia 7 / silnia 5;;
         \textsl{- : int = 42}
         ~~
         596.4 /. 14.2;; 
         \textsl{- : float = 42.}