Pregunta

Dependiendo de mi estado de ánimo, parezco vacilar entre querer un Lisp-1 y un Lisp-2.Desafortunadamente, más allá de las diferencias obvias en el espacio de nombres, esto deja todo tipo de problemas divertidos con los nombres de funciones, etc.Por ejemplo, al intentar escribir algo de código esta noche, intenté hacer (map #'function listvar) que, por supuesto, no funciona en CL en absoluto.Me tomó un poco recordar que quería mapcar, no map.Por supuesto, no ayuda cuando slime/emacs muestra que el mapa ESTÁ definido como algo, aunque obviamente no es la misma función en absoluto.

Entonces, ¿algunas sugerencias sobre cómo minimizar este problema de elegir uno u otro y seguir con él?

¿Fue útil?

Solución

Mapa es más general que mapcar, por ejemplo podrías hacer lo siguiente en lugar de usar mapcar:

(map 'list #'function listvar)

¿Cómo mantengo el esquema y el CL separados en mi cabeza?Supongo que cuando conoces ambos idiomas lo suficientemente bien sabes qué funciona en uno y no en el otro.A pesar de las similitudes sintácticas, son idiomas bastante diferentes en términos de estilo.

Otros consejos

Bueno, creo que tan pronto como tengas suficiente experiencia en ambos idiomas, esto dejará de ser un problema (solo con idiomas naturales similares, como el italiano y el español).Si normalmente programa en un idioma y cambia al otro solo ocasionalmente, desafortunadamente está condenado a escribir Common Lisp en Scheme o viceversa;)

Una cosa que ayuda es tener un entorno visual distinto para ambos idiomas, usando resaltado de sintaxis en otros colores, etc.Entonces al menos siempre sabrás si estás en modo Common Lisp o Scheme.

Definitivamente soy consciente de que existen diferencias sintácticas, aunque ciertamente todavía no tengo la fluidez suficiente para usarlas automáticamente, lo que hace que el código se vea mucho más similar actualmente ;-).

Y tenía la sensación de que tu respuesta sería así, pero siempre puedo esperar un atajo <_<.

La forma más sencilla de mantener ambos lenguajes en orden es pensar y escribir código en Common Lisp.El código Common Lisp se puede convertir en código Scheme con relativa facilidad;sin embargo, pasar de Scheme a Common Lisp puede causar algunos dolores de cabeza.Recuerdo una vez que estaba usando un letrec en Scheme para almacenar variables y funciones y tuve que dividirlo en funciones CL separadas para los espacios de nombres de variables y funciones, respectivamente.

En términos prácticos, no tengo el hábito de escribir código CL, lo que hace que los momentos en los que tengo que hacerlo sean aún más dolorosos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top