diff --git a/src/ikarus.boot b/src/ikarus.boot index 5fb0f36..aa54ff9 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.control.ss b/src/ikarus.control.ss index f1e92c7..b03813d 100644 --- a/src/ikarus.control.ss +++ b/src/ikarus.control.ss @@ -1,10 +1,11 @@ + (library (ikarus control) - (export call/cf call/cc dynamic-wind) + (export call/cf call/cc dynamic-wind exit) (import (only (scheme) $fp-at-base $current-frame $frame->continuation $seal-frame-and-call) - (except (ikarus) call/cf call/cc dynamic-wind)) + (except (ikarus) call/cf call/cc dynamic-wind exit)) (define primitive-call/cf (lambda (f) @@ -97,4 +98,10 @@ [(v1 v2 . v*) (set! winders (cdr winders)) (out) - (apply values v1 v2 v*)]))))) + (apply values v1 v2 v*)])))) + + (define exit + (case-lambda + [() (exit 0)] + [(status) (foreign-call "exit" status)])) + ) diff --git a/src/libcore.ss b/src/ikarus.core.ss similarity index 100% rename from src/libcore.ss rename to src/ikarus.core.ss diff --git a/src/ikarus.multiple-values.ss b/src/ikarus.multiple-values.ss new file mode 100644 index 0000000..bb78478 --- /dev/null +++ b/src/ikarus.multiple-values.ss @@ -0,0 +1,9 @@ + +(library (ikarus multiple-values) + (export call-with-values values) + (import (except (scheme) call-with-values values)) + + (define call-with-values + ($make-call-with-values-procedure)) + (define values + ($make-values-procedure))) diff --git a/src/makefile.ss b/src/makefile.ss index 19a53f9..7399fef 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -22,13 +22,15 @@ ;;; Error: Error: Error: Error: Error: Error: Error: ...). ;;; '("ikarus.handlers.ss" + "ikarus.multiple-values.ss" "ikarus.control.ss" "ikarus.collect.ss" "ikarus.records.ss" "ikarus.cxr.ss" "ikarus.numerics.ss" "ikarus.guardians.ss" - "libcore.ss" + + "ikarus.core.ss" "libchezio.ss" "libhash.ss" "libwriter.ss"