fix object /\\ number

cvs
Slava Pestov 2004-12-23 23:46:21 +00:00
parent 7101e12b33
commit 74b063e3ad
4 changed files with 8 additions and 3 deletions

View File

@ -162,6 +162,9 @@ SYMBOL: object
: type-union ( list list -- list )
append prune [ > ] sort ;
: type-intersection ( list list -- list )
intersection [ > ] sort ;
: class-or ( class class -- class )
#! Return a class that both classes are subclasses of.
swap builtin-supertypes
@ -173,7 +176,7 @@ SYMBOL: object
#! error if this is impossible.
over builtin-supertypes
over builtin-supertypes
intersection dup [
type-intersection dup [
nip nip classes get hash [ object ] unless*
] [
drop [
@ -187,4 +190,4 @@ SYMBOL: object
dup builtin-supertypes [ > ] sort
classes get set-hash ;
global [ <namespace> classes set ] bind
global [ classes get [ <namespace> classes set ] unless ] bind

View File

@ -37,7 +37,6 @@ USE: strings
USE: vectors
USE: words
USE: hashtables
USE: prettyprint
: with-dataflow ( param op [ in | out ] quot -- )
#! Take input parameters, execute quotation, take output

View File

@ -136,3 +136,5 @@ M: very-funny gooey sq ;
[ integer ] [ fixnum bignum class-or ] unit-test
[ integer ] [ fixnum integer class-or ] unit-test
[ rational ] [ ratio integer class-or ] unit-test
[ number ] [ number object class-and ] unit-test
[ number ] [ object number class-and ] unit-test

View File

@ -203,3 +203,4 @@ SYMBOL: sym-test
[ [ [ cons ] [ cons ] ] ] [ [ uncons cons ] infer ] unit-test
[ [ [ object ] [ object ] ] ] [ [ dup [ car ] when ] infer ] unit-test
[ [ [ vector ] [ vector ] ] ] [ [ vector-clone ] infer ] unit-test
[ [ [ number ] [ number ] ] ] [ [ dup + ] infer ] unit-test