我正在爲類進行SML編程確認並卡在一個問題上。問題是: 「編寫一個使用map,foldr或foldl的ML函數來計算非空列集合的交集。在這裏你可以假設集合被表示爲列表。對於這個問題,你可以使用輔助命名函數(例如,isMember)提示:非空的集合列表至少包含一個集合。「SML使用map,foldr或foldl函數設置交叉點
這就是我到目前爲止任何人都可以指向正確的方向我對SML相當陌生嗎?
fun member(x,[]) = false
| member(x,L) =
if x=hd(L) then true
else member(x,tl(L));
fun intersect(L1,L2) = if tl(L1) = [] then L1
else if member(hd(L1),L2) = true then L1
else intersect(tl(L1),L2);
fun combine(L1) = if tl(L1) = [] then hd(L1)
else
foldr intersect [] L1;
我想要的代碼是通過執行列表的列表的組合功能開始。它檢查是否只有一個列表(即t1(L1)= []),如果它是真的,那麼就打印第一個列表。如果它的假我想調用然後調用相交函數的foldr函數。理論上,在foldr函數期間,我希望它檢查第一個列表和第二個列表,並且只保留相同的值,然後檢查下一個列表以保留值,並保持這樣做直到它檢查了每個列表。完成之後,我希望它打印每個列表中的每個值(即集合的交集)。
我知道我的成員函數的工作原理及功能結合起來做什麼它應該做的,我的問題是,什麼是錯的交集功能,有人可以解釋什麼交集應該做的事?
我明顯不想直接回答,這不是我在這裏。我需要幫助才能獲得正確的答案。
你有一個具體的問題?你期望這個代碼做什麼,它實際上做了什麼? –
你還沒有問過一個具體的問題。 –