Newer
Older
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
;;;; Copyright (c) 1990, Giuseppe Attardi.
;;;; Copyright (c) 2012, Jean-Claude Beaudoin.
;;;; MKCL is free software; you can redistribute it and/or modify
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation; either version 2 of the License, or
;;;; (at your option) any later version.
;;;;
;;;; See file '../Copyright' for full details.
;;;; setdoc.lsp
;;;;
;;;; Sets doc-strings for built-in symbols.
(in-package "SYSTEM")
(si::reopen-package "SYSTEM")
(defmacro docfun (symbol kind args doc)
(do-docfun symbol kind args doc))
(defun do-docfun (symbol kind args doc)
(cond ((and doc (search "Syntax:" doc))
(setf args nil))
((and doc (search "Args:" doc))
(setf args nil))
((eq kind 'macro)
(setf args (format nil "Syntax: ~A" args)))
(t
(setf args (format nil "Syntax: ~A" args))))
(si::set-documentation
symbol 'function
(format nil "~A in ~A package:~@[~%~A~]~@[~%~A~]~%"
(ecase kind
(special "Special Form")
(macro "Macro")
(function "Function")
(method "Generic function"))
(package-name (symbol-package (si::function-block-name symbol)))
args doc)))
(defmacro docvar (symbol kind doc)
(do-docvar symbol kind doc))
(defun do-docvar (symbol kind doc)
(si::set-documentation
symbol 'variable
(format nil "~@(~A~) in ~A package:~A~%"
kind (package-name (symbol-package symbol)) doc)))
(defmacro doctype (symbol doc)
(do-doctype symbol doc))
(defun do-doctype (symbol doc)
(si::set-documentation symbol 'type doc))
(defun tree-search (tree x)
(cond ((eq tree x)
t)
((atom tree)
nil)
((tree-search (car tree) x)
t)
(t
(tree-search (cdr tree) x))))
(defun our-pde-hook (location definition output-form)
(when (consp definition)
(handler-case
(let* ((documentation nil)
(name (second definition)))
(loop for i in (cddr definition)
do (cond ((stringp i)
(setf documentation i)
(return))
((and (consp i) (eq (first i) 'DECLARE))
;; Produce no documentation for si::c-local functions
(when (tree-search i 'si::c-local)
(return-from our-pde-hook output-form)))
(t (return))))
(case (first definition)
(defun (do-docfun name 'function (third definition) documentation))
(defmacro (do-docfun name 'macro (third definition) documentation))
((defvar defparameter) (when documentation (do-docvar name 'variable documentation)))
(defconstant (when documentation (do-docvar name 'constant documentation)))
(deftype (when documentation (do-doctype name documentation)))))
(error (c) (princ c) (mkcl:quit))))
output-form)
(setf si:*register-with-pde-hook* #'our-pde-hook)
#|
(defmacro docfun (symbol kind args string)
`(progn (si::putprop ',symbol ,string 'si::function-documentation)
(si::putprop ',symbol ',args 'arglist)
',symbol))
(defmacro docvar (symbol kind string)
(declare (ignore kind))
`(progn (si::putprop ',symbol ,string 'si::variable-documentation)
',symbol))
(defmacro doctype (symbol string)
`(progn (si::putprop ',symbol ,string 'si::type-documentation)
',symbol))
|#
;;;----------------------------------------------------------------------
;;; Ordered alphabetically for binary search
;;;----------------------------------------------------------------------
(docvar + variable "
The last top-level form.")
(docvar ++ variable "
The last-but-one top-level form.")
(docvar +++ variable "
The last-but-two top-level form.")
(docvar / variable "
The list of all values of the last top-level form.")
(docvar // variable "
The list of all values of the last-but-one top-level form.")
(docvar /// variable "
The list of all values of the last-but-two top-level form.")
(docvar - variable "
The top-level form MKCL is currently evaluating.")
(docvar * variable "
The value of the last top-level form.")
(docvar ** variable "
The value of the last-but-one top-level form.")
(docvar *** variable "
The value of the last-but-two top-level form.")
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
(docfun * function (&rest numbers) "
Returns the product of the args. With no args, returns 1.")
(docvar *debug-io* variable "
The stream used by the MKCL debugger. The initial value is a synonym stream to
*TERMINAL-IO*.")
(docvar *default-pathname-defaults* variable "
The default pathname used by some pathname-handling functions such as ENOUGH-
NAMESTRING.")
(docvar *error-output* variable "
The output stream to which error messages are output. The initial value is an
synonym stream to *TERMINAL-IO*.")
(docvar *features* variable "
List of symbols that name features of the current version of MKCL. These
features are used in connection with the read macros #+ and #-. When the
reader encounters
#+ feature-spec form
it reads FORM in the usual manner if FEATURE-SPEC is satisfied. Otherwise,
the reader just skips FORM.
#- feature-spec form
is equivalent to
#- (not feature-spec) form
A feature-spec may be a symbol, in which case the spec is satisfied iff the
symbol is an element of *FEATURES*. Or else, a feature-spec must be one of
the following forms.
(and {feature-spec}*)
Satisfied iff all FEATURE-SPECs are satisfied
(or {feature-spec}*)
Satisfied iff at least one of FEATURE-SPECs is satisfied
(not feature-spec)
Satisfied iff FEATURE-SPEC is not satisfied")
(docvar si::*ignore-eof-on-terminal-io* variable "
MKCL specific.
If the value of this variable is non-NIL, MKCL ignores the EOF-character
(usually ^D) on the terminal. The initial value is NIL.")
(docvar si::*indent-formatted-output* variable "
MKCL specific.
The FORMAT directive ~~% indents the next line, if the value of this variable
is non-NIL. If NIL, ~~% simply does Newline.")
(docvar *load-verbose* variable "
The default value for the :VERBOSE parameter of LOAD.
It initial value is NIL.")
(docvar *compile-print* variable "
This variable controls whether the compiler displays messages about
each form it processes. The default value is NIL.")
(docvar *compile-verbose* variable "
This variable controls whether the compiler should display messages about its
progress. The default value is NIL.")
(docvar *macroexpand-hook* variable "
The value of this variable must be a three-argument function object.
Each time a macro form is expanded, MKCL calls that function with
1. the macro expansion function (see MACRO-FUNCTION)
2. the macro form to expand
3. an environment (NIL in most case)
as three arguments, and uses the returned value as the expanded form.
The initial value of this variable is the function FUNCALL.")
(docfun si::*make-constant function (symbol value) "
MKCL specific.
Declares that the global variable named by SYMBOL is a constant with VALUE as
its constant value.")
(docfun si::*make-special function (symbol) "
MKCL specific.
Declares the variable named by NAME as a special variable.")
(docvar *package* variable "
The current package. The initial value is the USER package.")
(docvar *print-array* variable "
Specifies whether MKCL should print elements when it prints arrays other than
strings. MKCL uses the following abbreviation notations.
#<bit-vector n> for bit-vectors
#<vector n> for vectors other than strings and bit-vectors
#<array n> for arrays other than vectors
where N is a number that identifies the array.")
(docvar *print-base* variable "
The radix used to print integers and ratios. The value must be an integer
from 2 to 36, inclusive. The initial value is 10.")
(docvar *print-case* variable "
Specifies how to print ordinary symbols. Possible values are:
:UPCASE in upper case
:DOWNCASE in lower case
:CAPITALIZE the first character in upper case, the rest in lower
The initial value is :UPCASE.")
(docvar *print-circle* variable "
Specifies whether the MKCL printer should take care of circular lists.")
(docvar *print-escape* variable "
Specifies whether the MKCL printer should output objects in the way that they
can be reread later if possible.")
(docvar *print-gensym* variable "
Specifies whether the MKCL printer should prefix uninterned symbols with \"#:\".")
(docvar *print-length* variable "
Specifies how many elements the MKCL printer should print when it prints a
list. MKCL printer prints all elements if the value of this variable is NIL.")
(docvar *print-level* variable "
Specifies how many levels of depth the MKCL printer should print when it prints
a list. MKCL printer prints all levels if the value of this variable is NIL.")
(docvar *print-pretty* variable "
Specifies whether the MKCL printer should pretty-print. See PPRINT for more
information about pretty-printing.")
(docvar *print-radix* variable "
Specifies whether the MKCL printer should print the radix when it prints
integers and ratios.")
(docvar *query-io* variable "
The query I/O stream. The initial value is a synonym stream to *TERMINAL-IO*.")
(docvar *random-state* variable "
The default random-state object used by RANDOM.")
(docvar *read-base* variable "
The radix used to read numbers. The initial value is 10.")
(docvar *read-default-float-format* variable "
The default float format the MKCL reader uses when reading floats. Must be one
of the symbols SHORT-FLOAT, SINGLE-FLOAT, DOUBLE-FLOAT, and LONG-FLOAT.")
(docvar *read-suppress* variable "
When the value of this variable is non-NIL, the MKCL reader parses input
characters without most of the ordinary processings such as interning. Used
to skip over forms.")
(docvar *readtable* variable "
The current readtable.")
(docvar *standard-input* variable "
The default input stream used by the MKCL reader. The initial value is a
synonym stream to *TERMINAL-IO*.")
(docvar *standard-output* variable "
The default output stream used by the MKCL printer. The initial value is a
synonym stream to *TERMINAL-IO*.")
(docvar *terminal-io* variable "
The terminal I/O stream.")
(docvar *trace-output* variable "
The stream used for trace output. The initial value is a synonym stream to
*TERMINAL-IO*.")
(docfun + function (&rest numbers) "
Returns the sum of the args. With no args, returns 0.")
(docfun - function (number &rest more-numbers) "
Returns the first arg subtracted by the rest of args. With one arg, returns
- NUMBER.")
(docfun / function (number &rest more-numbers) "
Returns the first arg divided by the rest of args. With one arg, returns
1/NUMBER.")
(docfun /= function (number &rest more-numbers) "
Returns T if no two of the args are numerically equal; NIL otherwise.")
(docfun 1+ function (number) "
Returns NUMBER plus one.")
(docfun 1- function (number) "
Returns NUMBER minus one.")
(docfun < function (number &rest more-numbers) "
Returns T if the args are in increasing order; NIL otherwise.")
(docfun <= function (number &rest more-numbers) "
Returns T if the args are in non-decreasing order; NIL otherwise.")
(docfun = function (number &rest more-numbers) "
Returns T if all args are numerically equal; NIL otherwise.")
(docfun > function (number &rest more-numbers) "
Returns T if the args are in decreasing order; NIL otherwise.")
(docfun >= function (number &rest more-numbers) "
Returns T if the args are in non-increasing order; NIL otherwise.")
(docfun abs function (number) "
Returns the absolute value of NUMBER.")
(docfun acons function (key datum alist) "
Equivalent to (CONS (CONS KEY DATUM) ALIST).")
(docfun adjoin function (item list &key (key '#'identity) (test '#'eql) test-not) "
Returns cons of ITEM and LIST unless ITEM is already an element of LIST.
Otherwise, returns LIST.")
(docfun adjustable-array-p function (array) "
Returns T if ARRAY is adjustable; NIL otherwise.")
(docfun alpha-char-p function (char) "
Returns T if CHAR is alphabetic; NIL otherwise.")
(docfun alphanumericp function (char) "
Returns T if CHAR is either numeric or alphabetic; NIL otherwise.")
(docfun and macro "(and {form}*)" "
Evaluates FORMs in order. If any FORM evaluates to NIL, returns
immediately with the value NIL. Otherwise, returns all values of the
last FORM.")
(docfun append function (&rest lists) "
Constructs and returns a new list by concatenating the args.")
(docfun apply function (function arg &rest more-args) "
Calls FUNCTION with all ARGs except the last and all elements of the last ARG
as the arguments to FUNCTION. Returns all values that FUNCTION returns.")
(docfun aref function (array &rest indexes) "
Returns the element of ARRAY specified by INDEXES.")
(docfun si::argc function () "
MKCL specific.
Returns the number of arguments given in the command line that invoked MKCL.")
(docfun si::argv function (n) "
MKCL specific.
Returns the N-th argument given in the command line that invoked MKCL.")
(doctype array "
An array is a compound object whose elements are referenced by indexing. One-
dimensional arrays are called vectors. Other arrays are notated as
#?a( ... ) or #?A( ... )
where '?' is actually the rank of the array.
Arrays may be displaced to another array, may have a fill-pointer, or may be
adjustable. Other arrays are called simple-arrays. Only simple-arrays can be
input in the above format.")
(docfun array-dimension function (array n) "
Returns the length of the N-th dimension of ARRAY.")
(docvar array-dimension-limit constant "
The upper bound of the length of an array dimension.")
(docfun array-element-type function (array) "
Returns the element type ARRAY.")
(docfun array-has-fill-pointer-p function (array) "
Returns T if ARRAY has a fill-pointer; NIL otherwise.")
(docfun array-rank function (array) "
Returns the rank of ARRAY.")
(docvar array-rank-limit constant "
The upper bound of the rank of an array.")
(docfun array-total-size function (array) "
Returns the total number of elements of ARRAY.")
(docvar array-total-size-limit constant "
The upper bound of the total number of elements of an array.")
(docfun arrayp function (x) "
Returns T if X is an array; NIL otherwise.")
(docfun ash function (integer count) "
Returns the integer obtained by shifting the bits that represent INTEGER as
specified by COUNT. Shifts left in COUNT bits if COUNT is positive. Shifts
right in -COUNT bits if COUNT is negative.")
(docfun assoc function (item alist &key (test '#'eql) test-not (key '#'identity)) "
Returns the first pair in ALIST whose car is equal (in the sense of TEST) to
ITEM. Returns NIL if no such pair exists.
The function KEY is applied to extract the key for comparison.")
(docfun atan function (x &optional (y 1)) "
Returns the arc tangent of X/Y.")
(docfun atom function (x) "
Returns T if X is not a cons; NIL otherwise.")
(docfun si::bds-val function (n) "
MKCL specific.
Returns the value of the N-th entity in the bind stack.")
(docfun si::bds-var function (n) "
MKCL specific.
Returns the symbol of the N-th entity in the bind stack.")
(doctype bignum "
A bignum is an integer that is not a fixnum.")
(docfun bit-vector-p function (x) "
Returns T if X is a bit-vector; NIL otherwise.")
(docfun block special "(block name {form}*)" "
Establishes a block named by NAME, evaluates FORMs in order, and returns all
values of the last FORM. Returns NIL if no FORMs are given.
The scope of the established block is the body (i.e. the FORMs) of the BLOCK
form. If (return-from name value-form) is evaluated within the scope, the
execution of the BLOCK form terminates immediately and all values of
VALUE-FORM will be returned as the values of the terminated BLOCK form.")
(docfun boole function (op integer1 integer2) "
Returns the integer produced by the logical operation specified by OP on the
two integers. OP must be the value of one of the following constants.
BOOLE-CLR BOOLE-C1 BOOLE-XOR BOOLE-ANDC1
BOOLE-SET BOOLE-C2 BOOLE-EQV BOOLE-ANDC2
BOOLE-1 BOOLE-AND BOOLE-NAND BOOLE-ORC1
BOOLE-2 BOOLE-IOR BOOLE-NOR BOOLE-ORC2
Each logical operation on integers produces an integer represented by the bit
sequence obtained by a bit-wise logical operation on the bit sequences that
represent the integers. Two's-complement representation is assumed to obtain
the bit sequence that represents an integer. For example,
2: ...010
1: ...001
0: ...000
-1: ...111
-2: ...110
where each '...' represents either an infinite sequence of 0's (for non-
negative integers) or an infinite sequence of 1's (for negative integers).")
(docvar boole-1 constant "
Makes BOOLE return INTEGER1.")
(docvar boole-2 constant "
Makes BOOLE return INTEGER2.")
(docvar boole-and constant "
Makes BOOLE return the AND of INTEGER1 and INTEGER2.")
(docvar boole-andc1 constant "
Makes BOOLE return the AND of {the NOT of INTEGER1} and INTEGER2.")
(docvar boole-andc2 constant "
Makes BOOLE return the AND of INTEGER1 and {the NOT of INTEGER2}.")
(docvar boole-c1 constant "
Makes BOOLE return the NOT of INTEGER1.")
(docvar boole-c2 constant "
Makes BOOLE return the NOT of INTEGER2.")
(docvar boole-clr constant "
Makes BOOLE return 0.")
(docvar boole-eqv constant "
Makes BOOLE return the EQUIVALENCE of INTEGER1 and INTEGER2.")
(docvar boole-ior constant "
Makes BOOLE return the INCLUSIVE OR of INTEGER1 and INTEGER2.")
(docvar boole-nand constant "
Makes BOOLE return the NOT of {the AND of INTEGER1 and INTEGER2}.")
(docvar boole-nor constant "
Makes BOOLE return the NOT of {the INCLUSIVE OR of INTEGER1 and INTEGER2}.")
(docvar boole-orc1 constant "
Makes BOOLE return the INCLUSIVE OR of {the NOT of INTEGER1} and INTEGER2.")
(docvar boole-orc2 constant "
Makes BOOLE return the INCLUSIVE OR of INTEGER1 and {the NOT of INTEGER2}.")
(docvar boole-set constant "
Makes BOOLE return -1.")
(docvar boole-xor constant "
Makes BOOLE return the EXCLUSIVE OR of INTEGER1 and INTEGER2.")
(docfun both-case-p function (char) "
Returns T if CHAR is an alphabetic character; NIL otherwise. Equivalent to
ALPHA-CHAR-P.")
(docfun boundp function (symbol) "
Returns T if the global variable named SYMBOL has a value; NIL otherwise.")
(docfun butlast function (list &optional (n 1)) "
Returns a copy of LIST with the last N elements removed.")
(docfun caaaar function (x) "
Equivalent to (CAR (CAR (CAR (CAR X)))).")
(docfun caaadr function (x) "
Equivalent to (CAR (CAR (CAR (CDR X)))).")
(docfun caaar function (x) "
Equivalent to (CAR (CAR (CAR X))).")
(docfun caadar function (x) "
Equivalent to (CAR (CAR (CDR (CAR X)))).")
(docfun caaddr function (x) "
Equivalent to (CAR (CAR (CDR (CDR X)))).")
(docfun caadr function (x) "
Equivalent to (CAR (CAR (CDR X))).")
(docfun caar function (x) "
Equivalent to (CAR (CAR X)).")
(docfun cadaar function (x) "
Equivalent to (CAR (CDR (CAR (CAR X)))).")
(docfun cadadr function (x) "
Equivalent to (CAR (CDR (CAR (CDR X)))).")
(docfun cadar function (x) "
Equivalent to (CAR (CDR (CAR X))).")
(docfun caddar function (x) "
Equivalent to (CAR (CDR (CDR (CAR X)))).")
(docfun cadddr function (x) "
Equivalent to (CAR (CDR (CDR (CDR X)))).")
(docfun caddr function (x) "
Equivalent to (CAR (CDR (CDR X))).")
(docfun cadr function (x) "
Equivalent to (CAR (CDR X)).")
(docvar call-arguments-limit constant "
The upper bound of the number of arguments to a function. Ignore this value
since there is no such logical upper bound in MKCL.")
(docfun car function (x) "
Returns the car of X if X is a cons. Returns NIL if X is NIL.")
(docfun case macro "(case keyform {({key | ({key}*)} {form}*)}*)" "
Evaluates KEYFORM and searches a KEY that is EQL to the value of KEYFORM. If
found, then evaluates FORMs in order that follow the KEY (or the key list that
contains the KEY) and returns all values of the last FORM. Returns NIL if no
such key is found. The symbols T and OTHERWISE may be used at the place of a
key list to specify the default case.")
(docfun catch special "(catch tag-form {form}*)" "
Sets up a catcher whose catch tag is the value of TAG-FORM. Then evaluates
FORMs in order and returns all values of the last FORM. During the evaluation
of FORMs, if a THROW form is evaluated that specifies a catch tag EQ to the
value of the TAG-FORM, then the execution of the CATCH form terminates
immediately and the values specified by the THROW form are returned as the
value of the CATCH form.")
(docfun cdaaar function (x) "
Equivalent to (CDR (CAR (CAR (CAR X)))).")
(docfun cdaadr function (x) "
Equivalent to (CDR (CAR (CAR (CDR X)))).")
(docfun cdaar function (x) "
Equivalent to (CDR (CAR (CAR X))).")
(docfun cdadar function (x) "
Equivalent to (CDR (CAR (CDR (CAR X)))).")
(docfun cdaddr function (x) "
Equivalent to (CDR (CAR (CDR (CDR X)))).")
(docfun cdadr function (x) "
Equivalent to (CDR (CAR (CDR X))).")
(docfun cdar function (x) "
Equivalent to (CDR (CAR X)).")
(docfun cddaar function (x) "
Equivalent to (CDR (CDR (CAR (CAR X)))).")
(docfun cddadr function (x) "
Equivalent to (CDR (CDR (CAR (CDR X)))).")
(docfun cddar function (x) "
Equivalent to (CDR (CDR (CAR X))).")
(docfun cdddar function (x) "
Equivalent to (CDR (CDR (CDR (CAR X)))).")
(docfun cddddr function (x) "
Equivalent to (CDR (CDR (CDR (CDR X)))).")
(docfun cdddr function (x) "
Equivalent to (CDR (CDR (CDR X))).")
(docfun cddr function (x) "
Equivalent to (CDR (CDR X)).")
(docfun cdr function (x) "
Returns the cdr of X if X is a cons. Returns NIL if X is NIL.")
(docfun ceiling function (number &optional (divisor 1)) "
Returns the smallest integer not less than NUMBER/DIVISOR. Returns the value
of (- NUMBER (* first-value DIVISOR)) as the second value.")
(docfun cerror function (continue-format-string error-format-string &rest args) "
Signals a continuable error.")
(docfun char function (string index) "
Returns the INDEX-th character in STRING.")
(docfun char-code function (char) "
Returns the character code of CHAR as a fixnum.")
(docvar char-code-limit constant "
The upper bound of values returned by CHAR-CODE.")
(docfun char-downcase function (char) "
Returns the lower-case character corresponding to CHAR, if CHAR is upper-case.
Otherwise, returns CHAR.")
(docfun char-equal function (char &rest more-chars) "
Returns T if all CHARs are the same; NIL otherwise. Lower-case characters are
regarded the same as the corresponding upper-case characters.")
(docfun char-greaterp function (char &rest more-chars) "
Returns T if the character codes of CHARs are in decreasing order; NIL
otherwise. For lower-case characters, codes of corresponding upper-case
characters are used.")
(docfun char-int function (char) "
Returns the code attribute as an integer. Equivalent to
CHAR-CODE in MKCL.")
(docfun char-lessp function (char &rest more-chars) "
Returns T if the character codes of CHARs are in increasing order; NIL
otherwise. For lower-case characters, codes of corresponding upper-case
characters are used.")
(docfun char-name function (char) "
Returns the 'character name' of CHAR as a string; NIL if CHAR has no character
name. Only #\\Backspace, #\\Tab, #\\Newline (or #\\Linefeed), #\\Page,
#\\Return, and #\\Rubout have character names in MKCL.")
(docfun char-not-equal function (char &rest more-chars) "
Returns T if no two of CHARs are the same; NIL otherwise. Lower-case
characters are regarded the same as the corresponding upper-case characters.")
(docfun char-not-greaterp function (char &rest more-chars) "
Returns T if the character codes of CHARs are in non-decreasing order; NIL
otherwise. For lower-case characters, codes of corresponding upper-case
characters are used.")
(docfun char-not-lessp function (char &rest more-chars) "
Returns T if the character codes of CHARs are in non-increasing order; NIL
otherwise. For lower-case characters, codes of corresponding upper-case
characters are used.")
(docfun char-upcase function (char) "
Returns the upper-case character of CHAR, if CHAR is lower-case. Otherwise,
returns CHAR.")
(docfun char/= function (char &rest more-chars) "
Returns T if no two of CHARs are the same; NIL otherwise.")
(docfun char< function (char &rest more-chars) "
Returns T if the character codes of CHARs are in increasing order; NIL
otherwise.")
(docfun char<= function (char &rest more-chars) "
Returns T if the character codes of CHARs are in non-decreasing order; NIL
otherwise.")
(docfun char= function (char &rest more-chars) "
Returns T if all CHARs are the same; NIL otherwise.")
(docfun char> function (char &rest more-chars) "
Returns T if the character codes of CHARs are in decreasing order; NIL
otherwise.")
(docfun char>= function (char &rest more-chars) "
Returns T if the character codes of CHARs are in non-increasing order; NIL
otherwise.")
(doctype character "
A character represents a character that can be handled by the computer.
Characters have a code attribute. MKCL uses Unicode encoding.")
(docfun character function (x) "
Coerces X into a character if possible. Signals an error if not possible.")
(docfun characterp function (x) "
Returns T if X is a character; NIL otherwise.")
(docfun mkcl:getcwd function (&optional (update-lisp t)) "
Returns the current working directory of the C library. When UPDATE-LISP is
true, *DEFAULT-PATHNAME-DEFAULTS* is set to this value.")
(docfun mkcl:chdir function (filespec &optional (update-lisp t)) "
Changes the current working directory of the C library to the one specified by
FILESPEC. FILESPEC may be a symbol, a string, or a pathname. UPDATE-LISP
determines whether the value of *DEFAULT-PATHNAME-DEFAULTS* is also to be
changed.")
(docfun clear-input function (&optional (stream *standard-input*)) "
Clears the input buffer of STREAM and returns NIL. Contents of the buffer are
discarded.")
(docfun clear-output function (&optional (stream *standard-output*)) "
Clears the output buffer of STREAM and returns NIL. Contents of the buffer
are discarded.")
(docfun ffi:clines special "(clines {string}*)" "
The MKCL compiler embeds STRINGs into the intermediate C language code. The
interpreter ignores this form.")
(docfun close function (stream &key (abort nil)) "
Closes STREAM. Returns NIL if STREAM is closed successfully; non-NIL
otherwise. A non-NIL value of ABORT indicates an abnormal termination but MKCL
ignores it.")
(docfun clrhash function (hash-table) "
Removes all entries of HASH-TABLE and returns HASH-TABLE.")
(docfun code-char function (code) "
Returns a character with the specified character code, if any. Returns NIL
if no such character exists.")
(doctype compiled-function "
A compiled function is an object that is created by compiling a function. A
compiled function is notated in either of the following formats:
#<compiled-function s>
#<compiled-closure nil>
where S is actually the symbol that names the function.")
(docfun si::compiled-function-name function (compiled-function) "
MKCL specific.
Returns the function name associated with COMPILED-FUNCTION.")
(docfun compiled-function-p function (x) "
Returns T if X is a compiled function object; NIL otherwise.")
(docfun compiler-let special
"(compiler-let ({var | (var [value])}*) {form}*)" "
When interpreted, this form works just like a LET form with all VARs declared
special. When compiled, FORMs are processed with the VARs bound at compile
time, but no bindings occur when the compiled code is executed.")
(doctype complex "
A complex number represents a complex number in mathematical sense, consisting
of a real part and an imaginary part. A complex number is notated as
#c( realpart imagpart ) or #C( realpart imagpart )
where REALPART and IMAGPART are non-complex numbers.")
(docfun complex function (realpart &optional (imagpart 0)) "
Returns a complex number with the given realpart and imagpart. Returns
REALPART if it is a rational and IMAGPART is 0.")
(docfun complexp function (x) "
Returns T if X is a complex number; NIL otherwise.")
(docfun conjugate function (number) "
Returns the complex conjugate of NUMBER. Returns NUMBER if it is not a
complex number.")
(doctype cons "
A cons is a compound object consisting of two components, a car and a cdr.")
(docfun cons function (x y) "
Returns a new cons whose car and cdr are X and Y respectively.")
(docfun consp function (x) "
Returns T if X is a cons; NIL otherwise.")
(docfun constantp function (x &optional env) "
Returns T if MKCL is sure that X, when given as a form, always evaluates to a
same value. Returns NIL otherwise. Typically used to check whether a symbol
names a constant variable.")
(docfun copy-alist function (alist) "
Returns a new list consisting of copies of all pairs in ALIST.")
(docfun copy-list function (list) "
Returns a new list consisting of all elements in LIST.")
(docfun copy-readtable function (&optional (readtable *readtable*) (to-readtable nil)) "
Returns a new copy of READTABLE. If TO-READTABLE is non-NIL, then copies the
contents of READTABLE into TO-READTABLE and returns TO-READTABLE.")
(docfun copy-seq function (sequence) "
Returns a new copy of SEQUENCE.")
(docfun copy-symbol function (symbol &optional (flag nil)) "
Returns a new uninterned symbol with the same print name as SYMBOL. If FLAG
is NIL, the symbol property of the new symbol is empty. Otherwise, the new
symbol gets a copy of the property list of SYMBOL.")
(docfun copy-tree function (tree) "
Returns a copy of TREE. Defined as:
(defun copy-tree (tree)
(if (atom tree)
tree
(cons (copy-tree (car tree)) (copy-tree (cdr tree)))))")
(docfun cos function (radians) "
Returns the cosine of RADIANS.")
(docfun cosh function (number) "
Returns the hyperbolic cosine of NUMBER.")
(docfun count function (item sequence
&key (key '#'identity) (test '#'eql) test-not
(start 0) (end (length sequence)) (from-end nil)) "
Returns the number of elements in SEQUENCE satisfying TEST with ITEM as the
first argument.")
(docfun count-if function (test sequence
&key (key '#'identity)
(start 0) (end (length sequence)) (from-end nil)) "
Returns the number of elements in SEQUENCE satisfying TEST.")
(docfun count-if-not function (test sequence
(start 0) (end (length sequence)) (from-end nil)) "
Returns the number of elements in SEQUENCE not satisfying TEST.")
(docfun declare special "(declare {decl-spec}*)" "
Gives declarations. Possible DECL-SPECs are:
(SPECIAL {var}*)
(TYPE type {var}*)
(type {var}*) where 'type' is one of the following symbols
array fixnum package simple-string
atom float pathname simple-vector
bignum function random-state single-float
bit hash-table ratio standard-char
bit-vector integer rational stream
character keyword readtable string
common list sequence string-char
compiled-function long-float short-float symbol
complex nil signed-byte t
cons null simple-array unsigned-byte
double-float number simple-bit-vector vector
(OBJECT {var}*)
(FTYPE type {function-name}*)
(FUNCTION function-name ({arg-type}*) {return-type}*)
(INLINE {function-name}*)
(NOTINLINE {function-name}*)
(IGNORE {var}*)
(OPTIMIZE {({SPEED | SPACE | SAFETY | COMPILATION-SPEED} {0 | 1 | 2 | 3})}*)
(DECLARATION {non-standard-decl-name}*)
(:READ-ONLY {variable-name}*).")
(docfun decode-float function (float) "
Returns the significand F, the exponent E, and the sign S of FLOAT. These
values satisfy
1/B <= F < 1
and E
FLOAT = S * F * B
where B is the radix used to represent FLOAT. S and F are floats of the same
float format as FLOAT, and E is an integer.")
(docfun delete function (item sequence
&key (key '#'identity) (test '#'eql) test-not
(start 0) (end (length sequence))
(count most-positive-fixnum) (from-end nil)) "
Destructive REMOVE. SEQUENCE may be destroyed.")
(docfun delete-file function (filespec) "
Deletes the specified file. FILESPEC may be a symbol, a string, a pathname,
or a file stream.")
(docfun delete-if function (test sequence
&key (key '#'identity) (start 0) (end (length sequence))
(count most-positive-fixnum) (from-end nil)) "
Destructive REMOVE-IF. SEQUENCE may be destroyed")
(docfun delete-if-not function (test sequence
&key (key '#'identity) (start 0) (end (length sequence))
(count most-positive-fixnum) (from-end nil)) "
Destructive REMOVE-IF-NOT. SEQUENCE may be destroyed")
(docfun denominator function (rational) "
Returns the denominator of RATIONAL as a positive integer, if RATIONAL is a
ratio. Returns RATIONAL if it is an integer.")
(docfun digit-char function (weight &optional (radix 10)) "
Returns a character that represents the WEIGHT in RADIX. Returns NIL if no
such character exists.")
(docfun digit-char-p function (char &optional (n 10)) "
If CHAR represents a digit in radix N, then returns an integer represented by
that digit. Otherwise, returns NIL.")
(docfun directory function (filespec) "
Returns a list of full pathnames of all those files that match FILESPEC.
FILESPEC may be a symbol, a string, a pathname, or a file stream.")
(docfun directory-namestring function (filespec) "
Returns as a string the directory part of the pathname specified by FILESPEC.
FILESPEC may be a symbol, a string, a pathname, or a file stream.")
(docfun do macro
"(do ({(var [init [step]])}*) (test {result}*)
{decl}* {tag | statement}*)" "
Establishes a NIL block, binds each VAR to the value of the corresponding INIT
(which defaults to NIL), and then executes STATEMENTs repeatedly until TEST is
satisfied. After each iteration, evaluates STEP and assigns the value to the
corresponding VAR. No assignment occurs for those VARs to which STEP is not
given. When TEST is satisfied, evaluates RESULTs as a PROGN and returns all
values of the last RESULT. Performs variable bindings and assignments in
parallel, just as LET and PSETQ do.")
(docfun do* macro
"(do* ({(var [init [step]])}*) (test {result}*)
{decl}* {tag | statement}*)" "
Similar to DO, but performs variable bindings and assignments in serial, just
as LET* and SETQ do.")
(docfun dolist macro
"(dolist (var form [result])
{decl}* {tag | statement}*)" "
Establishes a NIL block and executes STATEMENTs once for each member of the
list value of FORM, with VAR bound to the member. Then evaluates RESULT
(which defaults to NIL) and returns all values.")
(doctype double-float "
A double-float is a double-precision floating point number.
DOUBLE-FLOAT as a type specifier is equivalent to LONG-FLOAT in MKCL.")
(docfun dotimes macro
"(dotimes (var form [result])
{decl}* {tag | statement}*)" "
Establishes a NIL block and executes STATEMENTs once for each integer between
0 (inclusive) and the value of FORM (exclusive), with VAR bound to the
integer. Then evaluates RESULT (which defaults to NIL) and returns all
values.")
(docfun eighth function (x) "
Equivalent to (CADDDR (CDDDDR X)).")
(docfun elt function (sequence n) "
Returns the N-th element of SEQUENCE.")
(docfun endp function (x) "
Returns T if X is NIL. Returns NIL if X is a cons. Otherwise, signals an
error.")
(docfun enough-namestring function (filespec &optional (defaults *default-pathname-defaults*)) "
Returns a string which uniquely identifies the file specified by FILESPEC,
with respect to DEFAULTS. FILESPEC and DEFAULTS may be a symbol, a string, a
pathname, or a file stream.")
(docfun eq function (x y) "
Returns T if the args are identical; NIL otherwise.")
(docfun eql function (x y) "
Returns T if the args satisfy one of the following conditions.
1. identical
2. are numbers of the same type with the same value
3. are characters that represent the same character
Returns NIL otherwise.")
(docfun equal function (x y) "
Returns T if the args satisfy one of the following conditions.