! 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
GENERIC: eval-insn ( stack insn -- stack )
: binary-op ( stack quot: ( x y -- z ) -- stack )
- [ uncons uncons [ swap ] dip ] 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 ;
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 [