Как "let loop" узнает, когда вы достигли конца файла? Что возвращает read-char, когда достигает конца? Подсказка: читайте про eof-объект? сказуемое. Предикат - это функция, которая возвращает #t или #f. Возможно, вам придется использовать cond, а не регистр, чтобы использовать этот предикат
Кроме того, переменные строк, символов и слов являются локальными по отношению к именованному let, поэтому вы не сможете затем распечатать его "снаружи". (Подсказка: напечатайте их внутри цикла, когда (eof-object? Port) возвращает # t.
Стиль quibble: не используйте имя "порт" для символа, который возвращает read-char. «in» - это порт (дескриптор файла), возможно, вы можете использовать «ch» вместо «port».