如何将列表中的项目转换为Stret in Racket

时间:2017-02-05 00:53:40

标签: functional-programming scheme racket

所以我有一个从文件中创建的项目列表。我能够读取文件并将项目成功放入列表中,但是我无法将这些项目转换/转换为字符串。

例如:

(print myList)

产生

'(Apple Orange banana pickle)

(for ([i lst])
        (print i)
    )

产生

'Apple'Orange'banana'pickle

不是字符串。

我真的只想要一个字符串列表,以便我以后可以操作它们。球拍文档似乎只显示如何处理字符。我该怎么做呢?谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

使用内置map程序和symbol->string这一过程有一种更简单,更惯用的方式,它可以完全执行您需要的转换:

(map symbol->string '(apple orange banana pickle))
=> '("apple" "orange" "banana" "pickle")

请记住,在Scheme中,我们大多数时候都避免使用set!等变异操作 - Scheme支持函数式编程,我们在这里构建新数据而不是修改它。

还要注意我们避免使用显式循环 - 有一些内置的过程可以用你能想象的任何方式来操作列表,对于那些罕见的情况,当我们找不到满足我们需求的过程时,我们使用递归循环。

答案 1 :(得分:0)

我想我找到了答案。我相信我列表中的项目在球拍中被称为“符号”。因此,您可以使用方法“symbol-> string”。

所以我定义了一个名为“stringList”的新列表,并执行了此操作:

;Create new list to be list of strings
(define stringList '())

;convert symbols from list into strings and add to stringList
(for ([i myList])
  (set! i (symbol->string i))
  (set! stringList (cons i stringList))
)

仍然希望听到任何反馈!