将文本文件中的整数读入列表时,Sml溢出

时间:2017-04-18 11:05:04

标签: text input overflow smlnj

我正在尝试导入包含整数的SML / NJ中的文本文件。 虽然我的方法适用于小输入,但在尝试导入更大的文件时会出现溢出。

在文件中,第一个整数是后面的元素数,最多可以是2 * 10 ^ 6,后面的数字可以是最大10 ^ 9的正整数。鉴于这些数字在Int限制范围内:

程序的堆栈是否太小而且我有溢出? SML / NJ中的列表是否存在大小限制。

我将整数读入列表的代码:

fun parse file =
    let
        fun next_int input =
        Option.valOf (TextIO.scanStream (Int.scan StringCvt.DEC) input)
        val stream = TextIO.openIn file
        val n = next_int stream
    val _ = TextIO.inputLine stream
        fun scanner 0 acc = acc
          | scanner i acc =
            let
                val d = next_int stream
            in
                scanner (i - 1) (d :: acc)
            end
    in
        (n, rev(scanner n []))
    end  

我得到的错误:

uncaught exception Overflow [overflow]
  raised at: Basis/Implementation/num-scan.sml:231.20-231.28

0 个答案:

没有答案