2017-02-24 15 views
1

私は、単語をブタラティンの対応語に変換するブタラティントランスレータを作成しました。文字列を一連の文字列に変換する

以下の手順に従って、

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

は私を考え出し、私は単純に入力したいしかし

"arkway golday" 

を与える( "箱舟金" 翻訳)と "arkwayのgolday"

を取得文字列分割と文字列結合を使用しますが、私は間違いを追加しているようです:

(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))) 
関連する問題