Когда вы вызываете внутренний read
в своем коде, этот вызов будет читать не со стандартного ввода, а из самого вашего файла, потому что читатель, который преобразует входной файл в список s-exps, будет использовать то же чтение функция. Так что, да, вы можете использовать его, если переопределите, иначе результат будет сложнее предвидеть. Вот пример read.scm
:
(define (foo m)
(display m)
(read))
(display (foo "input:"))
200
(newline)
Пример использования:
% mit-scheme --silent < read.scm
input:200
Значение 200
будет прочитано вызовом функции, оно не будет возвращено в окончательный список, представляющий код.
Чтобы определить свою собственную read-keyboard
функциональность, вы можете взять в качестве модели это .