u/Weak_Education_1778

▲ 5 r/lisp

How am I supposed to splice raw strings into parenscript?

If I wanted to write

(defun foo (x)
(ps
  (+ x 1))
(foo "var")

This only prints x + 1. Doing

(defun foo (x)
(ps
  (+ (ps:lisp x) 1))
(foo "var")

prints "var" + 1. I have to do

(ps::define-expression-operator lisp-raw (lisp-form)
   `(ps-js:escape
     ,lisp-form))
(let ((x "var"))
   (ps:ps
     (+ (lisp-raw x) 1)))
"var + 1;"

But ps::define-expression-operator is an internal symbol, so I feel like I shouldn't be using it. However, this feels like a fairly common use of parenscript. How am I supposed to write this extension then in idiomatic lisp?

reddit.com
u/Weak_Education_1778 — 9 days ago