~ chicken-core (master) /types.db


   1;;;; types.db - Type-information for core library functions -*- Scheme -*-
   2;
   3; Copyright (c) 2009-2022, The CHICKEN Team
   4; All rights reserved.
   5;
   6; Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
   7; conditions are met:
   8;
   9;   Redistributions of source code must retain the above copyright notice, this list of conditions and the following
  10;     disclaimer.
  11;   Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
  12;     disclaimer in the documentation and/or other materials provided with the distribution.
  13;   Neither the name of the author nor the names of its contributors may be used to endorse or promote
  14;     products derived from this software without specific prior written permission.
  15;
  16; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
  17; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  18; AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
  19; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  20; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  21; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND ON ANY
  22; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  23; OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  24; POSSIBILITY OF SUCH DAMAGE.
  25
  26
  27;;; Notes:
  28;
  29; - numeric types are disjoint, "fixnum" or "float" will not match "number" in the
  30;   rewrite rules
  31; - for a description of the type-specifier syntax, see "scrutinizer.scm" (top of file)
  32; - in templates, "#(INTEGER)" refers to the INTEGERth argument (starting from 1)
  33; - in templates, "#(INTEGER ...)" refers to the INTEGERth argument (starting from 1) and
  34;   all remaining arguments
  35; - in templates "#(SYMBOL)" binds X to a temporary gensym'd variable, further references
  36;   to "#(SYMBOL)" allow backreferences to this generated identifier
  37; - "#(procedure PROPERTY ...)" may be used in place of "procedure", properties are:
  38;     #:clean - procedure does not modify state that might be used locally
  39;     #:enforce - when procedure returns, arguments are of correct type
  40;     #:foldable - procedure may be constant-folded
  41;     #:predicate TYPE - procedure is a predicate on TYPE (implies #:foldable)
  42;     #:pure - procedure has no side effects
  43; - "#:clean" means: will not invoke procedures that modify local variables and
  44;   will not modify list or vector data held locally (note that I/O may invoke
  45;   port handlers)
  46; - "#:pure" means: will not have side-effects; this is a bit of a lie,
  47;   since arity-mismatch will for example always have a side effect.
  48; - "#:enforce" means: after return from this procedure, the argument is of
  49;   the correct type (it would have signalled an error otherwise)
  50; - "#:foldable" means: when applied to constant arguments, direct calls
  51;   to this procedure may be evaluated at compile time.
  52
  53
  54;; scheme
  55
  56(scheme#not (#(procedure #:pure #:foldable) scheme#not (*) boolean)
  57	    ((true) (false) (let ((#(tmp) #(1))) '#f))
  58	    ((false) (true) (let ((#(tmp) #(1))) '#t))
  59	    (((not boolean)) (false) (let ((#(tmp) #(1))) '#f)))
  60
  61(scheme#boolean? (#(procedure #:pure #:predicate boolean) scheme#boolean? (*) boolean))
  62
  63(scheme#eq? (#(procedure #:pure #:foldable) scheme#eq? (* *) boolean))
  64
  65(scheme#eqv? (#(procedure #:pure #:foldable) scheme#eqv? (* *) boolean)
  66	     (((or immediate symbol keyword) *) (scheme#eq? #(1) #(2)))
  67	     ((* (or immediate symbol keyword)) (scheme#eq? #(1) #(2)))
  68	     ((* *) (##core#inline "C_i_eqvp" #(1) #(2))))
  69
  70(scheme#equal? (#(procedure #:pure #:foldable) scheme#equal? (* *) boolean)
  71	       (((or immediate symbol keyword) *) (scheme#eq? #(1) #(2)))
  72	       ((* (or immediate symbol keyword)) (scheme#eq? #(1) #(2)))
  73	       ((number number) (##core#inline "C_i_eqvp" #(1) #(2))))
  74
  75(scheme#pair? (#(procedure #:pure #:predicate pair) scheme#pair? (*) boolean))
  76
  77(scheme#cons (forall (a b) (#(procedure #:pure) scheme#cons (a b) (pair a b))))
  78
  79(##sys#cons (forall (a b) (#(procedure #:pure) ##sys#cons (a b) (pair a b))))
  80
  81(scheme#car (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#car ((pair a *)) a)) ((pair) (##core#inline "C_u_i_car" #(1))))
  82(scheme#cdr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdr ((pair * a)) a)) ((pair) (##core#inline "C_u_i_cdr" #(1))))
  83
  84(scheme#caar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caar ((pair (pair a *) *)) a))
  85	     (((pair (pair * *) *)) (##core#inline "C_u_i_car" (##core#inline "C_u_i_car" #(1)))))
  86(scheme#cadr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cadr ((pair * (pair a *))) a))
  87	     (((pair * (pair * *))) (##core#inline "C_u_i_car" (##core#inline "C_u_i_cdr" #(1)))))
  88(scheme#cdar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdar ((pair (pair * a) *)) a))
  89	     (((pair (pair * *) *)) (##core#inline "C_u_i_cdr" (##core#inline "C_u_i_car" #(1)))))
  90(scheme#cddr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cddr ((pair * (pair * a))) a))
  91	     (((pair * (pair * *))) (##core#inline "C_u_i_cdr" (##core#inline "C_u_i_cdr" #(1)))))
  92
  93(scheme#caaar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caaar ((pair (pair (pair a *) *) *)) a))
  94	      (((pair (pair (pair * *) *) *))
  95	       (##core#inline "C_u_i_car"
  96			      (##core#inline "C_u_i_car" (##core#inline "C_u_i_car" #(1))))))
  97
  98(scheme#caadr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caadr ((pair * (pair (pair a *) *))) a))
  99	      (((pair * (pair (pair * *) *)))
 100	       (##core#inline "C_u_i_car"
 101			      (##core#inline "C_u_i_car" (##core#inline "C_u_i_cdr" #(1))))))
 102
 103(scheme#cadar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cadar ((pair (pair * (pair a *)) *)) a))
 104	      (((pair (pair * (pair * *)) *))
 105	       (##core#inline "C_u_i_car"
 106			      (##core#inline "C_u_i_cdr" (##core#inline "C_u_i_car" #(1))))))
 107
 108(scheme#caddr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caddr ((pair * (pair * (pair a *)))) a))
 109	      (((pair * (pair * (pair * *))))
 110	       (##core#inline "C_u_i_car"
 111			      (##core#inline "C_u_i_cdr" (##core#inline "C_u_i_cdr" #(1))))))
 112
 113(scheme#cdaar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdaar ((pair (pair (pair * a) *) *)) a))
 114	      (((pair (pair (pair * *) *) *))
 115	       (##core#inline "C_u_i_cdr"
 116			      (##core#inline "C_u_i_car" (##core#inline "C_u_i_car" #(1))))))
 117
 118(scheme#cdadr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdadr ((pair * (pair (pair * a) *))) a))
 119	      (((pair * (pair (pair * *) *)))
 120	       (##core#inline "C_u_i_cdr"
 121			      (##core#inline "C_u_i_car" (##core#inline "C_u_i_cdr" #(1))))))
 122
 123(scheme#cddar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cddar ((pair (pair * (pair * a)) *)) a))
 124	      (((pair (pair * (pair * *)) *))
 125	       (##core#inline "C_u_i_cdr"
 126			      (##core#inline "C_u_i_cdr" (##core#inline "C_u_i_car" #(1))))))
 127
 128(scheme#cdddr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdddr ((pair * (pair * (pair * a)))) a))
 129	      (((pair * (pair * (pair * *))))
 130	       (##core#inline "C_u_i_cdr"
 131			      (##core#inline "C_u_i_cdr" (##core#inline "C_u_i_cdr" #(1))))))
 132
 133(scheme#caaaar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caaaar ((pair (pair (pair (pair a *) *) *) *)) a)))
 134(scheme#caaadr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caaadr ((pair * (pair (pair (pair a *) *) *))) a)))
 135(scheme#caadar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caadar ((pair (pair * (pair (pair a *) *)) *)) a)))
 136(scheme#caaddr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caaddr ((pair * (pair * (pair (pair a *) *)))) a)))
 137(scheme#cadaar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cadaar ((pair (pair (pair * (pair a *)) *) *)) a)))
 138(scheme#cadadr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cadadr ((pair * (pair (pair * (pair a *)) *))) a)))
 139(scheme#caddar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#caddar ((pair (pair * (pair * (pair a *))) *)) a)))
 140(scheme#cadddr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cadddr ((pair * (pair * (pair * (pair a *))))) a)))
 141(scheme#cdaaar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdaaar ((pair (pair (pair (pair * a) *) *) *)) a)))
 142(scheme#cdaadr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdaadr ((pair * (pair (pair (pair * a) *) *))) a)))
 143(scheme#cdadar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdadar ((pair (pair * (pair (pair * a) *)) *)) a)))
 144(scheme#cdaddr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdaddr ((pair * (pair * (pair (pair * a) *)))) a)))
 145(scheme#cddaar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cddaar ((pair (pair (pair * (pair * a)) *) *)) a)))
 146(scheme#cddadr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cddadr ((pair * (pair (pair * (pair * a)) *))) a)))
 147(scheme#cdddar (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cdddar ((pair (pair * (pair * (pair * a))) *)) a)))
 148(scheme#cddddr (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#cddddr ((pair * (pair * (pair * (pair * a))))) a)))
 149
 150(scheme#set-car! (#(procedure #:enforce) scheme#set-car! (pair *) undefined)
 151		 ((pair (or fixnum char boolean eof bwp null undefined)) (##sys#setislot #(1) '0 #(2)))
 152		 ((pair *) (##sys#setslot #(1) '0 #(2))))
 153
 154(scheme#set-cdr! (#(procedure #:enforce) scheme#set-cdr! (pair *) undefined)
 155		 ((pair (or fixnum char boolean eof bwp null undefined)) (##sys#setislot #(1) '1 #(2)))
 156		 ((pair *) (##sys#setslot #(1) '1 #(2))))
 157
 158(scheme#null? (#(procedure #:pure #:predicate null) scheme#null? (*) boolean))
 159(scheme#list? (#(procedure #:pure #:predicate list) scheme#list? (*) boolean))
 160
 161;; special cased (see scrutinizer.scm)
 162(scheme#list (#(procedure #:pure) scheme#list (#!rest) list))
 163(##sys#list (#(procedure #:pure) ##sys#list (#!rest) list))
 164
 165(scheme#length (#(procedure #:clean #:enforce #:foldable) scheme#length (list) fixnum) ; may loop
 166	((null) (let ((#(tmp) #(1))) '0))
 167	((list) (##core#inline "C_u_i_length" #(1))))
 168
 169(##sys#length (#(procedure #:clean #:enforce #:foldable) ##sys#length (list) fixnum)
 170	      ((null) (let ((#(tmp) #(1))) '0))
 171	      ((list) (##core#inline "C_u_i_length" #(1))))
 172
 173;; these are special cased (see scrutinizer.scm)
 174(scheme#list-tail (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#list-tail ((list-of a) fixnum) (list-of a))))
 175(scheme#list-ref (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#list-ref ((list-of a) fixnum) a)))
 176
 177;; special cased (see scrutinizer.scm)
 178(scheme#append (#(procedure #:clean) scheme#append (#!rest *) *)) ; sic
 179(##sys#append (#(procedure #:clean) ##sys#append (#!rest *) *))
 180
 181;; special cased (see scrutinizer.scm)
 182(scheme#reverse (forall (a) (#(procedure #:clean #:enforce) scheme#reverse ((list-of a)) (list-of a)))
 183	 ((null) (null) (let ((#(tmp) #(1))) '())))
 184
 185(scheme#memq (forall (a b) (#(procedure #:clean #:foldable) scheme#memq (a (list-of b))
 186			    (or false (pair a (list-of b)))))
 187	     ((* null) (let ((#(tmp) #(1))) '#f))
 188	     ((* list) (##core#inline "C_u_i_memq" #(1) #(2))))
 189
 190(scheme#memv (forall (a b) (#(procedure #:clean #:foldable) scheme#memv (a (list-of b))
 191			    (or false (pair a (list-of b)))))
 192	     ((* null) (let ((#(tmp) #(1))) '#f))
 193	     (((or symbol keyword procedure immediate) list)
 194	      (##core#inline "C_u_i_memq" #(1) #(2))))
 195
 196(scheme#member (forall (a b) (#(procedure #:clean #:foldable) scheme#member (a (list-of b)
 197                                #!optional (procedure (a b) *))
 198			      (or false (pair a (list-of b)))))
 199	       ((* null) (let ((#(tmp) #(1))) '#f))
 200	       (((or symbol keyword procedure immediate) list)
 201		(##core#inline "C_u_i_memq" #(1) #(2)))
 202	       ((* (list-of (or symbol keyword procedure immediate)))
 203		(##core#inline "C_u_i_memq" #(1) #(2))))
 204
 205(scheme#assq (forall (a b c) (#(procedure #:clean #:foldable) scheme#assq
 206			      (a (list-of (pair b c)))
 207			      (or false (pair a c))))
 208	     ((* null) (let ((#(tmp) #(1))) '#f))
 209	     ((* (list-of pair)) (##core#inline "C_u_i_assq" #(1) #(2))))
 210
 211(scheme#assv (forall (a b c) (#(procedure #:clean #:foldable) scheme#assv
 212			      (a (list-of (pair b c)))
 213			      (or false (pair a c))))
 214	     ((* null) (let ((#(tmp) #(1))) '#f))
 215	     (((or symbol keyword immediate procedure) (list-of pair))
 216	      (##core#inline "C_u_i_assq" #(1) #(2)))
 217	     ((* (list-of (pair (or symbol keyword procedure immediate) *)))
 218	      (##core#inline "C_u_i_assq" #(1) #(2))))
 219
 220(scheme#assoc (forall (a b c) (#(procedure #:clean #:foldable) scheme#assoc
 221			       (a (list-of (pair b c)) #!optional (procedure (a b) *))
 222			       (or false (pair a c))))
 223	      ((* null) (let ((#(tmp) #(1))) '#f))
 224	      (((or symbol keyword procedure immediate) (list-of pair))
 225	       (##core#inline "C_u_i_assq" #(1) #(2)))
 226	      ((* (list-of (pair (or symbol keyword procedure immediate) *)))
 227	       (##core#inline "C_u_i_assq" #(1) #(2))))
 228
 229(scheme#symbol? (#(procedure #:pure #:predicate symbol) scheme#symbol? (*) boolean))
 230
 231(scheme#symbol->string (#(procedure #:clean #:enforce) scheme#symbol->string (symbol) string))
 232(scheme#string->symbol (#(procedure #:clean #:enforce #:foldable) scheme#string->symbol (string) symbol))
 233
 234(scheme#number? (#(procedure #:pure #:predicate number) scheme#number? (*) boolean))
 235
 236;;XXX predicate?
 237(scheme#integer? (#(procedure #:pure #:foldable) scheme#integer? (*) boolean)
 238		 ((integer) (let ((#(tmp) #(1))) '#t))
 239		 ((float) (##core#inline "C_u_i_fpintegerp" #(1)))
 240		 ((*) (##core#inline "C_i_integerp" #(1))))
 241
 242(scheme#real? (#(procedure #:pure #:foldable) scheme#real? (*) boolean)
 243	      (((or fixnum float bignum ratnum)) (let ((#(tmp) #(1))) '#t))
 244	      ((cplxnum) (let ((#(tmp) #(1))) '#f))
 245	      ((*) (##core#inline "C_i_realp" #(1))))
 246(scheme#complex? (#(procedure #:pure #:predicate number) scheme#complex? (*) boolean))
 247(scheme#exact? (#(procedure #:clean #:enforce #:foldable) scheme#exact? (number) boolean)
 248	       (((or integer ratnum)) (let ((#(tmp) #(1))) '#t))
 249	       ((float) (let ((#(tmp) #(1))) '#f)))
 250(scheme#inexact? (#(procedure #:clean #:enforce #:foldable) scheme#inexact? (number) boolean)
 251		 (((or integer ratnum)) (let ((#(tmp) #(1))) '#f))
 252		 ((float) (let ((#(tmp) #(1))) '#t)))
 253
 254;;XXX predicate?
 255(scheme#rational? (#(procedure #:pure #:foldable) scheme#rational? (*) boolean)
 256		  (((or fixnum bignum ratnum)) (let ((#(tmp) #(1))) '#t))
 257		  ((cplxnum) (let ((#(tmp) #(1))) '#f))
 258		  ((float) (##core#inline "C_u_i_flonum_finitep" #(1)))
 259		  ((*) (##core#inline "C_i_rationalp" #(1))))
 260
 261(scheme#zero? (#(procedure #:clean #:enforce #:foldable) scheme#zero? (number) boolean)
 262	      ((integer) (scheme#eq? #(1) '0))
 263	      (((or cplxnum ratnum)) (let ((#(tmp) #(1))) '#f))
 264	      ((number) (##core#inline "C_u_i_zerop2" #(1)))
 265	      ((*) (##core#inline "C_i_zerop" #(1))))
 266
 267(scheme#odd? (#(procedure #:clean #:enforce #:foldable) scheme#odd? (number) boolean)
 268	     ((fixnum) (##core#inline "C_i_fixnumoddp" #(1)))
 269	     ((integer) (##core#inline "C_i_integer_oddp" #(1)))
 270	     ((*) (##core#inline "C_i_oddp" #(1))))
 271(scheme#even? (#(procedure #:clean #:enforce #:foldable) scheme#even? (number) boolean)
 272	      ((fixnum) (##core#inline "C_i_fixnumevenp" #(1)))
 273	      ((integer) (##core#inline "C_i_integer_evenp" #(1)))
 274	      ((*) (##core#inline "C_i_evenp" #(1))))
 275
 276(scheme#positive? (#(procedure #:clean #:enforce #:foldable) scheme#positive? (number) boolean)
 277		  ((fixnum) (##core#inline "C_i_fixnum_positivep" #(1)))
 278		  ((integer) (##core#inline "C_i_integer_positivep" #(1)))
 279		  ((*) (##core#inline "C_i_positivep" #(1))))
 280
 281(scheme#negative? (#(procedure #:clean #:enforce #:foldable) scheme#negative? (number) boolean)
 282		  ((fixnum) (##core#inline "C_i_fixnum_negativep" #(1)))
 283		  ((integer) (##core#inline "C_i_integer_negativep" #(1)))
 284		  ((*) (##core#inline "C_i_negativep" #(1))))
 285
 286(scheme#exact-integer? (#(procedure #:pure #:foldable) scheme#exact-integer? (*) boolean)
 287			     ((integer) (let ((#(tmp) #(1))) '#t))
 288			     (((not integer)) (let ((#(tmp) #(1))) '#f))
 289			     ((*) (##core#inline "C_i_exact_integerp" #(1))))
 290
 291(scheme#max (#(procedure #:clean #:enforce #:foldable) scheme#max (#!rest number) number)
 292	    ((fixnum fixnum) (fixnum) (chicken.fixnum#fxmax #(1) #(2)))
 293	    ((float float) (float) (##core#inline "C_i_flonum_max" #(1) #(2))))
 294
 295(scheme#min (#(procedure #:clean #:enforce #:foldable) scheme#min (#!rest number) number)
 296	    ((fixnum fixnum) (fixnum) (chicken.fixnum#fxmin #(1) #(2)))
 297	    ((float float) (float) (##core#inline "C_i_flonum_min" #(1) #(2))))
 298
 299(scheme#+ (#(procedure #:clean #:enforce #:foldable) scheme#+ (#!rest number) number)
 300	  (() (fixnum) '0)
 301	  ((fixnum) (fixnum) #(1))
 302	  ((float) (float) #(1))
 303	  ((integer) (integer) #(1))
 304	  ((ratnum) (ratnum) #(1))
 305	  ((cplxnum) (cplxnum) #(1))
 306	  ((number) (number) #(1))
 307	  ((float fixnum) (float)
 308	   (##core#inline_allocate
 309	    ("C_a_i_flonum_plus" 4)
 310	    #(1)
 311	    (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))))
 312	  ((fixnum float)
 313	   (float)
 314	   (##core#inline_allocate
 315	    ("C_a_i_flonum_plus" 4)
 316	    (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1))
 317	    #(2)))
 318	  ((float float) (float)
 319	   (##core#inline_allocate ("C_a_i_flonum_plus" 4) #(1) #(2)))
 320	  ((fixnum fixnum) (integer)
 321	   (##core#inline_allocate ("C_a_i_fixnum_plus" 5) #(1) #(2)))
 322	  ((integer integer) (integer)
 323	   (##core#inline_allocate ("C_s_a_u_i_integer_plus" 5) #(1) #(2))))
 324
 325(scheme#- (#(procedure #:clean #:enforce #:foldable) scheme#- (number #!rest number) number)
 326	  ((fixnum) (integer) (##core#inline_allocate ("C_a_i_fixnum_negate" 5) #(1)))
 327	  ((integer) (integer)
 328	   (##core#inline_allocate ("C_s_a_u_i_integer_negate" 5) #(1)))
 329	  ((float) (float) (##core#inline_allocate ("C_a_i_flonum_negate" 4) #(1)))
 330	  ((*) (*) (##core#inline_allocate ("C_s_a_i_negate" 29) #(1)))
 331	  ((float fixnum) (float)
 332	   (##core#inline_allocate
 333	    ("C_a_i_flonum_difference" 4)
 334	    #(1)
 335	    (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))))
 336	  ((fixnum float) (float)
 337	   (##core#inline_allocate
 338	    ("C_a_i_flonum_difference" 4)
 339	    (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1))
 340	    #(2)))
 341	  ((float float) (float)
 342	   (##core#inline_allocate ("C_a_i_flonum_difference" 4) #(1) #(2)))
 343	  ((fixnum fixnum) (integer)
 344	   (##core#inline_allocate ("C_a_i_fixnum_difference" 5) #(1) #(2)))
 345	  ((integer integer) (integer)
 346	   (##core#inline_allocate ("C_s_a_u_i_integer_minus" 5) #(1) #(2))))
 347
 348(scheme#* (#(procedure #:clean #:enforce #:foldable) scheme#* (#!rest number) number)
 349	  (() (fixnum) '1)
 350	  ((fixnum) (fixnum) #(1))
 351	  ((float) (float) #(1))
 352	  ((bignum) (bignum) #(1))
 353	  ((integer) (integer) #(1))
 354	  ((ratnum) (ratnum) #(1))
 355	  ((cplxnum) (cplxnum) #(1))
 356	  ((number) (number) #(1))
 357	  ((float fixnum) (float)
 358	   (##core#inline_allocate
 359	    ("C_a_i_flonum_times" 4)
 360	    #(1)
 361	    (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))))
 362	  ((fixnum float) (float)
 363	   (##core#inline_allocate
 364	    ("C_a_i_flonum_times" 4)
 365	    (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1))
 366	    #(2)))
 367	  ((float float) (float)
 368	   (##core#inline_allocate ("C_a_i_flonum_times" 4) #(1) #(2)))
 369	  ((fixnum fixnum) (integer)
 370	   (##core#inline_allocate ("C_a_i_fixnum_times" 5) #(1) #(2)))
 371	  ((integer integer) (integer)
 372	   (##core#inline_allocate ("C_s_a_u_i_integer_times" 5) #(1) #(2))))
 373
 374(scheme#/ (#(procedure #:clean #:enforce #:foldable) scheme#/ (number #!rest number) number)
 375	  ((float fixnum) (float)
 376	   ;; This is the only checked one because the divisor is an exact value
 377	   (##core#inline_allocate
 378	    ("C_a_i_flonum_quotient_checked" 4)
 379	    #(1)
 380	    (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))))
 381	  ((fixnum float) (float)
 382	   (##core#inline_allocate
 383	    ("C_a_i_flonum_quotient" 4)
 384	    (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1))
 385	    #(2)))
 386	  ((float float) (float)
 387	   (##core#inline_allocate ("C_a_i_flonum_quotient" 4) #(1) #(2)))
 388	  ((integer integer) ((or integer ratnum))
 389	   (##sys#/-2 #(1) #(2)))
 390	  ((* *) (number)
 391	   (##sys#/-2 #(1) #(2))))
 392
 393(scheme#= (#(procedure #:clean #:enforce #:foldable) scheme#= (#!rest number) boolean)
 394	  (() '#t)
 395	  ((number) (let ((#(tmp) #(1))) '#t))
 396	  ((fixnum fixnum) (scheme#eq? #(1) #(2)))
 397	  ((float float) (##core#inline "C_flonum_equalp" #(1) #(2)))
 398	  ((integer integer) (##core#inline "C_i_integer_equalp" #(1) #(2))))
 399
 400(scheme#> (#(procedure #:clean #:enforce #:foldable) scheme#> (#!rest number) boolean)
 401	  (() '#t)
 402	  ((number) (let ((#(tmp) #(1))) '#t))
 403	  ((fixnum fixnum) (chicken.fixnum#fx> #(1) #(2)))
 404	  ((float float) (##core#inline "C_flonum_greaterp" #(1) #(2)))
 405	  ((integer integer) (##core#inline "C_i_integer_greaterp" #(1) #(2))))
 406
 407(scheme#< (#(procedure #:clean #:enforce #:foldable) scheme#< (#!rest number) boolean)
 408	  (() '#t)
 409	  ((number) (let ((#(tmp) #(1))) '#t))
 410	  ((fixnum fixnum) (chicken.fixnum#fx< #(1) #(2)))
 411	  ((integer integer) (##core#inline "C_i_integer_lessp" #(1) #(2)))
 412	  ((float float) (##core#inline "C_flonum_lessp" #(1) #(2))))
 413
 414(scheme#>= (#(procedure #:clean #:enforce #:foldable) scheme#>= (#!rest number) boolean)
 415	   (() '#t)
 416	   ((number) (let ((#(tmp) #(1))) '#t))
 417	   ((fixnum fixnum) (chicken.fixnum#fx>= #(1) #(2)))
 418	   ((integer integer) (##core#inline "C_i_integer_greater_or_equalp" #(1) #(2)))
 419	   ((float float) (##core#inline "C_flonum_greater_or_equal_p" #(1) #(2))))
 420
 421(scheme#<= (#(procedure #:clean #:enforce #:foldable) scheme#<= (#!rest number) boolean)
 422	   (() '#t)
 423	   ((number) (let ((#(tmp) #(1))) '#t))
 424	   ((fixnum fixnum) (chicken.fixnum#fx<= #(1) #(2)))
 425	   ((integer integer) (##core#inline "C_i_integer_less_or_equalp" #(1) #(2)))
 426	   ((float float) (##core#inline "C_flonum_less_or_equal_p" #(1) #(2))))
 427
 428(scheme#quotient (#(procedure #:clean #:enforce #:foldable) scheme#quotient ((or integer float) (or integer float)) (or integer float))
 429		 ;;XXX flonum/mixed case
 430		 ((float float) (float)
 431		  (##core#inline_allocate
 432		   ("C_a_i_flonum_actual_quotient_checked" 4) #(1) #(2)))
 433		 ((fixnum fixnum) (integer)
 434		  (##core#inline_allocate ("C_a_i_fixnum_quotient_checked" 5)
 435					  #(1) #(2)))
 436		 ((integer integer) (integer)
 437		  (##core#inline_allocate ("C_s_a_u_i_integer_quotient" 5) #(1) #(2))))
 438
 439(scheme#remainder (#(procedure #:clean #:enforce #:foldable) scheme#remainder ((or integer float) (or integer float)) (or integer float))
 440		  ((float float) (float)
 441		   (##core#inline_allocate
 442		    ("C_a_i_flonum_remainder_checked" 4) #(1) #(2)))
 443		  ;;XXX flonum/mixed case
 444		  ((fixnum fixnum) (fixnum)
 445		   (##core#inline "C_i_fixnum_remainder_checked" #(1) #(2)))
 446		  ((integer integer) (integer)
 447		   (##core#inline_allocate ("C_s_a_u_i_integer_remainder" 5) #(1) #(2))))
 448
 449(scheme#modulo (#(procedure #:clean #:enforce #:foldable) scheme#modulo ((or integer float) (or integer float)) (or integer float))
 450	       ((float float) (float)
 451		(##core#inline_allocate
 452		 ("C_a_i_flonum_modulo_checked" 4) #(1) #(2)))
 453	       ;;XXX flonum/mixed case
 454	       ((fixnum fixnum) (fixnum)
 455		(##core#inline "C_fixnum_modulo" #(1) #(2)))
 456	       ((integer integer) (integer)
 457		(##core#inline_allocate ("C_s_a_u_i_integer_modulo" 5) #(1) #(2))))
 458
 459(scheme#gcd (#(procedure #:clean #:enforce #:foldable) scheme#gcd (#!rest (or integer float)) (or integer float))
 460	    (() '0)
 461	    ((fixnum fixnum) (fixnum) (chicken.fixnum#fxgcd #(1) #(2)))
 462	    ((float float) (float) (chicken.flonum#fpgcd #(1) #(2)))
 463	    ((integer integer) (integer)
 464	     (##core#inline_allocate ("C_s_a_u_i_integer_gcd" 5) #(1) #(2)))
 465	    ((* *) (##sys#gcd #(1) #(2))))
 466
 467(##sys#gcd (#(procedure #:clean #:enforce #:foldable) ##sys#gcd (number number) number))
 468
 469(scheme#lcm (#(procedure #:clean #:enforce #:foldable) scheme#lcm (#!rest number) number)
 470	    (() '1)
 471	    ((* *) (##sys#lcm #(1) #(2))))
 472
 473(##sys#lcm (#(procedure #:clean #:enforce #:foldable) ##sys#lcm (number number) number))
 474
 475(scheme#abs (#(procedure #:clean #:enforce #:foldable) scheme#abs (number) number)
 476	    ((fixnum) (integer) (##core#inline_allocate ("C_a_i_fixnum_abs" 5) #(1)))
 477	    ((float) (float) (##core#inline_allocate ("C_a_i_flonum_abs" 4) #(1)))
 478	    ((integer) (integer)
 479	     (##core#inline_allocate ("C_s_a_u_i_integer_abs" 5) #(1)))
 480	    ((*) (*)
 481	     (##core#inline_allocate ("C_s_a_i_abs" 7) #(1))))
 482
 483(scheme#floor (#(procedure #:clean #:enforce #:foldable) scheme#floor ((or integer ratnum float)) (or integer ratnum float))
 484	      ((fixnum) (fixnum) #(1))
 485	      ((integer) (integer) #(1))
 486	      ((float) (float)
 487	       (##core#inline_allocate ("C_a_i_flonum_floor" 4) #(1))))
 488
 489(scheme#ceiling (#(procedure #:clean #:enforce #:foldable) scheme#ceiling ((or integer ratnum float)) (or integer ratnum float))
 490		((fixnum) (fixnum) #(1))
 491		((integer) (integer) #(1))
 492		((float) (float)
 493		 (##core#inline_allocate ("C_a_i_flonum_ceiling" 4) #(1))))
 494
 495(scheme#truncate (#(procedure #:clean #:enforce #:foldable) scheme#truncate ((or integer ratnum float)) (or integer ratnum float))
 496		 ((fixnum) (fixnum) #(1))
 497		 ((integer) (integer) #(1))
 498		 ((float) (float)
 499		  (##core#inline_allocate ("C_a_i_flonum_truncate" 4) #(1))))
 500
 501(scheme#round (#(procedure #:clean #:enforce #:foldable) scheme#round ((or integer ratnum float)) (or integer ratnum float))
 502	      ((fixnum) (fixnum) #(1))
 503	      ((integer) (integer) #(1))
 504	      ((float) (float)
 505	       (##core#inline_allocate ("C_a_i_flonum_round_proper" 4) #(1))))
 506
 507(scheme#exact->inexact (#(procedure #:clean #:enforce #:foldable) scheme#exact->inexact (number) (or float cplxnum))
 508		       ((float) (float) #(1))
 509		       ((fixnum) (float) (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1)))
 510		       ((number) (##core#inline_allocate ("C_a_i_exact_to_inexact" 11) #(1))))
 511
 512(scheme#inexact->exact (#(procedure #:clean #:enforce #:foldable) scheme#inexact->exact (number) (or integer ratnum))
 513		       ((fixnum) (fixnum) #(1))
 514		       ((integer) (integer) #(1))
 515		       ((ratnum) (ratnum) #(1))
 516		       (((or integer ratnum)) #(1)))
 517
 518(scheme#exp (#(procedure #:clean #:enforce #:foldable) scheme#exp (number) (or float cplxnum))
 519	    ((float) (float) (##core#inline_allocate ("C_a_i_flonum_exp" 4) #(1))))
 520
 521(scheme#log (#(procedure #:clean #:enforce #:foldable) scheme#log (number #!optional number) (or float cplxnum))
 522	    ;; Unfortunately this doesn't work when the argument is negative
 523	    ;;((float) (float) (##core#inline_allocate ("C_a_i_flonum_log" 4) #(1)))
 524	    ((*) (##sys#log-1 #(1)))
 525	    ((* *) (##sys#/-2 (##sys#log-1 #(1)) (##sys#log-1 #(2)))))
 526
 527(scheme#expt (#(procedure #:clean #:enforce #:foldable) scheme#expt (number number) number)
 528	     ;; This breaks in some extreme edge cases... Worth disabling?
 529	     #;((float float) (float)
 530	      (##core#inline_allocate ("C_a_i_flonum_expt" 4) #(1) #(2)))
 531	     #;((float fixnum) (float)
 532	      (##core#inline_allocate ("C_a_i_flonum_expt" 4)
 533				      #(1)
 534				      (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))))
 535	     #;((fixnum float) (float)
 536	      (##core#inline_allocate ("C_a_i_flonum_expt" 4)
 537				      (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1))
 538				      #(2))))
 539
 540(scheme#sqrt (#(procedure #:clean #:enforce #:foldable) scheme#sqrt (number) number)
 541	     ;; Unfortunately this doesn't work when the argument is negative
 542	     #;((float) (float) (##core#inline_allocate ("C_a_i_flonum_sqrt" 4) #(1))))
 543(scheme#exact-integer-sqrt (#(procedure #:clean #:enforce #:foldable) scheme#exact-integer-sqrt (integer) integer integer)
 544             ((integer) (##sys#exact-integer-sqrt #(1))))
 545
 546(scheme#sin (#(procedure #:clean #:enforce #:foldable) scheme#sin (number) (or float cplxnum))
 547	    ((float) (float) (##core#inline_allocate ("C_a_i_flonum_sin" 4) #(1))))
 548
 549(scheme#cos (#(procedure #:clean #:enforce #:foldable) scheme#cos (number) (or float cplxnum))
 550	    ((float) (float) (##core#inline_allocate ("C_a_i_flonum_cos" 4) #(1))))
 551
 552(scheme#tan (#(procedure #:clean #:enforce #:foldable) scheme#tan (number) (or float cplxnum))
 553	    ((float) (float) (##core#inline_allocate ("C_a_i_flonum_tan" 4) #(1))))
 554
 555(scheme#asin (#(procedure #:clean #:enforce #:foldable) scheme#asin (number) (or float cplxnum))
 556	     ;; Unfortunately this doesn't work when the number is > 1.0 (returns compnum)
 557      #;((float) (float) (##core#inline_allocate ("C_a_i_flonum_acos" 4) #(1))))
 558
 559(scheme#acos (#(procedure #:clean #:enforce #:foldable) scheme#acos (number) (or float cplxnum))
 560	     ;; Unfortunately this doesn't work when the number is > 1.0 (returns compnum)
 561      #;((float) (float) (##core#inline_allocate ("C_a_i_flonum_acos" 4) #(1))))
 562
 563(scheme#atan (#(procedure #:clean #:enforce #:foldable) scheme#atan (number #!optional number) (or float cplxnum))
 564	     ((float) (float) (##core#inline_allocate ("C_a_i_flonum_atan" 4) #(1)))
 565	     ((float float) (float)
 566	      (##core#inline_allocate ("C_a_i_flonum_atan2" 4) #(1) #(2))))
 567
 568(scheme#number->string (#(procedure #:clean #:enforce) scheme#number->string (number #!optional fixnum) string)
 569		       ((fixnum fixnum) (##sys#fixnum->string #(1) #(2)))
 570		       ((fixnum) (##sys#fixnum->string #(1) '10))
 571		       ((integer fixnum) (##sys#integer->string #(1) #(2)))
 572		       ((integer) (##sys#integer->string #(1) '10))
 573		       ((float fixnum) (##sys#flonum->string #(1) #(2)))
 574		       ((float) (##sys#flonum->string #(1) '10))
 575		       ((* *) (##sys#number->string #(1) #(2)))
 576		       ((*) (##sys#number->string #(1) '10)))
 577
 578(##sys#fixnum->string (#(procedure #:clean #:enforce) ##sys#fixnum->string (fixnum fixnum) string))
 579(##sys#integer->string (#(procedure #:clean #:enforce) ##sys#integer->string (integer fixnum) string))
 580(##sys#flonum->string (#(procedure #:clean #:enforce) ##sys#flonum->string (float fixnum) string))
 581
 582(scheme#string->number (#(procedure #:clean #:enforce #:foldable) scheme#string->number (string #!optional fixnum)
 583			(or number false)))
 584
 585(scheme#char? (#(procedure #:pure #:predicate char) scheme#char? (*) boolean))
 586
 587;; safe rewrites are already done by the optimizer
 588(scheme#char=? (#(procedure #:clean #:enforce #:foldable) scheme#char=? (char char #!rest char) boolean)
 589	       ((char char) (##core#inline "C_u_i_char_equalp" #(1) #(2))))
 590(scheme#char>? (#(procedure #:clean #:enforce #:foldable) scheme#char>? (char char #!rest char) boolean)
 591	       ((char char) (##core#inline "C_u_i_char_greaterp" #(1) #(2))))
 592(scheme#char<? (#(procedure #:clean #:enforce #:foldable) scheme#char<? (char char #!rest char) boolean)
 593	       ((char char) (##core#inline "C_u_i_char_lessp" #(1) #(2))))
 594(scheme#char>=? (#(procedure #:clean #:enforce #:foldable) scheme#char>=? (char char #!rest char) boolean)
 595		((char char) (##core#inline "C_u_i_char_greater_or_equal_p" #(1) #(2))))
 596(scheme#char<=? (#(procedure #:clean #:enforce #:foldable) scheme#char<=? (char char #!rest char) boolean)
 597		((char char) (##core#inline "C_u_i_char_less_or_equal_p" #(1) #(2))))
 598
 599(scheme#char-ci=? (#(procedure #:clean #:enforce #:foldable) scheme#char-ci=? (char char #!rest char) boolean))
 600(scheme#char-ci<? (#(procedure #:clean #:enforce #:foldable) scheme#char-ci<? (char char #!rest char) boolean))
 601(scheme#char-ci>? (#(procedure #:clean #:enforce #:foldable) scheme#char-ci>? (char char #!rest char) boolean))
 602(scheme#char-ci>=? (#(procedure #:clean #:enforce #:foldable) scheme#char-ci>=? (char char #!rest char) boolean))
 603(scheme#char-ci<=? (#(procedure #:clean #:enforce #:foldable) scheme#char-ci<=? (char char #!rest char) boolean))
 604(scheme#char-alphabetic? (#(procedure #:clean #:enforce #:foldable) scheme#char-alphabetic? (char) boolean))
 605(scheme#char-whitespace? (#(procedure #:clean #:enforce #:foldable) scheme#char-whitespace? (char) boolean))
 606(scheme#char-numeric? (#(procedure #:clean #:enforce #:foldable) scheme#char-numeric? (char) boolean))
 607(scheme#char-upper-case? (#(procedure #:clean #:enforce #:foldable) scheme#char-upper-case? (char) boolean))
 608(scheme#char-lower-case? (#(procedure #:clean #:enforce #:foldable) scheme#char-lower-case? (char) boolean))
 609(scheme#char-upcase (#(procedure #:clean #:enforce #:foldable) scheme#char-upcase (char) char))
 610(scheme#char-downcase (#(procedure #:clean #:enforce #:foldable) scheme#char-downcase (char) char))
 611
 612(scheme#char->integer (#(procedure #:clean #:enforce #:foldable) scheme#char->integer (char) fixnum))
 613(scheme#integer->char (#(procedure #:clean #:enforce #:foldable) scheme#integer->char (fixnum) char))
 614
 615(scheme#string? (#(procedure #:pure #:predicate string) scheme#string? (*) boolean))
 616
 617(scheme#string=? (#(procedure #:clean #:enforce #:foldable) scheme#string=? (string string) boolean)
 618		 ((* *) (##core#inline "C_i_string_equal_p" #(1) #(2))))
 619(scheme#string>? (#(procedure #:clean #:enforce #:foldable) scheme#string>? (string string #!rest string) boolean)
 620                 ((string string) (##core#inline "C_i_string_equal_p" #(1) #(2))))
 621(scheme#string<? (#(procedure #:clean #:enforce #:foldable) scheme#string<? (string string #!rest string) boolean))
 622(scheme#string>=? (#(procedure #:clean #:enforce #:foldable) scheme#string>=? (string string #!rest string) boolean))
 623(scheme#string<=? (#(procedure #:clean #:enforce #:foldable) scheme#string<=? (string string #!rest string) boolean))
 624(scheme#string-ci=? (#(procedure #:clean #:enforce #:foldable) scheme#string-ci=? (string string #!rest string) boolean)
 625  		    ((* *) (##core#inline "C_i_string_ci_equal_p" #(1) #(2))))
 626(scheme#string-ci<? (#(procedure #:clean #:enforce #:foldable) scheme#string-ci<? (string string #!rest string) boolean))
 627(scheme#string-ci>? (#(procedure #:clean #:enforce #:foldable) scheme#string-ci>? (string string #!rest string) boolean))
 628(scheme#string-ci>=? (#(procedure #:clean #:enforce #:foldable) scheme#string-ci>=? (string string #!rest string) boolean))
 629(scheme#string-ci<=? (#(procedure #:clean #:enforce #:foldable) scheme#string-ci<=? (string string #!rest string) boolean))
 630
 631(scheme#make-string (#(procedure #:clean #:enforce) scheme#make-string (fixnum #!optional char) string)
 632		    ((fixnum char) (##sys#make-string #(1) #(2)))
 633		    ((fixnum) (##sys#make-string #(1) '#\space)))
 634
 635(scheme#string-length (#(procedure #:clean #:enforce #:foldable) scheme#string-length (string) fixnum)
 636	       ((string) (##core#inline "C_u_i_string_length" #(1))))
 637
 638(scheme#string-ref (#(procedure #:clean #:enforce #:foldable) scheme#string-ref (string fixnum) char)
 639		   ((string fixnum) (##core#inline "C_i_string_ref" #(1) #(2))))
 640
 641(scheme#string-set! (#(procedure #:enforce) scheme#string-set! (string fixnum char) undefined)
 642		    ((string fixnum char) (##core#inline "C_i_string_set" #(1) #(2) #(3))))
 643
 644(scheme#string-append (#(procedure #:clean #:enforce) scheme#string-append (#!rest string) string)
 645		      ((string string) (##sys#string-append #(1) #(2))))
 646
 647(scheme#string-copy (#(procedure #:clean #:enforce) scheme#string-copy (string #!optional fixnum fixnum) string))
 648(scheme#string-copy! (#(procedure #:clean #:enforce) scheme#string-copy! (string fixnum string #!optional fixnum fixnum) undefined))
 649
 650(scheme#string->list (#(procedure #:clean #:enforce) scheme#string->list (string #!optional fixnum fixnum) (list-of char)))
 651(scheme#list->string (#(procedure #:clean #:enforce) scheme#list->string ((list-of char)) string))
 652(scheme#substring (#(procedure #:clean #:enforce) scheme#substring (string fixnum #!optional fixnum) string))
 653(scheme#string-fill! (#(procedure #:enforce) scheme#string-fill! (string char #!optional fixnum fixnum) string))
 654(scheme#string (#(procedure #:clean #:enforce) scheme#string (#!rest char) string))
 655
 656(scheme#char-foldcase (#(procedure #:clean #:enforce #:foldable) scheme#char-foldcase (char) char)
 657                            ((char) (##core#inline "C_utf_char_foldcase" #(1))))
 658(scheme#string-foldcase (#(procedure #:clean #:enforce) scheme#string-foldcase (string) string))
 659(scheme#string-upcase (#(procedure #:clean #:enforce) scheme#string-upcase (string) string))
 660(scheme#string-downcase (#(procedure #:clean #:enforce) scheme#string-downcase (string) string))
 661
 662(scheme#vector? (#(procedure #:pure #:predicate vector) scheme#vector? (*) boolean))
 663
 664;; special-cased (see scrutinizer.scm)
 665(scheme#make-vector (forall (a) (#(procedure #:clean #:enforce) scheme#make-vector (fixnum #!optional a)
 666				 (vector-of a))))
 667
 668;; these are special cased (see scrutinizer.scm)
 669(scheme#vector-ref (forall (a) (#(procedure #:clean #:enforce #:foldable) scheme#vector-ref ((vector-of a) fixnum) a)))
 670(##sys#vector-ref (forall (a) (#(procedure #:clean #:enforce #:foldable) ##sys#vector-ref ((vector-of a) fixnum) a)))
 671
 672;; special-cased (see scrutinizer.scm)
 673(scheme#vector-set! (#(procedure #:enforce) scheme#vector-set! (vector fixnum *) undefined))
 674
 675;; special cased (see scrutinizer.scm)
 676(scheme#vector (#(procedure #:pure) scheme#vector (#!rest) vector))
 677(##sys#vector (#(procedure #:pure) ##sys#vector (#!rest) vector))
 678
 679(scheme#vector-length (#(procedure #:clean #:enforce #:foldable) scheme#vector-length (vector) fixnum)
 680		      ((vector) (##sys#size #(1))))
 681(##sys#vector-length (#(procedure #:clean #:enforce #:foldable) ##sys#vector-length (vector) fixnum)
 682		     ((vector) (##sys#size #(1))))
 683
 684(scheme#vector->list (forall (a) (#(procedure #:clean #:enforce) scheme#vector->list ((vector-of a) #!optional fixnum fixnum) (list-of a))))
 685(##sys#vector->list (forall (a) (#(procedure #:clean #:enforce) ##sys#vector->list ((vector-of a)) (list-of a))))
 686(scheme#list->vector (forall (a) (#(procedure #:clean #:enforce) scheme#list->vector ((list-of a)) (vector-of a))))
 687(##sys#list->vector (forall (a) (#(procedure #:clean #:enforce) ##sys#list->vector ((list-of a)) (vector-of a))))
 688(scheme#vector-fill! (#(procedure #:enforce) scheme#vector-fill! (vector * #!optional fixnum fixnum) undefined))
 689(scheme#vector-copy (#(procedure #:enforce) scheme#vector-copy (vector #!optional fixnum fixnum) vector))
 690(scheme#vector-copy! (#(procedure #:enforce) scheme#vector-copy! (vector fixnum vector #!optional fixnum fixnum) undefined))
 691
 692(scheme#procedure? (#(procedure #:pure #:predicate procedure) scheme#procedure? (*) boolean))
 693
 694(scheme#map (forall (a b) (#(procedure #:enforce) scheme#map ((procedure (a #!rest) b) (list-of a) #!rest list) (list-of b))))
 695
 696(scheme#for-each
 697 (forall (a) (#(procedure #:enforce) scheme#for-each ((procedure (a #!rest) . *) (list-of a) #!rest list) undefined)))
 698
 699(scheme#apply (#(procedure #:enforce) scheme#apply (procedure #!rest) . *))
 700(##sys#apply (#(procedure #:enforce) ##sys#apply (procedure #!rest) . *))
 701
 702(scheme#force (procedure scheme#force (*) . *) (((not (struct promise))) #(1)))
 703
 704(scheme#call-with-current-continuation
 705 (#(procedure #:enforce) scheme#call-with-current-continuation
 706  ((procedure (procedure) . *)) . *))
 707(scheme#call/cc (#(procedure #:enforce) scheme#call-with-current-continuation ((procedure (*) . *)) . *))
 708
 709(scheme#input-port? (#(procedure #:pure #:predicate (refine (input) port)) scheme#input-port? (*) boolean))
 710(scheme#output-port? (#(procedure #:pure #:predicate (refine (output) port)) scheme#output-port? (*) boolean))
 711
 712(scheme#port? (#(procedure #:pure #:predicate port) scheme#port? (*) boolean))
 713(scheme#input-port-open? (#(procedure #:enforce) scheme#input-port-open? (input-port) boolean))
 714(scheme#output-port-open? (#(procedure #:enforce) scheme#output-port-open? (output-port) boolean))
 715
 716(scheme#current-input-port
 717 (#(procedure #:clean #:enforce) scheme#current-input-port
 718  (#!optional input-port boolean boolean) input-port)
 719 (() ##sys#standard-input)
 720 (((refine (input) port))
 721  (let ((#(tmp1) #(1)))
 722    (let ((#(tmp2) (set! ##sys#standard-input #(tmp1))))
 723      #(tmp1)))))
 724
 725(scheme#current-output-port
 726 (#(procedure #:clean #:enforce) scheme#current-output-port
 727  (#!optional output-port boolean boolean) output-port)
 728 (() ##sys#standard-output)
 729 (((refine (output) port))
 730  (let ((#(tmp1) #(1)))
 731    (let ((#(tmp2) (set! ##sys#standard-output #(tmp1))))
 732      #(tmp1)))))
 733
 734(scheme#call-with-input-file
 735 (procedure scheme#call-with-input-file
 736	    (string (procedure (input-port) . *) #!rest) . *))
 737
 738(scheme#call-with-output-file
 739 (procedure scheme#call-with-output-file
 740	    (string (procedure (output-port) . *) #!rest) . *))
 741
 742(scheme#open-input-file (#(procedure #:clean #:enforce) scheme#open-input-file (string #!rest keyword) input-port))
 743(scheme#open-output-file (#(procedure #:clean #:enforce) scheme#open-output-file (string #!rest keyword) output-port))
 744(scheme#close-input-port (#(procedure #:enforce) scheme#close-input-port (input-port) undefined))
 745(scheme#close-output-port (#(procedure #:enforce) scheme#close-output-port (output-port) undefined))
 746
 747(scheme#read (#(procedure #:enforce) scheme#read (#!optional input-port) *))
 748
 749(scheme#eof-object? (#(procedure #:pure #:predicate eof) scheme#eof-object? (*) boolean))
 750
 751(scheme#read-char (#(procedure #:enforce) scheme#read-char (#!optional input-port) (or eof char)))
 752(scheme#peek-char (#(procedure #:enforce) scheme#peek-char (#!optional input-port) (or eof char)))
 753
 754(scheme#write (#(procedure #:enforce) scheme#write (* #!optional output-port) undefined))
 755(scheme#display (#(procedure #:enforce) scheme#display (* #!optional output-port) undefined))
 756(scheme#write-char (#(procedure #:enforce) scheme#write-char (char #!optional output-port) undefined))
 757
 758;;XXX Yes, that would be nice, but the output-port may be closed
 759#;(##sys#write-char-0
 760 (#(procedure #:enforce) ##sys#write-char-0 (char output-port) undefined)
 761 ((char output-port)
 762   (let ((#(tmp) #(1)))
 763     ((##sys#slot (##sys#slot #(tmp) '2) '2) #(tmp) #(2)))))
 764
 765(scheme#newline (#(procedure #:enforce) scheme#newline (#!optional output-port) undefined))
 766
 767(scheme#with-input-from-file
 768 (#(procedure #:enforce) scheme#with-input-from-file (string (procedure () . *) #!rest keyword) . *))
 769
 770(scheme#with-output-to-file
 771 (#(procedure #:enforce) scheme#with-output-to-file
 772  (string (procedure () . *) #!rest keyword) . *))
 773
 774(scheme#dynamic-wind
 775 (#(procedure #:enforce) scheme#dynamic-wind
 776  ((procedure () . *) (procedure () . *) (procedure () . *)) . *))
 777
 778(scheme#values (#(procedure #:clean) scheme#values (#!rest values) . *))
 779(##sys#values (#(procedure #:clean) ##sys#values (#!rest values) . *))
 780
 781(scheme#call-with-values (#(procedure #:enforce) scheme#call-with-values
 782			  ((procedure () . *) procedure) . *)
 783  (((procedure () *) *) (let ((#(tmp1) #(1)))
 784			  (let ((#(tmp2) #(2)))
 785			    (#(tmp2) (#(tmp1)))))))
 786
 787(##sys#call-with-values
 788 (#(procedure #:enforce) ##sys#call-with-values ((procedure () . *) procedure) . *)
 789 (((procedure () *) *) (let ((#(tmp1) #(1)))
 790			 (let ((#(tmp2) #(2)))
 791			   (#(tmp2) (#(tmp1)))))))
 792
 793(scheme#char-ready? (#(procedure #:enforce) scheme#char-ready? (#!optional input-port) boolean))
 794(scheme#u8-ready? (#(procedure #:enforce) scheme#u8-ready? (#!optional input-port) boolean))
 795
 796(scheme#make-rectangular (#(procedure #:enforce #:clean) scheme#make-rectangular (number number) number))
 797(scheme#make-polar (#(procedure #:enforce #:clean) scheme#make-polar (number number) number))
 798
 799(scheme#real-part (#(procedure #:clean #:enforce #:foldable) scheme#real-part (number) (or integer float ratnum))
 800	   (((or fixnum float bignum ratnum)) #(1))
 801	   ((cplxnum) (##core#inline "C_u_i_cplxnum_real" #(1))))
 802
 803(scheme#imag-part (#(procedure #:clean #:enforce #:foldable) scheme#imag-part (number) (or integer float ratnum))
 804		  (((or fixnum bignum ratnum)) (let ((#(tmp) #(1))) '0))
 805		  ((float) (let ((#(tmp) #(1))) '0.0))
 806		  ((cplxnum) (##core#inline "C_u_i_cplxnum_imag" #(1))))
 807
 808(scheme#magnitude (#(procedure #:clean #:enforce #:foldable) scheme#magnitude (number) number)
 809		  ((fixnum) (integer) (##core#inline_allocate ("C_a_i_fixnum_abs" 5) #(1)))
 810		  ((integer) (##core#inline_allocate ("C_s_a_u_i_integer_abs" 5) #(1)))
 811		  ((float) (float) (##core#inline_allocate ("C_a_i_flonum_abs" 4) #(1)))
 812		  (((or fixnum float bignum ratnum))
 813		   (##core#inline_allocate ("C_s_a_i_abs" 7) #(1))))
 814
 815(scheme#angle (#(procedure #:clean #:enforce #:foldable) scheme#angle (number) float)
 816	      ((float) (##core#inline_allocate ("C_a_i_flonum_atan2" 4) '0.0 #(1)))
 817	      ((fixnum) (##core#inline_allocate
 818			 ("C_a_i_flonum_atan2" 4)
 819			 '0.0
 820			 (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1))))
 821	      ((cplxnum)
 822	       (let ((#(tmp) #(1)))
 823		 (##core#inline_allocate
 824		  ("C_a_i_flonum_atan2" 4)
 825		  (##core#inline_allocate ("C_a_i_exact_to_inexact" 11)
 826					  (##core#inline "C_u_i_cplxnum_imag" #(tmp)))
 827		  (##core#inline_allocate ("C_a_i_exact_to_inexact" 11)
 828					  (##core#inline "C_u_i_cplxnum_real" #(tmp)))))))
 829
 830(scheme#numerator (#(procedure #:clean #:enforce #:foldable) scheme#numerator ((or float integer ratnum)) (or float integer))
 831		  ((fixnum) (fixnum) #(1))
 832		  ((bignum) (bignum) #(1))
 833		  ((integer) (integer) #(1))
 834		  ((ratnum) (integer) (##core#inline "C_u_i_ratnum_num" #(1))))
 835
 836(scheme#denominator (#(procedure #:clean #:enforce #:foldable) scheme#denominator ((or float integer ratnum)) (or float integer))
 837	     ((integer) (fixnum) (let ((#(tmp) #(1))) '1))
 838	     ((ratnum) (integer) (##core#inline "C_u_i_ratnum_denom" #(1))))
 839
 840(scheme#load (procedure scheme#load (string #!optional (or (struct environment) (procedure (*) . *))) undefined))
 841
 842(scheme#eval (procedure scheme#eval (* #!optional (struct environment)) . *))
 843
 844(scheme#scheme-report-environment
 845 (#(procedure #:clean #:enforce) scheme#scheme-report-environment (#!optional fixnum) (struct environment)))
 846
 847(scheme#null-environment
 848 (#(procedure #:clean #:enforce) scheme#null-environment (#!optional fixnum) (struct environment)))
 849(scheme#interaction-environment
 850 (#(procedure #:clean) scheme#interaction-environment () (struct environment)))
 851
 852(scheme#with-exception-handler (#(procedure #:clean #:enforce) scheme#with-exception-handler ((procedure (*) . *) (procedure () . *)) . *))
 853(scheme#raise (#(procedure #:clean #:enforce) scheme#raise (*) noreturn))
 854(scheme#raise-continuable (#(procedure #:clean #:enforce) scheme#raise-continuable (*) . *))
 855(scheme#error-object-irritants
 856  (#(procedure #:clean #:enforce)
 857   scheme#error-object-irritants
 858   ((struct condition))
 859   (or list false)))
 860(scheme#error-object-message
 861  (#(procedure #:clean #:enforce)
 862   scheme#error-object-message
 863   ((struct condition))
 864   (or string false)))
 865(scheme#error-object?
 866  (#(procedure #:pure #:predicate (struct condition))
 867   scheme#error-object?
 868   (*)
 869   boolean))
 870(scheme#file-error? (#(procedure #:pure) scheme#file-error? (*) boolean))
 871(scheme#read-error? (#(procedure #:pure) scheme#read-error? (*) boolean))
 872
 873(scheme#square (#(procedure #:pure) scheme#square ((or integer ratnum float)) (or integer ratnum float)))
 874(scheme#floor/ (#(procedure #:clean #:enforce #:foldable) scheme#floor/ ((or integer float) (or integer float)) (or integer float) (or integer float)))
 875(scheme#truncate/ (#(procedure #:clean #:enforce #:foldable) scheme#truncate/ ((or integer float) (or integer float)) (or integer float) (or integer float)))
 876(scheme#floor-quotient (#(procedure #:clean #:enforce #:foldable) scheme#floor-quotient ((or integer float) (or integer float))))
 877(scheme#floor-remainder (#(procedure #:clean #:enforce #:foldable) scheme#floor-remainder ((or integer float) (or integer float))))
 878
 879(scheme#boolean=? (#(procedure #:pure) scheme#boolean=? (boolean boolean #!rest boolean) boolean))
 880(scheme#symbol=? (#(procedure #:pure) scheme#symbol=? (symbol symbol #!rest symbol) boolean))
 881
 882(scheme#close-port (#(procedure #:enforce) scheme#close-port (port) undefined))
 883
 884(scheme#get-output-string (#(procedure #:clean #:enforce) scheme#get-output-string (output-port) string))
 885(scheme#open-input-string (#(procedure #:clean #:enforce) scheme#open-input-string (string #!rest) input-port))
 886(scheme#open-output-string (#(procedure #:clean) scheme#open-output-string (#!rest) output-port))
 887(scheme#get-output-bytevector (#(procedure #:clean #:enforce) scheme#get-output-bytevector (output-port) bytevector))
 888(scheme#open-input-bytevector (#(procedure #:clean #:enforce) scheme#open-input-bytevector (bytevector #!rest) input-port))
 889(scheme#open-output-bytevector (#(procedure #:clean) scheme#open-output-bytevector (#!rest) output-port))
 890
 891(scheme#make-list (#(procedure #:clean #:enforce) scheme#make-list (fixnum *) list))
 892
 893(scheme#list-set! (#(procedure #:clean #:enforce) scheme#list-set! (list fixnum *) undefined))
 894(scheme#list-copy (forall (a) (#(procedure #:clean #:enforce) scheme#list-copy ((list-of a)) (list-of a))))
 895(scheme#string->vector (#(procedure #:clean #:enforce) scheme#string->vector (string #!optional fixnum fixnum) vector))
 896(scheme#vector->string (#(procedure #:clean #:enforce) scheme#vector->string (vector #!optional fixnum fixnum) string))
 897(scheme#string-for-each (#(procedure #:clean #:enforce) scheme#string-for-each ((procedure (#!rest char) char) #!rest string) undefined))
 898(scheme#vector-for-each (#(procedure #:clean #:enforce) scheme#vector-for-each ((procedure (#!rest *) . *) #!rest vector) undefined))
 899(scheme#string-map (#(procedure #:clean #:enforce) scheme#string-map ((procedure (#!rest char) char) #!rest string) string))
 900(scheme#vector-map (#(procedure #:clean #:enforce) scheme#vector-map ((procedure (#!rest *) . *) #!rest vector) vector))
 901
 902(scheme#binary-port? (#(procedure #:pure) scheme#binary-port? (*) boolean))
 903(scheme#textual-port? (#(procedure #:pure) scheme#textual-port? (*) boolean))
 904(scheme#call-with-port (#(procedure #:clean #:enforce) scheme#call-with-port (port (procedure (port) . *)) . *))
 905(scheme#eof-object (#(procedure #:pure) scheme#eof-object () eof))
 906(scheme#features (#(procedure #:clean) scheme#features () (list-of symbol)))
 907
 908(scheme#peek-u8 (#(procedure #:clean #:enforce) scheme#peek-u8 (#!optional input-port) (or eof fixnum)))
 909(scheme#write-string (#(procedure #:clean #:enforce) scheme#write-string (string #!optional output-port fixnum fixnum) undefined))
 910
 911(scheme#make-parameter (#(procedure #:clean #:enforce) scheme#make-parameter (* #!optional procedure) procedure))
 912
 913
 914;; scheme.eval
 915
 916(scheme.eval#environment (procedure scheme.eval#environment (#!rest *) . *))
 917
 918
 919;; eval
 920
 921(chicken.eval#module-environment
 922 (#(procedure #:clean #:enforce) chicken.eval#module-environment ((or symbol (list-of (or symbol fixnum)))) (struct environment)))
 923
 924
 925;; base
 926
 927(chicken.base#add1 (#(procedure #:clean #:enforce #:foldable) chicken.base#add1 (number) number)
 928      ((fixnum) (integer)
 929       (##core#inline_allocate ("C_a_i_fixnum_plus" 5) #(1) '1))
 930      ((integer) (integer)
 931       (##core#inline_allocate ("C_s_a_u_i_integer_plus" 5) #(1) '1))
 932      ((float) (float)
 933       (##core#inline_allocate ("C_a_i_flonum_plus" 4) #(1) '1.0))
 934      ((*) (number)
 935       (##core#inline_allocate ("C_s_a_i_plus" 29) #(1) '1)))
 936
 937(chicken.base#sub1 (#(procedure #:clean #:enforce #:foldable) chicken.base#sub1 (number) number)
 938      ((fixnum) (integer)
 939       (##core#inline_allocate ("C_a_i_fixnum_difference" 5) #(1) '1))
 940      ((integer) (integer)
 941       (##core#inline_allocate ("C_s_a_u_i_integer_minus" 5) #(1) '1))
 942      ((float) (float)
 943       (##core#inline_allocate ("C_a_i_flonum_difference" 4) #(1) '1.0))
 944      ((*) (number)
 945       (##core#inline_allocate ("C_s_a_i_minus" 29) #(1) '1)))
 946
 947(chicken.base#subvector (forall (a) (#(procedure #:clean #:enforce) chicken.base#subvector ((vector-of a) fixnum #!optional fixnum) (vector-of a))))
 948(chicken.base#vector-resize
 949 (forall (a b) (#(procedure #:clean #:enforce) chicken.base#vector-resize ((vector-of a) fixnum #!optional b)
 950		(vector-of (or a b)))))
 951
 952(chicken.base#void (#(procedure #:pure) chicken.base#void (#!rest) undefined))
 953(chicken.base#warning (procedure chicken.base#warning (* #!rest) undefined))
 954(chicken.base#notice (procedure chicken.base#notice (* #!rest) undefined))
 955
 956(chicken.base#exact-integer-nth-root (#(procedure #:clean #:enforce #:foldable) chicken.base#exact-integer-nth-root (integer integer) integer integer)
 957		    ((integer integer) (##sys#exact-integer-nth-root/loc 'exact-integer-nth-root #(1) #(2))))
 958
 959(chicken.base#weak-cons (forall (a b) (#(procedure #:pure) chicken.base#weak-cons (a b) (pair (or a bwp) b))))
 960;; NOTE: This is *not* a #:predicate, as we don't want to introduce a completely new weak-pair type
 961(chicken.base#weak-pair? (#(procedure #:pure) chicken.base#weak-pair? (*) boolean))
 962(chicken.base#bwp-object? (#(procedure #:pure #:predicate bwp) chicken.base#bwp-object? (*) boolean))
 963
 964(chicken.base#fixnum? (#(procedure #:pure #:predicate fixnum) chicken.base#fixnum? (*) boolean))
 965(chicken.base#flonum? (#(procedure #:pure #:predicate float) chicken.base#flonum? (*) boolean))
 966(chicken.base#bignum? (#(procedure #:pure #:predicate bignum) chicken.base#bignum? (*) boolean))
 967(chicken.base#ratnum? (#(procedure #:pure #:predicate ratnum) chicken.base#ratnum? (*) boolean))
 968(chicken.base#cplxnum? (#(procedure #:pure #:predicate cplxnum) chicken.base#cplxnum? (*) boolean))
 969
 970(chicken.base#foldl (forall (a b) (#(procedure #:enforce) chicken.base#foldl ((procedure (a b) a) a (list-of b)) a)))
 971(chicken.base#foldr (forall (a b) (#(procedure #:enforce) chicken.base#foldr ((procedure (a b) b) b (list-of a)) b)))
 972
 973(chicken.base#nan? (#(procedure #:clean #:enforce #:foldable) chicken.base#nan? (number) boolean)
 974      (((or integer ratnum)) (let ((#(tmp) #(1))) '#f))
 975      ((float) (##core#inline "C_u_i_flonum_nanp" #(1)))
 976      ((*) (##core#inline "C_i_nanp" #(1))))
 977
 978(chicken.base#infinite? (#(procedure #:clean #:enforce #:foldable) chicken.base#infinite? (number) boolean)
 979	   (((or integer ratnum)) (let ((#(tmp) #(1))) '#f))
 980	   ((float) (##core#inline "C_u_i_flonum_infinitep" #(1)))
 981	   ((*) (##core#inline "C_i_infinitep" #(1))))
 982
 983(chicken.base#finite? (#(procedure #:clean #:enforce #:foldable) chicken.base#finite? (number) boolean)
 984	 (((or integer ratnum)) (let ((#(tmp) #(1))) '#t))
 985	 ((float) (##core#inline "C_u_i_flonum_finitep" #(1)))
 986	 ((*) (##core#inline "C_i_finitep" #(1))))
 987
 988(chicken.base#get-call-chain (#(procedure #:clean #:enforce) chicken.base#get-call-chain (#!optional fixnum (struct thread)) (list-of vector)))
 989(chicken.base#print-call-chain (#(procedure #:clean #:enforce) chicken.base#print-call-chain (#!optional output-port fixnum * string) undefined))
 990
 991(chicken.base#print (procedure chicken.base#print (#!rest *) undefined))
 992(chicken.base#print* (procedure chicken.base#print* (#!rest) undefined))
 993(chicken.base#procedure-information (#(procedure #:clean #:enforce) chicken.base#procedure-information (procedure) *))
 994
 995(chicken.base#port-closed?
 996 (#(procedure #:clean #:enforce) chicken.base#port-closed? (port) boolean)
 997 ((port) (scheme#eq? (##sys#slot #(1) '8) '0)))
 998
 999(chicken.base#current-error-port
 1000 (#(procedure #:clean #:enforce) chicken.base#current-error-port (#!optional output-port boolean boolean) output-port)
1001 ((output-port) (let ((#(tmp1) #(1)))
1002		  (let ((#(tmp2) (set! ##sys#standard-error #(tmp1))))
1003		    #(tmp1))))
1004 (() ##sys#standard-error))
1005
1006(chicken.base#flush-output (#(procedure #:enforce) chicken.base#flush-output (#!optional output-port) undefined))
1007
1008(chicken.base#enable-warnings (#(procedure #:clean) chicken.base#enable-warnings (#!optional *) *))
1009
1010(chicken.base#error (procedure chicken.base#error (* #!rest) noreturn))
1011(chicken.base#equal=? (#(procedure #:clean #:foldable) chicken.base#equal=? (* *) boolean)
1012	 ((fixnum fixnum) (scheme#eq? #(1) #(2)))
1013	 (((or symbol keyword char eof bwp null undefined) *) (scheme#eq? #(1) #(2)))
1014	 ((* (or symbol keyword char eof bwp null undefined)) (scheme#eq? #(1) #(2)))
1015	 ((number number) (scheme#= #(1) #(2))))
1016
1017(chicken.base#emergency-exit (procedure chicken.base#emergency-exit (#!optional fixnum) noreturn))
1018(chicken.base#on-exit (#(procedure #:clean #:enforce) chicken.base#on-exit ((procedure () . *)) undefined))
1019(chicken.base#implicit-exit-handler
1020 (#(procedure #:clean #:enforce) chicken.base#implicit-exit-handler (#!optional (procedure () . *)) procedure))
1021
1022(chicken.base#sleep (#(procedure #:clean #:enforce) chicken.base#sleep (fixnum) undefined))
1023
1024(chicken.base#exit (procedure chicken.base#exit (#!optional fixnum) noreturn))
1025(chicken.base#exit-handler (#(procedure #:clean #:enforce) chicken.base#exit-handler (#!optional (procedure (fixnum) . *)) procedure))
1026
1027(chicken.base#gensym (#(procedure #:clean) chicken.base#gensym (#!optional (or string symbol)) symbol))
1028(chicken.base#char-name (#(procedure #:clean #:enforce) chicken.base#char-name ((or char symbol) #!optional char) *)) ;XXX -> (or char symbol) ?
1029
1030(chicken.base#getter-with-setter
1031 (#(procedure #:clean #:enforce)
1032  chicken.base#getter-with-setter
1033  ((procedure (#!rest) *) (procedure (* #!rest) . *) #!optional string)
1034  procedure))
1035(chicken.base#setter (#(procedure #:clean #:enforce) chicken.base#setter (procedure) procedure))
1036
1037(chicken.base#signum (#(procedure #:clean #:enforce) chicken.base#signum (number) (or fixnum float cplxnum))
1038	((fixnum) (fixnum) (##core#inline "C_i_fixnum_signum" #(1)))
1039	((integer) (fixnum) (##core#inline "C_u_i_integer_signum" #(1)))
1040	((float) (float)
1041	 (##core#inline_allocate ("C_a_u_i_flonum_signum" 4) #(1)))
1042	((ratnum) (fixnum)
1043	 (##core#inline "C_u_i_integer_signum"
1044			(##core#inline "C_u_i_ratnum_num" #(1))))
1045	((cplxnum) ((or float cplxnum)) (##sys#extended-signum #(1))))
1046
1047(chicken.base#string->uninterned-symbol (#(procedure #:clean #:enforce) chicken.base#string->uninterned-symbol (string) symbol))
1048(chicken.base#symbol-append (#(procedure #:clean #:enforce #:foldable) chicken.base#symbol-append (#!rest symbol) symbol))
1049
1050(chicken.base#case-sensitive (#(procedure #:clean) chicken.base#case-sensitive (#!optional *) *))
1051(chicken.base#keyword-style (#(procedure #:clean) chicken.base#keyword-style (#!optional (or keyword false)) *))
1052(chicken.base#parentheses-synonyms (#(procedure #:clean) chicken.base#parentheses-synonyms (#!optional *) *))
1053(chicken.base#symbol-escape (#(procedure #:clean) chicken.base#symbol-escape (#!optional *) *))
1054
1055(chicken.base#quotient&remainder (#(procedure #:clean #:enforce #:foldable) chicken.base#quotient&remainder ((or integer float) (or integer float)) (or integer float) (or integer float))
1056	  ((float float) (float float)
1057	   (let ((#(tmp1) #(1)))
1058	     (let ((#(tmp2) #(2)))
1059	       (##sys#values
1060		(##core#inline_allocate
1061		 ("C_a_i_flonum_actual_quotient_checked" 4) #(tmp1) #(tmp2))
1062		(##core#inline_allocate
1063		 ("C_a_i_flonum_remainder_checked" 4) #(tmp1) #(tmp2))))))
1064	   ;;XXX flonum/mixed case
1065	   ((fixnum fixnum) (integer fixnum)
1066	    (let ((#(tmp1) #(1)))
1067	      (let ((#(tmp2) #(2)))
1068		(##sys#values
1069		 (##core#inline_allocate ("C_a_i_fixnum_quotient_checked" 5)
1070					 #(tmp1) #(tmp2))
1071		 (##core#inline
1072		  "C_i_fixnum_remainder_checked" #(tmp1) #(tmp2))))))
1073	   ((integer integer) (integer integer)
1074	    ((##core#primitive "C_u_integer_quotient_and_remainder") #(1) #(2))))
1075
1076;; TODO: Add nonspecializing type specific entries, to help flow analysis?
1077(chicken.base#quotient&modulo (#(procedure #:clean #:enforce #:foldable) chicken.base#quotient&modulo ((or integer float) (or integer float)) (or integer float) (or integer float)))
1078
1079(chicken.base#record-printer (#(procedure #:enforce) chicken.base#record-printer (*) (or false procedure)))
1080(chicken.base#set-record-printer! (#(procedure #:enforce) chicken.base#set-record-printer! (* procedure) undefined))
1081
1082(chicken.base#alist-ref
1083 (forall (a b c d)
1084         (#(procedure #:clean #:foldable) chicken.base#alist-ref
1085          (a (list-of (pair b c)) #!optional (procedure (a b) *) d)
1086          (or false c d))))
1087(chicken.base#alist-update!
1088 (forall (a b c d)
1089         (#(procedure) chicken.base#alist-update!
1090          (a b (list-of (pair c d)) #!optional (procedure (a c) *))
1091          (list-of (pair c (or b d))))))
1092(chicken.base#alist-update
1093 (forall (a b c d)
1094         (#(procedure #:clean) chicken.base#alist-update
1095          (a b (list-of (pair c d)) #!optional (procedure (a c) *))
1096          (list-of (pair c (or b d))))))
1097
1098(chicken.base#atom? (#(procedure #:pure #:foldable) chicken.base#atom? (*) boolean)
1099       ((pair) (let ((#(tmp) #(1))) '#f))
1100       (((not (or pair list))) (let ((#(tmp) #(1))) '#t)))
1101
1102(chicken.base#butlast (forall (a) (#(procedure #:clean #:enforce) chicken.base#butlast ((pair a *)) (list-of a))))
1103(chicken.base#chop (forall (a) (#(procedure #:clean #:enforce) chicken.base#chop ((list-of a) fixnum) (list-of a))))
1104(chicken.base#complement (#(procedure #:clean #:enforce) chicken.base#complement ((procedure (#!rest) *)) (procedure (#!rest) boolean)))
1105(chicken.base#compose (#(procedure #:clean #:enforce) chicken.base#compose (#!rest procedure) procedure))
1106(chicken.base#compress (forall (a) (#(procedure #:clean #:enforce) chicken.base#compress (list (list-of a)) (list-of a))))
1107(chicken.base#conjoin (#(procedure #:clean #:enforce) chicken.base#conjoin (#!rest (procedure (*) *)) (procedure (*) *)))
1108(chicken.base#constantly (forall (a) (#(procedure #:pure) chicken.base#constantly (a) (procedure (#!rest) a))))
1109(chicken.base#disjoin (#(procedure #:clean #:enforce) chicken.base#disjoin (#!rest (procedure (*) *)) (procedure (*) *)))
1110(chicken.base#each (#(procedure #:clean #:enforce) chicken.base#each (#!rest procedure) procedure))
1111(chicken.base#flatten (#(procedure #:clean #:enforce) chicken.base#flatten (#!rest *) list))
1112(chicken.base#flip (#(procedure #:clean #:enforce) chicken.base#flip ((procedure (* *) . *)) (procedure (* *) . *)))
1113(chicken.base#identity (forall (a) (#(procedure #:pure #:foldable) chicken.base#identity (a) a)))
1114(chicken.base#intersperse (#(procedure #:clean #:enforce) chicken.base#intersperse (list *) list))
1115(chicken.base#join (#(procedure #:clean #:enforce) chicken.base#join ((list-of list) #!optional list) list))
1116(chicken.base#list-of? (#(procedure #:clean #:enforce) chicken.base#list-of? ((procedure (*) *)) (procedure (list) boolean)))
1117
1118(chicken.base#o (#(procedure #:clean #:enforce) chicken.base#o (#!rest (procedure (*) *)) (procedure (*) *)))
1119
1120(chicken.base#rassoc
1121 (forall (a b c) (#(procedure #:clean #:foldable) chicken.base#rassoc
1122                  (a (list-of (pair b c)) #!optional (procedure (a b) *))
1123                  (or false (pair b c)))))
1124(chicken.base#tail? (#(procedure #:clean) chicken.base#tail? (* *) boolean))
1125
1126(chicken.base#promise? (#(procedure #:pure #:predicate (struct promise)) chicken.base#promise? (*) boolean))
1127
1128(chicken.base#make-promise (#(procedure #:enforce) chicken.base#make-promise (*) (struct promise))
1129              (((struct promise)) #(1)))
1130
1131
1132;; bitwise
1133
1134(chicken.bitwise#integer-length
1135 (#(procedure #:clean #:enforce #:foldable) chicken.bitwise#integer-length (integer) fixnum)
1136		((fixnum) (##core#inline "C_i_fixnum_length" #(1)))
1137		((*) (##core#inline "C_i_integer_length" #(1))))
1138
1139(chicken.bitwise#arithmetic-shift
1140 (#(procedure #:clean #:enforce #:foldable) chicken.bitwise#arithmetic-shift (integer fixnum) integer))
1141
1142(chicken.bitwise#bit->boolean
1143 (#(procedure #:clean #:enforce #:foldable) chicken.bitwise#bit->boolean (integer integer) boolean)
1144	  ((fixnum fixnum) (##core#inline "C_i_fixnum_bit_to_bool" #(1) #(2))))
1145
1146(chicken.bitwise#bitwise-and
1147 (#(procedure #:clean #:enforce #:foldable) chicken.bitwise#bitwise-and (#!rest integer) integer)
1148           (() '-1)
1149           ((fixnum) (fixnum) #(1))
1150           ((integer) #(1))
1151           ((fixnum fixnum) (fixnum) (##core#inline "C_u_fixnum_and" #(1) #(2))))
1152
1153(chicken.bitwise#bitwise-ior
1154 (#(procedure #:clean #:enforce #:foldable) chicken.bitwise#bitwise-ior (#!rest integer) integer)
1155           (() '0)
1156           ((fixnum) (fixnum) #(1))
1157           ((integer) #(1))
1158           ((fixnum fixnum) (fixnum) (##core#inline "C_u_fixnum_or" #(1) #(2))))
1159
1160(chicken.bitwise#bitwise-xor
1161 (#(procedure #:clean #:enforce #:foldable) chicken.bitwise#bitwise-xor (#!rest integer) integer)
1162           (() '0)
1163           ((fixnum) (fixnum) #(1))
1164           ((integer) #(1))
1165           ((fixnum fixnum) (fixnum) (##core#inline "C_fixnum_xor" #(1) #(2))))
1166
1167(chicken.bitwise#bitwise-not
1168 (#(procedure #:clean #:enforce #:foldable) chicken.bitwise#bitwise-not (integer) integer))
1169
1170;; bytevector
1171
1172(chicken.bytevector#bytevector (#(procedure #:clean) chicken.bytevector#bytevector (#!rest fixnum) bytevector))
1173(chicken.bytevector#bytevector? (#(procedure #:pure #:predicate bytevector) chicken.bytevector#bytevector? (*) boolean))
1174(chicken.bytevector#bytevector=? (#(procedure #:clean #:enforce #:foldable) chicken.bytevector#bytevector=? (bytevector bytevector) boolean))
1175(chicken.bytevector#bytevector-length (#(procedure #:clean #:enforce #:foldable) chicken.bytevector#bytevector-size (bytevector) fixnum)
1176	   ((bytevector) (##sys#size #(1))))
1177(chicken.bytevector#utf8->string (#(procedure #:clean #:enforce) chicken.bytevector#utf8->string (bytevector #!optional boolean) string))
1178(chicken.bytevector#latin1->string (#(procedure #:clean #:enforce) chicken.bytevector#latin1->string (bytevector) string))
1179(chicken.bytevector#make-bytevector (#(procedure #:clean #:enforce) chicken.bytevector#make-bytevector (fixnum #!optional fixnum) bytevector)
1180	   ((fixnum) (##sys#make-bytevector #(1))))
1181(chicken.bytevector#string->utf8 (#(procedure #:clean #:enforce) chicken.bytevector#string->utf8 (string) bytevector))
1182(chicken.bytevector#string->latin1 (#(procedure #:clean #:enforce) chicken.bytevector#string->latin1 (string) bytevector))
1183(chicken.bytevector#bytevector-u8-ref (#(procedure #:clean #:pure #:enforce) chicken.bytevector#bytevector-u8-ref (bytevector fixnum) fixnum))
1184(chicken.bytevector#bytevector-u8-set! (#(procedure #:clean #:enforce) chicken.bytevector#bytevector-u8-set! (bytevector fixnum fixnum) undefined))
1185(chicken.bytevector#bytevector-copy (#(procedure #:clean #:enforce) chicken.bytevector#bytevector-copy (bytevector #!optional fixnum fixnum) bytevector))
1186(chicken.bytevector#bytevector-copy! (#(procedure #:clean #:enforce) chicken.bytevector#bytevector-copy! (bytevector fixnum bytevector #!optional fixnum fixnum) undefined))
1187(chicken.bytevector#bytevector-append (#(procedure #:clean #:enforce) chicken.bytevector#bytevector-append (#!rest bytevector) bytevector))
1188
1189;; condition
1190
1191(chicken.condition#abort (procedure chicken.condition#abort (*) noreturn))
1192(chicken.condition#condition (#(procedure #:clean #:enforce) chicken.condition#condition (list #!rest list) (struct condition)))
1193(chicken.condition#condition? (#(procedure #:pure #:predicate (struct condition)) chicken.condition#condition? (*) boolean))
1194(chicken.condition#condition->list (#(procedure #:clean #:enforce) chicken.condition#condition->list ((struct condition)) (list-of pair)))
1195(chicken.condition#condition-predicate (#(procedure #:clean #:enforce) chicken.condition#condition-predicate (*) (procedure ((struct condition)) boolean)))
1196(chicken.condition#condition-property-accessor (#(procedure #:clean #:enforce) chicken.condition#condition-property-accessor (* * #!optional *) (procedure ((struct condition)) *)))
1197
1198(chicken.condition#current-exception-handler
1199 (#(procedure #:clean #:enforce) chicken.condition#current-exception-handler (#!optional (procedure (*) noreturn) boolean boolean) procedure)
1200 ((procedure) (let ((#(tmp1) #(1)))
1201		(let ((#(tmp2) (set! ##sys#current-exception-handler #(tmp1))))
1202		  #(tmp1))))
1203 (() ##sys#current-exception-handler))
1204(chicken.condition#get-condition-property (#(procedure #:clean #:enforce) chicken.condition#get-condition-property ((struct condition) * * #!optional *) *))
1205(chicken.condition#make-composite-condition (#(procedure #:clean #:enforce) chicken.condition#make-composite-condition (#!rest (struct condition)) (struct condition)))
1206(chicken.condition#make-property-condition (#(procedure #:clean #:enforce) chicken.condition#make-property-condition (* #!rest *) (struct condition)))
1207(chicken.condition#print-error-message (#(procedure #:clean #:enforce) chicken.condition#print-error-message (* #!optional output-port string) undefined))
1208(chicken.condition#with-exception-handler (#(procedure #:enforce) chicken.condition#with-exception-handler ((procedure (*) . *) (procedure () . *)) . *))
1209(chicken.condition#signal (procedure chicken.condition#signal (*) . *))
1210
1211;; continuation
1212
1213(chicken.continuation#continuation-capture (#(procedure #:enforce) chicken.continuation#continuation-capture ((procedure ((struct continuation)) . *)) *))
1214(chicken.continuation#continuation-graft (#(procedure #:clean #:enforce) chicken.continuation#continuation-graft ((struct continuation) (procedure () . *)) *))
1215(chicken.continuation#continuation-return (#(procedure #:enforce) chicken.continuation#continuation-return ((struct continuation) #!rest) . *)) ;XXX make return type more specific?
1216(chicken.continuation#continuation? (#(procedure #:pure #:predicate (struct continuation)) chicken.continuation#continuation? (*) boolean))
1217
1218;; read-syntax
1219
1220(chicken.read-syntax#copy-read-table (#(procedure #:clean #:enforce) chicken.read-syntax#copy-read-table ((struct read-table)) (struct read-table)))
1221(chicken.read-syntax#current-read-table
1222 (#(procedure #:clean) chicken.read-syntax#current-read-table (#!optional (struct read-table)) (struct read-table)))
1223(chicken.read-syntax#define-reader-ctor (#(procedure #:clean #:enforce) chicken.read-syntax#define-reader-ctor (symbol procedure) undefined))
1224
1225(chicken.read-syntax#set-parameterized-read-syntax!
1226 (#(procedure #:clean #:enforce) chicken.read-syntax#set-parameterized-read-syntax!
1227  ((or char symbol) (or false (procedure (input-port fixnum) . *)))
1228  undefined))
1229
1230(chicken.read-syntax#set-read-syntax!
1231 (#(procedure #:clean #:enforce) chicken.read-syntax#set-read-syntax!
1232  ((or char symbol) (or false (procedure (input-port) . *)))
1233  undefined))
1234
1235(chicken.read-syntax#set-sharp-read-syntax!
1236 (#(procedure #:clean #:enforce) chicken.read-syntax#set-sharp-read-syntax!
1237  ((or char symbol) (or false (procedure (input-port) . *))) undefined))
1238
1239
1240;; time
1241
1242(chicken.time#cpu-time (#(procedure #:clean) chicken.time#cpu-time () fixnum fixnum))
1243(chicken.time#current-seconds (#(procedure #:clean) chicken.time#current-seconds () integer))
1244(chicken.time#current-process-milliseconds (#(procedure #:clean) chicken.time#current-process-milliseconds () integer))
1245
1246(##sys#error (procedure ##sys#error (* #!rest) noreturn))
1247(##sys#signal-hook (procedure ##sys#signal-hook (* #!rest) noreturn))
1248(##sys#debug-mode? (procedure ##sys#debug-mode? () boolean)
1249		   (() (##core#inline "C_i_debug_modep")))
1250
1251
1252;; flonum
1253
1254(chicken.flonum#flonum-decimal-precision fixnum)
1255(chicken.flonum#flonum-epsilon float)
1256(chicken.flonum#flonum-maximum-decimal-exponent fixnum)
1257(chicken.flonum#flonum-maximum-exponent fixnum)
1258(chicken.flonum#flonum-minimum-decimal-exponent fixnum)
1259(chicken.flonum#flonum-minimum-exponent fixnum)
1260(chicken.flonum#flonum-precision fixnum)
1261(chicken.flonum#flonum-print-precision (#(procedure #:clean #:enforce) chicken.flonum#flonum-print-precision (#!optional fixnum) fixnum))
1262(chicken.flonum#flonum-radix fixnum)
1263
1264(chicken.flonum#fp- (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp- (float float) float)
1265     ((float float) (##core#inline_allocate ("C_a_i_flonum_difference" 4) #(1) #(2)) ))
1266
1267(chicken.flonum#fp* (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp* (float float) float)
1268     ((float float) (##core#inline_allocate ("C_a_i_flonum_times" 4) #(1) #(2)) ))
1269
1270(chicken.flonum#fp/ (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp/ (float float) float)
1271     ((float float) (##core#inline_allocate ("C_a_i_flonum_quotient" 4) #(1) #(2)) ))
1272
1273(chicken.flonum#fpgcd (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpgcd (float float) float)
1274       ((float float) (##core#inline_allocate ("C_a_i_flonum_gcd" 4) #(1) #(2)) ))
1275
1276(chicken.flonum#fp+ (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp+ (float float) float)
1277     ((float float) (##core#inline_allocate ("C_a_i_flonum_plus" 4) #(1) #(2)) ))
1278
1279(chicken.flonum#fp*+ (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp*+ (float float float) float)
1280     ((float float float) (##core#inline_allocate ("C_a_i_flonum_multiply_add" 4) #(1) #(2) #(3)) ))
1281
1282(chicken.flonum#fp< (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp< (float float) boolean)
1283     ((float float) (##core#inline "C_flonum_lessp" #(1) #(2)) ))
1284
1285(chicken.flonum#fp<= (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp<= (float float) boolean)
1286      ((float float) (##core#inline "C_flonum_less_or_equal_p" #(1) #(2)) ))
1287
1288(chicken.flonum#fp= (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp= (float float) boolean)
1289     ((float float) (##core#inline "C_flonum_equalp" #(1) #(2)) ))
1290
1291(chicken.flonum#fp> (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp> (float float) boolean)
1292     ((float float) (##core#inline "C_flonum_greaterp" #(1) #(2)) ))
1293
1294(chicken.flonum#fp>= (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fp>= (float float) boolean)
1295      ((float float) (##core#inline "C_flonum_greater_or_equal_p" #(1) #(2)) ))
1296
1297(chicken.flonum#fpabs (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpabs (float) float)
1298       ((float) (##core#inline_allocate ("C_a_i_flonum_abs" 4) #(1) )))
1299
1300(chicken.flonum#fpacos (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpacos (float) float)
1301		       ((float) (##core#inline_allocate ("C_a_i_flonum_acos" 4) #(1) )))
1302
1303(chicken.flonum#fpacosh (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpacosh (float) float)
1304			((float) (##core#inline_allocate ("C_a_i_flonum_acosh" 4) #(1) )))
1305
1306(chicken.flonum#fpasin (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpasin (float) float)
1307		       ((float) (##core#inline_allocate ("C_a_i_flonum_asin" 4) #(1) )))
1308
1309(chicken.flonum#fpasinh (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpasinh (float) float)
1310			((float) (##core#inline_allocate ("C_a_i_flonum_asinh" 4) #(1) )))
1311
1312(chicken.flonum#fpatan (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpatan (float) float)
1313		       ((float) (##core#inline_allocate ("C_a_i_flonum_atan" 4) #(1) )))
1314
1315(chicken.flonum#fpatanh (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpatanh (float) float)
1316			((float) (##core#inline_allocate ("C_a_i_flonum_atanh" 4) #(1) )))
1317
1318(chicken.flonum#fpatan2 (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpatan2 (float float) float)
1319			((float float) (##core#inline_allocate ("C_a_i_flonum_atan2" 4) #(1) #(2))))
1320
1321(chicken.flonum#fpceiling (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpceiling (float) float)
1322	   ((float) (##core#inline_allocate ("C_a_i_flonum_ceiling" 4) #(1) )))
1323
1324(chicken.flonum#fpcos (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpcos (float) float)
1325		      ((float) (##core#inline_allocate ("C_a_i_flonum_cos" 4) #(1) )))
1326
1327(chicken.flonum#fpcosh (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpcosh (float) float)
1328		       ((float) (##core#inline_allocate ("C_a_i_flonum_cosh" 4) #(1) )))
1329
1330(chicken.flonum#fpexp (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpexp (float) float)
1331		      ((float) (##core#inline_allocate ("C_a_i_flonum_exp" 4) #(1) )))
1332
1333(chicken.flonum#fpexpt (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpexpt (float float) float)
1334	((float float) (##core#inline_allocate ("C_a_i_flonum_expt" 4) #(1) #(2))))
1335
1336(chicken.flonum#fpfloor (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpfloor (float) float)
1337	 ((float) (##core#inline_allocate ("C_a_i_flonum_floor" 4) #(1) )))
1338
1339(chicken.flonum#fpinteger? (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpinteger? (float) boolean)
1340	    ((float) (##core#inline "C_u_i_fpintegerp" #(1) )))
1341
1342(chicken.flonum#fplog (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fplog (float) float)
1343       ((float) (##core#inline_allocate ("C_a_i_flonum_log" 4) #(1) )))
1344
1345(chicken.flonum#fpmax (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpmax (float float) float)
1346       ((float float) (##core#inline "C_i_flonum_max" #(1) #(2))))
1347
1348(chicken.flonum#fpmin (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpmin (float float) float)
1349       ((float float) (##core#inline "C_i_flonum_min" #(1) #(2))))
1350
1351(chicken.flonum#fpneg (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpneg (float) float)
1352       ((float) (##core#inline_allocate ("C_a_i_flonum_negate" 4) #(1) )))
1353
1354(chicken.flonum#fpround (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpround (float) float)
1355	 ((float) (##core#inline_allocate ("C_a_i_flonum_round" 4) #(1) )))
1356
1357(chicken.flonum#fpsin (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpsin (float) float)
1358		      ((float) (##core#inline_allocate ("C_a_i_flonum_sin" 4) #(1) )))
1359
1360(chicken.flonum#fpsinh (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpsinh (float) float)
1361		       ((float) (##core#inline_allocate ("C_a_i_flonum_sinh" 4) #(1) )))
1362
1363(chicken.flonum#fpsqrt (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fpsqrt (float) float)
1364		       ((float) (##core#inline_allocate ("C_a_i_flonum_sqrt" 4) #(1) )))
1365
1366(chicken.flonum#fptan (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fptan (float) float)
1367		      ((float) (##core#inline_allocate ("C_a_i_flonum_tan" 4) #(1) )))
1368
1369(chicken.flonum#fptanh (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fptanh (float) float)
1370		       ((float) (##core#inline_allocate ("C_a_i_flonum_tanh" 4) #(1) )))
1371
1372(chicken.flonum#fptruncate (#(procedure #:clean #:enforce #:foldable) chicken.flonum#fptruncate (float) float)
1373			   ((float) (##core#inline_allocate ("C_a_i_flonum_truncate" 4) #(1) )))
1374
1375;; fixnum
1376
1377(chicken.fixnum#fixnum-bits fixnum)
1378(chicken.fixnum#fixnum-precision fixnum)
1379
1380;;XXX These aren't enforcing, and aren't foldable due to 32/64-bit issues
1381(chicken.fixnum#fx- (#(procedure #:clean) chicken.fixnum#fx- (fixnum fixnum) fixnum))
1382(chicken.fixnum#fx* (#(procedure #:clean) chicken.fixnum#fx* (fixnum fixnum) fixnum))
1383(chicken.fixnum#fx/ (#(procedure #:clean) chicken.fixnum#fx/ (fixnum fixnum) fixnum))
1384(chicken.fixnum#fxgcd (#(procedure #:clean) chicken.fixnum#fxgcd (fixnum fixnum) fixnum))
1385(chicken.fixnum#fx+ (#(procedure #:clean) chicken.fixnum#fx+ (fixnum fixnum) fixnum))
1386(chicken.fixnum#fx< (#(procedure #:clean) chicken.fixnum#fx< (fixnum fixnum) boolean))
1387(chicken.fixnum#fx<= (#(procedure #:clean) chicken.fixnum#fx<= (fixnum fixnum) boolean))
1388(chicken.fixnum#fx= (#(procedure #:clean) chicken.fixnum#fx= (fixnum fixnum) boolean))
1389(chicken.fixnum#fx> (#(procedure #:clean) chicken.fixnum#fx> (fixnum fixnum) boolean))
1390(chicken.fixnum#fx>= (#(procedure #:clean) chicken.fixnum#fx>= (fixnum fixnum) boolean))
1391(chicken.fixnum#fxand (#(procedure #:clean) chicken.fixnum#fxand (fixnum fixnum) fixnum))
1392(chicken.fixnum#fxeven? (#(procedure #:clean) chicken.fixnum#fxeven? (fixnum) boolean))
1393(chicken.fixnum#fxior (#(procedure #:clean) chicken.fixnum#fxior (fixnum fixnum) fixnum))
1394(chicken.fixnum#fxmax (#(procedure #:clean) chicken.fixnum#fxmax (fixnum fixnum) fixnum))
1395(chicken.fixnum#fxmin (#(procedure #:clean) chicken.fixnum#fxmin (fixnum fixnum) fixnum))
1396(chicken.fixnum#fxmod (#(procedure #:clean) chicken.fixnum#fxmod (fixnum fixnum) fixnum))
1397(chicken.fixnum#fxrem (#(procedure #:clean) chicken.fixnum#fxrem (fixnum fixnum) fixnum))
1398(chicken.fixnum#fxneg (#(procedure #:clean) chicken.fixnum#fxneg (fixnum) fixnum))
1399(chicken.fixnum#fxnot (#(procedure #:clean) chicken.fixnum#fxnot (fixnum) fixnum))
1400(chicken.fixnum#fxodd? (#(procedure #:clean) chicken.fixnum#fxodd? (fixnum) boolean))
1401(chicken.fixnum#fxshl (#(procedure #:clean) chicken.fixnum#fxshl (fixnum fixnum) fixnum))
1402(chicken.fixnum#fxshr (#(procedure #:clean) chicken.fixnum#fxshr (fixnum fixnum) fixnum))
1403(chicken.fixnum#fxxor (#(procedure #:clean) chicken.fixnum#fxxor (fixnum fixnum) fixnum))
1404(chicken.fixnum#fxlen (#(procedure #:clean) chicken.fixnum#fxlen (fixnum) fixnum))
1405
1406(chicken.fixnum#fx+? (#(procedure #:pure) chicken.fixnum#fx+? ((or fixnum false) (or fixnum false)) (or fixnum false)))
1407(chicken.fixnum#fx-? (#(procedure #:pure) chicken.fixnum#fx-? ((or fixnum false) (or fixnum false)) (or fixnum false)))
1408(chicken.fixnum#fx*? (#(procedure #:pure) chicken.fixnum#fx*? ((or fixnum false) (or fixnum false)) (or fixnum false)))
1409(chicken.fixnum#fx/? (#(procedure #:clean) chicken.fixnum#fx/? ((or fixnum false) (or fixnum false)) (or fixnum false)))
1410
1411;; keyword
1412
1413(chicken.keyword#get-keyword (#(procedure #:clean #:enforce) chicken.keyword#get-keyword (keyword list #!optional *) *))
1414(chicken.keyword#keyword->string (#(procedure #:clean #:enforce) chicken.keyword#keyword->string (keyword) string))
1415(chicken.keyword#keyword? (#(procedure #:pure #:predicate keyword) chicken.keyword#keyword? (*) boolean))
1416(chicken.keyword#string->keyword (#(procedure #:clean #:enforce) chicken.keyword#string->keyword (string) keyword))
1417
1418;; load
1419
1420(chicken.load#dynamic-load-libraries
1421 (#(procedure #:clean) chicken.load#dynamic-load-libraries (#!optional (list-of string)) (list-of string)))
1422(chicken.load#load-library (#(procedure #:enforce) chicken.load#load-library (symbol #!optional string) undefined))
1423(chicken.load#load-noisily (procedure chicken.load#load-noisily (string #!rest) undefined))
1424(chicken.load#load-relative (#(procedure #:enforce) chicken.load#load-relative (string #!optional (or (struct environment) (procedure (*) . *))) undefined))
1425(chicken.load#load-verbose (#(procedure #:clean) chicken.load#load-verbose (#!optional *) *))
1426(chicken.load#provide (#(procedure #:clean #:enforce) chicken.load#provide (#!rest symbol) undefined))
1427(chicken.load#provided? (#(procedure #:clean #:enforce) chicken.load#provided? (#!rest symbol) boolean))
1428(chicken.load#require (#(procedure #:clean) chicken.load#require (#!rest symbol) undefined))
1429(chicken.load#set-dynamic-load-mode! (#(procedure #:clean #:enforce) chicken.load#set-dynamic-load-mode! ((or symbol (list-of symbol))) undefined))
1430(chicken.load#find-file (#(procedure #:clean) chicken.load#find-file (string (or (list-of string) string)) (or string false)))
1431
1432;; platform
1433
1434(chicken.platform#build-platform (#(procedure #:pure) chicken.platform#build-platform () symbol))
1435(chicken.platform#chicken-version (#(procedure #:pure) chicken.platform#chicken-version (#!optional *) string))
1436(chicken.platform#chicken-home (#(procedure #:clean) chicken.platform#chicken-home () string))
1437(chicken.platform#include-path (#(procedure #:clean) chicken.platform#include-path (#!optional (list-of string)) (list-of string)))
1438(chicken.platform#feature? (#(procedure #:clean) chicken.platform#feature? (#!rest (or keyword symbol string)) boolean))
1439(chicken.platform#software-type (#(procedure #:pure) chicken.platform#software-type () symbol))
1440(chicken.platform#software-version (#(procedure #:pure) chicken.platform#software-version () symbol))
1441(chicken.platform#register-feature! (#(procedure #:clean #:enforce) chicken.platform#register-feature! (#!rest (or keyword symbol string)) undefined))
1442(chicken.platform#unregister-feature! (#(procedure #:clean #:enforce) chicken.platform#unregister-feature! (#!rest (or keyword symbol string)) undefined))
1443(chicken.platform#machine-byte-order (#(procedure #:pure) chicken.platform#machine-byte-order () symbol))
1444(chicken.platform#machine-type (#(procedure #:pure) chicken.platform#machine-type () symbol))
1445(chicken.platform#repository-path (#(procedure #:clean) chicken.platform#repository-path (#!optional *) *))
1446(chicken.platform#installation-repository (#(procedure #:clean) chicken.platform#installation-repository (#!optional *) *))
1447(chicken.platform#return-to-host (procedure chicken.platform#return-to-host () . *))
1448(chicken.platform#system-config-directory (#(procedure #:clean) chicken.platform#system-config-directory () (or string false)))
1449(chicken.platform#system-cache-directory (#(procedure #:clean) chicken.platform#system-cache-directory () (or string false)))
1450
1451;; plist
1452
1453(chicken.plist#get (#(procedure #:clean #:enforce) chicken.plist#get (symbol * #!optional *) *)
1454		   ((symbol * *) (##core#inline "C_i_getprop" #(1) #(2) #(3)))
1455                   ((symbol *) (##core#inline "C_i_getprop" #(1) #(2) '#f)))
1456(chicken.plist#get-properties (forall (a)
1457                                      (#(procedure #:clean #:enforce) chicken.plist#get-properties (symbol (or a (list-of a))) a * (list-of pair))))
1458(chicken.plist#put! (#(procedure #:clean #:enforce) chicken.plist#put! (symbol * *) undefined)
1459		    ((symbol * *)
1460		     (##core#inline_allocate ("C_a_i_putprop" 8) #(1) #(2) #(3))))
1461(chicken.plist#remprop! (#(procedure #:clean #:enforce) chicken.plist#remprop! (symbol *) undefined))
1462(chicken.plist#symbol-plist (#(procedure #:clean #:enforce) chicken.plist#symbol-plist (symbol) list)
1463			    ((symbol) (##sys#slot #(1) '2)))
1464
1465(chicken.flonum#maximum-flonum float)
1466(chicken.flonum#minimum-flonum float)
1467(chicken.fixnum#most-negative-fixnum fixnum)
1468(chicken.fixnum#most-positive-fixnum fixnum)
1469
1470;; gc
1471
1472(chicken.gc#current-gc-milliseconds (#(procedure #:clean) chicken.gc#current-gc-milliseconds () integer))
1473(chicken.gc#force-finalizers (procedure chicken.gc#force-finalizers () undefined))
1474(chicken.gc#gc (#(procedure #:clean) chicken.gc#gc (#!optional *) fixnum))
1475(chicken.gc#memory-statistics (#(procedure #:clean) chicken.gc#memory-statistics () (vector-of fixnum)))
1476(chicken.gc#set-finalizer! (#(procedure #:clean #:enforce) chicken.gc#set-finalizer! (* (procedure (*) . *)) *))
1477(chicken.gc#make-finalizer (#(procedure #:clean #:enforce) chicken.gc#make-finalizer (#!rest *) (procedure (#!optional boolean) *)))
1478(chicken.gc#add-to-finalizer (#(procedure #:clean #:enforce) chicken.gc#add-to-finalizer (procedure #!rest *) undefined))
1479(chicken.gc#set-gc-report! (#(procedure #:clean) chicken.gc#set-gc-report! (*) undefined))
1480
1481(chicken.repl#repl (#(procedure #:enforce) chicken.repl#repl (#!optional (procedure (*) . *)) undefined))
1482(chicken.repl#repl-prompt (#(procedure #:clean #:enforce) chicken.repl#repl-prompt (#!optional (procedure () string)) procedure))
1483(chicken.repl#reset (procedure chicken.repl#reset () noreturn))
1484(chicken.repl#reset-handler (#(procedure #:clean #:enforce) chicken.repl#reset-handler (#!optional (procedure () . *)) procedure))
1485(chicken.repl#quit (procedure chicken.repl#quit (#!optional *) noreturn))
1486
1487
1488(##sys#void (#(procedure #:pure) void (#!rest) undefined))
1489
1490;; chicken (internal)
1491
1492(##sys#foreign-char-argument (#(procedure #:clean #:enforce) ##sys#foreign-char-argument (char) char)
1493			     ((char) #(1)))
1494(##sys#foreign-fixnum-argument (#(procedure #:clean #:enforce) ##sys#foreign-fixnum-argument (fixnum) fixnum)
1495			       ((fixnum) #(1)))
1496(##sys#foreign-flonum-argument (#(procedure #:clean #:enforce) ##sys#foreign-flonum-argument (number) number)
1497			       ((float) #(1)))
1498(##sys#foreign-string-argument (#(procedure #:clean #:enforce) ##sys#foreign-string-argument (string) string)
1499			       ((string) #(1)))
1500(##sys#foreign-symbol-argument (#(procedure #:clean #:enforce) ##sys#foreign-symbol-argument (symbol) symbol)
1501			       ((symbol) #(1)))
1502(##sys#foreign-pointer-argument (forall ((p (or locative pointer)))
1503					(#(procedure #:clean #:enforce) ##sys#foreign-pointer-argument (p) p))
1504				((pointer) (pointer) #(1))
1505				((locative) (locative) #(1)))
1506
1507(##sys#check-bytevector (#(procedure #:clean #:enforce) ##sys#check-bytevector (bytevector #!optional *) *)
1508		  ((bytevector) (let ((#(tmp) #(1))) '#t))
1509		  ((bytevector *) (let ((#(tmp) #(1))) '#t)))
1510(##sys#check-pair (#(procedure #:clean #:enforce) ##sys#check-pair (pair #!optional *) *)
1511		  ((pair) (let ((#(tmp) #(1))) '#t))
1512		  ((pair *) (let ((#(tmp) #(1))) '#t)))
1513(##sys#check-list (#(procedure #:clean #:enforce) ##sys#check-list (list #!optional *) *)
1514		  (((or null pair list)) (let ((#(tmp) #(1))) '#t))
1515		  (((or null pair list) *) (let ((#(tmp) #(1))) '#t)))
1516(##sys#check-string (#(procedure #:clean #:enforce) ##sys#check-string (string #!optional *) *)
1517		    ((string) (let ((#(tmp) #(1))) '#t))
1518		    ((string) * (let ((#(tmp) #(1))) '#t)))
1519(##sys#check-number (#(procedure #:clean #:enforce) ##sys#check-number (number #!optional *) *)
1520		    ((number) (let ((#(tmp) #(1))) '#t))
1521		    ((number *) (let ((#(tmp) #(1))) '#t)))
1522(##sys#check-fixnum (#(procedure #:clean #:enforce) ##sys#check-fixnum (fixnum #!optional *) *)
1523		   ((fixnum) (let ((#(tmp) #(1))) '#t))
1524		   ((fixnum *) (let ((#(tmp) #(1))) '#t)))
1525(##sys#check-bytevector (#(procedure #:clean #:enforce) ##sys#check-bytevector (bytevector #!optional *) *)
1526		   ((bytevector) (let ((#(tmp) #(1))) '#t))
1527		   ((bytevector *) (let ((#(tmp) #(1))) '#t)))
1528(##sys#check-exact (#(procedure #:clean #:enforce) ##sys#check-exact (fixnum #!optional *) *)
1529		   ((fixnum) (let ((#(tmp) #(1))) '#t))
1530		   ((fixnum *) (let ((#(tmp) #(1))) '#t)))
1531(##sys#check-inexact (#(procedure #:clean #:enforce) ##sys#check-inexact (float #!optional *) *)
1532		     ((float) (let ((#(tmp) #(1))) '#t))
1533		     ((float *) (let ((#(tmp) #(1))) '#t)))
1534(##sys#check-symbol (#(procedure #:clean #:enforce) ##sys#check-symbol (symbol #!optional *) *)
1535		    ((symbol) (let ((#(tmp) #(1))) '#t))
1536		    ((symbol *) (let ((#(tmp) #(1))) '#t)))
1537(##sys#check-vector (#(procedure #:clean #:enforce) ##sys#check-vector (vector #!optional *) *)
1538		    ((vector) (let ((#(tmp) #(1))) '#t))
1539		    ((vector *) (let ((#(tmp) #(1))) '#t)))
1540(##sys#check-char (#(procedure #:clean #:enforce) ##sys#check-char (char #!optional *) *)
1541		  ((char) (let ((#(tmp) #(1))) '#t))
1542		  ((char *) (let ((#(tmp) #(1))) '#t)))
1543(##sys#check-boolean (#(procedure #:clean #:enforce) ##sys#check-boolean (boolean #!optional *) *)
1544		     ((boolean) (let ((#(tmp) #(1))) '#t))
1545		     ((boolean *) (let ((#(tmp) #(1))) '#t)))
1546(##sys#check-locative (#(procedure #:clean #:enforce) ##sys#check-locative (locative #!optional *) *)
1547		      ((locative) (let ((#(tmp) #(1))) '#t))
1548		      ((locative *) (let ((#(tmp) #(1))) '#t)))
1549(##sys#check-closure (#(procedure #:clean #:enforce) ##sys#check-closure (procedure #!optional *) *)
1550		     ((procedure) (let ((#(tmp) #(1))) '#t))
1551		     ((procedure *) (let ((#(tmp) #(1))) '#t)))
1552(##sys#check-keyword (#(procedure #:clean #:enforce) ##sys#check-keyword (keyword #!optional *) *)
1553		     ((keyword) (let ((#(tmp) #(1))) '#t))
1554		     ((keyword *) (let ((#(tmp) #(1))) '#t)))
1555
1556(##sys#check-range (#(procedure #:clean #:enforce) ##sys#check-range (fixnum #!rest *) *))
1557(##sys#check-range/including (#(procedure #:clean #:enforce) ##sys#check-range/including (fixnum #!rest *) *))
1558
1559(##sys#check-port
1560 (#(procedure #:clean #:enforce) ##sys#check-port ((or input-port output-port) #!optional *) *)
1561 (((or (refine (input) port) (refine (output) port))) (let ((#(tmp) #(1))) '#t))
1562 (((or (refine (input) port) (refine (output) port)) *) (let ((#(tmp) #(1))) '#t)))
1563
1564(##sys#check-input-port
1565 (#(procedure #:clean #:enforce) ##sys#check-input-port (input-port * #!optional *) *)
1566 ((* *) (##core#inline "C_i_check_port" #(1) '1 #(2)))
1567 ((* * *) (##core#inline "C_i_check_port_2" #(1) '1 #(2) #(3))))
1568
1569(##sys#check-output-port
1570 (#(procedure #:clean #:enforce) ##sys#check-output-port (output-port * #!optional *) *)
1571 ((* *) (##core#inline "C_i_check_port" #(1) '2 #(2)))
1572 ((* * *) (##core#inline "C_i_check_port_2" #(1) '2 #(2) #(3))))
1573
1574(##sys#check-open-port
1575 (#(procedure #:clean #:enforce) ##sys#check-open-port ((or input-port output-port) #!optional *) *)
1576 ((*) (##core#inline "C_i_check_port" #(1) '0 '#t))
1577 ((* *) (##core#inline "C_i_check_port_2" #(1) '0 '#t #(2))))
1578
1579(##sys#slot (#(procedure #:enforce) ##sys#slot (* fixnum) *))
1580
1581(##sys#setslot (#(procedure #:enforce) ##sys#setslot (* fixnum *) *)
1582	       #;((* fixnum immediate) (##sys#setislot #(1) #(2) #(3)))) ; too dangerous
1583
1584(##sys#size (#(procedure #:pure #:foldable) ##sys#size (*) fixnum))
1585
1586(##sys#standard-input input-port)
1587(##sys#standard-output output-port)
1588(##sys#standard-error output-port)
1589
1590(##sys#provide (procedure ##sys#provide (symbol) boolean)
1591  ((symbol) (##core#inline_allocate ("C_a_i_provide" 8) #(1))))
1592
1593(##sys#provided? (procedure ##sys#provided? (symbol) boolean)
1594  ((symbol) (##core#inline "C_i_providedp" #(1))))
1595
1596;; string
1597
1598(chicken.string#->string (procedure chicken.string#->string (*) string)
1599  ((string) #(1)))
1600
1601(chicken.string#conc (procedure chicken.string#conc (#!rest) string))
1602
1603(chicken.string#string-chomp (#(procedure #:clean #:enforce) chicken.string#string-chomp (string #!optional string) string))
1604(chicken.string#string-chop (#(procedure #:clean #:enforce) chicken.string#string-chop (string fixnum) (list-of string)))
1605(chicken.string#string-compare3 (#(procedure #:clean #:enforce) chicken.string#string-compare3 (string string) fixnum))
1606(chicken.string#string-compare3-ci (#(procedure #:clean #:enforce) chicken.string#string-compare3-ci (string string) fixnum))
1607(chicken.string#string-intersperse (#(procedure #:clean #:enforce) chicken.string#string-intersperse ((list-of string) #!optional string) string))
1608(chicken.string#string-split (#(procedure #:clean #:enforce) chicken.string#string-split (string #!optional string *) (list-of string)))
1609(chicken.string#string-translate (#(procedure #:clean #:enforce) chicken.string#string-translate (string * #!optional *) string))
1610(chicken.string#string-translate* (#(procedure #:clean #:enforce) chicken.string#string-translate* (string (list-of (pair string string))) string))
1611
1612(chicken.string#substring=? (#(procedure #:clean #:enforce #:foldable) chicken.string#substring=? (string string #!optional fixnum fixnum fixnum) boolean))
1613(chicken.string#substring-ci=? (#(procedure #:clean #:enforce #:foldable) chicken.string#substring-ci=? (string string #!optional fixnum fixnum fixnum) boolean))
1614(chicken.string#substring-index (#(procedure #:clean #:enforce #:foldable) chicken.string#substring-index (string string #!optional fixnum) (or false fixnum))
1615  ((* *) (##sys#substring-index #(1) #(2) '0))
1616  ((* * *) (##sys#substring-index #(1) #(2) #(3))))
1617(chicken.string#substring-index-ci (#(procedure #:clean #:enforce #:foldable) chicken.string#substring-index-ci (string string #!optional fixnum) (or false fixnum))
1618  ((* *) (##sys#substring-index-ci #(1) #(2) '0))
1619  ((* * *) (##sys#substring-index-ci #(1) #(2) #(3))))
1620
1621(chicken.string#reverse-list->string (#(procedure #:clean #:enforce) chicken.string#reverse-list->string ((list-of char)) string))
1622(chicken.string#reverse-string-append (#(procedure #:clean #:enforce) chicken.string#reverse-string-append ((list-of string)) string))
1623
1624(##sys#substring-index
1625 (#(procedure #:clean #:enforce #:foldable) ##sys#substring-index
1626  (string string fixnum)
1627  (or false fixnum)))
1628
1629(##sys#substring-index-ci
1630 (#(procedure #:clean #:enforce #:foldable) ##sys#substring-index-ci
1631  (string string fixnum)
1632  (or false fixnum)))
1633
1634;; io
1635
1636(chicken.io#read-list (#(procedure #:enforce) chicken.io#read-list (#!optional input-port (procedure (input-port) *) fixnum) list))
1637(chicken.io#read-buffered (#(procedure #:enforce) chicken.io#read-buffered (#!optional input-port) string))
1638(chicken.io#read-byte (#(procedure #:enforce) chicken.io#read-byte (#!optional input-port) *))
1639(chicken.io#read-line (#(procedure #:enforce) chicken.io#read-line (#!optional input-port (or false fixnum)) (or eof string)))
1640(chicken.io#read-lines (#(procedure #:enforce) chicken.io#read-lines (#!optional input-port fixnum) (list-of string)))
1641(chicken.io#read-string (#(procedure #:enforce) chicken.io#read-string (#!optional (or fixnum false) input-port) (or string eof)))
1642(chicken.io#read-string! (#(procedure #:enforce) chicken.io#read-string! ((or fixnum false) string #!optional input-port fixnum) fixnum))
1643(chicken.io#read-token (#(procedure #:enforce) chicken.io#read-token ((procedure (char) *) #!optional input-port) string))
1644(chicken.io#write-byte (#(procedure #:enforce) chicken.io#write-byte (fixnum #!optional output-port) undefined))
1645(chicken.io#write-line (#(procedure #:enforce) chicken.io#write-line (string #!optional output-port) undefined))
1646(chicken.io#write-bytevector (#(procedure #:enforce) chicken.io#write-bytevector (bytevector #!optional output-port fixnum fixnum) undefined))
1647(chicken.io#read-bytevector (#(procedure #:enforce) chicken.io#read-bytevector (#!optional * input-port) (or eof bytevector)))
1648(chicken.io#read-bytevector! (#(procedure #:enforce) chicken.io#read-bytevector! (bytevector #!optional input-port fixnum fixnum) fixnum))
1649
1650;; pretty-print
1651
1652(chicken.pretty-print#pp (#(procedure #:enforce) chicken.pretty-print#pp (* #!optional output-port) undefined))
1653(chicken.pretty-print#pretty-print (#(procedure #:enforce) chicken.pretty-print#pretty-print (* #!optional output-port) undefined))
1654(chicken.pretty-print#pretty-print-width (#(procedure #:clean) chicken.pretty-print#pretty-print-width (#!optional fixnum) *))
1655
1656;; format
1657
1658(chicken.format#format (procedure chicken.format#format (#!rest) *))
1659(chicken.format#fprintf (#(procedure #:enforce) chicken.format#fprintf (output-port string #!rest) undefined))
1660(chicken.format#printf (#(procedure #:enforce) chicken.format#printf (string #!rest) undefined))
1661(chicken.format#sprintf (#(procedure #:enforce #:foldable) chicken.format#sprintf (string #!rest) string))
1662
1663;; random
1664
1665(chicken.random#pseudo-random-integer (#(procedure #:clean #:enforce) chicken.random#pseudo-random-integer (integer) integer)
1666                                      ((fixnum) (##core#inline "C_random_fixnum" #(1))))
1667(chicken.random#pseudo-random-real (#(procedure #:clean #:enforce) chicken.random#pseudo-random-real () float))
1668(chicken.random#set-pseudo-random-seed! (#(procedure #:clean #:enforce) chicken.random#set-pseudo-random-seed! (bytevector #!optional fixnum) undefined))
1669(chicken.random#random-bytes (#(procedure #:clean #:enforce) chicken.random#random-bytes (#!optional * fixnum) *))
1670
1671;; file
1672
1673(chicken.file#directory (#(procedure #:clean #:enforce) chicken.file#directory (#!optional string *) (list-of string)))
1674(chicken.file#create-directory (#(procedure #:clean #:enforce) chicken.file#create-directory (string #!optional *) string))
1675(chicken.file#create-temporary-directory (#(procedure #:clean #:enforce) chicken.file#create-temporary-directory () string))
1676(chicken.file#create-temporary-file (#(procedure #:clean #:enforce) chicken.file#create-temporary-file (#!optional string) string))
1677(chicken.file#delete-directory (#(procedure #:clean #:enforce) chicken.file#delete-directory (string #!optional *) undefined))
1678(chicken.file#delete-file (#(procedure #:clean #:enforce) chicken.file#delete-file (string) string))
1679(chicken.file#delete-file* (#(procedure #:clean #:enforce) chicken.file#delete-file* (string) (or false string)))
1680(chicken.file#directory-exists? (#(procedure #:clean #:enforce) chicken.file#directory-exists? (string) (or false string)))
1681(chicken.file#file-exists? (#(procedure #:clean #:enforce) chicken.file#file-exists? (string) (or false string)))
1682(chicken.file#find-files (#(procedure #:enforce) chicken.file#find-files (string #!rest) list))
1683(chicken.file#glob (#(procedure #:clean #:enforce) chicken.file#glob (#!rest string) list))
1684(chicken.file#copy-file (#(procedure #:clean #:enforce) chicken.file#copy-file (string string #!optional * fixnum) fixnum))
1685(chicken.file#move-file (#(procedure #:clean #:enforce) chicken.file#move-file (string string #!optional * fixnum) fixnum))
1686(chicken.file#rename-file (#(procedure #:clean #:enforce) chicken.file#rename-file (string string #!optional *) string))
1687(chicken.file#file-readable? (#(procedure #:clean #:enforce) chicken.file#file-readable? (string) boolean))
1688(chicken.file#file-writable? (#(procedure #:clean #:enforce) chicken.file#file-writable? (string) boolean))
1689(chicken.file#file-executable? (#(procedure #:clean #:enforce) chicken.file#file-executable? (string) boolean))
1690
1691
1692;; scheme.file
1693
1694(scheme.file#file-exists? (#(procedure #:clean #:enforce) scheme.file#file-exists? (string) boolean))
1695(scheme.file#open-binary-input-file (#(procedure #:clean #:enforce) scheme.file#open-binary-input-file (string #!rest keyword) input-port))
1696(scheme.file#open-binary-output-file (#(procedure #:clean #:enforce) scheme.file#open-binary-output-file (string #!rest keyword) output-port))
1697
1698
1699;; pathname
1700
1701(chicken.pathname#absolute-pathname? (#(procedure #:clean #:enforce) chicken.pathname#absolute-pathname? (string) boolean))
1702(chicken.pathname#decompose-directory (#(procedure #:clean #:enforce) chicken.pathname#decompose-directory (string) * * *))
1703(chicken.pathname#decompose-pathname (#(procedure #:clean #:enforce) chicken.pathname#decompose-pathname (string) * * *))
1704(chicken.pathname#directory-null? (#(procedure #:clean #:enforce) chicken.pathname#directory-null? (string) boolean))
1705(chicken.pathname#make-absolute-pathname (#(procedure #:clean #:enforce) chicken.pathname#make-absolute-pathname ((or string (list-of string) false) #!optional (or string false) (or string false)) string))
1706(chicken.pathname#make-pathname (#(procedure #:clean #:enforce) chicken.pathname#make-pathname ((or string (list-of string) false) #!optional (or string false) (or string false)) string))
1707(chicken.pathname#normalize-pathname (#(procedure #:clean #:enforce) chicken.pathname#normalize-pathname (string #!optional symbol) string))
1708(chicken.pathname#pathname-directory (#(procedure #:clean #:enforce) chicken.pathname#pathname-directory (string) *))
1709(chicken.pathname#pathname-extension (#(procedure #:clean #:enforce) chicken.pathname#pathname-extension (string) *))
1710(chicken.pathname#pathname-file (#(procedure #:clean #:enforce) chicken.pathname#pathname-file (string) *))
1711(chicken.pathname#pathname-replace-directory (#(procedure #:clean #:enforce) chicken.pathname#pathname-replace-directory (string string) string))
1712(chicken.pathname#pathname-replace-extension (#(procedure #:clean #:enforce) chicken.pathname#pathname-replace-extension (string string) string))
1713(chicken.pathname#pathname-replace-file (#(procedure #:clean #:enforce) chicken.pathname#pathname-replace-file (string string) string))
1714(chicken.pathname#pathname-strip-directory (#(procedure #:clean #:enforce) chicken.pathname#pathname-strip-directory (string) string))
1715(chicken.pathname#pathname-strip-extension (#(procedure #:clean #:enforce) chicken.pathname#pathname-strip-extension (string) string))
1716
1717;; irregex
1718
1719(chicken.irregex#irregex (#(procedure #:clean) chicken.irregex#irregex (#!rest) (struct regexp)))
1720
1721;; Both of these DFA accessors return either #f or a DFA vector.
1722;; TODO: Should we spec out the entire DFA type layout?  It's plenty complex, so we don't
1723;; want to be specifying this for all procedures accepting a DFA!
1724;; A DFA looks like a vector of lists;
1725;; the car of each list is a number (for init-state), false or an alist;
1726;; the cdr is a list of alists, which contains a char (or vector) and two alists
1727;; These alists have types themselves, of course...
1728(chicken.irregex#irregex-dfa (#(procedure #:clean #:enforce) chicken.irregex#irregex-dfa ((struct regexp)) (or false vector))
1729	     (((struct regexp)) (##sys#slot #(1) '1)))
1730
1731(chicken.irregex#irregex-dfa/search (#(procedure #:clean #:enforce) chicken.irregex#irregex-dfa/search ((struct regexp)) (or false vector))
1732		    (((struct regexp)) (##sys#slot #(1) '2)))
1733
1734;; Procedure type returned by irregex-nfa is a matcher type (it is misnamed)
1735;; which is another complex procedure type.
1736(chicken.irregex#irregex-nfa (#(procedure #:clean #:enforce) chicken.irregex#irregex-nfa ((struct regexp)) (or false procedure))
1737	     (((struct regexp)) (##sys#slot #(1) '3)))
1738
1739(chicken.irregex#irregex-flags (#(procedure #:clean #:enforce) chicken.irregex#irregex-flags ((struct regexp)) fixnum)
1740	       (((struct regexp)) (##sys#slot #(1) '4)))
1741
1742(chicken.irregex#irregex-num-submatches (#(procedure #:clean #:enforce) chicken.irregex#irregex-num-submatches ((struct regexp))
1743				   fixnum)
1744			(((struct regexp)) (##sys#slot #(1) '5)))
1745
1746(chicken.irregex#irregex-lengths (#(procedure #:clean #:enforce) chicken.irregex#irregex-lengths ((struct regexp))
1747                  (vector-of (or false pair)))
1748		 (((struct regexp)) (##sys#slot #(1) '6)))
1749
1750;; XXX: Submatch names ought to be symbols according to the docs, but this is
1751;;      not enforced anywhere, so we can't assume it in the return type here.
1752(chicken.irregex#irregex-names (#(procedure #:clean #:enforce) chicken.irregex#irregex-names ((struct regexp))
1753                (list-of (pair * fixnum)))
1754	       (((struct regexp)) (##sys#slot #(1) '7)))
1755
1756;; XXX: specialize these? (how?)
1757(chicken.irregex#irregex-extract (#(procedure #:clean #:enforce) chicken.irregex#irregex-extract (* string #!optional fixnum fixnum)
1758                  (list-of string)))
1759(chicken.irregex#irregex-split (#(procedure #:clean #:enforce) chicken.irregex#irregex-split (* string #!optional fixnum fixnum)
1760                (list-of string)))
1761
1762(chicken.irregex#irregex-fold (forall (a) (#(procedure #:enforce) chicken.irregex#irregex-fold (* (procedure (fixnum (struct regexp-match) a) a) a string #!optional (procedure (fixnum *) *) fixnum fixnum) a)))
1763;; XXX TODO: chunker is a plain vector
1764(chicken.irregex#irregex-fold/chunked (forall (a c) (#(procedure #:enforce) chicken.irregex#irregex-fold/chunked (* (procedure (c fixnum (struct regexp-match) a) a) a vector c #!optional (procedure (c fixnum a) a) fixnum fixnum) a)))
1765(chicken.irregex#irregex-reset-matches! (procedure chicken.irregex#irregex-reset-matches! ((struct regexp-match))
1766                                   (struct regexp-match)))
1767
1768;; A silly procedure, but at least we can "inline" it like this
1769(chicken.irregex#irregex-match? (#(procedure #:clean #:enforce) chicken.irregex#irregex-match? (* string #!optional fixnum fixnum) boolean)
1770                ((* string) (if (chicken.irregex#irregex-match #(1) #(2)) '#t '#f))
1771                ((* string fixnum) (if (chicken.irregex#irregex-match #(1) #(2) #(3)) '#t '#f))
1772                ((* string fixnum fixnum) (if (chicken.irregex#irregex-match #(1) #(2) #(3) #(4)) '#t '#f)))
1773;; These two return #f or a match object
1774(chicken.irregex#irregex-match (#(procedure #:clean #:enforce) chicken.irregex#irregex-match (* string #!optional fixnum fixnum)
1775                (or false (struct regexp-match))))
1776;; XXX chunker is a plain vector
1777;; Not marked clean because we don't know what chunker procedures will do
1778(chicken.irregex#irregex-match/chunked (#(procedure #:enforce) chicken.irregex#irregex-match/chunked (* vector * #!optional fixnum)
1779                        (or false (struct regexp-match))))
1780
1781(chicken.irregex#irregex-match-data? (#(procedure #:pure #:predicate (struct regexp-match)) chicken.irregex#irregex-match-data? (*) boolean))
1782
1783(chicken.irregex#irregex-match-end-index (#(procedure #:clean #:enforce) chicken.irregex#irregex-match-end-index ((struct regexp-match) #!optional *) fixnum))
1784(chicken.irregex#irregex-match-end-chunk (#(procedure #:clean #:enforce) chicken.irregex#irregex-match-end-chunk ((struct regexp-match) #!optional *) *))
1785(chicken.irregex#irregex-match-start-index (#(procedure #:clean #:enforce) chicken.irregex#irregex-match-start-index ((struct regexp-match) #!optional *) fixnum))
1786(chicken.irregex#irregex-match-start-chunk (#(procedure #:clean #:enforce) chicken.irregex#irregex-match-start-chunk ((struct regexp-match) #!optional *) *))
1787(chicken.irregex#irregex-match-substring (#(procedure #:clean #:enforce) chicken.irregex#irregex-match-substring ((struct regexp-match) #!optional *) *))
1788(chicken.irregex#irregex-match-subchunk (#(procedure #:clean #:enforce) chicken.irregex#irregex-match-subchunk ((struct regexp-match) #!optional *) *))
1789
1790(chicken.irregex#irregex-match-names (#(procedure #:clean #:enforce) chicken.irregex#irregex-match-names ((struct regexp-match)) list)
1791		     (((struct regexp-match)) (##sys#slot #(1) '2)))
1792
1793(chicken.irregex#irregex-match-num-submatches (#(procedure #:enforce) chicken.irregex#irregex-match-num-submatches ((struct regexp-match)) fixnum)
1794                              (((struct regexp-match))
1795                               (chicken.fixnum#fx- (chicken.fixnum#fx/ (##sys#size (##sys#slot #(1) '1)) '4) '2)))
1796
1797(chicken.irregex#irregex-new-matches (procedure chicken.irregex#irregex-new-matches (*) *)) ; really only for internal use..
1798(chicken.irregex#irregex-opt (#(procedure #:clean #:enforce) chicken.irregex#irregex-opt (list) *))
1799(chicken.irregex#irregex-quote (#(procedure #:clean #:enforce) chicken.irregex#irregex-quote (string) string))
1800
1801(chicken.irregex#irregex-replace (#(procedure #:enforce) chicken.irregex#irregex-replace (* string #!rest) string))
1802(chicken.irregex#irregex-replace/all (#(procedure #:enforce) chicken.irregex#irregex-replace/all (* string #!rest) string))
1803;; Returns a list of strings, but *only* when all user-procedures do
1804(chicken.irregex#irregex-apply-match (procedure ((struct regexp-match) list) list)) ; internal use
1805
1806;; These return #f or a match object
1807(chicken.irregex#irregex-search (#(procedure #:clean #:enforce) chicken.irregex#irregex-search (* string #!optional fixnum fixnum)
1808                 (or false (struct regexp-match))))
1809;; XXX chunker is a plain vector
1810(chicken.irregex#irregex-search/chunked (#(procedure #:enforce) chicken.irregex#irregex-search/chunked (* vector * #!optional fixnum *)
1811                         (or false (struct regexp-match))))
1812(chicken.irregex#irregex-search/matches (#(procedure #:enforce) chicken.irregex#irregex-search/matches (* vector * * fixnum (struct regexp-match))
1813                         (or false (struct regexp-match))))
1814(chicken.irregex#irregex-match-valid-index?
1815 (#(procedure #:clean #:enforce) chicken.irregex#irregex-match-valid-index? ((struct regexp-match) *) boolean))
1816
1817(chicken.irregex#irregex? (#(procedure #:pure #:predicate (struct regexp)) chicken.irregex#irregex? (*) boolean))
1818
1819(chicken.irregex#make-irregex-chunker
1820 (#(procedure #:enforce) chicken.irregex#make-irregex-chunker
1821	    ((procedure (*) *)
1822	     (procedure (*) *)
1823	     #!optional
1824	     (procedure (*) *)
1825	     (procedure (*) *)
1826	     (procedure (* fixnum * fixnum) string)
1827	     (procedure (* fixnum * fixnum) *))
1828	    *))
1829(chicken.irregex#maybe-string->sre (#(procedure #:clean) chicken.irregex#maybe-string->sre (*) *))
1830(chicken.irregex#sre->irregex (#(procedure #:clean) chicken.irregex#sre->irregex (#!rest) *))
1831(chicken.irregex#string->irregex (#(procedure #:clean #:enforce) chicken.irregex#string->irregex (string #!rest) *))
1832(chicken.irregex#string->sre (#(procedure #:clean #:enforce) chicken.irregex#string->sre (string #!rest) *))
1833(chicken.irregex#glob->sre (#(procedure #:clean #:enforce) chicken.irregex#glob->sre (string) (pair symbol *)))
1834
1835
1836;; memory
1837
1838(chicken.memory#allocate (#(procedure #:clean #:enforce) chicken.memory#allocate (fixnum) (or false pointer)))
1839(chicken.memory#free (#(procedure #:clean #:enforce) chicken.memory#free (pointer) undefined))
1840
1841(chicken.memory#address->pointer (#(procedure #:clean #:enforce) chicken.memory#address->pointer (fixnum) pointer)
1842	((fixnum) (##sys#address->pointer #(1))))
1843
1844(chicken.memory#pointer->address (#(procedure #:clean #:enforce) chicken.memory#pointer->address ((or pointer procedure port locative)) integer)
1845	((pointer) (##sys#pointer->address #(1))))
1846
1847(chicken.memory#align-to-word (#(procedure #:clean) chicken.memory#align-to-word ((or number pointer locative procedure port)) (or pointer number)))
1848
1849(chicken.memory#move-memory! (#(procedure #:enforce) chicken.memory#move-memory! (* * #!optional fixnum fixnum fixnum) *))
1850
1851(chicken.memory#object->pointer (#(procedure #:clean) chicken.memory#object->pointer (*) *))
1852(chicken.memory#pointer->object (#(procedure #:clean #:enforce) chicken.memory#pointer->object (pointer) *)
1853	((pointer) (##core#inline "C_pointer_to_object" #(1))))
1854
1855(chicken.memory#pointer+ (#(procedure #:clean #:enforce) chicken.memory#pointer+ ((or pointer procedure port locative) fixnum) pointer))
1856(chicken.memory#pointer? (#(procedure #:clean #:predicate pointer) chicken.memory#pointer? (*) boolean))
1857(chicken.memory#pointer=? (#(procedure #:clean #:enforce) chicken.memory#pointer=? ((or pointer locative procedure port)
1858				  (or pointer locative procedure port)) boolean)
1859	((pointer pointer) (##core#inline "C_pointer_eqp" #(1) #(2))))
1860(chicken.memory#pointer-like? (#(procedure #:pure #:predicate (or pointer locative procedure port)) chicken.memory#pointer-like? (*) boolean)
1861	(((or pointer locative procedure port)) (let ((#(tmp) #(1))) '#t)))
1862
1863(chicken.memory#make-pointer-vector (#(procedure #:clean #:enforce) chicken.memory#make-pointer-vector (fixnum #!optional (or pointer false)) pointer-vector))
1864(chicken.memory#pointer-vector (#(procedure #:clean #:enforce) chicken.memory#pointer-vector (#!rest pointer-vector) boolean))
1865(chicken.memory#pointer-vector? (#(procedure #:pure #:predicate pointer-vector) chicken.memory#pointer-vector? (*) boolean))
1866(chicken.memory#pointer-vector-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-vector-ref (pointer-vector fixnum) (or pointer false)))
1867(chicken.memory#pointer-vector-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-vector-set! (pointer-vector fixnum (or pointer false)) undefined))
1868(chicken.memory#pointer-vector-fill! (#(procedure #:clean #:enforce) chicken.memory#pointer-vector-fill! (pointer-vector (or pointer false)) undefined))
1869(chicken.memory#pointer-vector-length (#(procedure #:clean #:enforce) chicken.memory#pointer-vector-length (pointer-vector) fixnum)
1870	((pointer-vector) (##sys#slot #(1) '1)))
1871
1872(chicken.memory#pointer-f32-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-f32-ref (pointer) number))
1873(chicken.memory#pointer-f32-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-f32-set! (pointer number) undefined))
1874(chicken.memory#pointer-f64-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-f64-ref (pointer) number))
1875(chicken.memory#pointer-f64-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-f64-set! (pointer number) undefined))
1876
1877(chicken.memory#pointer-s16-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-s16-ref (pointer) fixnum))
1878(chicken.memory#pointer-s16-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-s16-set! (pointer fixnum) undefined))
1879(chicken.memory#pointer-s32-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-s32-ref (pointer) integer))
1880(chicken.memory#pointer-s32-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-s32-set! (pointer integer) undefined))
1881(chicken.memory#pointer-s64-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-s64-ref (pointer) integer))
1882(chicken.memory#pointer-s64-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-s64-set! (pointer integer) undefined))
1883(chicken.memory#pointer-s8-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-s8-ref (pointer) fixnum))
1884(chicken.memory#pointer-s8-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-s8-set! (pointer fixnum) undefined))
1885
1886(chicken.memory#pointer-u16-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-u16-ref (pointer) fixnum))
1887(chicken.memory#pointer-u16-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-u16-set! (pointer fixnum) undefined))
1888(chicken.memory#pointer-u32-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-u32-ref (pointer) integer))
1889(chicken.memory#pointer-u32-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-u32-set! (pointer integer) undefined))
1890(chicken.memory#pointer-u64-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-u64-ref (pointer) integer))
1891(chicken.memory#pointer-u64-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-u64-set! (pointer integer) undefined))
1892(chicken.memory#pointer-u8-ref (#(procedure #:clean #:enforce) chicken.memory#pointer-u8-ref (pointer) fixnum))
1893(chicken.memory#pointer-u8-set! (#(procedure #:clean #:enforce) chicken.memory#pointer-u8-set! (pointer fixnum) undefined))
1894
1895(chicken.memory#tag-pointer (#(procedure #:clean #:enforce) chicken.memory#tag-pointer (pointer *) pointer))
1896(chicken.memory#tagged-pointer? (#(procedure #:clean #:enforce) chicken.memory#tagged-pointer? (* #!optional *) boolean))
1897(chicken.memory#pointer-tag (#(procedure #:clean #:enforce) chicken.memory#pointer-tag ((or pointer locative procedure port)) *)
1898	(((or locative procedure port)) (let ((#(tmp) #(1))) '#f)))
1899
1900
1901;; memory.representation
1902
1903(chicken.memory.representation#block-ref (#(procedure #:clean #:enforce) chicken.memory.representation#block-ref (* fixnum) *))
1904(chicken.memory.representation#block-set! (#(procedure #:enforce) chicken.memory.representation#block-set! (* fixnum *) *))
1905(chicken.memory.representation#extend-procedure (#(procedure #:clean #:enforce) chicken.memory.representation#extend-procedure (procedure *) procedure))
1906(chicken.memory.representation#extended-procedure? (#(procedure #:clean) chicken.memory.representation#extended-procedure (*) boolean))
1907
1908(chicken.memory.representation#mutate-procedure!
1909 (#(procedure #:enforce) chicken.memory.representation#mutate-procedure! (procedure (procedure (procedure) . *)) procedure))
1910
1911(chicken.memory.representation#number-of-bytes (#(procedure #:clean) chicken.memory.representation#number-of-bytes (*) fixnum)
1912		 ((bytevector) (##sys#size #(1)))
1913		 (((or port procedure symbol keyword pair vector locative float pointer-vector))
1914		  ;; would be applicable to all structure types, but we can't specify
1915		  ;; "(struct *)" (yet)
1916		  (##core#inline "C_bytes" (##sys#size #(1)))))
1917
1918(chicken.memory.representation#number-of-slots (#(procedure #:clean #:foldable) chicken.memory.representation#number-of-slots (*) fixnum)
1919		 (((or vector symbol keyword pair)) (##sys#size #(1))))
1920
1921(chicken.memory.representation#object-become! (procedure chicken.memory.representation#object-become! (list) *))
1922(chicken.memory.representation#object-copy (#(procedure #:clean) chicken.memory.representation#object-copy (*) *))
1923(chicken.memory.representation#procedure-data (#(procedure #:clean #:enforce) chicken.memory.representation#procedure-data (procedure) *))
1924(chicken.memory.representation#record->vector (#(procedure #:clean) chicken.memory.representation#record->vector (*) vector))
1925
1926(chicken.memory.representation#make-record-instance (#(procedure #:clean) chicken.memory.representation#make-record-instance (symbol #!rest) *))
1927(chicken.memory.representation#record-instance? (#(procedure #:clean) chicken.memory.representation#record-instance? (* #!optional symbol) boolean)
1928		  ((* symbol) (##sys#structure? #(1) #(2)))
1929		  ((*) (let ((#(tmp) #(1)))
1930			 (if (##sys#immediate? #(tmp))
1931			     '#f
1932			     (##sys#generic-structure? #(tmp))))))
1933
1934(chicken.memory.representation#record-instance-length (#(procedure #:clean) chicken.memory.representation#record-instance-length (*) fixnum))
1935(chicken.memory.representation#record-instance-slot (#(procedure #:clean #:enforce) chicken.memory.representation#record-instance-slot (* fixnum) *))
1936(chicken.memory.representation#record-instance-slot-set! (#(procedure #:clean #:enforce) chicken.memory.representation#record-instance-slot-set! (* fixnum *) undefined))
1937(chicken.memory.representation#record-instance-type (#(procedure #:clean) chicken.memory.representation#record-instance-type (*) *))
1938(chicken.memory.representation#set-procedure-data! (#(procedure #:clean #:enforce) chicken.memory.representation#set-procedure-data! (procedure *) undefined))
1939
1940;; locative
1941
1942(chicken.locative#locative-index (#(procedure #:clean #:enforce) chicken.locative#locative-index (locative) fixnum))
1943(chicken.locative#locative->object (#(procedure #:clean #:enforce) chicken.locative#locative->object (locative) *))
1944(chicken.locative#locative-ref (#(procedure #:clean #:enforce) chicken.locative#locative-ref (locative) *)
1945		((locative) (##core#inline_allocate ("C_a_i_locative_ref" 6) #(1))))
1946(chicken.locative#locative-set! (#(procedure #:enforce) chicken.locative#locative-set! (locative *) *))
1947(chicken.locative#locative? (#(procedure #:pure #:predicate locative) chicken.locative#locative? (*) boolean))
1948(chicken.locative#make-locative (#(procedure #:clean #:enforce) chicken.locative#make-locative (* #!optional fixnum) locative))
1949(chicken.locative#make-weak-locative (#(procedure #:clean #:enforce) chicken.locative#make-weak-locative (* #!optional fixnum) locative))
1950
1951;; port
1952
1953(chicken.port#call-with-input-string (#(procedure #:enforce) chicken.port#call-with-input-string (string (procedure (input-port) . *)) . *))
1954(chicken.port#call-with-output-string (#(procedure #:enforce) chicken.port#call-with-output-string ((procedure (output-port) . *)) string))
1955(chicken.port#copy-port (#(procedure #:enforce) chicken.port#copy-port (* * #!optional (procedure (*) *) (procedure (* output-port) *)) undefined))
1956(chicken.port#make-input-port (#(procedure #:clean #:enforce) chicken.port#make-input-port ((procedure () (or char eof)) (procedure () *) (procedure () . *) #!rest *) input-port))
1957(chicken.port#make-output-port (#(procedure #:clean #:enforce) chicken.port#make-output-port ((procedure (string) . *) (procedure () . *) #!rest *) output-port))
1958(chicken.port#make-binary-input-port (#(procedure #:clean #:enforce) chicken.port#make-binary-input-port ((procedure () (or fixnum eof)) (procedure () *) (procedure () . *) #!rest *) input-port))
1959(chicken.port#make-binary-output-port (#(procedure #:clean #:enforce) chicken.port#make-binary-output-port ((procedure (fixnum) . *) (procedure () . *) #!rest *) output-port))
1960(chicken.port#port-for-each (#(procedure #:enforce) chicken.port#port-for-each ((procedure (*) *) (procedure () . *)) undefined))
1961
1962(chicken.port#port-map
1963 (forall (a b) (#(procedure #:enforce) chicken.port#port-map ((procedure (a) b) (procedure () a)) (list-of b))))
1964
1965(chicken.port#port-fold (#(procedure #:enforce) chicken.port#port-fold ((procedure (* *) *) * (procedure () *)) *))
1966(chicken.port#port-position (#(procedure #:clean #:enforce) chicken.port#port-position (#!optional port) fixnum fixnum))
1967(chicken.port#make-bidirectional-port (#(procedure #:clean #:enforce) chicken.port#make-bidirectional-port (input-port output-port) (refine (input output) port)))
1968(chicken.port#make-broadcast-port (#(procedure #:clean #:enforce) chicken.port#make-broadcast-port (#!rest output-port) output-port))
1969(chicken.port#make-concatenated-port (#(procedure #:clean #:enforce) chicken.port#make-concatenated-port (port #!rest input-port) input-port))
1970(chicken.port#set-buffering-mode! (#(procedure #:clean #:enforce) chicken.port#set-buffering-mode! (port keyword #!optional fixnum) undefined))
1971(chicken.port#with-error-output-to-port (#(procedure #:enforce) chicken.port#with-error-output-to-port (output-port (procedure () . *)) . *))
1972(chicken.port#with-input-from-port (#(procedure #:enforce) chicken.port#with-input-from-port (input-port (procedure () . *)) . *))
1973(chicken.port#with-input-from-string (#(procedure #:enforce) chicken.port#with-input-from-string (string (procedure () . *)) . *))
1974(chicken.port#with-output-to-port (#(procedure #:enforce) chicken.port#with-output-to-port (output-port (procedure () . *)) . *))
1975(chicken.port#with-output-to-string (#(procedure #:enforce) chicken.port#with-output-to-string ((procedure () . *)) string))
1976(chicken.port#with-error-output-to-string (#(procedure #:enforce) chicken.port#with-error-output-to-string ((procedure () . *)) string))
1977
1978(chicken.port#port-encoding
1979 (#(procedure #:clean #:enforce) chicken.port#port-encoding (port) *)
1980 ((port) (##sys#slot #(1) '15)))
1981
1982(chicken.port#port-name
1983 (#(procedure #:clean #:enforce) chicken.port#port-name (#!optional port) *)
1984 ((port) (##sys#slot #(1) '3)))
1985
1986(chicken.port#terminal-name (#(procedure #:clean #:enforce) chicken.port#terminal-name (port) string))
1987(chicken.port#terminal-port? (#(procedure #:clean #:enforce) chicken.port#terminal-port? (port) boolean))
1988(chicken.port#terminal-size (#(procedure #:clean #:enforce) chicken.port#terminal-size (port) fixnum fixnum))
1989
1990;; errno
1991
1992(chicken.errno#errno (#(procedure #:clean) chicken.errno#errno () fixnum))
1993(chicken.errno#errno/2big fixnum)
1994(chicken.errno#errno/acces fixnum)
1995(chicken.errno#errno/again fixnum)
1996(chicken.errno#errno/badf fixnum)
1997(chicken.errno#errno/busy fixnum)
1998(chicken.errno#errno/child fixnum)
1999(chicken.errno#errno/deadlk fixnum)
2000(chicken.errno#errno/dom fixnum)
2001(chicken.errno#errno/exist fixnum)
2002(chicken.errno#errno/fault fixnum)
2003(chicken.errno#errno/fbig fixnum)
2004(chicken.errno#errno/ilseq fixnum)
2005(chicken.errno#errno/intr fixnum)
2006(chicken.errno#errno/inval fixnum)
2007(chicken.errno#errno/io fixnum)
2008(chicken.errno#errno/isdir fixnum)
2009(chicken.errno#errno/mfile fixnum)
2010(chicken.errno#errno/mlink fixnum)
2011(chicken.errno#errno/nametoolong fixnum)
2012(chicken.errno#errno/nfile fixnum)
2013(chicken.errno#errno/nodev fixnum)
2014(chicken.errno#errno/noent fixnum)
2015(chicken.errno#errno/noexec fixnum)
2016(chicken.errno#errno/nolck fixnum)
2017(chicken.errno#errno/nomem fixnum)
2018(chicken.errno#errno/nospc fixnum)
2019(chicken.errno#errno/nosys fixnum)
2020(chicken.errno#errno/notdir fixnum)
2021(chicken.errno#errno/notempty fixnum)
2022(chicken.errno#errno/notty fixnum)
2023(chicken.errno#errno/nxio fixnum)
2024(chicken.errno#errno/perm fixnum)
2025(chicken.errno#errno/pipe fixnum)
2026(chicken.errno#errno/range fixnum)
2027(chicken.errno#errno/rofs fixnum)
2028(chicken.errno#errno/spipe fixnum)
2029(chicken.errno#errno/srch fixnum)
2030(chicken.errno#errno/wouldblock fixnum)
2031(chicken.errno#errno/xdev fixnum)
2032
2033;; process-context
2034
2035(chicken.process-context#argc+argv (#(procedure #:clean) chicken.process-context#argc+argv () fixnum pointer))
2036(chicken.process-context#argv (#(procedure #:clean) chicken.process-context#argv () (list-of string)))
2037(chicken.process-context#change-directory (#(procedure #:clean #:enforce) chicken.process-context#change-directory (string) string))
2038(chicken.process-context#command-line-arguments (#(procedure #:clean) chicken.process-context#command-line-arguments (#!optional (list-of string)) (list-of string)))
2039(chicken.process-context#current-directory (#(procedure #:clean #:enforce) chicken.process-context#current-directory () string))
2040(chicken.process-context#executable-pathname (#(procedure #:pure) chicken.process-context#executable-pathname () (or string false)))
2041(chicken.process-context#get-environment-variable (#(procedure #:clean #:enforce) chicken.process-context#get-environment-variable (string) *))
2042(chicken.process-context#get-environment-variables (#(procedure #:clean) chicken.process-context#get-environment-variables () (list-of (pair string string))))
2043(chicken.process-context#program-name (#(procedure #:clean #:enforce) chicken.process-context#program-name (#!optional string) string))
2044(chicken.process-context#set-environment-variable! (#(procedure #:clean #:enforce) chicken.process-context#set-environment-variable! (string string) undefined))
2045(chicken.process-context#unset-environment-variable! (#(procedure #:clean #:enforce) chicken.process-context#unset-environment-variable! (string) undefined))
2046
2047;; process-context.posix
2048
2049(chicken.process-context.posix#change-directory* (#(procedure #:clean #:enforce) chicken.process-context.posix#change-directory* (fixnum) fixnum))
2050(chicken.process-context.posix#create-session (#(procedure #:clean) chicken.process-context.posix#create-session () fixnum))
2051
2052(chicken.process-context.posix#current-effective-group-id (#(procedure #:clean) chicken.process-context.posix#current-effective-group-id () fixnum))
2053(chicken.process-context.posix#current-effective-user-id (#(procedure #:clean) chicken.process-context.posix#current-effective-user-id () fixnum))
2054(chicken.process-context.posix#current-effective-user-name (#(procedure #:clean) chicken.process-context.posix#current-effective-user-name () string))
2055(chicken.process-context.posix#current-group-id (#(procedure #:clean) chicken.process-context.posix#current-group-id () fixnum))
2056(chicken.process-context.posix#current-user-id (#(procedure #:clean) chicken.process-context.posix#current-user-id () fixnum))
2057(chicken.process-context.posix#current-user-name (#(procedure #:clean) chicken.process-context.posix#current-user-name () string))
2058(chicken.process-context.posix#current-process-id (#(procedure #:clean) chicken.process-context.posix#current-process-id () fixnum))
2059(chicken.process-context.posix#parent-process-id (#(procedure #:clean) chicken.process-context.posix#parent-process-id () fixnum))
2060
2061(chicken.process-context.posix#process-group-id (#(procedure #:clean #:enforce) chicken.process-context.posix#process-group-id () fixnum))
2062(chicken.process-context.posix#set-root-directory! (#(procedure #:clean #:enforce) chicken.process-context.posix#set-root-directory! (string) undefined))
2063(chicken.process-context.posix#user-information (#(procedure #:clean #:enforce) chicken.process-context.posix#user-information ((or string fixnum) #!optional *) *))
2064
2065
2066;; file.posix
2067
2068(chicken.file.posix#create-fifo (#(procedure #:clean #:enforce) chicken.file.posix#create-fifo (string #!optional fixnum) undefined))
2069(chicken.file.posix#create-symbolic-link (#(procedure #:clean #:enforce) chicken.file.posix#create-symbolic-link (string string) undefined))
2070(chicken.file.posix#read-symbolic-link (#(procedure #:clean #:enforce) chicken.file.posix#read-symbolic-link (string #!optional boolean) string))
2071(chicken.file.posix#duplicate-fileno (#(procedure #:clean #:enforce) chicken.file.posix#duplicate-fileno (fixnum #!optional fixnum) fixnum))
2072
2073(chicken.file.posix#fcntl/dupfd fixnum)
2074(chicken.file.posix#fcntl/getfd fixnum)
2075(chicken.file.posix#fcntl/getfl fixnum)
2076(chicken.file.posix#fcntl/setfd fixnum)
2077(chicken.file.posix#fcntl/setfl fixnum)
2078
2079(chicken.file.posix#file-access-time (#(procedure #:clean #:enforce) chicken.file.posix#file-access-time ((or string port fixnum)) integer))
2080(chicken.file.posix#file-change-time (#(procedure #:clean #:enforce) chicken.file.posix#file-change-time ((or string port fixnum)) integer))
2081(chicken.file.posix#file-modification-time (#(procedure #:clean #:enforce) chicken.file.posix#file-modification-time ((or string fixnum port)) integer))
2082(chicken.file.posix#file-close (#(procedure #:clean #:enforce) chicken.file.posix#file-close (fixnum) undefined))
2083(chicken.file.posix#file-control (#(procedure #:clean #:enforce) chicken.file.posix#file-control (fixnum fixnum #!optional fixnum) fixnum))
2084(chicken.file.posix#file-creation-mode (#(procedure #:clean #:enforce) chicken.file.posix#file-creation-mode (#!optional fixnum) fixnum))
2085(chicken.file.posix#file-group (#(procedure #:clean #:enforce) chicken.file.posix#file-owner ((or string fixnum port)) fixnum))
2086(chicken.file.posix#file-link (#(procedure #:clean #:enforce) chicken.file.posix#file-link (string string) undefined))
2087(chicken.file.posix#file-lock (#(procedure #:clean #:enforce) chicken.file.posix#file-lock ((or port fixnum) #!optional *) boolean))
2088(chicken.file.posix#file-lock/blocking (#(procedure #:clean #:enforce) chicken.file.posix#file-lock/blocking ((or port fixnum) #!optional *) boolean))
2089(chicken.file.posix#file-mkstemp (#(procedure #:clean #:enforce) chicken.file.posix#file-mkstemp (string) fixnum string))
2090(chicken.file.posix#file-open (#(procedure #:clean #:enforce) chicken.file.posix#file-open (string fixnum #!optional fixnum) fixnum))
2091(chicken.file.posix#file-owner (#(procedure #:clean #:enforce) chicken.file.posix#file-owner ((or string fixnum port)) fixnum))
2092(chicken.file.posix#file-permissions (#(procedure #:clean #:enforce) chicken.file.posix#file-permissions ((or string fixnum port)) fixnum))
2093(chicken.file.posix#file-position (#(procedure #:clean #:enforce) chicken.file.posix#file-position ((or port fixnum)) integer))
2094(chicken.file.posix#file-read (#(procedure #:clean #:enforce) chicken.file.posix#file-read (fixnum fixnum #!optional *) list))
2095(chicken.file.posix#file-select (#(procedure #:clean #:enforce) chicken.file.posix#file-select ((or (list-of fixnum) fixnum false) (or (list-of fixnum) fixnum false) #!optional number) * *))
2096(chicken.file.posix#file-size (#(procedure #:clean #:enforce) chicken.file.posix#file-size ((or string fixnum port)) integer))
2097(chicken.file.posix#file-stat (#(procedure #:clean #:enforce) chicken.file.posix#file-stat ((or string fixnum port) #!optional *) (vector-of integer)))
2098(chicken.file.posix#file-truncate (#(procedure #:clean #:enforce) chicken.file.posix#file-truncate ((or string fixnum output-port) integer) undefined))
2099(chicken.file.posix#file-unlock (#(procedure #:clean #:enforce) chicken.file.posix#file-unlock ((or fixnum port)) undefined))
2100(chicken.file.posix#file-write (#(procedure #:clean #:enforce) chicken.file.posix#file-write (fixnum bytevector #!optional fixnum) fixnum))
2101(chicken.file.posix#file-type (#(procedure #:clean #:enforce) chicken.file.posix#file-type ((or string fixnum port) #!optional * *) symbol))
2102
2103(chicken.file.posix#block-device? (#(procedure #:clean #:enforce) chicken.file.posix#block-device? ((or string fixnum port)) boolean))
2104(chicken.file.posix#character-device? (#(procedure #:clean #:enforce) chicken.file.posix#character-device? ((or string fixnum port)) boolean))
2105(chicken.file.posix#directory? (#(procedure #:clean #:enforce) chicken.file.posix#directory? ((or string fixnum port)) boolean))
2106(chicken.file.posix#fifo? (#(procedure #:clean #:enforce) chicken.file.posix#fifo? ((or string fixnum port)) boolean))
2107(chicken.file.posix#regular-file? (#(procedure #:clean #:enforce) chicken.file.posix#regular-file? ((or string fixnum port)) boolean))
2108(chicken.file.posix#socket? (#(procedure #:clean #:enforce) chicken.file.posix#socket? ((or string fixnum port)) boolean))
2109(chicken.file.posix#symbolic-link? (#(procedure #:clean #:enforce) chicken.file.posix#symbolic-link? ((or string fixnum port)) boolean))
2110
2111(chicken.file.posix#fileno/stderr fixnum)
2112(chicken.file.posix#fileno/stdin fixnum)
2113(chicken.file.posix#fileno/stdout fixnum)
2114
2115(chicken.file.posix#open-input-file* (#(procedure #:clean #:enforce) chicken.file.posix#open-input-file* (fixnum #!optional keyword symbol) input-port))
2116(chicken.file.posix#open-output-file* (#(procedure #:clean #:enforce) chicken.file.posix#open-output-file* (fixnum #!optional keyword symbol) output-port))
2117
2118(chicken.file.posix#open/append fixnum)
2119(chicken.file.posix#open/binary fixnum)
2120(chicken.file.posix#open/creat fixnum)
2121(chicken.file.posix#open/excl fixnum)
2122(chicken.file.posix#open/fsync fixnum)
2123(chicken.file.posix#open/noctty fixnum)
2124(chicken.file.posix#open/noinherit fixnum)
2125(chicken.file.posix#open/nonblock fixnum)
2126(chicken.file.posix#open/rdonly fixnum)
2127(chicken.file.posix#open/rdwr fixnum)
2128(chicken.file.posix#open/read fixnum)
2129(chicken.file.posix#open/sync fixnum)
2130(chicken.file.posix#open/text fixnum)
2131(chicken.file.posix#open/trunc fixnum)
2132(chicken.file.posix#open/write fixnum)
2133(chicken.file.posix#open/wronly fixnum)
2134
2135(chicken.file.posix#perm/irgrp fixnum)
2136(chicken.file.posix#perm/iroth fixnum)
2137(chicken.file.posix#perm/irusr fixnum)
2138(chicken.file.posix#perm/irwxg fixnum)
2139(chicken.file.posix#perm/irwxo fixnum)
2140(chicken.file.posix#perm/irwxu fixnum)
2141(chicken.file.posix#perm/isgid fixnum)
2142(chicken.file.posix#perm/isuid fixnum)
2143(chicken.file.posix#perm/isvtx fixnum)
2144(chicken.file.posix#perm/iwgrp fixnum)
2145(chicken.file.posix#perm/iwoth fixnum)
2146(chicken.file.posix#perm/iwusr fixnum)
2147(chicken.file.posix#perm/ixgrp fixnum)
2148(chicken.file.posix#perm/ixoth fixnum)
2149(chicken.file.posix#perm/ixusr fixnum)
2150
2151(chicken.file.posix#port->fileno (#(procedure #:clean #:enforce) chicken.file.posix#port->fileno (port) fixnum))
2152
2153(chicken.file.posix#seek/cur fixnum)
2154(chicken.file.posix#seek/end fixnum)
2155(chicken.file.posix#seek/set fixnum)
2156
2157(chicken.file.posix#set-file-group! (#(procedure #:clean #:enforce) chicken.file.posix#set-file-group! ((or string fixnum port) fixnum) undefined))
2158(chicken.file.posix#set-file-owner! (#(procedure #:clean #:enforce) chicken.file.posix#set-file-owner! ((or string fixnum port) fixnum) undefined))
2159(chicken.file.posix#set-file-permissions! (#(procedure #:clean #:enforce) chicken.file.posix#set-file-permissions! ((or string fixnum port) fixnum) undefined))
2160(chicken.file.posix#set-file-position! (#(procedure #:clean #:enforce) chicken.file.posix#set-file-position! ((or port fixnum) integer #!optional fixnum) undefined))
2161(chicken.file.posix#set-file-times! (#(procedure #:clean #:enforce) chicken.file.posix#set-file-times! (string #!optional (or false integer) (or false integer)) undefined))
2162
2163
2164;; time.posix
2165
2166(chicken.time.posix#seconds->local-time (#(procedure #:clean #:enforce) chicken.time.posix#seconds->local-time (#!optional integer) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
2167(chicken.time.posix#seconds->string (#(procedure #:clean #:enforce) chicken.time.posix#seconds->string (#!optional integer) string))
2168(chicken.time.posix#seconds->utc-time (#(procedure #:clean #:enforce) chicken.time.posix#seconds->utc-time (#!optional integer) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
2169(chicken.time.posix#utc-time->seconds (#(procedure #:clean #:enforce) chicken.time.posix#utc-time->seconds ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)) integer))
2170(chicken.time.posix#local-time->seconds (#(procedure #:clean #:enforce) chicken.time.posix#local-time->seconds ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)) integer))
2171(chicken.time.posix#local-timezone-abbreviation (#(procedure #:clean) chicken.time.posix#local-timezone-abbreviation () string))
2172(chicken.time.posix#string->time (#(procedure #:clean #:enforce) chicken.time.posix#string->time (string #!optional string) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
2173(chicken.time.posix#time->string (#(procedure #:clean #:enforce) chicken.time.posix#time->string ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum) #!optional string) string))
2174
2175;; process
2176
2177(chicken.process#process-execute
2178 (#(procedure #:clean #:enforce) chicken.process#process-execute (string #!optional (list-of string) (list-of (pair string string)) boolean) noreturn))
2179(chicken.process#process-fork (#(procedure #:enforce) chicken.process#process-fork (#!optional (or (procedure () . *) false) *) (or (struct process) boolean)))
2180(chicken.process#qs (#(procedure #:clean #:enforce) chicken.process#qs (string #!optional symbol) string))
2181(chicken.process#process-run (#(procedure #:clean #:enforce) chicken.process#process-run (string #!optional (list-of string)) (struct process)))
2182(chicken.process#process-signal (#(procedure #:clean #:enforce) chicken.process#process-signal ((or (struct process) fixnum) #!optional fixnum) undefined))
2183(chicken.process#process-spawn
2184 (#(procedure #:clean #:enforce) chicken.process#process-spawn (fixnum string #!optional (list-of string) (list-of (pair string string)) boolean) (struct process)))
2185(chicken.process#system (#(procedure #:clean #:enforce) chicken.process#system (string) fixnum))
2186(chicken.process#system* (#(procedure #:clean #:enforce) chicken.process#system* (string) undefined))
2187(chicken.process#process (#(procedure #:clean #:enforce) chicken.process#process (string #!optional (list-of string) (list-of (pair string string)) symbol boolean) (struct process)))
2188(chicken.process#process* (#(procedure #:clean #:enforce) chicken.process#process* (string #!optional (list-of string) (list-of (pair string string)) symbol boolean) (struct process)))
2189(chicken.process#process-wait (#(procedure #:clean #:enforce) chicken.process#process-wait (#!optional (or (struct process) fixnum) *) fixnum boolean (or fixnum false)))
2190(chicken.process#process-sleep (#(procedure #:clean #:enforce) chicken.process#process-sleep (fixnum) fixnum))
2191(chicken.process#process-exit-status (#(procedure #:clean #:enforce) chicken.process#process-exit-status ((struct process)) *))
2192(chicken.process#process-input-port (#(procedure #:clean #:enforce) chicken.process#process-input-port ((struct process)) output-port))
2193(chicken.process#process-output-port (#(procedure #:clean #:enforce) chicken.process#process-output-port ((struct process)) input-port))
2194(chicken.process#process-error-port (#(procedure #:clean #:enforce) chicken.process#process-error-port ((struct process)) input-port))
2195(chicken.process#process-id (#(procedure #:clean #:enforce) chicken.process#process-id ((struct process)) fixnum))
2196(chicken.process#process-returned-normally? (#(procedure #:clean #:enforce) chicken.process#process-returned-normally? ((struct process)) boolean))
2197(chicken.process#process? (#(procedure #:clean #:enforce) chicken.process#process? (*) boolean))
2198(chicken.process#call-with-input-pipe (#(procedure #:enforce) chicken.process#call-with-input-pipe (string (procedure (input-port) . *) #!optional keyword) . *))
2199(chicken.process#call-with-output-pipe (#(procedure #:enforce) chicken.process#call-with-output-pipe (string (procedure (input-port) . *) #!optional keyword) . *))
2200(chicken.process#close-input-pipe (#(procedure #:clean #:enforce) chicken.process#close-input-pipe (input-port) fixnum))
2201(chicken.process#close-output-pipe (#(procedure #:clean #:enforce) chicken.process#close-output-pipe (output-port) fixnum))
2202(chicken.process#create-pipe (procedure chicken.process#create-pipe (#!optional fixnum) fixnum fixnum))
2203(chicken.process#open-input-pipe (#(procedure #:clean #:enforce) chicken.process#open-input-pipe (string #!optional keyword) input-port))
2204(chicken.process#open-output-pipe (#(procedure #:clean #:enforce) chicken.process#open-output-pipe (string #!optional keyword) output-port))
2205(chicken.process#with-input-from-pipe (#(procedure #:enforce) chicken.process#with-input-from-pipe (string (procedure () . *) #!optional keyword) . *))
2206(chicken.process#with-output-to-pipe (#(procedure #:enforce) chicken.process#with-output-to-pipe (string (procedure () . *) #!optional keyword) . *))
2207
2208(chicken.process#pipe/buf fixnum)
2209(chicken.process#spawn/overlay fixnum)
2210(chicken.process#spawn/wait fixnum)
2211(chicken.process#spawn/nowait fixnum)
2212(chicken.process#spawn/nowaito fixnum)
2213(chicken.process#spawn/detach fixnum)
2214
2215
2216;; process.signal
2217
2218(chicken.process.signal#set-alarm! (#(procedure #:clean #:enforce) chicken.process#set-alarm! (integer) integer))
2219(chicken.process.signal#make-signal-handler (#(procedure #:clean #:enforce) chicken.process.signal#make-signal-handler (#!rest fixnum) (procedure () fixnum)))
2220(chicken.process.signal#set-signal-mask! (#(procedure #:clean #:enforce) chicken.process.signal#set-signal-mask! ((list-of fixnum)) undefined))
2221(chicken.process.signal#signal-ignore (#(procedure #:clean #:enforce) chicken.process.signal#signal-ignore (fixnum) undefined))
2222(chicken.process.signal#signal-default (#(procedure #:clean #:enforce) chicken.process.signal#signal-default (fixnum) undefined))
2223(chicken.process.signal#signal-mask (#(procedure #:clean) chicken.process.signal#signal-mask () fixnum))
2224(chicken.process.signal#signal-mask! (#(procedure #:clean #:enforce) chicken.process.signal#signal-mask! (fixnum) undefined))
2225(chicken.process.signal#signal-masked? (#(procedure #:clean #:enforce) chicken.process.signal#signal-masked? (fixnum) boolean))
2226(chicken.process.signal#signal-unmask! (#(procedure #:clean #:enforce) chicken.process.signal#signal-unmask! (fixnum) undefined))
2227
2228(chicken.process.signal#signal/abrt fixnum)
2229(chicken.process.signal#signal/alrm fixnum)
2230(chicken.process.signal#signal/chld fixnum)
2231(chicken.process.signal#signal/cont fixnum)
2232(chicken.process.signal#signal/fpe fixnum)
2233(chicken.process.signal#signal/hup fixnum)
2234(chicken.process.signal#signal/ill fixnum)
2235(chicken.process.signal#signal/int fixnum)
2236(chicken.process.signal#signal/io fixnum)
2237(chicken.process.signal#signal/bus fixnum)
2238(chicken.process.signal#signal/kill fixnum)
2239(chicken.process.signal#signal/pipe fixnum)
2240(chicken.process.signal#signal/prof fixnum)
2241(chicken.process.signal#signal/quit fixnum)
2242(chicken.process.signal#signal/segv fixnum)
2243(chicken.process.signal#signal/stop fixnum)
2244(chicken.process.signal#signal/term fixnum)
2245(chicken.process.signal#signal/trap fixnum)
2246(chicken.process.signal#signal/tstp fixnum)
2247(chicken.process.signal#signal/urg fixnum)
2248(chicken.process.signal#signal/usr1 fixnum)
2249(chicken.process.signal#signal/usr2 fixnum)
2250(chicken.process.signal#signal/vtalrm fixnum)
2251(chicken.process.signal#signal/winch fixnum)
2252(chicken.process.signal#signal/xcpu fixnum)
2253(chicken.process.signal#signal/xfsz fixnum)
2254(chicken.process.signal#signals-list (list-of fixnum))
2255
2256
2257;; sort
2258
2259(chicken.sort#merge
2260 (forall (e)
2261	 (#(procedure #:enforce) chicken.sort#merge ((list-of e) (list-of e) (procedure (e e) *)) (list-of e))))
2262
2263(chicken.sort#merge!
2264 (forall (e)
2265	 (#(procedure #:enforce) chicken.sort#merge! ((list-of e) (list-of e) (procedure (e e) *)) (list-of e))))
2266
2267(chicken.sort#sort
2268 (forall (e (s (or (vector-of e) (list-of e))))
2269	 (#(procedure #:enforce)
2270	  chicken.sort#sort
2271	  (s (procedure (e e) *))
2272	  s)))
2273
2274(chicken.sort#sort!
2275 (forall (e (s (or (vector-of e) (list-of e))))
2276	 (#(procedure #:enforce)
2277	  chicken.sort#sort!
2278	  (s (procedure (e e) *))
2279	  s)))
2280
2281(chicken.sort#sorted? (#(procedure #:enforce) chicken.sort#sorted? ((or list vector) (procedure (* *) *)) boolean))
2282(chicken.sort#topological-sort (#(procedure #:enforce) chicken.sort#topological-sort ((list-of list) (procedure (* *) *)) list))
2283
2284
2285;; (chicken number-vector)
2286
2287(chicken.number-vector#bytevector->c128vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->c128vector (bytevector) (struct c128vector)))
2288(chicken.number-vector#bytevector->c128vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->c128vector/shared (bytevector) (struct c128vector)))
2289(chicken.number-vector#bytevector->c64vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->c64vector (bytevector) (struct c64vector)))
2290(chicken.number-vector#bytevector->c64vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->c64vector/shared (bytevector) (struct c64vector)))
2291(chicken.number-vector#bytevector->f32vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->f32vector (bytevector) (struct f32vector)))
2292(chicken.number-vector#bytevector->f32vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->f32vector/shared (bytevector) (struct f32vector)))
2293(chicken.number-vector#bytevector->f64vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->f64vector (bytevector) (struct f64vector)))
2294(chicken.number-vector#bytevector->f64vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->f64vector/shared (bytevector) (struct f64vector)))
2295(chicken.number-vector#bytevector->s16vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->s16vector (bytevector) (struct s16vector)))
2296(chicken.number-vector#bytevector->s16vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->s16vector/shared (bytevector) (struct s16vector)))
2297(chicken.number-vector#bytevector->s32vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->s32vector (bytevector) (struct s32vector)))
2298(chicken.number-vector#bytevector->s32vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->s32vector/shared (bytevector) (struct s32vector)))
2299(chicken.number-vector#bytevector->s8vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->s8vector (bytevector) (struct s8vector)))
2300(chicken.number-vector#bytevector->s8vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->s8vector/shared (bytevector) (struct s8vector)))
2301(chicken.number-vector#bytevector->u16vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->u16vector (bytevector) (struct u16vector)))
2302(chicken.number-vector#bytevector->u16vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->u16vector/shared (bytevector) (struct u16vector)))
2303(chicken.number-vector#bytevector->u32vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->u32vector (bytevector) (struct u32vector)))
2304(chicken.number-vector#bytevector->u32vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->u32vector/shared (bytevector) (struct u32vector)))
2305(chicken.number-vector#bytevector->u64vector (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->u64vector (bytevector) (struct u64vector)))
2306(chicken.number-vector#bytevector->u64vector/shared (#(procedure #:clean #:enforce) chicken.number-vector#bytevector->u64vector/shared (bytevector) (struct u64vector)))
2307(chicken.number-vector#c128vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#c128vector->bytevector ((struct c128vector)) bytevector))
2308(chicken.number-vector#c128vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#c128vector->bytevector/shared ((struct c128vector)) bytevector))
2309(chicken.number-vector#c128vector-length (#(procedure #:clean #:enforce) chicken.number-vector#c128vector-length ((struct c128vector)) fixnum))
2310(chicken.number-vector#c128vector->list (#(procedure #:clean #:enforce) chicken.number-vector#c128vector->list ((struct c128vector)) (list-of float)))
2311(chicken.number-vector#c128vector (#(procedure #:clean #:enforce) chicken.number-vector#c128vector (#!rest (or integer float)) (struct c128vector)))
2312(chicken.number-vector#c128vector? (#(procedure #:pure #:predicate (struct c128vector)) chicken.number-vector#c128vector? (*) boolean))
2313(chicken.number-vector#c128vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#c128vector-ref ((struct c128vector) fixnum) float))
2314(chicken.number-vector#c128vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#c128vector-set! ((struct c128vector) fixnum (or integer float)) undefined))
2315(chicken.number-vector#c64vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#c64vector->bytevector ((struct c64vector)) bytevector))
2316(chicken.number-vector#c64vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#c64vector->bytevector/shared ((struct c64vector)) bytevector))
2317(chicken.number-vector#c64vector-length (#(procedure #:clean #:enforce) chicken.number-vector#c64vector-length ((struct c64vector)) fixnum))
2318(chicken.number-vector#c64vector->list (#(procedure #:clean #:enforce) chicken.number-vector#c64vector->list ((struct c64vector)) (list-of float)))
2319(chicken.number-vector#c64vector (#(procedure #:clean #:enforce) chicken.number-vector#c64vector (#!rest (or integer float)) (struct c64vector)))
2320(chicken.number-vector#c64vector? (#(procedure #:pure #:predicate (struct c64vector)) chicken.number-vector#c64vector? (*) boolean))
2321(chicken.number-vector#c64vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#c64vector-ref ((struct c64vector) fixnum) float))
2322(chicken.number-vector#c64vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#c64vector-set! ((struct c64vector) fixnum (or integer float)) undefined))
2323(chicken.number-vector#f32vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#f32vector->bytevector ((struct f32vector)) bytevector))
2324(chicken.number-vector#f32vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#f32vector->bytevector/shared ((struct f32vector)) bytevector))
2325(chicken.number-vector#f32vector-length (#(procedure #:clean #:enforce) chicken.number-vector#f32vector-length ((struct f32vector)) fixnum) (((struct f32vector)) (##core#inline "C_u_i_32vector_length" #(1))))
2326(chicken.number-vector#f32vector->list (#(procedure #:clean #:enforce) chicken.number-vector#f32vector->list ((struct f32vector)) (list-of float)))
2327(chicken.number-vector#f32vector (#(procedure #:clean #:enforce) chicken.number-vector#f32vector (#!rest (or integer float)) (struct f32vector)))
2328(chicken.number-vector#f32vector? (#(procedure #:pure #:predicate (struct f32vector)) chicken.number-vector#f32vector? (*) boolean))
2329(chicken.number-vector#f32vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#f32vector-ref ((struct f32vector) fixnum) float))
2330(chicken.number-vector#f32vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#f32vector-set! ((struct f32vector) fixnum (or integer float)) undefined))
2331(chicken.number-vector#f64vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#f64vector->bytevector ((struct f64vector)) bytevector))
2332(chicken.number-vector#f64vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#f64vector->bytevector/shared ((struct f64vector)) bytevector))
2333(chicken.number-vector#f64vector-length (#(procedure #:clean #:enforce) chicken.number-vector#f64vector-length ((struct f64vector)) fixnum) (((struct f64vector)) (##core#inline "C_u_i_64vector_length" #(1))))
2334(chicken.number-vector#f64vector->list (#(procedure #:clean #:enforce) chicken.number-vector#f64vector->list ((struct f64vector)) (list-of float)))
2335(chicken.number-vector#f64vector (#(procedure #:clean #:enforce) chicken.number-vector#f64vector (#!rest (or integer float)) (struct f64vector)))
2336(chicken.number-vector#f64vector? (#(procedure #:pure #:predicate (struct f64vector)) chicken.number-vector#f64vector? (*) boolean))
2337(chicken.number-vector#f64vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#f64vector-ref ((struct f64vector) fixnum) float))
2338(chicken.number-vector#f64vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#f64vector-set! ((struct f64vector) fixnum (or integer float)) undefined))
2339(chicken.number-vector#list->c128vector (#(procedure #:clean #:enforce) chicken.number-vector#list->c128vector ((list-of integer)) (struct c128vector)))
2340(chicken.number-vector#list->c64vector (#(procedure #:clean #:enforce) chicken.number-vector#list->c64vector ((list-of integer)) (struct c64vector)))
2341(chicken.number-vector#list->f32vector (#(procedure #:clean #:enforce) chicken.number-vector#list->f32vector ((list-of (or float integer))) (struct f32vector)))
2342(chicken.number-vector#list->f64vector (#(procedure #:clean #:enforce) chicken.number-vector#list->f64vector ((list-of (or float integer))) (struct f64vector)))
2343(chicken.number-vector#list->s16vector (#(procedure #:clean #:enforce) chicken.number-vector#list->s16vector ((list-of fixnum)) (struct s16vector)))
2344(chicken.number-vector#list->s32vector (#(procedure #:clean #:enforce) chicken.number-vector#list->s32vector ((list-of integer)) (struct s32vector)))
2345(chicken.number-vector#list->s8vector (#(procedure #:clean #:enforce) chicken.number-vector#list->s8vector ((list-of fixnum)) (struct s8vector)))
2346(chicken.number-vector#list->u16vector (#(procedure #:clean #:enforce) chicken.number-vector#list->u16vector ((list-of fixnum)) (struct u16vector)))
2347(chicken.number-vector#list->u32vector (#(procedure #:clean #:enforce) chicken.number-vector#list->u32vector ((list-of integer)) (struct u32vector)))
2348(chicken.number-vector#list->u64vector (#(procedure #:clean #:enforce) chicken.number-vector#list->u64vector ((list-of integer)) (struct u64vector)))
2349(chicken.number-vector#list->u8vector (#(procedure #:clean #:enforce) chicken.number-vector#list->u8vector ((list-of fixnum)) bytevector))
2350(chicken.number-vector#make-c128vector (#(procedure #:clean #:enforce) chicken.number-vector#make-c128vector (fixnum #!optional (or integer float false) boolean boolean) (struct c128vector)))
2351(chicken.number-vector#make-c64vector (#(procedure #:clean #:enforce) chicken.number-vector#make-c64vector (fixnum #!optional (or integer float false) boolean boolean) (struct c64vector)))
2352(chicken.number-vector#make-f32vector (#(procedure #:clean #:enforce) chicken.number-vector#make-f32vector (fixnum #!optional (or integer float false) boolean boolean) (struct f32vector)))
2353(chicken.number-vector#make-f64vector (#(procedure #:clean #:enforce) chicken.number-vector#make-f64vector (fixnum #!optional (or integer float false) boolean) (struct f64vector)))
2354(chicken.number-vector#make-s16vector (#(procedure #:clean #:enforce) chicken.number-vector#make-s16vector (fixnum #!optional (or fixnum false) boolean boolean) (struct s16vector)))
2355(chicken.number-vector#make-s32vector (#(procedure #:clean #:enforce) chicken.number-vector#make-s32vector (fixnum #!optional (or integer false) boolean boolean) (struct s32vector)))
2356(chicken.number-vector#make-s8vector (#(procedure #:clean #:enforce) chicken.number-vector#make-s8vector (fixnum #!optional (or fixnum false) boolean boolean) (struct s8vector)))
2357(chicken.number-vector#make-u16vector (#(procedure #:clean #:enforce) chicken.number-vector#make-u16vector (fixnum #!optional (or fixnum false) boolean boolean) (struct u16vector)))
2358(chicken.number-vector#make-u32vector (#(procedure #:clean #:enforce) chicken.number-vector#make-u32vector (fixnum #!optional (or integer false) boolean boolean) (struct u32vector)))
2359(chicken.number-vector#make-u64vector (#(procedure #:clean #:enforce) chicken.number-vector#make-u64vector (fixnum #!optional (or integer false) boolean boolean) (struct u64vector)))
2360(chicken.number-vector#make-u8vector (#(procedure #:clean #:enforce) chicken.number-vector#make-u8vector (fixnum #!optional (or fixnum false) boolean boolean) bytevector))
2361(chicken.number-vector#number-vector? (#(procedure #:pure #:predicate (or bytevector (struct u16vector) (struct s8vector) (struct s16vector) (struct u32vector) (struct s32vector) (struct u64vector) (struct s64vector) (struct f32vector) (struct f64vector) (struct c64vector) (struct c128vector))) chicken.number-vector#number-vector? (*) boolean))
2362(chicken.number-vector#release-number-vector (procedure chicken.number-vector#release-number-vector (*) undefined))
2363(chicken.number-vector#s16vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#s16vector->bytevector ((struct s16vector)) bytevector))
2364(chicken.number-vector#s16vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#s16vector->bytevector/shared ((struct s16vector)) bytevector))
2365(chicken.number-vector#s16vector-length (#(procedure #:clean #:enforce) chicken.number-vector#s16vector-length ((struct s16vector)) fixnum) (((struct s16vector)) (##core#inline "C_u_i_16vector_length" #(1))))
2366(chicken.number-vector#s16vector->list (#(procedure #:clean #:enforce) chicken.number-vector#s16vector->list ((struct s16vector)) (list-of fixnum)))
2367(chicken.number-vector#s16vector (#(procedure #:clean #:enforce) chicken.number-vector#s16vector (#!rest fixnum) (struct s16vector)))
2368(chicken.number-vector#s16vector? (#(procedure #:pure #:predicate (struct s16vector)) chicken.number-vector#s16vector? (*) boolean))
2369(chicken.number-vector#s16vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#s16vector-ref ((struct s16vector) fixnum) fixnum))
2370(chicken.number-vector#s16vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#s16vector-set! ((struct s16vector) fixnum fixnum) undefined))
2371(chicken.number-vector#s32vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#s32vector->bytevector ((struct s32vector)) bytevector))
2372(chicken.number-vector#s32vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#s32vector->bytevector/shared ((struct s32vector)) bytevector))
2373(chicken.number-vector#s32vector-length (#(procedure #:clean #:enforce) chicken.number-vector#s32vector-length ((struct s32vector)) fixnum) (((struct s32vector)) (##core#inline "C_u_i_32vector_length" #(1))))
2374(chicken.number-vector#s32vector->list (#(procedure #:clean #:enforce) chicken.number-vector#s32vector->list ((struct s32vector)) (list-of integer)))
2375(chicken.number-vector#s32vector (#(procedure #:clean #:enforce) chicken.number-vector#s32vector (#!rest integer) (struct s32vector)))
2376(chicken.number-vector#s32vector? (#(procedure #:pure #:predicate (struct s32vector)) chicken.number-vector#s32vector? (*) boolean))
2377(chicken.number-vector#s32vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#s32vector-ref ((struct s32vector) fixnum) integer))
2378(chicken.number-vector#s32vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#s32vector-set! ((struct s32vector) fixnum integer) undefined))
2379(chicken.number-vector#s8vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#s8vector->bytevector ((struct s8vector)) bytevector))
2380(chicken.number-vector#s8vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#s8vector->bytevector/shared ((struct s8vector)) bytevector))
2381(chicken.number-vector#s8vector-length (#(procedure #:clean #:enforce) chicken.number-vector#s8vector-length ((struct s8vector)) fixnum) (((struct s8vector)) (##core#inline "C_u_i_s8vector_length" #(1))))
2382(chicken.number-vector#s8vector->list (#(procedure #:clean #:enforce) chicken.number-vector#s8vector->list ((struct s8vector)) (list-of fixnum)))
2383(chicken.number-vector#s8vector (#(procedure #:clean #:enforce) chicken.number-vector#s8vector (#!rest fixnum) (struct s8vector)))
2384(chicken.number-vector#s8vector? (#(procedure #:pure #:predicate (struct s8vector)) chicken.number-vector#s8vector? (*) boolean))
2385(chicken.number-vector#s8vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#s8vector-ref ((struct s8vector) fixnum) fixnum))
2386(chicken.number-vector#s8vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#s8vector-set! ((struct s8vector) fixnum fixnum) undefined))
2387(chicken.number-vector#subc128vector (#(procedure #:clean #:enforce) chicken.number-vector#subc128vector ((struct c128vector) fixnum fixnum) (struct c128vector)))
2388(chicken.number-vector#subc64vector (#(procedure #:clean #:enforce) chicken.number-vector#subc64vector ((struct c64vector) fixnum fixnum) (struct c64vector)))
2389(chicken.number-vector#subf32vector (#(procedure #:clean #:enforce) chicken.number-vector#subf32vector ((struct f32vector) fixnum fixnum) (struct f32vector)))
2390(chicken.number-vector#subf64vector (#(procedure #:clean #:enforce) chicken.number-vector#subf64vector ((struct f64vector) fixnum fixnum) (struct f64vector)))
2391(chicken.number-vector#subs16vector (#(procedure #:clean #:enforce) chicken.number-vector#subs16vector ((struct s16vector) fixnum fixnum) (struct s16vector)))
2392(chicken.number-vector#subs32vector (#(procedure #:clean #:enforce) chicken.number-vector#subs32vector ((struct s32vector) fixnum fixnum) (struct s32vector)))
2393(chicken.number-vector#subs8vector (#(procedure #:clean #:enforce) chicken.number-vector#subs8vector  ((struct s8vector) fixnum fixnum) (struct s8vector)))
2394(chicken.number-vector#subu16vector (#(procedure #:clean #:enforce) chicken.number-vector#subu16vector ((struct u16vector) fixnum fixnum) (struct u16vector)))
2395(chicken.number-vector#subu32vector (#(procedure #:clean #:enforce) chicken.number-vector#subu32vector ((struct u32vector) fixnum fixnum) (struct u32vector)))
2396(chicken.number-vector#subu64vector (#(procedure #:clean #:enforce) chicken.number-vector#subu64vector ((struct u64vector) fixnum fixnum) (struct u64vector)))
2397(chicken.number-vector#subu8vector (#(procedure #:clean #:enforce) chicken.number-vector#subu8vector (bytevector fixnum fixnum) bytevector))
2398(chicken.number-vector#u16vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#u16vector->bytevector ((struct u16vector)) bytevector))
2399(chicken.number-vector#u16vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#u16vector->bytevector/shared ((struct u16vector)) bytevector))
2400(chicken.number-vector#u16vector-length (#(procedure #:clean #:enforce) chicken.number-vector#u16vector-length ((struct u16vector)) fixnum) (((struct u16vector)) (##core#inline "C_u_i_16vector_length" #(1))))
2401(chicken.number-vector#u16vector->list (#(procedure #:clean #:enforce) chicken.number-vector#u16vector->list ((struct u16vector)) (list-of fixnum)))
2402(chicken.number-vector#u16vector (#(procedure #:clean #:enforce) chicken.number-vector#u16vector (#!rest fixnum) (struct u16vector)))
2403(chicken.number-vector#u16vector? (#(procedure #:pure #:predicate (struct u16vector)) chicken.number-vector#u16vector? (*) boolean))
2404(chicken.number-vector#u16vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#u16vector-ref ((struct u16vector) fixnum) fixnum))
2405(chicken.number-vector#u16vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#u16vector-set! ((struct u16vector) fixnum fixnum) undefined))
2406(chicken.number-vector#u32vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#u32vector->bytevector ((struct u32vector)) bytevector))
2407(chicken.number-vector#u32vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#u32vector->bytevector/shared ((struct u32vector)) bytevector))
2408(chicken.number-vector#u32vector-length (#(procedure #:clean #:enforce) chicken.number-vector#u32vector-length ((struct u32vector)) fixnum) (((struct u32vector)) (##core#inline "C_u_i_32vector_length" #(1))))
2409(chicken.number-vector#u32vector->list (#(procedure #:clean #:enforce) chicken.number-vector#u32vector->list ((struct u32vector)) (list-of integer)))
2410(chicken.number-vector#u32vector (#(procedure #:clean #:enforce) chicken.number-vector#u32vector (#!rest integer) (struct u32vector)))
2411(chicken.number-vector#u32vector? (#(procedure #:pure #:predicate (struct u32vector)) chicken.number-vector#u32vector? (*) boolean))
2412(chicken.number-vector#u32vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#u32vector-ref ((struct u32vector) fixnum) integer))
2413(chicken.number-vector#u32vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#u32vector-set! ((struct u32vector) fixnum integer) undefined))
2414(chicken.number-vector#u64vector->bytevector (#(procedure #:clean #:enforce) chicken.number-vector#u64vector->bytevector ((struct u64vector)) bytevector))
2415(chicken.number-vector#u64vector->bytevector/shared (#(procedure #:clean #:enforce) chicken.number-vector#u64vector->bytevector/shared ((struct u64vector)) bytevector))
2416(chicken.number-vector#u64vector-length (#(procedure #:clean #:enforce) chicken.number-vector#u64vector-length ((struct u64vector)) fixnum) (((struct u64vector)) (##core#inline "C_u_i_64vector_length" #(1))))
2417(chicken.number-vector#u64vector->list (#(procedure #:clean #:enforce) chicken.number-vector#u64vector->list ((struct u64vector)) (list-of integer)))
2418(chicken.number-vector#u64vector (#(procedure #:clean #:enforce) chicken.number-vector#u64vector (#!rest integer) (struct u64vector)))
2419(chicken.number-vector#u64vector? (#(procedure #:pure #:predicate (struct u64vector)) chicken.number-vector#u64vector? (*) boolean))
2420(chicken.number-vector#u64vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#u64vector-ref ((struct u64vector) fixnum) integer))
2421(chicken.number-vector#u64vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#u64vector-set! ((struct u64vector) fixnum integer) undefined))
2422(chicken.number-vector#u8vector-length (#(procedure #:clean #:enforce) chicken.number-vector#u8vector-length (bytevector) fixnum) ((bytevector) (##core#inline "C_u_i_8vector_length" #(1))))
2423(chicken.number-vector#u8vector->list (#(procedure #:clean #:enforce) chicken.number-vector#u8vector->list (bytevector) (list-of fixnum)))
2424(chicken.number-vector#u8vector (#(procedure #:clean #:enforce) chicken.number-vector#u8vector (#!rest fixnum) bytevector))
2425(chicken.number-vector#u8vector? (#(procedure #:pure #:predicate bytevector) chicken.number-vector#u8vector? (*) boolean))
2426(chicken.number-vector#u8vector-ref (#(procedure #:clean #:enforce) chicken.number-vector#u8vector-ref (bytevector fixnum) fixnum))
2427(chicken.number-vector#u8vector-set! (#(procedure #:clean #:enforce) chicken.number-vector#u8vector-set! (bytevector fixnum fixnum) undefined))
2428(##sys#srfi-4-vector? (#(procedure #:pure #:predicate (or bytevector (struct u16vector) (struct s8vector) (struct s16vector) (struct u32vector) (struct s32vector) (struct u64vector) (struct s64vector) (struct f32vector) (struct f64vector) (struct c64vector) (struct c128vector))) ##sys#srfi-4-vector? (*) boolean))
2429
2430;; syntax
2431
2432(chicken.syntax#er-macro-transformer
2433 (#(procedure #:clean #:enforce)
2434  chicken.syntax#er-macro-transformer
2435  ((procedure (* (procedure (*) *) (procedure (* *) *)) *))
2436  (struct transformer)))
2437(chicken.syntax#expand (procedure chicken.syntax#expand (* #!optional list) *))
2438(chicken.syntax#ir-macro-transformer
2439 (#(procedure #:clean #:enforce)
2440  chicken.syntax#ir-macro-transformer
2441  ((procedure (* (procedure (*) *) (procedure (* *) *)) *))
2442  (struct transformer)))
2443(chicken.syntax#read-with-source-info (#(procedure #:enforce) chicken.syntax#read-with-source-info (#!optional input-port) *))
2444(chicken.syntax#strip-syntax (#(procedure #:clean) chicken.syntax#strip-syntax (*) *))
2445
2446;; tcp
2447
2448(chicken.tcp#tcp-abandon-port (#(procedure #:clean #:enforce) chicken.tcp#tcp-abandon-port (port) undefined))
2449(chicken.tcp#tcp-accept (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept ((struct tcp-listener) #!optional symbol) input-port output-port))
2450(chicken.tcp#tcp-accept-ready? (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept-ready? ((struct tcp-listener)) boolean))
2451(chicken.tcp#tcp-accept-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept-timeout (#!optional (or false integer)) (or false integer)))
2452(chicken.tcp#tcp-addresses (#(procedure #:clean #:enforce) chicken.tcp#tcp-addresses (port) string string))
2453(chicken.tcp#tcp-buffer-size (#(procedure #:clean #:enforce) chicken.tcp#tcp-buffer-size (#!optional (or false fixnum)) (or false fixnum)))
2454(chicken.tcp#tcp-close (#(procedure #:clean #:enforce) chicken.tcp#tcp-close ((struct tcp-listener)) undefined))
2455(chicken.tcp#tcp-connect (#(procedure #:clean #:enforce) chicken.tcp#tcp-connect (string #!optional fixnum symbol) input-port output-port))
2456(chicken.tcp#tcp-connect-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-connect-timeout (#!optional (or false integer)) (or false integer)))
2457(chicken.tcp#tcp-listen (#(procedure #:clean #:enforce) chicken.tcp#tcp-listen (fixnum #!optional fixnum *) (struct tcp-listener)))
2458
2459(chicken.tcp#tcp-listener-fileno (#(procedure #:clean #:enforce) chicken.tcp#tcp-listener-fileno ((struct tcp-listener)) fixnum)
2460		     (((struct tcp-listener)) (##sys#slot #(1) '1)))
2461
2462(chicken.tcp#tcp-listener-port (#(procedure #:clean #:enforce) chicken.tcp#tcp-listener-port ((struct tcp-listener)) fixnum))
2463
2464(chicken.tcp#tcp-listener? (#(procedure #:clean #:predicate (struct tcp-listener)) chicken.tcp#tcp-listener? (*) boolean))
2465
2466(chicken.tcp#tcp-port-numbers (#(procedure #:clean #:enforce) chicken.tcp#tcp-port-numbers (port) fixnum fixnum))
2467(chicken.tcp#tcp-read-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-read-timeout (#!optional (or false integer)) (or false integer)))
2468(chicken.tcp#tcp-write-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-write-timeout (#!optional (or false integer)) (or false integer)))
2469
2470;; version
2471(chicken.version#version>=? (#(procedure #:pure #:foldable) chicken.version#version>=? (* *) boolean))
2472
2473;; Undocumented internal module, only here to have the deprecation warning because some eggs use it
2474(chicken.compiler.support#read/source-info deprecated)
2475
2476;; scheme.write
2477
2478(scheme.write#write (#(procedure #:enforce) scheme.write#write (* #!optional output-port) undefined))
2479(scheme.write#write-shared (#(procedure #:enforce) scheme.write#write-shared (* #!optional output-port) undefined))
2480(scheme.write#display (#(procedure #:enforce) scheme.write#display (* #!optional output-port) undefined))
2481
2482;; scheme.time
2483
2484(scheme.time#current-second (#(procedure #:enforce) scheme.time#current-second () float))
2485(scheme.time#current-jiffy (#(procedure #:enforce) scheme.time#current-jiffy () fixnum))
2486(scheme.time#jiffies-per-second (#(procedure #:enforce) scheme.time#jiffies-per-second () fixnum))
2487
2488;; scheme.process-context
2489
2490(scheme.process-context#exit (procedure scheme.process-context#exit (#!optional *) noreturn))
2491(scheme.process-context#command-line (procedure scheme.process-context#command-line () (list-of string)))
Trap