]> gitweb.factorcode.org Git - factor.git/commitdiff
added a zero? word
authorSlava Pestov <slava@factorcode.org>
Sat, 28 Jan 2006 20:49:31 +0000 (20:49 +0000)
committerSlava Pestov <slava@factorcode.org>
Sat, 28 Jan 2006 20:49:31 +0000 (20:49 +0000)
36 files changed:
library/alien/malloc.factor
library/alien/primitive-types.factor
library/bootstrap/image.factor
library/collections/hashtables.factor
library/collections/lists.factor
library/collections/sequence-combinators.factor
library/collections/sequence-sort.factor
library/collections/sequences-epilogue.factor
library/compiler/basic-blocks.factor
library/compiler/intrinsics.factor
library/compiler/x86/alien.factor
library/compiler/x86/assembler.factor
library/freetype/freetype-gl.factor
library/io/buffer.factor
library/math/complex.factor
library/math/float.factor
library/math/integer.factor
library/math/math.factor
library/math/parse-numbers.factor
library/math/pow.factor
library/math/vectors.factor
library/opengl/opengl-utils.factor
library/sdl/sdl-utils.factor
library/syntax/prettyprint.factor
library/test/benchmark/ack.factor
library/test/benchmark/fac.factor
library/test/math/float.factor
library/test/math/integer.factor
library/threads.factor
library/tools/describe.factor
library/tools/memory.factor
library/ui/line-editor.factor
library/unix/io.factor
library/win32/win32-io-internals.factor
library/win32/win32-server.factor
library/win32/win32-stream.factor

index cfa1503b79b4244fe5985aa78e2034548b503222..8e23f7e8c49d3bf02a58d2014bad7e197cbfe6e3 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2004, 2005 Mackenzie Straight.
-! See http://factor.sf.net/license.txt for BSD license.
+! See http://factorcode.org/license.txt for BSD license.
 IN: kernel-internals
-USING: alien errors kernel ;
+USING: alien errors kernel math ;
 
 LIBRARY: libc
 FUNCTION: ulong malloc ( ulong size ) ;
@@ -10,4 +10,4 @@ FUNCTION: void free ( ulong ptr ) ;
 FUNCTION: ulong realloc ( ulong ptr, ulong size ) ;
 FUNCTION: void memcpy ( ulong dst, ulong src, ulong size ) ;
 
-: check-ptr dup 0 = [ "Out of memory" throw ] when ;
+: check-ptr dup zero? [ "Out of memory" throw ] when ;
index 11bde96a0d0bdfbcc429c321853737e73d34f4ad..fac072e4e32ae831dc63f010946441929c6cae1c 100644 (file)
@@ -124,7 +124,7 @@ math namespaces ;
 ] "ushort*" define-primitive-type
 
 [
-    [ alien-unsigned-4 0 = not ] "getter" set
+    [ alien-unsigned-4 zero? not ] "getter" set
     [ 1 0 ? set-alien-unsigned-4 ] "setter" set
     bootstrap-cell "width" set
     bootstrap-cell "align" set
index 0dbe8bf86ced112f1f93d2551f9fc42edd5b4e5b..7c780127a216b4b3f2b82eb14662980a239753ca 100644 (file)
@@ -117,7 +117,7 @@ M: fixnum ' ( n -- tagged ) fixnum-tag immediate ;
 : bignum-radix bignum-bits 1 swap shift 1- ;
 
 : (bignum>seq) ( n -- )
-    dup 0 = [
+    dup zero? [
         drop
     ] [
         dup bignum-radix bitand ,
index 4844346ef2afc49e106877192da32dc697e7260d..d1e8c37454074acb09bf66ff4f0b79508dbd7891 100644 (file)
@@ -137,7 +137,7 @@ IN: hashtables
 
 : hash-size ( hash -- n ) dup hash-count swap hash-deleted - ;
 
-: hash-empty? ( hash -- ? ) hash-size 0 = ;
+: hash-empty? ( hash -- ? ) hash-size zero? ;
 
 : grow-hash ( hash -- )
     [ dup hash-array swap hash-size 1+ ] keep
index 383bb3aef363f66cebab5368c41ba4de41561059..b2fc38c9d2a0ffafe4bae003d268926cf98154ce 100644 (file)
@@ -67,7 +67,7 @@ M: general-list tail ( n list -- tail )
     swap [ cdr ] times ;
 
 M: general-list nth ( n list -- element )
-    over 0 number= [ nip car ] [ >r 1- r> cdr nth ] if ;
+    over zero? [ nip car ] [ >r 1- r> cdr nth ] if ;
 
 M: cons = ( obj cons -- ? )
     {
index ed6d94e954ce21d9c566085aca09eed55ead1003..0c118867e80431388743cea28ef26d4bf86e163e 100644 (file)
@@ -24,7 +24,7 @@ vectors ;
     inline
 
 : (interleave) ( n -- array )
-    dup 0 = [
+    dup zero? [
         drop { }
     ] [
         t <array> f 0 pick set-nth-unsafe
index 9012b33d728324f0c9e98ccf92e75bc65b8d6bad..6547c91ee8124aa0f2a338c258985657ab2c595b 100644 (file)
@@ -61,7 +61,7 @@ C: sorter ( seq start end -- sorter )
     dup length 1 <= [
         2nip slice-from
     ] [
-        3dup >r >r >r midpoint swap call dup 0 = [
+        3dup >r >r >r midpoint swap call dup zero? [
             r> r> 3drop r> dup slice-from swap slice-to + 2 /i
         ] [
             r> swap r> swap r> partition (binsearch)
index fc2924445bbaa63b7ca1b4414daef8ca8e40a5bf..25c84472ab6f40c042e2f3b6272c5a15d449f51a 100644 (file)
@@ -15,7 +15,7 @@ sequences-internals strings vectors words ;
 
 M: object like drop ;
 
-M: object empty? ( seq -- ? ) length 0 = ;
+M: object empty? ( seq -- ? ) length zero? ;
 
 : (>list) ( n i seq -- list )
     pick pick <= [
index b1c3c5ad89aac8fc5c29fc28930a6ad304ba58b7..e84b18a4da467cadd8277325dd47731b03af10d2 100644 (file)
@@ -106,7 +106,7 @@ GENERIC: trim-dead* ( tail vop -- )
 
 M: tuple trim-dead* ( tail vop -- ) dup forget-vregs , drop ;
 
-: simplify-inc ( vop -- ) dup 0 vop-in 0 = not ?, ;
+: simplify-inc ( vop -- ) dup 0 vop-in zero? not ?, ;
 
 M: %inc-d trim-dead* ( tail vop -- ) simplify-inc drop ;
 
index d896923674c591789f48cdc73404761f8999127e..4bd3d6839b5bd7cde36eaeae4afe66158f8ae7e4 100644 (file)
@@ -215,7 +215,7 @@ namespaces sequences words ;
     ] if ;
 
 : fast-shift ( n -- )
-    dup 0 = [
+    dup zero? [
         -1 %inc-d ,
         drop
     ] [
index 6beb1bad67c6892ec43147c0a6b848a2845e56e4..8eab96191dc81b99d61f2ff579162de1bfa7fd85 100644 (file)
@@ -22,4 +22,4 @@ M: %box generate-node
     ESP 1 input reg-size ADD ;
 
 M: %cleanup generate-node
-    drop 0 input dup 0 = [ drop ] [ ESP swap ADD ] if ;
+    drop 0 input dup zero? [ drop ] [ ESP swap ADD ] if ;
index 849026be852faa18c93aeb0b33c5dcf2387a7f0a..14a66268ebbbd9fd1046eaae62ea499510f420c5 100644 (file)
@@ -92,7 +92,7 @@ M: displaced register first register ;
 M: displaced displacement
     second dup byte? [ assemble-1 ] [ assemble-4 ] if ;
 M: displaced canonicalize
-    dup first EBP = not over second 0 = and
+    dup first EBP = not over second zero? and
     [ first 1array ] when ;
 M: displaced extended? first extended? ;
 M: displaced operand-64? first register-64? ;
index 45e3011610f5d3d06c4001c955e8fd482007c916..76979c3c9077f1e0051a1e09eeacdf22b0b8f95c 100644 (file)
@@ -10,7 +10,8 @@ IN: freetype
 SYMBOL: freetype
 SYMBOL: open-fonts
 
-: freetype-error ( n -- ) 0 = [ "FreeType error" throw ] unless ;
+: freetype-error ( n -- )
+    zero? [ "FreeType error" throw ] unless ;
 
 : init-freetype ( -- )
     global [
index 35ef0c6df604a55e707232d8a794bd5e0864056b..98022a4ed89b1804faca08a768a7e9b3e4a58cdc 100644 (file)
@@ -52,7 +52,7 @@ C: buffer ( size -- buffer )
 : buffer-capacity ( buffer -- int )
     dup buffer-size swap buffer-fill - ;
 
-: buffer-empty? ( buffer -- ? ) buffer-fill 0 = ;
+: buffer-empty? ( buffer -- ? ) buffer-fill zero? ;
 
 : buffer-extend ( length buffer -- )
     2dup buffer-ptr swap realloc check-ptr
index 40873c3d0644a90355076b3bb8eab2f06772f954..90547d7598eb78c0079d784450962cead161ef8e 100644 (file)
@@ -4,7 +4,7 @@ IN: math-internals
 USING: errors generic kernel kernel-internals math ;
 
 : (rect>) ( xr xi -- x )
-    dup 0 number= [ drop ] [ <complex> ] if ; inline
+    dup zero? [ drop ] [ <complex> ] if ; inline
 
 IN: math
 
index bf78276adfb8b259efcd9bef00c887c7882bf5de..9af3f3bbf1bf7bd652af4a575bc81182dc85c260 100644 (file)
@@ -1,5 +1,5 @@
-! Copyright (C) 2004, 2005 Slava Pestov.
-! See http://factor.sf.net/license.txt for BSD license.
+! Copyright (C) 2004, 2006 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
 IN: math
 USING: generic kernel math-internals ;
 
@@ -11,7 +11,14 @@ M: real absq sq ;
 M: real hashcode ( n -- n ) >fixnum ;
 M: real <=> - ;
 
-M: float number= [ double>bits ] 2apply = ;
+: fp-nan? ( float -- ? )
+    double>bits -51 shift BIN: 111111111111 [ bitand ] keep = ;
+
+M: float zero?
+    double>bits HEX: 8000000000000000 [ bitor ] keep number= ;
+
+M: float number= [ double>bits ] 2apply number= ;
+
 M: float < float< ;
 M: float <= float<= ;
 M: float > float> ;
index 812949a0bc770d96d7668d83dec90896f9ef5d1a..397bca338f86843e1d40ccacb2a8d43bb890d54b 100644 (file)
@@ -11,7 +11,7 @@ UNION: integer fixnum bignum ;
 : odd? ( n -- ? ) 1 bitand 1 = ;
 
 : (gcd) ( b a y x -- a d )
-    dup 0 number= [
+    dup zero? [
         drop nip
     ] [
         tuck /mod >r pick * swap >r swapd - r> r> (gcd)
@@ -36,7 +36,7 @@ IN: math-internals
 : division-by-zero ( x y -- ) "Division by zero" throw ;
 
 M: integer / ( x y -- x/y )
-    dup 0 number= [
+    dup zero? [
         division-by-zero
     ] [
         dup 0 < [ [ neg ] 2apply ] when
@@ -69,6 +69,8 @@ M: fixnum shift fixnum-shift ;
 
 M: fixnum bitnot fixnum-bitnot ;
 
+M: fixnum zero? 0 eq? ;
+
 M: bignum number= bignum= ;
 M: bignum < bignum< ;
 M: bignum <= bignum<= ;
@@ -93,3 +95,5 @@ M: bignum bitxor bignum-bitxor ;
 M: bignum shift bignum-shift ;
 
 M: bignum bitnot bignum-bitnot ;
+
+M: bignum zero? 0 >bignum bignum= ;
index c7a018497ac136815afda82d60ae216d44df5a54..3ed833a28b1ecc51df4edfd7bde033f0bc1fc7a3 100644 (file)
@@ -33,6 +33,9 @@ GENERIC: 1- ( x -- x-1 ) foldable
 GENERIC: abs ( z -- |z| ) foldable
 GENERIC: absq ( n -- |n|^2 ) foldable
 
+GENERIC: zero? ( x -- ? ) foldable
+M: object zero? drop f ;
+
 : sq dup * ; inline
 : neg 0 swap - ; inline
 : recip 1 swap / ; inline
index 618e45c2b1ecde7d4edd5378c44aa6fc1cf86dcb..e13b7f6c398df95aaa01883ed1391890a5e7128c 100644 (file)
@@ -70,14 +70,11 @@ M: ratio >base ( num radix -- string )
 : fix-float
     CHAR: . over member? [ ".0" append ] unless ;
 
-: nan? ( float -- ? )
-    double>bits -51 shift BIN: 111111111111 [ bitand ] keep = ;
-
 M: float >base ( num radix -- string )
     drop {
         { [ dup 1.0/0.0 = ] [ drop "1.0/0.0" ] }
         { [ dup -1.0/0.0 = ] [ drop "-1.0/0.0" ] }
-        { [ dup nan? ] [ drop "0.0/0.0" ] }
+        { [ dup fp-nan? ] [ drop "0.0/0.0" ] }
         { [ t ] [ float>string fix-float ] }
     } cond ;
 
index c09b7193fec6c8bd550b5900b50495a7df38a6ea..5941246934e06aea0469a98c03a0bd04722e13bf 100644 (file)
@@ -22,18 +22,18 @@ GENERIC: ^ ( z w -- z^w ) foldable
 : 0^0 "0^0 is not defined" throw ;
 
 : 0^ ( z w -- )
-    dup 0 number= [
+    dup zero? [
         2drop 0.0/0.0
     ] [
         0 < [ drop 1.0/0.0 ] when
     ] if ;
 
 M: number ^ ( z w -- z^w )
-    over 0 number=
+    over zero?
     [ 0^ ] [ swap >polar 3dup ^theta >r ^mag r> polar> ] if ;
 
 : each-bit ( n quot -- | quot: 0/1 -- )
-    over 0 number= pick -1 number= or [
+    over zero? pick -1 number= or [
         2drop
     ] [
         2dup >r >r >r 1 bitand r> call r> -1 shift r> each-bit
@@ -44,7 +44,7 @@ M: number ^ ( z w -- z^w )
     inline
 
 M: integer ^ ( z w -- z^w )
-    over 0 number=
+    over zero?
     [ 0^ ] [ dup 0 < [ neg ^ recip ] [ (integer^) ] if ] if ;
 
 : power-of-2? ( n -- ? )
index 3123c23508e4a9dc33482f5a2a276b13f13dfb8c..96fb69bb3ac910eb52393aab9378cb6ee259e2b8 100644 (file)
@@ -23,4 +23,4 @@ USING: arrays generic kernel sequences ;
 : normalize ( vec -- uvec ) dup norm v/n ;
 
 : set-axis ( x y axis -- v )
-    dup length [ >r 0 = pick pick ? r> swap nth ] 2map 2nip ;
+    dup length [ >r zero? pick pick ? r> swap nth ] 2map 2nip ;
index dcd99d945af167ddbfa7b6c635dfa33d9f8cb2fc..c7848b76125ac9dcf409fe0811e9777e32e06407 100644 (file)
@@ -36,7 +36,7 @@ USING: alien errors kernel math namespaces opengl sdl sequences ;
     >r 0 gl-flags r> with-screen ; inline
 
 : gl-error ( -- )
-    glGetError dup 0 = [ drop ] [ gluErrorString throw ] if ;
+    glGetError dup zero? [ drop ] [ gluErrorString throw ] if ;
 
 : with-gl-surface ( quot -- )
     #! Execute a quotation, locking the current surface if it
index 807c576f2ca2642b4a1455bd7e47401944bb80f1..615b3b25741c1ab02053e3d489fc626a5cebc917 100644 (file)
@@ -10,7 +10,7 @@ SYMBOL: height
 SYMBOL: bpp
 
 : sdl-error ( 0/-1 -- )
-    0 = [ SDL_GetError throw ] unless ;
+    zero? [ SDL_GetError throw ] unless ;
 
 : init-keyboard ( -- )
     1 SDL_EnableUNICODE drop
@@ -32,10 +32,10 @@ SYMBOL: bpp
 
 : must-lock-surface? ( -- ? )
     #! This is a macro in SDL_video.h.
-    surface get dup surface-offset 0 = [
+    surface get dup surface-offset zero? [
         surface-flags
         SDL_HWSURFACE SDL_ASYNCBLIT bitor SDL_RLEACCEL bitor
-        bitand 0 = not
+        bitand zero? not
     ] [
         drop t
     ] if ;
index 93420453d1931a9261a870b79aca2a649bd0d91f..d00a7296e7edb657025f8912ff9893a6b06670fd 100644 (file)
@@ -100,7 +100,7 @@ C: block ( -- block )
     [ section-end fresh-line ] [ drop ] if ;
 
 : section-fits? ( section -- ? )
-    margin get dup 0 = [
+    margin get dup zero? [
         2drop t
     ] [
         line-limit? pick block? and [
index b8bf877596cefa126e058d1544fb583a15d4feca..474a50d5356bc60a25f9ec4aa2be0c12a18adbfb 100644 (file)
@@ -6,10 +6,10 @@ USE: test
 ! http://inferno.bell-labs.com/cm/cs/who/bwk/interps/pap.html
 
 : ack ( m n -- x )
-    over 0 = [
+    over zero? [
         nip 1+
     ] [
-        dup 0 = [
+        dup zero? [
             drop 1- 1 ack
         ] [
             dupd 1- ack >r 1- r> ack
index 2ed38ddc7671b2d208acf4327c70457eabf9efd3..6d8c4e3422eb36b2aa14d0e5f8693542d5dedc13 100644 (file)
@@ -2,7 +2,7 @@ IN: temporary
 USING: compiler kernel math sequences test ;
 
 : (fac) ( n! i -- n! )
-    dup 0 = [
+    dup zero? [
         drop
     ] [
         [ * ] keep 1- (fac)
index 6969b85cf1c42a9bee3f0580eda307732e206e77..bf90620a38f50e7dd37db20ea977ac625a7763b4 100644 (file)
@@ -48,3 +48,10 @@ USE: test
 [ -4.0 ] [ -4.0 truncate ] unit-test
 [ -4.0 ] [ -4.0 floor ] unit-test
 [ -4.0 ] [ -4.0 ceiling ] unit-test
+
+[ t ] [ 0.0/0.0 0.0/0.0 = ] unit-test
+[ t ] [ -0.0 -0.0 = ] unit-test
+[ f ] [ 0.0 -0.0 = ] unit-test
+
+[ t ] [ 0.0 zero? ] unit-test
+[ t ] [ -0.0 zero? ] unit-test
index 82fe2322f5d3e1ef6be7804dd9ba778de41e32fa..0bb99474a962c9c1f7c1d014fa6bcb8033f7b1f6 100644 (file)
@@ -101,3 +101,7 @@ unit-test
 [ { 0 1 1 0 } ] [ [ -10 [ , ] each-bit ] { } make ] unit-test
 
 [ -351382792 ] [ -43922849 3 shift ] unit-test
+
+[ t ] [ 0 zero? ] unit-test
+[ f ] [ 30 zero? ] unit-test
+[ t ] [ 0 >bignum zero? ] unit-test
index 2bb70a83eee202f2c98a6a8d5ff6e60cb4634f5a..d3a0a213658acc0dfd2fbd665c943b54d1df5fd9 100644 (file)
@@ -22,7 +22,7 @@ namespaces queues sequences vectors ;
 DEFER: next-thread
 
 : do-sleep ( -- continuation )
-    sleep-queue* dup sleep-time dup 0 =
+    sleep-queue* dup sleep-time dup zero?
     [ drop pop cdr ] [ nip io-multiplex next-thread ] if ;
 
 : next-thread ( -- continuation )
index 73cd69cd720a808e8419fc47411c9ec8f0f8f7e5..9a28cbfdc1fec8e5be742fe7b9be58a62528d49f 100644 (file)
@@ -10,7 +10,7 @@ GENERIC: summary ( object -- string )
     0 > "a positive " "a negative " ? ;
 
 M: integer summary
-    dup sign-string over 2 mod 0 = "even " "odd " ?
+    dup sign-string over 2 mod zero? "even " "odd " ?
     rot class word-name append3 ;
 
 M: real summary
@@ -72,7 +72,7 @@ M: word summary ( word -- )
 : format-sheet ( sheet -- list )
     #! We use an idiom to notify format-column if it is
     #! formatting the last column.
-    dup length reverse-slice [ 0 = format-column ] 2map
+    dup length reverse-slice [ zero? format-column ] 2map
     flip [ " " join ] map ;
 
 DEFER: describe
index 18344b616e0379fb0f51250175938963aa629409..e67b75f182ed6acf712158d4160de7040091a3e4 100644 (file)
@@ -93,7 +93,7 @@ M: object each-slot ( obj quot -- )
     [ >r 2dup r> heap-stat-step ] each-object ;
 
 : heap-stat. ( { instances bytes type } -- )
-    dup first 0 = [
+    dup first zero? [
         dup third type>class pprint ": " write
         dup second pprint " bytes, " write
         dup first pprint " instances" print
index 536ca14fdaf86234d7fbc91b7897ae410061685c..6407e6e28fd1bc5eac45b24651410802ed947835 100644 (file)
@@ -128,7 +128,7 @@ M: document-elt prev-elt* 3drop 0 ;
 
 : history-prev ( -- )
     #! Call this in the line editor scope.
-    history-index get dup 0 = [
+    history-index get dup zero? [
         drop
     ] [
         dup history-length = [ commit-history ] when
index 5d054d361f9c449efddb6b5b2cf4510f975f2d71..76998e1e1328ec98d17dde460859f6dee3935f6e 100644 (file)
@@ -37,7 +37,7 @@ SYMBOL: write-tasks
 
 : (io-error) err_no strerror throw ;
 
-: check-null ( n -- ) 0 = [ (io-error) ] when ;
+: check-null ( n -- ) zero? [ (io-error) ] when ;
 
 : io-error ( n -- ) 0 < [ (io-error) ] when ;
 
@@ -126,7 +126,7 @@ GENERIC: task-container ( task -- vector )
     ] if ;
 
 : timeout? ( port -- ? )
-    port-cutoff dup 0 = not swap millis < and ;
+    port-cutoff dup zero? not swap millis < and ;
 
 : handle-fdset ( fdset tasks -- )
     [
@@ -169,7 +169,7 @@ GENERIC: task-container ( task -- vector )
 
 : refill ( port -- ? )
     #! Return f if there is a recoverable error
-    dup buffer-length 0 = [
+    dup buffer-length zero? [
         dup (refill)  dup 0 >= [
             swap n>buffer t
         ] [
@@ -259,7 +259,7 @@ C: write-task ( port -- task )
     [ >r <io-task> r> set-delegate ] keep ;
 
 M: write-task do-io-task
-    io-task-port dup buffer-length 0 = over port-error or [
+    io-task-port dup buffer-length zero? over port-error or [
         0 swap buffer-reset t
     ] [
         write-step f
index f15f14a33d362e0e8f4eb752e5f73412eed7ab6c..a39e5f4b0116268e747e7dac21ffa353502bdccd 100644 (file)
@@ -110,7 +110,7 @@ C: io-callback ( -- callback )
     pick over r> -rot >r >r GetQueuedCompletionStatus r> r> ;
 
 : overlapped>callback ( overlapped -- callback )
-    indirect-pointer-value dup 0 = [
+    indirect-pointer-value dup zero? [
         drop f
     ] [
         <alien> overlapped-ext-user-data get-io-callback
index b09c1ed7b77265ac7bb904e8e3f6dcc5a6e31d2c..37cab7ac63934503b72b181c97eea690eef18b8f 100644 (file)
@@ -55,12 +55,12 @@ SYMBOL: socket
     AF_INET over set-sockaddr-in-family ;
 
 : bind-socket ( port socket -- )
-    swap setup-sockaddr "sockaddr-in" c-size wsa-bind 0 = [
+    swap setup-sockaddr "sockaddr-in" c-size wsa-bind zero? [
         handle-socket-error
     ] unless ;
 
 : listen-socket ( socket -- )
-    20 wsa-listen 0 = [ handle-socket-error ] unless ;
+    20 wsa-listen zero? [ handle-socket-error ] unless ;
 
 : sockaddr> ( sockaddr -- port host )
     dup sockaddr-in-port ntohs swap sockaddr-in-addr inet-ntoa ;
index df1b1586cdd1ed99cd0e825cd3abb968cc176d7f..a5fb2be4112f58a693a4b78dabec9d35d3d51d40 100644 (file)
@@ -72,7 +72,7 @@ SYMBOL: cutoff
     out-buffer get buffer-length 0 > [ flush-output ] when ;
 
 M: integer do-write ( int -- )
-    out-buffer get [ buffer-capacity 0 = [ flush-output ] when ] keep
+    out-buffer get [ buffer-capacity zero? [ flush-output ] when ] keep
     >r ch>string r> >buffer ;
 
 M: string do-write ( str -- )
@@ -96,7 +96,7 @@ M: string do-write ( str -- )
     dup in-buffer get n>buffer update-file-pointer ;
 
 : consume-input ( count -- str ) 
-    in-buffer get buffer-length 0 = [ fill-input ] when
+    in-buffer get buffer-length zero? [ fill-input ] when
     in-buffer get buffer-size min
     dup in-buffer get buffer-first-n
     swap in-buffer get buffer-consume ;
@@ -105,11 +105,11 @@ M: string do-write ( str -- )
     dup length 0 > [ >string ] [ drop f ] if ;
 
 : do-read-count ( sbuf count -- str )
-    dup 0 = [ 
+    dup zero? [ 
         drop >string 
     ] [
         dup consume-input
-        dup length dup 0 = [
+        dup length dup zero? [
             3drop >string-or-f
         ] [
             >r swap r> - >r swap [ swap nappend ] keep r> do-read-count
@@ -130,7 +130,7 @@ M: win32-stream stream-read ( count stream -- str )
 
 M: win32-stream stream-read1 ( stream -- str )
     win32-stream-this [
-        1 consume-input dup length 0 = [ drop f ] when first 
+        1 consume-input dup length zero? [ drop f ] when first 
     ] bind ;
 
 M: win32-stream stream-readln ( stream -- str )