Version 3.0 of Scheme+ for Racket

Hi,

i released a new version of Scheme+ , Version 3.0 add strings support and a few other enhancement.

https://damien-mattei.github.io/Scheme-PLUS-for-Racket/Scheme+io.html

https://pkgs.racket-lang.org/package/Scheme-PLUS-for-Racket

I give too some examples of Scheme+ in real conditions:

https://github.com/damien-mattei/library-FunctProg/blob/master/racket/logiki%2B.rkt#L1941

A Petrick's method implementation:
https://github.com/damien-mattei/library-FunctProg/blob/master/racket/logiki%2B.rkt#L2201

A Quine - Mc Cluskey's implementation:
https://github.com/damien-mattei/library-FunctProg/blob/master/racket/logiki%2B.rkt#L2139

Bienvenue dans DrRacket, version 7.7 [3m].
Langage: reader "racket/SRFI-105.rkt", avec débogage; limite mémoire : 128 MB.
'()

(infix-symb-min-dnf '{A ⊕ B ⊕ Ci})
'((A ∧ B ∧ Ci) ∨ (A ∧ ¬B ∧ ¬Ci) ∨ (¬A ∧ B ∧ ¬Ci) ∨ (¬A ∧ ¬B ∧ Ci))

racket -f start-logiki-command-line.rkt -i
Welcome to Racket v7.7.
'()

(infix-symb-bool-min-dnf '{{(not a) and (not b) and (not c) and (not d)} or {(not a) and (not b) and (not c) and d} or {(not a) and (not b) and c and (not d)} or {(not a) and b and (not c) and d} or {(not a) and b and c and (not d)} or {(not a) and b and c and d} or {a and (not b) and (not c) and (not d)} or {a and (not b) and (not c) and d} or {a and (not b) and c and (not d)} or {c and (not d)}} )

'((a̅ · b · d) :heavy_plus_sign: (b̅ · c̅) :heavy_plus_sign: (c · d̅)) ;; display well only in terminal not in REPL of graphic interface (bar notation not supported in the GUI)

Scheme+ is an extension of the syntax of the Scheme language. Scheme+ makes it easy the assignment of Scheme objects in infix (works also in prefix) notation with a few new operators ← (or <-), [ ],⥆ (or <+) . This package also include the implementation of the Curly Infix SRFI 105 with a REPL (Read Eval Print Loop) for DrRacket.

The only little known bug in the Scheme+ infix parsing is the non support of #; comment style in code. (only ; are supported) it seems silly :slight_smile: but i do not know how to fix it.

Scheme+ is 100% Scheme compatible and easy to port on Scheme system having SRFI-105 "Curly infix" but requires more hack without it.

Regards,

Damien

3 Likes

Hi Damien,
Thank you for sharing this.

Can I ask why is it built Racket 7.7 for Linux ? That is quite an old version and 8.6 will be released soon.
Best regards
Stephen

Hello Stephan,

oh it is just that my desktop computer is using Racket 7.7 and i still do not have updated it,
on my MacBook Pro laptop (can not verify now) the version is 8.2 which is more recent as commented in file:
https://github.com/damien-mattei/library-FunctProg/blob/master/start-logiki-command-line.rkt#L2

and i checked too the package build on pkg-build.racket-lang.org and it use the 8.5 version almost the last one (8.6):
https://pkg-build.racket-lang.org/server/built/install/Scheme-PLUS-for-Racket.txt

Using old and new version is a good compatibility test :slight_smile:
but i will remember to update my laptop computer with 8.6.

Best Regards,
Damien

1 Like

and i forget to write that Scheme+ version 3.0 is also available for Guile Scheme:
https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html

and soon for Chicken and Sagittarius Scheme because it is easy to port it when SRFI-105 is already implemented for the Scheme, ports for other Scheme implementation will be more hard.

Damien