Domanda

A seconda del mio umore mi sembra di oscillare avanti e indietro tra il volere un Lisp-1 e un Lisp-2.Sfortunatamente, al di là delle ovvie differenze nello spazio dei nomi, questo lascia tutti i tipi di divertenti problemi relativi al nome della funzione/ecc. in cui ti imbatti.Caso in questione, stasera ho provato a scrivere del codice (map #'function listvar) che, ovviamente, non funziona affatto in CL.Mi ci è voluto un po' per ricordare che volevo mapcar, non map.Ovviamente non aiuta quando slime/emacs mostra che la mappa è definita come qualcosa, anche se ovviamente non è affatto la stessa funzione.

Quindi, suggerimenti su come ridurre al minimo il rischio di scegliere l'uno o l'altro e attenervisi?

È stato utile?

Soluzione

Carta geografica è più generale di mapcar, ad esempio potresti fare quanto segue invece di usare mapcar:

(map 'list #'function listvar)

Come faccio a tenere separati schema e CL nella mia testa?Immagino che quando conosci entrambe le lingue abbastanza bene sai solo cosa funziona in una e non nell'altra.Nonostante le somiglianze sintattiche sono lingue abbastanza diverse in termini di stile.

Altri suggerimenti

Beh, penso che non appena si acquisisce sufficiente esperienza in entrambe le lingue questo non diventerà più un problema (solo con lingue naturali simili, come l'italiano e lo spagnolo).Se di solito programmi in una lingua e passi all'altra solo occasionalmente, sfortunatamente sei condannato a scrivere Common Lisp in Scheme o viceversa ;)

Una cosa che aiuta è avere un ambiente visivo distinto per entrambe le lingue, utilizzando l'evidenziazione della sintassi in altri colori, ecc.Così almeno saprai sempre se sei in modalità Common Lisp o Scheme.

Sono decisamente consapevole che ci sono differenze sintattiche, anche se di certo non sono ancora abbastanza fluente per usarle automaticamente, rendendo il codice attualmente molto più simile ;-).

E avevo la sensazione che la tua risposta sarebbe stata quella giusta, ma posso sempre sperare in una scorciatoia <_<.

Il modo più semplice per mantenere entrambe le lingue in ordine è pensare e scrivere codice in Common Lisp.Il codice Common Lisp può essere convertito in codice Scheme con relativa facilità;tuttavia, passare da Scheme a Common Lisp può causare qualche grattacapo.Ricordo che una volta stavo usando un letrec in Scheme per memorizzare sia variabili che funzioni e dovevo dividerlo in funzioni CL separate rispettivamente per gli spazi dei nomi delle variabili e delle funzioni.

In tutta praticità, però, non ho l'abitudine di scrivere codice CL, il che rende i tempi che devo ancora più dolorosi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top