我是sml的新手,現在我正在試圖定義一個zip函數,它將兩個列表作爲一個元組。 這裏是代碼。 我得到它的工作,但我有幾個問題關於sml zip函數的幾個問題
exception Mismatch;
fun zip ([],[]) = []
| zip ((x::xs),(y::ys)) = (x, y)::zip (xs, ys)
| zip (_, _) = raise Mismatch;
我可以定義例外zip函數裏面,就像讓最後,我試過了,但總是出現錯誤。
另一個問題是第二個模式匹配,我寫
zip ([x::xs],[y::ys]) = (x, y)::zip (xs, ys)
也給我的錯誤。
Zip取一個元組,但每個元素都是列表,爲什麼我不能像其他列表一樣使用[x :: xs]?
最後一個問題,在模式匹配中,順序是否重要?我想是的,我改變了順序,得到了錯誤,只是想確保
感謝
非常感謝你的解釋,所以[x :: xs]意味着列表中有兩個元素,x和xs? – hao
'x :: xs'表示包含1個或更多元素的列表。 'x'是一個元素,'xs'是剩下的列表。 –