> And why not following lisp tradition and use comma character (,) rather > than caret > character (^) for evaluating expressions? > > In fact fill is more or less analogous to backquote (`) (also known as > quasiquote) in > several lisps : > > `(1 2 3) -> (1 2 3) > `(1 (+ 2 4) 3) -> (1 (+ 2 4) 3) > `(1 ,(+ 2 4) 3) -> (1 8 3) > > '(1 ,(+ 1 2)) is short writting for (backquote (unquote (+ 1 2))) >
Both backquote and comma are already read-macros in picolisp, so that's a no go at the language level. # instead using backquote / tilde read-macros : (1 2 3) -> (1 2 3) : (1 (+ 2 4) 3) -> (1 (+ 2 4) 3) : (1 `(+ 2 4) 3) -> (1 6 3) : (1 ~(+ 2 4) 3) # new -> (1 6 3) > You can also introduce ,@ to insert flat lists like in: > > (let (x '(1 2)) `(1 ,x 2)) -> (1 (1 2) 2) > (let (x '(1 2)) `(1 ,@x 2)) -> (1 1 2 2) > > Even if you don't want to implement quasiquote and unquote you can use > tradicional > symbols in fill, that is using , rather than ^ and maybe introducing ,@ > also in fill > I think Alex has shown that ',' and ',@' can be rolled into one - '^' : (let X (1 2) (macro (1 (^ X) 2))) -> (1 (1 2) 2) : (let X (1 2) (macro (1 ^ X 2))) -> (1 1 2 2) : (let X (1 2) (macro (1 ^ (apply + X) 2))) -> (1 3 2) Alex, does the new tilde functionality mean that backquote is now technically redundant?