Top

9Supporting 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) This SRFI also contains reader macro described below this section.
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)

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.

SRFI-57 (srfi :57 records)
SRFI-60 (srfi :60 integer-bits)
SRFI-61 This SRFI is supported by builtin cond
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) The long name is Sagittarius specific and the specified library name is (srfi :100). So for the portability it's better to use the (srfi :100).

The name define-lambda-object is taken from the SRFI name.

SRFI-101 (srfi :101 random-access-lists) The long name is Sagittarius specific and the specified library name is (srfi :101). So for the portability it's better to use the (srfi :101).

The name random-access-lists is taken from the sample implementation.

SRFI-105 (srfi :105)

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
#!read-macro=curly-infix
#!curly-infix
The order doesn't matter, Sagittarius just ignores the latter style.
SRFI-106 (srfi :106 socket)
SRFI-110 (srfi :110)

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

;; write both for compatibility
#!reader=sweet
#!sweet
The order doesn't matter, Sagittarius just ignores the latter style.
SRFI-111 (srfi :111 boxes)

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

The name boxes is taken from R7RS-large library name.

SRFI-112 (srfi :112 inquery)

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

The name inquery is taken from R7RS-large library name.

SRFI-113 (srfi :113 sets)

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

The name sets is taken from its name.

SRFI-114 (srfi :114 comparators)

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

The name comparators is taken from its name.

SRFI-115 (srfi :115 regex)
SRFI-116 (srfi :116 ilists)

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

The name ilists is taken from sample implementation.

SRFI-117 (srfi :117 list-queues)
SRFI-120 (srfi :120 timer)

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

The name timer is taken from sample implementation.

SRFI-121 (srfi :121 generators)

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

The name generators is taken from sample implementation.

SRFI-123 (srfi :123 generic-ref)

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

The name generic-ref is taken from the SRFI discussion. Re: SRFI-97 name

SRFI-124 (srfi :124 ephemerons)

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

The name ephemerons is taken from the example implementation.

Current implementation of ephemerons has the same issue as the one Chibi has. It is described in the SRFI document.

SRFI-125 (srfi :125 hashtables)
SRFI-126 (srfi :126 r6rs-hashtables)
SRFI-127 (srfi :127 lazy-sequences)
SRFI-128 (srfi :128 comparators)
SRFI-129 (srfi :129 titlecase)
SRFI-130 (srfi :130 string-cursors)
SRFI-131 (srfi :131 records)
SRFI-132 (srfi :132 sorting)
SRFI-133 (srfi :133 vectors)
SRFI-134 (srfi :134 ideque)

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

The name ideque is taken from sample implementation.

SRFI-135 (srfi :135 texts)

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

The name texts is taken from sample implementation.

SRFI-139 (srfi :139 syntax-parameters)

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

The name syntax-parameters is taken from sample implementation.

SRFI-141 (srfi :141 integer-division)
SRFI-142 (srfi :142 bitwise)

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

The name bitwise is taken from the name of the SRFI.

This SRFI is deprecated by SRFI-151.

SRFI-143 (srfi :143 fixnums)
SRFI-144 (srfi :144 flonums)

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

The name flonums is taken from the name of the SRFI.

SRFI-145 (srfi :145 assumptions)
SRFI-146 (srfi :146 mapping) and (srfi :146 hash)

The long name is Sagittarius specific and the specified library name is (srfi :146) and (srfi :146 hash). So for the portability it's better to use them.

The name mapping is taken from the name of the SRFI.

SRFI-151 (srfi :151 bitwise-operations)
SRFI-152 (srfi :152 strings) 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)
SRFI-154 (srfi :154 dynamic-extents) The long name is Sagittarius specific and the specified library name is (srfi :154). So for the portability it's better to use them.

The name dynamic-extents is taken from the name of the SRFI.

SRFI-156 (srfi :156 predicate-combiners)
SRFI-158 (srfi :158 generators-and-accumulators)
SRFI-159 (srfi :159)
SRFI-160 (srfi :160)

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)
SRFI-197 (srfi :197 pipeline)

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

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))

Top