From caiorss.rodrigues@gmail.com Thu Jan 7 01:35:08 2016 From: caio rodrigues To: gambit-list@iro.umontreal.ca Subject: Re: [gambit-list] Reader macro, read square brackets to vector and module system. Date: Thu, 07 Jan 2016 03:34:36 -0300 Message-ID: In-Reply-To: <28387CC9-61BE-48F1-9F25-B79B5A49F086@iro.umontreal.ca> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8736449583168942158==" --===============8736449583168942158== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Thanks for reply. Regarding to the module is there any way to change the reader macro to instead of write (namespace#fun1 2 4 5) it be (namespace/fun1 2 4 5). Is it possible to list the functions and symbols in the namespace ??? Regarding Gambit readtable: Is it possible to implement the transformation of square brackets delimiters into vectors like Clojure without quotes in this way: user=> user=> [(+ 3 4 5) 1 2 3 :x :y] [12 1 2 3 :x :y] user=> user=> '[(+ 3 4 5) 1 2 3 :x :y] [(+ 3 4 5) 1 2 3 :x :y] user=> When I try in this way I got: > (macro-readtable-r6rs-compatible-read?-set! (current-readtable) #f) > '[1 2 3] #(1 2 3) [(+ 3 4 5) 1 2 3 x: y:] *** ERROR IN (console)@50.1 -- Ill-formed expression > > '[(+ 3 4 5) 1 2 3 x: y:] #((+ 3 4 5) 1 2 3 x: y:) > Is it possible to change the way the Gambit repl displays the output for vectors and hash table?? I mean instead of display *#(1 2 3 4)* for vectors, display *[1 2 3 4]* and for hash table. > (list->table '((x 10) (y 200) ("sym" "test"))) # > Instead of display: *#
*, it displays *{x 10 y 200 "sym" "test"}* Thanks in advance. On 7 January 2016 at 00:27, Marc Feeley wrote: > 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 > 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(a)iro.umontreal.ca > > https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list > > --===============8736449583168942158== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" MIME-Version: 1.0 PGRpdiBkaXI9Imx0ciI+PGRpdj48ZGl2PjxkaXY+VGhhbmtzIGZvciByZXBseS4gPGJyPjwvZGl2 PjwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+UmVnYXJkaW5nIHRvIHRoZSBtb2R1bGUg aXMgdGhlcmUgYW55IHdheSB0byBjaGFuZ2UgdGhlIHJlYWRlciBtYWNybyB0byBpbnN0ZWFkIG9m IHdyaXRlIChuYW1lc3BhY2UjZnVuMSAyIDQgNSkgaXQgYmUgKG5hbWVzcGFjZS9mdW4xIDIgNCA1 KS4gSXMgaXQgcG9zc2libGUgdG8gbGlzdCB0aGUgZnVuY3Rpb25zIGFuZCBzeW1ib2xzIGluIHRo ZSBuYW1lc3BhY2UgPz8/PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+UmVnYXJkaW5nIEdh bWJpdCByZWFkdGFibGU6IElzIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGUgdHJhbnNmb3Jt YXRpb24gb2Ygc3F1YXJlIGJyYWNrZXRzIGRlbGltaXRlcnMgaW50byB2ZWN0b3JzIGxpa2UgQ2xv anVyZSB3aXRob3V0IHF1b3RlcyBpbiB0aGlzIHdheTo8YnI+PGJyPnVzZXI9Jmd0OyA8YnI+dXNl cj0mZ3Q7IFsoKyAzIDQgNSkgMSAyIDMgOnggOnldPGJyPlsxMiAxIDIgMyA6eCA6eV08YnI+dXNl cj0mZ3Q7PGJyPjwvZGl2PjxkaXY+PGRpdj48YnI+dXNlcj0mZ3Q7ICYjMzk7WygrIDMgNCA1KSAx IDIgMyA6eCA6eV08YnI+WygrIDMgNCA1KSAxIDIgMyA6eCA6eV08YnI+dXNlcj0mZ3Q7IDxicj48 YnI+PGJyPjwvZGl2PjxkaXY+V2hlbiBJIHRyeSBpbiB0aGlzIHdheSBJIGdvdDo8YnI+PC9kaXY+ PGRpdj48YnI+Jmd0OyAobWFjcm8tcmVhZHRhYmxlLXI2cnMtY29tcGF0aWJsZS1yZWFkPy1zZXQh IChjdXJyZW50LXJlYWR0YWJsZSkgI2YpPGJyPgomZ3Q7ICYjMzk7WzEgMiAzXTxicj4KIygxIDIg Myk8YnI+PGJyPlsoKyAzIDQgNSkgMSAyIDMgeDogeTpdPGJyPioqKiBFUlJPUiBJTiAoY29uc29s ZSlANTAuMSAtLSBJbGwtZm9ybWVkIGV4cHJlc3Npb248YnI+Jmd0OyA8YnI+PGJyPiZndDsgPGJy PiYjMzk7WygrIDMgNCA1KSAxIDIgMyB4OiB5Ol08YnI+IygoKyAzIDQgNSkgMSAyIDMgeDogeTop PGJyPiZndDsgPGJyPjxicj48L2Rpdj48ZGl2PklzIGl0IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUg d2F5IHRoZSBHYW1iaXQgcmVwbCBkaXNwbGF5cyB0aGUgb3V0cHV0IGZvciB2ZWN0b3JzIGFuZCBo YXNoIHRhYmxlPz8gSSBtZWFuIGluc3RlYWQgb2YgZGlzcGxheSA8Yj4jKDEgMiAzIDQpPC9iPiBm b3IgdmVjdG9ycywgZGlzcGxheSA8Yj5bMSAyIDMgNF08L2I+IGFuZCBmb3IgaGFzaCB0YWJsZS48 YnI+PGJyPiZndDsgKGxpc3QtJmd0O3RhYmxlICYjMzk7KCh4IDEwKSAoeSAyMDApICgmcXVvdDtz eW0mcXVvdDsgJnF1b3Q7dGVzdCZxdW90OykpKTxicj4jJmx0O3RhYmxlICM1Jmd0Ozxicj4mZ3Q7 wqAgPGJyPjxicj4gSW5zdGVhZCBvZiBkaXNwbGF5OiA8Yj4jJmx0O3RhYmxlICM1Jmd0OzwvYj4s IGl0IGRpc3BsYXlzIDxiPnt4IDEwIHkgMjAwICZxdW90O3N5bSZxdW90OyAmcXVvdDt0ZXN0JnF1 b3Q7fTwvYj48YnI+PGJyPjxicj48L2Rpdj48ZGl2PlRoYW5rcyBpbiBhZHZhbmNlLjxicj48L2Rp dj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9leHRyYSI+PGJyPjxkaXYgY2xhc3M9Imdt YWlsX3F1b3RlIj5PbiA3IEphbnVhcnkgMjAxNiBhdCAwMDoyNywgTWFyYyBGZWVsZXkgPHNwYW4g ZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86ZmVlbGV5QGlyby51bW9udHJlYWwuY2EiIHRh cmdldD0iX2JsYW5rIj5mZWVsZXlAaXJvLnVtb250cmVhbC5jYTwvYT4mZ3Q7PC9zcGFuPiB3cm90 ZTo8YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAw IC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+WWVzIEdh bWJpdOKAmXMgcmVhZHRhYmxlIGNhbiBiZSBtb2RpZmllZCB0byBkbyB3aGF0IHlvdSB3YW50Ojxi cj4KPGJyPgomZ3Q7ICYjMzk7WzEgMiAzXTxicj4KKDEgMiAzKTxicj4KJmd0OyAoaW5jbHVkZSAm cXVvdDt+fmxpYi9fZ2FtYml0Iy5zY20mcXVvdDspPGJyPgomZ3Q7IChtYWNyby1yZWFkdGFibGUt cjZycy1jb21wYXRpYmxlLXJlYWQ/LXNldCEgKGN1cnJlbnQtcmVhZHRhYmxlKSAjZik8YnI+CiZn dDsgJiMzOTtbMSAyIDNdPGJyPgojKDEgMiAzKTxicj4KJmd0OyAmIzM5O3thOiAxMSBiOiAyMiBj OiAzM308YnI+CihhOiAxMSBiOiAyMiBjOiAzMyk8YnI+CiZndDsgKG1hY3JvLXJlYWR0YWJsZS1i cmFjZS1rZXl3b3JkLXNldCEgKGN1cnJlbnQtcmVhZHRhYmxlKSAmIzM5O2NyZWF0ZS1oYXNodGFi bGUpPGJyPgomZ3Q7IChkZWZpbmUgKGNyZWF0ZS1oYXNodGFibGUgLiByZXN0KTxicj4KwqAgwqAg KGxldCBsb29wICgobHN0IHJlc3QpIChhbGlzdCAmIzM5OygpKSk8YnI+CsKgIMKgIMKgIChpZiAo cGFpcj8gbHN0KTxicj4KwqAgwqAgwqAgwqAgwqAgKGxvb3AgKGNkZHIgbHN0KTxicj4KwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgKGNvbnMgKGNvbnMgKGtleXdvcmQtJmd0O3N0cmluZyAoY2FyIGxz dCkpIChjYWRyIGxzdCkpIGFsaXN0KSk8YnI+CsKgIMKgIMKgIMKgIMKgIChsaXN0LSZndDt0YWJs ZSBhbGlzdCkpKSk8YnI+CiZndDsgKGRlZmluZSB0IHthOiAxMSBiOiAyMiBjOiAzM30pPGJyPgom Z3Q7ICh0YWJsZS1yZWYgdCAmcXVvdDtiJnF1b3Q7KTxicj4KMjI8YnI+Cjxicj4KR2FtYml0IGFs c28gaGFzIG5hbWVzcGFjZXMsIHNvIHlvdSBjYW4gZG86PGJyPgo8YnI+Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Cjs7 IGZpbGU6ICZxdW90O25hbWVzcGFjZS5zY20mcXVvdDs8YnI+Cjxicj4KKG5hbWVzcGFjZSAoJnF1 b3Q7bmFtZXNwYWNlIyZxdW90OykgKCZxdW90OyZxdW90OyBpbmNsdWRlKSk8YnI+CihpbmNsdWRl ICZxdW90O35+bGliL2dhbWJpdCMuc2NtJnF1b3Q7KTxicj4KPGJyPgooZGVmaW5lIChmdW4xIHgg eSB6KSAoKyB4IHkgeikpPGJyPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPgo8YnI+CmFuZCBhdCB0aGUgUkVQTDo8YnI+ Cjxicj4KJmd0OyAobG9hZCAmcXVvdDtuYW1lc3BhY2Uuc2NtJnF1b3Q7KTxicj4KJnF1b3Q7L1Vz ZXJzL2ZlZWxleS9uYW1lc3BhY2Uuc2NtJnF1b3Q7PGJyPgomZ3Q7IChuYW1lc3BhY2UjZnVuMSAy IDQgNSk8YnI+CjExPGJyPgo8YnI+Ck1hcmM8YnI+CjxkaXY+PGRpdiBjbGFzcz0iaDUiPjxicj4K Jmd0OyBPbiBKYW4gNiwgMjAxNiwgYXQgNjo1MCBQTSwgY2FpbyByb2RyaWd1ZXMgJmx0OzxhIGhy ZWY9Im1haWx0bzpjYWlvcnNzLnJvZHJpZ3Vlc0BnbWFpbC5jb20iPmNhaW9yc3Mucm9kcmlndWVz QGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj4KJmd0Ozxicj4KJmd0OyBIaSBsaXN0LiBJcyB0 aGVyZSBhbnkgd2F5IHRvIG1ha2UgR2FtYml0IHJlcGwgcmVhZCBmb3IgaW5zdGFuY2UgWzEgMiAz IDQgNV0gYW5kIHR1cm4gaXQgaW50byBhIHZlY3RvciAjKDEgMiAzIDQgNSkgYW5kIGFsc28gZXZl cnl0aGluZyBpbnRvIGJyYWNrZXRzIHt4OiAyIHk6IDR9IGludG8gYSBoYXNoIHRhYmxlID88YnI+ CiZndDs8YnI+CiZndDsgQW5vdGhlciBxdWVzdGlvbjogSXMgdGhlcmUgYW55IG1vZHVsZSBzeXN0 ZW0gaW1wbGVtZW50YXRpb24gZm9yIGdhbWJpdCB0aGF0IGNhbiBpbXBvcnQgcGFja2FnZXMgbGlr ZSBQeXRob24sIGltcG9ydCBzeXMgb3IgYSBjbG9qdXJlLWxpa2UgbW9kdWxlIHN5c3RlbSA/PGJy PgomZ3Q7PGJyPgomZ3Q7IEV4YW1wbGUgQ2xvanVyZS1saWtlIG1vZHVsZSBzeXN0ZW06PGJyPgom Z3Q7PGJyPgomZ3Q7IGZpbGU6IG5hbWVzcGFjZS5zczxicj4KJmd0Ozxicj4KJmd0OyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+CiZndDs8YnI+CiZndDsgKG5zIG5hbWVzcGFj ZSk8YnI+CiZndDs8YnI+CiZndDsgKGRlZmluZSAoZnVuMSAuLi4uKTxicj4KJmd0Ozxicj4KJmd0 OyAoZGVmaW5lIChmdW4yIHggeSB6KSAuLi4pPGJyPgomZ3Q7PGJyPgomZ3Q7IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4KJmd0Ozxicj4KJmd0OyBhbmQgdGhlbiBpbiB0aGUg cmVwbDo8YnI+CiZndDs8YnI+CiZndDsgKHJlcXVpcmUgJiMzOTtuYW1lc3BhY2UpPGJyPgomZ3Q7 PGJyPgomZ3Q7IChuYW1lc3BhY2UvZnVuMSAyIDQgNSk8YnI+CiZndDs8YnI+CiZndDsgVGhhbmtz IGluIGFkdmFuY2UuPGJyPgomZ3Q7PGJyPgomZ3Q7PGJyPgo8L2Rpdj48L2Rpdj4mZ3Q7IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgomZ3Q7IEdhbWJp dC1saXN0IG1haWxpbmcgbGlzdDxicj4KJmd0OyA8YSBocmVmPSJtYWlsdG86R2FtYml0LWxpc3RA aXJvLnVtb250cmVhbC5jYSI+R2FtYml0LWxpc3RAaXJvLnVtb250cmVhbC5jYTwvYT48YnI+CiZn dDsgPGEgaHJlZj0iaHR0cHM6Ly93ZWJtYWlsLmlyby51bW9udHJlYWwuY2EvbWFpbG1hbi9saXN0 aW5mby9nYW1iaXQtbGlzdCIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6 Ly93ZWJtYWlsLmlyby51bW9udHJlYWwuY2EvbWFpbG1hbi9saXN0aW5mby9nYW1iaXQtbGlzdDwv YT48YnI+Cjxicj4KPC9ibG9ja3F1b3RlPjwvZGl2Pjxicj48L2Rpdj4K --===============8736449583168942158==--