【问题标题】:Reading an integer file to an integer list in sml将整数文件读入 sml 中的整数列表
【发布时间】:2015-04-22 22:02:29
【问题描述】:

您好,我不会在标准 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 功能没有很好的了解。 我会很感激你的帮助。 谢谢

【问题讨论】:

    标签: io sml smlnj


    【解决方案1】:

    我同意塞巴斯蒂安的观点。 这是一个读取整数的示例

    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
    

    【讨论】:

      【解决方案2】:

      您可以使用TextIO.scanStreamInt.scan 的组合。这将产生一个int option,其中包含文件中的下一个整数(如果有的话)。

      然后,您可以简单地构建文件中所有整数的列表,方法是重复调用此函数,直到获得 NONE,表示不再有整数。

      【讨论】:

        【解决方案3】:

        试试这个:)

          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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-08
          • 2018-12-03
          • 2018-05-07
          • 1970-01-01
          • 1970-01-01
          • 2020-10-28
          • 1970-01-01
          • 2015-11-23
          相关资源
          最近更新 更多