在 ML(SMLNJ) 中打开文件

发布于 2024-08-19 08:31:09 字数 303 浏览 11 评论 0原文

我需要读取 ML (SLMNJ) 中的文件并将其保存在某些结构中。我需要读取一些指向图形声明的数据:(

[( 1 , 2 , 13 ),( 2 , 3 , 3 ),( 2 , 4 , 8 ),( 2 , 5 , 4 ),( 3 , 1 , 5 ),( 3 , 4 , 1 ),( 4 , 6 , 5 ),( 5 , 5 , 5 ),( 6 , 4 , 6 )]

第一个数字:节点名称,第二个数字:连接节点的名称,该鬃毛的第三个数字权重(每个()显示一个鬃毛))

例如,这是测试输入如何读取文件以及保存它的结构

I need to read file in ML (SLMNJ) and save it in some structures. I need to read some data that points to graph declaration:

[( 1 , 2 , 13 ),( 2 , 3 , 3 ),( 2 , 4 , 8 ),( 2 , 5 , 4 ),( 3 , 1 , 5 ),( 3 , 4 , 1 ),( 4 , 6 , 5 ),( 5 , 5 , 5 ),( 6 , 4 , 6 )]

(first number: name of the node , secend number: name of connected node , third number weight for this mane (each () show one mane ) )

for expamle this is test input how to read file and which structure to save it

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

几度春秋 2024-08-26 08:31:09

要从文件中读取,请遵循以下每行字符串列表:

val infile = "c:/input.txt" ;

fun readlist (infile : string) = let 

  val ins = TextIO.openIn infile 

  fun loop ins = 

   case TextIO.inputLine ins of 

      SOME line => line :: loop ins 

    | NONE      => [] 

in 

  loop ins before TextIO.closeIn ins 

end ;

val pureGraph =  readlist(infile);

使用此函数,您可以将其解析为元组 (x,y,z ) :

fun creatGraph([],reList) = reList

|creatGraph(x::y::z::input,reList) =  creatGraph(input,reList@[(x,y,z)]);

for reading from file follow this to list of string per line :

val infile = "c:/input.txt" ;

fun readlist (infile : string) = let 

  val ins = TextIO.openIn infile 

  fun loop ins = 

   case TextIO.inputLine ins of 

      SOME line => line :: loop ins 

    | NONE      => [] 

in 

  loop ins before TextIO.closeIn ins 

end ;

val pureGraph =  readlist(infile);

and with this function you can parse it to tuple (x,y,z ) :

fun creatGraph([],reList) = reList

|creatGraph(x::y::z::input,reList) =  creatGraph(input,reList@[(x,y,z)]);
木落 2024-08-26 08:31:09

这个问题非常适合解析组合器,你可以从我的朋友格雷格那里窃取哈佛大学的莫里塞特

如果您想了解基本思想,请阅读 Graham Hutton 的论文 Higher - 用于解析的函数的顺序。如果您想了解如何在标准 ML 中实现 I/O,请参阅 标准基础库中的 TextIO 模块。如果您希望有人为您编写代码,您可能访问了错误的网站。

This problem is perfectly suited to parsing combinators, which you can steal from my friend Greg Morrisett at Harvard.

If you want to understand the underlying ideas, read Graham Hutton's paper Higher-Order Functions for Parsing. If you want to know how to implement I/O in Standard ML, consult the TextIO module in the Standard Basis Library. If you want someone to write the code for you, you may have reached the wrong web site.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文