8063591501

8063591501



Wartością wywołania funkcji defun jest lista będąca definicją funkcji. Lista napotkana w programie to tzw. forma, my będziemy używali określenia "wyrażenie listowe".

Dygresja programistyczna ponadjęzykowa :)

Lista jest to para <obiekt> <lista>.

class LISTA

-    obiekt

-    lista

Wywołanie funkcji skrajne-elementy: (skrajne-elementy listal).

Zmienne a symbole w LISP:

Zmienne w LISP nie są deklarowane. W takim razie jak rozróżnić (na poziomie translatora / interpretera) procedurę od zmiennej? Translator tego nie odróżnia. Każdemu symbolowi można przypisać pewną wartość. Symbol, który w momencie wykonania ma przypisaną wartość jest z definicji zmienną.

Przykładowo wywołanie: (fl x y) , gdy nie jest określona wartość x, jest błędne. Każdy element wywołania z wyjątkiem pierwszego jest poddawany ewaluacji. Interpreter usiłuje wyznaczyć wartość tego elementu. Jeżeli trafia na wyrażenie listowe, to zachodzi to rekurencyjnie. Jeżeli jest to symbol, to interpreter usiłuje wyznaczyć wartość. Brak wyznaczonej wartości jest równoznaczny błędowi.

Wartości natychmiastowe uzyskiwane są przy pomocy wyspecjalizowanej funkcji quote. Przykładowe wywołanie: (fl (quote x) y). Skrótowa notacja: (fl 'x y). Czyli w sumie chodzi o cytowanie wartości natychmiastowej bez dalszego poddawania ewaluacji.

Kontrola typów:

W LISP funkcjonuje RTTI. Np. jeżeli podamy zamiast listy atom, zwracany jest błąd, gdy oczekiwano atomu. W przykładzie błąd zgłoszony zostanie dopiero na poziomie podstawowych procedur, gdyż nie akceptują pojedynczych atomów.

Przykład w LISP nr 2:

Zwrócenie listy bez ostatniego elementu. Jest to implementacja własna procedury wbudowanej but-last:

(

defun my-butlast (lista)

(

if (endp (rest lista))

0

(

const (first lista)

(my-butlast (rest lista)

)

)

)

Omówienie:

endp zwraca prawdę, gdy lista podana jest pusta.



Wyszukiwarka

Podobne podstrony:
188 TIF jestr ten jest też używany do przechowywania wartości tymczasowych i do zwracania wartości w
skanuj0006 (223) 98 Część I. Kierownicze funkcje nauczyciela Mapa programu to narzędzie planistyczne
większość wartości przekazywanych jest przez wywołania funkcji. [rzeczywiście, bardzo to pozytywne
Image078 Tablica wartości tej funkcji jest przedstawiona na rys. 3.36a. Ponieważ rozważana funkcja j
IMG93 8. Proszę obliczyć złożoność czasową i pamięciową dla wywołania funkcji Silnia (której kod da
Ćwiczenie 4. Skrypty i funkcje. ZTMAiPC Wywołanie w formie polecenia jest dużo prostsze, lecz nie je
s90 91 90 Całka niewłaściwa jest zbieżna i jej wartość wynosi f. 2. Funkcja podcałkowa jest ciągła w
IsNumeric: IsNiimeric(wyrażenie) - funkcja zwraca wartość Tnie, jeśli argument jest liczbą a w przec
A c gdzie c jest stężeniem elektrolitu Definiuje się także wartość graniczną przewodności molowej
DSC00916 8 Co to jest wyrównanie ziarna (definicja) i jaka jest pożądana jego wartość dl a ^Jęczmien
8.Dostęp do danych zawartych w lokalnym bloku danych jest możliwy na dwa sposoby: d)Poprzez wywołani
Zwrot wartości przez funkcje rezultat (warto Yc) funkcji jest zwracany przy pomocy instrukcji: retur

więcej podobnych podstron