pad swap load
; make-primitive load
-' read make-primitive read
+:noname ( args -- obj )
+ 0 ensure-arg-count
+ read
+; make-primitive read
defer display
:noname ( args -- none )
2dup 1 ensure-arg-count
- car print cr
+ car print
none
; make-primitive write
2dup
car display
cdr
- nil-type istype? if 2drop exit then
+ nil? if 2drop exit then
pair-type istype? if space recurse exit then
." . " display
;
: displaychar ( charobj -- )
- drop emit
+ drop emit ;
+
+: (displaystring) ( charlist -- )
+ nil? if
+ 2drop
+ else
+ 2dup car displaychar
+ cdr recurse
+ then
+;
+
+: displaystring ( stringobj -- )
+ drop pair-type (displaystring)
;
:noname ( obj -- )
pair-type istype? if ." (" displaypair ." )" exit then
character-type istype? if displaychar exit then
- string-type istype? if (printstring) exit then
+ string-type istype? if displaystring exit then
print
; is display
2dup 1 ensure-arg-count
car string-type ensure-arg-type
- (printstring) cr
+ displaystring
none
; make-primitive display-string
2dup 1 ensure-arg-count
car character-type ensure-arg-type
- displaychar cr
+ displaychar
none
; make-primitive display-character
2dup 1 ensure-arg-count
car
- display cr
+ display
none
; make-primitive display
none
; make-primitive newline
+
+( ==== Evaluation ==== )
+
+:noname ( args -- result )
+ 2dup car 2swap cdr
+
+ nil? false = if car then ( proc argvals )
+
+ apply
+; make-primitive apply
+
+( ==== Error System ==== )
+
+:noname ( args -- result )
+ bold fg red
+
+ nil? if
+ ." Error."
+ else
+ ." Error: " car display
+ then
+
+ reset-term
+
+ recoverable-exception throw
+; make-primitive error