Hello,

i present the release version 7.3 of Scheme+ for Guile,
Scheme+ is an extension of the syntax of the Scheme language.
Scheme+ is 100% compatible with Scheme.

Scheme+ is available here:

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

Here is a little example from the Scheme+ for Guile source code itself.

;; split the expression using slice as separator(def
(parse-square-brackets-arguments args-brackets)

  (when (null? args-brackets)
        (return args-brackets))

  (declare result partial-result)

  (def (psba args) ;; parse square brackets arguments


       ;;(display partial-result) (newline)
       (when (null? args)
             ;;(display "before !*prec") (newline)
             {result <- (append result (!*prec partial-result))} ;; !*prec is
defined in scheme-infix.scm
        
             ;;(display "after !*prec") (newline)
             ;;(display result) (newline)
             (return-rec result)) ;; return from all recursive calls

       {fst <+ (car args)}

       (if (equal? slice fst)
        
           ($>
            (when (not (null? partial-result))
                  {result <- (append result (!*prec partial-result))} ;; 
evaluate
and store the expression
                  {partial-result <- '()}) ;; empty for the next possible 
portion
between slice operator
            {result <- (append result (list fst))}) ;; append the slice operator
        
           {partial-result <- (append partial-result (list fst))}) ;; not a
slice operator but append it

       (psba (cdr args))) ;; end def, recurse

  (psba args-brackets)) ;; initial call


A full example is available here:

https://github.com/damien-mattei/AI_Deep_Learning/blob/9deadf6370558a5ba43cd9743e89630e19b5bb5a/exo_retropropagationNhidden_layers_matrix_v2_by_vectors4guile%2B.scm#L71

for now Scheme+ is also available for:

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

Kawa: https://github.com/damien-mattei/Scheme-PLUS-for-Kawa

Damien

Reply via email to