unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* 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).