! Functions to convert s-exps to quotations
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: convert-body ( cons -- quot )
- [ ] [ convert-form compose ] lreduce ; inline
+ [ ] [ convert-form compose ] foldl ; inline
: convert-if ( cons -- quot )
cdr 3car [ convert-form ] tri@ '[ @ , , if ] ;
"unquote not valid outside of quasiquote!" throw ;
: convert-quasiquoted ( cons -- newcons )
- [ ] traverse ;
+ [ { [ dup list? ] [ car dup lisp-symbol? ] [ name>> "unquote" equal? dup ] } && nip ]
+ [ cadr ] traverse ;
: form-dispatch ( lisp-symbol -- quot )
name>>