2016-12-24 3 views
1

Я новичок в схеме; Например, я больше знаком с python. Тем не менее, я пытаюсь учиться, потому что схема кажется очень интересным языком.Нет ошибок, нет вывода - что случилось?

Я пытаюсь создать код, который

Создать программу, которая печатает все целые числа включительно между интервалом (а, б), и заменяет все кратные 8 в последовательности со случайным (равномерно распределенный), нечисловой, не-пробельный, печатный символ ASCII. Предположим, что во всех случаях есть < b. Если номер имеет более 1 цифры, убедитесь, что количество символов в замене соответствует!

Первоначально он был, так что я мог бы попытаться ответить на вопрос here (код гольф вопрос), но теперь я просто пытаюсь сделать это, потому что я не знаю, как, поэтому я не беспокоюсь о длина решения. Прямо сейчас, я ничего не делаю с битами ascii, просто пытаюсь заставить что-то работать. Я кодирую его онлайн, в repl.it, и нет никакого выхода, даже ошибки. Моим ожидаемым выходом будет выполнение функции для интервалов с 1 по 16 и печать последовательности 1 2 3 4 5 6 7 h 9 10 11 12 13 14 15 h.

(define a 1) 
(define b 16) 
(define (s8 a b) 
(let loop ((a<=b)) 
    (if (= (mod a 8) (0)) 
    (write h)) 
    (else 
    (write a)) 
    (define a (+ a 1)) 
(s8 a b) 
(write "hello") 

Любая помощь будет принята с благодарностью. Благодаря!

ответ

2

Я не специалист, но я хорошо знаком с другими лизисами и с вашим кодом. Я могу себе представить, как вы смущены. Я немного закрепил ваш код, чтобы он работал, хотя я избегал сильно меняться, поэтому результат, вероятно, не совсем то, что вы ожидаете.

(define a 1) 
(define b 16) 
(define (s8 a b) 
    (when (<= a b) 
    (if (= (mod a 8) 0) 
     (write "h") 
     (write a)) 
    (s8 (+ a 1) b))) 
(s8 a b) 
(write "Hello") 

Во-первых, в Лиспах, если всегда имеет еще к регистру, требуется три выражения, первое испытание, то второй является «затем» ветвь, третий является «еще» филиал. «когда» и «если» не позволяют вам иметь несколько строк кода последовательно, но вы теряете соответственно «то» или «еще».

Во-вторых, в схеме вы выполняете цикл с рекурсией. Afaik, в базовой схеме это единственный вид цикла, но у них есть много трюков, чтобы его оптимизировать.

+0

Спасибо, я был довольно смущен, и это сработало! знак равно – heather