From 80bd0feaef507804fde16a310c1fd6b7c8a7084b Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Thu, 24 Oct 2019 14:12:26 -0700 Subject: [PATCH] classes.algebra: change (flatten-class) to use arrays. --- core/classes/algebra/algebra.factor | 4 ++-- core/classes/builtin/builtin.factor | 2 +- core/classes/intersection/intersection.factor | 4 ++-- core/classes/tuple/tuple.factor | 2 +- core/classes/union/union.factor | 3 +-- core/generic/single/single.factor | 3 +-- 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/core/classes/algebra/algebra.factor b/core/classes/algebra/algebra.factor index 8b92932adc..a01bc3ff54 100644 --- a/core/classes/algebra/algebra.factor +++ b/core/classes/algebra/algebra.factor @@ -288,5 +288,5 @@ ERROR: topological-sort-failed ; [ ] [ [ class<= ] most ] map-reduce ] if-empty ; -: flatten-class ( class -- assoc ) - [ (flatten-class) ] H{ } make ; +: flatten-class ( class -- seq ) + [ (flatten-class) ] { } make members ; diff --git a/core/classes/builtin/builtin.factor b/core/classes/builtin/builtin.factor index 72178f62f2..74c868a17a 100644 --- a/core/classes/builtin/builtin.factor +++ b/core/classes/builtin/builtin.factor @@ -26,7 +26,7 @@ M: builtin-class rank-class drop 0 ; M: builtin-class instance? [ tag ] [ class>type ] bi* eq? ; -M: builtin-class (flatten-class) dup ,, ; +M: builtin-class (flatten-class) , ; M: builtin-class (classes-intersect?) eq? ; diff --git a/core/classes/intersection/intersection.factor b/core/classes/intersection/intersection.factor index 1e423a472f..bd18ca61b6 100644 --- a/core/classes/intersection/intersection.factor +++ b/core/classes/intersection/intersection.factor @@ -46,9 +46,9 @@ M: intersection-class (flatten-class) M: anonymous-intersection (flatten-class) participants>> [ full-cover ] [ - [ flatten-class keys ] + [ flatten-class ] [ intersect-flattened-classes ] map-reduce - [ dup ,, ] each + % ] if-empty ; M: anonymous-intersection class-name diff --git a/core/classes/tuple/tuple.factor b/core/classes/tuple/tuple.factor index d7362c83c1..ec6fc5f76c 100644 --- a/core/classes/tuple/tuple.factor +++ b/core/classes/tuple/tuple.factor @@ -358,7 +358,7 @@ M: tuple-class rank-class drop 1 ; M: tuple-class instance? dup echelon-of layout-class-offset tuple-instance? ; -M: tuple-class (flatten-class) dup ,, ; +M: tuple-class (flatten-class) , ; M: tuple-class (classes-intersect?) { diff --git a/core/classes/union/union.factor b/core/classes/union/union.factor index 05bb9bee3d..b90d756bce 100644 --- a/core/classes/union/union.factor +++ b/core/classes/union/union.factor @@ -22,8 +22,7 @@ M: class union-of-builtins? drop f ; : fast-union-mask ( class -- n ) - [ 0 ] dip flatten-class - [ drop class>type 2^ bitor ] assoc-each ; + flatten-class 0 [ class>type 2^ bitor ] each ; : empty-union-predicate-quot ( class -- quot ) drop [ drop f ] ; diff --git a/core/generic/single/single.factor b/core/generic/single/single.factor index bef4a22765..bc255e72ee 100644 --- a/core/generic/single/single.factor +++ b/core/generic/single/single.factor @@ -81,8 +81,7 @@ C: predicate-engine ] change-at ; : flatten-method ( method class assoc -- ) - over flatten-class keys - [ swap push-method ] 2with with each ; + over flatten-class [ swap push-method ] 2with with each ; : flatten-methods ( assoc -- assoc' ) H{ } clone [ [ swapd flatten-method ] curry assoc-each ] keep ;