yes that makes sense. thanks! On Thu, Sep 27, 2018 at 4:16 AM Mark H Weaver wrote: > Hi Stefan, > > Stefan Israelsson Tampe writes: > > > This for guile 2.4 and master, > > > >> (eval `(let-syntax ((f (lambda (x) ,#'(+ (pk 'a 1) 2)))) f) > (current-module)) > > > > ;;; (# 1) > > > > But without eval: > >> (let-syntax ((f (lambda (x) #'(+ (pk 'a 1) 2)))) f) > > > > ;;; (a 1) > > I think the mistake is in your code above. In the first case, what you > want is this: > > (eval `(let-syntax ((f (lambda (x) ,'#'(+ (pk 'a 1) 2)))) f) > (current-module)) > > Note the addition of a quote (') between the unquote (,) and syntax (#') > above. > > The expression that follows unquote (,) should evaluate to an > s-expression. In this case, you want it to evaluate to the s-expression > #'(+ (pk 'a 1) 2), i.e. (syntax (+ (pk 'a 1) 2)), i.e. a list with two > elements, the first being the symbol 'syntax'. But that's not what > you're doing above. Instead, you are returning the syntax object > itself, which is being spliced directly into the code. > > Does that make sense? > > Mark >