07/07/16 22:11:43 hWtkID9N0
>>744
やってみた
(in-package "lisp")
(defmacro defvar-lexical (name &optional (initial-value nil sv) doc)
`(progn
,(if doc
`(si:*putprop ',name ,doc 'variable-documentation))
,(if sv
`(or (boundp ',name)
(set ',name ,initial-value)))
',name))
(export 'defvar-lexical)
(in-package "user")
;; テスト
(defvar-lexical hoge 0 "hogehoge")
(defun get-hoge () hoge)
(defun hogetest (x) (let ((hoge x)) (get-hoge)))
(defvar fuga 0)
(defun get-fuga () fuga)
(defun fugatest (x) (let ((fuga x)) (get-fuga)))
(hogetest 2)
=> 0
(fugatest 2)
=> 2
(documentation 'hoge 'variable)
=> "hogehoge"