Issue #417 - Clean up and provide aliases for all SRFI's

This commit is contained in:
Justin Ethier 2021-03-24 22:27:34 -04:00
parent a3ea98f90c
commit 6529365669

View file

@ -78,16 +78,47 @@
) )
(begin (begin
;; Experimental alias functionality ;; Alias friendlier names to SRFI libraries
(define *aliases* (define *srfi-aliases*
`( ((scheme list) . (srfi ,(string->symbol "1"))) '( ;; Red Edition
((scheme hash-table) . (srfi ,(string->symbol "69"))) ((scheme list) (srfi 1))
)) ((scheme vector) (srfi 133))
((scheme sort) (srfi 132))
((scheme set) (srfi 113))
((scheme charset) (srfi 14))
;((scheme hash-table) (srfi 125))
((scheme hash-table) (srfi 69)) ;; May upgrade this later
((scheme ilist) (srfi 116))
((scheme rlist) (srfi 101))
((scheme ideque) (srfi 134))
;((scheme text) (srfi 135))
((scheme text) (srfi 152)) ;; May replace with 135 later
((scheme generator) (srfi 121))
((scheme lseq) (srfi 127))
((scheme stream) (srfi 41))
((scheme box) (srfi 111))
((scheme list-queue) (srfi 117))
((scheme ephemeron) (srfi 124))
((scheme comparator) (srfi 128))
;; Other SRFI's in Cyclone core
((cyclone and-let*) (srfi 2))
((cyclone receive) (srfi 8))
((cyclone threads) (srfi 18))
((cyclone random) (srfi 27))
((cyclone format) (srfi 28))
((cyclone integer-bits) (srfi 60))
((cyclone socket) (srfi 106))
((cyclone fixnum) (srfi 143))
;; Other SRFI's in Winds packages
((cyclone hooks) (srfi 173))
((cyclone chain) (srfi 197))
((cyclone assumptions) (srfi 145))
((cyclone cut) (srfi 26)) ))
(define (lib:import-from-alias import) (define (lib:rename-aliases import)
(let ((conv (assoc import *aliases*))) (let ((conv (assoc import *srfi-aliases*)))
(if conv (if conv
(cdr conv) (%lib:list->import-set (cadr conv))
import))) import)))
;; END aliases ;; END aliases
@ -104,8 +135,11 @@
;; Convert a raw list to an import set. For example, a list might be ;; Convert a raw list to an import set. For example, a list might be
;; (srfi 18) containing the number 18. An import set contains only symbols ;; (srfi 18) containing the number 18. An import set contains only symbols
;; or sub-lists. ;; or sub-lists.
;;
;; This is also a convenient time to do any name conversions from an
;; alias to the actual library.
(define (lib:list->import-set lis) (define (lib:list->import-set lis)
(lib:import-from-alias (lib:rename-aliases
(%lib:list->import-set lis))) (%lib:list->import-set lis)))
(define (%lib:list->import-set lis) (define (%lib:list->import-set lis)