From 7b0b25d63ed483cc9ccd9525b5904feda65dc807 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Sun, 28 Oct 2007 10:43:54 +0000 Subject: * Makefile.pamphlet (category.$(FASLEXT)): New rule. (<>): Remove. * category.boot.pamphlet: Push into package "BOOT". Replace ASSOC with assoc throughout. (mkCategory): Fix syntax. * i-coerce.boot.pamphlet (stripUnionTags): Move to g-util.boot. (isTaggeUnion): Likewise. (getUnionOrRecordTags): Likewise. * i-util.boot.pamphlet (wrap): Move to i-object.boot. (isWrapped): Likewise. (unwrap): Likewise. (wrapped2Quote): Likewise. (quote2Wrapped): Likewise. (removeQuote): Likewise. (TruthP): Move to g-util.boot. --- src/interp/g-util.boot | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/interp/g-util.boot') diff --git a/src/interp/g-util.boot b/src/interp/g-util.boot index 5908287c..128e683b 100644 --- a/src/interp/g-util.boot +++ b/src/interp/g-util.boot @@ -51,6 +51,28 @@ PPtoFile(x, fname) == -- Convert an arbitrary lisp object to canonical boolean. bool x == NULL NULL x + +TruthP x == + --True if x is a predicate that's always true + x is nil => nil + x=true => true + x is ['QUOTE,:.] => true + nil + +--% Record and Union utils. + +stripUnionTags doms == + [if dom is [":",.,dom'] then dom' else dom for dom in doms] + +isTaggedUnion u == + u is ['Union,:tl] and tl and first tl is [":",.,.] and true + +getUnionOrRecordTags u == + tags := nil + if u is ['Union, :tl] or u is ['Record, :tl] then + for t in tl repeat + if t is [":",tag,.] then tags := cons(tag, tags) + tags --% Various lispy things -- cgit v1.2.3