From 78d82e4d12549afb9d14b84acc034a557857352c Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Sat, 1 Feb 2014 22:45:59 +0900 Subject: [PATCH] add srfi-1 prototype --- piclib/srfi/1.scm | 71 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 piclib/srfi/1.scm diff --git a/piclib/srfi/1.scm b/piclib/srfi/1.scm new file mode 100644 index 00000000..0b1ea61e --- /dev/null +++ b/piclib/srfi/1.scm @@ -0,0 +1,71 @@ +(define-library (srfi 1) + (import (scheme base)) + + ;; # Constructors + ;; cons list + ;; xcons cons* make-list list-tabulate + ;; list-copy circular-list iota + + ;; # Predicates + ;; pair? null? + ;; proper-list? cirtular-list? dotted-list? + ;; not-pair? null-list? + ;; list= + + ;; # Selectors + ;; car cdr ... cddadr cddddr list-ref + ;; first second third fourth fifth sixth seventh eighth ninth tenth + ;; car+cdr + ;; take drop + ;; take-right drop-right + ;; take! drop-right! + ;; split-at split-at! + ;; last last-pair + + ;; # Miscellaneous + ;; length length+ + ;; append concatenate reverse + ;; append! concatenate! reverse! + ;; append-reverse append-reverse! + ;; zip unzip1 unzip2 unzip3 unzip4 unzip5 + ;; count + + ;; # Fold, unfold & map + ;; map for-each + ;; fold unfold pair-fold reduce + ;; fold-right unfold-right pair-fold right reduce-right + ;; append-map append-map! + ;; map! pair-for-each filter-map map-in-order + + ;; # Filtering & partitioning + ;; filter partition remove + ;; filter! partition! remove! + + ;; # Searching + ;; member memq memv + ;; find find-tail + ;; any every + ;; list-index + ;; take-while drop-while take-while! + ;; span break span! break! + + ;; # Deleting + ;; delete delete-duplicates + ;; delete! delete-duplicates! + + ;; # Association lists + ;; assoc assq assv + ;; alist-cons alist-copy + ;; alist-delete alist-delete! + + ;; # Set operations on lists + ;; lset<= lset= lset-adjoin + ;; lset-union lset-union! + ;; lset-intersection lset-intersection! + ;; lset-difference lset-difference! + ;; lset-xor lset-xor! + ;; lset-diff+intersenction lset-diff+intersection! + + ;; # Primitive side-effects + ;; set-car! set-cdr! + )