Question

En fonction de mon humeur, j'ai l'impression d'hésiter entre vouloir un Lisp-1 et un Lisp-2.Malheureusement, au-delà des différences évidentes d'espace de nom, cela laisse toutes sortes de problèmes amusants de nom de fonction/etc que vous rencontrez.Par exemple, en essayant d'écrire du code ce soir, j'ai essayé de le faire (map #'function listvar) qui, bien sûr, ne fonctionne pas du tout en CL.Il m'a fallu un peu de temps pour me rappeler que je voulais une carte, pas une carte.Bien sûr, cela n'aide pas lorsque slime/emacs montre que la carte est définie comme quelque chose, bien que ce ne soit évidemment pas du tout la même fonction.

Alors, des conseils sur la façon de minimiser ce problème, à moins de choisir l’un ou l’autre et de s’y tenir ?

Était-ce utile?

La solution

Carte est plus général que mapcar, par exemple vous pouvez faire ce qui suit plutôt que d'utiliser mapcar :

(map 'list #'function listvar)

Comment puis-je garder le schéma et le CL séparés dans ma tête ?Je suppose que lorsque vous connaissez suffisamment bien les deux langues, vous savez simplement ce qui fonctionne dans l’une et pas dans l’autre.Malgré les similitudes syntaxiques, ce sont des langues assez différentes en termes de style.

Autres conseils

Eh bien, je pense que dès que vous acquérez suffisamment d'expérience dans les deux langues, cela ne pose plus de problème (juste avec des langues naturelles similaires, comme l'italien et l'espagnol).Si vous programmez habituellement dans un langage et ne passez à l'autre qu'occasionnellement, vous êtes malheureusement condamné à écrire du Common Lisp dans Scheme ou vice versa ;)

Une chose qui aide est d'avoir un environnement visuel distinct pour les deux langues, en utilisant la coloration syntaxique dans d'autres couleurs, etc.Au moins, vous saurez toujours si vous êtes en mode Common Lisp ou Scheme.

Je suis tout à fait conscient qu'il existe des différences syntaxiques, même si je ne parle certainement pas encore assez couramment pour les utiliser automatiquement, ce qui rend le code beaucoup plus similaire actuellement ;-).

Et j'avais le sentiment que votre réponse serait le cas, mais je peux toujours espérer un raccourci <_<.

Le moyen le plus simple de garder les deux langages clairs est de réfléchir et d’écrire du code en Common Lisp.Le code Common Lisp peut être converti en code Scheme avec une relative facilité ;cependant, passer de Scheme à Common Lisp peut causer quelques maux de tête.Je me souviens d'une fois où j'utilisais un letrec dans Scheme pour stocker à la fois des variables et des fonctions et j'ai dû le diviser en fonctions CL distinctes pour les espaces de noms de variable et de fonction respectivement.

En pratique, cependant, je n'ai pas l'habitude d'écrire du code CL, ce qui rend les moments que je dois d'autant plus pénibles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top