• [^] # Re: pourquoi le lip

    Posté par (site web personnel) . En réponse à la dépêche Sortie de SBCL 1.0. Évalué à 3.

    Bien par exemple sur les deux exemples suivants il n'y a pas beaucoup de différences entre la version lisp et la version python


    def test (x): (defun test (x)
    y = "toto" (let ((y "toto"))
    print x (print x)
    print y (print y)))

    test (10) (test 10)


    Pour le rapprochement XML/lisp, j'utilise souvent la fonction suivante :


    (defun produce-html (tree &optional (level 0) (stream *standard-output*))
    (cond ((listp tree)
    (print-space level stream)
    (format stream "~(<~A>~)~%" (first tree))
    (dolist (subtree (rest tree))
    (produce-html subtree (+ 2 level) stream))
    (print-space level stream)
    (format stream "~(</~A>~)~%"
    (if (stringp (first tree))
    (subseq (first tree) 0 (position #\Space (first tree)))
    (first tree))))
    (t
    (print-space level stream)
    (format stream (if (stringp tree) "~A~%" "~(~A~)~%") tree))))


    Ce qui permet de faire :


    (produce-html
    '(html
    (head
    (title "Un titre"))
    (body (h1 "Le titre")
    (p "plop plop" "Bla bla"
    ("a href=\"http://toto.org\"" "mon url")))))


    qui produit :


    <html>
    <head>
    <title>
    Un titre
    </title>
    </head>
    <body>
    <h1>
    Le titre
    </h1>
    <p>
    plop plop
    Bla bla
    <a href="http://toto.org">
    mon url
    </a>
    </p>
    </body>
    </html>


    Je m'en suis servi pour générer automatiquement la doc de clfswm à partir des tables de hashage des touches et de la documentation des fonctions ( http://hocwp.free.fr/clfswm/keys.html ). En lisp ce n'est pas la peine d'aller chercher des outils extérieur comme doxygen ou autre. Tout est déjà dans le langage.

    Pour le reste, c'est effectivement tout sauf objectif. Chacun ses goûts :)