~ chicken-core (chicken-5) fd6335b6130bf0c87a742a37fdd8594ef67e57b6
commit fd6335b6130bf0c87a742a37fdd8594ef67e57b6 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Thu Aug 18 15:15:26 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Thu Aug 18 15:15:26 2011 +0200 work on types.db diff --git a/types.db.new b/types.db.new index e3a0f72e..4fcf4f42 100644 --- a/types.db.new +++ b/types.db.new @@ -459,20 +459,18 @@ ;(string-copy (procedure! string-copy (string) string)) - we use the more general version from srfi-13 -;;XXX continue ... - -(string->list (procedure! string->list (string) list)) -(list->string (procedure! list->string (list) string)) +(string->list (procedure! string->list (string) (list char))) +(list->string (procedure! list->string ((list char)) string)) (substring (procedure! substring (string fixnum #!optional fixnum) string)) ;(string-fill! (procedure! string-fill! (string char) string)) - s.a. (string (procedure! string (#!rest char) string)) (vector? (procedure? vector vector? (*) boolean)) -(make-vector (procedure! make-vector (fixnum #!optional *) vector)) +(make-vector (forall (a) (procedure! make-vector (fixnum #!optional a) (vector a)))) -(vector-ref (procedure! vector-ref (vector fixnum) *)) -(##sys#vector-ref (procedure! ##sys#vector-ref (vector fixnum) *)) +(vector-ref (forall (a) (procedure! vector-ref ((vector a) fixnum) a))) +(##sys#vector-ref (forall (a) (procedure! ##sys#vector-ref ((vector a) fixnum) a))) (vector-set! (procedure! vector-set! (vector fixnum *) undefined)) (vector (procedure vector (#!rest) vector)) (##sys#vector (procedure ##sys#vector (#!rest) vector)) @@ -482,67 +480,91 @@ (##sys#vector-length (procedure! ##sys#vector-length (vector) fixnum) ((vector) (##sys#size #(1)))) -(vector->list (procedure! vector->list (vector) list)) -(##sys#vector->list (procedure! ##sys#vector->list (vector) list)) -(list->vector (procedure! list->vector (list) vector)) -(##sys#list->vector (procedure! ##sys#list->vector (list) vector)) -(vector-fill! (procedure! vector-fill! (vector *) vector)) +(vector->list (forall (a) (procedure! vector->list ((vector a)) (list a)))) +(##sys#vector->list (forall (a) (procedure! ##sys#vector->list ((vector a)) (list a)))) +(list->vector (forall (a) (procedure! list->vector ((list a)) (vector a)))) +(##sys#list->vector (forall (a) (procedure! ##sys#list->vector ((list a)) (vector a)))) +(vector-fill! (procedure! vector-fill! (vector *) undefined)) (procedure? (procedure? procedure procedure? (*) boolean)) (vector-copy! (procedure! vector-copy! (vector vector #!optional fixnum) undefined)) -(map (procedure! map (procedure #!rest list) list)) +(map (procedure! map ((procedure (#!rest) *) #!rest list) list)) (for-each (procedure! for-each (procedure #!rest list) undefined)) (apply (procedure! apply (procedure #!rest) . *)) (##sys#apply (procedure! ##sys#apply (procedure #!rest) . *)) -(force (procedure force (*) *)) -(call-with-current-continuation (procedure! call-with-current-continuation (procedure) . *)) + +(force (procedure force (*) *) + ((not (struct promise)) #(1))) + +(call-with-current-continuation + (procedure! call-with-current-continuation ((procedure (procedure) . *)) . *)) + (input-port? (procedure input-port? (*) boolean)) (output-port? (procedure output-port? (*) boolean)) -(current-input-port (procedure! current-input-port (#!optional port) port)) -(current-output-port (procedure! current-output-port (#!optional port) port)) -(call-with-input-file (procedure call-with-input-file (string (procedure (port) . *) #!rest) . *)) -(call-with-output-file (procedure call-with-output-file (string (procedure (port) . *) #!rest) . *)) + +(current-input-port + (procedure! current-input-port (#!optional port) port) + ((port) (let ((#(tmp1) #(1))) + (let ((#(tmp2) (set! ##sys#standard-input #(tmp1)))) + #(tmp1)))) + (() ##sys#standard-input)) + +(current-output-port + (procedure! current-output-port (#!optional port) port)) + ((port) (let ((#(tmp1) #(1))) + (let ((#(tmp2) (set! ##sys#standard-output #(tmp1)))) + #(tmp1)))) + (() ##sys#standard-output)) + +(call-with-input-file + (procedure call-with-input-file (string (procedure (port) . *) #!rest) . *)) + +(call-with-output-file + (procedure call-with-output-file (string (procedure (port) . *) #!rest) . *)) + (open-input-file (procedure! open-input-file (string #!rest symbol) port)) (open-output-file (procedure! open-output-file (string #!rest symbol) port)) (close-input-port (procedure! close-input-port (port) undefined)) (close-output-port (procedure! close-output-port (port) undefined)) -(load (procedure load (string #!optional procedure) undefined)) +(load (procedure load (string #!optional (procedure (*) . *)) undefined)) (read (procedure! read (#!optional port) *)) (eof-object? (procedure? eof eof-object? (*) boolean)) ;;XXX if we had input/output port distinction, we could specialize these: -(read-char (procedure! read-char (#!optional port) *)) ; result (or eof char) ? +(read-char (procedure! read-char (#!optional port) *)) ;XXX result (or eof char) ? (peek-char (procedure! peek-char (#!optional port) *)) (write (procedure! write (* #!optional port) undefined)) (display (procedure! display (* #!optional port) undefined)) (write-char (procedure! write-char (char #!optional port) undefined)) (newline (procedure! newline (#!optional port) undefined)) -(with-input-from-file (procedure! with-input-from-file (string procedure #!rest symbol) . *)) -(with-output-to-file (procedure! with-output-to-file (string procedure #!rest symbol) . *)) -(dynamic-wind (procedure! dynamic-wind (procedure procedure procedure) . *)) + +(with-input-from-file + (procedure! with-input-from-file (string (procedure () . *) #!rest symbol) . *)) + +(with-output-to-file + (procedure! with-output-to-file (string (procedure () . *) #!rest symbol) . *)) + +(dynamic-wind + (procedure! dynamic-wind ((procedure () . *) (procedure () . *) (procedure () . *)) . *)) + (values (procedure values (#!rest values) . *)) (##sys#values (procedure ##sys#values (#!rest values) . *)) -(call-with-values (procedure! call-with-values ((procedure () . *) procedure) . *)) - -#;(call-with-values (procedure! call-with-values ((procedure () . *) procedure) . *) +(call-with-values (procedure! call-with-values ((procedure () . *) procedure) . *) (((procedure () *) *) (let ((#(tmp1) #(1))) (let ((#(tmp2) #(2))) (#(tmp2) (#(tmp1))))))) (##sys#call-with-values - (procedure! ##sys#call-with-values ((procedure () . *) procedure) . *)) - -#;(##sys#call-with-values (procedure! ##sys#call-with-values ((procedure () . *) procedure) . *) (((procedure () *) *) (let ((#(tmp1) #(1))) (let ((#(tmp2) #(2))) (#(tmp2) (#(tmp1))))))) -(eval (procedure eval (* #!optional *) *)) +(eval (procedure eval (* #!optional (struct environment)) *)) (char-ready? (procedure! char-ready? (#!optional port) boolean)) (imag-part (procedure! imag-part (number) number) @@ -563,9 +585,14 @@ (denominator (procedure! denominator (number) number) ((fixnum) (fixnum) (let ((#(tmp) #(1))) '1))) -(scheme-report-environment (procedure! scheme-report-environment (#!optional fixnum) *)) -(null-environment (procedure! null-environment (#!optional fixnum) *)) -(interaction-environment (procedure interaction-environment () *)) +(scheme-report-environment + (procedure! scheme-report-environment (#!optional fixnum) (struct environment))) + +(null-environment + (procedure! null-environment (#!optional fixnum) (struct environment))) + +(interaction-environment + (procedure interaction-environment () (struct environment))) (port-closed? (procedure! port-closed? (port) boolean) ((port) (##sys#slot #(1) '8))) @@ -578,8 +605,8 @@ ((float) (float) (##core#inline_allocate ("C_a_i_flonum_plus" 4) #(1) '1.0))) -(argc+argv (procedure argc+argv () fixnum list)) -(argv (procedure argv () list)) +(argc+argv (procedure argc+argv () fixnum (list string fixnum))) +(argv (procedure argv () (list string))) (arithmetic-shift (procedure! arithmetic-shift (number number) number)) (bit-set? (procedure! bit-set? (number fixnum) boolean) @@ -607,20 +634,19 @@ (blob? (procedure? blob blob? (*) boolean)) (blob=? (procedure! blob=? (blob blob) boolean)) -(breakpoint (procedure breakpoint (#!optional *) . *)) (build-platform (procedure build-platform () symbol)) -(call/cc (procedure! call/cc (procedure) . *)) +(call/cc (procedure! call/cc ((procedure (*) . *)) . *)) (case-sensitive (procedure case-sensitive (#!optional *) *)) -(char-name (procedure! char-name ((or char symbol) #!optional char) *)) +(char-name (procedure! char-name ((or char symbol) #!optional char) *)) ;XXX -> (or char symbol) ? (chicken-home (procedure chicken-home () string)) (chicken-version (procedure chicken-version (#!optional *) string)) -(command-line-arguments (procedure command-line-arguments (#!optional list) list)) +(command-line-arguments (procedure command-line-arguments (#!optional (list string)) (list string))) (condition-predicate (procedure! condition-predicate (symbol) (procedure ((struct condition)) boolean))) (condition-property-accessor (procedure! condition-property-accessor (symbol symbol #!optional *) (procedure ((struct condition)) *))) (condition? (procedure? (struct condition) condition? (*) boolean)) -(condition->list (procedure! condition->list ((struct condition)) list)) +(condition->list (procedure! condition->list ((struct condition)) (list (pair symbol *)))) (continuation-capture (procedure! continuation-capture ((procedure ((struct continuation)) . *)) *)) (continuation-graft (procedure! continuation-graft ((struct continuation) (procedure () . *)) *)) (continuation-return (procedure! continuation-return (procedure #!rest) . *)) ;XXX make return type more specific? @@ -630,34 +656,52 @@ (copy-read-table (procedure! copy-read-table ((struct read-table)) (struct read-table))) (cpu-time (procedure cpu-time () fixnum fixnum)) -(current-error-port (procedure! current-error-port (#!optional port) port) - ((port) (set! ##sys#standard-error #(1))) - (() ##sys#standard-error)) +(current-error-port + (procedure! current-error-port (#!optional port) port) + ((port) (let ((#(tmp1) #(1))) + (let ((#(tmp2) (set! ##sys#standard-error #(tmp1)))) + #(tmp1)))) + (() ##sys#standard-error)) (current-exception-handler - (procedure! current-exception-handler (#!optional procedure) procedure) - ((procedure) (set! ##sys#current-exception-handler #(1))) + (procedure! current-exception-handler (#!optional (procedure (*) noreturn)) procedure) + ((procedure) (let ((#(tmp1) #(1))) + (let ((#(tmp2) (set! ##sys#current-exception-handler #(tmp1)))) + #(tmp1)))) (() ##sys#current-exception-handler)) (current-gc-milliseconds (procedure current-gc-milliseconds () fixnum)) (current-milliseconds (procedure current-milliseconds () float)) -(current-read-table (procedure current-read-table () (struct read-table))) + +(current-read-table + (procedure current-read-table (#!optional (struct read-table)) (struct read-table))) + (current-seconds (procedure current-seconds () float)) (define-reader-ctor (procedure! define-reader-ctor (symbol procedure) undefined)) (delete-file (procedure! delete-file (string) string)) (enable-warnings (procedure enable-warnings (#!optional *) *)) -(equal=? (procedure equal=? (* *) boolean)) -(er-macro-transformer (procedure! er-macro-transformer ((procedure (* * *) *)) (struct transformer))) + +(equal=? (procedure equal=? (* *) boolean) + (((or fixnum symbol char eof null undefined) *) (eq? #(1) #(2))) + ((* (or fixnum symbol char eof null undefined) (eq? #(1) #(2)))) + (((or float number) (or float number)) (= #(1) #(2)))) + +(er-macro-transformer + (procedure! + er-macro-transformer + ((procedure (* (procedure (*) *) (procedure (* *) *)) *)) + (struct transformer))) + (errno (procedure errno () fixnum)) -(error (procedure error (#!rest) noreturn)) -(##sys#error (procedure ##sys#error (#!rest) noreturn)) -(##sys#signal-hook (procedure ##sys#signal-hook (#!rest) noreturn)) +(error (procedure error (* #!rest) noreturn)) +(##sys#error (procedure ##sys#error (* #!rest) noreturn)) +(##sys#signal-hook (procedure ##sys#signal-hook (* #!rest) noreturn)) (exit (procedure exit (#!optional fixnum) noreturn)) -(exit-handler (procedure! exit-handler (#!optional procedure) procedure)) -(expand (procedure expand (* #!optional *) *)) +(exit-handler (procedure! exit-handler (#!optional (procedure (fixnum) . *)) procedure)) +(expand (procedure expand (* #!optional list) *)) (extension-information (procedure extension-information (symbol) *)) (feature? (procedure feature? (symbol) boolean)) -(features (procedure features () list)) +(features (procedure features () (list symbol))) (file-exists? (procedure! file-exists? (string) *)) (directory-exists? (procedure! directory-exists? (string) *)) (fixnum-bits fixnum) @@ -679,8 +723,8 @@ (flush-output (procedure! flush-output (#!optional port) undefined)) -(foldl (procedure! foldl ((procedure (* *) *) * list) *)) -(foldr (procedure! foldr ((procedure (* *) *) * list) *)) +(foldl (forall (a b) (procedure! foldl ((procedure (a b) a) a (list b)) a))) +(foldr (forall (a b) (procedure! foldr ((procedure (a b) b) b (list a)) b))) (force-finalizers (procedure force-finalizers () undefined)) @@ -794,25 +838,38 @@ (fxshr (procedure fxshr (fixnum fixnum) fixnum)) (fxxor (procedure fxxor (fixnum fixnum) fixnum)) (gc (procedure gc (#!optional *) fixnum)) -(gensym (procedure gensym (#!optional *) symbol)) +(gensym (procedure gensym (#!optional (or string symbol)) symbol)) (get (procedure! get (symbol symbol #!optional *) *) ((symbol symbol *) (##core#inline "C_i_getprop" #(1) #(2) #(3)))) -(get-call-chain (procedure! get-call-chain (#!optional fixnum *) list)) +(get-call-chain (procedure! get-call-chain (#!optional fixnum (struct thread)) (list vector))) (get-condition-property (procedure! get-condition-property ((struct condition) symbol symbol #!optional *) *)) (get-environment-variable (procedure! get-environment-variable (string) *)) (get-keyword (procedure! get-keyword (symbol list #!optional *) *)) (get-output-string (procedure! get-output-string (port) string)) (get-properties (procedure! get-properties (symbol list) symbol * list)) -(getter-with-setter (procedure! getter-with-setter (procedure procedure #!optional string) procedure)) -(implicit-exit-handler (procedure! implicit-exit-handler (#!optional procedure) procedure)) -(ir-macro-transformer (procedure ir-macro-transformer ((procedure (* * *) *)) (struct transformer))) + +(getter-with-setter + (procedure! + getter-with-setter + ((procedure (#!rest) *) (procedure (* #!rest) . *) #!optional string) + procedure)) + +(implicit-exit-handler + (procedure! implicit-exit-handler (#!optional (procedure () . *)) procedure)) + +(ir-macro-transformer + (procedure + ir-macro-transformer + ((procedure (procedure (* (propcedure * *) *)) *)) + (struct transformer))) + (keyword->string (procedure! keyword->string (symbol) string)) -(keyword-style (procedure keyword-style (#!optional *) *)) +(keyword-style (procedure keyword-style (#!optional symbol) symbol)) (keyword? (procedure keyword? (*) boolean)) (load-library (procedure! load-library (symbol #!optional string) undefined)) -(load-relative (procedure! load-relative (string #!optional procedure) undefined)) +(load-relative (procedure! load-relative (string #!optional (procedure (*) . *)) undefined)) (load-verbose (procedure load-verbose (#!optional *) *)) (machine-byte-order (procedure machine-byte-order () symbol)) (machine-type (procedure machine-type () symbol)) @@ -824,7 +881,7 @@ (make-parameter (procedure! make-parameter (* #!optional procedure) procedure)) (make-property-condition (procedure! make-property-condition (symbol #!rest *) (struct condition))) (maximum-flonum float) -(memory-statistics (procedure memory-statistics () vector)) +(memory-statistics (procedure memory-statistics () (vector fixnum))) (minimum-flonum float) (most-negative-fixnum fixnum) (most-positive-fixnum fixnum) @@ -856,23 +913,25 @@ (register-feature! (procedure! register-feature! (#!rest symbol) undefined)) (remprop! (procedure! remprop! (symbol symbol) undefined)) (rename-file (procedure! rename-file (string string) string)) -(repl (procedure! repl (#!optional (procedure (*) *)) undefined)) -(repl-prompt (procedure! repl-prompt (#!optional procedure) procedure)) +(repl (procedure! repl (#!optional (procedure (*) . *)) undefined)) +(repl-prompt (procedure! repl-prompt (#!optional (procedure () string)) procedure)) (repository-path (procedure repository-path (#!optional *) *)) -(require (procedure require (#!rest *) undefined)) -(reset (procedure reset () undefined)) -(reset-handler (procedure! reset-handler (#!optional procedure) procedure)) +(require (procedure require (#!rest (or string symbol)) undefined)) +(reset (procedure reset () noreturn)) +(reset-handler (procedure! reset-handler (#!optional (procedure () . *)) procedure)) (return-to-host (procedure return-to-host () . *)) -(reverse-list->string (procedure! reverse-list->string (list) string)) +(reverse-list->string (procedure! reverse-list->string ((list char)) string)) (set-finalizer! (procedure! set-finalizer! (* (procedure (*) . *)) *)) (set-gc-report! (procedure set-gc-report! (*) undefined)) -(set-parameterized-read-syntax! (procedure! set-parameterized-read-syntax! (char procedure) undefined)) + +(set-parameterized-read-syntax! + (procedure! set-parameterized-read-syntax! (char (procedure (port fixnum) . *)) undefined)) (set-port-name! (procedure! set-port-name! (port string) undefined) ((port string) (##sys#setslot #(1) '3 #(2)))) -(set-read-syntax! (procedure! set-read-syntax! (char procedure) undefined)) -(set-sharp-read-syntax! (procedure! set-sharp-read-syntax! (char procedure) undefined)) +(set-read-syntax! (procedure! set-read-syntax! (char (procedure (port) . *)) undefined)) +(set-sharp-read-syntax! (procedure! set-sharp-read-syntax! (char (procedure (port) . *)) undefined)) (setter (procedure! setter (procedure) procedure)) (signal (procedure signal (*) . *)) (signum (procedure! signum (number) number)) @@ -887,19 +946,22 @@ ((float) (float) (##core#inline_allocate ("C_a_i_flonum_difference" 4) #(1) '1.0))) -(subvector (procedure! subvector (vector fixnum #!optional fixnum) vector)) +(subvector (forall (a) (procedure! subvector ((vector a) fixnum #!optional fixnum) (vector a)))) (symbol-escape (procedure symbol-escape (#!optional *) *)) (symbol-plist (procedure! symbol-plist (symbol) list) ((symbol) (##sys#slot #(1) '2))) -(syntax-error (procedure syntax-error (#!rest) noreturn)) +(syntax-error (procedure syntax-error (* #!rest) noreturn)) (system (procedure! system (string) fixnum)) (unregister-feature! (procedure! unregister-feature! (#!rest symbol) undefined)) -(vector-resize (procedure! vector-resize (vector fixnum) vector)) +(vector-resize (forall (a) (procedure! vector-resize ((vector a) fixnum) (vector a)))) (void (procedure void (#!rest) undefined)) -(warning (procedure warning (#!rest) . *)) -(with-exception-handler (procedure! with-exception-handler (procedure procedure) . *)) +(warning (procedure warning (* #!rest) undefined)) + +(with-exception-handler + (procedure! with-exception-handler ((procedure (*) . *) (procedure () . *)) . *)) + ;; chicken (internal) @@ -957,6 +1019,8 @@ ((procedure *) (let ((#(tmp) #(1))) '#t))) +;;XXX continue... + ;; data-structures (->string (procedure ->string (*) string)Trap