将选项转换为sml中的列表

时间:2013-01-28 11:42:13

标签: list pattern-matching sml

我有以下接受字符串列表和字符串的函数。它返回一个字符串列表。

 fun  get_substitutions1 ((x::xs)::ys, s) = 
 all_except_option((x::xs),s) @ get_substitutions1(ys,s) ;

我面临的问题是all_except_option返回OPTION,因此当我尝试连接它时出现错误。我的问题是如何从OPTION中提取LIST。

1 个答案:

答案 0 :(得分:8)

你基本上有两种选择。如果你知道它(肯定)总是返回SOME lst,那么你可以使用valOf函数,该函数需要'a option并返回'a

- val a = SOME [1,2,3,3];
val a = SOME [1,2,3,3] : int list option
- val b = valOf a;
val b = [1,2,3,3] : int list

您的另一个选择是使用模式匹配解压缩

case x of
  SOME lst => lst
| NONE => ...