Io 将整数文件读取到sml中的整数列表

Io 将整数文件读取到sml中的整数列表,io,sml,smlnj,Io,Sml,Smlnj,您好,我不想在标准ML中创建一个函数,该函数将接受由多行中的空格分隔的整数作为输入,并逐个返回它们的列表。 例如,对于输入文件 3 4 5 6 7 8 4 4 5 6 2 3 6 4 3 2 2 3 5 6 7 返回列表[3,4,5,6,7,8,4,4,5,6,2,3,6,4,3,2,2,3,5,6,7] 我自己也曾试图弄明白,但我做不到,因为我对ML的IO函数没有很好的了解。 谢谢你的帮助。 谢谢您可以使用和的组合。这将生成一个int选项,该选项包含文件中的下一个整数(如果有) 然后,您可

您好,我不想在标准ML中创建一个函数,该函数将接受由多行中的空格分隔的整数作为输入,并逐个返回它们的列表。 例如,对于输入文件

3 4 5 6 7 8 4
4 5 6 2 3 
6 4 3 2
2 3 5 6 7
返回列表[3,4,5,6,7,8,4,4,5,6,2,3,6,4,3,2,2,3,5,6,7]

我自己也曾试图弄明白,但我做不到,因为我对ML的IO函数没有很好的了解。 谢谢你的帮助。
谢谢

您可以使用和的组合。这将生成一个int选项,该选项包含文件中的下一个整数(如果有)


然后,您可以简单地建立文件中所有整数的列表,方法是反复调用此函数,直到得到“无”,表示不再有整数。

您可以使用和的组合。这将生成一个int选项,该选项包含文件中的下一个整数(如果有)

然后,您可以简单地建立一个文件中所有整数的列表,反复调用此函数,直到得到“无”,表示不再有整数。

我同意Sebastian的观点。 下面是一个读取整数的示例

fun int_from_stream stream =
  Option.valOf (TextIO.scanStream (Int.scan StringCvt.DEC) stream)

val fstream = TextIO.openIn file
val N = int_from_stream fstream
我同意塞巴斯蒂安的观点。 下面是一个读取整数的示例

fun int_from_stream stream =
  Option.valOf (TextIO.scanStream (Int.scan StringCvt.DEC) stream)

val fstream = TextIO.openIn file
val N = int_from_stream fstream
试试这个:

  fun readint(infile : string) = let

        val ins = TextIO.openIn infile


    fun loop ins =

        case TextIO.scanStream( Int.scan StringCvt.DEC) ins of

    SOME int => int :: loop ins

    | NONE => []

          in
 loop ins before TextIO.closeIn ins

  end;
试试这个:

  fun readint(infile : string) = let

        val ins = TextIO.openIn infile


    fun loop ins =

        case TextIO.scanStream( Int.scan StringCvt.DEC) ins of

    SOME int => int :: loop ins

    | NONE => []

          in
 loop ins before TextIO.closeIn ins

  end;