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)

This SRFI also contains reader macro described below this section.

SRFI-6 (srfi :6 basic-string-ports)
SRFI-8 (srfi :8 receive)
SRFI-13 (srfi :13 strings)
SRFI-14 (srfi :14 char-set)
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 regexp)

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

The name regexp is taken from reference implementation provided on Chibi Scheme.

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

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

The name list-queue is taken from sample implementation.

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 intermediate-hash-tables)

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

The name intermediate-hash-tables is taken from the SRFI's description: Intermediate hash tables. It is constructed with the same manner as SRFI-69.

SRFI-126 (srfi :126 hashtables)

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

SRFI-127 (srfi :127 lseqs)

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

The name lseqs is taken from sample implementation.

SRFI-128 (srfi :128 comparators)

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

The name comparators is taken from sample implementation.

The library is implemented on top of SRFI-114. So comparators created by this SRFI's API can be used SRFI-114 APIs. But not other way around.

SRFI-129 (srfi :129 titlecase)

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

The name titlecase is taken from sample implementation.

SRFI-130 (srfi :130 strings)

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

The name strings is taken from SRFI-13 since this SRFI is based on SRFI-13.

SRFI-131 (srfi :131 records)

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

The name records is taken from sample implementation.

SRFI-132 (srfi :132 sorting)

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

The name sorting is taken from sample implementation.

SRFI-133 (srfi :133 vectors)

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

The name vectors is taken from sample implementation.

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)

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

The name integer-division is taken from the name of the SRFI.

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)

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

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

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)

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

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

SRFI-151 (srfi :151 bitwise)

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

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

SRFI-152 (srfi :152 strings)

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

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

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-156 (srfi :156 infix-predicates)

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

The name infix-predicates is taken from the meaning of the SRFI.

SRFI-158 (srfi :158 generators-and-accumulators)

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

The name generators-and-accumulators is taken from the name of the SRFI.

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