Я пытаюсь сопоставить целочисленное выражение с символьными литералами, и компилятор жалуется на несовпадение типов.
let rec read file includepath =
let ch = ref 0
let token = ref 0
use stream = File.OpenText file
let readch() =
ch := stream.Read()
let lex() =
match !ch with
| '!' ->
readch()
| _ -> token := !ch
ch должен быть int, потому что это то, что возвращает stream.Read, чтобы использовать -1 в качестве маркера конца файла. Если я заменю '!'
на int '!'
, он все равно не будет работать. Какой лучший способ сделать это?