From cd86eb8febeb04120c601c314cbff2159743ce7a Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Mon, 17 Dec 2007 00:42:41 -0500 Subject: [PATCH] Sequence hashcode --- core/sequences/sequences.factor | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 01443716e7..92e160f3bf 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -674,9 +674,13 @@ PRIVATE> ! hashcode* >fixnum swap 31 fixnum*fast fixnum+fast ! ] curry* each ; inline +: sequence-hashcode-step ( oldhash newpart -- newhash ) + swap [ + dup -2 shift swap 5 shift + fixnum+fast fixnum+fast + ] keep bitxor ; + : sequence-hashcode ( n seq -- x ) 0 -rot [ - hashcode* >fixnum swap - [ -2 shift fixnum+fast ] keep [ 5 shift fixnum+fast ] keep - bitxor + hashcode* >fixnum sequence-hashcode-step ] curry* each ; inline