В общем, руководство пользователя содержит несколько хороших примеров и объяснений.

ужно создать новый экземплярlexer привязан к стандартному потоку ввода.
Тем не менее, когда я набираю

val lexer = makeLexer( fn n => inputLine( stdIn ) );

Я получаю ошибку, которую не понимаю:

stdIn:1.5-11.13 Error: operator and operand don't agree [tycon mismatch]
  operator domain: int -> string
  operand:         int -> string option
  in expression:

(makeLexer это имя функции присутствует в моем исходном коде)

Ответы на вопрос(2)

Ваш ответ на вопрос