SML:读取一行整数时出现异常

SML: Exception while reading a line of integers

fun parse file =
 let
(* A function to read an integer from specified input. *)
     fun readInt input =
   Option.valOf (TextIO.scanStream (Int.scan StringCvt.DEC) input)


 
          in
              (Array.update(acc,readInt inStream, f+1); readInts (i - 1) sumd acc has)
          end
 in
      (a, b, readInts b 0 empty [])
 end
(* ................................................................*)

我想从一个包含 2 行的文本文件中读取:
第一个将包含 2 个整数 a, b
第二个将包含 b 个整数 x1, x2,.. xb.
例如,它将采用这种形式:

    a b 
    n1 n2 n3 .. nb

我收到此错误消息:

uncaught exception Option
  raised at: Basis/Implementation/option.sml:19.25-19.31  

第 19 行:基本上 readInts i sumd acc has 如果有帮助的话。
我的代码的问题是因为 readInts 函数。 我想逐个读取整数,而不是一次读取整行(所以我不能使用像"explode"这样的函数) (这并不是说我被迫那样做,但是读取一次并形成我想要的数组 acc 和 list has 可以节省时间,而不是读取 b 整数并将其存储在缓冲区列表中,然后重新 运行 形成我想要的数据的列表)。 你能看出我的代码有什么问题吗?

readInts 的第二种情况下,您调用了 readInt 两次,使流前进到两个数字而不是一个。由于您的输入中有 b 个数字,但这样做 b 次,您尝试读取 2 * b 个数字,但最终无法读取。当这种情况发生时 TextIO.scanStream (Int.scan StringCvt.DEC) inputNONE,所以 Option.valOf 引发 Option.