91 lines
2.0 KiB
Scheme
91 lines
2.0 KiB
Scheme
|
|
||
|
(define-interface pre-scheme-primitives-interface
|
||
|
(export ((if begin lambda letrec quote set!
|
||
|
define define-syntax let-syntax
|
||
|
and cond do let let* or
|
||
|
quasiquote
|
||
|
;syntax-rules
|
||
|
) :syntax) ; no delay, case is below
|
||
|
;; letrec-syntax -- not yet implemented
|
||
|
|
||
|
(goto :syntax)
|
||
|
(external :syntax)
|
||
|
|
||
|
eq?
|
||
|
+ - * = < ; /
|
||
|
quotient remainder
|
||
|
; floor numerator denominator
|
||
|
; real-part imag-part
|
||
|
; exp log sin cos tan asin acos atan sqrt
|
||
|
; angle magnitude make-polar make-rectangular
|
||
|
char=? char<?
|
||
|
|
||
|
;; Data manipulation
|
||
|
make-vector vector-length
|
||
|
vector-ref vector-set!
|
||
|
|
||
|
make-string string-length
|
||
|
string-ref string-set!
|
||
|
|
||
|
ps-read-char
|
||
|
char-ready?
|
||
|
write-char
|
||
|
|
||
|
; values call-with-values
|
||
|
|
||
|
ascii->char char->ascii
|
||
|
|
||
|
; extras
|
||
|
small* ; hack for robots
|
||
|
allocate-memory deallocate-memory read-block write-block
|
||
|
deallocate null-pointer? null-port?
|
||
|
ashl ashr lshr
|
||
|
bitwise-and bitwise-ior bitwise-xor bitwise-not
|
||
|
force-output
|
||
|
;abort
|
||
|
;runtime
|
||
|
unassigned
|
||
|
error
|
||
|
write-string
|
||
|
call-external-value
|
||
|
))
|
||
|
|
||
|
(define-interface pre-scheme-internal-primitives-interface
|
||
|
(export stdin stdout
|
||
|
open-file
|
||
|
close-port
|
||
|
coerce ; this is really syntax
|
||
|
contents-int8u set-contents-int8u!
|
||
|
contents-int32 set-contents-int32!
|
||
|
))
|
||
|
|
||
|
(define-interface pre-scheme-interface
|
||
|
(compound-interface
|
||
|
pre-scheme-primitives-interface
|
||
|
(export (case :syntax)
|
||
|
;; Data manipulation
|
||
|
;make-string string-length string-ref string-set!
|
||
|
unsigned-byte-ref unsigned-byte-set!
|
||
|
word-ref word-set!
|
||
|
|
||
|
<= > >=
|
||
|
abs
|
||
|
;char-alphabetic?
|
||
|
;ceiling
|
||
|
;char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>?
|
||
|
;char-downcase char-lower-case? char-numeric?
|
||
|
;char-upcase
|
||
|
;char-upper-case? char-whitespace? char<=?
|
||
|
;char>=? char>? close-input-port close-output-port
|
||
|
not
|
||
|
;vector-fill!
|
||
|
|
||
|
close-output-port close-input-port
|
||
|
open-input-file open-output-file
|
||
|
current-output-port
|
||
|
current-input-port
|
||
|
newline
|
||
|
call-with-input-file
|
||
|
|
||
|
)))
|