# Scheme+ for Racket

**URL:** <https://racket.discourse.group/t/scheme-for-racket/798>\
**Category:** Show & Tell\
**Created:** [March 14, 2022, 6:14pm UTC](https://racket.discourse.group/t/scheme-for-racket/798 "2022-03-14T18:14:59Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 14, 2022, 6:14pm UTC](https://racket.discourse.group/t/scheme-for-racket/798/1 "2022-03-14T18:14:59Z")

</div>

Hello,

i have port my Scheme+ for Racket language:  
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.

Scheme+ is on Github and in the Racket packages repository:

[Scheme+ for Racket project at github.io](https://damien-mattei.github.io/Scheme-PLUS-for-Racket/Scheme+io.html)

[Scheme+ for Racket at Github](https://github.com/damien-mattei/Scheme-PLUS-for-Racket)

[Scheme+ doc for Racket at Github](https://github.com/damien-mattei/Scheme-PLUS-for-Racket/blob/gh-pages/index.md)

[Scheme+ package for DrRacket](https://pkgs.racket-lang.org/package/Scheme-PLUS-for-Racket)

[Scheme+ for Racket light HTML doc at github.io](https://damien-mattei.github.io/Scheme-PLUS-for-Racket/Scheme+.html)

Enjoy using it!

Damien

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 21, 2022, 10:57am UTC](https://racket.discourse.group/t/scheme-for-racket/798/2 "2022-03-21T10:57:53Z")

</div>

someone in the mailing list wrote me that 'sweet expr' is doing the same as curly infix SRFI 105:

> [sweet-exp](https://pkgs.racket-lang.org/package/sweet-exp)  
> It implements curly infix along with other syntax enhancements.
> 
> Your example works with it (#lang sweet-exp racket) as is.

but i replied:  
yes it works for a simple example but not on complex ones:

Bienvenue dans DrRacket, version 7.7 [3m].  
Langage: sweet-exp racket, avec débogage; limite mémoire : 128 MB.

> (define T (make-vector 5))  
> '{T[3] \<- 7}  
> '(\<- (T 3) 7)

{T[3] \<- 7}  
. set!: not an identifier in: (T 3)

normally this should expand like:

'{T[3] \<- 7}  
'(\<- (bracket-apply T 3) 7)

> 

{T[3] \<- 7}  
7

> 

{T[3]}  
7

> 

i suppose sweet exp transforming T[3] in T(3) and the SRFI 105 letting the user redefine bracket-apply which is what i do in Scheme+

The parsing in sweet expr is before my Schme+ macro operate and i can not find a way to change that.

i do not know if it is possible to solve that without going into the source code of 'sweet expr'?
