我需要編寫一個函數,它需要一個列表並將其分成2個列表。第一個列表將保存位於奇數位置的元素,第二個列表保存位於偶數位置的元素。這裏是我的嘗試,給了我以下警告:將列表拆分成奇數和偶數位置的2個列表 - SML?
警告:類型乏不是一概而論,因爲 值的限制被實例化虛擬類型(X1,X2,...)
如何提高呢?
fun splt (lst: int list) =
let
fun splt2 (lst: int list, count: int, lst1: int list, lst2: int list) =
if null lst
then []
else if (count mod 2 = 0)
then splt2 (tl lst, count+1, hd lst::lst1, lst2)
else splt2 (tl lst, count+1, lst1, hd lst::lst2)
in
splt2 (lst,1,[],[])
end
這是我找到的第二個正確實現,但我主要是想修復第一個! I want to split a list into a tupple of odd and even elements
fun split [] = ([], [])
| split [x] = ([x], [])
| split (x1::x2::xs) =
let
val (ys, zs) = split xs
in
((x1::ys), (x2::zs))
end;
更新:改進只是這個替換
if null lst then
[]
:
if null lst then
[lst1]@[lst2]
我看過你的問題了最後幾天。 SO並不是要教你所有的課程。你將不得不付出更多努力。 – naomik
@naomik但我喜歡SO。我在這裏學到的比在我的班上更多。請分享你的知識。我相信很多人都會從這些小問題中受益。 OMG! –