Though I'm opposed to posting solutions to school assignments --in 
principle-- here's this little something in the hope that it might get you 
interested in lisp:

(defn value [e]
  (cond (number? e) e
        (= (second e) '+) (+ (value (first e)) (value (nth e 2)))
        (= (second e) '-) (- (value (first e)) (value (nth e 2)))
        (= (second e) '*) (* (value (first e)) (value (nth e 2)))
        (= (second e) '/) (quot (value (first e)) (value (nth e 2)))))

(defn e [s] (value (read-string s)))

Then you use (e) like so:
user=> (e "(1 + (2 * (4 * 5)))")                                           
  
41

Function e converts the string into a list and calls function value with 
it. Function value accepts wither a number or a binary operation in a list 
and applies the corresponding operator to the operands. Since operands can 
themselves be operations, it calls itself recursively on the first and 
third elements of the list, which are the operands.

On Tuesday, May 1, 2012 8:19:04 PM UTC-7, Asranz wrote:
>
> oh please if u can teach me! 
>
>
> On 1 mayo, 21:29, Armando Blancas <abm221...@gmail.com> wrote: 
> > > i just need to evaluate in infix a string "(1 +2 (4 * 5)" 
> > 
> > Check out The Little Schemer. It'll teach you the techniques for doing 
> this.

-- 
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