Yes Gambit’s readtable can be modified to do what you want:
'[1 2 3]
(1 2 3)
(include "~~lib/_gambit#.scm") (macro-readtable-r6rs-compatible-read?-set! (current-readtable) #f) '[1 2 3]
#(1 2 3)
'{a: 11 b: 22 c: 33}
(a: 11 b: 22 c: 33)
(macro-readtable-brace-keyword-set! (current-readtable) 'create-hashtable) (define (create-hashtable . rest)
(let loop ((lst rest) (alist '())) (if (pair? lst) (loop (cddr lst) (cons (cons (keyword->string (car lst)) (cadr lst)) alist)) (list->table alist))))
(define t {a: 11 b: 22 c: 33}) (table-ref t "b")
22
Gambit also has namespaces, so you can do:
---------------------------------------------------------------- ;; file: "namespace.scm"
(namespace ("namespace#") ("" include)) (include "~~lib/gambit#.scm")
(define (fun1 x y z) (+ x y z)) ----------------------------------------------------------------
and at the REPL:
(load "namespace.scm")
"/Users/feeley/namespace.scm"
(namespace#fun1 2 4 5)
11
Marc
On Jan 6, 2016, at 6:50 PM, caio rodrigues caiorss.rodrigues@gmail.com wrote:
Hi list. Is there any way to make Gambit repl read for instance [1 2 3 4 5] and turn it into a vector #(1 2 3 4 5) and also everything into brackets {x: 2 y: 4} into a hash table ?
Another question: Is there any module system implementation for gambit that can import packages like Python, import sys or a clojure-like module system ?
Example Clojure-like module system:
file: namespace.ss
(ns namespace)
(define (fun1 ....)
(define (fun2 x y z) ...)
and then in the repl:
(require 'namespace)
(namespace/fun1 2 4 5)
Thanks in advance.
Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list