From 4ac652347310b26201429b1f9bc6ca7a1617eb2f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 28 Jun 2016 00:42:55 -0700 Subject: [PATCH] sequences.cords: use funktors --- collections/sequences/cords/cords.factor | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/collections/sequences/cords/cords.factor b/collections/sequences/cords/cords.factor index 4703a3126d..9b28e4e152 100644 --- a/collections/sequences/cords/cords.factor +++ b/collections/sequences/cords/cords.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008, 2010 Slava Pestov, Joe Groff. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs sequences sorting binary-search fry math -math.order arrays classes combinators kernel functors locals +math.order arrays classes combinators kernel funktors locals math.functions math.vectors ; IN: sequences.cords @@ -27,21 +27,17 @@ GENERIC: cord-append ( seq1 seq2 -- cord ) M: object cord-append generic-cord boa ; inline -FUNCTOR< define-specialized-cord ( T C -- ) +FUNKTOR: define-specialized-cord ( T C -- ) [[ -T-cord DEFINES-CLASS ${C} +TUPLE: ${C}-cord + { head ${T} read-only } { tail ${T} read-only } ; final +INSTANCE: ${C}-cord cord -WHERE +M: ${T} cord-append + 2dup [ ${T} instance? ] both? + [ ${C}-cord boa ] [ generic-cord boa ] if ; inline +]] -TUPLE: T-cord - { head T read-only } { tail T read-only } ; final -INSTANCE: T-cord cord - -M: T cord-append - 2dup [ T instance? ] both? - [ T-cord boa ] [ generic-cord boa ] if ; inline - -FUNCTOR> : cord-map ( cord quot -- cord' ) [ [ head>> ] dip call ]