takikawa / sweet-racket

A port of sweet expressions to Racket
http://pkg-build.racket-lang.org/doc/sweet/index.html
Other
47 stars 10 forks source link

$bracket-apply$ of SRFI 105 not implemented #47

Open damien-mattei opened 2 years ago

damien-mattei commented 2 years ago

hello, i can not use $bracket-apply$ and find no occurence of it in the repository.I suppose it is not implemented. In theory it should be as curly infix is included in neotreic expression incuded in sweet expressions. 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 is ignoring the $bracket-apply$

Regards, Damien

takikawa commented 2 years ago

This package was originally ported from the "readable" project code around 2011, so I think it predates SRFI-105.

I'm not actively maintaining the package, but would accept PRs to update it to more recent versions of the syntax.

takikawa commented 2 years ago

It looks like there is an older version of this bracket syntax (with bracketaccess) defined in https://github.com/takikawa/sweet-racket/blob/master/sweet-exp-lib/sweet-exp/modern.rkt but it's disabled in this package. You could try enabling it in a local copy of the package.

damien-mattei commented 2 years ago

sorry for the late answer but i did not get any notification for your answer... yes i will try to activate and test "bracketaccess" locally...

damien-mattei commented 2 years ago

i read the code ,there exist a bracketaccess that should be $bracket-apply$ and there is a line : ; Configuration: (define modern-backwards-compatible #f) ; If true, "(" triggers old reader. (define modern-bracketaccess #f) ; If true, "f[...]" => [bracketaccess f ...] ; if not, "f[...]" => [f ...].

but there is no underlying implementation in the code using it !