diff --git a/core/combinators/combinators.factor b/core/combinators/combinators.factor index de6616d76f..1a76bcc70e 100644 --- a/core/combinators/combinators.factor +++ b/core/combinators/combinators.factor @@ -201,8 +201,6 @@ M: reversed hashcode* [ sequence-hashcode ] recursive-hashcode ; M: slice hashcode* [ sequence-hashcode ] recursive-hashcode ; -M: iota hashcode* over 0 <= [ 2drop 0 ] [ sequence-hashcode ] if ; - M: hashtable hashcode* [ dup assoc-size 1 eq? diff --git a/core/layouts/layouts.factor b/core/layouts/layouts.factor index 643e5c221a..a7bfbb7c2d 100644 --- a/core/layouts/layouts.factor +++ b/core/layouts/layouts.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2007, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: namespaces math words kernel assocs classes -math.order kernel.private ; +math.order kernel.private sequences sequences.private ; IN: layouts SYMBOL: data-alignment @@ -91,4 +91,17 @@ M: real >integer dup most-negative-fixnum most-positive-fixnum between? [ >fixnum ] [ >bignum ] if ; inline +! we put this here so that it can use the references to +! most-positive-fixnum otherwise would be in combinatrs +M: iota hashcode* + over 0 <= [ 2drop 0 ] [ + nip length [ + 0 most-positive-fixnum clamp integer>fixnum + 0 swap [ sequence-hashcode-step ] each-integer + ] [ + most-positive-fixnum swap + [ sequence-hashcode-step ] (each-integer) + ] bi + ] if ; + UNION: immediate fixnum POSTPONE: f ;