如何在 SML 中将文件存储到数组中;

How to store a file into an array in SML;

我是 SML(和一般的函数式编程)的新手,如果有人能在两件事上帮助我,我会很高兴。

首先,我想从一个 NxM 网格形式的文件中读取,其中 N、M 是未知的,并将它们存储到一个数组中, 1d 或 2d 。 这样做的好方法是什么? 到目前为止,我所做的是将每一行作为一个字符串读取并创建一个字符串列表,然后将每一行转换为一个 char list.And,这让我想到了第二个问题。

给定一个字符列表列表 A,如何创建一个字符列表 B,它是 A.I 中每个元素的串联,认为 foldr 可以在这里应用,但是

foldr concat A

给我一个 tycon 不匹配错误。

提前致谢!

你的第一个问题有点太含糊了,因为一个好的答案将取决于你没有给出的文件结构。无论如何,一旦你的第二个问题得到回答,你似乎就有了一个可行的答案。

concat 的类型为 string list -> string。你有 tycon 不匹配,因为 char list 不是 string.

相反,List structure 有自己的函数 concat。它是一个 'a list list -> 'a list 类型的多态函数,这意味着它可以采用任意列表列表并将其展平为单个列表。因此,您第二个问题的答案很简单:

List.concat A