我试图在SML中编写一个函数来搜索元组列表中的字符串,如果它在元组的第一个元素中找到字符串,它将返回第二个元素。
fun getFromBlist (name : command, (x,y)::tail : (command*command) list) =
if x = name then y else getFromBlist(name, tail)
| getFromBlist(name, []) = ***** WHAT GOES HERE?!? *****
我可以使用任何可以返回基本情况的东西吗?我尝试的一切,我得到一个错误。我也欢迎其他建议,谢谢。
答案 0 :(得分:3)
您可以使用Option结构为基本案例返回NONE, 我稍微重新格式化了代码,将基本案例放在第一位,
除了为匹配返回SOME y,为基本情况返回NONE。 从那里你可以使用case语句或模式匹配来检索结果。
type command = string;
fun getFromBlist(name, []) = NONE
| getFromBlist (name : command, (x,y)::tail : (command*command) list) =
if x = name
then SOME y
else getFromBlist(name, tail);
或者,根据您的需要,对于基本情况,您可以返回空字符串"",并按原样返回y。它取决于空字符串是否是有效命令,并且您想区分它和基本情况。
但总结基本情况,以及然后的结果 必须返回相同的类型,无论是字符串,还是选项