On Jun 24, 2009, at 11:07 AM, Nicolas Oury wrote:
I think it should be possible to write (create-struct) and have an emptystructure definition returned. With (struct (create-struct)) more or less equivalent to creating an empty map.
I agree that this would fit with the "graceful underflow" model that's common elsewhere in Clojure. It would involve modifying both create- struct and struct to accept the degenerate case.
If the changes for this are done at the Clojure level in core.clj, they might look like this:
(defn create-struct "Returns a structure basis object or nil if no keys supplied." [& keys] (when keys (clojure.lang.PersistentStructMap/createSlotMap keys))) (defn struct "Returns a new structmap instance with the keys of the structure-basis. vals must be supplied for basis keys in order - where values are not supplied they will default to nil." [s & vals] (if s (clojure.lang.PersistentStructMap/construct s vals) {}))This would break the current (perhaps unimportant) invariant that struct returns a PersistentStructMap. If keeping that invariant is desirable, similar changes could be made within PersistentStructMap.java instead.
--Steve
smime.p7s
Description: S/MIME cryptographic signature