Skip to content

Commit 5b349ae

Browse files
committed
use clojure readtable for repl
1 parent 156055e commit 5b349ae

File tree

4 files changed

+47
-20
lines changed

4 files changed

+47
-20
lines changed

clojure/lang/language-info.rkt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#lang racket/base
2+
3+
(provide get-language-info)
4+
5+
(define (get-language-info data)
6+
(lambda (key default)
7+
(case key
8+
[(configure-runtime)
9+
'(#[clojure/lang/runtime-config configure #f])]
10+
[else default])))
11+

clojure/lang/reader.rkt

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,10 @@
11
#lang s-exp syntax/module-reader
22
clojure/clojure
3+
#:language-info '#[clojure/lang/language-info get-language-info #f]
34
#:wrapper1
45
(lambda (t)
56
(parameterize ([current-readtable (make-clojure-readtable)])
67
(t)))
78

8-
(define (make-clojure-readtable [rt (current-readtable)])
9-
(make-readtable rt
10-
#\~ #\, #f
11-
#\, #\space #f
12-
#\_ 'dispatch-macro s-exp-comment-proc
13-
#\[ 'terminating-macro vec-proc
14-
))
15-
16-
(define (s-exp-comment-proc ch in src ln col pos)
17-
(make-special-comment (read-syntax/recursive src in)))
18-
19-
(define (vec-proc ch in src ln col pos)
20-
(define lst-stx
21-
(parameterize ([read-accept-dot #f])
22-
(read-syntax/recursive src in ch (make-readtable (current-readtable) ch #\[ #f))))
23-
(define lst (syntax->list lst-stx))
24-
(datum->syntax lst-stx (list->immutable-vector lst) lst-stx lst-stx))
25-
26-
(define (list->immutable-vector lst)
27-
(apply vector-immutable lst))
9+
(require clojure/reader)
2810

clojure/lang/runtime-config.rkt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#lang racket/base
2+
3+
(provide configure)
4+
5+
(require (only-in clojure/reader make-clojure-readtable))
6+
7+
(define (configure data)
8+
(current-readtable (make-clojure-readtable)))
9+

clojure/reader.rkt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#lang racket/base
2+
3+
(provide make-clojure-readtable)
4+
5+
(define (make-clojure-readtable [rt (current-readtable)])
6+
(make-readtable rt
7+
#\~ #\, #f
8+
#\, #\space #f
9+
#\_ 'dispatch-macro s-exp-comment-proc
10+
#\[ 'terminating-macro vec-proc
11+
))
12+
13+
(define (s-exp-comment-proc ch in src ln col pos)
14+
(make-special-comment (read-syntax/recursive src in)))
15+
16+
(define (vec-proc ch in src ln col pos)
17+
(define lst-stx
18+
(parameterize ([read-accept-dot #f])
19+
(read-syntax/recursive src in ch (make-readtable (current-readtable) ch #\[ #f))))
20+
(define lst (syntax->list lst-stx))
21+
(datum->syntax lst-stx (list->immutable-vector lst) lst-stx lst-stx))
22+
23+
(define (list->immutable-vector lst)
24+
(apply vector-immutable lst))
25+

0 commit comments

Comments
 (0)