修改列表

时间:2014-04-10 09:02:20

标签: list functional-programming

我是函数式编程的新手,尤其是我正在使用的编程语言Scheme。我还在努力掌握Scheme的主要概念。

我尝试做的是在Scheme中编写一个函数,它接受两个字符(例如a和b)和一个字符串对列表,例如: '(("一个""两个")("三""四")("五" " six"))作为输入,并返回修改后的字符串对列表:对于列表中的每个字符串对。所以基本上,我需要在第一个字符串的前面添加一个,在第二个字符串的前面添加b,假设a和b是作为输入接收的字符。

以下是我尝试实现的输入/输出示例:

输入:

(modify-list-pair-of-strings "a" "b" '(("one" "two")("three" "four")("five" "six")))

输出:

'(("aone" "btwo")("athree" "bfour")("afive" "bsix"))

我不确定如何实施此功能。我知道我可以使用一些常见的列表操作,如car,cons,cdr等,但我发现它很混乱。

1 个答案:

答案 0 :(得分:1)

(define (modify-list-pair-of-strings a b lst)
  (map (lambda (x)
         (list (string-append a (car x))
               (string-append b (cadr x))))
       lst))

此处可运行的示例:http://eval.ironscheme.net/?id=132

一个更动态的例子:

(define (modify-list-pair-of-strings pre lst)
  (map (lambda (x)
         (map string-append pre x))
       lst))

(modify-list-pair-of-strings 
 '("a" "b" "c") 
 '(("one" "two" "three")("three" "four" "five")("five" "six" "seven")))