Я пытаюсь получить случайную строку из списка строк в схеме.
Пример списка ("this" "that" "today" "вчера")
Таким образом, на основе длины списка создается случайное число и выводится это слово. Но продолжайте получать ошибку!
Я попробовал это так:
;; produces random number that should be input to the random-function
(define (random-num list)
(random-function ((random (length (list))) list)))
;; loops the number of times till random number is 0 and outputs the list value
(define (random-function num list )
(cond
[(zero? num) (car list)]
[else (random-function (- num 1) (cdr list))]))
Ошибка:
procedure application: expected procedure, given:
("this" "that" "today" "yesterday") (no arguments)
Когда я пытаюсь сделать:
(random-function (random (length list))
на консоли я получаю случайное число.
Не понимаю, почему здесь происходит сбой, когда это делается внутри моей программы ???
Могу ли я сделать это лучше, чем много раз.
В Java я бы использовал массив и дал позицию напрямую.
Во всяком случае, сделать это в схеме тоже?