inputLine возвращает string option
, и я предполагаю, что ожидается string
.
То, что вы хотите сделать, это либо makeLexer
взять string option
, вот так:
fun makeLexer NONE = <whatever you want to do when stream is empty>
| makeLexer (SOME s) = <the normal body makeLexer, working on the string s>
или измените свою строку на:
val lexer = makeLexer( fn n => valOf ( inputLine( stdIn ) ) );
valOf принимает тип параметра и распаковывает его.
Обратите внимание, что поскольку inputLine
возвращает NONE
, когда поток пустой, вероятно, лучше использовать первый подход, а не второй.