我希望它提取所有那些在他们字母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))))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top