4 votes

Difficultés avec les bibliothèques Common Lisp

J'ai appris le schéma et j'en ai rapidement maîtrisé une grande partie, puis j'ai réalisé un projet dans ce cadre sans problème. Il m'a littéralement fallu des jours pour le terminer. Je suis en train d'essayer d'apprendre common lisp pour avoir une idée de ce que c'est et maintenant j'ai vraiment du mal à apprendre asdf. Il semble que tout le monde sache comment l'utiliser avec les bibliothèques, mais je suis déconcerté. Je suppose que c'est parce que la plupart des programmes lisp sont créés et exécutés à l'intérieur du repl parce que tout fonctionne bien. C'est lorsque j'essaie de le compiler en un exécutable que je perds mes repères.

Quelqu'un peut-il me donner des conseils à ce sujet ou m'indiquer un tutoriel ? J'ai vraiment envie de pouvoir faire un exécutable à donner aux gens sans avoir à expliquer comment installer sbcl et (require) puis l'exécuter. Je veux juste apprendre à faire quelque chose de substantiel en Lisp que je n'ai pas été capable de faire avec Scheme.

Je suppose que je pourrais utiliser scheme et ffi pour faire fonctionner les bibliothèques c, mais je n'ai aucune expérience du c. Je suis juste un développeur web qui apprend le lisp pour des raisons personnelles. Je suis un développeur web qui apprend le lisp pour des raisons personnelles. Bien sûr, apprendre le c et le ffi ne prendra pas autant de temps que cela.
Remerciements

7voto

danlei Points 8602

Je veux vraiment être un exécutable à donner aux gens sans avoir à avoir à expliquer comment installer sbcl et (require) puis de l'exécuter.

Vous n'avez pas besoin d'ASDF pour produire un exécutable "autonome". La plupart des implémentations fournissent des moyens de sauvegarder une image exécutable, mais la manière de le faire (et si cela doit être fourni) n'est pas mentionnée dans la norme.

En général, vous chargez votre code dans votre image en cours d'exécution, puis vous "vidangez" cette image.

Dans SBCL, par exemple, vous utiliseriez sb-ext:sauver-lisp-et-mourir ; le CCL a ccl:save-application . Vous devrez consulter la documentation de votre implémentation pour savoir comment procéder.

Je n'ai pas SBCL ici pour le moment, mais cet exemple minimal devrait fonctionner (non testé) :

(defun do-it () (format t "hello world~%"))
(sb-ext:save-lisp-and-die "hello" :toplevel #'do-it :executable t)

Il s'agit d'un exemple de travail utilisant le CCL :

Welcome to Clozure Common Lisp Version 1.6-dev-r14287M-trunk  (LinuxX8632)!
? (defun do-it () (format t "hello world~%"))
DO-IT
? (ccl:save-application "hello" :toplevel-function #'do-it :prepend-kernel t)
[danlei@susi ~/build/ccl]% ./hello
hello world

Ces images exécutables peuvent être de taille assez importante, à moins que votre implémentation ne fournisse quelque chose comme un "tree-shaker", mais je ne pense pas que ce soit un problème aujourd'hui.

Vous trouverez un exemple détaillé pour clisp dans une autre question de l'OS sur ce sujet .

Documentation ASDF

0voto

Ken Points 31

Ce n'est pas exactement ce que vous avez demandé, mais cela pourrait vous aider.

Je n'ai jamais réussi à faire fonctionner ASDF très bien non plus. Quelqu'un m'a indiqué clbuild ce qui constitue une approche légèrement différente d'un problème similaire. Cela a plutôt bien fonctionné pour moi jusqu'à présent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X