diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index 0afe6e34cf..e808d9f21d 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -1,6 +1,5 @@ + 0.84: -- mach_signal not working, right now - fix contribs: boids, automata - sometimes darcs get fails with the httpd - gdb triggers 'mutliple i/o ops on port' error @@ -20,12 +19,12 @@ - see if alien calls can be made faster - faster sequence= for UI - remove literal table -- generic 'define ( asset def -- )' ======================================================================== + ui: +- doc front page: document stack effect notation - better doc for accumulate, link from tree - we have trouble drawing rectangles - the UI listener has a shitty design. perhaps it should not call out @@ -72,6 +71,7 @@ + module system: +- generic 'define ( asset def -- )' - track individual method usages - C types should be words - TYPEDEF: float { ... } { ... } ; ==> \ float T{ c-type ... } "c-type" swp diff --git a/library/bootstrap/boot-stage2.factor b/library/bootstrap/boot-stage2.factor index 95a72813e7..69e9480c64 100644 --- a/library/bootstrap/boot-stage2.factor +++ b/library/bootstrap/boot-stage2.factor @@ -39,6 +39,8 @@ parser sequences sequences-internals words ; [ \ number= compile \ + compile + \ nth compile + \ set-nth compile \ = compile { "kernel" "sequences" "assembler" } compile-vocabs diff --git a/library/collections/hashtables.factor b/library/collections/hashtables.factor index a69edd65b8..c6d43b33f2 100644 --- a/library/collections/hashtables.factor +++ b/library/collections/hashtables.factor @@ -231,9 +231,8 @@ M: hashtable clone ( hash -- hash ) : hashtable= ( hash hash -- ? ) 2dup subhash? >r swap subhash? r> and ; -M: hashtable = ( obj hash -- ? ) +M: hashtable equal? ( obj hash -- ? ) { - { [ 2dup eq? ] [ 2drop t ] } { [ over hashtable? not ] [ 2drop f ] } { [ 2dup [ hash-size ] 2apply number= not ] [ 2drop f ] } { [ t ] [ hashtable= ] } diff --git a/library/collections/sequences-epilogue.factor b/library/collections/sequences-epilogue.factor index a8af00e366..4287a468d4 100644 --- a/library/collections/sequences-epilogue.factor +++ b/library/collections/sequences-epilogue.factor @@ -127,17 +127,22 @@ M: object like drop ; : sequence= ( seq seq -- ? ) 2dup [ length ] 2apply tuck number= - [ (mismatch) -1 number= ] [ 3drop f ] if ; + [ (mismatch) -1 number= ] [ 3drop f ] if ; inline + +M: array equal? ( obj seq -- ? ) + over array? [ sequence= ] [ 2drop f ] if ; + +M: quotation equal? ( obj seq -- ? ) + over quotation? [ sequence= ] [ 2drop f ] if ; + +M: sbuf equal? ( obj seq -- ? ) + over sbuf? [ sequence= ] [ 2drop f ] if ; + +M: vector equal? ( obj seq -- ? ) + over vector? [ sequence= ] [ 2drop f ] if ; UNION: sequence array string sbuf vector quotation ; -M: sequence = ( obj seq -- ? ) - 2dup eq? [ - 2drop t - ] [ - over type over type eq? [ sequence= ] [ 2drop f ] if - ] if ; - M: sequence hashcode ( hash -- n ) dup empty? [ drop 0 ] [ first hashcode ] if ; diff --git a/library/collections/strings.factor b/library/collections/strings.factor index 87fc54a4b3..22cb40d0ec 100644 --- a/library/collections/strings.factor +++ b/library/collections/strings.factor @@ -4,7 +4,7 @@ IN: strings USING: generic kernel kernel-internals math sequences sequences-internals ; -M: string = ( obj str -- ? ) +M: string equal? ( obj str -- ? ) over string? [ over hashcode over hashcode number= [ sequence= ] [ 2drop f ] if diff --git a/library/compiler/alien/aliens.factor b/library/compiler/alien/aliens.factor index 4e45591025..90507a230d 100644 --- a/library/compiler/alien/aliens.factor +++ b/library/compiler/alien/aliens.factor @@ -8,7 +8,7 @@ sequences ; UNION: c-ptr byte-array alien ; -M: alien = ( obj obj -- ? ) +M: alien equal? ( obj obj -- ? ) over alien? [ 2dup [ expired? ] 2apply 2dup or [ 2swap 2drop diff --git a/library/compiler/inference/dataflow.factor b/library/compiler/inference/dataflow.factor index 4578a56971..f7981ff215 100644 --- a/library/compiler/inference/dataflow.factor +++ b/library/compiler/inference/dataflow.factor @@ -12,7 +12,7 @@ TUPLE: node param shuffle classes literals history successor children ; -M: node = eq? ; +M: node equal? eq? ; : make-node ( param in-d out-d in-r out-r node -- node ) [ >r swapd f f f f f r> set-delegate ] keep ; diff --git a/library/compiler/inference/shuffle.factor b/library/compiler/inference/shuffle.factor index 3f783845c6..0e49442d0c 100644 --- a/library/compiler/inference/shuffle.factor +++ b/library/compiler/inference/shuffle.factor @@ -17,7 +17,7 @@ C: value ( obj -- value ) M: value hashcode value-uid ; -M: value = eq? ; +M: value equal? eq? ; M: integer value-uid ; diff --git a/library/generic/tuple.factor b/library/generic/tuple.factor index 2e91e7be9e..ccefc91849 100644 --- a/library/generic/tuple.factor +++ b/library/generic/tuple.factor @@ -80,11 +80,10 @@ TUPLE: check-tuple class ; M: tuple clone ( tuple -- tuple ) (clone) dup delegate clone over set-delegate ; -M: tuple hashcode ( tuple -- n ) class hashcode ; +M: tuple hashcode ( tuple -- n ) 2 slot hashcode ; -M: tuple = ( obj tuple -- ? ) - 2dup eq? - [ 2drop t ] [ over tuple? [ tuple= ] [ 2drop f ] if ] if ; +M: tuple equal? ( obj tuple -- ? ) + over tuple? [ tuple= ] [ 2drop f ] if ; : (delegates) ( obj -- ) [ dup delegate (delegates) , ] when* ; diff --git a/library/kernel.factor b/library/kernel.factor index ec20a6897a..4e1b7cd1f4 100644 --- a/library/kernel.factor +++ b/library/kernel.factor @@ -10,8 +10,11 @@ USING: generic kernel-internals math math-internals ; GENERIC: hashcode ( obj -- n ) M: object hashcode drop 0 ; -GENERIC: = ( obj obj -- ? ) -M: object = eq? ; +GENERIC: equal? ( obj obj -- ? ) +M: object equal? eq? ; + +: = ( obj obj -- ? ) + 2dup eq? [ 2drop t ] [ equal? ] if ; inline GENERIC: <=> ( obj1 obj2 -- n ) diff --git a/library/math/complex.factor b/library/math/complex.factor index b642d56ddf..78a02c7741 100644 --- a/library/math/complex.factor +++ b/library/math/complex.factor @@ -13,7 +13,7 @@ UNION: number real complex ; M: real real ; M: real imaginary drop 0 ; -M: number = ( n n -- ? ) number= ; +M: number equal? ( n n -- ? ) number= ; : rect> ( xr xi -- x ) over real? over real? and [ diff --git a/library/quotations.factor b/library/quotations.factor index 172d3d69e0..bd8a13aa42 100644 --- a/library/quotations.factor +++ b/library/quotations.factor @@ -4,7 +4,7 @@ IN: kernel USING: arrays generic kernel-internals math namespaces sequences sequences-internals words ; -M: wrapper = +M: wrapper equal? over wrapper? [ [ wrapped ] 2apply = ] [ 2drop f ] if ; M: quotation clone (clone) ; diff --git a/library/ui/freetype/freetype-gl.factor b/library/ui/freetype/freetype-gl.factor index 8241d3cca2..52cf0f3ede 100644 --- a/library/ui/freetype/freetype-gl.factor +++ b/library/ui/freetype/freetype-gl.factor @@ -25,7 +25,7 @@ SYMBOL: open-fonts ! sprites is a vector. TUPLE: font ascent descent height handle widths ; -M: font = eq? ; +M: font equal? eq? ; : close-font ( font -- ) font-handle FT_Done_Face ; diff --git a/library/ui/gadgets.factor b/library/ui/gadgets.factor index dbc140b872..ceb1968210 100644 --- a/library/ui/gadgets.factor +++ b/library/ui/gadgets.factor @@ -50,7 +50,7 @@ pref-dim parent children orientation state visible? root? clipped? grafted? interior boundary ; -M: gadget = eq? ; +M: gadget equal? eq? ; : gadget-child gadget-children first ;