forked from scheme-requests-for-implementation/srfi-common
-
Notifications
You must be signed in to change notification settings - Fork 0
/
srfi.rss
2346 lines (2320 loc) · 232 KB
/
srfi.rss
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
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Scheme Requests for Implementation</title><link>https://srfi.schemers.org/</link><description>Updates to SRFI documents</description><language>en-US</language><webMaster>[email protected] (Arthur A. Gleckler)</webMaster><atom:link href="https://srfi.schemers.org/rss" rel="self" type="application/rss+xml"></atom:link><item><title>SRFI 232: Flexible curried procedures</title><link>https://srfi.schemers.org/srfi-232/srfi-232.html</link><guid>https://srfi.schemers.org/srfi-232</guid><description>SRFI 232 is now in <em>final</em> status.<blockquote><p>Scheme lacks a flexible way to create and apply curried procedures.
This SRFI describes <code>curried</code>, a variant of
<code>lambda</code> that creates true curried procedures which also
behave just like ordinary Scheme procedures. They can be applied to
their arguments one by one, all at once, or anywhere in between,
without any novel syntax. <code>curried</code> also supports
nullary and variadic procedures, and procedures created with it have
predictable behavior when applied to surplus arguments.</p></blockquote></description><dc:creator>Wolfgang Corcoran-Mathe</dc:creator><pubDate>Wed, 06 Apr 2022 12:00:00 -0800</pubDate></item><item><title>SRFI 205: POSIX Terminal Fundamentals</title><link>https://srfi.schemers.org/srfi-205/srfi-205.html</link><guid>https://srfi.schemers.org/srfi-205</guid><description>SRFI 205 is now in <em>withdrawn</em> status.<blockquote><p>
This SRFI describes procedures for command-line and terminal interface
programs to safely change and reset terminal modes, for example from
cooked to raw and back, and for serial-line device manipulation for
interfacing with embedded hardware and the like.
</p>
<p>
It is intended to provide all the
<a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/termios.h.html">termios structure</a>
functionality a modern Scheme programmer might desire by supplying a
<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/stty.html">stty</a>
procedure, and simple abstractions on top of it.
</p>
</blockquote></description><dc:creator>John Cowan and Harold Ancell</dc:creator><pubDate>Mon, 21 Mar 2022 12:00:00 -0800</pubDate></item><item><title>SRFI 204: Wright-Cartwright-Shinn Pattern Matcher</title><link>https://srfi.schemers.org/srfi-204/srfi-204.html</link><guid>https://srfi.schemers.org/srfi-204</guid><description>SRFI 204 is now in <em>withdrawn</em> status.<blockquote><p>Pattern matching decomposes a compound data structure
into parts and assigns those parts to variables. This
SRFI describes a pattern-matching library already in use by
several scheme implementations which can match many common
compound data structures.</p></blockquote></description><dc:creator>Felix Thibault</dc:creator><pubDate>Wed, 02 Feb 2022 12:00:00 -0800</pubDate></item><item><title>SRFI 231: Nonempty Intervals and Generalized Arrays (Updated^2)</title><link>https://srfi.schemers.org/srfi-231/srfi-231.html</link><guid>https://srfi.schemers.org/srfi-231</guid><description>SRFI 231 is now in <em>draft</em> status.<blockquote> <p>This SRFI specifies an array mechanism for Scheme. Arrays as defined here are quite general; at their most basic, an array is simply a mapping, or function, from multi-indices of exact integers $i_0,\ldots,i_{d-1}$ to Scheme values. The set of multi-indices $i_0,\ldots,i_{d-1}$ that are valid for a given array form the <i>domain</i> of the array. In this SRFI, each array's domain consists of the cross product of nonempty intervals of exact integers $[l_0,u_0)\times[l_1,u_1)\times\cdots\times[l_{d-1},u_{d-1})$ of $\mathbb Z^d$, $d$-tuples of integers. Thus, we introduce a data type called $d$-<i>intervals</i>, or more briefly <i>intervals</i>, that encapsulates this notion. (We borrow this terminology from, e.g., Elias Zakon's <a href="http://www.trillia.com/zakon1.html">Basic Concepts of Mathematics</a>.) Specialized variants of arrays provide portable programs with efficient representations for common use cases.</p>
<p>This is a revised version of <a href="https://srfi.schemers.org/srfi-179/">SRFI 179</a>.</p></blockquote></description><dc:creator>Bradley J. Lucier</dc:creator><pubDate>Fri, 07 Jan 2022 12:00:00 -0800</pubDate></item><item><title>SRFI 227: Optional Arguments</title><link>https://srfi.schemers.org/srfi-227/srfi-227.html</link><guid>https://srfi.schemers.org/srfi-227</guid><description>SRFI 227 is now in <em>final</em> status.<blockquote> <p>This SRFI specifies the <code>opt-lambda</code> syntax, which
generalizes <code>lambda</code>. An <code>opt-lambda</code> expression
evaluates to a procedure that takes a number of required and a number of
optional (positional) arguments whose default values are determined by
evaluating corresponding expressions when the procedure is called.</p>
<p>This SRFI also specifies a variation <code>opt*-lambda</code>, which is
to <code>opt-lambda</code> as <code>let*</code> is to <code>let</code>
and the related binding constructs <code>let-optionals</code>
and <code>let-optionals*</code>.</p>
<p>Finally, for those who prefer less explicit procedure
definitions, a sublibrary provides <code>define-optionals</code>
and <code>define-optionals*</code>.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen (spec and R6RS implementation) and Daphne Preston-Kendal (R7RS implementation)</dc:creator><pubDate>Tue, 16 Nov 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 229: Tagged Procedures</title><link>https://srfi.schemers.org/srfi-229/srfi-229.html</link><guid>https://srfi.schemers.org/srfi-229</guid><description>SRFI 229 is now in <em>final</em> status.<blockquote> <p>This SRFI defines <dfn>tagged procedures</dfn>, which are procedures
that are tagged with a Scheme value when created through the
syntax <code>lambda/tag</code> and <code>case-lambda/tag</code>. The
value of the tag of a procedure can be retrieved
with <code>procedure-tag</code>, and the
predicate <code>procedure/tag?</code> discerns whether a procedure is
tagged.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Mon, 15 Nov 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 230: Atomic Operations</title><link>https://srfi.schemers.org/srfi-230/srfi-230.html</link><guid>https://srfi.schemers.org/srfi-230</guid><description>SRFI 230 is now in <em>final</em> status.<blockquote> <p>This SRFI defines atomic operations for the Scheme programming language.
An <dfn>atomic operation</dfn> is an operation that, even in the presence
of multiple threads, is either executed completely or not at all. Atomic
operations can be used to implement mutexes and other synchronization
primitives, and they can be used to make concurrent algorithms lock-free.
For this, this SRFI defines two data types, <dfn>atomic flags</dfn>
and <dfn>atomic (fixnum) boxes</dfn>, whose contents can be queried and
mutated atomically. Moreover, each atomic operation comes with
a <dfn>memory order</dfn> that defines the level of synchronization with
other threads.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Mon, 15 Nov 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 228: A further comparator library</title><link>https://srfi.schemers.org/srfi-228/srfi-228.html</link><guid>https://srfi.schemers.org/srfi-228</guid><description>SRFI 228 is now in <em>draft</em> status.<blockquote><p>Further procedures and syntax forms for defining <a href="https://srfi.schemers.org/srfi-128/srfi-128.html">SRFI 128</a> comparators, and for extracting comparison procedures similar to those defined for Scheme’s built-in types using them.
</p><p>Best enjoyed in combination with <a href="https://srfi.schemers.org/srfi-162/srfi-162.html">SRFI 162</a>.</p></blockquote></description><dc:creator>Daphne Preston-Kendal</dc:creator><pubDate>Sat, 28 Aug 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 226: Control Features</title><link>https://srfi.schemers.org/srfi-226/srfi-226.html</link><guid>https://srfi.schemers.org/srfi-226</guid><description>SRFI 226 is now in <em>draft</em> status.<blockquote> <p>This SRFI defines a rich set of control operators for the
Scheme programming language, including the
venerable <code>call/cc</code>
(<code>call-with-current-continuation</code>). The set of
operators was highly influenced by the control operators provided
by <a href="https://racket-lang.org/"><cite>Racket</cite></a>.
</p><p>Continuations can be delimited by continuation prompts, and all
continuations become delimited continuations, at the latest by
the default prompt at the start of each thread. Moreover,
continuations are divided into composable and non-composable
continuations, which can be captured and reinstated.</p>
<p>To investigate continuations, this SRFI supports continuation
marks and offers operators to set and retrieve them.</p>
<p>Moreover, this SRFI defines clear semantics of
exceptions, parameter objects, promises, and threads consistent
with the other concepts defined here.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Fri, 06 Aug 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 223: Generalized binary search procedures</title><link>https://srfi.schemers.org/srfi-223/srfi-223.html</link><guid>https://srfi.schemers.org/srfi-223</guid><description>SRFI 223 is now in <em>final</em> status.<blockquote><p>Generalized procedures for binary search of vector-like data structures are provided which can be applied to any sequence type, including ones defined by the user, together with applications of these procedures for Scheme’s built-in vectors.</p></blockquote></description><dc:creator>Daphne Preston-Kendal</dc:creator><pubDate>Tue, 27 Jul 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 222: Compound Objects</title><link>https://srfi.schemers.org/srfi-222/srfi-222.html</link><guid>https://srfi.schemers.org/srfi-222</guid><description>SRFI 222 is now in <em>final</em> status.<blockquote><p>Compound objects are analogous to R6RS compound conditions,
and are suitable for use in creating and handling conditions
on non-R6RS systems, among other purposes.
They encapsulate an immutable sequence of subobjects, which can be
any object except another compound object.
It is possible to implement R6RS compound conditions on top of
compound objects, but not vice versa.
Note that this SRFI does not provide any analogue to R6RS
<i>simple</i> conditions, which are just records.</p></blockquote></description><dc:creator>John Cowan (text) and Arvydas Silanskas (implementation)</dc:creator><pubDate>Tue, 20 Jul 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 224: Integer Mappings</title><link>https://srfi.schemers.org/srfi-224/srfi-224.html</link><guid>https://srfi.schemers.org/srfi-224</guid><description>SRFI 224 is now in <em>final</em> status.<blockquote><p>Integer maps, or <em>fxmappings</em>, are finite sets, where each element is
an association between a fixnum (exact integer) key and an arbitrary Scheme
object. They are similar to the general mappings of
<a href="https://srfi.schemers.org/srfi-146/">SRFI
146</a>, but the restricted key-type allows implementations of
fxmappings to benefit from optimized structures and algorithms. This
library provides a rich set of operations on fxmappings, including
analogues of most of the forms provided by SRFI 146. Fxmappings have
no intrinsic order, but may be treated as ordered sets, using the
natural ordering on keys; a substantial sublibrary for working with
fxmappings in this fashion is included.</p></blockquote></description><dc:creator>Wolfgang Corcoran-Mathe</dc:creator><pubDate>Wed, 30 Jun 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 225: Dictionaries</title><link>https://srfi.schemers.org/srfi-225/srfi-225.html</link><guid>https://srfi.schemers.org/srfi-225</guid><description>SRFI 225 is now in <em>draft</em> status.<blockquote><p>The procedures of this SRFI allow callers to manipulate an object that maps keys to values
without the caller needing to know exactly what the type of the object is.
However, what procedures can be called on the object is partly determined by whether it is pure.
Such an object is called a <em>dict(ionary)</em> in this SRFI.</p></blockquote></description><dc:creator>John Cowan (spec) and Arvydas Silanskas (implementation)</dc:creator><pubDate>Sat, 26 Jun 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 221: Generator/accumulator sub-library</title><link>https://srfi.schemers.org/srfi-221/srfi-221.html</link><guid>https://srfi.schemers.org/srfi-221</guid><description>SRFI 221 is now in <em>final</em> status.<blockquote><p>This is a set of convenience routines for generators and accumulators
intended to blend in with
<a href="https://srfi.schemers.org/srfi-158/srfi-158.html">SRFI 158</a>.
The authors recommend that they be added to the
<code>(srfi 158)</code> library provided by
users or implementations.
If they are approved by the R7RS-large process,
they can also be added to <code>(r7rs generator)</code>.</p></blockquote></description><dc:creator>John Cowan (text) and Arvydas Silanskas (implementation)</dc:creator><pubDate>Fri, 28 May 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 220: Line directives</title><link>https://srfi.schemers.org/srfi-220/srfi-220.html</link><guid>https://srfi.schemers.org/srfi-220</guid><description>SRFI 220 is now in <em>withdrawn</em> status.<blockquote> <p>Many language-agnostic programming tools rely on specially
formatted source code comments to annotate the code with
metadata. Such "magic comments" are hard for both humans and
computers to parse reliably, as the purpose of a comment is to be
free-form text that is not interpreted by machine.</p>
<p>This SRFI extends the standard Scheme directive syntax
(<code>#!</code>) to support <em>line directives</em>. They look
like magic comments to language-agnostic tools but read as
S-expressions in Scheme, combining the portability of magic
comments with the well-defined syntax and easy parsing of
ordinary Scheme code.</p></blockquote></description><dc:creator>Lassi Kortela</dc:creator><pubDate>Tue, 20 Apr 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 219: Define higher-order lambda</title><link>https://srfi.schemers.org/srfi-219/srfi-219.html</link><guid>https://srfi.schemers.org/srfi-219</guid><description>SRFI 219 is now in <em>final</em> status.<blockquote><p>This SRFI codifies the following shorthand syntax, which some
Scheme implementations have had for a long time.</p>
<pre>(define ((outer-name outer-args ...) inner-args ...)
inner-body ...)</pre></blockquote></description><dc:creator>Lassi Kortela</dc:creator><pubDate>Sun, 04 Apr 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 213: Identifier Properties</title><link>https://srfi.schemers.org/srfi-213/srfi-213.html</link><guid>https://srfi.schemers.org/srfi-213</guid><description>SRFI 213 is now in <em>final</em> status.<blockquote><p>Using the <code>define-property</code> definition described in
this SRFI, expand-time properties can be associated with
identifiers in a referentially transparent and lexically scoped way.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Sun, 21 Mar 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 214: Flexvectors</title><link>https://srfi.schemers.org/srfi-214/srfi-214.html</link><guid>https://srfi.schemers.org/srfi-214</guid><description>SRFI 214 is now in <em>final</em> status.<blockquote><p>A <em>flexvector</em>, also known as a dynamic array or an arraylist, is a mutable vector-like data structure with an adjustable size. Flexvectors allow fast random access and fast insertion/removal at the end. This SRFI defines a suite of operations on flexvectors, modeled after <a href="https://srfi.schemers.org/srfi-133/srfi-133.html">SRFI 133</a>'s vector operations.</p></blockquote></description><dc:creator>Adam Nelson</dc:creator><pubDate>Thu, 18 Mar 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 208: NaN procedures</title><link>https://srfi.schemers.org/srfi-208/srfi-208.html</link><guid>https://srfi.schemers.org/srfi-208</guid><description>SRFI 208 is now in <em>final</em> status.<blockquote><p>This SRFI provides procedures that dissect NaN (Not a Number) inexact values.</p></blockquote></description><dc:creator>Emmanuel Medernach (design), John Cowan (editor), and Wolfgang Corcoran-Mathe (implementation)</dc:creator><pubDate>Tue, 23 Feb 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 217: Integer Sets</title><link>https://srfi.schemers.org/srfi-217/srfi-217.html</link><guid>https://srfi.schemers.org/srfi-217</guid><description>SRFI 217 is now in <em>final</em> status.<blockquote><p>Integer sets, or <em>iset</em>s, are unordered collections of
fixnums. (Fixnums are exact integers within certain
implementation-specified bounds.)</p></blockquote></description><dc:creator>John Cowan (text) and Wolfgang Corcoran-Mathe (implementation)</dc:creator><pubDate>Mon, 15 Feb 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 210: Procedures and Syntax for Multiple Values</title><link>https://srfi.schemers.org/srfi-210/srfi-210.html</link><guid>https://srfi.schemers.org/srfi-210</guid><description>SRFI 210 is now in <em>final</em> status.<blockquote><p>
This SRFI extends the Scheme standard with procedures and syntax
dealing with multiple values, including syntax to create lists and
vectors from expressions returning multiple values and procedures
returning the elements of a list or vector as multiple values.
</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Fri, 12 Feb 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 212: Aliases</title><link>https://srfi.schemers.org/srfi-212/srfi-212.html</link><guid>https://srfi.schemers.org/srfi-212</guid><description>SRFI 212 is now in <em>final</em> status.<blockquote><p>This SRFI introduces <em>alias definitions</em>, a syntactic
extension. An alias definition transfers the binding of one
identifier to another, effectively aliasing the identifier.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Fri, 12 Feb 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 218: Unicode Numerals</title><link>https://srfi.schemers.org/srfi-218/srfi-218.html</link><guid>https://srfi.schemers.org/srfi-218</guid><description>SRFI 218 is now in <em>withdrawn</em> status.<blockquote><p>These procedures allow the creation and interpretation of numerals
using any set of Unicode digits that support positional notation.</p></blockquote></description><dc:creator>John Cowan (text) and Arvydas Silanskas (implementation)</dc:creator><pubDate>Sat, 30 Jan 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 201: Syntactic Extensions to the Core Scheme Bindings</title><link>https://srfi.schemers.org/srfi-201/srfi-201.html</link><guid>https://srfi.schemers.org/srfi-201</guid><description>SRFI 201 is now in <em>final</em> status.<blockquote><p>This document describes a handful of syntactic extensions
to the core bindings of the Scheme programming language.
In particular, it proposes to extend the binding forms
<code>lambda</code>, <code>let</code>,
<code>let*</code> with pattern matching capabilities, to extend the forms <code>let</code>
and <code>or</code> with the ability
to handle multiple values, and to extend the form <code>define</code> with
the ability of defining "curried" functions.</p></blockquote></description><dc:creator>Panicz Maciej Godek</dc:creator><pubDate>Wed, 13 Jan 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 215: Central Log Exchange</title><link>https://srfi.schemers.org/srfi-215/srfi-215.html</link><guid>https://srfi.schemers.org/srfi-215</guid><description>SRFI 215 is now in <em>final</em> status.<blockquote> <p>
This SRFI specifies a central log exchange for Scheme that
connects log producers with log consumers. It allows multiple
logging systems to interoperate and co-exist in the same
program. Library code can produce log messages without knowledge
of which log system is actually used. Simple applications can
easily get logs on standard output, while more advanced
applications can send them to a full logging system.
</p></blockquote></description><dc:creator>Göran Weinholt</dc:creator><pubDate>Mon, 11 Jan 2021 12:00:00 -0800</pubDate></item><item><title>SRFI 206: Auxiliary Syntax Keywords</title><link>https://srfi.schemers.org/srfi-206/srfi-206.html</link><guid>https://srfi.schemers.org/srfi-206</guid><description>SRFI 206 is now in <em>final</em> status.<blockquote>This SRFI defines a mechanism for defining auxiliary syntax
keywords independently in different modules in such a way that
they still have the same binding so that they can be used
interchangeably as literal identifiers in
<code>syntax-rules</code> and <code>syntax-case</code> expressions
and can be both imported under the same name without conflicts.</blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Mon, 21 Dec 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 209: Enums and Enum Sets</title><link>https://srfi.schemers.org/srfi-209/srfi-209.html</link><guid>https://srfi.schemers.org/srfi-209</guid><description>SRFI 209 is now in <em>final</em> status.<blockquote><p>Enums are objects that serve to form sets of distinct classes
that specify different modes of operation for a procedure.
Their use fosters portable and readable code.</p></blockquote></description><dc:creator>John Cowan (text) and Wolfgang Corcoran-Mathe (implementation)</dc:creator><pubDate>Thu, 17 Dec 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 202: Pattern-matching Variant of the and-let* Form that Supports Multiple Values</title><link>https://srfi.schemers.org/srfi-202/srfi-202.html</link><guid>https://srfi.schemers.org/srfi-202</guid><description>SRFI 202 is now in <em>final</em> status.<blockquote><p>The SRFI-2 library introduced the <code>and-let*</code> form
for short-circuited evaluation in the style of the <code>and</code>
form, with the ability to capture the (non-<code>#f</code>) results
in the style of the <code>let*</code> form. This document extends
the <code>and-let*</code> form with the ability to pattern-match (or
"destructurally bind") the values of evaluated expressions (where
the match failure causes short-circuiting rather than raising an
error) and the ability to handle multiple values (where only the
falsehood of the first value causes short-circuiting).
</p></blockquote></description><dc:creator>Panicz Maciej Godek</dc:creator><pubDate>Sat, 28 Nov 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 207: String-notated bytevectors</title><link>https://srfi.schemers.org/srfi-207/srfi-207.html</link><guid>https://srfi.schemers.org/srfi-207</guid><description>SRFI 207 is now in <em>final</em> status.<blockquote><p>To ease the human reading and writing of Scheme code involving
binary data that for mnemonic reasons corresponds
as a whole or in part to ASCII-coded text, a notation
for bytevectors is defined which allows printable ASCII characters
to be used literally without being converted to their corresponding
integer forms. In addition, this SRFI provides a set of procedures
known as the bytestring library
for constructing a bytevector from a sequence of integers,
characters, strings, and/or bytevectors, and for manipulating
bytevectors as if they were strings as far as possible.</p></blockquote></description><dc:creator>Daphne Preston-Kendal (external notation), John Cowan (procedure design), and Wolfgang Corcoran-Mathe (implementation)</dc:creator><pubDate>Thu, 29 Oct 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 170: POSIX API</title><link>https://srfi.schemers.org/srfi-170/srfi-170.html</link><guid>https://srfi.schemers.org/srfi-170</guid><description>SRFI 170 is now in <em>final</em> status.<blockquote><p>
The host environment is the set of resources, such as the filesystem,
network and processes, that are managed by the operating system on top of
which a Scheme program is executing. This SRFI specifies some of the ways the host
environment can be accessed from within a Scheme program. It does so by
leveraging widespread support for P<small>OSIX</small>, the Portable
Operating System Interface standardized by the IEEE. Not all of the
functions of this SRFI are available on all operating systems.
</p></blockquote></description><dc:creator>Olin Shivers (original author), John Cowan (editor and shepherd), and Harold Ancell (implementer and editor)</dc:creator><pubDate>Wed, 28 Oct 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 196: Range Objects</title><link>https://srfi.schemers.org/srfi-196/srfi-196.html</link><guid>https://srfi.schemers.org/srfi-196</guid><description>SRFI 196 is now in <em>final</em> status.<blockquote><p>Ranges are collections somewhat similar to vectors, except that
they are immutable and have algorithmic representations instead of
the uniform per-element data structure of vectors. The storage required is
usually less than the size of the same collection stored in a
vector and the time needed to reference a particular element is
typically less for a range than for the same collection stored in a
list. This SRFI defines a large subset of the sequence operations
defined on lists, vectors, strings, and other collections. If
necessary, a range can be converted to a list, vector, or string of
its elements or a generator that will lazily produce each element in
the range.</p></blockquote></description><dc:creator>John Cowan (text) and Wolfgang Corcoran-Mathe (sample implementation)</dc:creator><pubDate>Thu, 17 Sep 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 203: A Simple Picture Language in the Style of SICP</title><link>https://srfi.schemers.org/srfi-203/srfi-203.html</link><guid>https://srfi.schemers.org/srfi-203</guid><description>SRFI 203 is now in <em>final</em> status.<blockquote><p>This SRFI proposes a simple library for programmatic drawing of
pictures compatible with Section 2.2.4 of <cite>Structure and
Interpretation of Computer Programs</cite>.</p>
<p>It aims to close the gap between the Scheme suggested for study in
the book and portable Scheme.</p></blockquote></description><dc:creator>Vladimir Nikishkin</dc:creator><pubDate>Thu, 17 Sep 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 197: Pipeline Operators</title><link>https://srfi.schemers.org/srfi-197/srfi-197.html</link><guid>https://srfi.schemers.org/srfi-197</guid><description>SRFI 197 is now in <em>final</em> status.<blockquote><p>Many functional languages provide pipeline operators, like Clojure's <code>-></code> or OCaml's <code>|></code>. Pipelines are a simple, terse, and readable way to write deeply-nested expressions. This SRFI defines a family of <code>chain</code> and <code>nest</code> pipeline operators, which can rewrite nested expressions like <code>(a b (c d (e f g)))</code> as a sequence of operations: <code>(chain g (e f _) (c d _) (a b _))</code>.</p></blockquote></description><dc:creator>Adam Nelson</dc:creator><pubDate>Sat, 12 Sep 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 198: Foreign Interface Status</title><link>https://srfi.schemers.org/srfi-198/srfi-198.html</link><guid>https://srfi.schemers.org/srfi-198</guid><description>SRFI 198 is now in <em>withdrawn</em> status.<blockquote><p>
This SRFI provides means to construct, return or signal, and extract
information from Scheme interfaces with "foreign" systems such as the
P<small>OSIX</small> API, databases, and libraries.
</p></blockquote></description><dc:creator>John Cowan (editor and shepherd), Harold Ancell (implementer and editor), and Lassi Kortela (architect)</dc:creator><pubDate>Sat, 12 Sep 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 211: Scheme Macro Libraries</title><link>https://srfi.schemers.org/srfi-211/srfi-211.html</link><guid>https://srfi.schemers.org/srfi-211</guid><description>SRFI 211 is now in <em>draft</em> status.<blockquote><p>This SRFI describes common syntactic extensions of the <code>syntax-rules</code> macro facility of R5RS and the base R6RS and R7RS libraries. In particular,
library namespaces are defined where these extensions can be located
and which can be tested against in <code>cond-expand</code> forms.
</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Sat, 12 Sep 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 193: Command line</title><link>https://srfi.schemers.org/srfi-193/srfi-193.html</link><guid>https://srfi.schemers.org/srfi-193</guid><description>SRFI 193 is now in <em>final</em> status.<blockquote><p>R<sup>6</sup>RS and R<sup>7</sup>RS define a
<code>command-line</code> procedure. While a useful baseline, the
specification is not detailed enough to cover all practical
situations. This SRFI clarifies the definition of
<code>command-line</code> and adds a few related procedures.
Scheme scripts, standalone executables, compilation and REPL use
are accounted for. Option parsing is out of scope.</p></blockquote></description><dc:creator>Lassi Kortela</dc:creator><pubDate>Thu, 10 Sep 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 181: Custom ports (including transcoded ports)</title><link>https://srfi.schemers.org/srfi-181/srfi-181.html</link><guid>https://srfi.schemers.org/srfi-181</guid><description>SRFI 181 is now in <em>final</em> status.<blockquote><p>This SRFI is derived from parts of
<a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-1.html#node_toc_node_sec_8.2.4">
library section 8.2.4</a>,
<a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-9.html#node_sec_8.2.7">
library section 8.2.7</a>,
<a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-9.html#node_sec_8.2.10">
library section 8.2.10</a>, and
<a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-9.html#node_sec_8.2.13">
library section 8.2.13</a>
of the R6RS.
These sections are themselves based on parts of
<a href="http://srfi.schemers.org/srfi-79/srfi-79.html">SRFI 79</a>,
<a href="http://srfi.schemers.org/srfi-80/srfi-80.html">SRFI 80</a> and
<a href="http://srfi.schemers.org/srfi-81/srfi-81.html">SRFI 81</a>.
These procedures provide a hook into the Scheme port system from below, allowing the
creation of custom ports that behave as much as possible like the standard
file, string, and bytevector ports, but that call a procedure to produce
data to input ports or to consume data from output ports.
Procedures for creating ports that transcode
between bytes and characters are an important special
case and are also documented in this SRFI.
</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Tue, 08 Sep 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 186: Transcoders and transcoded ports</title><link>https://srfi.schemers.org/srfi-186/srfi-186.html</link><guid>https://srfi.schemers.org/srfi-186</guid><description>SRFI 186 is now in <em>withdrawn</em> status.<blockquote><p>This is an extract from the R6RS that documents its support for
transcoders and transcoded ports. These provide a hook into the
Scheme port system from below, allowing the creation of textual ports
that provide non-default encoding and decoding from arbitrary binary
ports. It has been lightly edited to fit R7RS style.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Tue, 08 Sep 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 195: Multiple-value boxes</title><link>https://srfi.schemers.org/srfi-195/srfi-195.html</link><guid>https://srfi.schemers.org/srfi-195</guid><description>SRFI 195 is now in <em>final</em> status.<blockquote><p>
This SRFI extends the specification of the boxes
of <a href="https://srfi.schemers.org/srfi-111/srfi-111.html">SRFI
111</a> so that they are multiple-values aware. Whereas a SRFI
111 box is limited in that it can only box a single value,
multiple values can be boxed with this SRFI.
</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Fri, 28 Aug 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 194: Random data generators</title><link>https://srfi.schemers.org/srfi-194/srfi-194.html</link><guid>https://srfi.schemers.org/srfi-194</guid><description>SRFI 194 is now in <em>final</em> status.<blockquote><p>This SRFI defines a set of
<a href="https://srfi.schemers.org/srfi-158/srfi-158.html">SRFI 158</a>
generators and generator makers that yield random data of specific
ranges and distributions. It is intended to be implemented on top of
<a href="https://srfi.schemers.org/srfi-27/srfi-27.html">SRFI 27</a>,
which provides the underlying source of random integers and floats.</p></blockquote></description><dc:creator>Shiro Kawai (design), Arvydas Silanskas (implementation), John Cowan (editor and shepherd), and Linas Vepštas (implementation)</dc:creator><pubDate>Wed, 26 Aug 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 178: Bitvector library</title><link>https://srfi.schemers.org/srfi-178/srfi-178.html</link><guid>https://srfi.schemers.org/srfi-178</guid><description>SRFI 178 is now in <em>final</em> status.<blockquote><p>This SRFI describes a set of operations on
homogeneous bitvectors.
Operations analogous to those provided on the other homogeneous
vector types described in
<a href="https://srfi.schemers.org/srfi-160/srfi-160.html">SRFI 160</a>
are provided,
along with operations analogous to the bitwise operations of
<a href="https://srfi.schemers.org/srfi-151/srfi-151.html">SRFI 151</a>.</p></blockquote></description><dc:creator>John Cowan (text) and Wolfgang Corcoran-Mathe (implementation)</dc:creator><pubDate>Tue, 25 Aug 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 159: Combinator Formatting</title><link>https://srfi.schemers.org/srfi-159/srfi-159.html</link><guid>https://srfi.schemers.org/srfi-159</guid><description>SRFI 159 is now in <em>withdrawn</em> status.<blockquote><p>A library of procedures for formatting Scheme objects to text in
various ways, and for easily concatenating, composing and extending
these formatters efficiently without resorting to capturing and
manipulating intermediate strings.</p></blockquote></description><dc:creator>Alex Shinn</dc:creator><pubDate>Fri, 31 Jul 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 177: Portable keyword arguments</title><link>https://srfi.schemers.org/srfi-177/srfi-177.html</link><guid>https://srfi.schemers.org/srfi-177</guid><description>SRFI 177 is now in <em>withdrawn</em> status.<blockquote><p>Many Scheme implementations have keyword arguments, but they
have not been widely standardized. This SRFI defines the macros
<code>lambda/kw</code> and <code>call/kw</code>. They can be used
identically in every major implementation currently in use,
making it safe to use keyword arguments in portable code. The
macros expand to native keyword arguments in Schemes that have
them, letting programmers mix portable code and
implementation-specific code.</p></blockquote></description><dc:creator>Lassi Kortela</dc:creator><pubDate>Fri, 31 Jul 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 192: Port Positioning</title><link>https://srfi.schemers.org/srfi-192/srfi-192.html</link><guid>https://srfi.schemers.org/srfi-192</guid><description>SRFI 192 is now in <em>final</em> status.<blockquote><p>This is an extract from the R6RS that documents its support for
positioning ports. Binary ports can be positioned to read or write
at a specific byte; textual ports at a specific character,
although character positions can't be synthesized portably.
It has been lightly edited to fit R7RS style.</p></blockquote></description><dc:creator>John Cowan and Shiro Kawai (implementation; requires a hook)</dc:creator><pubDate>Fri, 31 Jul 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 166: Monadic Formatting</title><link>https://srfi.schemers.org/srfi-166/srfi-166.html</link><guid>https://srfi.schemers.org/srfi-166</guid><description>SRFI 166 is now in <em>final</em> status.<blockquote><p>
A library of procedures for formatting Scheme objects to text in
various ways, and for easily concatenating, composing and extending
these formatters efficiently without resorting to capturing and
manipulating intermediate strings.</p>
<p>
This SRFI is an updated version of SRFI 159, primarily with the
difference that state variables are hygienic.</p>
<p>
Summary of differences from SRFI 159:
<ul>
<li>State variables are first class and hygienic</li>
<li>Added <code>written-shared</code>, <code>pretty-shared</code></li>
<li>Added <code>as-italic</code>, <code>as-color</code>, <code>as-true-color</code>, <code>on-<i>color</i></code> background variants, and <code>pretty-with-color</code></li>
<li>Added <code>ambiguous-is-wide?</code> state variable and <code>string-terminal-width/wide</code> utility</li>
<li>Added <code>substring/width</code> state var for width-aware substring operations, with <code>substring-terminal-width(/wide)</code> utilities</li>
<li>Added <code>substring/preserve</code> state var used in trimming, with <code>substring-terminal-preserve</code> utility</li>
<li>Added <code>pretty-environment</code> state variable</li>
<li>Renamed <code>as-unicode</code> to <code>terminal-aware</code></li>
<li>Restored non-uniform comma rules as needed in India</li>
<li>Restored <code>upcased</code> and <code>downcased</code></li>
<li>Several clarifications and more examples</li>
</ul></p></blockquote></description><dc:creator>Alex Shinn</dc:creator><pubDate>Thu, 30 Jul 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 199: POSIX errno manipulation</title><link>https://srfi.schemers.org/srfi-199/srfi-199.html</link><guid>https://srfi.schemers.org/srfi-199</guid><description>SRFI 199 is now in <em>withdrawn</em> status.<blockquote><p>The majority of P<small>OSIX</small> system and library calls
require accessing <code>errno</code> to discern the specific cause
of an error, and some require setting it to 0 before being called.
This SRFI specifies procedures to both retrieve its value, and to
set it.
</p></blockquote></description><dc:creator>Harold Ancell</dc:creator><pubDate>Sun, 19 Jul 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 189: Maybe and Either: optional container types</title><link>https://srfi.schemers.org/srfi-189/srfi-189.html</link><guid>https://srfi.schemers.org/srfi-189</guid><description>SRFI 189 is now in <em>final</em> status.<blockquote><p>This SRFI defines two disjoint immutable container types
known as Maybe and Either,
both of which can contain objects collectively known as their payload.
A Maybe object is either a Just object or the unique object Nothing
(which has no payload); an Either object is either
a Right object or a Left object. Maybe represents the concept of
optional values; Either represents the concept of values which are
either correct (Right) or errors (Left).</p>
<p>Note that the terms Maybe, Just, Nothing, Either, Right, and Left
are capitalized in this SRFI so as not to be confused with their
ordinary use as English words. Thus "returns Nothing" means
"returns the unique Nothing object"; "returns nothing" could be
interpreted as "returns no values"
or "returns an unspecified value".</p></blockquote></description><dc:creator>John Cowan (text) and Wolfgang Corcoran-Mathe (sample implementation)</dc:creator><pubDate>Tue, 14 Jul 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 191: Procedure Arity Inspection</title><link>https://srfi.schemers.org/srfi-191/srfi-191.html</link><guid>https://srfi.schemers.org/srfi-191</guid><description>SRFI 191 is now in <em>withdrawn</em> status.<blockquote><p>Many Scheme systems provide mechanisms for inspecting the arity of a
procedural value, making it a common feature, however there is no
standard interface. As a result there is no portable way to observe
the arity of a procedure without actually applying it. This
SRFI proposes a simple interface that is consistent with existing
Scheme systems' facilities and prior proposals.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sun, 05 Jul 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 180: JSON</title><link>https://srfi.schemers.org/srfi-180/srfi-180.html</link><guid>https://srfi.schemers.org/srfi-180</guid><description>SRFI 180 is now in <em>final</em> status.<blockquote><p>This library describes a JavaScript Object Notation (JSON) parser and printer. It supports JSON that may be bigger than memory.</p></blockquote></description><dc:creator>Amirouche Boubekki</dc:creator><pubDate>Wed, 01 Jul 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 179: Nonempty Intervals and Generalized Arrays (Updated)</title><link>https://srfi.schemers.org/srfi-179/srfi-179.html</link><guid>https://srfi.schemers.org/srfi-179</guid><description>SRFI 179 is now in <em>final</em> status.<blockquote><p>This SRFI specifies an array mechanism for Scheme. Arrays as defined here are quite general; at their most basic, an array is simply a mapping, or function, from multi-indices of exact integers $i_0,\ldots,i_{d-1}$ to Scheme values. The set of multi-indices $i_0,\ldots,i_{d-1}$ that are valid for a given array form the <i>domain</i> of the array. In this SRFI, each array's domain consists of the cross product of nonempty intervals of exact integers $[l_0,u_0)\times[l_1,u_1)\times\cdots\times[l_{d-1},u_{d-1})$ of $\mathbb Z^d$, $d$-tuples of integers. Thus, we introduce a data type called $d$-<i>intervals</i>, or more briefly <i>intervals</i>, that encapsulates this notion. (We borrow this terminology from, e.g., Elias Zakon's <a href="http://www.trillia.com/zakon1.html">Basic Concepts of Mathematics</a>.) Specialized variants of arrays are specified to provide portable programs with efficient representations for common use cases.</p></blockquote></description><dc:creator>Bradley J. Lucier</dc:creator><pubDate>Tue, 30 Jun 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 200: Pattern Matching</title><link>https://srfi.schemers.org/srfi-200/srfi-200.html</link><guid>https://srfi.schemers.org/srfi-200</guid><description>SRFI 200 is now in <em>draft</em> status.<blockquote><p>This SRFI discusses some of the existing pattern-matching
libraries for the Scheme programming language &mdash; namely,
the pattern matcher presented by Andrew K. Wright and Robert
Cartwright in the paper "A Soft Type System for Scheme", the
pattern matcher developed by Dan Friedman, Erik Hilsdale and
Kent Dybvig, the <code>racket/match</code> module
distributed with the Racket programming environment, as well
as the Bigloo and Gerbil pattern matchers distributed with
their respective implementations.
It then extracts a pattern syntax which is compatible with three of
those implementations and provides extrinsic rationale for that
syntax.
It also provides a simple implementation of a pattern matcher
which conforms to the specification of a pattern language provided
in this document.</p></blockquote></description><dc:creator>Panicz Maciej Godek</dc:creator><pubDate>Thu, 25 Jun 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 190: Coroutine Generators</title><link>https://srfi.schemers.org/srfi-190/srfi-190.html</link><guid>https://srfi.schemers.org/srfi-190</guid><description>SRFI 190 is now in <em>final</em> status.<blockquote><p>This SRFI defines syntax to create
<a href="https://srfi.schemers.org/srfi-121/">SRFI
121</a>/<a href="https://srfi.schemers.org/srfi-158/">158</a>
coroutine generators conveniently and in the flavor of Python
generator functions.
</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Thu, 11 Jun 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 188: Splicing binding constructs for syntactic keywords</title><link>https://srfi.schemers.org/srfi-188/srfi-188.html</link><guid>https://srfi.schemers.org/srfi-188</guid><description>SRFI 188 is now in <em>final</em> status.<blockquote><p>Splicing binding constructs for syntactic keywords are versions
of <code>let-syntax</code> and <code>letrec-syntax</code> that can
be used in a definition context in the same way
as <code>begin</code>.
</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Wed, 03 Jun 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 185: Linear adjustable-length strings</title><link>https://srfi.schemers.org/srfi-185/srfi-185.html</link><guid>https://srfi.schemers.org/srfi-185</guid><description>SRFI 185 is now in <em>final</em> status.<blockquote><p>
Scheme specifies mutable fixed-length strings.
<a href="https://srfi.schemers.org/srfi-118/srfi-118.html">SRFI 118</a>
adds two procedures, <code>string-append!</code> and
<code>string-replace!</code>, which allow the length of the string to change.
This SRFI provides two linear-update versions of these procedures:
that is, the implementation may change the string length or return a
new string instead.
In addition, two convenience macros are provided that make the
procedures somewhat easier to use.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sun, 26 Apr 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 182: ADBMAL, ALET, and ALET*</title><link>https://srfi.schemers.org/srfi-182/srfi-182.html</link><guid>https://srfi.schemers.org/srfi-182</guid><description>SRFI 182 is now in <em>withdrawn</em> status.<blockquote><p>Unlike the VALUES and CALL-WITH-VALUES mechanism of R5RS, this one
uses an explicit representation for multiple return values as a single
value, namely a procedure. Decomposition of multiple values is done
by simple application. The macro, ADBMAL, evaluates to a procedure
that takes one procedure argument. The ADBMAL macro can be compared
with LAMBDA. While a LAMBDA expression that consists of
<formals> and <body> requires some actual arguments later
when the evaluated LAMBDA expression is called, an ADBMAL expression
that consists of <expression>s corresponding to actual arguments
of LAMBDA requires <formals> and <body>, that is, an
evaluated LAMBDA expression, later when the evaluated ADBMAL
expression is called.</p>
<p>This SRFI also introduces the new LET-syntax ALET and ALET*, which
depend on ADBMAL to manipulate multiple values, and which are
compatible with LET and LET* of R5RS in single-value bindings. They
also have a binding form making use of VALUES and CALL-WITH-VALUES to
handle multiple values, and new binding forms for list, cons, and
other multiple values. In addition, they have several new binding
forms for useful functions such as escape, iteration, optional
arguments, etc.</p></blockquote></description><dc:creator>Joo ChurlSoo</dc:creator><pubDate>Fri, 27 Mar 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 183: Another format procedure, Fox</title><link>https://srfi.schemers.org/srfi-183/srfi-183.html</link><guid>https://srfi.schemers.org/srfi-183</guid><description>SRFI 183 is now in <em>withdrawn</em> status.<blockquote><p>This SRFI introduces the formatting procedure Fox ("format of X"),
which takes one required argument and a variable number of additional
arguments and returns a formatted string.</p></blockquote></description><dc:creator>Joo ChurlSoo</dc:creator><pubDate>Fri, 27 Mar 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 184: define-record-lambda</title><link>https://srfi.schemers.org/srfi-184/srfi-184.html</link><guid>https://srfi.schemers.org/srfi-184</guid><description>SRFI 184 is now in <em>withdrawn</em> status.<blockquote><p>This SRFI introduces a macro, DEFINE-RECORD-LAMBDA, that defines a
set of procedures, that is, a group of constructors and a predicate.
The constructors also make a group of procedures, namely record
lambdas, that have no explicit field accessors and mutators. They
can have various kinds of fields, such as common fields, required
fields, optional fields, automatic fields, read-only fields,
read-write fields, invisible fields, immutable fields, and virtual
fields.</p></blockquote></description><dc:creator>Joo ChurlSoo</dc:creator><pubDate>Fri, 27 Mar 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 187: ALAMBDA and ADEFINE</title><link>https://srfi.schemers.org/srfi-187/srfi-187.html</link><guid>https://srfi.schemers.org/srfi-187</guid><description>SRFI 187 is now in <em>withdrawn</em> status.<blockquote><p>This SRFI introduces alambda, which creates a procedure that checks
its actual arguments, takes various types of required and optional
variables.<br> This SRFI is based on
<a href="https://srfi.schemers.org/srfi-92/">SRFI 92</a>
as an extension of the optional arguments of
<a href="https://srfi.schemers.org/srfi-182/">SRFI 182</a>.</p></blockquote></description><dc:creator>Joo ChurlSoo</dc:creator><pubDate>Fri, 27 Mar 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 176: Version flag</title><link>https://srfi.schemers.org/srfi-176/srfi-176.html</link><guid>https://srfi.schemers.org/srfi-176</guid><description>SRFI 176 is now in <em>final</em> status.<blockquote><p>This SRFI defines a standard command-line flag to get version
information from a Scheme implementation. The output is
Line-oriented S-expressions which are easy to parse from Scheme, C,
and shell scripts and can co-exist with non-S-expression output. A
standard vocabulary is defined; extensions are easy to make.</p></blockquote></description><dc:creator>Lassi Kortela</dc:creator><pubDate>Mon, 24 Feb 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 216: SICP Prerequisites (Portable)</title><link>https://srfi.schemers.org/srfi-216/srfi-216.html</link><guid>https://srfi.schemers.org/srfi-216</guid><description>SRFI 216 is now in <em>final</em> status.<blockquote><p>
This SRFI follows
<a href="https://srfi.schemers.org/srfi-203/">
SRFI 203
</a>
in providing "out-of-the-box" support for hosting the exercises suggested by
<a href="https://mitpress.mit.edu/sites/default/files/sicp/index.html">
Structure and Interpretation of Computer Programs
</a>
in portable Scheme.
</p>
<p>
Whereas SRFI 203 focused on the necessarily non-portable aspects of the problem set (the graphics), this SRFI aims to provide support for the rest of the features, which are far more widespread, often already provided, and in reality mostly need just a common vocabulary.
</p>
<p>
This SRFI provides procedures for working with time data, multi-threading, and streams, as well as SICP names for <code>true</code> and <code>false</code>.
</p>
<p>
None of these procedures is fit for production use. They are only designed for pedagogical purposes.
</p>
<p>
Students, however, are expected to be able to just write</p>
<pre>
(include (srfi sicp))</pre>
<p>and have the code from the book run without problems (apart from those intended by the book authors).
</p></blockquote></description><dc:creator>Vladimir Nikishkin</dc:creator><pubDate>Tue, 21 Jan 2020 12:00:00 -0800</pubDate></item><item><title>SRFI 174: POSIX Timespecs</title><link>https://srfi.schemers.org/srfi-174/srfi-174.html</link><guid>https://srfi.schemers.org/srfi-174</guid><description>SRFI 174 is now in <em>final</em> status.<blockquote><p>This SRFI defines the trivial type <i>timespec</i>, which is used
to represent the <code>struct timespec</code> defined by the
<a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/time.h.html">
P<small>OSIX</small> <code><time.h></code> header</a>.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sat, 21 Dec 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 175: ASCII character library</title><link>https://srfi.schemers.org/srfi-175/srfi-175.html</link><guid>https://srfi.schemers.org/srfi-175</guid><description>SRFI 175 is now in <em>final</em> status.<blockquote> <p>This SRFI defines ASCII-only equivalents to many of the
character procedures in standard Scheme plus a few extra ones.
Recent Scheme standards are based around Unicode but the
significant syntactic elements in many file formats and network
protocols are all ASCII. Such low-level code can run faster and
its behavior can be easier to understand when it uses ASCII
primitives.</p></blockquote></description><dc:creator>Lassi Kortela</dc:creator><pubDate>Fri, 20 Dec 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 172: Two Safer Subsets of R7RS</title><link>https://srfi.schemers.org/srfi-172/srfi-172.html</link><guid>https://srfi.schemers.org/srfi-172</guid><description>SRFI 172 is now in <em>final</em> status.<blockquote><p>This SRFI provides two libraries for use with R7RS that provide a
way to sandbox the <code>eval</code> procedure to make it safer to use
in evaluating Scheme expressions of doubtful provenance. The intention
is to call <code>eval</code>, passing it an S-expression representing a
Scheme procedure and the environment defined by one of these libraries.
Since code evaluated by <code>eval</code> runs in a null lexical
environment, the resulting procedure can then be invoked with less
concern about possible side effects.
</p>
<p><b>Use of these libraries does not provide any sort of safety
guarantee. There are still many loopholes uncaught, including
attempts to process circular structure and over-allocation of memory.
The claim is only that the probability of such an attack is reduced,
not that it is eliminated.
However, using these libraries is a simple provision that is easy to
implement and easy to use. For higher safety, it can readily be
combined with other provisions.
</b></p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sun, 10 Nov 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 167: Ordered Key Value Store</title><link>https://srfi.schemers.org/srfi-167/srfi-167.html</link><guid>https://srfi.schemers.org/srfi-167</guid><description>SRFI 167 is now in <em>final</em> status.<blockquote><p>This library describes an interface for an ordered key-value store
that is suitable for implementing a storage engine for the generic
tuple-store SRFI. It maps cleanly to existing ordered key-value
databases that may or may not provide transactions.</p></blockquote></description><dc:creator>Amirouche Boubekki</dc:creator><pubDate>Fri, 08 Nov 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 168: Generic Tuple Store Database</title><link>https://srfi.schemers.org/srfi-168/srfi-168.html</link><guid>https://srfi.schemers.org/srfi-168</guid><description>SRFI 168 is now in <em>final</em> status.<blockquote><p>This library is a generic approach to the database abstractions
known as triplestore and quadstore. Generic Tuple Store Database
implements n-tuple ordered sets and associated primitives for
working with them in the context of data management.</p></blockquote></description><dc:creator>Amirouche Boubekki</dc:creator><pubDate>Fri, 08 Nov 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 171: Transducers</title><link>https://srfi.schemers.org/srfi-171/srfi-171.html</link><guid>https://srfi.schemers.org/srfi-171</guid><description>SRFI 171 is now in <em>final</em> status.<blockquote><p>A library implementing transducers &mdash; composable algorithmic
transformations. Scheme has many different ways of expressing
transformations over different collection types, but they are all
unique to whatever base type they work on. This SRFI proposes a new
construct, the transducer, that is oblivious to the context in which
it is being used.</p></blockquote></description><dc:creator>Linus Björnstam</dc:creator><pubDate>Sat, 26 Oct 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 173: Hooks</title><link>https://srfi.schemers.org/srfi-173/srfi-173.html</link><guid>https://srfi.schemers.org/srfi-173</guid><description>SRFI 173 is now in <em>final</em> status.<blockquote><p>This library describes a mechanism known as hooks. Hooks are a
certain kind of extension point in a program that allows
interleaving the execution of arbitrary code with the execution of
the program without introducing any coupling between the two.</p></blockquote></description><dc:creator>Amirouche Boubekki</dc:creator><pubDate>Thu, 24 Oct 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 165: The Environment Monad</title><link>https://srfi.schemers.org/srfi-165/srfi-165.html</link><guid>https://srfi.schemers.org/srfi-165</guid><description>SRFI 165 is now in <em>final</em> status.<blockquote>Monads model computations. The environment monad models
computations that depend on values from a shared environment.
These computations can read values from the environment, pass
values to subsequent computations, execute sub-computations in an
extended environment, and modify the environment for future
computations.</blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Thu, 05 Sep 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 160: Homogeneous numeric vector libraries</title><link>https://srfi.schemers.org/srfi-160/srfi-160.html</link><guid>https://srfi.schemers.org/srfi-160</guid><description>SRFI 160 is now in <em>final</em> status.<blockquote><p>This SRFI describes a set of operations on SRFI 4 homogeneous vector
types (plus a few additional types) that are closely analogous
to the vector operations library,
<a href="http://srfi.schemers.org/srfi-133/srfi-133.html">
SRFI 133</a>.
An external representation is specified which may be supported by the
<code>read</code> and <code>write</code> procedures and by the program
parser so that programs can contain references to literal homogeneous
vectors.</p></blockquote></description><dc:creator>John Cowan and Shiro Kawai (contributed a major patch)</dc:creator><pubDate>Tue, 27 Aug 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 162: Comparators sublibrary</title><link>https://srfi.schemers.org/srfi-162/srfi-162.html</link><guid>https://srfi.schemers.org/srfi-162</guid><description>SRFI 162 is now in <em>final</em> status.<blockquote><p>
This SRFI provides a few extra procedures and comparators to go
with SRFI 128, Comparators. Implementers are urged to add them to
their SRFI 128 libraries, for which reason they are not packaged
as a separate library.
</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Tue, 27 Aug 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 164: Enhanced multi-dimensional Arrays</title><link>https://srfi.schemers.org/srfi-164/srfi-164.html</link><guid>https://srfi.schemers.org/srfi-164</guid><description>SRFI 164 is now in <em>final</em> status.<blockquote><p>This SRFI describes the array data type (a generalization of
vectors to multiple indexes or dimensions), along with a set of
procedures for working on them.</p>
<p>This specification is an extension of <a href="http://srfi.schemers.org/srfi-25/srfi-25.html">SRFI 25</a>,
with additions from Racket’s
<a href="https://docs.racket-lang.org/math/array.html">math.array</a> package
and other sources. It has been implemented in the <a href="https://www.gnu.org/software/kawa/Arrays.html">Kawa dialect of Scheme</a>.</p></blockquote></description><dc:creator>Per Bothner</dc:creator><pubDate>Thu, 08 Aug 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 169: Underscores in numbers</title><link>https://srfi.schemers.org/srfi-169/srfi-169.html</link><guid>https://srfi.schemers.org/srfi-169</guid><description>SRFI 169 is now in <em>final</em> status.<blockquote><p>Many people find that large numbers are easier to read when the
digits are broken into small groups. For example, the number
<code>1582439</code> might be easier to read if written as <code>1
582 439</code>. This applies to source code as it does to other
writing. We propose an extension of Scheme syntax to allow the
underscore as a digit separator in numerical constants.</p></blockquote></description><dc:creator>Lassi Kortela</dc:creator><pubDate>Fri, 26 Jul 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 121: Generators</title><link>https://srfi.schemers.org/srfi-121/srfi-121.html</link><guid>https://srfi.schemers.org/srfi-121</guid><description>SRFI 121 is now in <em>withdrawn</em> status.<blockquote> <p>This SRFI defines utility procedures that
create, transform, and consume generators. A generator is simply a
procedure with no arguments that works as a source of a series of values.
Every time it is called, it yields a value. Generators may be finite or
infinite; a finite generator returns an end-of-file object to indicate
that it is exhausted. For example, <code>read-char</code>,
<code>read-line</code>, and <code>read</code> are generators that
generate characters, lines, and objects from the current input port.
Generators provide lightweight laziness.</p></blockquote></description><dc:creator>Shiro Kawai, John Cowan, and Thomas Gilray</dc:creator><pubDate>Thu, 18 Jul 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 161: Unifiable Boxes</title><link>https://srfi.schemers.org/srfi-161/srfi-161.html</link><guid>https://srfi.schemers.org/srfi-161</guid><description>SRFI 161 is now in <em>final</em> status.<blockquote><p>
Unifiable boxes are, like the boxes
of <a href="https://srfi.schemers.org/srfi-111/srfi-111.html">SRFI
111</a>, objects with a single mutable state. A constructor,
predicate, accessor, and mutator are provided.
</p>
<p>
In addition to this, an equality predicate and union operations (link,
union, unify) are provided. Applying a union operation to two
unifiable boxes makes the two boxes equal (in the sense of the
equality predicate). As a consequence, their state will also become
identical. In the case of link and union, it will be the state of one
of the two unioned boxes. In the case of unify, the state is
determined by a supplied unification procedure.
</p>
<p>
Unifiable boxes are
also known under the names <i>disjoint-set data
structure</i>, <i>union–find data structure</i> or <i>merge–find
set</i>.
</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Fri, 08 Feb 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 163: Enhanced array literals</title><link>https://srfi.schemers.org/srfi-163/srfi-163.html</link><guid>https://srfi.schemers.org/srfi-163</guid><description>SRFI 163 is now in <em>final</em> status.<blockquote><p>This is a specification of a reader form (literals)
for multi-dimensional arrays.
It is an extension of the Common Lisp array reader syntax to handle
non-zero lower bounds, optional explicit bounds,
and optional uniform element types (compatible with <a href="https://srfi.schemers.org/srfi-4">SRFI 4</a>).
It can be used in conjunction with <a href="https://srfi.schemers.org/srfi-25">SRFI 25</a>, <a href="https://srfi.schemers.org/srfi-122">SRFI 122</a>,
or <a href="https://srfi.schemers.org/srfi-164">SRFI 164</a>.
These extensions were implemented in Guile (except the handling of rank-0 arrays),
and later in Kawa.
</p><p>There are recommendations for output formatting
and a suggested <code>format-array</code> procedure.</p></blockquote></description><dc:creator>Per Bothner</dc:creator><pubDate>Fri, 18 Jan 2019 12:00:00 -0800</pubDate></item><item><title>SRFI 154: First-class dynamic extents</title><link>https://srfi.schemers.org/srfi-154/srfi-154.html</link><guid>https://srfi.schemers.org/srfi-154</guid><description>SRFI 154 is now in <em>final</em> status.<blockquote><p>Scheme has the notion of the <em>dynamic extent</em> of a
procedure call. A number of standard Scheme procedures and
syntaxes
like <code>dynamic-wind</code>, <code>call-with-current-continuation</code>,
and <code>parameterize</code>
deal with the dynamic extent indirectly. The same holds true
for the procedures and syntaxes dealing with continuation
marks as defined by <a href="https://srfi.schemers.org/srfi-157/srfi-157.html">SRFI
157</a>.</p>
<p>This SRFI reifies the dynamic extent into a first-class value
together with a well-defined procedural interface and a syntax to
create procedures that remember not only their environment at
creation time but also their dynamic extent, which includes their
dynamic environment.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Sat, 15 Sep 2018 12:00:00 -0800</pubDate></item><item><title>SRFI 155: Promises</title><link>https://srfi.schemers.org/srfi-155/srfi-155.html</link><guid>https://srfi.schemers.org/srfi-155</guid><description>SRFI 155 is now in <em>final</em> status.<blockquote> <p>
Scheme, like ML, is a programming language with strict evaluation
while others, like Haskell, use lazy evaluation. Scheme, however,
possesses the primitives <code>delay</code> and <code>force</code>
that make it possible to express lazy algorithms.
</p><p>
Lazy evaluation does not go well in conjunction with imperative,
non-functional, side-effecting code. It should, however, be
applicable in a purely functional setting. This is the case for the
delayed evaluation model as described in the R7RS as long as no
dynamically bound variables, also known as parameter objects, are
present. It is the purpose of this SRFI to rework the specification
in the R7RS so that lazy evaluation works with purely functional code
that makes use of dynamic environments or, more generally, the dynamic
extent. This is done by remembering the dynamic extent in effect when
the <code>delay</code> expression is evaluated.
</p><p>
Another perceived misfeature of the R7RS model of delayed evaluation
is the apparent need of the <code>delay-force</code> special form to
express iterative lazy algorithms. It is shown that
the <code>delay-force</code> special form is unneeded and that the
implementation can (and should) handle iterative lazy algorithms
without space leaks.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Sat, 15 Sep 2018 12:00:00 -0800</pubDate></item><item><title>SRFI 153: Ordered Sets</title><link>https://srfi.schemers.org/srfi-153/srfi-153.html</link><guid>https://srfi.schemers.org/srfi-153</guid><description>SRFI 153 is now in <em>withdrawn</em> status.<blockquote><p><em>Osets</em> are immutable collections that can contain any Scheme
object. Osets enforce the constraint that no two elements can be the same
in the sense of the oset's associated <em>equality predicate</em>
The elements in an oset appear in a fixed order determined by the
comparator used to create it.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sun, 08 Jul 2018 12:00:00 -0800</pubDate></item><item><title>SRFI 146: Mappings</title><link>https://srfi.schemers.org/srfi-146/srfi-146.html</link><guid>https://srfi.schemers.org/srfi-146</guid><description>SRFI 146 is now in <em>final</em> status.<blockquote> <p><em>Mappings</em> are finite sets of
associations, where each association is a pair consisting of a key and an
arbitrary Scheme value. The keys are elements of a suitable domain. Each
mapping holds no more than one association with the same key. The
fundamental mapping operation is retrieving the value of an association
stored in the mapping when the key is given.</p></blockquote></description><dc:creator>Arthur A. Gleckler and Marc Nieper-Wißkirchen</dc:creator><pubDate>Thu, 24 May 2018 12:00:00 -0800</pubDate></item><item><title>SRFI 157: Continuation marks</title><link>https://srfi.schemers.org/srfi-157/srfi-157.html</link><guid>https://srfi.schemers.org/srfi-157</guid><description>SRFI 157 is now in <em>final</em> status.<blockquote><p>
Continuation marks are a programming language feature that allows
one to attach information to and retrieve information from
continuations, generalizing stack inspection. Conceptually, a
continuation consists of a number of frames where each frame stands
for an active procedure call that is not a tail call. A
continuation mark is then a key-value pair associated with a frame,
with keys compared using <code>eq?</code>.
At most one mark for a given key can be attached to a single frame.
</p>
<p>
Besides stack inspection, continuation marks can be used to
implement dynamic scope, delimited continuations, or delayed
evaluation that is able to handle iterative lazy algorithms.
</p>
<p>
This SRFI proposes to add continuation marks to the Scheme
programming language. The interface defined here is modelled after
Racket's continuation marks. It does not include all forms and
procedures provided by Racket but provides a compatible subset.
</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Mon, 29 Jan 2018 12:00:00 -0800</pubDate></item><item><title>SRFI 150: Hygienic ERR5RS Record Syntax (reduced)</title><link>https://srfi.schemers.org/srfi-150/srfi-150.html</link><guid>https://srfi.schemers.org/srfi-150</guid><description>SRFI 150 is now in <em>final</em> status.<blockquote> <p>
This SRFI provides a specification and portable implementation of an
extension of the ERR5RS record syntax
of <a href="https://srfi.schemers.org/srfi-131/srfi-131.html">SRFI
131</a>, where field names inserted by macro transformers are
effectively renamed as if the macro transformer inserted a binding.
This makes this SRFI compatible with the semantics of the record-type
definitions of
the <a href="https://bitbucket.org/cowan/r7rs/src/draft-10/rnrs/r7rs.pdf">R7RS</a>
as intended by
its <a href="https://groups.google.com/d/msg/scheme-reports-wg2/oKuhgwaM45w/KXgPrh8oAwAJ">authors</a>.
In addition, field names may also be other types of Scheme datums,
like numbers and strings, or
<a href="https://srfi.schemers.org/srfi-88/srfi-88.html">SRFI 88</a> keyword objects.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Tue, 16 Jan 2018 12:00:00 -0800</pubDate></item><item><title>SRFI 156: Syntactic combiners for binary predicates</title><link>https://srfi.schemers.org/srfi-156/srfi-156.html</link><guid>https://srfi.schemers.org/srfi-156</guid><description>SRFI 156 is now in <em>final</em> status.<blockquote><p>Recognizing binary predicates as a specific area
in which the use of prefix operators is an impediment,
we propose a thin layer of "syntactic stevia" for in-fixing
such predicates. It can be implemented using regular Scheme
macros. We suggest that the code <code>(is x < y)</code> should
be transformed to <code>(< x y)</code>, and <code>(is x < y <= z)</code>
-- to <code>(let ((y* y)) (and (< x y*) (<= y* z)))</code>.
In addition, we suggest special meaning to the <code>_</code> symbol:
<code>(is _ < y)</code> and <code>(is x < _)</code>
should be transformed to <code>(lambda (_) (< _ y))</code>
and <code>(lambda (_) (< x _))</code>, respectively.
This SRFI document also describes some other uses of the
<code>is</code> macro and its limitations.</p></blockquote></description><dc:creator>Panicz Maciej Godek</dc:creator><pubDate>Mon, 18 Dec 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 158: Generators and Accumulators</title><link>https://srfi.schemers.org/srfi-158/srfi-158.html</link><guid>https://srfi.schemers.org/srfi-158</guid><description>SRFI 158 is now in <em>final</em> status.<blockquote><p>This SRFI defines utility procedures that create, transform, and consume generators.
A generator is simply a procedure with no arguments that works
as a source of values. Every time it is called,
it yields a value. Generators may be finite or infinite; a finite
generator returns an end-of-file object to indicate that it is exhausted.
For example, <code>read-char</code>, <code>read-line</code>,
and <code>read</code> are generators that
generate characters, lines, and objects from the current input port.
Generators provide lightweight laziness.
</p>
<p>This SRFI also defines procedures that return accumulators.
An accumulator is the inverse of a generator: it is a procedure of one argument
that works as a sink of values.
</p></blockquote></description><dc:creator>Shiro Kawai, John Cowan, and Thomas Gilray</dc:creator><pubDate>Fri, 27 Oct 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 152: String Library (reduced)</title><link>https://srfi.schemers.org/srfi-152/srfi-152.html</link><guid>https://srfi.schemers.org/srfi-152</guid><description>SRFI 152 is now in <em>final</em> status.<blockquote> <p>Scheme has an impoverished set of
string-processing utilities, which is a problem for authors of portable
code. This SRFI proposes a coherent and comprehensive set of
string-processing procedures. It is a reduced version of SRFI 13 that has
been aligned with SRFI 135, Immutable Texts. Unlike SRFI 13, it has been
made consistent with the R5RS, R6RS, and R7RS-small string
procedures.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Wed, 04 Oct 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 40: A Library of Streams</title><link>https://srfi.schemers.org/srfi-40/srfi-40.html</link><guid>https://srfi.schemers.org/srfi-40</guid><description>SRFI 40 is now in <em>withdrawn</em> status.<blockquote> <p>Along with higher-order functions, one of the
hallmarks of functional programming is lazy evaluation. A primary
manifestation of lazy evaluation is lazy lists, generally called streams
by Scheme programmers, where evaluation of a list element is delayed
until its value is needed.
</p><p>The literature on lazy evaluation distinguishes
two styles of laziness, called even and odd. Odd style streams are
ubiquitous among Scheme programs and can be easily encoded with the
Scheme primitives delay and force defined in R5RS. However, the even
style delays evaluation in a manner closer to that of traditional lazy
languages such as Haskell and avoids an "off by one" error that is
symptomatic of the odd style.
</p><p>This SRFI defines the stream data type in the
even style, some essential procedures and syntax that operate on streams,
and motivates our choice of the even style. A companion SRFI 41 Stream
Library provides additional procedures and syntax which make for more
convenient processing of streams and shows several examples of their
use.</p></blockquote></description><dc:creator>Philip L. Bewig</dc:creator><pubDate>Thu, 10 Aug 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 114: Comparators</title><link>https://srfi.schemers.org/srfi-114/srfi-114.html</link><guid>https://srfi.schemers.org/srfi-114</guid><description>SRFI 114 is now in <em>withdrawn</em> status.<blockquote> <p>This proposal is a rewrite of <a href="https://srfi.schemers.org/srfi-67/">SRFI 67</a>, Compare Procedures, extending it from procedures
that represent a total order to procedure bundles that represent one or
more of a total order, an equality predicate, and a hash function. By
packaging these procedures together, along with a type test predicate,
they can be treated as a single item for use in the implementation of
data structures.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Thu, 10 Aug 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 142: Bitwise Operations</title><link>https://srfi.schemers.org/srfi-142/srfi-142.html</link><guid>https://srfi.schemers.org/srfi-142</guid><description>SRFI 142 is now in <em>withdrawn</em> status.<blockquote> <p>This SRFI proposes a coherent and comprehensive
set of procedures for performing bitwise logical operations on integers;
it is accompanied by a reference implementation of the spec in terms of a
set of seven core operators. The sample implementation is portable, as
efficient as practical with pure Scheme arithmetic (it is worthwhile
replacing the core operators with C or assembly language if possible),
and open source.
</p><p>The precise semantics of these operators is
almost never an issue. A consistent, portable set of <em>names</em> and
<em>parameter conventions</em>, however, is. Hence this SRFI, which is
based mainly on <a href="https://srfi.schemers.org/srfi-33/">SRFI 33</a>, with some changes and
additions from <a href="http://srfi.schemers.org/srfi-33/mail-archive/msg00023.html">Olin's late
revisions to SRFI 33</a> (which were never consummated). <a href="https://srfi.schemers.org/srfi-60/">SRFI 60</a> (based on SLIB) is smaller but has a few
procedures of its own; some of its procedures have both native (often
Common Lisp) and SRFI 33 names. They have been incorporated into this
SRFI. <a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-12.html#node_sec_11.4">
R6RS</a> is a subset of SRFI 60, except that all procedure names begin
with a <code>bitwise-</code> prefix. A few procedures have been added from
the general vector <a href="https://srfi.schemers.org/srfi-133/">SRFI 133</a>.
</p><p>Among the applications of bitwise operations
are: hashing, Galois-field calculations of error-detecting and
error-correcting codes, cryptography and ciphers, pseudo-random number
generation, register-transfer-level modeling of digital logic designs,
Fast-Fourier transforms, packing and unpacking numbers in persistent data
structures, space-filling curves with applications to dimension reduction
and sparse multi-dimensional database indexes, and generating approximate
seed values for root-finders and transcendental function
algorithms.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Thu, 10 Aug 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 148: Eager syntax-rules</title><link>https://srfi.schemers.org/srfi-148/srfi-148.html</link><guid>https://srfi.schemers.org/srfi-148</guid><description>SRFI 148 is now in <em>final</em> status.<blockquote> <p>Writing powerful <code>syntax-rules</code>
macros is hard because they do not compose well: The arguments of a macro
expansion are not expanded. This SRFI defines an easy to comprehend
high-level system for writing powerful, composable (or <em>eager</em>)
macros, two of whose defining features are that its macro arguments are
(in general) eagerly expanded and that it can be portably implemented in
any Scheme implementation conforming to the R7RS.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Tue, 08 Aug 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 144: Flonums</title><link>https://srfi.schemers.org/srfi-144/srfi-144.html</link><guid>https://srfi.schemers.org/srfi-144</guid><description>SRFI 144 is now in <em>final</em> status.<blockquote> <p>This SRFI describes numeric procedures
applicable to <em>flonums</em>, a subset of the inexact real numbers
provided by a Scheme implementation. In most Schemes, the flonums and the
inexact reals are the same. These procedures are semantically equivalent
to the corresponding generic procedures, but allow more efficient
implementations.</p></blockquote></description><dc:creator>John Cowan and Will Clinger</dc:creator><pubDate>Mon, 17 Jul 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 151: Bitwise Operations</title><link>https://srfi.schemers.org/srfi-151/srfi-151.html</link><guid>https://srfi.schemers.org/srfi-151</guid><description>SRFI 151 is now in <em>final</em> status.<blockquote> <p>This SRFI proposes a coherent and comprehensive
set of procedures for performing bitwise logical operations on integers;
it is accompanied by a reference implementation of the spec in terms of a
set of seven core operators. The sample implementation is portable, as
efficient as practical with pure Scheme arithmetic (it is much more
efficient to replace the core operators with C or assembly language if
possible), and open source.
</p><p>The precise semantics of these operators is
almost never an issue. A consistent, portable set of <em>names</em> and
<em>parameter conventions</em>, however, is. Hence this SRFI, which is
based mainly on <a href="https://srfi.schemers.org/srfi-33/">SRFI 33</a>, with some changes and
additions from <a href="http://srfi.schemers.org/srfi-33/mail-archive/msg00023.html">Olin's late
revisions to SRFI 33</a> (which were never consummated). <a href="https://srfi.schemers.org/srfi-60/">SRFI 60</a> (based on SLIB) is smaller but has a few
procedures of its own; some of its procedures have both native (often
Common Lisp) and SRFI 33 names. They have been incorporated into this
SRFI. <a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-12.html#node_sec_11.4">
R6RS</a> is a subset of SRFI 60, except that all procedure names begin
with a <code>bitwise-</code> prefix. A few procedures have been added from
the general vector <a href="https://srfi.schemers.org/srfi-133/">SRFI 133</a>.
</p><p>Among the applications of bitwise operations
are: hashing, Galois-field calculations of error-detecting and
error-correcting codes, cryptography and ciphers, pseudo-random number
generation, register-transfer-level modeling of digital logic designs,
Fast-Fourier transforms, packing and unpacking numbers in persistent data
structures, space-filling curves with applications to dimension reduction
and sparse multi-dimensional database indexes, and generating approximate
seed values for root-finders and transcendental function
algorithms.
</p><p>This SRFI differs from SRFI 142 in only two
ways:
<ol>
<li>
<p>The <code>bitwise-if</code> function has the
argument ordering of SLIB, SRFI 60, and R6RS rather than the ordering
of SRFI 33.
<li>
<p>The order in which bits are processed by
the procedures listed in the "Bits conversion" section has been
clarified and some of the procedures' names have been changed. See
"Bit processing order" for details.
<ol></ol></p></li></p></li></ol></p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Mon, 10 Jul 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 149: Basic Syntax-rules Template Extensions</title><link>https://srfi.schemers.org/srfi-149/srfi-149.html</link><guid>https://srfi.schemers.org/srfi-149</guid><description>SRFI 149 is now in <em>final</em> status.<blockquote> <p>The rules for valid
<code><template></code>s of <code><syntax rules></code> are
slightly softened to allow for more than one consecutive
<code><ellipsis></code> in subtemplates, and to allow pattern
variables in subtemplates to be followed by more instances of the
identifier <code><ellipsis></code> than they are followed in the
subpattern in which they occur.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Sat, 08 Jul 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 143: Fixnums</title><link>https://srfi.schemers.org/srfi-143/srfi-143.html</link><guid>https://srfi.schemers.org/srfi-143</guid><description>SRFI 143 is now in <em>final</em> status.<blockquote> <p>This SRFI describes arithmetic procedures
applicable to a limited range of exact integers only. These procedures
are semantically similar to the corresponding generic-arithmetic
procedures, but allow more efficient implementations.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sat, 27 May 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 140: Immutable Strings</title><link>https://srfi.schemers.org/srfi-140/srfi-140.html</link><guid>https://srfi.schemers.org/srfi-140</guid><description>SRFI 140 is now in <em>final</em> status.<blockquote> <p>This attempts to solve the same issues with
R7RS strings raised by <a href="https://srfi.schemers.org/srfi-135/">SRFI-135</a>, but with better
integration with the Scheme language.
</p><p>We propose to retain the name <dfn>string</dfn>
as the type of sequences of Unicode characters (scalar values). There are
two standard subtypes of string:
<ul>
<li>Immutable strings, also called
<dfn>istrings</dfn>, cannot be modified after they have been created.
Calling <code>string-set!</code> on an istring throws an error. On the
other hand, the core operations <code>string-ref</code> and
<code>string-length</code> are guaranteed to be O(1).
</li><li>Mutable strings can be modified
<q>in-place</q> using <code>string-set!</code> and other operations.
However, <code>string-ref</code>, <code>string-set!</code>, or
<code>string-length</code> have no performance guarantees. On many
implementation they may take time proportional to the length of the
string.
</li></ul><li>
<p>An implementation may support other kinds of
strings. For example on the Java platform it may be reasonable to
consider any instance of <code>java.lang.CharSequence</code> to be a
string.
</p><p>The main part of the proposal specifies the
default bindings of various procedure names, as might be pre-defined in a
REPL. Specifically, some procedures that traditionally return mutable
strings are changed to return istrings. We later discuss compatibility
and other library issues.
</p><p>This combines <a href="https://srfi.schemers.org/srfi-13/">SRFI-13</a>,
<a href="https://srfi.schemers.org/srfi-135/">SRFI-135</a>, and <a href="/srfi-118/">SRFI-118</a>.</p></li></p></blockquote></description><dc:creator>Per Bothner</dc:creator><pubDate>Wed, 24 May 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 145: Assumptions</title><link>https://srfi.schemers.org/srfi-145/srfi-145.html</link><guid>https://srfi.schemers.org/srfi-145</guid><description>SRFI 145 is now in <em>final</em> status.<blockquote> <p>A means to denote the invalidity of certain
code paths in a Scheme program is proposed. It allows Scheme code to turn
the evaluation into a user-defined error that need not be signalled by
the implementation. Optimizing compilers may use these denotations to
produce better code and to issue better warnings about dead code.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Fri, 31 Mar 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 147: Custom macro transformers</title><link>https://srfi.schemers.org/srfi-147/srfi-147.html</link><guid>https://srfi.schemers.org/srfi-147</guid><description>SRFI 147 is now in <em>final</em> status.<blockquote> <p>Each syntax definition assigns a macro
transformer to a keyword. The macro transformer is specified by a
transformer spec, which is either an instance of
<code>syntax-rules</code>, an existing syntactic keyword (including macro
keywords and the syntactic keywords that introduce the core forms, like
<code>lambda</code>, <code>if</code>, or <code>define</code>), or a use
of a macro that eventually expands into an instance of
<code>syntax-rules</code>. In the latter case, the keyword of macro use
is called a <em>custom macro transformer</em>.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Tue, 07 Mar 2017 12:00:00 -0800</pubDate></item><item><title>SRFI 136: Extensible record types</title><link>https://srfi.schemers.org/srfi-136/srfi-136.html</link><guid>https://srfi.schemers.org/srfi-136</guid><description>SRFI 136 is now in <em>final</em> status.<blockquote> <p>SRFI 9 and the compatible R7RS-small provide
Scheme with record types. The basic problem that is solved by these
record types is that they allow the user to introduce new types, disjoint
from all existing types. The record type system described in this
document is a conservative extension to SRFI 9 and R7RS record types (in
other words, the keyword <code>define-record-type</code> defined in this
specification can serve as the equally named keyword from SRFI 9 and R7RS
and can thus be safely exported from <code>(srfi 9)</code> and
<code>(scheme base)</code>) that is intended to solve another fundamental
problem, namely the introduction of subtypes.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Sun, 25 Dec 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 122: Nonempty Intervals and Generalized Arrays</title><link>https://srfi.schemers.org/srfi-122/srfi-122.html</link><guid>https://srfi.schemers.org/srfi-122</guid><description>SRFI 122 is now in <em>final</em> status.<blockquote> <p>This SRFI specifies an array mechanism for
Scheme. Arrays as defined here are quite general; at their most basic, an
array is simply a mapping, or function, from multi-indices of exact
integers $i_0,\ldots,i_{d-1}$ to Scheme values. The set of multi-indices
$i_0,\ldots,i_{d-1}$ that are valid for a given array form the
<i>domain</i> of the array. In this SRFI, each array's domain consists of
a rectangular interval
$[l_0,u_0)\times[l_1,u_1)\times\cdots\times[l_{d-1},u_{d-1})$, a subset
of $\mathbb Z^d$, $d$-tuples of integers. Thus, we introduce a data type
called <i>intervals</i>, which encapsulate the cross product of nonempty
intervals of exact integers. Specialized variants of arrays are specified
to provide portable programs with efficient representations for common
use cases.</p></blockquote></description><dc:creator>Bradley J. Lucier</dc:creator><pubDate>Sat, 24 Dec 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 141: Integer division</title><link>https://srfi.schemers.org/srfi-141/srfi-141.html</link><guid>https://srfi.schemers.org/srfi-141</guid><description>SRFI 141 is now in <em>final</em> status.<blockquote> <p>This SRFI provides a fairly complete set of
integral division and remainder operators.</p></blockquote></description><dc:creator>Taylor Campbell and John Cowan</dc:creator><pubDate>Wed, 14 Dec 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 137: Minimal Unique Types</title><link>https://srfi.schemers.org/srfi-137/srfi-137.html</link><guid>https://srfi.schemers.org/srfi-137</guid><description>SRFI 137 is now in <em>final</em> status.<blockquote> <p>This SRFI is intended to standardize a
primitive run-time mechanism to create disjoint types.</p></blockquote></description><dc:creator>John Cowan and Marc Nieper-Wißkirchen</dc:creator><pubDate>Tue, 04 Oct 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 139: Syntax parameters</title><link>https://srfi.schemers.org/srfi-139/srfi-139.html</link><guid>https://srfi.schemers.org/srfi-139</guid><description>SRFI 139 is now in <em>final</em> status.<blockquote> <p>Syntax parameters are to the expansion process
of a Scheme program what parameters are to the evaluation process of a
Scheme program. They allow hygienic implementation of syntactic forms
that would otherwise introduce implicit identifiers
unhygienically.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Sun, 02 Oct 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 138: Compiling Scheme programs to executables</title><link>https://srfi.schemers.org/srfi-138/srfi-138.html</link><guid>https://srfi.schemers.org/srfi-138</guid><description>SRFI 138 is now in <em>final</em> status.<blockquote> <p>This SRFI describes, for sufficiently
POSIX-compatible systems, a portable interface for compiling Scheme
programs conforming to the R7RS to binaries that can be directly executed
on the host system.</p></blockquote></description><dc:creator>Marc Nieper-Wißkirchen</dc:creator><pubDate>Wed, 28 Sep 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 135: Immutable Texts</title><link>https://srfi.schemers.org/srfi-135/srfi-135.html</link><guid>https://srfi.schemers.org/srfi-135</guid><description>SRFI 135 is now in <em>final</em> status.<blockquote> <p>In Scheme, strings are a mutable data type.
Although it "is an error" (<abbr title="Revised<sup>5</sup> Report on Scheme">R5RS</abbr> and
<abbr title="Revised<sup>7</sup> Report on Scheme">R7RS</abbr>) to use
<code>string-set!</code> on literal strings or on strings returned by
<code>symbol->string</code>, and any attempt to do so "should raise an
exception" (<abbr title="Revised<sup>6</sup> Report on Scheme">R6RS</abbr>), all
other strings are mutable.
</p><p>Although many mutable strings are never
actually mutated, the mere possibility of mutation complicates
specifications of libraries that use strings, encourages precautionary
copying of strings, and precludes structure sharing that could otherwise
be used to make procedures such as <code>substring</code> and
<code>string-append</code> faster and more space-efficient.
</p><p>This <abbr title="Scheme Request for Implementation">SRFI</abbr> specifies a new data type
of immutable texts. It comes with efficient and portable sample
implementations that guarantee O(1) indexing for both sequential and
random access, even in systems whose <code>string-ref</code> procedure
takes linear time.
</p><p>The operations of this new data type include
analogues for all of the non-mutating operations on strings specified by
the R7RS and most of those specified by <abbr title="String cursors"><a href="https://srfi.schemers.org/srfi-130/">SRFI 130</a></abbr>, but the
immutability of texts and uniformity of character-based indexing simplify
the specification of those operations while avoiding several
inefficiencies associated with the mutability of Scheme's strings.</p></blockquote></description><dc:creator>William D Clinger</dc:creator><pubDate>Tue, 06 Sep 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 134: Immutable Deques</title><link>https://srfi.schemers.org/srfi-134/srfi-134.html</link><guid>https://srfi.schemers.org/srfi-134</guid><description>SRFI 134 is now in <em>final</em> status.<blockquote> <p>This SRFI defines immutable deques. A deque is
a double-ended queue, a sequence which allows elements to be added or
removed efficiently from either end. A structure is immutable when all
its operations leave the structure unchanged. Note that none of the
procedures specified here ends with an exclamation point.</p></blockquote></description><dc:creator>Kevin Wortman and John Cowan</dc:creator><pubDate>Fri, 01 Jul 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 130: Cursor-based string library</title><link>https://srfi.schemers.org/srfi-130/srfi-130.html</link><guid>https://srfi.schemers.org/srfi-130</guid><description>SRFI 130 is now in <em>final</em> status.<blockquote> <p><abbr title="Revised<sup>5</sup> Report on Scheme">R5RS</abbr> Scheme has
an impoverished set of string-processing utilities, which is a problem
for authors of portable code. Although <abbr title="Revised<sup>7</sup> Report on Scheme">R7RS</abbr> provides
some extensions and improvements, it is still very incomplete. This
<abbr title="Scheme Request for Implementation">SRFI</abbr> proposes a
coherent and comprehensive set of string-processing procedures; it is
accompanied by a portable sample implementation of the spec.
</p><p>This SRFI is derived from SRFI 13. The biggest
difference is that it allows subsequences of strings to be specified by
<em>cursors</em> as well as the traditional string indexes. In addition,
it omits the comparison, case-mapping, and mutation operations of SRFI
13, as well as all procedures already present in <abbr title="Revised<sup>7</sup> Report on Scheme">R7RS</abbr>.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sat, 28 May 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 132: Sort Libraries</title><link>https://srfi.schemers.org/srfi-132/srfi-132.html</link><guid>https://srfi.schemers.org/srfi-132</guid><description>SRFI 132 is now in <em>final</em> status.<blockquote> <p>This SRFI describes the API for a full-featured
sort toolkit.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Wed, 20 Apr 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 133: Vector Library (R7RS-compatible)</title><link>https://srfi.schemers.org/srfi-133/srfi-133.html</link><guid>https://srfi.schemers.org/srfi-133</guid><description>SRFI 133 is now in <em>final</em> status.<blockquote> <p>This SRFI proposes a comprehensive library of
vector operations accompanied by a freely available and complete
reference implementation. The reference implementation is unencumbered by
copyright, and useable with no modifications on any Scheme system that is
R5RS-compliant. It also provides several hooks for
implementation-specific optimization as well.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sun, 20 Mar 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 129: Titlecase procedures</title><link>https://srfi.schemers.org/srfi-129/srfi-129.html</link><guid>https://srfi.schemers.org/srfi-129</guid><description>SRFI 129 is now in <em>final</em> status.<blockquote> <p>This SRFI defines R7RS-style
<code>char-title-case?</code>, <code>char-titlecase</code>, and
<code>string-titlecase</code> procedures.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Tue, 08 Mar 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 128: Comparators (reduced)</title><link>https://srfi.schemers.org/srfi-128/srfi-128.html</link><guid>https://srfi.schemers.org/srfi-128</guid><description>SRFI 128 is now in <em>final</em> status.<blockquote> <p>This SRFI provides <i>comparators</i>, which
bundle a type test predicate, an equality predicate, an ordering
predicate, and a hash function (the last two are optional) into a single
Scheme object. By packaging these procedures together, they can be
treated as a single item for use in the implementation of data
structures.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Sun, 14 Feb 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 131: ERR5RS Record Syntax (reduced)</title><link>https://srfi.schemers.org/srfi-131/srfi-131.html</link><guid>https://srfi.schemers.org/srfi-131</guid><description>SRFI 131 is now in <em>final</em> status.<blockquote> <p>This SRFI is a reduced version of the SRFI 99
syntactic layer that can be implemented with <code>syntax-rules</code>
without requiring low-level macros. Like SRFI-99's syntax layer, it is
backward compatible with the <code>define-record-type</code> macro from
<a href="https://srfi.schemers.org/srfi-9/">SRFI 9</a> or R7RS-small. It is forward compatible with
<a href="https://srfi.schemers.org/srfi-99/">SRFI 99</a>.</p></blockquote></description><dc:creator>John Cowan and Will Clinger</dc:creator><pubDate>Sat, 13 Feb 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 126: R6RS-based hashtables</title><link>https://srfi.schemers.org/srfi-126/srfi-126.html</link><guid>https://srfi.schemers.org/srfi-126</guid><description>SRFI 126 is now in <em>final</em> status.<blockquote> <p>We provide a hashtable API that takes the R6RS
hashtables API as a basis and makes backwards compatible additions such
as support for weak hashtables, external representation, API support for
double hashing implementations, and utility procedures.</p></blockquote></description><dc:creator>Taylan Ulrich Bayırlı/Kammer</dc:creator><pubDate>Mon, 01 Feb 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 127: Lazy Sequences</title><link>https://srfi.schemers.org/srfi-127/srfi-127.html</link><guid>https://srfi.schemers.org/srfi-127</guid><description>SRFI 127 is now in <em>final</em> status.<blockquote> <p>Lazy sequences (or lseqs, pronounced
"ell-seeks") are a generalization of lists. In particular, an lseq is
either a proper list or a dotted list whose last cdr is a <a href="https://srfi.schemers.org/srfi-121/">SRFI 121</a> generator. A generator is a procedure that can
be invoked with no arguments in order to lazily supply additional
elements of the lseq. When a generator has no more elements to return, it
returns an end-of-file object. Consequently, lazy sequences cannot
reliably contain end-of-file objects.
</p><p>This SRFI provides a set of procedures suitable
for operating on lazy sequences based on <a href="https://srfi.schemers.org/srfi-1/">SRFI
1</a>.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Mon, 18 Jan 2016 12:00:00 -0800</pubDate></item><item><title>SRFI 124: Ephemerons</title><link>https://srfi.schemers.org/srfi-124/srfi-124.html</link><guid>https://srfi.schemers.org/srfi-124</guid><description>SRFI 124 is now in <em>final</em> status.<blockquote> <p>An ephemeron is an object with two components
called its <em>key</em> and its <em>datum</em>. It differs from an
ordinary pair as follows: if the garbage collector (GC) can prove that
there are no references to the key except from the ephemeron itself and
possibly from the datum, then it is free to <em>break</em> the ephemeron,
dropping its reference to both key and datum. In other words, an
ephemeron can be broken when nobody else cares about its key. Ephemerons
can be used to construct weak vectors or lists and (possibly in
combination with finalizers) weak hash tables.
</p><p>Much of this specification is derived with
thanks from the MIT Scheme Reference Manual.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Fri, 06 Nov 2015 12:00:00 -0800</pubDate></item><item><title>SRFI 123: Generic accessor and modifier operators</title><link>https://srfi.schemers.org/srfi-123/srfi-123.html</link><guid>https://srfi.schemers.org/srfi-123</guid><description>SRFI 123 is now in <em>final</em> status.<blockquote> <p>Lisp dialects including Scheme have
traditionally lacked short, simple, generic syntax for accessing and
modifying the fields of arbitrary "collection" objects. We fill this gap
for Scheme by defining generalized accessors, and an associated SRFI-17
setter.</p></blockquote></description><dc:creator>Taylan Ulrich Bayırlı/Kammer</dc:creator><pubDate>Wed, 14 Oct 2015 12:00:00 -0800</pubDate></item><item><title>SRFI 117: Queues based on lists</title><link>https://srfi.schemers.org/srfi-117/srfi-117.html</link><guid>https://srfi.schemers.org/srfi-117</guid><description>SRFI 117 is now in <em>final</em> status.<blockquote> <p>List queues are mutable ordered collections
that can contain any Scheme object. Each list queue is based on an
ordinary Scheme list containing the elements of the list queue by
maintaining pointers to the first and last pairs of the list. It's cheap
to add or remove elements from the front of the list or to add elements
to the back, but not to remove elements from the back. List queues are
disjoint from other types of Scheme objects.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Tue, 25 Aug 2015 12:00:00 -0800</pubDate></item><item><title>SRFI 120: Timer APIs</title><link>https://srfi.schemers.org/srfi-120/srfi-120.html</link><guid>https://srfi.schemers.org/srfi-120</guid><description>SRFI 120 is now in <em>final</em> status.<blockquote> <p>This SRFI defines interfaces to handle timer
processes.</p></blockquote></description><dc:creator>Takashi Kato</dc:creator><pubDate>Thu, 06 Aug 2015 12:00:00 -0800</pubDate></item><item><title>SRFI 118: Simple adjustable-size strings</title><link>https://srfi.schemers.org/srfi-118/srfi-118.html</link><guid>https://srfi.schemers.org/srfi-118</guid><description>SRFI 118 is now in <em>final</em> status.<blockquote> <p>Scheme specifies mutable fixed-length strings.
We add two procedures <code>string-append!</code> and
<code>string-replace!</code> which allow the size of the string to
change. We also require that the standard Scheme procedures
<code>make-string</code> and <code>string-copy</code> return
variable-size strings.</p></blockquote></description><dc:creator>Per Bothner</dc:creator><pubDate>Tue, 07 Jul 2015 12:00:00 -0800</pubDate></item><item><title>SRFI 119: wisp: simpler indentation-sensitive scheme</title><link>https://srfi.schemers.org/srfi-119/srfi-119.html</link><guid>https://srfi.schemers.org/srfi-119</guid><description>SRFI 119 is now in <em>final</em> status.<blockquote> <p>This SRFI describes a simple syntax which
allows making scheme easier to read for newcomers while keeping the
simplicity, generality and elegance of s-expressions. Similar to <a href="https://srfi.schemers.org/srfi-110/">SRFI 110</a>, <a href="/srfi-49/">SRFI 49</a> and Python it
uses indentation to group expressions. Like <a href="https://srfi.schemers.org/srfi-110/">SRFI
110</a> wisp is general and homoiconic.
</p><p>Different from its predecessors, wisp only uses
the absolute minimum of additional syntax-elements which are required for
writing and exchanging arbitrary code-structures. As syntax elements it
only uses a colon surrounded by whitespace, the period followed by
whitespace as first code-character on the line and optional underscores
followed by whitespace at the beginning of the line.
</p><p>It resolves a limitation of <a href="https://srfi.schemers.org/srfi-110/">SRFI 110</a> and <a href="/srfi-49/">SRFI 49</a>, both of
which force the programmer to use a single argument per line if the
arguments to a procedure need to be continued after a
procedure-call.
</p><p>Wisp expressions can include arbitrary
s-expressions and as such provide backwards compatibility.
<blockquote>
<table>
<tr>
<th>wisp
<th>s-exp
<tr>
<td>
<pre>
<b>define</b> : <i>factorial</i> n
__ <b>if</b> : <i>zero?</i> n
____ . 1
____ <i>*</i> n : <i>factorial</i> (- n 1)
<i>display</i> : <i>factorial</i> 5
<i>newline</i>
</pre>
</td><td>
<pre>
(<b>define</b> (<i>factorial</i> n)
(<b>if</b> (<i>zero?</i> n)
1
(<i>*</i> n (<i>factorial</i> (- n 1)))))
(<i>display</i> (<i>factorial</i> 5))
(<i>newline</i>)
</pre>
</td></tr></th></th></tr></table>
</blockquote></p></blockquote></description><dc:creator>Arne Babenhauserheide</dc:creator><pubDate>Tue, 23 Jun 2015 12:00:00 -0800</pubDate></item><item><title>SRFI 125: Intermediate hash tables</title><link>https://srfi.schemers.org/srfi-125/srfi-125.html</link><guid>https://srfi.schemers.org/srfi-125</guid><description>SRFI 125 is now in <em>final</em> status.<blockquote> <p>This SRFI defines an interface to hash tables,
which are widely recognized as a fundamental data structure for a wide
variety of applications. A hash table is a data structure that:
<ul>
<li>Is disjoint from all other types.
</li><li>
Provides a mapping from objects known as
<em>keys</em> to corresponding objects known as
<em>values</em>.
<ul>
<li>Keys may be any Scheme objects in some
kinds of hash tables, but are restricted in other kinds.
</li><li>Values may be any Scheme objects.
</li></ul><li>
</li><li>Has no intrinsic order for the key-value
<em>associations</em> it contains.
</li><li>Provides an <em>equality predicate</em>
which defines when a proposed key is the same as an existing key. No
table may contain more than one value for a given key.
</li><li>Provides a <em>hash function</em> which maps
a candidate key into a non-negative exact integer.
</li><li>Supports mutation as the primary means of
setting the contents of a table.
</li><li>Provides key lookup and destructive update
in (expected) amortized constant time, provided a satisfactory hash
function is available.
</li><li>Does not guarantee that whole-table
operations work in the presence of concurrent mutation of the whole
hash table (values may be safely mutated).
</li></li><li></li></ul></p></blockquote></description><dc:creator>John Cowan and Will Clinger</dc:creator><pubDate>Thu, 28 May 2015 12:00:00 -0800</pubDate></item><item><title>SRFI 113: Sets and bags</title><link>https://srfi.schemers.org/srfi-113/srfi-113.html</link><guid>https://srfi.schemers.org/srfi-113</guid><description>SRFI 113 is now in <em>final</em> status.<blockquote> <p><em>Sets</em> and <em>bags</em> (also known as
multisets) are unordered collections that can contain any Scheme object.
Sets enforce the constraint that no two elements can be the same in the
sense of the set's associated <em>equality predicate</em>; bags do
not.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Fri, 28 Nov 2014 12:00:00 -0800</pubDate></item><item><title>SRFI 116: Immutable List Library</title><link>https://srfi.schemers.org/srfi-116/srfi-116.html</link><guid>https://srfi.schemers.org/srfi-116</guid><description>SRFI 116 is now in <em>final</em> status.<blockquote> <p>Scheme currently does not provide immutable
pairs corresponding to its existing mutable pairs, although most uses of
pairs do not exploit their mutability. The <a href="http://www.racket-lang.org">Racket</a> system takes the radical approach
of making Scheme's pairs immutable, and providing a minimal library of
mutable pairs with procedures named <code>mpair?, mcons, mcar, mcdr,
set-mcar!, set-mcdr!</code>. This SRFI takes the opposite approach of
leaving Scheme's pairs unchanged and providing a full set of routines for
creating and dealing with immutable pairs. The sample implementation is
portable (to systems with SRFI 9) and efficient.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Fri, 28 Nov 2014 12:00:00 -0800</pubDate></item><item><title>SRFI 115: Scheme Regular Expressions</title><link>https://srfi.schemers.org/srfi-115/srfi-115.html</link><guid>https://srfi.schemers.org/srfi-115</guid><description>SRFI 115 is now in <em>final</em> status.<blockquote> <p>This SRFI provides a library for matching
strings with regular expressions described using the SRE "Scheme Regular
Expression" notation first introduced by SCSH, and extended heavily by
IrRegex.</p></blockquote></description><dc:creator>Alex Shinn</dc:creator><pubDate>Mon, 14 Jul 2014 12:00:00 -0800</pubDate></item><item><title>SRFI 107: XML reader syntax</title><link>https://srfi.schemers.org/srfi-107/srfi-107.html</link><guid>https://srfi.schemers.org/srfi-107</guid><description>SRFI 107 is now in <em>final</em> status.<blockquote> <p>We specify a reader extension that reads data
in a superset of XML/HTML format, and produces conventional
S-expressions. We also suggest a possible semantics interpretation of how
these forms may be evaluated to produce XML-node values, but this is
non-normative.</p></blockquote></description><dc:creator>Per Bothner</dc:creator><pubDate>Sun, 22 Dec 2013 12:00:00 -0800</pubDate></item><item><title>SRFI 112: Environment Inquiry</title><link>https://srfi.schemers.org/srfi-112/srfi-112.html</link><guid>https://srfi.schemers.org/srfi-112</guid><description>SRFI 112 is now in <em>final</em> status.<blockquote> <p>This is a proposal for environment inquiry,
providing human-readable information <em>at run time</em> about the
hardware and software configuration on which a Scheme program is being
executed. They are mostly based on Common Lisp, with additions from the
Posix <code>uname()</code> system call.</p></blockquote></description><dc:creator>John Cowan</dc:creator><pubDate>Thu, 12 Sep 2013 12:00:00 -0800</pubDate></item><item><title>SRFI 110: Sweet-expressions (t-expressions)</title><link>https://srfi.schemers.org/srfi-110/srfi-110.html</link><guid>https://srfi.schemers.org/srfi-110</guid><description>SRFI 110 is now in <em>final</em> status.<blockquote> <p>This SRFI describes a set of syntax extensions
for Scheme, called sweet-expressions (t-expressions), that has the same