Programowanie funkcyjne/Scheme: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
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.}