Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cl-user> (cat "/tmp/f.lisp")
- ;; Funciona: retorna o valor correto
- (defmacro only (obj val)
- `(jsown:val ,obj ,val))
- (pprint (macroexpand-1 (only *js* "a"))) ; "amor"
- ;; Erro: usa o valor dentro de um let
- (defmacro only-2 (obj val &body body)
- `(let ((val ,(jsown:val obj val)))
- ,@body))
- (pprint (macroexpand-1 (only-2 *js* "a"
- (format t "~A" val))))
- ;; The value
- ;; *JS*
- ;; is not of type
- ;; LIST
- ; No value
- cl-user> (load "/tmp/f.lisp")
- ; Evaluation aborted on #<ccl::no-such-package #x3020038F870D>.
- cl-user> (defpackage "JSOWN" (:use) (:export "VAL"))
- #<Package "JSOWN">
- cl-user> (load "/tmp/f.lisp")
- ; Evaluation aborted on #<unbound-variable #x3020039F5F9D>.
- cl-user> (defparameter *JS* nil)
- *js*
- cl-user> (load "/tmp/f.lisp")
- ; Evaluation aborted on #<ccl::undefined-function-call #x302003A0DCED>.
- cl-user> (defun jsown:val (&rest args) nil)
- ;Compiler warnings :
- ; In jsown:val: Unused lexical variable args
- jsown:val
- cl-user> (load "/tmp/f.lisp")
- nilnil
- nil
- #P"/private/tmp/f.lisp"
- cl-user>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement