2

我正在尝试使用 SML 进行基本的列表操作。

我想提取列表的每个元素并将字符串附加到该元素并将其添加回列表中。例子:

List : [A,B,C,D]
String : A
Final List: [AA,AB,AC,AD]

如何遍历 SML 列表中的每个元素?我可以使用附加字符串^并使用连接列表,@但是如何从列表中提取每个元素?

我们也可以使用地图或数组之类的东西来存储这些列表值并将其传递给 SML 中的不同函数吗?

我只能找到一些关于地图的模糊信息,而没有关于我们如何使用它的明确信息。

4

1 回答 1

1

两种简单的方法来做到这一点:

- fun addstring (x::xs) a = (a^x) :: addstring xs a  
=   | addstring []      a = []  
=   ;  
val addstring = fn : string list -> string -> string list  
- addstring ["A", "B", "C", "D"] "A";  
val it = ["AA","AB","AC","AD"] : string list  

上面使用模式匹配来破坏列表,执行操作,然后再次构造列表,随着它的进行递归。

- fun addstring2 xs a = map (fn x => a^x) xs;  
val addstring2 = fn : string list -> string -> string list  

- addstring2 ["A", "B", "C", "D"] "A";  
val it = ["AA","AB","AC","AD"] : string list  

这个比较简单(如果可能比 addstring 中的显式情况更难阅读。)但它显示了 map 的使用方式 - 您指定一个将每个元素从源域映射到目标域的函数,给它源域中的元素列表,它返回目标域中的列表。

当然,这些都不会对列表进行就地更新,它们会返回新列表。

于 2010-11-23T04:25:01.173 回答