将选项转换为sml中的列表

Kom*_*eem 1 list sml pattern-matching

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

 fun  get_substitutions1 ((x::xs)::ys, s) = 
 all_except_option((x::xs),s) @ get_substitutions1(ys,s) ;
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*erg 8

你基本上有两个选择.如果你知道它(肯定)总是返回SOME lst,那么你可以使用带a的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
Run Code Online (Sandbox Code Playgroud)

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

case x of
  SOME lst => lst
| NONE => ...
Run Code Online (Sandbox Code Playgroud)