Quale sarebbe un esempio di condizionale anaforico in Lisp? Per favore, spiega anche il codice.Quale sarebbe un esempio di condizionale anaforico in Lisp?
risposta
Un esempio è il Common Lisp LOOP
:
(loop for item in list
when (general-predicate item)
collect it)
La variabile IT
ha il valore della espressione di prova. Questa è una funzionalità della funzione ANSI Common Lisp LOOP
.
Esempio:
(loop for s in '("sin" "Sin" "SIN")
when (find-symbol s)
collect it)
rendimenti
(SIN)
perché solo "SIN"
è un nome per un simbolo esistente, qui il simbolo SIN
. In Common i nomi dei simboli Lisp hanno nomi maiuscoli internamente per impostazione predefinita.
Paul Graham On Lisp ha un capitolo su Anaphoric Macros.
In sostanza, è un modo stenografico per scrivere affermazioni che evitino di ripetere il codice. Ad esempio, confrontare:
(let ((result (big-long-calculation)))
(if result
(foo result)))
e
(if (big-long-calculation)
(foo it))
dove it
è un nome speciale che si riferisce a tutto ciò che è stato appena calcolato in (big-long-calculation)
.
** @ Greg Hewgill: ** Grazie, ancora un po 'perso nel codice di Paul Graham, ma è divertente da elaborare. – blunders
@blunders: Infatti. Probabilmente i macro anaforici non sono il miglior punto di partenza, a meno che tu non abbia già molta familiarità con i diversi stili di macro in Lisp. On Lisp è un'ottima lettura. –
** @ Greg Hewgill: ** Accetto. Ho scansionato alcuni libri LISP, principalmente The Little Schemer e simili. "Condizionatore anaforico" è arrivato in modo casuale a fare ricerche per questa domanda: http://stackoverflow.com/questions/3920046/is-it-common-for-a-language-to-evalute-undefined-as-equal-to- false-if-so-why-is – blunders
- 1. Quale sarebbe il giusto modificatore?
- 2. Quale sarebbe l'equivalente dell'API Win32 in linux?
- 3. Quale sarebbe l'opposto di "git fetch"?
- 4. Quale sarebbe un buon esempio di progetto per chiedere a un potenziale programmatore di codificare durante il processo di assunzione?
- 5. Land of Lisp esempio di ridondanza?
- 6. quale shell-command in emacs lisp?
- 7. Che cosa sarebbe un "Ciao, mondo!" esempio per "std :: ref"?
- 8. Un operatore di de-riferimento condizionale sarebbe una buona cosa in C#?
- 9. quale sarebbe uno specifico esempio di storyboard di combinazione di barre di navigazione e tabbar in un'unica app?
- 10. In quale situazione sarebbe utile archiviare in un array diversi tipi di dati in Javascript?
- 11. Quale sarebbe un metodo per creare un contatore di numeri in Android?
- 12. Quale sarebbe un nome migliore per Javascript "questo"?
- 13. Quale sarebbe un buon progetto per imparare node.js
- 14. Bizzarro lista esempio citato da On Lisp
- 15. Normalizzare questo database: quale sarebbe l'ideale in questo scenario?
- 16. Eredità multipla: quale è un buon esempio?
- 17. Quale sarebbe una buona colormatrix TRUE in bianco e nero?
- 18. quale sarebbe un modo rapido per leggere un file di proprietà in python?
- 19. Quale interessante software open source è scritto in Lisp?
- 20. Per quale tipo di applicazione CouchDB sarebbe più utile/performante?
- 21. Quale sarebbe la configurazione delle risorse di Nexus 9 - 2014?
- 22. Il condizionale nella funzione lisp di Conad Barski è ridondante?
- 23. django pagliaio: quale motore di ricerca sarebbe stato meglio
- 24. Quale sarebbe un equivalente di Assert di Nunit. Cosa in Xunit?
- 25. Quale sarebbe un equivalente appropriato dei macro di Jinja nel sistema di template di Django?
- 26. Quale struttura dati sarebbe la migliore per questo?
- 27. Quale sarebbe la motivazione per integrare mongodb con solr
- 28. Quale sarebbe la complessità temporale dell'algoritmo del triangolo pascal
- 29. Implementazione di un pulsante "condizionale" in ember.js
- 30. Quale sarebbe il codice Visual Basic per un'opzione Sempre attiva?
Ho solo familiarità con il termine "anaforico" per quanto riguarda le lingue naturali - ad esempio, un pronome può essere considerato un riferimento anaforico a un nome precedentemente menzionato. "John è un programmatore, lavora per Google." In questo esempio, "lui" è un riferimento anaforico a "John". Quindi penso che sia necessario spiegare cosa significa "condizionale anaforico" nel contesto della programmazione Lisp - non è un termine comunemente usato. –
** @ Jim_Lewis: ** Ecco la spiegazione di cosa significa "condizionale anaforico" nel contesto della programmazione Lisp: http://weblogs.java.net/blog/2006/06/29/more-literate-programming-language- level-anaphora – blunders
@Jim Lewis: Non sorprende che questo sia esattamente ciò che * anaforico * significa quando ci si riferisce ai macro. Vedi la mia risposta per link ed esempi. –