Retourner au contenu associé (journal : Troll de l'année ou coup de bluff ?)
Posté par hocwp (site web personnel) le 18 janvier 2008 à 23:06. En réponse au journal Troll de l'année ou coup de bluff ?. Évalué à 3.
(defmacro while (test &body body) `(do () ((not ,test)) ,@body)) (let ((a 1)) (while (< a 10) (print a) (incf a)))
(defmacro aif (test then &optional else) `(let ((it ,test)) (if it ,then ,else))) (defun un-calcul-super-long () (sleep 10) (+ 2 2)) (aif (un-calcul-super-long) (print it))
(defmacro dbg (&rest forms) `(progn ,@(mapcar #'(lambda (form) `(format t "~A=~S " ',form ,form)) forms) (format t "~%") (force-output))) (dbg a str (+ 2 3 4)) A=12 STR="toto" (+ 2 3 4)=9 (macroexpand-1 '(dbg a str (+ 2 3 4))) (PROGN (FORMAT T "~A=~S " 'A A) (FORMAT T "~A=~S " 'STR STR) (FORMAT T "~A=~S " '(+ 2 3 4) (+ 2 3 4)) (FORMAT T "~%") (FORCE-OUTPUT))
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Intéressant
Posté par hocwp (site web personnel) . En réponse au journal Troll de l'année ou coup de bluff ?. Évalué à 3.
- Définir un nouveau type de boucle :
Dans le même style, la macro loop est assez impressionnante.
- Le if anaphorique :
La variable 'it' prend le résultat de la fonction 'un-calcul-super-long'
- Une macro de débogage :
Peut-on faire la même chose en C ?