2017-02-24 33 views
1

我創建了將單詞轉換爲他們的明膠對應物的明膠翻譯器。將字符串轉換爲字符串序列

按照下面的步驟,

(translate '("ark" "gold")) 

"arkway golday" 

但是我想輸入簡單(翻譯 「方舟金」),並獲得 「arkway golday」

我想我'd使用字符串拆分和字符串加入,但我似乎是在添加一個錯誤:

(define (piglatin phrase) 
    (string-split translate phrase)) 

和運行(piglatin「( 「方舟金」))

給我的錯誤:

string-split: contract violation 
    expected: (or/c string? regexp?) 
    given: '("ark gold") 

代碼:

#lang racket 

(define (piglatin phrase) 
    (string-split translate phrase)) 

(define (translate sentence) 
    (string-join (map breakSentence sentence))) 

; break down sentance string split into a list 
(define (breakSentence word) 
    (list->string (listWord (string->list word)))) 

; break down word for vowel testing 
(define (listWord word) 
    (cond 
    ((foundVowel (car word)) 
    (startsVowel word)) 
    (else(noVowel word '())))) 

; letters that are vowels, their prensence indicates way should be added to end 
(define (foundVowel letter) 
    (member letter '(#\a #\e #\i #\o #\u #\y))) 

; allow adding way to end of word 
(define (startsVowel word) 
    (append word '(#\w #\a #\y))) 
+2

'string-split'將第一個參數當作一個字符串,而給它一個函數'translate'。檢查你的括號。 – Renzo

+0

你的翻譯是不是正確。它應該是「arkway」,「oldgay」 – stark

回答

0

您需要分割字符串成單詞翻譯他們。

(define (piglatin phrase) 
    (translate (string-split phrase)))