git.fiddlerwoaroof.com
fset-synthesize.lisp
2a63b94b
 (in-package :edn)
ee000f9c
 (defclass fset ()
   ()
   (:documentation "An EDN synthesizer that produces fset datastructures"))
2a63b94b
 
ee000f9c
 (defmethod synthesize-compound ((implementation fset) (discriminator (eql :map)) args)
2a63b94b
   (fset:convert 'fset:map
                 (mapcar (fw.lu:destructuring-lambda ((p k v))
                           (declare (ignore p))
                           (cons (synthesize implementation k)
                                 (synthesize implementation v)))
                         args)))
 
ee000f9c
 (defmethod synthesize-compound ((implementation fset) (discriminator (eql :set)) args)
2a63b94b
   (fset:convert 'fset:set
                 (mapcar (lambda (a)
                           (synthesize implementation a))
                         args)))
 
ee000f9c
 (defmethod synthesize-compound ((implementation fset) (discriminator (eql :vector)) args)
2a63b94b
   (fset:convert 'fset:seq
                 (mapcar (lambda (a)
                           (synthesize implementation a))
                         args)))
 
ee000f9c
 (defmethod synthesize-compound ((implementation fset) (discriminator (eql :list)) args)
2a63b94b
   (mapcar (lambda (a)
             (synthesize implementation a))
           args))