evaluating syntax transformer threw unbound location first

Panicz Maciej Godek godek.maciek@gmail.com
Mon Dec 16 09:59:00 GMT 2013


2013/12/16 Per Bothner <per@bothner.com>:
[...]
> Nothing obvious comes to mind, and I'm a little overwhelmed right now.
>
> Note the expand procedure is an approximation.  It does expansion
> in a different context than the normal, and the translation back
> to Scheme forms is an approximation. However, the presence of the
> TemplateScope forms and calls in the output does suggest some
> incomplete expansion.
>
> Do note that the reader expands:
>   datum1:datum2
> to:
>   ($lookup$ datum1 (quasiquote datum2))

Just for the record, the form of the macro currently being
used (which is meant to be equivalent to the one previously
given, but has the advantage that it works) follows:

(define-syntax define-application-views
  (lambda (stx)
    (syntax-case stx (show)
      ((define-application-views activity-name . names+views)
       (with-syntax ((show (datum->syntax #'define-application-views 'show)))
         #`(activity
            activity-name
            (on-create-view
             (letrec (#,@(datum->syntax stx
                          (letrec ((range (lambda(start end)
                                            (if (= start end)
                                                '()
                                                `(,start
                                                  ,@(range (+ 1 start) end))))))
                            (map (lambda (name+view id)
                                   `(,(car name+view) ::int ,id))
                                 (syntax->datum #'names+views)
                                 (range 0 (length
                                           (syntax->datum #'names+views))))))
                      (activity-name ::android.widget.ViewFlipper
                                     (view-flipper))
                      (show
                       (lambda (view)
                         (invoke activity-name 'setDisplayedChild view))))
               #,@(datum->syntax stx
                   (map (lambda(name+view)
                          `(invoke ,(syntax->datum #'activity-name)
                                   'addView ,(cadr name+view)))
                        (syntax->datum #'names+views)))
               (as android.view.View activity-name)))))))))

Best regards,
M.



More information about the Kawa mailing list