Innanzitutto, PAIP è scritto per Common Lisp, non Scheme, quindi non so che direbbe la stessa cosa. Le macro CL hanno più o meno lo stesso valore di eval
, anche se al momento della compilazione invece del tempo di esecuzione e altre cose che potresti fare. Se mi mostrassi un esempio dell'uso di eval
in Common Lisp, potrei provare a trovare altri metodi per fare la stessa cosa.
Non sono un programmatore Scheme. Posso solo parlare dal punto di vista di Norvig, come programmatore Common Lisp. Non penso che stesse parlando di Scheme, e non so se conoscesse o conoscesse bene Scheme.
Secondo, Norvig dice "probabilmente stai facendo la cosa sbagliata" piuttosto che "stai facendo la cosa sbagliata". Ciò implica che, per quanto ne sa, ci sono momenti in cui eval
è la cosa giusta da usare. In una lingua come C, direi la stessa cosa su goto
, anche se sono abbastanza utili in alcune circostanze limitate, ma la maggior parte dell'uso di goto
è di persone che non conoscono meglio.
fonte
2009-06-25 15:21:49
Mi dispiace non potrei essere più specifico su ciò che volevo nella domanda. Ma ciò che è interessante è che ho sempre pensato che eval fosse sempre parte integrante di Scheme. Comunque spero di vedere più usi e "abusi" di eval in CS G111. :) – unj2
Sì, 'eval' * è * una parte integrante di Scheme, ma è davvero necessaria solo nei casi avanzati. La regola generale è: se non si conoscono i motivi tecnici che richiedono l'uso di 'eval', allora * non * ne ha bisogno. (E questa è una risposta seria!) In ogni caso, sì, avrai un sacco di 'eval'ing in CSG111 se hai intenzione di prenderlo, e se tutto va bene se lo ricordi, chiedimi al riguardo. –