Release of Scheme+ for Guile version 9.1

Damien Mattei <[email protected]>
Newsgroups gmane.lisp.guile.user
Message-ID <CADEOadf6aZAsHS5h6psLqvUQikS1G-8fCx2CoaF2N1C1T2kYdA@mail.gmail.com>
Hello,

i released Scheme+ for Guile version 9.1:

https://github.com/damien-mattei/Scheme-PLUS-for-Guile

It is a big refactoring of code,now completely implemented with modules and
still use syntax transformers.

It add very few new features but it is a complete refactoring of the code
presentation using modules. (instead of mixed included/imported files of
the previous releases)

I use the Guile modules instead of R*RS (that have little problem in
current version of Guile)

Scheme+ add a lot of "syntactic sugar" to Scheme : infix with precedence
operator, [ ] square bracket notation for indexed objects (vector, arrays,
strings,...), and much more i can not describe in a short message.

Here is a limited (not all) overview of the modules dependencies focusing
on the infix and square bracket SRFI 105 interaction:

[image: schema-scheme+.jpg]

So now we can use all features of Scheme+ or only load what we want module
by module.

Examples:

to use operator precedence in infix:

scheme@(guile-user)> (use-modules (nfx))
scheme@(guile-user)> {3 * 5 + 2}
$1 = 17

to use square bracket with vectors,strings,hash tables, arrays,etc ... :

scheme@(guile-user)> (use-modules (bracket-apply))
scheme@(guile-user)> {#(1 2 3 4 5)[2]}
$2 = 3

scheme@(guile-user)> (use-modules (slice))
scheme@(guile-user)> {"hello"[0 : 5 : 2]}
$4 = "hlo"

scheme@(guile-user)> {"hello"[: : -1]}
$5 = "olleh"

(this slicing syntax is same as Python syntax adapted to Scheme, with a few
differences inherent to Scheme/Python objects differences)

I will  describe slowly and more precisely in other messages each one of
the features of Scheme+ in the next weeks.

Regards,

Damien
schema-scheme+.jpg (image/jpeg, 72.7 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.