There's a problem with destructuring lists (seems like a bug).

If stack is always a vector, it works.

(defn rpn' [ stack symb ]
  (match [stack symb]
         [ [x y & z ] "*" ] (apply vector (* x y ) z)
         [ [x y & z ] "+" ] (apply vector (+ x y ) z)
         [ x "sum" ] [ (reduce + x) ]
         [ x y ] (apply vector (read-string y) x) ))

(defn calculator'[ input ]
(first (reduce rpn' [] (re-seq #"\S+" input))))

(calculator' " 1 2 10 2 3 + * sum ")
;=> 53

core.match isn't well road tested yet, still early days.

Thanks!
Ambrose

On Fri, Sep 30, 2011 at 4:36 PM, Michael Jaaka <michael.ja...@googlemail.com
> wrote:

> Thanks for feedback. But now I'm came across a problem. I'm studying
> "Learn You a Haskell for Great Good!" and I'm on chapter "Functionally
> Solving Problems" reading "Reverse Polish notation calculator".
> I wanted to write it in Clojure. So instead of:
> http://pastebin.com/QzhbyD6d
> I wrote: http://pastebin.com/fsChN96D
>
> But as you can see the first try doesn't work as expected.
> The destruction of stack doesn't work as expected.
> Expectation is written below as let expression.
>
> Anyone?
>
>
>
> On Sep 30, 6:56 am, Kevin Downey <redc...@gmail.com> wrote:
> > Last I checked matchjure generates fns which break recur (there is an
> issue
> > open for it). Trading recursion for matching seems like a bad deal, I
> > recommend using match instead.
> > On Sep 29, 2011 4:32 AM, "Christian Pohlmann" <
> chr.pohlm...@googlemail.com>
> > wrote:
> >
> >
> >
> >
> >
> >
> >
> > > Additionally to core.match there is also matchure [1] which comes with
> > > a defn-match that can be used like this:
> >
> > > (defn-match choose
> > > ([_ 0] 1)
> > > ([0 _] 0)
> > > ([?n ?k] (+ (choose (dec n) (dec k)) (choose (dec n) k))))
> >
> > > This makes defining functions fairly close to what you're used from
> > Haskell.
> >
> > > [1]https://github.com/dcolthorp/matchure
> >
> > > Christian
> >
> > > On Thu, Sep 29, 2011 at 12:03 PM, Michael Jaaka
> > > <michael.ja...@googlemail.com> wrote:
> > >> Hi!
> >
> > >> Is there any way to define function with pattern matching in function
> > >> signature as it is in haskell?
> >
> > >> Bye!
> >
> > >> --
> > >> You received this message because you are subscribed to the Google
> > >> Groups "Clojure" group.
> > >> To post to this group, send email to clojure@googlegroups.com
> > >> Note that posts from new members are moderated - please be patient
> with
> > your first post.
> > >> To unsubscribe from this group, send email to
> > >> clojure+unsubscr...@googlegroups.com
> > >> For more options, visit this group at
> > >>http://groups.google.com/group/clojure?hl=en
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Clojure" group.
> > > To post to this group, send email to clojure@googlegroups.com
> > > Note that posts from new members are moderated - please be patient with
> > your first post.
> > > To unsubscribe from this group, send email to
> > > clojure+unsubscr...@googlegroups.com
> > > For more options, visit this group at
> > >http://groups.google.com/group/clojure?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to