Мне нужно создать произвольную букву ASCII (верхний или нижний регистр) или символ (но не номер) в схеме, и мне было интересно, как это сделать. В настоящее время я получил кодГенерировать случайный символ ASCII
(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)
, который работает (без ошибок), но вместо того, чтобы печатать случайное ASCII письмо/символ, я получаю «час», потому что я не знаю, как сделать это. Я гугл, но ничего не мог найти. Любая помощь будет оценена по достоинству. Благодаря!
EDIT:
(define random-char
(let* ((chars '("a" "e" "i" "o" "u"))
(len (length chars)))
(lambda()
(list-ref chars (random len)))))
(define a 1)
(define b 16)
(define (s8 a b)
(when (<= a b)
(if (= (mod a 8) 0)
(random-char)
(write a))
(s8 (+ a 1) b)))
(s8 a b)
дает ошибку
1234567
Error: execute: unbound symbol: "random" [s8, s8, s8, s8, s8, s8, s8, s8, random-char]
Не изобретайте велосипед! Схема имеет встроенные процедуры для генерации случайных значений. –