chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] unbound variable: or


From: Jinsong Liang
Subject: Re: [Chicken-users] unbound variable: or
Date: Fri, 29 May 2015 20:25:20 -0400

Thank you for more examples!

I want to learn some basic macro programming in Chicken. However, it seems there are multiple macro definition APIs in Chicken: define-syntax, syntax-rules, syntax-case, define-macro. Which one should I start with?

Also, I have heard that, different from Lisp, macro programming in Scheme is not recommended. Is it true?

Thank you!

Jinsong

On Fri, May 29, 2015 at 7:44 PM, Michele La Monaca <address@hidden> wrote:
On Fri, May 29, 2015 at 3:10 AM, Jinsong Liang <address@hidden> wrote:
> Thank you Michele! This is a nice example.

Nice but maybe not very useful:

(apply-syntax or (#f (+ 1 2) (print "hello")))

is just a longer and more cumbersome version of

(or (#f (+ 1 2) (print "hello")))

A far more valuable macro is the following:

(define-macro apply-any
  (lambda (_ lst)
    (eval `(cons ',_ ,lst))))

(define l '(#f (+ 1 2) (print "hello")))
(apply-any or l)

=> 3

(let ((x 9)) (apply-any or '(#f (+ x 1) (print "hello"))))

=> 10

(apply-any + (list 1 2 3))

=> 6

Regards,
Michele

_______________________________________________
Chicken-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/chicken-users


reply via email to

[Prev in Thread] Current Thread [Next in Thread]