我想要它提取所有在其中有字母e的單詞。 例如。如何提取方案中符號的第一個字符?
(ewords '(i e ee o oo)) -> '(e ee)
伯克利的61a講座使用(第一個單詞)來提取單詞的第一個字符。然而,當我試圖這樣做時,DrScheme尖叫着我。如何採取單詞的第一個字符?像
(first 'word)->'w.
我想要它提取所有在其中有字母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"))
)我不喜歡不知道這是否是你的意圖,但既然你在學習,我想我應該提到這個區別。
嗯使用字符串聽起來不錯,但我真的想用符號。不管怎麼說,還是要謝謝你。 – unj2 2009-06-02 22:13:11
符號主要是指原子值,即它們通常不會被分解和檢查。如果你真的想這樣做,你必須首先做一些類型轉換:
; #\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))))
大學伯克利分校的61A不使用標準版的計劃;他們以Simply Scheme庫的形式增加了更多的支持。請參閱:http://planet.plt-scheme.org/package-source/dyoo/simply-scheme.plt/2/1/planet-docs/manual/index.html,它爲Racket提供此支持。 – dyoo 2011-08-26 23:40:12