Supporting SRFIs

SRFI is a great libraries, so there is no reason not to support. Without exception Sagittarius also supports several SRFIs. The following list is the supported SRFI. Documents are not written for now. So if you need to refer the functions, please look for SRFI's site. I might write it later.

For now, I just put pointer to the SRFI's web site

SRFI number Library name
SRFI-0 (srfi :0 cond-expand)
SRFI-1 (srfi :1 lists)
SRFI-2 (srfi :2 and-let*)
SRFI-4 (srfi :4 numeric-vectors) SRFI-4
SRFI-6 (srfi :6 basic-string-ports)
SRFI-8 (srfi :8 receive)
SRFI-11 (srfi :11 let-values)
SRFI-13 (srfi :13 strings)
SRFI-14 (srfi :14 char-set)
SRFI-16 (srfi :16 case-lambda)
SRFI-17 (srfi :17 generalized-set!)
SRFI-18 (srfi :18 multithreading)
SRFI-19 (srfi :19 time)
SRFI-22 This SRFI does not provide any library.
SRFI-23 (srfi :23 error)
SRFI-25 (srfi :25 multi-dimensional-arrays)
SRFI-26 (srfi :26 cut)
SRFI-27 (srfi :27 random-bits)
SRFI-29 (srfi :27 localization)
SRFI-31 (srfi :31 rec)
SRFI-37 (srfi :37 args-fold)
SRFI-38 (srfi :38 with-shared-structure)
SRFI-39 (srfi :39 parameters)
SRFI-41 (srfi :41 streams)
SRFI-42 (srfi :42 eager-comprehensions)
SRFI-43 (srfi :43 vectors)
SRFI-45 (srfi :45 lazy)
SRFI-49 (srfi :49)
SRFI-57 (srfi :57 records)
SRFI-60 (srfi :60 integer-bits)
SRFI-61 (srfi :61 cond) builtin
SRFI-64 (srfi :64 testing)
SRFI-69 (srfi :69 basic-hash-tables)
SRFI-78 (srfi :78 lightweight-testing)
SRFI-86 (srfi :86 mu-and-nu)
SRFI-87 (srfi :87 case)
SRFI-98 (srfi :98 os-environment-variables)
SRFI-99 (srfi :99 records)
SRFI-100 (srfi :100 define-lambda-object) longname
SRFI-101 (srfi :101 random-access-lists)
SRFI-105 (srfi :105) SRFI-105
SRFI-106 (srfi :106 socket)
SRFI-110 (srfi :110) SRFI-110
SRFI-111 (srfi :111 boxes) longname
SRFI-112 (srfi :112 inquery) longname
SRFI-113 (srfi :113 sets) longname
SRFI-114 (srfi :114 comparators) longname
SRFI-115 (srfi :115 regex) longname
SRFI-116 (srfi :116 ilists) longname
SRFI-117 (srfi :117 list-queues) longname
SRFI-120 (srfi :120 timer) longname
SRFI-121 (srfi :121 generators) longname
SRFI-123 (srfi :123 generic-ref)
SRFI-124 (srfi :124 ephemerons) longname
SRFI-125 (srfi :125 hashtables) longname
SRFI-126 (srfi :126 r6rs-hashtables) longname
SRFI-127 (srfi :127 lazy-sequences) longname
SRFI-128 (srfi :128 comparators) longname
SRFI-129 (srfi :129 titlecase) longname
SRFI-130 (srfi :130 string-cursors) longname
SRFI-131 (srfi :131 records) longname
SRFI-132 (srfi :132 sorting) longname
SRFI-133 (srfi :133 vectors) longname
SRFI-134 (srfi :134 ideque) longname
SRFI-135 (srfi :135 texts) longname
SRFI-139 (srfi :139 syntax-parameters) longname
SRFI-141 (srfi :141 integer-division) longname
SRFI-142 (srfi :142 bitwise) longname
SRFI-143 (srfi :143 fixnums) longname
SRFI-144 (srfi :144 flonums) longname
SRFI-145 (srfi :145 assumptions) longname
SRFI-146 (srfi :146 mapping) longname and (srfi :146 hash)
SRFI-151 (srfi :151 bitwise-operations) longname
SRFI-152 (srfi :152 strings)
SRFI-154 (srfi :154 dynamic-extents) longname
SRFI-156 (srfi :156 predicate-combiners) longname
SRFI-158 (srfi :158 generators-and-accumulators) longname
SRFI-159 (srfi :159)
SRFI-160 (srfi :160) SRFI-160
SRFI-193 (srfi :193 command-line) longname
SRFI-197 (srfi :197 pipeline) longname
SRFI-219 (srfi :219 define)[^longname] builtin


This SRFI also contains reader macro described below this section.


The library exports srfi-49-read, srfi-49-load procedures. And also be able to replace reader, For more detail, see (sagittarius reader) - reader macro library.


The syntax provided by this SRFI is supported by the builtin syntax. This SRFI can be used for portability.


The long name is Sagittarius specific and the specified library name is (srfi :_number_). So for the portability it's better to use the specified one. The long name is taken from the SRFI name.


The library exports curly-infix-read and neoteric-read procedures. These procedures read SRFI-105 the infix style code that SRFI-105 specifying. And this also exports reader macros, you can activate it with #!read-macro=srfi/:105 or #!read-macro=curly-infix.
Even though the specification said it MUST support #!curly-infix, however the library just ignore and not activate the reader macros. So you need to explicitly write the one mentioned above. To keep your code portable between implementations that support this SRFI, you need to write both style as following;

;; write both

The order doesn't matter, Sagittarius just ignores the latter style.


The library exports a replacible reader. To use it write following hash-bang directives.

;; write both for compatibility

The order doesn't matter, Sagittarius just ignores the latter style.


This library doesn't extend comparisons, thus it behaves as the SRFI specifies. (e.g. Passing 0 or 1 argument to string=? raises an error)


The short name is Sagittarius specific which provides all the bindings from the below libraries which are specified in the SRFI:

  • (srfi :160 base)

  • (srfi :160 u8)

  • (srfi :160 s8)

  • (srfi :160 u16)

  • (srfi :160 s16)

  • (srfi :160 u32)

  • (srfi :160 s32)

  • (srfi :160 u64)

  • (srfi :160 s64)

  • (srfi :160 f32)

  • (srfi :160 f64)

  • (srfi :160 c64)

  • (srfi :160 c128)

Each library can be imported like this:

(import (srfi :1))

So you don't have to type the long name.

All libraries have R7RS style library name as well. So SRFI-1 can be imported like this:

(import (srfi 1))

  1. Reader macros for SRFIs