* Scheme+ @ 2021-12-20 0:05 Damien Mattei 2021-12-20 0:07 ` Scheme+ Jacob Hrbek ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Damien Mattei @ 2021-12-20 0:05 UTC (permalink / raw) To: guile-user, guile-devel Hi, I finished today the first version of Scheme+. 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 <+) . Scheme+ does much more things,see: https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html or: https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/README.md static light HTML page: https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html direct link to code and README: https://github.com/damien-mattei/Scheme-PLUS-for-Guile Best regards, Damien Mattei ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Scheme+ 2021-12-20 0:05 Scheme+ Damien Mattei @ 2021-12-20 0:07 ` Jacob Hrbek 2021-12-20 0:16 ` Scheme+ Damien Mattei 2021-12-20 7:22 ` Scheme+ Dr. Arne Babenhauserheide 2021-12-20 8:15 ` Scheme+ Linus Björnstam 2 siblings, 1 reply; 8+ messages in thread From: Jacob Hrbek @ 2021-12-20 0:07 UTC (permalink / raw) To: guile-user [-- Attachment #1.1: Type: text/plain, Size: 891 bytes --] From what you said i have no idea what it does.. Is that like an alternative to geiser-guile? On 12/20/21 01:05, Damien Mattei wrote: > Hi, > I finished today the first version of Scheme+. > 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 <+) . > > Scheme+ does much more things,see: > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html > > or: > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/README.md > > static light HTML page: > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html > > direct link to code and README: > https://github.com/damien-mattei/Scheme-PLUS-for-Guile > > Best regards, > > Damien Mattei -- -- Jacob Hrbek [-- Attachment #1.2: publickey - kreyren@rixotstudio.cz - 1677db82.asc --] [-- Type: application/pgp-keys, Size: 713 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 249 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Scheme+ 2021-12-20 0:07 ` Scheme+ Jacob Hrbek @ 2021-12-20 0:16 ` Damien Mattei 2021-12-20 1:53 ` Scheme+ Jacob Hrbek 0 siblings, 1 reply; 8+ messages in thread From: Damien Mattei @ 2021-12-20 0:16 UTC (permalink / raw) To: Jacob Hrbek; +Cc: guile-user you answered only 1 minute after my post si i assume you have not read the web page of project,but all is explained here with a ton of examples: https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html or: https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/README.md static light HTML page: https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html direct link to code and README: https://github.com/damien-mattei/Scheme-PLUS-for-Guile Damien On Mon, Dec 20, 2021 at 1:08 AM Jacob Hrbek <kreyren@rixotstudio.cz> wrote: > From what you said i have no idea what it does.. Is that like an > alternative to geiser-guile? > > On 12/20/21 01:05, Damien Mattei wrote: > > Hi, > > I finished today the first version of Scheme+. > > 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 <+) . > > > > Scheme+ does much more things,see: > > > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html > > > > or: > > > > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/README.md > > > > static light HTML page: > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html > > > > direct link to code and README: > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile > > > > Best regards, > > > > Damien Mattei > > -- > -- Jacob Hrbek > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Scheme+ 2021-12-20 0:16 ` Scheme+ Damien Mattei @ 2021-12-20 1:53 ` Jacob Hrbek 0 siblings, 0 replies; 8+ messages in thread From: Jacob Hrbek @ 2021-12-20 1:53 UTC (permalink / raw) To: Damien Mattei; +Cc: guile-user [-- Attachment #1.1: Type: text/plain, Size: 2170 bytes --] I skimmed through the website before i sent the e-mail.. was hoping you do better job at presenting the project instead of sending a wall of text :p From what i understood it's working with ligatures to add more functionality to scheme? So far i don't like that it's all one huge things.. would prefer it to be as modulized as possible for me to define a custom guile dialect for my usecase On 12/20/21 01:16, Damien Mattei wrote: > you answered only 1 minute after my post si i assume you have not read > the web page of project,but all is explained here with a ton of examples: > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html > > or: > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/README.md > > static light HTML page: > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html > > direct link to code and README: > https://github.com/damien-mattei/Scheme-PLUS-for-Guile > > Damien > > On Mon, Dec 20, 2021 at 1:08 AM Jacob Hrbek <kreyren@rixotstudio.cz> > wrote: > > From what you said i have no idea what it does.. Is that like an > alternative to geiser-guile? > > On 12/20/21 01:05, Damien Mattei wrote: > > Hi, > > I finished today the first version of Scheme+. > > 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 <+) . > > > > Scheme+ does much more things,see: > > > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html > > > > or: > > > > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/README.md > > > > static light HTML page: > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html > > > > direct link to code and README: > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile > > > > Best regards, > > > > Damien Mattei > > -- > -- Jacob Hrbek > -- -- Jacob Hrbek [-- Attachment #1.2: publickey - kreyren@rixotstudio.cz - 1677db82.asc --] [-- Type: application/pgp-keys, Size: 713 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 249 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Scheme+ 2021-12-20 0:05 Scheme+ Damien Mattei 2021-12-20 0:07 ` Scheme+ Jacob Hrbek @ 2021-12-20 7:22 ` Dr. Arne Babenhauserheide 2021-12-20 8:15 ` Scheme+ Linus Björnstam 2 siblings, 0 replies; 8+ messages in thread From: Dr. Arne Babenhauserheide @ 2021-12-20 7:22 UTC (permalink / raw) To: Damien Mattei; +Cc: guile-user, guile-devel [-- Attachment #1: Type: text/plain, Size: 536 bytes --] Damien Mattei <damien.mattei@gmail.com> writes: > I finished today the first version of Scheme+. > 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 <+) . > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html Does this build on SRFI-105? Best wishes, Arne -- Unpolitisch sein heißt politisch sein, ohne es zu merken. draketo.de [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 1125 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Scheme+ 2021-12-20 0:05 Scheme+ Damien Mattei 2021-12-20 0:07 ` Scheme+ Jacob Hrbek 2021-12-20 7:22 ` Scheme+ Dr. Arne Babenhauserheide @ 2021-12-20 8:15 ` Linus Björnstam 2021-12-20 9:20 ` Scheme+ Damien Mattei 2021-12-20 17:33 ` Scheme+ Maxime Devos 2 siblings, 2 replies; 8+ messages in thread From: Linus Björnstam @ 2021-12-20 8:15 UTC (permalink / raw) To: Damien Mattei, guile-user, guile-devel Hi Damien! I played around with it and it seems to rely heavily on mutation, which makes guile (and chez and racket for that matter) box the values. That adds a layer of indirection to memory access, meaning slower code (apart from the more obvious problems of continuation safety and threading safety). It could be partially fixed with a very much not fun to write syntax case macro: you expand a body as far as possible into a letrec* (and letrec-syntax) shadowing bindings when needed and use set! only in places where bindings are not declared. The workhorse you need for that is syntax-local-binding. If you want this system to be resilient and work well with other scheme code that is probably the path to go. One could imagining having a procedure form that is fully expanded, analyzed and then some-kind-of-CPS-transformed so that all variables are passed as state. That way you would get continuation and thread safety, while allowing something that seems like and, at least locally, behaves like mutation to take place. This (the local mutation part) is tangential to something I have wanted to write for a long time, but I have not had the time (nor intelligence). If you want to discuss some ideas or have any question we can take this off-list. Another thing would be to not use call/cc in the def form. Let/ec is a lot faster. -- Linus Björnstam On Mon, 20 Dec 2021, at 01:05, Damien Mattei wrote: > Hi, > I finished today the first version of Scheme+. > 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 <+) . > > Scheme+ does much more things,see: > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html > > or: > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/README.md > > static light HTML page: > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html > > direct link to code and README: > https://github.com/damien-mattei/Scheme-PLUS-for-Guile > > Best regards, > > Damien Mattei ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Scheme+ 2021-12-20 8:15 ` Scheme+ Linus Björnstam @ 2021-12-20 9:20 ` Damien Mattei 2021-12-20 17:33 ` Scheme+ Maxime Devos 1 sibling, 0 replies; 8+ messages in thread From: Damien Mattei @ 2021-12-20 9:20 UTC (permalink / raw) To: guile-user, guile-devel yes it is based on SRFI-105 as explained in section 7: Features. The project is based on R6RS (R5RS too) and SRFI for compatibility. Linus we had a discussion about bindings month ago and Scheme+ take in account the impossibility in Scheme to have a single operator for defining a variable anywhere . There is no more mutation in Scheme+ than in other code. If you code already use mutation with set! array-set! then Scheme+ encapsulate it with new and easy operator,that's all. Scheme+ is 100% compatible with R6RS and SRFI. I used it to convert a big code (see section 20:Scheme+ in action) and it worked at the first time. let/ec, which i did not knew, is not standardised but i will work on this,thank you for your advice. Scheme+ is really fast because macro are generally one step expanded ,or have recusivity depth of the size of the object (example array dim 3 , we recall three time the macro expansion) and on a compiled Scheme as Guile i'm not sure it is slower.(I could have done better as SRFI arrays which define a macro for each dimension 1,2,3,.... until a fixed number) If someone have counter example with call/cc or threads making fail Scheme+ i will do my best to fix that and improve it. This is only version 1.0. Damien On Mon, Dec 20, 2021 at 9:16 AM Linus Björnstam <linus.internet@fastmail.se> wrote: > Hi Damien! > > I played around with it and it seems to rely heavily on mutation, which > makes guile (and chez and racket for that matter) box the values. That adds > a layer of indirection to memory access, meaning slower code (apart from > the more obvious problems of continuation safety and threading safety). It > could be partially fixed with a very much not fun to write syntax case > macro: you expand a body as far as possible into a letrec* (and > letrec-syntax) shadowing bindings when needed and use set! only in places > where bindings are not declared. > > The workhorse you need for that is syntax-local-binding. > > If you want this system to be resilient and work well with other scheme > code that is probably the path to go. One could imagining having a > procedure form that is fully expanded, analyzed and then > some-kind-of-CPS-transformed so that all variables are passed as state. > That way you would get continuation and thread safety, while allowing > something that seems like and, at least locally, behaves like mutation to > take place. > > This (the local mutation part) is tangential to something I have wanted to > write for a long time, but I have not had the time (nor intelligence). If > you want to discuss some ideas or have any question we can take this > off-list. > > Another thing would be to not use call/cc in the def form. Let/ec is a lot > faster. > > -- > Linus Björnstam > > On Mon, 20 Dec 2021, at 01:05, Damien Mattei wrote: > > Hi, > > I finished today the first version of Scheme+. > > 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 <+) . > > > > Scheme+ does much more things,see: > > > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html > > > > or: > > > > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/README.md > > > > static light HTML page: > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html > > > > direct link to code and README: > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile > > > > Best regards, > > > > Damien Mattei > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Scheme+ 2021-12-20 8:15 ` Scheme+ Linus Björnstam 2021-12-20 9:20 ` Scheme+ Damien Mattei @ 2021-12-20 17:33 ` Maxime Devos 1 sibling, 0 replies; 8+ messages in thread From: Maxime Devos @ 2021-12-20 17:33 UTC (permalink / raw) To: Linus Björnstam, Damien Mattei, guile-user, guile-devel Linus Björnstam schreef op ma 20-12-2021 om 09:15 [+0100]: > I played around with it and it seems to rely heavily on mutation, > which makes guile (and chez and racket for that matter) box the > values. That adds a layer of indirection to memory access, meaning > slower code (apart from the more obvious problems of continuation > safety and threading safety). Concerning thread-safety and continuation safety: as long as continuations aren't resumed multiple times (*), and as long as no closures are passed, then the mutation doesn't make any observable difference (except fastness). (*) E.g., the continuations that guile-fibers construct are resumed only once. Greetings, Maxime. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-12-20 17:33 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-12-20 0:05 Scheme+ Damien Mattei 2021-12-20 0:07 ` Scheme+ Jacob Hrbek 2021-12-20 0:16 ` Scheme+ Damien Mattei 2021-12-20 1:53 ` Scheme+ Jacob Hrbek 2021-12-20 7:22 ` Scheme+ Dr. Arne Babenhauserheide 2021-12-20 8:15 ` Scheme+ Linus Björnstam 2021-12-20 9:20 ` Scheme+ Damien Mattei 2021-12-20 17:33 ` Scheme+ Maxime Devos
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).