我想采取如下列表:
'((R.1)(R.5)(R.2)(R.4)(p.3)(t.6)(R.7))
用字母代替字母如下:
答案 0 :(得分:0)
不清楚数字是否被字母替换,反之亦然,但它们都是一样的。您需要为一个元组创建一个过程:
(define (letter->number tuple)
(cons
(case (car tuple)
((R) 'first)
((p) 'second)
(else 'third))
(cdr tuple)))
(letter->number '(R . 1)) ; ==> (first . 1)
(letter->number '(p . 1)) ; ==> (second . 1)
(letter->number '(t . 1)) ; ==> (third . 1)
使用此功能,您可以使用地图轻松修复这些列表:
(map letter->number '((R . 1) (R . 5) (R . 2) (R . 4) (p . 3) (t . 6) (R . 7)))
; ==> ((first . 1) (first . 5) (first . 2) (first . 4) (second . 3) (third . 6) (first . 7))
请注意,您的列表中存在错误。如果您不在虚线指示器的每一侧使用空格,那么Scheme将把整个事物读作符号。因此'(R . 1)
是带有R
和1
的虚线列表,但'(R.1)
是一个正确的列表,其中第一个元素为r.1
,空列表为其余的部分。