的元組的列表搜索我是很新的SML/NJ和我種的丟失。我一直在努力實施是通過具有一定列出了它的元組的列表中去搜索功能,例如VAL X = [(5,2,[9,8,7]),(3,4,[ 6,5,0]),(11,12,[8,3,1])]。我想我的函數的元組的第一個元素添加到新的名單,一旦有我的目標數量和元組的元素3號之間的匹配。我嘗試了幾個實現,但目前爲止它們都沒有正常工作。SML/NJ列表
type id = int* int* int list;
val b:id list = [(5,2,[9,8,7]), (3,4,[6,5,0]), (11, 12, [8,3,1])]
val number: int = 8;
val a: int list = nil;
fun findNum(nil) = a | findNum (x: id list) =
let val tem = hd(x)
val theList = #3tem
val i = #1tem
fun findMatch(nil) = a | findMatch(tem) =
if (number = hd(theList)) then i::a
else findMatch (tl(theList))
in findNum(tl(x))
end;
findNum(b);
我知道這是寫得很差,這就是爲什麼它總是返回空列表。我覺得我需要做,而不是讓/在/結束,所以它會遞歸地調用列表中的其餘元組。我的問題是我不知道該怎麼做,因爲如果我使用if/else,那麼我不能在函數內聲明一些值。我很欣賞任何建議或提示。
謝謝
你能添加輸入的一個簡單的例子,期望的輸出例如用於輸入'[(5,2,[9,8,7]),(3,4,[6,5,0]),(11, 12,[8,3,1])]'你期望輸出什麼? – coder
我希望它返回記錄一次的第三個元素數量的第一元素列表都匹配。所以在這種情況下應該是[5,11]。 –
非常感謝。 –