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

如何将文件存储到SML中的数组中;,sml,smlnj,Sml,Smlnj,我是SML(和一般的函数式编程)的新手,如果有人能帮我做两件事,我会很高兴 首先,我想从一个具有NxM网格形式的文件中读取,其中N,M是未知的,并将它们存储到一个数组中,可以是1d或2d。 这样做的好方法是什么? 到目前为止,我所做的是将每一行作为字符串读取,并创建一个字符串列表,然后将每一行转换为一个字符列表。这就引出了第二个问题 给定一个字符列表a如何创建一个字符列表B,它是a中每个元素的串联。我想foldr可以在这里应用,但是 foldr concat A 给我一个tycon不匹配错误

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

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

给定一个字符列表a如何创建一个字符列表B,它是a中每个元素的串联。我想foldr可以在这里应用,但是

foldr concat A
给我一个tycon不匹配错误


提前谢谢

您的第一个问题有点模糊,因为好的答案取决于文件的结构,而您没有给出。无论如何,你似乎有一个答案,只要你的第二个问题得到回答,这个答案就会生效

concat
具有类型
string list->string
。tycon不匹配,因为
字符列表
不是
字符串

相反,有自己的函数名为
concat
。它是一个多态函数,类型为
“列表->”列表
,意思是它可以获取任意列表并将其展平为单个列表。因此,第二个问题的答案很简单:

List.concat A

这对我帮助很大!非常感谢你。它也帮助我做了一些自己的研究。以防将来有人需要:1d字符数组:分解(List.concat)A'2d字符数组:'Array2.fromList(map explode A)'