Tag: lisp
- Lisp
dydaktyka/lisp |
Dodano: 31-03-2008 |
Zmodyfikowano: 30-11-2010
Będąc na studiach razem z Kubą Dziwiszem oraz Gosią Sztokfisz
przygotowaliśmy LISPouczek, czyli prosty samouczek
języka LISP. Jest on opracowany na bazie dialektu Common LISP.
W obecnej chwili wiem, że informacje zawarte w tym samouczku w niektórych miejscach
nie są zbyt precyzyjne, tym niemn...
- Lekcja 25
dydaktyka/lisp/lekcja-25 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 24
25. Wejście/wyjście
W LISP istnieje szereg struktur i instrukcji służących do obsługi szeroko rozmuianego wejścia/wyjścia.
25.1 Napisy
Podstawową strukturą, która przechowuje zbiory liter jest napis. W LISP zapisujemy go przy pomocy
tekstu ograniczonego podójny...
- Lekcja 24
dydaktyka/lisp/lekcja-24 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 23 | Lekcja 25
24. Struktury
Struktury pozwalają na przechowywanie razem pewnych logicznie powiązanych informacji. Ściślej rzecz
ujmując, pozwalają na przechowywanie elementów i ich atrybutów razem. Podobne są do struktur w C
czy rekordów w Pascalu, ale posiadają specja...
- Lekcja 23
dydaktyka/lisp/lekcja-23 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 22 | Lekcja 24
23. Drzewa
Drzewa są zagnieżdżonymi listami. Istnieje wiele instrukcji operujących na listach w ogólności, ale
przeważnie dokonują one zmian li tylko na najwyższym poziomie list. Istnieje kila instrukcji, które
pozwalają dostać się do głębszych gałęzi drz...
- Lekcja 22
dydaktyka/lisp/lekcja-22 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 21 | Lekcja 23
22. Tablice
Tablice w LISP nie są listami, lecz osobnymi strukturami. Ich notacja poprzedzona jest znakiem #.
Tak więc (1 2 3) jest listą składającą sięz 3 elementów, natomiast #(1 2 3) jest jednowymiarową
tablicą składającą się również z trzech elementów...
- Lekcja 21
dydaktyka/lisp/lekcja-21 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 20 | Lekcja 22
21. Stosy
Podobnie łatwo można manipulować listami, widząc je jako stosy. Stos, to struktura, która ma
dwie funkcjie dostępowe – push i pop. Pierwsza z nich dodaje nowy element na wierzchołek stosu,
druga zaś zdejmuje element z wierzchołka stosu, p...
- Lekcja 20
dydaktyka/lisp/lekcja-20 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 19 | Lekcja 21
20. Zbiory
Na listach można również zaimplementować w łatwy sposób obiekty będące zwane zbiorami, charakteryzujące
się tym, że zawierają nieuporządkowane kolekcje elementów występujących tylko raz. Tzn.
dodanie kolejnego elementu, który jest równy w myśl...
- Lekcja 19
dydaktyka/lisp/lekcja-19 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 18 | Lekcja 20
19. Notacja lambda
W LISP zaimplementowana jest matematyczna notacja funkcji nosząca nazwę notacji lambda, wymyślona
przez Alonzo Church’a. Notacja ta charakteryzuje się tym, że jasno w niej widać argumenty funkcji
oraz operacje jakie na nich są prz...
- Lekcja 18
dydaktyka/lisp/lekcja-18 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 17 | Lekcja 19
18. Równość obiektów
W LISP zmienne można porównywać na kilka sposbów. Każdy kolejny przedstawiony predykat równości
obiektów będzie prawdziwy, jeśli poprzednie predykaty też były prawdziwe dla zadanych zmiennych.
Osobno omówiony jest predykat =, służący...
- Lekcja 17
dydaktyka/lisp/lekcja-17 |
Dodano: 30-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 16 | Lekcja 18
17. Argumenty opcjonalne.
W praktyce programistycznej często zdarzają się sytuacje, w których wywołujemy pewne funkcje
z tym samym zestawem pewnych argumentów. Zamiast pisać osobne funkcje przypadku, w którym
wykorzystujemy tylko częśćargumentów oraz aby...
- Lekcja 16
dydaktyka/lisp/lekcja-16 |
Dodano: 29-11-2010 |
Zmodyfikowano: 30-11-2010
Spis treści | Lekcja 15 | Lekcja 17
16. Listy asocjacyjne
Wykorzystując listy łatwo można stworzyć strukturę zwaną listą asocjacyjną, w skrócie a-list.
Lista asocjacyjna to lista, która zawiera elementy zwane wpisami. Każdy wpis też jest listą
zawierająca klucz i jego wartość. Przykładowa ...
- Lekcja 15
dydaktyka/lisp/lekcja-15 |
Dodano: 29-11-2010 |
Zmodyfikowano: 29-11-2010
Spis treści | Lekcja 14 | Lekcja 16
15. Wykonywanie następujących po sobie instrukcji
Do wykonywania następujących po sobie instrukcji przydatne są formy postaci prog?. Różnią się
one jedynie wartością, która jest przez nie zwracana, natomiast ich wykonanie jest identyczne, tzn.
forma post...
- Lekcja 14
dydaktyka/lisp/lekcja-14 |
Dodano: 29-11-2010 |
Zmodyfikowano: 29-11-2010
Spis treści | Lekcja 13 | Lekcja 15
14. Rekursja a iteracja
W LISP istnieje kilka instrukcji (makr i form specjalnych) pozwalających wykonywać wielokrotnie ten
sam fragment kodu. W tradycyjnym programowaniu służą do tego instrukcje iteracyjne oraz rekurencyjne
wywołania pewnych funkcji. Pod...
- Lekcja 13
dydaktyka/lisp/lekcja-13 |
Dodano: 29-11-2010 |
Zmodyfikowano: 29-11-2010
Spis treści | Lekcja 12 | Lekcja 14
13. Jawne wywoływanie funkcji
W LISP każda forma postaci (f list-arg) jeśli nie jest formą specjalną, traktowana jest jak
wywołanie funkcji f z listą argumentów w postaci list-arg.
Istnieją również inne sposoby wywoływania funkcji oraz w szczegolności dom...
- Lekcja 12
dydaktyka/lisp/lekcja-12 |
Dodano: 29-11-2010 |
Zmodyfikowano: 29-11-2010
Spis treści | Lekcja 11 | Lekcja 13
12. Zawężenie leksykalne i zmienne specjalne
W LISP isntieją dwa typy zmiennych: zmienne zwykłe i specjalne.
12.1 Zmienne zwykłe
Zmienne zwykłe charakteryzują się
tym, że zakres ich widoczności jest leksykalny, tzn. można się do nich odwoływać tylk...
- Lekcja 11
dydaktyka/lisp/lekcja-11 |
Dodano: 29-11-2010 |
Zmodyfikowano: 29-11-2010
Spis treści | Lekcja 10 | Lekcja 12
2. 11. Instrukcje warunkowe – IF, WHEN, UNLESS, CASE, COND
IF
LISP wyposażony jest również w specjalne formy dla wyrażeń warunkowych. IF jest najprostszą z nich. Specjalna funkcja IF bierze trzy argumenty: próba, prawdziwa część i fałszywa część. Jeśli...
- Lekcja 10
dydaktyka/lisp/lekcja-10 |
Dodano: 29-11-2010 |
Zmodyfikowano: 29-11-2010
Spis treści | Lekcja 9 | Lekcja 11
10. Funkcje logiczne
NOT
NOT jest ” przeciwieństwem” predykatów: zamienia tak z nie i nie z tak. W terminologii Lispa podanie na wejście NOT wartości T zwraca NIL, zaś podanie wartości NIL zwraca T. Ciekawą rzeczą jest fakt, iż możemy przywią...
- Lekcja 8
dydaktyka/lisp/lekcja-8 |
Dodano: 27-11-2010 |
Zmodyfikowano: 29-11-2010
Spis treści | Lekcja 7 | Lekcja 9
8. Drukowanie
Niektóre funkcje mogą pisać na wyjście. Najprostszą jest PRINT, która drukuje swój argument i zwraca go.
8.1.
(print 3)
3
=> 3
Pierwsze 3 zostało wydrukowane, drugie zwrócone.
Jeśli oczekujesz bardziej złoż...
- Lekcja 9
dydaktyka/lisp/lekcja-9 |
Dodano: 29-11-2010 |
Zmodyfikowano: 29-11-2010
Spis treści | Lekcja 8 | Lekcja 10
9. Predykaty
Predykat jest funkcją zwracającą odpowiedź. Predykat zwraca symbol T kiedy ma na myśli tak i symbol NIL, kiedy odpowiedź znaczy nie. Predykat z poniższego przykładu orzeka, czy na jego wejściu jest numer.
9.1.
(NUMBERP 2) ...
- Lekcja 7
dydaktyka/lisp/lekcja-7 |
Dodano: 27-11-2010 |
Zmodyfikowano: 27-11-2010
Spis treści | Lekcja 6 | Lekcja 8
7. Lista – przydatne funkcje II
FIRST, SECOND, oraz THIRD
Lisp dostarcza również pierwotnych funkcji dla wyciągania elementów z listy. Funkcje FIRST, SECOND, oraz THIRD zwracają kolejno pierwszy, drugi i trzeci element z listy podanej na ich wejście.
...
- Lekcja 6
dydaktyka/lisp/lekcja-6 |
Dodano: 27-11-2010 |
Zmodyfikowano: 27-11-2010
Spis treści | Lekcja 5 | Lekcja 7
6. Lista – przydatne funkcje
Wagonik to nazwa dla dwuelementowego rekordu. Z przyczyn historycznych jego pola są nazywane “car” i “cdr”. Ich użycie jest niezwykle proste:
6.1. Zaalokuj wagonik – ustaw car na 2, a cdr na 8
...
- Lekcja 5
dydaktyka/lisp/lekcja-5 |
Dodano: 27-11-2010 |
Zmodyfikowano: 27-11-2010
Spis treści | Lekcja 4 | Lekcja 6
5. Definiowanie Funkcji
Oto kilka przykładów funkcji:
5.1. ta funkcja pobiera dowolną liczbę argumentów
(+ 3 4 5 6) => 18
(+ (+ 3 4) (+ (+ 4 5) 6)) => 22
5.2. definiowanie funkcji
(defun foo (x y) (+ x y 5)) => FOO
...
- Lekcja 4
dydaktyka/lisp/lekcja-4 |
Dodano: 27-11-2010 |
Zmodyfikowano: 27-11-2010
Spis treści | Lekcja 3 | Lekcja 5
4. Set Quantity – setq i setf
We wczesnych dialektach Lispa istniała tylko funkcja SETQ, zaś uogólnione zmienne były niedostępne. Obecnie funkcja SETQ jest nadal używana, jednak w nowszych wersjach programiści używają raczej podobnego znaczeniowo makra SETF,...
- Lekcja 3
dydaktyka/lisp/lekcja-3 |
Dodano: 27-11-2010 |
Zmodyfikowano: 27-11-2010
Spis treści | Lekcja 2 | Lekcja 4
3. EVAL – serce LISPa
Funkcja EVAL jest sercem Lisp. Zadaniem EVAL jest ocenienie wyrażenia aby obliczyć jego skutek. Większość wyrażeń składa się z funkcji mający zbiór na wejściu. Jeśli dajemy do EVAL wyrażenie (+ 3 2), na przykład, to odwoła się o...
- Lekcja 2
dydaktyka/lisp/lekcja-2 |
Dodano: 27-11-2010 |
Zmodyfikowano: 27-11-2010
Spis treści | Lekcja 1 | Lekcja 3
2. Elementy języka
Na początku wyjaśnijmy podstawowe pojęcia: funkcja i dane. Terminem dana określa się informacje takie jak liczby, słowa lub listy rzeczy. Funkcje można porównać do pudełka, przez które wychodzą dane.
Symbol – to każdy łańcuch znaków, c...
- Lekcja 1
dydaktyka/lisp/lekcja-1 |
Dodano: 27-11-2010 |
Zmodyfikowano: 27-11-2010
Spis treści | Lekcja 2
1. Zaczynamy
Historia
Początki Lispa sięgają 1956, kiedy to podczas spotkania naukowego Dartmouth College John McCarthy poznał technikę zwaną ‘‘list processing’’ wynalezioną przez Allen Newell, J. C. Shaw oraz H. Simon. Programowanie w latach 1950-tych opierało się...