【问题标题】:How to store a file into an array in SML;如何将文件存储到 SML 中的数组中;
【发布时间】:2017-10-12 22:01:39
【问题描述】:

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

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

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

foldr concat A

给我一​​个 tycon 不匹配错误。

提前致谢!

【问题讨论】:

    标签: sml smlnj


    【解决方案1】:

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

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

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

    List.concat A
    

    【讨论】:

    • 这对我帮助很大!非常感谢。它也帮助我做一些我自己的研究。如果将来有人需要它们: 1d char array : explode (List.concat) A' 2d char arrat : 'Array2.fromList (map explode A)'
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多