names icon indicating copy to clipboard operation
names copied to clipboard

Support for `cl-defun` -- A Workaround

Open alhassy opened this issue 4 years ago • 0 comments

There seems to be no support for cl-defun; which is unfortunate.


The expected approach does not namespace a cl-defun-ed function:

(define-namespace woah-
(cl-defun here ())
)
;; ⇒ here

Temporarily rebinding cl-defun to defun may make things work ... so far, I have been unable to get macrolet or anything else to make this work; the reason may be that I'm macroletting defun to rewrite into cl-defun, which uses defun in its definition?

What I've been able to do thus far is to locally treat defun as producing symbolic lists that begin with cl-defun, but define-namespaces only sees the defun and so rewrites them beforehand and the resulting fragements are then eval-uated.

 (eval (cl-macrolet ((defun (&rest more) `(cons 'cl-defun (quote ,more))))
 
   (define-namespace woah-
   (list 'progn
       
   (defun first  (x &key (y 3)) (+ x y))
   (defun second (x &key (y 3)) (+ x y))
 
   )))) ;; ⇒ woah-first and woah-second are defined

Any alternative approach would be appreciated!

alhassy avatar Oct 31 '19 19:10 alhassy