начните с определения e как пустого списка.
(define e '())
, затем вы можете использовать рекурсивный цикл с READ для получения целых, каждый раз, когда вы получаете один, вы можете добавить его в конец списканапример:
(set! e (append e (list number)))
Если вы боролись с LET-частью, вы можете сделать что-то вроде этого
(let loop ((number (read)))
;; check if number is actually a number or if it's 'e'
;; either append it or exit the loop (by not calling loop)
)
Отвечая на ваш следующий комментарий.
Вы можете использовать BEGIN, чтобы поместить несколько операторов в одну ветвь выражения IF, например:
(define read-int-list
(lambda ()
(let loop ((number (read)))
(if (number? number)
(begin (set! e (append e (list number)))
(loop))
'done
))))