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