check out the clojurian egg too: http://wiki.call-cc.org/eggref/4/clojurian
martin On Thu, Nov 6, 2014 at 6:21 PM, Sungjin Chun <[email protected]> wrote: > Thank you. Though I'm not sure on my code is in good style, I managed to > convert my > code to chicken scheme like this; > > (set-read-syntax! > #\[ > (lambda (port) > (let loop ((c (peek-char port)) (exps '())) > (cond ((eof-object? c) > (error "EOF encountered while parsing [ ... ] clause")) > ((char=? c #\]) > (read-char port) ; > discard > > `(vector ,@(reverse exps))) > ((char-whitespace? c) > (read-char port) ; discard > whitespaces > > (loop (peek-char port) exps)) > (else > (let ((exp (read port))) > (loop (peek-char port) > (cons exp exps)))))))) > > (print (with-input-from-string "[1 2 3 4 5]" read)) > > (set-read-syntax! > #\{ > (lambda (port) > (let loop ((c (peek-char port)) (exps '())) > (cond ((eof-object? c) > (error "EOF encountered while parsing [ ... ] clause")) > ((char=? c #\}) > (read-char port) ; > discard > > `(alist->hash-table (chop (list ,@(reverse exps)) 2))) > ((char-whitespace? c) > (read-char port) ; discard > whitespaces > > (loop (peek-char port) exps)) > ((char=? c #\,) > (read-char port) ; discard > whitespaces > > (loop (peek-char port) exps)) > (else > (let ((exp (read port))) > (loop (peek-char port) > (cons exp exps)))))))) > > (print (with-input-from-string "{'a 10, 'b 20, 'c 30}" read)) > (print (with-input-from-string "{'a 10 'b 20 'c 30}" read)) > > I post these code for people with similar needs like myself :-). > > > On Fri, Nov 7, 2014 at 10:33 AM, Evan Hanson <[email protected]> wrote: > >> Hi Sungjin, >> >> These are typically referred to as "reader extensions" in the Scheme >> world: http://api.call-cc.org/doc/library#sec:Reader_extensions >> >> You'll probabably want `set-read-syntax!` in particular: >> http://api.call-cc.org/doc/library/set-read-syntax! >> >> Cheers, >> >> Evan >> > > > _______________________________________________ > Chicken-users mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/chicken-users > >
_______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
