chicken-users
[Top][All Lists]
Advanced

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

[Chicken-users] [ANN] ck-macros 0.2.0


From: John Croisant
Subject: [Chicken-users] [ANN] ck-macros 0.2.0
Date: Thu, 28 Feb 2019 22:45:42 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

The ck-macros egg version 0.2.0 has been released. This version adds
CHICKEN 5 support, many new features, some R5RS compatibility fixes, and
a few breaking changes to the API.

    https://wiki.call-cc.org/eggref/5/ck-macros

ck-macros is based on work by Oleg Kiselyov, with many original
contributions by me. It provides a novel kind of  macro (or, a novel way
of using macros) with two important properties:

1. Aside from wrappers, they are implemented using only standard R5RS
features, mostly syntax-rules. So they are trivially portable to pretty
much any Scheme, not just CHICKEN. And wrappers are trivially portable
to any Scheme that implements er-macro-transformer in the usual way.

2. They can be composed (combined) much like Scheme procedures can. It
is even possible to create higher-order macros, analogous to
higher-order functions. For example, you can use "c-compose" to compose
multiple CK-macros together, then use "c-map1" to map the composed macro
over a list. There are many, many examples on the wiki page.

The biggest new feature in version 0.2.0 is the "ck-wrapper" procedure,
which creates a CK-macro from any Scheme procedure, including lambda
forms and "let over lambda" closures. The egg provides wrappers for many
standard R5RS procedures, and it's trivial to create your own.

If this sounds useful to you, wonderful. Personally, I just enjoy
exploring the boundaries of what is possible with this idea -- already
much more than I expected!

- John Croisant

P.S. Please add this to the CHICKEN 5 coop:

   
https://gitlab.com/jcroisant/ck-macros/raw/master/ck-macros.chicken-5.release-info




reply via email to

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