2016-03-28 4 views
0

Я использую DrRacket, версия 6.4, английский, чтобы создать небольшое приложение на Схеме. Мне было интересно, был ли более эффективный способ конкатенировать следующий код. [это работает, я просто не уверен, что это чистейшее, так как я новичок в схему]Схема конкатенации строк для отображения

(display "Rolling ") 
    (display (number->string (- 5 (length my-rolled-dice)))) 
    (display " dice\n") 
    (display "You rolled\n") 
    (define my-roll (make-list-of-random-numbers (- 5 (length my-rolled-dice)) 6)) 
    (display my-roll) 
    (display "\n") 

Я ищу следующий вывод на экран

Rolling 5 dice 
You rolled 
(3 1 3 6 6) 

Есть уборщик способ написать это или это так же чисто, как и в Схеме?

ответ

4

Использование printf, это короче:

(printf "Rolling ~a dice~n" (- 5 (length my-rolled-dice))) 
(printf "You rolled~n~a" (make-list-of-random-numbers (- 5 (length my-rolled-dice)) 6)) 
+1

Обратите внимание, что это [более Lispy использовать '~'%] (http://www.lispworks.com/documentation/HyperSpec/Body/22_cab.htm) вместо '~ n', поэтому я предпочитаю, чтобы быть добрее к другим. Но если ваш код не предназначен для чтения кем-либо, кроме Racketeers, тогда '~ n', конечно, отлично. –

+0

Спасибо, Оскар и Крис !!! – merkman

Смежные вопросы