> 'expr' converts a SUBR function (i.e. a function written in C or > assembly which evaluates all its arguments) to an EXPR (a Lisp level > function).
OK, so it's not built for FSUBR conversion. > Unfortunately, it doesn't work with FSUBR functions (C or asm functions > _not_ evaluating all arguments). This is generally not possible, due to > the way FSUBRs are executed by the interpreter. Right, FSUBR to EXPR conversion isn't possible. I guess it would be possible to convert FSUBR to FEXPR, though. Example: : (de fexpr ("F") (set "F" (list '"X" (list 'eval (list 'cons (cons 'quote (box (getd "F"))) '"X"))) ) ) -> fexpr : (fexpr 'while) -> ("X" (eval (cons '$268284617 "X"))) : (setq while (list (car while) '(prinl "while called") (cadr while))) -> ("X" (prinl "while called") (eval (cons '$268284617 "X"))) : (setq a 3) -> 3 : (while (gt0 (dec 'a)) (prinl @)) while called 2 1 -> 1 And since SUBR's are a subset of FSUBR's, the fexpr conversion could be used for both. Would performance suffer? -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe