]> gitweb.factorcode.org Git - factor.git/commitdiff
Fix code for math.parser changes
authorSlava Pestov <slava@factorcode.org>
Thu, 7 Feb 2008 03:15:47 +0000 (21:15 -0600)
committerSlava Pestov <slava@factorcode.org>
Thu, 7 Feb 2008 03:15:47 +0000 (21:15 -0600)
14 files changed:
core/math/parser/parser.factor
core/syntax/syntax-docs.factor
extra/json/reader/reader.factor [changed mode: 0644->0755]
extra/math/ratios/ratios-docs.factor
extra/math/text/english/english.factor [changed mode: 0644->0755]
extra/parser-combinators/simple/simple.factor
extra/peg/peg.factor [changed mode: 0644->0755]
extra/project-euler/024/024.factor [changed mode: 0644->0755]
extra/project-euler/032/032.factor [changed mode: 0644->0755]
extra/project-euler/035/035.factor [changed mode: 0644->0755]
extra/project-euler/037/037.factor [changed mode: 0644->0755]
extra/project-euler/038/038.factor [changed mode: 0644->0755]
extra/project-euler/040/040.factor [changed mode: 0644->0755]
extra/random-tester/safe-words/safe-words.factor [changed mode: 0644->0755]

index 73b4a725d2584e541b9ffed34f5268778ad26c95..64ce296a0bdf14ef6979e8a23ad463593545fd16 100755 (executable)
@@ -33,6 +33,9 @@ IN: math.parser
 : string>digits ( str -- digits )
     [ digit> ] { } map-as ;
 
+: digits>integer ( seq radix -- n )
+    0 swap [ swapd * + ] curry reduce ;
+
 DEFER: base>
 
 <PRIVATE
@@ -52,9 +55,6 @@ SYMBOL: radix
     "/" split1 (base>) >r whole-part r>
     3dup and and [ / + ] [ 3drop f ] if ;
 
-: digits>integer ( seq -- n )
-    0 radix get [ swapd * + ] curry reduce ;
-
 : valid-digits? ( seq -- ? )
     {
         { [ dup empty? ] [ drop f ] }
@@ -64,7 +64,7 @@ SYMBOL: radix
 
 : string>integer ( str -- n/f )
     string>digits dup valid-digits?
-    [ digits>integer ] [ drop f ] if ;
+    [ radix get digits>integer ] [ drop f ] if ;
 
 PRIVATE>
 
index 2e5b41cd8d2648b473c354475fae0cac04e464a8..9ccfd2efcdfc749c653e961814e73fdc0aadea06 100755 (executable)
@@ -47,11 +47,13 @@ ARTICLE: "syntax-integers" "Integer syntax"
 "More information on integers can be found in " { $link "integers" } "." ;
 
 ARTICLE: "syntax-ratios" "Ratio syntax"
-"The printed representation of a ratio is a pair of integers separated by a slash (/). No intermediate whitespace is permitted. Either integer may be signed, however the ratio will be normalized into a form where the denominator is positive and the greatest common divisor of the two terms is 1."
+"The printed representation of a ratio is a pair of integers separated by a slash (/), prefixed by an optional whole number part followed by a plus (+). No intermediate whitespace is permitted. Here are some examples:"
 { $code
     "75/33"
     "1/10"
     "-5/-6"
+    "1+1/3"
+    "-10+1/7"
 }
 "More information on ratios can be found in " { $link "rationals" } ;
 
old mode 100644 (file)
new mode 100755 (executable)
index 105989a..b136012
@@ -104,7 +104,7 @@ LAZY: 'digit1-9' ( -- parser )
 LAZY: 'digit0-9' ( -- parser )
   [ digit? ] satisfy [ digit> ] <@ ;
 
-: decimal>integer ( seq -- num ) 10 swap digits>integer ;
+: decimal>integer ( seq -- num ) 10 digits>integer ;
 
 LAZY: 'int' ( -- parser )
   'zero' 
index d996acaf1f0d2780e9c87d9ca82d59d0ccbd8926..b780a7c322bc16bc4748e1b6d5dcf02ea0d4599f 100755 (executable)
@@ -7,6 +7,7 @@ ARTICLE: "rationals" "Rational numbers"
 "When we add, subtract or multiply any two integers, the result is always an integer. However, dividing a numerator by a denominator that is not an integral divisor of the denominator yields a ratio:"
 { $example "1210 11 / ." "110" }
 { $example "100 330 / ." "10/33" }
+{ $example "14 10 / ." "1+2/5" }
 "Ratios are printed and can be input literally in the form above. Ratios are always reduced to lowest terms by factoring out the greatest common divisor of the numerator and denominator. A ratio with a denominator of 1 becomes an integer. Division with a denominator of 0 throws an error."
 $nl
 "Ratios behave just like any other number -- all numerical operations work as you would expect."
old mode 100644 (file)
new mode 100755 (executable)
index 645d7e2..b77ac72
@@ -33,7 +33,7 @@ SYMBOL: and-needed?
 
 : 3digit-groups ( n -- seq )
     number>string <reversed> 3 <groups>
-    [ reverse 10 string>integer ] map ;
+    [ reverse string>number ] map ;
 
 : hundreds-place ( n -- str )
     100 /mod swap dup zero? [
index 763f823348f2a951d3fb0c35b13ae3d05763c98d..745442610cc3cbab4bfb12d61182d877c8c03676 100755 (executable)
@@ -8,7 +8,7 @@ IN: parser-combinators.simple
   [ digit? ] satisfy [ digit> ] <@ ;
 
 : 'integer' ( -- parser )
-  'digit' <!+> [ 10 swap digits>integer ] <@ ;
+  'digit' <!+> [ 10 digits>integer ] <@ ;
 
 : 'string' ( -- parser )
   [ CHAR: " = ] satisfy 
old mode 100644 (file)
new mode 100755 (executable)
index 41df873..59a8b63
@@ -343,7 +343,7 @@ MEMO: 'digit' ( -- parser )
   [ digit? ] satisfy [ digit> ] action ;
 
 MEMO: 'integer' ( -- parser )
-  'digit' repeat1 [ 10 swap digits>integer ] action ;
+  'digit' repeat1 [ 10 digits>integer ] action ;
 
 MEMO: 'string' ( -- parser )
   [
old mode 100644 (file)
new mode 100755 (executable)
index c795fc0..0cc0c39
@@ -23,7 +23,7 @@ IN: project-euler.024
 ! --------
 
 : euler024 ( -- answer )
-    999999 10 permutation 10 swap digits>integer ;
+    999999 10 permutation 10 digits>integer ;
 
 ! [ euler024 ] 100 ave-time
 ! 0 ms run / 0 ms GC ave time - 100 trials
old mode 100644 (file)
new mode 100755 (executable)
index 2baa6f8..b8b0758
@@ -27,21 +27,21 @@ IN: project-euler.032
 <PRIVATE
 
 : source-032 ( -- seq )
-    9 factorial [ 9 permutation [ 1+ ] map 10 swap digits>integer ] map ;
+    9 factorial [ 9 permutation [ 1+ ] map 10 digits>integer ] map ;
 
 : 1and4 ( n -- ? )
     number>string 1 cut-slice 4 cut-slice
-    [ 10 string>integer ] 3apply [ * ] dip = ;
+    [ string>number ] 3apply [ * ] dip = ;
 
 : 2and3 ( n -- ? )
     number>string 2 cut-slice 3 cut-slice
-    [ 10 string>integer ] 3apply [ * ] dip = ;
+    [ string>number ] 3apply [ * ] dip = ;
 
 : valid? ( n -- ? )
     dup 1and4 swap 2and3 or ;
 
 : products ( seq -- m )
-    [ number>string 4 tail* 10 string>integer ] map ;
+    [ number>string 4 tail* string>number ] map ;
 
 PRIVATE>
 
@@ -65,7 +65,7 @@ PRIVATE>
 
 ! multiplicand/multiplier/product
 : mmp ( pair -- n )
-    first2 2dup * [ number>string ] 3apply 3append 10 string>integer ;
+    first2 2dup * [ number>string ] 3apply 3append string>number ;
 
 PRIVATE>
 
old mode 100644 (file)
new mode 100755 (executable)
index 867bbc4..2917211
@@ -38,7 +38,7 @@ IN: project-euler.035
 
 : (circular?) ( seq n -- ? )
     dup 0 > [
-        2dup rotate 10 swap digits>integer
+        2dup rotate 10 digits>integer
         prime? [ 1- (circular?) ] [ 2drop f ] if
     ] [
         2drop t
old mode 100644 (file)
new mode 100755 (executable)
index f2d5d17..66b1665
@@ -32,7 +32,7 @@ IN: project-euler.037
     ] if ;
 
 : reverse-digits ( n -- m )
-    number>string reverse 10 string>integer ;
+    number>string reverse string>number ;
 
 : l-trunc? ( n -- ? )
     reverse-digits 10 /i reverse-digits dup 0 > [
old mode 100644 (file)
new mode 100755 (executable)
index cbe6f23..2369db2
@@ -36,7 +36,7 @@ IN: project-euler.038
 
 : (concat-product) ( accum n multiplier -- m )
     pick length 8 > [
-        2drop 10 swap digits>integer
+        2drop 10 digits>integer
     ] [
         [ * number>digits over push-all ] 2keep 1+ (concat-product)
     ] if ;
old mode 100644 (file)
new mode 100755 (executable)
index 8984559..e2df1df
@@ -37,7 +37,7 @@ IN: project-euler.040
     SBUF" " clone 1 -rot (concat-upto) ;
 
 : nth-integer ( n str -- m )
-    [ 1- ] dip nth 1string 10 string>integer ;
+    [ 1- ] dip nth 1string string>number ;
 
 PRIVATE>
 
old mode 100644 (file)
new mode 100755 (executable)
index 9bc87a9..ab52878
@@ -16,7 +16,7 @@ IN: random-tester.safe-words
         array? integer? complex? value-ref? ref? key-ref?
         interval? number?
         wrapper? tuple?
-        [-1,1]? between? bignum? both? either? eq? equal? even? fixnum? float? fp-nan? hashtable? interval-contains? interval-subset? interval? key-ref? key? number? odd? pair? power-of-2? ratio? rational? real? subassoc? valid-digits? zero? assoc? curry? vector? callstack? ! clear 3.14 [ <vector> assoc? ] compile-1
+        [-1,1]? between? bignum? both? either? eq? equal? even? fixnum? float? fp-nan? hashtable? interval-contains? interval-subset? interval? key-ref? key? number? odd? pair? power-of-2? ratio? rational? real? subassoc? zero? assoc? curry? vector? callstack? ! clear 3.14 [ <vector> assoc? ] compile-1
         2^ not
         ! arrays
         resize-array <array>