1. Scheme

Transkrypt

1. Scheme
1. Scheme
1.1. Typy danych jezyka
Scheme
,
–
–
–
–
–
–
–
Liczby calkowite 1, 2, 3
Liczby wymierne 1/2, 4/5
Liczby zespolone 4.0 + 5.0i
Typ logiczny #t - prawda, #f - falsz
Typ znakowy #\a
Lańcuch znaków ”Witaj świecie”
Symbole ’x
1.2. Listy
1.2.1. Definiowanie listy
– (1 2 3 4)
– ((1 2) 3 4)
– (”Ala” 1 2)
1.2.2. Podstawowe operacje na listach
–
–
–
–
(car ’(1 2 3 4)) => 1
(cdr ’(1 2 3 4)) => (2 3 4)
(cons 1 ’()) => (1)
(list 1 ’()) => (1 ())
1.2.3. Predykaty
– list? sprawdza czy argument jest lista,
– null? sprawdza czy argument jest lista, pusta,
1.3. Komentarze
Komentarze - zaczynaja, sie, od średnika ;
1.4. Wyrażenia i instrukcje
1.4.1. Wyrażenia arytmetyczne
Scheme stosuje notacje, prefixowa., Oznacza to, że zapis wyrażenia 4 + 3 w notacji
Scheme bedzie
nastepuj
acy
(+ 4 3). Czyli zawsze bedzie
zapisywany najpierw operator
,
,
,
,
(funkcja), po którym bed
a
wyst
epowa
ly
jego
argumenty.
, ,
,
1
2
1. Scheme
1.4.2. Instrukcja if
(if wyrazenie zwracajace
wartość logiczna,
,
;jeśli wyrazenie zwraca prawde,
wyrazenie1
;jeśli wyrazenie zwraca falsz
wyrazenie2
)
1.4.3. Instrukcja cond
(cond
((wyrazenie logiczne 1) wyrazenie1)
...
((wyrazenie logiczne 1) wyrazenien)
(else wyrazenieE)
)
1.5. Definicje zmiennych i funkcji
Definicja zmiennej globalnej (define zmienna wyrażenie)
Definicja funkcji (define (nazwaFunkcji argumenty) cialo funkcji)
1.5.1. Wyrażenie lambda
(lambda (parametry) wyrażenie)
1.5.2. Definicje zmiennych lokalnych
(let ((zmienna1 wyrażenie1) (zmienna2 wyrażenie2)) wyrażenie-obliczane)
2. Prolog
2.1. Fakty i reguly
2.1.1. Fakty
Fakty opisuja, obiekty (jakaś
, relacje, obiektu), może to być relacja jedno lub wieloargumentowa. Interpretacja faktów jest zadaniem programisty. Zapisuje sie, je tak jak
wywolanie funkcji w jezyku
C++ i kończy znakiem kropki np.
,
– kobieta(magda). - co oznacza, że obiekt magda jest kobieta,
– matka(ola, magda). - może to znaczyć, że magda jest matka, oli (lub odwrotnie wszystko zależy od interpretacji jaka, postawimy).
2.1.2. Koniunkcje
Koniunkcje zapisuje sie, po to, żeby zaznaczyć, że musza, być spelnione wszystkie fakty
(jest to po prostu iloczyn logiczny). Np. lubi(jan, wino), lubi(jan, jedzenie) – co oznacza
że jan musi lubić zarówno wino jak i jedzenie.
2.1.3. Zapytania
Wygladaj
a, tak jak fakty, ale zaczynaja, sie, od ?-, pozwalaja, na sprawdzenie faktów,
,
jeśli prolog jest w stanie odnaleźć, spelniajace
zapytanie cele wypisuje odnalezione fakty
,
ze slowem yes, natomiast jeśli nie może na podstawie umieszczonych w bazie danych
(prologowej definiowanej przez programiste, za pomoca, faktów i regul) wypisuje no np.
– ?- kobieta(magda) pozwoli sprawdzić, czy magda jest kobieta,,
– ?- kobieta(X) odnajdzie wszystkie kobiety w bazie, kolejne cele sa, poszukiwane po
średniku (;).
2.1.4. Reguly
Używa sie, ich do zapisu, że fakt zależy od innych faktów, używa sie, ich także do
zapisywania definicji. Np. lubi(piotr, X) :- wino(X) – pozwala zdefiniować fakt, że piotr
lubi wszystkie wina
2.2. List, rekurencja
– Listy w Prologu definiuje sie, w postaci p([1, 2, 3, 4]).
– Glowe, i ogon pobiera sie, w sposób nastepuj
acy
p([X|Y]) X przyjmie wartość 1 nato,
,
miast Y [2, 3, 4]
– Listy można laczyć
za pomoca, reguly append
,
– Fakty i reguly można definiować rekurencyjnie
– Zmienna to zmienna, która jest pomijana w obliczeniach.
– Wyrażenia matematyczne oblicza sie, za pomoca, operatora is.
3