2017-06-20 66 views
1

我想在SML中編寫一個函數,它搜索字符串的元組列表,並且如果它在元組的第一個元素中找到字符串,則返回第二個元素。標準ML:搜索元組列表

fun getFromBlist (name : command, (x,y)::tail : (command*command) list) = 
    if x = name then y else getFromBlist(name, tail) 
    | getFromBlist(name, []) = ***** WHAT GOES HERE?!? ***** 

有沒有什麼我可以使用的基本情況下,將不會返回什麼?我嘗試的所有事情,我都會遇到錯誤。我也接受其他建議,謝謝。

回答

3

可以使用Option結構爲基礎的情況下返回None, 我稍微重新格式化代碼,把基本情況第一,

以及針對比賽將一些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); 

或者,這取決於你想要什麼,基礎方案,你可以返回空字符串「」,並返回是因爲你做了最初。它的種類取決於空字符串是否是有效的命令,並且您想區分該基本情況。

但總的基本情況,以及的結果,那麼 必須返還相同種類,無論是,或選項