题
我希望它提取所有那些在他们字母e的话。 例如。
(ewords '(i e ee o oo)) -> '(e ee)
伯克利61A讲座用途(第一“字)提取单词的第一个字符。然而DrScheme尖叫我,当我尝试这样做。如何取词的第一个字符?像
(first 'word)->'w.
解决方案
您需要将其转换为字符串明确:
(first (symbol->string 'word)) -> "w"
(我不知道把我的头顶部first
是否对字符串进行操作。您可以使用string->list
转换到一个列表,然后采取first
如果它不。)
编辑:这可能是更容易的字符串,而不是符号绕过摆在首位 - 指定字符串,用双引号(如(ewords '("i" "e" "ee" "o" "oo"))
)我不知道这是不是你的意图,但因为你”重新学习,我想我应该提到的区别。
其他提示
符号主要意味着是原子值,即它们通常不被拆开并检查。如果你真的想这样做,你必须首先做一些类型转换:
; #\a -> a (define (char->symbol chr) (string->symbol (list->string (list chr)))) ; abc -> (a b c) (define (symbol->list sym) (map char->symbol (string->list (symbol->string sym))))
您现在可以使用first
:
> (first (symbol->list 'word)) w
这要看,什么是一个“字”?
的数据定义它是字符序列(又名字符串)?它是人物的名单?字符串列表?符号的列表?
下面是满足您的标准功能,但你可以看到,这是令人费解的,我不知道,如果它是你真正想要的:
; symbol->list-of-symbols : symbol -> (ListOf symbol)
; To destructure a symbol into a list of its constituent parts
(define (symbol->list-of-symbols sym)
(map (lambda (s) (string->symbol (string s)))
(string->list (symbol->string sym))))
不隶属于 StackOverflow