En Common Lisp je peux conditionnellement exclure ou inclure du code pour différentes implémentations comme celui-ci:Meilleure façon d'écrire un code de schéma portable?
#+sbcl (use-sbcl-cool-feature)
#-sbcl (use-my-own-not-so-cool-version)
De cette façon, je peux écrire du code portable en isolant les bits non portables.
Comment cela peut-il être fait dans Scheme? Existe-t-il un moyen de demander à l'interpréteur Scheme ou au compilateur son nom (ou même quel standard il implémente) comme ceci?
(cond ((r6rs?)
(make-eq-hashtable))
((gambit?)
(make-table))
;; other cases here
(#t (make-my-inefficient-hash-table))
Je sais que je pourrais envelopper toutes les pièces possibles non-portables de code dans différentes procédures et avoir des paquets de compatibilité comme ceci:
;; in my-libs-gambit.scm:
(define make-hash-table make-table)
Et simlarly pour mon-libs- [autre-schemes- ici] .scm
Est-ce la seule façon de le faire?
Je ne voudrais pas essayer de créer une application complètement portable dans Scheme, mais ce serait bien si je pouvais faire fonctionner mes progams dans deux ou trois implémentations différentes.
Merci beaucoup Vijay! Je regarderai scmxlate - il semble bien répondre à mes besoins. – Jay