Skip to content

Commit 55b080b

Browse files
author
amirouche
committed
minimal live unstable library (#66)
- makefile: check-with-podman: run all tests against IMPLEMENTATION specified with an environment variable locally using the stable container from github; podman is favored because in my experience it is easier to work with than the docker cli, they are small differences with docker cli; - create `live unstable` based on `json base`; - clean a cyclone `cond-expand` thanks to an improvement upstream; - minor adjustment, in `infinite?`: comparison between numbers is done with `=`; - improve `pk` and special case it for loko; - add `assume` based on SRFI-145; - trivial improvements in README; ref: https://srfi.schemers.org/srfi-145/ ref: #63
1 parent d29108b commit 55b080b

14 files changed

+2076
-102
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ upon which one can build abstractions to solve (real world) problems.
1515
- Be a complement to [SRFI](https://srfi.schemers.org/),
1616
[R7RS](https://r7rs.org), and work together following the [goals set
1717
by the steering commitee, and R7RS-large working group
18-
charter](http://scheme-reports.org/2010/working-group-2-charter.html)
18+
charter](http://scheme-reports.org/2010/working-group-2-charter.html);
1919

20-
- Release yearly stable versions:next, and first stable release
20+
- Release yearly stable versions: next, and **first stable release**
2121
planned in 2023;
2222

2323
- Aim for portability across Scheme standards, Scheme implementations,

live.egg

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
(component-dependencies)
4646
(csc-options "-R" "r7rs" "-X" "r7rs"))
4747
(extension
48-
live.json.base
49-
(source "live/json/base.sld")
48+
live.unstable
49+
(source "live/unstable.sld")
5050
(component-dependencies live.json.shim)
5151
(csc-options "-R" "r7rs" "-X" "r7rs"))
5252
(extension
@@ -59,7 +59,7 @@
5959
live.json.unstable
6060
(source "live/json/unstable.sld")
6161
(source-dependencies "live/json/body.scm")
62-
(component-dependencies live.json.base live.json.shim)
62+
(component-dependencies live.unstable live.json.shim)
6363
(csc-options "-R" "r7rs" "-X" "r7rs"))
6464
(extension
6565
live.list.unstable

live/json/unstable.chez.sls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
json-read
88
json-write)
99

10-
(import (live json base))
10+
(import (live unstable))
1111

1212
(include "body.scm"))

live/json/unstable.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
json-read
99
json-write)
1010

11-
(import (live json base))
11+
(import (live unstable))
1212

1313
(include "body.scm"))

live/json/unstable.scm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
json-read
88
json-write)
99

10-
(import (live json base))
10+
(import (live unstable))
1111

1212
(include "body.scm"))

live/json/unstable.sld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
(import (scheme base)))
1313
(else))
1414

15-
(import (live json base))
15+
(import (live unstable))
1616

1717
(include "body.scm"))

live/json/base.chez.sls renamed to live/unstable.chez.sls

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(library (live json base)
1+
(library (live unstable)
22
(export
33
port?
44
read
@@ -110,6 +110,14 @@
110110
exit)
111111
(import (rename (chezscheme) (define-record-type define-record-type*)))
112112

113+
(define-syntax assume
114+
(syntax-rules ()
115+
((assume expression message)
116+
(or expression
117+
(error 'assume message (quote expression))))
118+
((assume . _)
119+
(syntax-error "invalid assume syntax"))))
120+
113121
(define (pk . args)
114122
(write args (current-error-port))
115123
(newline (current-error-port))

live/json/base.rkt renamed to live/unstable.rkt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!r7rs
2-
(define-library (live json base)
2+
(define-library (live unstable)
33
(export
44
read
55
quote
@@ -114,6 +114,14 @@
114114
(only (srfi/1) every))
115115
(begin
116116

117+
(define-syntax assume
118+
(syntax-rules ()
119+
((assume expression message)
120+
(or expression
121+
(error 'assume message (quote expression))))
122+
((assume . _)
123+
(syntax-error "invalid assume syntax"))))
124+
117125
(define error
118126
(lambda (who . args)
119127
(apply error* (symbol->string who) args)))
@@ -146,5 +154,5 @@
146154

147155
(define (infinite? x)
148156
(and (number? x)
149-
(or (equal? x +inf.0)
150-
(equal? x -inf.0))))))
157+
(or (= x +inf.0)
158+
(= x -inf.0))))))

live/json/base.scm renamed to live/unstable.scm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(define-library (live json base)
1+
(define-library (live unstable)
22
(export
33
read
44
quote
@@ -127,7 +127,7 @@
127127

128128
(define pk
129129
(lambda args
130-
(display ";; ")
130+
(display ";; " (current-error-port))
131131
(write args (current-error-port))
132132
(car (reverse args))))
133133

@@ -139,5 +139,5 @@
139139

140140
(define (infinite? x)
141141
(and (number? x)
142-
(or (equal? x +inf.0)
143-
(equal? x -inf.0))))))
142+
(or (= x +inf.0)
143+
(= x -inf.0))))))

live/json/base.sld renamed to live/unstable.sld

Lines changed: 25 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
(define-library (live json base)
1+
(define-library (live unstable)
22
(export
3+
assume
34
port?
45
read
56
let*
@@ -149,6 +150,14 @@
149150

150151
(begin
151152

153+
(define-syntax assume
154+
(syntax-rules ()
155+
((assume expression message)
156+
(or expression
157+
(error 'assume message (quote expression))))
158+
((assume . _)
159+
(syntax-error "invalid assume syntax"))))
160+
152161
(cond-expand
153162
((or gambit loko mit gauche)
154163
(define every
@@ -158,83 +167,7 @@
158167
(if (p? (car x))
159168
(every (cdr x))
160169
#f)))))
161-
162-
(cyclone
163-
(define * *)
164-
(define + +)
165-
(define - -)
166-
(define / /)
167-
(define < <)
168-
(define <= <=)
169-
(define = =)
170-
(define > >)
171-
(define >= >=)
172-
(define apply apply)
173-
(define boolean? boolean?)
174-
(define bytevector bytevector)
175-
(define bytevector-append bytevector-append)
176-
(define bytevector-length bytevector-length)
177-
(define bytevector-u8-ref bytevector-u8-ref)
178-
(define bytevector-u8-set! bytevector-u8-set!)
179-
(define bytevector? bytevector?)
180-
(define caar caar)
181-
(define cadr cadr)
182-
(define car car)
183-
(define cdar cdar)
184-
(define cddr cddr)
185-
(define cdr cdr)
186-
(define char->integer char->integer)
187-
(define char? char?)
188-
(define close-input-port close-input-port)
189-
(define close-output-port close-output-port)
190-
(define close-port close-port)
191-
(define command-line-arguments command-line-arguments)
192-
(define cons cons)
193-
(define delete-file delete-file)
194-
(define eof-object? eof-object?)
195-
(define eq? eq?)
196-
(define equal? equal?)
197-
(define eqv? eqv?)
198-
(define error error)
199-
(define exit exit)
200-
(define file-exists? file-exists?)
201-
(define integer->char integer->char)
202-
(define integer? integer?)
203-
(define length length)
204-
(define list->string list->string)
205-
(define list->vector list->vector)
206-
(define make-bytevector make-bytevector)
207-
(define make-vector make-vector)
208-
(define null? null?)
209-
(define number->string number->string)
210-
(define number? number?)
211-
(define open-input-file open-input-file)
212-
(define open-output-file open-output-file)
213-
(define pair? pair?)
214-
(define peek-char peek-char)
215-
(define port? port?)
216-
(define procedure? procedure?)
217-
(define read-char read-char)
218-
(define real? real?)
219-
(define set-car! set-car!)
220-
(define set-cdr! set-cdr!)
221-
(define string->number string->number)
222-
(define string->symbol string->symbol)
223-
(define string-append string-append)
224-
(define string-cmp string-cmp)
225-
(define string-length string-length)
226-
(define string-ref string-ref)
227-
(define string-set! string-set!)
228-
(define string? string?)
229-
(define substring substring)
230-
(define symbol->string symbol->string)
231-
(define symbol? symbol?)
232-
(define system system)
233-
(define vector-length vector-length)
234-
(define vector-ref vector-ref)
235-
(define vector-set! vector-set!)
236-
(define vector? vector?))
237-
170+
(chicken)
238171
(else))
239172

240173
(cond-expand
@@ -270,12 +203,20 @@
270203
(define (void)
271204
(when #f #f))
272205

273-
(define pk
274-
(lambda args
275-
;; TODO: FIXME: Loko does like current-error-port
276-
(display ";; " #;(current-error-port))
277-
(write args #;(current-error-port))
278-
(car (reverse args))))
206+
(cond-expand
207+
(loko
208+
(define pk
209+
(lambda args
210+
(display ";; ")
211+
(write args)
212+
(car (reverse args)))))
213+
(else
214+
(define pk
215+
(lambda args
216+
(display ";; " (current-error-port))
217+
(write args (current-error-port))
218+
(car (reverse args))))))
219+
279220

280221
(define ash arithmetic-shift)
281222

0 commit comments

Comments
 (0)