-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathskeleton.txt
1244 lines (1237 loc) · 92.1 KB
/
skeleton.txt
1
2
3
4
5
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
135
136
137
138
139
140
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
[[# top]]##gray|core:## [#version version] | [#grammar-execution grammar and execution] | [#var-expr variables and expressions] | [#arithmetic-logic arithmetic and logic] | [#str strings] | [#regex regular expressions] | [#dates-time dates and time] | [#func functions] | [#exec-control execution control] | [#exceptions exceptions] | [#concurrency concurrency] | [#streams streams] | [#file files] | [#file-fmt file formats] | [#dir directories] | [#env-processes processes and environment] | [#option-parsing option parsing] | [#lib-namespaces libraries and namespaces] | [#objects objects] | [#inheritance-polymorphism inheritance and polymorphism] | [#reflection reflection] | [#net-web net and web] | [#dom dom] | [#gui gui] | [#unit-tests unit tests] | [#debug-profile debugging and profiling]
##gray|data structures:## [#fixed-length-arrays fixed-length arrays] | [#resizable-arrays resizable arrays] | [#arithmetic-sequences arithmetic sequences] | [#lists lists] | [#tuples tuples] | [#stacks stacks] | [#queues queues] | [#sets sets] | [#dict dictionaries] | [#two-d-arrays 2d arrays] | [#three-d-arrays 3d arrays] | [#user-defined-types user-defined types] | [#generic-types generic types] | [#dependent-types dependent types]
##gray|auxiliary:## [#cpp-macros c preprocessor macros] | [#lisp-macros lisp macros] | [#java-interop java interop]
##gray|tables:## [#tables tables] | [#import-export import and export] | [#relational-algebra relational algebra] | [#aggregation aggregation]
##gray|mathematics:## [#vectors vectors] | [#matrices matrices] | [#symbolic-expressions symbolic expressions] | [#calculus calculus] | [#equations-unknowns equations and unknowns] | [#optimization optimization] | [#combinatorics combinatorics] | [#number-theory number theory] | [#elliptic-curves elliptic curves] | [#algebraic-numbers algebraic numbers] | [#polynomials polynomials] | [#rings rings] | [#power-series power series] | [#special-functions special functions] | [#permutations permutations] | [#groups groups] | [#subgroups subgroups] | [#group-homomorphisms group homomorphisms] | [#actions actions] | [#propositions propositions]
##gray|statistics:## [#descriptive-statistics descriptive statistics] | [#distributions distributions] | [#linear-regression linear regression] | [#statistical-tests statistical tests] | [#time-series time series]
##gray|charts:## [#univariate-charts univariate charts] | [#bivariate-charts bivariate charts] | [#multivariate-charts multivariate charts]
||||||~ CORE||
||||||~ [[# version]][#version-note version]||
||~ title ||~ anchor||~ description||
||[[# version-used]][#version-used-note version used] _
@< >@||#version-used||The versions used for testing code in the reference sheet.||
||[[# show-version]][#show-version-note show version] _
@< >@||#show-version||How to get the version.||
||[[# implicit-prologue]][#implicit-prologue-note implicit prologue]||#implicit-prologue||Code which examples in the sheet assume to have already been executed. _
_
Replace this with convention note? #include, using import in java sheet, not following expressions with semicolons, lists of function names||
||||||~ [[# grammar-execution]][#grammar-execution-note grammar and execution]||
||~ title ||~ anchor||~ description||
||[[# hello-world]][#hello-world-note hello world]||#hello-world|| ||
||[[# compiler]][#compiler-note compiler]||#compiler||compile file; standalone executable||
||[[# bytecode-compiler]][#bytecode-compiler-note bytecode compiler]||#bytecode-compiler||also how to execute bytecode||
||[[# interpreter]][#interpreter-note interpreter] _
@< >@||#interpreter|| ||
||[[# shebang]][#shebang-note shebang]||#shebang|| ||
||[[# repl]][#repl-note repl] _
@< >@||#repl|| ||
||[[# cmd-line-program]][#cmd-line-program-note command line program]||#cmd-line-program|| ||
||[[# file-suffixes]][#file-suffixes-note file suffixes]||#file-suffixes||omit if can be observed from other examples||
||[[# block-delimiters]][#block-delimiters-note block delimiters]||#block-delimiters||consider omitting if can easily be inferred||
||[[# stmt-separator]][#stmt-separator-note statement separator] _
@< >@||#stmt-separator||rename statement terminator||
||[[# top-level-stmt]][#top-level-stmt-note top level statements]||#top-level-stmt||statements that can occur at the top level of the file; i.e. not inside any block. Also indicate if certains statements are required or required to appear in a certain order||
||[[# expr-delimiters]][#expr-delimiters-note expression delimiters]||#expr-delimiters||indicate other uses of delimiters (parens often have multiple uses). Also list places where expressions must be encased by parens (such as conditional of if).||
||[[# expr-stmt]][#expr-stmt-note are expressions statements]||#expr-stmt||in vimscript function invocation is an expr, not a stmt (use call to make it a stmt)||
||[[# word-separator]][#word-separator-note word separator] _
@< >@||#word-separator||how are function args separated, how is function name separated from args, how are other keywords (if, while) separated from their operands||
||[[# source-code-encoding]][#source-code-encoding-note source code encoding]||#source-code-encoding|| ||
||[[# eol-comment]][#eol-comment-note end-of-line comment] _
@< >@||#eol-comment|| ||
||[[# multiple-line-comment]][#multiple-line-comment-note multiple line comment] _
@< >@||#multiple-line-comment||do they nest?||
||||||~ [[# var-expr]][#var-expr-note variables and expressions]||
||~ title ||~ anchor||~ description||
||[[# id]][#id-note identifier]||#id||is it case sensitive? Sigils? Restrictions on characters?||
||[[# quoted-id]][#quoted-id-note quoted identifier]||#quoted-id||how to quote or escape unusual characters||
||[[# case-sensitive-id]][#case-sensitive-id-note are identifiers case sensitive]||#case-sensitive-id||if some of languages are *not* case sensitive||
||[[# local-var]][#local-var-note local variable]||#local-var||how to declare||
||[[# init-var]][#init-var-note initialize variable]||#init-var||if syntax is different than assignment||
||[[# uninitialized-local-var]][#uninitialized-local-var-note uninitialized local variable]||#uninitialized-local-var|| ||
||[[# scope-regions]][#scope-regions-note regions which define lexical scope]||#scope-regions|| ||
||[[# global-var]][#global-var-note global variable]||#global-var||how to declare||
||[[# uninitialized-global-var]][#uninitialized-global-var-note uninitialized global variable]||#uninitialized-global-var|| ||
||[[# immutable-var]][#immutable-var-note immutable variable]||#immutable-var||e.g const in C++; how to declare||
||[[# compile-time-const]][#compile-time-const-note compile time constant] _
@< >@||#compile-time-const||how to declare||
||[[# assignment]][#assignment-note assignment] _
@< >@||#assignment||does assignment have a value; can they be chained||
||[[# parallel-assignment]][#parallel-assignment-note parallel assignment] _
@< >@||#parallel-assignment|| ||
||[[# swap]][#swap-note swap] _
@< >@||#swap|| ||
||[[# compound-assignment]][#compound-assignment-note compound assignment] _
##gray|//arithmetic, string, logical, bit//##||#compound-assignment|| ||
||[[# incr-decr]][#incr-decr-note increment and decrement] _
@< >@||#incr-decr|| ||
||[[# addr]][#addr-note address]||#addr||& in C, \ in Perl; in typed languages how to declare pointer types||
||[[# dereference]][#dereference-note dereference]||#dereference|| ||
||[[# type-size]][#type-size-note type size]||#type-size||i.e. sizeof()||
||[[# val-size]][#val-size-note value size]||#val-size||sizeof() can be used on expressions||
||[[# addr-arithm]][#addr-arithm-note address arithmetic]||#addr-arithm|| ||
||[[# ref-cnt-ptr]][#ref-cnt-ptr-note reference count pointer]||#ref-cnt-ptr|| ||
||[[# weak-ptr]][#weak-ptr-note weak pointer]||#weak-ptr|| ||
||[[# allocate-heap]][#allocate-heap-note allocate heap]||#allocate-heap|| ||
||[[# uninitialized-heap]][#uninitialized-heap-note uninitialized heap]||#uninitialized-heap|| ||
||[[# free-heap]][#free-heap-note free heap]||#free-heap|| ||
||[[# id-as-val]][#id-as-val-note identifier as value]||#id-as-val||i.e. quoting a symbol in lisp||
||[[# var-attr]][#var-attr-note variable attributes] _
##gray|//set, get, remove//##||#var-attr||called properties in lisp||
||[[# non-referential-id]][#non-referential-id-note non-referential identifier]||#non-referential-id||called atom in Prolog and Erlang; symbol in Ruby; keyword in Lisp; show how to quote special characters; also mention named parameters of Python and perhaps Objective C?||
||[[# unit-type-val]][#unit-type-val-note unit type and value]||#unit-type-val|| ||
||[[# null]][#null-note null] _
@< >@||#null|| ||
||[[# null-test]][#null-test-note null test] _
@< >@||#null-test|| ||
||[[# coalesce]][#coalesce-note coalesce]||#coalesce||aka null coalescing operator||
||[[# nullif]][#nullif-note nullif]||#nullif|| ||
||[[# undef-var]][#undef-var-note undefined variable] _
@< >@||#undef-var||for languages which don't require declaration; notes can have undef test||
||[[# rm-var]][#rm-var-note remove variable]||#rm-var||interactive environments often have this feature||
||[[# cond-expr]][#cond-expr-note conditional expression] _
@< >@||#cond-expr|| ||
||[[# branch-type-mismatch]][#branch-type-mismatch-note branch type mismatch]||#branch-type-mismatch|| ||
||[[# decl-expr-type]][#decl-expr-type-note declare expression type]||#decl-expr-type|| ||
||||||~ [[# arithmetic-logic]][#arithmetic-logic-note arithmetic and logic]||
||~ title ||~ anchor||~ description||
||[[# boolean-type]][#boolean-type-note boolean type]||#boolean-type|| ||
||[[# true-false]][#true-false-note true and false] _
@< >@||#true-false|| ||
||[[# falsehoods]][#falsehoods-note falsehoods] _
@< >@||#falsehoods||lists all values which evaluate as false in a conditional or as an operand of a logical operator. Add a note if there values which cause an error in that context.||
||[[# logical-op]][#logical-op-note logical operators] _
@< >@||#logical-op|| ||
||[[# short-circuit-op]][#short-circuit-op-note short circuit operators]||#short-circuit-op||when logical ops don't short circuit||
||[[# relational-expr]][#relational-expr-note relational expression]||#relational-expr||for languages with unusual syntax: shells, tcl, prolog||
||[[# relational-op]][#relational-op-note relational operators] _
@< >@||#relational-op|| ||
||[[# min-max]][#min-max-note min and max]||#min-max||Do functions take variable number of arguments? See also min-max-elem in the arrays section.||
||[[# three-val-comparison]][#three-val-comparison-note three value comparison]||#three-val-comparison|| ||
||[[# int-type]][#int-type-note integer type]||#int-type||list types if more than one, notes contain info about literals||
||[[# int-literal]][#int-literal-note integer literal]||#int-literal||if unusual; SML, Oz uses ~ for negation; Haskell lacks negative literals||
||[[# unsigned-type]][#unsigned-type-note unsigned type]||#unsigned-type|| ||
||[[# float-type]][#float-type-note float type]||#float-type||list types if more than one||
||[[# float-literal]][#float-literal-note float literal]||#float-literal||if unusual, otherwise put in notes to float type||
||[[# fixed-type]][#fixed-type-note fixed type]||#fixed-type|| ||
||[[# num-predicates]][#num-predicates-note numeric predicates]||#num-predicates|| ||
||[[# arith-expr]][#arith-expr-note arithmetic expression]||#arith-expr||for languages with unusual syntax: shells, tcl||
||[[# arith-op]][#arith-op-note arithmetic operators] _
@< >@||#arith-op||addition, subtraction, multiplication, division, quotient, remainder||
||[[# add-int-float]][#add-int-float-note add integer and float]||#add-int-float||how to add integer and float; omit if no explicit conversion is needed||
||[[# unary-negation]][#unary-negation-note unary negation]||#unary-negation||example should be unary negation and not a negative float literal (i.e. use a variable)||
||[[# int-div]][#int-div-note integer division] _
@< >@||#int-div||How to perform integer division (i.e. quotient) on integers.||
||[[# int-div-zero]][#int-div-zero-note integer division by zero] _
@< >@||#int-div-zero||test positive, negative, and zero dividend; if there is an infinity value does it have a literal?||
||[[# divmod]][#divmod-note divmod]||#divmod|| ||
||[[# float-div]][#float-div-note float division] _
@< >@||#float-div||How to perform float division on integers.||
||[[# float-div-zero]][#float-div-zero-note float division by zero] _
@< >@||#float-div-zero||test positive, negative, and zero dividend; if there is an infinity value does it have a literal?||
||[[# power]][#power-note power]||#power||Use 2 ** 16 as an example. different for integers and floats? Zero with negative exponent? Negative number with fractional exponent?||
||[[# factorial]][#factorial-note factorial] _
_
##gray|//and binomial coefficient//##||#factorial|| ||
||[[# sqrt]][#sqrt-note sqrt]||#sqrt|| ||
||[[# sqrt-negative-one]][#sqrt-negative-one-note sqrt -1] _
@< >@||#sqrt-negative-one|| ||
||[[# transcendental-func]][#transcendental-func-note transcendental functions] _
@< >@||#transcendental-func||rename transcendental functions (but rm sqrt). 4 groups: exp and log; trig; inverse trig; atan2||
||[[# transcendental-const]][#transcendental-const-note transcendental constants]||#transcendental-const||pi and e||
||[[# float-truncation]][#float-truncation-note float truncation] _
##gray|//round towards zero, round to nearest integer, round down, round up//##||#float-truncation|| ||
||[[# absolute-val]][#absolute-val-note absolute value] _
##gray|//and signum//##||#absolute-val|| ||
||[[# int-overflow]][#int-overflow-note integer overflow] _
@< >@||#int-overflow||some possibilities: modular arithmetic, exception, conversion to float, conversion to arbitrary length integer||
||[[# float-overflow]][#float-overflow-note float overflow] _
@< >@||#float-overflow|| ||
||[[# float-limits]][#float-limits-note float limits]||#float-limits|| ||
||[[# arbitrary-len-int-type]][#arbitrary-len-int-type-note arbitrary length integer type]||#arbitrary-len-int-type|| ||
||[[# arbitrary-len-int-op]][#arbitrary-len-int-op-note arbitrary length integer operations]||#arbitrary-len-int-op|| ||
||[[# rational-type]][#rational-type-note rational type]||#rational-type|| ||
||[[# rational-construction]][#rational-construction-note rational construction]||#rational-construction|| ||
||[[# rational-decomposition]][#rational-decomposition-note rational decomposition]||#rational-decomposition||numerator, denominator||
||[[# decimal-approx]][#decimal-approx-note decimal approximation]||#decimal-approx||and how to control the number of digits||
||[[# complex-type]][#complex-type-note complex type]||#complex-type|| ||
||[[# complex-construction]][#complex-construction-note complex construction]||#complex-construction||also construct from polar coordinates||
||[[# complex-decomposition]][#complex-decomposition-note complex decomposition]||#complex-decomposition||real and imaginary, argument and absolute value, conjugate||
||[[# random-num]][#random-num-note random number] _
##gray|//uniform integer, uniform float, normal float//##||#random-num||put distribution in subtitle||
||[[# random-seed]][#random-seed-note random seed] _
##gray|//set, get and restore//##||#random-seed||just show how to set it?||
||[[# bit-op]][#bit-op-note bit operators] _
##gray|//left shift, right shift, and, inclusive or, exclusive or, complement//##||#bit-op||for examples use (1, 3) or (5, 1). Supposing the arguments are nonnegative, (1, 3) is the minimal solution which makes all of the operators distinct. (5, 1) is the minimal solution where all of the operators are distinct and nonzero. The minimization function is the sum of the arguments. _
_
Shift can be logical, circular, or arithmetic. In logical shift the new bits are zero. In circular the new bits are the bits that were removed from the other end. Arithmetic left shift is the same as logical left shift. Arithmetic right shift fills with the value of the high order bit.||
||[[# binary-octal-hex-literals]][#binary-octal-hex-literals-note binary, octal, and hex literals]||#binary-octal-hex-literals|| ||
||[[# radix]][#radix-note radix] _
##gray|//convert integer to and from string with radix//##||#radix|| ||
||||||~ [[# str]][#str-note strings]||
||~ title ||~ anchor||~ description||
||[[# str-type]][#str-type-note string type]||#str-type||is encoding a property?||
||[[# str-pred]][#str-pred-note string predicate]||#str-pred|| ||
||[[# allocate-str]][#allocate-str-note allocate string]||#allocate-str|| ||
||[[# str-literal]][#str-literal-note string literal] _
@< >@||#str-literal|| ||
||[[# newline-in-str-literal]][#newline-in-str-literal-note newline in literal] _
@< >@||#newline-in-str-literal||Ways to put a newline in a string; note if actual newline doesn't render.||
||[[# str-literal-esc]][#str-literal-esc-note literal escapes] _
@< >@||#str-literal-esc||explain sequences not found in C||
||[[# custom-str-literal-delimiters]][#custom-str-literal-delimiters-note custom delimiters]||#custom-str-literal-delimiters|| ||
||[[# here-doc]][#here-doc-note here document] _
@< >@||#here-doc|| ||
||[[# unquoted-str-literal]][#unquoted-str-literal-note unquoted string literal]||#unquoted-str-literal||also called a bareword||
||[[# var-interpolation]][#var-interpolation-note variable interpolation] _
@< >@||#var-interpolation|| ||
||[[# expr-interpolation]][#expr-interpolation-note expression interpolation]|| || ||
||[[# fmt-str]][#fmt-str-note format string] _
@< >@||#fmt-str||i.e. sprintf; characters for string, integer, float, how to escape conversion specifier character||
||[[# mutable-str]][#mutable-str-note are strings mutable?]||#mutable-str|| ||
||[[# copy-str]][#copy-str-note copy string]||#copy-str|| ||
||[[# compare-str]][#compare-str-note compare strings]||#compare-str||if relational operators don't work||
||[[# str-concat]][#str-concat-note concatenate] _
@< >@||#str-concat|| ||
||[[# str-replicate]][#str-replicate-note replicate] _
@< >@||#str-replicate||replicate character and replicate string. Also called string multiplication.||
||[[# translate-case]][#translate-case-note translate case] _
##gray|//to upper, to lower//##||#translate-case||rename from case manipulation. to upper, to lower||
||[[# capitalize]][#capitalize-note capitalize]||#capitalize||capitalizes string or words?||
||[[# trim]][#trim-note trim] _
##gray|//left, right, both ends//##||#trim||Also called stripping. But prefer trimming, since stripping can mean removing internal occurrences of a character||
||[[# pad]][#pad-note pad] _
##gray|//left, right, both ends//##||#pad|| ||
||[[# num-to-str]][#num-to-str-note number to string]||#num-to-str||precision and zero padding; explict conversion and operators which perform implicit conversion||
||[[# str-to-num]][#str-to-num-note string to number]||#str-to-num||notes on whether full string must parse and what happen if conversion fails; explicit conversion and operators which perform implicit conversion||
||[[# str-join]][#str-join-note string join] _
@< >@||#str-join|| ||
||[[# split]][#split-note split]||#split||char, string, and regex delimiter _
_
splitting on one occurrence of a delimiter vs one or more occurrences _
_
how boundary delimiters are handled||
||[[# split-in-two]][#split-in-two-note split in two] _
##gray|//at first delimiter, at last delimiter//##||#split-in-two|| ||
||[[# split-keep-delimiters]][#split-keep-delimiters-note split and keep delimiters]||#split-keep-delimiters|| ||
||[[# prefix-suffix-test]][#prefix-suffix-test-note prefix and suffix test]||#prefix-suffix-test|| ||
||[[# serialize]][#serialize-note serialize] _
##gray|//and deserialize//##||#serialize|| ||
||[[# str-len]][#str-len-note length] _
@< >@||#str-len||in characters, in bytes||
||[[# index-substr]][#index-substr-note index of substring] _
##gray|//first, last//##||#index-substr||is index zero-based or one-based? What if not found?||
||[[# extract-substr]][#extract-substr-note extract substring] _
@< >@||#extract-substr||zero-based or one-based index? by endpoints, by start and length; what about out-of-bounds condition||
||[[# char-type]][#char-type-note character type]||#char-type|| ||
||[[# char-pred]][#char-pred-note character predicate]||#char-pred|| ||
||[[# char-literal]][#char-literal-note character literal]||#char-literal|| ||
||[[# lookup-char]][#lookup-char-note character lookup] _
##gray|//and byte//##||#lookup-char||is index zero-based or one-based? out-of-bounds?||
||[[# char-index]][#char-index-note character index]||#char-index|| ||
||[[# char-tests]][#char-tests-note character tests]||#char-tests||such as defined in <ctype.h>||
||[[# chr-ord]][#chr-ord-note chr and ord] _
@< >@||#chr-ord||"chr" converts an integer representing a code point to the corresponding character. In language which represent characters by integers no such operation is necessary, but in other languages "chr" might return a string with one character. "ord" is the inverse operation. There must be a character encoding, whether implicit or explicit, and "chr" can fail if not given a code point that is in range.||
||[[# str-to-char-array]][#str-to-char-array-note to array of characters]||#str-to-char-array|| ||
||[[# test-char]][#test-char-note test character]||#test-char||is uppercase? is lowercase? Other Unicode properties||
||[[# translate-char]][#translate-char-note translate characters] _
@< >@||#translate-char|| ||
||[[# delete-char]][#delete-char-note delete characters]||#delete-char||also how to delete characters "not" in the list||
||[[# squeeze-char]][#squeeze-char-note squeeze characters]||#squeeze-char||combine with translate to squeeze all whitespace to a single space?||
||||||~ [[# regex]][#regex-note regular expressions]||
||~ title ||~ anchor||~ description||
||[[# regex-literal]][#regex-literal-note literal, custom delimited literal]||#regex-literal|| ||
||[[# char-class-abbrev]][#char-class-abbrev-note character class abbreviations]||#char-class-abbrev|| ||
||[[# regex-anchors]][#regex-anchors-note anchors]||#regex-anchors|| ||
||[[# regex-lookahead]][#regex-lookahead-note lookahead] _
##gray|//positive, negative//##||#regex-lookahead|| ||
||[[# regex-test]][#regex-test-note match test] _
@< >@||#regex-test|| ||
||[[# case-insensitive-regex]][#case-insensitive-regex-note case insensitive match test]||#case-insensitive-regex|| ||
||[[# regex-modifiers]][#regex-modifiers-note modifiers] _
@< >@||#regex-modifiers|| ||
||[[# subst]][#subst-note substitution] _
@< >@||#subst|| ||
||[[# match-prematch-postmatch]][#match-prematch-postmatch-note match, prematch, postmatch] _
@< >@||#match-prematch-postmatch|| ||
||[[# group-capture]][#group-capture-note group capture] _
@< >@||#group-capture|| ||
||[[# named-group-capture]][#named-group-capture-note named group capture]||#named-group-capture|| ||
||[[# scan]][#scan-note scan] _
@< >@||#scan|| ||
||[[# backreference]][#backreference-note backreference in match and substitution]||#backreference|| ||
||[[# recursive-regex]][#recursive-regex-note recursive regex]||#recursive-regex|| ||
||||||~ [[# dates-time]][#dates-time-note dates and time]||
||~ title ||~ anchor||~ description||
||[[# broken-down-datetime-type]][#broken-down-datetime-type-note broken-down datetime type]||#broken-down-datetime-type||called broken-down or broken-out in the C standard library||
||[[# unix-epoch-type]][#unix-epoch-type-note unix epoch type]||#unix-epoch-type||if not an integer or if there are multiple integer types||
||[[# current-datetime]][#current-datetime-note current datetime]||#current-datetime||local and UTC||
||[[# current-unix-epoch]][#current-unix-epoch-note current unix epoch]||#current-unix-epoch|| ||
||[[# broken-down-datetime-to-unix-epoch]][#broken-down-datetime-to-unix-epoch-note broken-down datetime to unix epoch]||#broken-down-datetime-to-unix-epoch||convert broken-down datetime to unix epoch; both local and UTC||
||[[# unix-epoch-to-broken-down-datetime]][#unix-epoch-to-broken-down-datetime-note unix epoch to broken-down datetime]||#unix-epoch-to-broken-down-datetime|| ||
||[[# datetime-to-str]][#datetime-to-str-note datetime to string]||#datetime-to-str||Using the default format for the locale||
||[[# fmt-datetime]][#fmt-datetime-note format datetime]||#fmt-datetime||man page of format specifiers||
||[[# parse-datetime]][#parse-datetime-note parse datetime]||#parse-datetime||man page of format specifiers||
||[[# parse-datetime-without-format]][#parse-datetime-without-format-note parse datetime w/o format]||#parse-datetime-without-format|| ||
||[[# date-parts]][#date-parts-note date parts]||#date-parts|| ||
||[[# time-parts]][#time-parts-note time parts]||#time-parts|| ||
||[[# build-datetime]][#build-datetime-note build broken-down datetime]||#build-datetime||rollover: does May 32 == Jun 1; what about Jun 0?||
||[[# dow-doy]][#dow-doy-note day of week and day of year]||#dow-doy|| ||
||[[# datetime-subtraction]][#datetime-subtraction-note datetime subtraction]||#datetime-subtraction||does the subtraction operator work or is the result nonsensical? Is there are different way to get the duration length||
||[[# add-duration]][#add-duration-note add duration]||#add-duration|| ||
||[[# local-tmz-determination]][#local-tmz-determination-note local time zone determination]||#local-tmz-determination||and if it is stored in broken-down date and time values||
||[[# tmz-info]][#tmz-info-note time zone info] _
##gray|//name and utc offset//##||#tmz-info|| ||
||[[# daylight-savings-test]][#daylight-savings-test-note daylight savings test]||#daylight-savings-test|| ||
||[[# nonlocal-tmz]][#nonlocal-tmz-note nonlocal time zone]||#nonlocal-tmz||convert a UTC date and time to the corresponding date and time for a nonlocal time zone||
||[[# microseconds]][#microseconds-note microseconds]||#microseconds||get current date and time down to the microsecond||
||||||~ [[# func]][#func-note functions]||
||~ title ||~ anchor||~ description||
||[[# decl-func]][#decl-func-note declare]||#decl-func|| ||
||[[# def-func]][#def-func-note define] _
@< >@||#def-func|| ||
||[[# call-func]][#call-func-note call]||#call-func|| ||
||[[# def-static-class-method]][#def-static-class-method-note define static class method]||#def-static-class-method|| ||
||[[# call-static-class-method]][#call-static-class-method-note call static class method]||#call-static-class-method|| ||
||[[# def-func-with-block-body]][#def-func-with-block-body-note define with block body]||#def-func-with-block-body||for languages which have functions which expression bodies||
||[[# undef-func]][#undef-func-note undefine]||#undef-func|| ||
||[[# redefine-func]][#redefine-func-note redefine]||#redefine-func||in particular, can built-ins be redefined||
||[[# overload-func]][#overload-func-note overload]||#overload-func|| ||
||[[# def-func-piecewise]][#def-func-piecewise-note define piecewise]||#def-func-piecewise|| ||
||[[# nest-func]][#nest-func-note nest]||#nest-func||Note visibility of nested function. Can nested function see local functions of parent variable?||
||[[# missing-arg]][#missing-arg-note missing argument behavior] _
@< >@||#missing-arg||what about extra arg behavior?||
||[[# extra-arg]][#extra-arg-note extra argument behavior]||#extra-arg|| ||
||[[# default-arg]][#default-arg-note default argument] _
@< >@||#default-arg|| ||
||[[# named-param]][#named-param-note named parameters] _
@< >@||#named-param|| ||
||[[# variadic-func]][#variadic-func-note variadic function]||#variadic-func|| ||
||[[# expand-array]][#expand-array-note pass array elements as separate arguments]||#expand-array||aka splat operator; should illustrate when not all arguments come from array||
||[[# param-alias]][#param-alias-note parameter alias] _
@< >@||#param-alias||What if an expression is provided? What about strings, arrays, and dictionaries in the normal case? in out in Ada and ref in C#||
||[[# uninitialized-param-alias]][#uninitialized-param-alias-note uninitialized parameter alias]||#uninitialized-param-alias||out in Ada and C#||
||[[# retval]][#retval-note return value] _
@< >@||#retval||how return value||
||[[# no-retval]][#no-retval-note no return value]||#no-retval||how to declare function with no return value; aka a procedure||
||[[# multiple-retval]][#multiple-retval-note multiple return values] _
@< >@||#multiple-retval|| ||
||[[# named-retval]][#named-retval-note named return values] _
@< >@||#named-retval|| ||
||[[# exec-on-return]][#exec-on-return-note execute on return] _
@< >@||#exec-on-return||e.g.. the defer statement in Go||
||[[# recursive-func]][#recursive-func-note recursive function]||#recursive-func|| ||
||[[# mutually-recursive-func]][#mutually-recursive-func-note mutually recursive functions]||#mutually-recursive-func|| ||
||[[# anon-func-literal]][#anon-func-literal-note anonymous function literal] _
@< >@||#anon-func-literal||aka lambda function||
||[[# call-anon-func]][#call-anon-func-note call anonymous function]||#call-anon-func|| ||
||[[# closure]][#closure-note closure]||#closure|| ||
||[[# func-private-state]][#func-private-state-note function with private state]||#func-private-state|| ||
||[[# func-as-val]][#func-as-val-note function as value]||#func-as-val||i.e. how to pass a function as an argument.||
||[[# generator]][#generator-note generator]||#generator||a function which can yield to the caller and resume||
||[[# decorator]][#decorator-note decorator]||#decorator||note on order when there are two decorators||
||[[# compose-func]][#compose-func-note compose functions]||#compose-func||if a point free operator is provided||
||[[# partial-application]][#partial-application-note partial application]||#partial-application||cf currying||
||[[# overload-op]][#overload-op-note overload operator]||#overload-op|| ||
||[[# call-op-like-func]][#call-op-like-func-note call operator like function]||#call-op-like-func|| ||
||[[# call-func-like-op]][#call-func-like-op-note call function like operator]||#call-func-like-op|| ||
||[[# lazy-eval]][#lazy-eval-note lazy evaluation]||#lazy-eval||when not the default behavior||
||[[# strict-eval]][#strict-eval-note strict evaluation]||#strict-eval||when not the default behavior||
||||||~ [[# exec-control]][#exec-control-note execution control]||
||~ title ||~ anchor||~ description||
||[[# if]][#if-note if] _
@< >@||#if||print "positive", "negative", or "zero" depending upon sign of x||
||[[# switch]][#switch-note switch]||#switch||does execution fall thru to the next case? _
_
permitted type of expression in switch: integer, any _
_
type of comparision in case: equality test, regex match||
||[[# while]][#while-note while] _
@< >@||#while||iterate over i and print the numbers 0 to 9 _
_
if do-while loop exists, mention in footnote||
||[[# for]][#for-note for]||#for||initialization, condition, afterthought; illustrate comma operator _
iterate over i and print the numbers 0 to 9||
||[[# for-local-scope]][#for-local-scope-note for with local scope]||#for-local-scope|| ||
||[[# infinite-loop]][#infinite-loop-note infinite loop]||#infinite-loop|| ||
||[[# break]][#break-note break] _
@< >@||#break|| ||
||[[# break-from-nested-loops]][#break-from-nested-loops-note break from nested loops]||#break-from-nested-loops|| ||
||[[# continue]][#continue-note continue]||#continue||can't find a short example where continue is useful||
||[[# stmt-modifiers]][#stmt-modifiers-note statement modifiers] _
@< >@||#stmt-modifiers|| ||
||[[# single-stmt-branch-loop]][#single-stmt-branch-loop-note single statement branches and loops]||#single-stmt-branch-loop|| ||
||[[# dangling-else]][#dangling-else-note dangling else]||#dangling-else||if dangling else ambiguity, show how resolved||
||[[# goto]][#goto-note goto]||#goto|| ||
||[[# longjmp]][#longjmp-note longjmp]||#longjmp|| ||
||||||~ [[# exceptions]][#exceptions-note exceptions]||
||~ title ||~ anchor||~ description||
||[[# base-exc]][#base-exc-note base exception] _
##gray|//and base of user defined exceptions//##||#base-exc||what can be thrown; base of all exceptions; of user defined exceptions; base exception methods||
||[[# predefined-exc]][#predefined-exc-note predefined exceptions]||#predefined-exc||use indentation to show hierarchy||
||[[# raise-exc]][#raise-exc-note raise] _
@< >@||#raise-exc|| ||
||[[# handle-exc]][#handle-exc-note handle]||#handle-exc|| ||
||[[# def-exc]][#def-exc-note define]||#def-exc|| ||
||[[# re-raise-exc]][#re-raise-exc-note re-raise exception]||#re-raise-exc|| ||
||[[# catch-all-handler]][#catch-all-handler-note catch-all handler] _
@< >@||#catch-all-handler|| ||
||[[# multiple-handlers]][#multiple-handlers-note multiple handlers]||#multiple-handlers|| ||
||[[# uncaught-exc]][#uncaught-exc-note uncaught exception behavior]||#uncaught-exc|| ||
||[[# last-exc-global]][#last-exc-global-note global variable for last exception]||#last-exc-global|| ||
||[[# error-msg]][#error-msg-note error message]||#error-msg|| ||
||[[# errno]][#errno-note system call errno]||#errno|| ||
||[[# stack-trace]][#stack-trace-note stack trace]||#stack-trace|| ||
||[[# finally-block]][#finally-block-note finally block] _
@< >@||#finally-block||aka ensure||
||[[# exc-specification]][#exc-specification-note exception specification]||#exc-specification||should this be in function section? Are they required, and when.||
||||||~ [[# concurrency]][#concurrency-note concurrency]||
||~ title ||~ anchor||~ description||
||[[# sleep]][#sleep-note sleep]||#sleep|| ||
||[[# timeout]][#timeout-note timeout]||#timeout|| ||
||[[# start-thread]][#start-thread-note start thread] _
@< >@||#start-thread||can threads use multiple processors; limitations such as the Python GIL||
||[[# terminate-current-thread]][#terminate-current-thread-note terminate current thread]||#terminate-current-thread||what happens when thread function returns; when all threads exit; when an exception makes it to the top of a thread||
||[[# terminate-other-thread]][#terminate-other-thread-note terminate other thread]||#terminate-other-thread|| ||
||[[# list-threads]][#list-threads-note list threads]||#list-threads|| ||
||[[# wait-on-thread]][#wait-on-thread-note wait on thread] _
@< >@||#wait-on-thread||does join have a return value; how is it set; blocking and non-blocking; order which lock is granted to waiting threads||
||[[# lock]][#lock-note lock]||#lock||reentrant locks; blocking and non-blocking||
||[[# create-msg-queue]][#create-msg-queue-note create message queue]||#create-msg-queue||for erlang, each process has an implicit queue; LIFO, FIFO, and priority queue||
||[[# send-msg]][#send-msg-note send message]||#send-msg|| ||
||[[# receive-msg]][#receive-msg-note receive message]||#receive-msg||how to receive a msg transactionally||
||||||~ [[# streams]][#streams-note streams]||
||~ title ||~ anchor||~ description||
||[[# std-file-handles]][#std-file-handles-note standard file handles]||#std-file-handles|| ||
||[[# read-line-stdin]][#read-line-stdin-note read line from stdin]||#read-line-stdin|| ||
||[[# eof]][#eof-note end-of-file behavior]||#eof|| ||
||[[# chomp]][#chomp-note chomp] _
@< >@||#chomp|| ||
||[[# write-line-stdout]][#write-line-stdout-note write line to stdout] _
@< >@||#write-line-stdout|| ||
||[[# printf]][#printf-note write formatted string to stdout]||#printf|| ||
||[[# open-file]][#open-file-note open file for reading] _
@< >@||#open-file|| ||
||[[# open-file-write]][#open-file-write-note open file for writing] _
@< >@||#open-file-write|| ||
||[[# file-encoding]][#file-encoding-note set file handle encoding] _
@< >@||#file-encoding|| ||
||[[# open-file-append]][#open-file-append-note open file for appending]||#open-file-append|| ||
||[[# close-file]][#close-file-note close file] _
@< >@||#close-file|| ||
||[[# close-file-implicitly]][#close-file-implicitly-note close file implicitly]||#close-file-implicitly||rename close file automatically?||
||[[# io-err]][#io-err-note i/o error]||#io-err|| ||
||[[# encoding-err]][#encoding-err-note encoding error]||#encoding-err|| ||
||[[# read-line]][#read-line-note read line] _
@< >@||#read-line|| ||
||[[# file-iterate]][#file-iterate-note iterate over file by line] _
@< >@||#file-iterate|| ||
||[[# read-file-array]][#read-file-array-note read file into array of strings]||#read-file-array|| ||
||[[# read-file-str]][#read-file-str-note read file into string]||#read-file-str|| ||
||[[# write-str]][#write-str-note write string] _
@< >@||#write-str|| ||
||[[# write-line]][#write-line-note write line] _
@< >@||#write-line|| ||
||[[# flush]][#flush-note flush file handle] _
@< >@||#flush|| ||
||[[# eof-test]][#eof-test-note end-of-file test] _
@< >@||#eof-test|| ||
||[[# seek]][#seek-note file handle position] _
##gray|//get, set//##||#seek||from start of file, current position, end of file||
||[[# tmp-file]][#tmp-file-note open temporary file]||#tmp-file|| ||
||[[# in-memory-stream]][#in-memory-stream-note in memory stream]||#in-memory-stream|| ||
||||||~ [[# file]][#file-note files]||
||~ title ||~ anchor||~ description||
||[[# create-empty-file]][#create-empty-file-note create empty file]||#create-empty-file||not an error if the file already exists; also how to touch a file, which updates the last modified timestamp if the file already exists||
||[[# file-test]][#file-test-note file exists test, file regular test] _
@< >@||#file-test|| ||
||[[# file-size]][#file-size-note file size] _
@< >@||#file-size|| ||
||[[# readable-writable-executable]][#readable-writable-executable-note is file readable, writable, executable]||#readable-writable-executable|| ||
||[[# chmod]][#chmod-note set file permissions]||#chmod|| ||
||[[# last-modification-time]][#last-modification-time-note last modification time]||#last-modification-time|| ||
||[[# file-cp-rm-mv]][#file-cp-rm-mv-note copy file, remove file, rename file]||#file-cp-rm-mv|| ||
||[[# symlink]][#symlink-note create symlink, symlink test, readlink]||#symlink|| ||
||[[# unused-file-name]][#unused-file-name-note generate unused file name]||#unused-file-name|| ||
||||||~ [[# file-fmt]][#file-fmt-note file formats]||
||~ title ||~ anchor||~ description||
||[[# parse-csv]][#parse-csv-note parse csv]||#parse-csv|| ||
||[[# generate-csv]][#generate-csv-note generate csv]||#generate-csv|| ||
||[[# parse-json]][#parse-json-note parse json]||#parse-json|| ||
||[[# generate-json]][#generate-json-note generate json]||#generate-json|| ||
||[[# parse-yaml]][#parse-yaml-note parse yaml]||#parse-yaml|| ||
||[[# generate-yaml]][#generate-yaml-note generate yaml]||#generate-yaml|| ||
||[[# parse-xml]][#parse-xml-note parse xml]||#parse-xml||xpath?||
||[[# generate-xml]][#generate-xml-note generate xml]||#generate-xml|| ||
||[[# parse-html]][#parse-html-note parse html]||#parse-html||xpath?||
||||||~ [[# dir]][#dir-note directories]||
||~ title ||~ anchor||~ description||
||[[# working-dir]][#working-dir-note working directory] _
##gray|//get and set//##||#working-dir||aka current directory||
||[[# program-dir]][#program-dir-note program directory]||#program-dir||The directory which contains the executable or script being executed||
||[[# build-pathname]][#build-pathname-note build pathname]||#build-pathname||does it remove doubled slashes.||
||[[# dirname-basename]][#dirname-basename-note dirname and basename]||#dirname-basename|| ||
||[[# absolute-pathname]][#absolute-pathname-note absolute pathname]||#absolute-pathname||does it understand ~; does it remove ..||
||[[# iterate-dir]][#iterate-dir-note iterate over directory by file]||#iterate-dir|| ||
||[[# glob]][#glob-note glob paths]||#glob|| ||
||[[# mkdir]][#mkdir-note make directory]||#mkdir||both mkdir and mkdir -p (latter not transactional)||
||[[# recursive-cp]][#recursive-cp-note recursive copy]||#recursive-cp|| ||
||[[# rmdir]][#rmdir-note remove empty directory]||#rmdir|| ||
||[[# rm-rf]][#rm-rf-note remove directory and contents]||#rm-rf|| ||
||[[# dir-test]][#dir-test-note directory test] _
@< >@||#dir-test|| ||
||[[# unused-dir]][#unused-dir-note generate unused directory]||#unused-dir|| ||
||[[# system-tmp-dir]][#system-tmp-dir-note system temporary file directory]||#system-tmp-dir|| ||
||||||~ [[# env-processes]][#env-processes-note processes and environment]||
||~ title ||~ anchor||~ description||
||[[# cmd-line-arg]][#cmd-line-arg-note command line arguments] _
@< >@||#cmd-line-arg|| ||
||[[# program-name]][#program-name-note program name]||#program-name|| ||
||[[# env-var]][#env-var-note environment variable] _
##gray|//get, set, clear//##||#env-var||not possible to set env variable in a portable way?||
||[[# env-var-iter]][#env-var-iter-note iterate over environment variables]||#env-var-iter|| ||
||[[# user-id-name]][#user-id-name-note user id and name]||#user-id-name|| ||
||[[# exit]][#exit-note exit] _
@< >@||#exit||and how to set the status code||
||[[# exec-test]][#exec-test-note executable test] _
@< >@||#exec-test|| ||
||[[# external-cmd]][#external-cmd-note external command] _
@< >@||#external-cmd|| ||
||[[# shell-esc-external-cmd]][#shell-esc-external-cmd-note shell-escaped external command] _
@< >@||#shell-esc-external-cmd|| ||
||[[# cmd-subst]][#cmd-subst-note command substitution] _
@< >@||#cmd-subst|| ||
||[[# pid]][#pid-note get pid, parent pid]||#pid|| ||
||[[# subproc-pid]][#subproc-pid-note subprocess pid]||#subproc-pid|| ||
||[[# signal-handler]][#signal-handler-note set signal handler] _
@< >@||#signal-handler|| ||
||[[# send-signal]][#send-signal-note send signal]||#send-signal|| ||
||||||~ [[# option-parsing]][#option-parsing-note option parsing]||
||~ title ||~ anchor||~ description||
||[[# cmd-line-opt]][#cmd-line-opt-note command line options]||#cmd-line-opt||boolean option, option with argument, and usage||
||||||~ [[# lib-namespaces]][#lib-namespaces-note libraries and namespaces]||
||~ title ||~ anchor||~ description||
||[[# std-lib-name]][#std-lib-name-note standard library name]||#std-lib-name|| ||
||[[# compile-lib]][#compile-lib-note compile library]||#compile-lib|| ||
||[[# link-lib]][#link-lib-note link library]||#link-lib|| ||
||[[# load-lib]][#load-lib-note load library] _
@< >@||#load-lib|| ||
||[[# load-lib-subdir]][#load-lib-subdir-note load library in subdirectory]||#load-lib-subdir|| ||
||[[# hot-patch]][#hot-patch-note hot patch] _
@< >@||#hot patch||i.e. reload possibly modified version of library||
||[[# load-err]][#load-err-note load error]||#load-err||
||[[# lib-path]][#lib-path-note library path] _
@< >@||#lib-path|| ||
||[[# lib-path-env]][#lib-path-env-note library path environment variable]||#lib-path-env|| ||
||[[# lib-path-cmd-line]][#lib-path-cmd-line-note library path command line option]||#lib-path-cmd-line|| ||
||[[# main-in-lib]][#main-in-lib-note main routine in library]||#main-in-lib||i.e. how to put code in a library which only executes when the used as the entry point of the program||
||[[# namespace-decl]][#namespace-decl-note namespace declaration] _
@< >@||#namespace-decl|| ||
||[[# subnamespace-decl]][#subnamespace-decl-note subnamespace declaration]||#subnamespace-decl|| ||
||[[# namespace-separator]][#namespace-separator-note namespace separator] _
@< >@||#namespace-separator|| ||
||[[# import-def]][#import-def-note import definitions] _
@< >@||#import-def||unqualified import||
||[[# import-namespace]][#import-namespace-note import all definitions in namespace] _
@< >@||#import-namespace||unqualified import||
||[[# shadow-avoidance]][#shadow-avoidance-note shadow avoidance] _
##gray|//namespace, identifier//##||#shadow-avoidance|| ||
||[[# app-env]][#app-env-note application environment] _
##gray|//create; add pkg//##||#app-env|| ||
||[[# multiple-installations]][#multiple-installations-note multiple installations]||#multiple-installations|| ||
||[[# pkg-manager]][#pkg-manager-note package manager] _
##gray|//search; install; list installed//##||#pkg-manager|| ||
||[[# pkg-spec]][#pkg-spec-note package specification format]||#pkg-spec|| ||
||||||~ [[# objects]][#objects-note objects]||
||~ title ||~ anchor||~ description||
||[[# def-class]][#def-class-note define class] _
@< >@||#def-class|| ||
||[[# create-obj]][#create-obj-note create object] _
@< >@||#create-obj|| ||
||[[# getter-setter]][#getter-setter-note get and set attribute] _
@< >@||#getter-setter|| ||
||[[# instance-var]][#instance-var-note instance variable accessibility]||#instance-var|| ||
||[[# def-method]][#def-method-note define method] _
@< >@||#def-method|| ||
||[[# invoke-method]][#invoke-method-note invoke method] _
@< >@||#invoke-method|| ||
||[[# destructor]][#destructor-note destructor] _
@< >@||#destructor|| ||
||[[# method-missing]][#method-missing-note method missing] _
@< >@||#method-missing|| ||
||[[# method-alias]][#method-alias-note method alias]||#method-alias|| ||
||[[# def-class-method]][#def-class-method-note define class method]||#def-class-method|| ||
||[[# invoke-class-method]][#invoke-class-method-note invoke class method] _
@< >@||#invoke-class-method|| ||
||||||~ [[# inheritance-polymorphism]][#inheritance-polymorphism-note inheritance and polymorphism]||
||~ title ||~ anchor||~ description||
||[[# universal-base-class]][#universal-base-class-note universal base class]||#universal-base-class|| ||
||[[# subclass]][#subclass-note subclass]||#subclass|| ||
||[[# mixin]][#mixin-note mixin]||#mixin|| ||
||||||~ [[# reflection]][#reflection-note reflection]||
||~ title ||~ anchor||~ description||
||[[# object-id]][#object-id-note object id]||#object-id|| ||
||[[# inspect-type]][#inspect-type-note inspect type] _
@< >@||#inspect-type|| ||
||[[# types]][#types-note basic types]||#types|| ||
||[[# inspect-class]][#inspect-class-note inspect class]||#inspect-class|| ||
||[[# inspect-class-hierarchy]][#inspect-class-hierarchy-note inspect class hierarchy]||#inspect-class-hierarchy|| ||
||[[# has-method]][#has-method-note has method?] _
@< >@||#has-method|| ||
||[[# msg-passing]][#msg-passing-note message passing] _
@< >@||#msg-passing|| ||
||[[# eval]][#eval-note eval] _
@< >@||#eval|| ||
||[[# inspect-methods]][#inspect-methods-note inspect methods] _
@< >@||#inspect-methods|| ||
||[[# inspect-attr]][#inspect-attr-note inspect attributes] _
@< >@||#inspect-attr|| ||
||[[# pretty-print]][#pretty-print-note pretty print] _
@< >@||#pretty-print|| ||
||[[# src-line-file]][#src-line-file-note source line number and file name]||#src-line-file|| ||
||[[# cmd-line-doc]][#cmd-line-doc-note command line documentation]||#cmd-line-doc|| ||
||||||~ [[# net-web]][#net-web-note net and web]||
||~ title ||~ anchor||~ description||
||[[# hostname-ip]][#hostname-ip-note get local hostname, dns lookup, reverse dns lookup]||#hostname-ip|| ||
||[[# http-get]][#http-get-note http get] _
@< >@||#http-get|| ||
||[[# http-post]][#http-post-note http post]||#http-post|| ||
||[[# abs-url]][#abs-url-note absolute url]||#abs-url|| ||
||[[# parse-url]][#parse-url-note parse url]||#parse-url|| ||
||[[# url-encode]][#url-encode-note url encode/decode] _
@< >@||#url-encode|| ||
||[[# base64]][#base64-note base64 encode]||#base64|| ||
||||||~ [[# dom]][#dom-note dom]||
||~ title ||~ anchor||~ description||
||[[# get-window]][#get-window-note get window]||#get-window|| ||
||[[# get-doc-root]][#get-doc-root-note get document root]||#get-doc-root|| ||
||[[# css-selector]][#css-selector-note css selector]||#css-selector|| ||
||[[# get-attr]][#get-attr-note get attribute]||#get-attr|| ||
||[[# set-attr]][#set-attr-note set attribute]||#set-attr|| ||
||[[# children-node]][#children-node-note children of node]||#children-node|| ||
||[[# append-node]][#append-node-note append node]||#append-node|| ||
||[[# rm-node]][#rm-node-note remove node]||#rm-node|| ||
||[[# get-parent-node]][#get-parent-node-note get parent node]||#get-parent-node|| ||
||[[# get-set-text]][#get-set-text-note get and set text]||#get-set-text|| ||
||[[# set-click-handler]][#set-click-handler-note set click handler]||#set-click-handler|| ||
||[[# rm-click-handler]][#rm-click-handler-note remove click handler]||#rm-click-handler|| ||
||||||~ [[# gui]][#gui-note gui]||
||~ title ||~ anchor||~ description||
||||||~ [[# unit-tests]][#unit-tests-note unit tests]||
||~ title ||~ anchor||~ description||
||[[# test-class]][#test-class-note test class]||#test-class|| ||
||[[# run-all-tests]][#run-all-tests-note run all tests]||#run-all-tests|| ||
||[[# run-single-test]][#run-single-test-note run single test]||#run-single-test|| ||
||[[# assert-equal]][#assert-equal-note equality assertion]||#assert-equal|| ||
||[[# assert-approx]][#assert-approx-note approximate assertion]||#assert-approx|| ||
||[[# assert-regex]][#assert-regex-note regex assertion]||#assert-regex|| ||
||[[# assert-exc]][#assert-exc-note exception assertion]||#assert-exc|| ||
||[[# mock-method]][#mock-method-note mock method]||#mock-method|| ||
||[[# test-setup]][#test-setup-note setup]||#test-setup|| ||
||[[# test-teardown]][#test-teardown-note teardown]||#test-teardown|| ||
||[[# coverage]][#coverage-note coverage]||#coverage|| ||
||||||~ [[# debug-profile]][#debug-profile-note debugging and profiling]||
||~ title ||~ anchor||~ description||
||[[# check-syntax]][#check-syntax-note check syntax] _
@< >@||#check-syntax|| ||
||[[# stronger-warnings]][#stronger-warnings-note flag for stronger warnings]||#stronger-warnings|| ||
||[[# stronger-errors]][#stronger-errors-note flag for stronger errors]||#strong-err|| ||
||[[# suppress-warnings]][#suppress-warnings-note suppress warnings]||#suppress-warnings|| ||
||[[# warnings-as-err]][#warnings-as-err-note treat warnings as errors]||#warnings-as-err|| ||
||[[# lint]][#lint-note lint]||#lint||unused declarations; paths with no return||
||[[# src-cleanup]][#src-cleanup-note source cleanup]||#src-cleanup|| ||
||[[# debugger]][#debugger-note run debugger]||#debugger|| ||
||[[# debugger-cmds]][#debugger-cmds-note debugger commands]||#debugger-cmds|| ||
||[[# benchmark]][#benchmark-note benchmark code]||#benchmark|| ||
||[[# cpu-usage]][#cpu-usage-note cpu usage]||#cpu-usage|| ||
||[[# profile]][#profile-note profile code]||#profile|| ||
||[[# memory-tool]][#memory-tool-note memory tool]||#memory-tool||memory leaks; accessing uninitialized memory||
||||||~ DATA STRUCTURES||
||||||~ [[# fixed-length-arrays]][#fixed-length-arrays-note fixed-length arrays]||
||~ title ||~ anchor||~ description||
||[[# fixed-len-array-stack]][#fixed-len-array-stack-note declare on stack]||#fixed-len-array-stack|| ||
||[[# fixed-len-array-stack-runtime-size]][#fixed-len-array-stack-runtime-size-note declare on stack with runtime expression for size]||#fixed-len-array-stack-runtime-size||a C99 feature||
||[[# fixed-len-array-heap]][#fixed-len-array-heap-note declare on heap]||#fixed-len-array-heap|| ||
||[[# free-fixed-len-array-heap]][#free-fixed-len-array-heap-note free heap]||#free-fixed-len-array-heap|| ||
||[[# fixed-len-array-init-list]][#fixed-len-array-init-list-note initialization list] _
@< >@||#fixed-len-array-init-list|| ||
||[[# fixed-len-array-size]][#fixed-len-array-size-note size] _
@< >@||#fixed-len-array-size|| ||
||[[# fixed-len-array-lookup]][#fixed-len-array-lookup-note lookup] _
@< >@||#fixed-len-array-lookup||negative integers or arrays of integers and indices||
||[[# fixed-len-array-update]][#fixed-len-array-update-note update] _
@< >@||#fixed-len-array-update||what happens to size of array||
||[[# fixed-len-array-out-of-bounds]][#fixed-len-array-out-of-bounds-note out-of-bounds]||#fixed-len-array-out-of-bounds|| ||
||[[# copy-fixed-len-array]][#copy-fixed-len-array-note copy]||#copy-fixed-len-array|| ||
||[[# realloc]][#realloc-note realloc]||#realloc|| ||
||[[# fixed-len-array-as-func-arg]][#fixed-len-array-as-func-arg-note as function argument]||#fixed-len-array-as-func-arg||how to pass with or without making a copy||
||[[# iterate-over-fixed-len-array]][#iterate-over-fixed-len-array-note iterate] _
@< >@||#iterate-over-fixed-len-array|| ||
||[[# sort-fixed-len-array]][#sort-fixed-len-array-note sort]||#sort-fixed-len-array|| ||
||||||~ [[# resizable-arrays]][#resizable-arrays-note resizable arrays]||
||~ title ||~ anchor||~ description||
||[[# decl-resizable-array]][#decl-resizable-array-note declare]||#decl-resizable-array|| ||
||[[# resizable-array-init-list]][#resizable-array-init-list-note initialization list]||#resizable-array-init-list|| ||
||[[# resizable-array-literal]][#resizable-array-literal-note literal] _
@< >@||#resizable-array-literal|| ||
||[[# quote-words]][#quote-words-note quote words] _
@< >@||#quote-words|| ||
||[[# resizable-array-size]][#resizable-array-size-note size] _
@< >@||#resizable-array-size|| ||
||[[# resizable-array-capacity]][#resizable-array-capacity-note capacity]||#resizable-array-capacity|| ||
||[[# empty-resizable-array-test]][#empty-resizable-array-test-note empty test] _
@< >@||#empty-resizable-array-test||and how to make array empty||
||[[# resizable-array-lookup]][#resizable-array-lookup-note lookup] _
@< >@||#resizable-array-lookup||negative integers or arrays of integers and indices||
||[[# resizable-array-update]][#resizable-array-update-note update] _
@< >@||#resizable-array-update||what happens to size of array||
||[[# resizable-array-out-of-bounds]][#resizable-array-out-of-bounds-note out-of-bounds behavior]||#resizable-array-out-of-bounds|| ||
||[[# array-element-index]][#array-element-index-note element index]||#array-element-index||first and last occurrence; example should have two occurrences; does language return an array of indices; what if none found||
||[[# slice-array]][#slice-array-note slice] _
##gray|//by endpoints, by length//## _
@< >@||#slice-array||is slice modifiable, and if modified, does the original array change?||
||[[# slice-array-to-end]][#slice-array-to-end-note slice to end] _
@< >@||#slice-array-to-end|| ||
||[[# array-back]][#array-back-note manipulate back] _
@< >@||#array-back|| ||
||[[# array-front]][#array-front-note manipulate front] _
@< >@||#array-front|| ||
||[[# concatenate-array]][#concatenate-array-note concatenate]||#concatenate-array|| ||
||[[# replicate-array]][#replicate-array-note replicate]||#replicate-array||replicate element; replicate array||
||[[# copy-array]][#copy-array-note copy] _
##gray|//address copy, shallow copy, deep copy//##||#copy-array|| ||
||[[# array-as-func-arg]][#array-as-func-arg-note array as function argument]||#array-as-func-arg||how to pass with or without making a copy||
||[[# iterate-over-array]][#iterate-over-array-note iterate over elements] _
@< >@||#iterate-over-array|| ||
||[[# indexed-array-iteration]][#indexed-array-iteration-note iterate over indices and elements]||#indexed-array-iteration|| ||
||[[# range-iteration]][#range-iteration-note iterate over range]||#range-iteration|| ||
||[[# range-array]][#range-array-note instantiate range as array]||#range-array|| ||
||[[# reverse-array]][#reverse-array-note reverse]||#reverse-array|| ||
||[[# sort-array]][#sort-array-note sort]||#sort-array|| ||
||[[# dedupe-array]][#dedupe-array-note dedupe]||#dedupe-array|| ||
||[[# membership]][#membership-note membership] _
@< >@||#membership|| ||
||[[# intersection]][#intersection-note intersection] _
@< >@||#intersection|| ||
||[[# union]][#union-note union] _
@< >@||#union|| ||
||[[# set-diff]][#set-diff-note relative complement, symmetric difference]||#set-diff|| ||
||[[# map]][#map-note map] _
@< >@||#map|| ||
||[[# filter]][#filter-note filter] _
@< >@||#filter|| ||
||[[# reduce]][#reduce-note reduce] _
@< >@||#reduce||fold right versus fold left?||
||[[# min-max-elem]][#min-max-elem-note min and max element] _
@< >@||#min-max-elem|| ||
||[[# universal-existential-test]][#universal-existential-test-note universal and existential tests] _
@< >@||#universal-existential-test|| ||
||[[# shuffle-sample]][#shuffle-sample-note shuffle and sample]||#shuffle-sample||sample with replacement: R: sample(a, 3, replace=T)||
||[[# zip]][#zip-note zip] _
@< >@||#zip||what if of different length?||
||[[# flatten]][#flatten-note flatten]||#flatten||one level and completely||
||[[# cartesian-product]][#cartesian-product-note cartesian product]||#cartesian-product|| ||
||||||~ [[# arithmetic-sequences]][#arithmetic-sequences-note arithmetic sequences]||
||~ title ||~ anchor||~ description||
||[[# arith-seq-diff-one]][#arith-seq-diff-one-note unit difference]||#arith-seq-diff-one|| ||
||[[# arith-seq-diff-ten]][#arith-seq-diff-ten-note difference of 10]||#arith-seq-diff-ten|| ||
||[[# arith-seq-diff-tenth]][#arith-seq-diff-tenth-note difference of 0.1]||#arith-seq-diff-tenth|| ||
||[[# iter-over-arith-seq]][#iter-over-arith-seq-note iterate over arithmetic sequence]||#iter-over-arith-seq||Is it possible to iterate over the arithmetic sequence w/o instantiating it as an array in memory?||
||[[# arith-seq-to-array]][#arith-seq-to-array-note convert arithmetic sequence to array]||#arith-seq-to-array|| ||
||||||~ [[# lists]][#lists-note lists]||
||~ title ||~ anchor||~ description||
||[[# list-literal]][#list-literal-note literal]||#list-literal|| ||
||[[# empty-list]][#empty-list-note empty list]||#empty-list|| ||
||[[# empty-list-test]][#empty-list-test-note empty list test]||#empty-list-test|| ||
||[[# cons]][#cons-note cons]||#cons|| ||
||[[# head]][#head-note head]||#head|| ||
||[[# tail]][#tail-note tail]||#tail|| ||
||[[# head-tail-empty-list]][#head-tail-empty-list-note head and tail of empty list]||#head-tail-empty-list|| ||
||[[# cons-cell]][#cons-cell-note cons cell]||#cons-cell|| ||
||[[# list-test]][#list-test-note tests] _
##gray|//atom, cons cell, list//##||#list-test|| ||
||[[# list-len]][#list-len-note length]||#list-len|| ||
||[[# nth-elem-of-list]][#nth-elem-of-list-note nth element]||#nth-elem-of-list|| ||
||[[# list-elem-index]][#list-elem-index-note element index]||#list-elem-index|| ||
||[[# list-update]][#list-update-note update]||#list-update|| ||
||[[# list-front]][#list-front-note manipulate front]||#list-front|| ||
||[[# list-concat]][#list-concat-note concatenate] _
##gray|//two lists, list of lists//##||#list-concat|| ||
||[[# list-last]][#list-last-note last] _
##gray|//and butlast//##||#list-last|| ||
||[[# list-take]][#list-take-note take]||#list-take|| ||
||[[# list-drop]][#list-drop-note drop]]||#list-drop|| ||
||[[# iter-over-list]][#iter-over-list-note iterate]||#iter-over-list|| ||
||[[# list-reverse]][#list-reverse-note reverse]||#list-reverse|| ||
||[[# list-sort]][#list-sort-note sort]||#list-sort|| ||
||[[# list-map]][#list-map-note map]||#list-map|| ||
||[[# list-filter]][#list-filter-note filter]||#list-filter|| ||
||[[# list-fold-left]][#list-fold-left-note fold from left]||#list-fold-left|| ||
||[[# list-fold-right]][#list-fold-right-note fold from right]||#list-fold-right|| ||
||[[# list-membership]][#list-membership-note membership]||#list-membership|| ||
||[[# list-universal-test]][#list-universal-test-note universal test]||#list-universal-test|| ||
||[[# list-existential-test]][#list-existential-test-note existential test]||#list-existential-test|| ||
||[[# list-zip]][#list-zip-note zip lists]||#list-zip||what if of different length?||
||[[# assoc-list-lookup]][#assoc-list-lookup-note association list lookup]||#assoc-list-lookup|| ||
||[[# prop-list-lookup]][#prop-list-lookup-note property list lookup]||#prop-list-lookup|| ||
||[[# apply-assoc-list]][#apply-assoc-list-note apply association list]||#apply-assoc-list|| ||
||||||~ [[# tuples]][#tuples-note tuples]||
||~ title ||~ anchor||~ description||
||[[# tuple-type]][#tuple-type-note type]||#tuple-type|| ||
||[[# tuple-literal]][#tuple-literal-note literal]||#tuple-literal|| ||
||[[# tuple-ctor]][#tuple-ctor-note constructor]||#tuple-ctor|| ||
||[[# tuple-lookup]][#tuple-lookup-note lookup]||#tuple-lookup|| ||
||[[# tuple-decompose]][#tuple-decompose-note decompose]||#tuple-decompose|| ||
||[[# tuple-update]][#tuple-update-note update]||#tuple-update|| ||
||[[# tuple-len]][#tuple-len-note length]||#tuple-len|| ||
||[[# pair-literal]][#pair-literal-note pair literal]||#pair-literal|| ||
||[[# pair-ctor]][#pair-ctor-note pair constructor]||#pair-ctor|| ||
||[[# pair-lookup]][#pair-lookup-note pair lookup]||#pair-lookup|| ||
||[[# pair-update]][#pair-update-note pair update]||#pair-update|| ||
||||||~ [[# stacks]][#stacks-note stacks]||
||~ title ||~ anchor||~ description||
||||||~ [[# queues]][#queues-note queues]||
||~ title ||~ anchor||~ description||
||||||~ [[# sets]][#sets-note sets]||
||~ title ||~ anchor||~ description||
||||||~ [[# dict]][#dict-note dictionaries]||
||~ title ||~ anchor||~ description||
||[[# declare-dict]][#declare-dict-note declare] _
@< >@||#declare-dict|| ||
||[[# dict-literal]][#dict-literal-note literal] _
@< >@||#dict-literal|| ||
||[[# dict-ctor]][#dict-ctor-note constructor] _
@< >@||#dict-ctor|| ||
||[[# dict-size]][#dict-size-note size] _
@< >@||#dict-size|| ||
||[[# dict-lookup]][#dict-lookup-note lookup] _
@< >@||#dict-lookup|| ||
||[[# dict-update]][#dict-update-note update] _
@< >@||#dict-update||distinguish between insert and update?||
||[[# dict-missing-key]][#dict-missing-key-note missing key behavior] _
@< >@||#dict-missing-key||on lookup||
||[[# dict-is-key-present]][#dict-is-key-present-note is key present] _
@< >@||#dict-is-key-present|| ||
||[[# dict-delete]][#dict-delete-note delete]||#dict-delete|| ||
||[[# dict-associative-array]][#dict-associative-array-note from array of pairs, from even length array]||#dict-associative-array|| ||
||[[# dict-merge]][#dict-merge-note merge]||#dict-merge||##gray|//How are duplicate keys handled?//##||
||[[# dict-invert]][#dict-invert-note invert]||#dict-invert||##gray|//How are duplicate values handled?//##||
||[[# dict-intersection]][#dict-intersection-note intersection]||#dict-intersection||a dictionary of key-value pairs in both dictionaries||
||[[# dict-diff]][#dict-diff-note relative complement]||#dict-diff||a dictionary of key-value pairs in the 2nd dictionary and not the 1st||
||[[# dict-iter]][#dict-iter-note iterate] _
@< >@||#dict-iter|| ||
||[[# dict-key-val-arrays]][#dict-key-val-arrays-note keys and values as arrays]||#dict-key-val-arrays|| ||
||[[# dict-sort-values]][#dict-sort-values-note sort by values]||#dict-sort-values|| ||
||[[# dict-default-val]][#dict-default-val-note default value, computed value]||#dict-default-val|| ||
||||||~ [[# two-d-arrays]][#two-d-arrays-note 2d arrays]||
||~ title ||~ anchor||~ description||
||[[# elem-type]][#elem-type-note element type]||#elem-type|| ||
||[[# permitted-elem-types]][#permitted-elem-types-note permitted element types]||#permitted-elem-types|| ||
||[[# literal-2d-array]][#literal-2d-array-note 2d literal]||#literal-2d-array|| ||
||[[# array-2d-from-seq]][#array-2d-from-seq-note construct 2d array from sequence of elements] _
##gray|//fill by row, by column//##||#array-2d-from-seq|| ||
||[[# array-2d-from-rows]][#array-2d-from-rows-note construct 2d array from rows]||#array-2d-from-rows|| ||
||[[# array-2d-from-cols]][#array-2d-from-cols-note construct 2d array from columns]||#array-2d-from-cols|| ||
||[[# array-2d-from-2d-arrays]][#array-2d-from-2d-arrays-note construct 2d array from 2d arrays] _
##gray|//stacked, side-by-side//##||#array-2d-from-2d-arrays|| ||
||[[# multidim-array-size]][#multidim-array-size-note size] _
##gray|//number of elements, _
number of dimensions, _
dimension lengths//##||#multidim-array-size|| ||
||[[# array-2d-lookup]][#array-2d-lookup-note 2d array lookup]||#array-2d-lookup|| ||
||[[# multidim-out-of-bounds-behavior]][#multidim-out-of-bounds-behavior-note out-of-bounds behavior]||#multidim-out-of-bounds-behavior|| ||
||[[# index-1d-lookup-2d-array]][#index-1d-lookup-2d-array-note 1d index lookup of 2d array]||#index-1d-lookup-2d-array|| ||
||[[# multidim-slice]][#multidim-slice-note slice]||#multidim-slice|| ||
||[[# multidim-update]][#multidim-update-note update]||#multidim-update|| ||
||[[# higher-order-update]][#higher-order-update-note higher order update]||#higher-order-update|| ||
||[[# multidim-transpose]][#multidim-transpose-note transpose]||#multidim-transpose|| ||
||[[# multidim-map]][#multidim-map-note map elements]||#multidim-map|| ||
||[[# higher-order-map]][#higher-order-map-note higher order map]||#higher-order-map|| ||
||||||~ [[# three-d-arrays]][#three-d-arrays-note 3d arrays]||
||~ title ||~ anchor||~ description||
||[[# array-3d-from-seq]][#array-3d-from-seq-note construct 3d array from sequence of elements]||#array-3d-from-seq|| ||
||[[# array-3d-from-2d-arrays]][#array-3d-from-2d-arrays-note construct 3d array from 2d arrays]||#array-3d-from-2d-arrays|| ||
||[[# array-3d-from-seq-of-seq-of-rows]][#array-3d-from-seq-of-seq-of-rows-note construct 3d array from sequence of sequences of rows]||#array-3d-from-seq-of-seq-of-rows|| ||
||[[# multidim-swap-axes]][#multidim-swap-axes-note swap axes]||#multidim-swap-axes|| ||
||||||~ [[# user-defined-types]][#user-defined-types-note user-defined types]||
||~ title ||~ anchor||~ description||
||[[# type-alias]][#type-alias-note type alias]||#type-alias||new type and old are interchangeable||
||[[# new-type]][#new-type-note new type]||#new-type||not interchangeable||
||[[# algebraic-sum-type]][#algebraic-sum-type-note algebraic sum type]||#algebraic-sum-type|| ||
||[[# enumerated-type]][#enumerated-type-note enumerated type]||#enumerated-type||a sum type||
||[[# union-type]][#union-type-note union type]||#union-type|| ||
||[[# algebraic-prod-type]][#algebraic-prod-type-note algebraic product type]||#algebraic-prod-type|| ||
||[[# algebraic-prod-literal]][#algebraic-prod-literal-note algebraic product type literal]||#algebraic-prod-literal|| ||
||[[# type-ctor-with-arg]][#type-ctor-with-arg-note type constructor with argument]||#type-ctor-with-arg|| ||
||[[# type-ctor-with-tuple-arg]][#type-ctor-with-tuple-arg-note type constructor with tuple argument]||#type-ctor-with-tuple-arg|| ||
||[[# generic-type]][#generic-type-note generic type]||#generic-type|| ||
||[[# recursive-type]][#recursive-type-note recursive type]||#recursive-type|| ||
||[[# match]][#match-note match/with case/of]||#match|| ||
||[[# match-guard]][#match-guard-note match guard]||#match-guard|| ||
||[[# match-catchall]][#match-catchall-note match catchall]||#match-catchall|| ||
||[[# option-type]][#option-type-note option type]||#option-type|| ||
||[[# member-offset]][#member-offset-note member offset]||#member-offset||i.e. offsetof()||
||||||~ [[# generic-types]][#generic-types-note generic types]||
||~ title ||~ anchor||~ description||
||[[# define-generic-type]][#define-generic-type-note define generic type]||#define-generic-type|| ||
||[[# instantiate-generic-type]][#instantiate-generic-type-note instantiate generic type]||#instantiate-generic-type|| ||
||[[# generic-array]][#generic-array-note generic array]||#generic-array|| ||
||[[# val-param]][#val-param-note value parameter]||#val-param|| ||
||[[# template-param]][#template-param-note template parameter]||#template-param|| ||
||[[# template-specialization]][#template-specialization-note template specialization]||#template-specialization|| ||
||[[# multiple-type-params]][#multiple-type-params-note multiple type parameters]||#multiple-type-params|| ||
||[[# generic-type-params]][#generic-type-params-note generic type parameters]||#generic-type-params|| ||
||[[# variadic-template]][#variadic-template-note variadic template]||#variadic-template|| ||
||||||~ [[# dependent-types]][#dependent-types-note dependent types]||
||~ title ||~ anchor||~ description||
||||||~ AUXILIARY||
||||||~ [[# cpp-macros]][#cpp-macros-note c preprocessor macros]||
||~ title ||~ anchor||~ description||
||[[# include-file]][#include-file-note include file]||#include-file|| ||
||[[# add-system-dir]][#add-system-dir-note add system directory]||#add-system-dir|| ||
||[[# def-macro]][#def-macro-note define macro]||#def-macro|| ||
||[[# cmd-line-macro]][#cmd-line-macro-note command line macro]||#cmd-line-macro|| ||
||[[# undef-macro]][#undef-macro-note undefine macro]||#undef-macro|| ||
||[[# macro-op]][#macro-op-note macro operators]||#macro-op|| ||
||||||~ [[# lisp-macros]][#lisp-macros-note lisp macros]||
||~ title ||~ anchor||~ description||
||[[# backquote-comma]][#backquote-comma-note backquote and comma]||#backquote-comma|| ||
||[[# defmacro]][#defmacro-note defmacro]||#defmacro|| ||
||[[# defmacro-backquote]][#defmacro-backquote-note defmacro w/ backquote]||#defmacro-backquote|| ||
||[[# macro-predicate]][#macro-predicate-note macro predicate]||#macro-predicate|| ||
||[[# macroexpand]][#macroexpand-note macroexpand]||#macroexpand|| ||
||[[# splice-quote]][#splice-quote-note splice quote]||#splice-quote|| ||
||[[# recursive-macro]][#recursive-macro-note recursive macro]||#recursive-macro|| ||
||[[# hygienic]][#hygienic-note hygienic]||#hygienic|| ||
||[[# local-values]][#local-values-note local values]||#local-values|| ||
||||||~ [[# java-interop]][#java-interop-note java interop]||
||~ title ||~ anchor||~ description||
||[[# java-version]][#java-version-note version]||#java-version|| ||
||[[# java-repl]][#java-repl-note repl]||#java-repl|| ||
||[[# java-interpreter]][#java-interpreter-note interpreter]||#java-interpreter|| ||
||[[# java-compiler]][#java-compiler-note compiler]||#java-compiler|| ||
||[[# java-new]][#java-new-note new]||#java-new|| ||
||[[# java-import]][#java-import-note import]||#java-import|| ||
||[[# java-non-bundled]][#java-non-bundled-note non-bundled java libraries]||#java-non-bundled|| ||
||[[# java-shadow]][#java-shadow-note shadowing avoidance]||#java-shadow|| ||
||[[# java-to-array]][#java-to-array-note convert native array to java array]||#java-to-array|| ||
||[[# java-subclassable]][#java-subclassable-note are java classes subclassable?]||#java-subclassable|| ||
||[[# java-open]][#java-open-note are java class open?]||#java-open|| ||
||||||~ TABLES||
||||||~ [[# tables]][#tables-note tables]||
||~ title ||~ anchor||~ description||
||[[# table-from-col-arrays]][#table-from-col-arrays-note construct from column arrays]||#table-from-col-arrays|| ||
||[[# table-from-row-tuples]][#table-from-row-tuples-note construct from row tuples]||#table-from-row-tuples|| ||
||[[# categorical-var-col]][#categorical-var-col-note categorical variable column]||#categorical-var-col|| ||
||[[# col-names-as-array]][#col-names-as-array-note column names as array]||#col-names-as-array|| ||
||[[# extract-col-as-array]][#extract-col-as-array-note extract column as array]||#extract-col-as-array|| ||
||[[# extract-row-as-tuple]][#extract-row-as-tuple-note extract row as tuple]||#extract-row-as-tuple|| ||
||[[# lookup-datum]][#lookup-datum-note lookup datum]||#lookup-datum|| ||
||[[# order-rows]][#order-rows-note order rows by column]||#order-rows|| ||
||[[# order-rows-multiple-col]][#order-rows-multiple-col-note order rows by multiple columns]||#order-rows-multiple-col|| ||
||[[# order-rows-desc]][#order-rows-desc-note order rows in descending order]||#order-rows-desc|| ||
||[[# limit-rows]][#limit-rows-note limit rows]||#limit-rows||i.e slice first n rows||
||[[# offset-rows]][#offset-rows-note offset rows]||#offset-rows||i.e. slice rows starting from n||
||[[# attach-col]][#attach-col-note attach columns]||#attach-col|| ||
||[[# detach-col]][#detach-col-note detach columns]||#detach-col|| ||
||[[# spreadsheet-editor]][#spreadsheet-editor-note spreadsheet editor]||#spreadsheet-editor|| ||
||||||~ [[# import-export]][#import-export-note import and export]||
||~ title ||~ anchor||~ description||
||[[# import-tab-delimited]][#import-tab-delimited-note import tab delimited]||#import-tab-delimited|| ||
||[[# import-csv]][#import-csv-note import csv]||#import-csv|| ||
||[[# set-col-separator]][#set-col-separator-note set column separator]||#set-col-separator||can it be multiple characters or a regex?||
||[[# set-col-separator-whitesp]][#set-col-separator-whitesp-note set column separator to whitespace]||#set-col-separator-whitesp|| ||
||[[# set-quote-char]][#set-quote-char-note set quote character]||#set-quote-char|| ||
||[[# import-file-no-header]][#import-file-no-header-note import file without header]||#import-file-no-header|| ||
||[[# set-col-names]][#set-col-names-note set column names]||#set-col-names|| ||
||[[# set-col-types]][#set-col-types-note set column types]||#set-col-types|| ||
||[[# recognize-null-val]][#recognize-null-val-note recognize null values]||#recognize-null-val||what values are recognized by default||
||[[# change-decimal-mark]][#change-decimal-mark-note change decimal mark]||#change-decimal-mark|| ||
||[[# recognize-thousands-separator]][#recognize-thousands-separator-note recognize thousands separator]||#recognize-thousands-separator|| ||
||[[# unequal-row-len-behavior]][#unequal-row-len-behavior-note unequal row length behavior]||#unequal-row-len-behavior|| ||
||[[# skip-comment-lines]][#skip-comment-lines-note skip comment lines]||#skip-comment-lines|| ||
||[[# skip-rows]][#skip-rows-note skip rows]||#skip-rows|| ||
||[[# max-rows-to-read]][#max-rows-to-read-note max rows to read]||#max-rows-to-read|| ||
||[[# index-col]][#index-col-note index column]||#index-col||multiple columns for hierarchical index?||
||[[# export-tab-delimited]][#export-tab-delimited-note export tab delimited]||#export-tab-delimited|| ||
||[[# export-csv]][#export-csv-note export csv]||#export-csv|| ||
||||||~ [[# relational-algebra]][#relational-algebra-note relational algebra]||
||~ title ||~ anchor||~ description||
||[[# project-col-by-name]][#project-col-by-name-note project columns by name]||#project-col-by-name|| ||
||[[# project-col-by-position]][#project-col-by-position-note project columns by position]||#project-col-by-position|| ||
||[[# project-expr]][#project-expr-note project expression]||#project-expr|| ||
||[[# project-all-col]][#project-all-col-note project all columns]||#project-all-col|| ||
||[[# rename-col]][#rename-col-note rename columns]||#rename-col|| ||
||[[# select-rows]][#select-rows-note select rows]||#select-rows|| ||
||[[# select-distinct-rows]][#select-distinct-rows-note select distinct rows]||#select-distinct-rows|| ||
||[[# split-rows]][#split-rows-note split rows]||#split-rows|| ||
||[[# inner-join]][#inner-join-note inner join]||#inner-join|| ||
||[[# null-join-val]][#null-join-val-note nulls as join values]||#null-join-val|| ||
||[[# left-join]][#left-join-note left join]||#left-join|| ||
||[[# full-join]][#full-join-note full join]||#full-join|| ||
||[[# antijoin]][#antijoin-note antijoin]||#antijoin|| ||
||[[# cross-join]][#cross-join-note cross join]||#cross-join|| ||
||||||~ [[# aggregation]][#aggregation-note aggregation]||
||~ title ||~ anchor||~ description||
||[[# row-count]][#row-count-note row count]||#row-count|| ||
||[[# group-by-col]][#group-by-col-note group by column]||#group-by-col|| ||
||[[# group-by-multiple-col]][#group-by-multiple-col-note group by multiple columns]||#group-by-multiple-col|| ||
||[[# aggregation-func]][#aggregation-func-note aggregation functions]||#aggregation-func|| ||
||[[# null-aggregation-func]][#null-aggregation-func-note nulls and aggregation functions]||#null-aggregation-func|| ||
||[[# rank]][#rank-note rank]||#rank|| ||
||[[# quantile]][#quantile-note quantile]||#quantile|| ||
||[[# having]][#having-note having]||#having|| ||
||||||~ MATHEMATICS||
||||||~ [[# vectors]][#vectors-note vectors]||
||~ title ||~ anchor||~ description||
||[[# vec-literal]][#vec-literal-note vector literal]||#vec-literal|| ||
||[[# vec-elem-wise-op]][#vec-elem-wise-op-note element-wise arithmetic operators]||#vec-elem-wise-op|| ||
||[[# vec-len-mismatch]][#vec-len-mismatch-note result of vector length mismatch]||#vec-len-mismatch|| ||
||[[# vec-scalar-mult]][#vec-scalar-mult-note scalar multiplication]||#vec-scalar-mult|| ||
||[[# vec-dot]][#vec-dot-note dot product]||#vec-dot|| ||
||[[# vec-cross]][#vec-cross-note cross product]||#vec-cross|| ||
||[[# vec-norm]][#vec-norm-note norms]||#vec-norm|| ||
||||||~ [[# matrices]][#matrices-note matrices]||