[fset-cvs] r13 - trunk/Code
sburson at common-lisp.net
sburson at common-lisp.net
Mon Jun 11 01:31:10 UTC 2007
Author: sburson
Date: Sun Jun 10 21:31:10 2007
New Revision: 13
Modified:
trunk/Code/defs.lisp
trunk/Code/fset.lisp
Log:
Fixed a minor bug in the bag printer. Also, added `fset-user' package for
convenient experimentation with FSet.
Modified: trunk/Code/defs.lisp
==============================================================================
--- trunk/Code/defs.lisp (original)
+++ trunk/Code/defs.lisp Sun Jun 10 21:31:10 2007
@@ -63,6 +63,31 @@
#:alist))
+;;; A convenient package for experimenting with FSet. Also serves as an example
+;;; of how one might create a package for code to be written using FSet. Note,
+;;; though, that for each of the shadowing-imported symbols, it's up to you whether
+;;; to import the FSet version or the CL version. It's also up to you, of course,
+;;; whether you want to use GMap and New-Let.
+;;; You may also wish to do:
+;;; (setq *readtable* *fset-readtable*)
+(defpackage :fset-user
+ (:use :cl :fset :gmap :new-let)
+ (:shadowing-import-from :new-let #:let #:cond)
+ (:shadowing-import-from :fset
+ ;; Shadowed type/constructor names
+ #:set #:map
+ ;; Shadowed set operations
+ #:union #:intersection #:set-difference
+ ;; Shadowed sequence operations
+ #:first #:last #:subseq #:reverse #:sort #:stable-sort
+ #:find #:find-if #:find-if-not
+ #:count #:count-if #:count-if-not
+ #:position #:position-if #:position-if-not
+ #:remove #:remove-if #:remove-if-not
+ #:substitute #:substitute-if #:substitute-if-not
+ #:some #:every #:notany #:notevery))
+
+
;;; The seq implementation tries to use strings for leaf vectors when possible.
;;; In some Lisp implementations, there are two kinds of strings; but in some
;;; of these, the larger form takes as much space as a general vector.
Modified: trunk/Code/fset.lisp
==============================================================================
--- trunk/Code/fset.lisp (original)
+++ trunk/Code/fset.lisp Sun Jun 10 21:31:10 2007
@@ -1230,7 +1230,7 @@
(count-if #'(lambda (x) (not (funcall pred x))) s :key key)))
(defun print-bag (bag stream level)
- (format stream "#{@ ")
+ (format stream "#{% ")
(let ((i 0))
(do-bag (x n bag)
(when (> i 0)
@@ -1241,13 +1241,13 @@
(incf i)
(if (> n 1)
(progn
- (format stream "#@")
+ (format stream "#%")
(write `(,x ,n) :stream stream
:level (and *print-level* (- *print-level* level))))
(write x :stream stream :level (and *print-level* (- *print-level* level)))))
(when (> i 0)
(format stream " ")))
- (format stream "@}"))
+ (format stream "%}"))
;;; Note that this yields each element potentially multiple times. (GMap needs
More information about the Fset-cvs
mailing list