字符串列表中的球拍方程

时间:2014-12-03 16:24:30

标签: racket

我正在使用DrRacket,我有一个字符串列表。一个可能的输入可能是'(" +"" 100"" 22")。如何让这些列表函数正确执行?我的例子的答案是122.如果我可以删除输入必须是字符串列表的事实,我可以这样做。 那么,如何将字符串列表更改为符号列表?

2 个答案:

答案 0 :(得分:1)

你需要做类似的事情:

#lang racket

(define (evaluate expr)
  (define r evaluate)
  (match expr
    [(and (? string?) (app string->number n)) 
     n]
    [(list "+" e1 e2)  (+ (r e1) (r e2))]
    [(list "-" e1 e2)  (- (r e1) (r e2))]
    [(list "*" e1 e2)  (* (r e1) (r e2))]
    [(list "/" e1 e2)  (/ (r e1) (r e2))]   
    [_ 
     (error 'evaluate "got ~a" expr)]))

(evaluate '("+" "1" "2"))
(evaluate '("+" ("-" "5" "4") "2"))

答案 1 :(得分:0)

您可以使用map函数将字符串列表转换为符号列表。

例如:

(define los '("+" "100" "22))
(map string->symbol los)