Apostrof to cytat, który nakazuje interpreterowi, aby nie parsował następującego wyrażenia (nazwy symbolu). Tak więc, 'add-to-list
otrzymuje symbol, który zawiera wartość listy, która ma być oceniona. Aby uzyskać więcej informacji na temat symboli, przeczytaj dokumentację
(w szczególności: Symbol Components symbole mają nazwy, wartości, definicje funkcji i listy właściwości).
Nie przeczytawszy dokumentacji, tak to wyjaśniam: Emaks-sepp evaluation strategy jest przekazywany według wartości (w przeciwieństwie do nazwy lub odniesienia lub czegoś innego). Gdyby nie było cytatu, wartość flymake-allowed-file-name-masks
została oszacowana, a add-to-list
musiałaby pracować bezpośrednio na liście. To działałoby, z następującymi wyjątkami. Gdyby lista była pusta, nie byłoby możliwości zmiany tego, na co wskazywała pierwotna zmienna. Z tego samego powodu nie można dodawać elementów na początku listy.
Aby te dwie sprawy działały, potrzebna jest nazwa zmiennej, aby można było zmienić jej punkty.
Przydałoby się prawdopodobnie przeczytać: Introduction to Evaluation, Modifying List Variables i Modifying Existing List Structures.
Jeśli znasz box diagrams, być może to pomoże.
wyobrazić, że some-var
punktów do listy:
somevar
|
|
v
--- --- --- --- --- ---
| | |--> | | |--> | | |--> nil
--- --- --- --- --- ---
| | |
| | |
--> rose --> violet --> buttercup
i chcesz umieścić coś na przedniej części tej listy.
Jeśli wszystko trzeba pracować z jest wartością wskaźnika w somevar
, to najlepsze, co możesz zrobić, to umieścić nowy element na początku listy, ale nie można faktycznie zmodyfikować co somevar
punkty (ponieważ nie masz somevar
, masz wartość o wartości). Tak:
somevar
|
|
v
--- --- --- --- --- --- --- ---
| | |--> | | |--> | | |--> | | |--> nil
--- --- --- --- --- --- --- ---
| | | |
| | | |
--> tulip --> rose --> violet --> buttercup
Tak więc, aby napisać własny 'add-to-list
funkcji, musisz podać nazwę zmiennej.
Oczywiście, gdybyś napisał 'add-to-list
jako macro, nie miałbyś takiego ograniczenia.
Mam idealną koncepcję już teraz! Można go porównać z połączeniem według wartości i wywoływać przez odniesienie w innych językach! Dzięki! – kjshim