]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences: add ensure-non-negative word
authorDoug Coleman <doug.coleman@gmail.com>
Fri, 19 Aug 2022 02:06:02 +0000 (21:06 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 26 Feb 2023 23:11:03 +0000 (17:11 -0600)
basis/math/bits/bits.factor
basis/math/bitwise/bitwise.factor
core/sequences/sequences.factor
extra/base32-crockford/base32-crockford.factor
extra/math/extras/extras.factor

index 9764bbc40977576c010d5751de48978b937fc300..998ff0349cd009fd05d10313bb9ac5695a82e8aa 100644 (file)
@@ -6,11 +6,8 @@ IN: math.bits
 TUPLE: bits { number read-only } { length read-only } ;
 C: <bits> bits
 
-: check-negative-bits ( n -- n )
-    dup 0 < [ non-negative-integer-expected ] when ; inline
-
 : make-bits ( number -- bits )
-    check-negative-bits
+    ensure-non-negative
     [ T{ bits f 0 1 } ] [ dup abs log2 1 + <bits> ] if-zero ; inline
 
 M: bits length length>> ; inline
index bf7f7ce19d5d19f126ee979c384da41e57afdfb2..30408bcf22a37d521e423e6aeafbcb5229cdaddd 100644 (file)
@@ -134,7 +134,7 @@ PRIVATE>
 GENERIC: bit-count ( obj -- n )
 
 M: integer bit-count
-    dup 0 < [ non-negative-integer-expected ] when (bit-count) ; inline
+    ensure-non-negative (bit-count) ; inline
 
 M: byte-array bit-count
     byte-array-bit-count ;
index ba053465e3d14665bc0a8ba80d52b2d2b7ea12ba..86f25581a6fc9721c6d2726d3bb9b2ca6ad102ee 100644 (file)
@@ -143,9 +143,11 @@ TUPLE: iota { n integer read-only } ;
 
 ERROR: non-negative-integer-expected n ;
 
+: ensure-non-negative ( n -- n )
+    dup 0 < [ non-negative-integer-expected ] when ; inline
+
 : <iota> ( n -- iota )
-    dup 0 < [ non-negative-integer-expected ] when
-    iota boa ; inline
+    ensure-non-negative iota boa ; inline
 
 M: iota length n>> ; inline
 M: iota nth-unsafe drop ; inline
index 644bd387b843f02779d43f927ef9f428ab5709c0..110f70229d3cc9b2e343818f4f2ff2734e1e8ae8 100644 (file)
@@ -31,7 +31,7 @@ PRIVATE>
     normalize-base32 parse-base32 ;
 
 : >base32-crockford ( n -- base32 )
-    dup 0 < [ non-negative-integer-expected ] when
+    ensure-non-negative
     [ dup 0 > ] [ 32 /mod ALPHABET nth ] "" produce-as nip
     [ "0" ] when-empty reverse! ;
 
index 92676835bca8f58cd02c725ac88aaee3732a9e80..4d65a2d386049f232cdc8e5b2d0677d7440db410 100644 (file)
@@ -355,7 +355,7 @@ PRIVATE>
 
 :: integer-sqrt ( m -- n )
     m [ 0 ] [
-        dup 0 < [ non-negative-integer-expected ] when
+        ensure-non-negative
         bit-length 1 - 2 /i :> c
         1 :> a!
         0 :> d!