]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/rpn/rpn.factor
inverse: Fix docs
[factor.git] / extra / rpn / rpn.factor
index 7175746862fd8eccade8046478dedf4a20073172..e7ea4baf9f2ccf89b1bbfe5c0e0f3f7ec2873658 100644 (file)
@@ -1,5 +1,5 @@
 ! Copyright (C) 2009 Slava Pestov
-! See http://factorcode.org/license.txt for BSD license.
+! See https://factorcode.org/license.txt for BSD license.
 USING: accessors combinators io kernel lists math math.parser
 sequences splitting ;
 IN: rpn
@@ -10,7 +10,7 @@ TUPLE: push-insn value ;
 GENERIC: eval-insn ( stack insn -- stack )
 
 : binary-op ( stack quot: ( x y -- z ) -- stack )
-    [ uncons uncons ] dip dip cons ; inline
+    [ uncons uncons swapd ] dip dip cons ; inline
 
 M: add-insn eval-insn drop [ + ] binary-op ;
 M: sub-insn eval-insn drop [ - ] binary-op ;
@@ -19,7 +19,7 @@ M: div-insn eval-insn drop [ / ] binary-op ;
 M: push-insn eval-insn value>> swons ;
 
 : rpn-tokenize ( string -- string' )
-    " " split harvest sequence>list ;
+    split-words harvest sequence>list ;
 
 : rpn-parse ( string -- tokens )
     rpn-tokenize [
@@ -35,11 +35,11 @@ M: push-insn eval-insn value>> swons ;
 : print-stack ( list -- )
     [ number>string print ] leach ;
 
-: rpn-eval ( tokens -- )
-    nil [ eval-insn ] foldl print-stack ;
+: rpn-eval ( tokens -- stack )
+    nil [ eval-insn ] foldl ;
 
 : rpn ( -- )
     "RPN> " write flush
-    readln [ rpn-parse rpn-eval rpn ] when* ;
+    readln [ rpn-parse rpn-eval print-stack rpn ] when* ;
 
 MAIN: rpn