     {
         { 16 [ hex>float ] }
         [ drop dec>float ]
-    } case ;
+    } case ; inline
 
 : number-char? ( char -- ? )
-    "0123456789ABCDEFabcdef." member? ;
+    "0123456789ABCDEFabcdef." member? ; inline
 
 : numeric-looking? ( str -- ? )
     "-" ?head drop

        } case
    ] [ 2drop f ] if ;

: string>number ( str -- n/f ) 10 base> ;
: bin> ( str -- n/f ) 2 base> ;
: oct> ( str -- n/f ) 8 base> ;
: hex> ( str -- n/f ) 16 base> ;

: >digit ( n -- ch )
    dup 10 < [ CHAR: 0 + ] [ 10 - CHAR: a + ] if ;

: positive>base ( num radix -- str )
    dup 1 <= [ "Invalid radix" throw ] when

PRIVATE>

: string>float ( str -- n/f )
    10 base>float ; inline

: base> ( str radix -- n/f )
    over numeric-looking? [
