我剛開始學習函數式編程,我發現自己很困惑模式匹配(我使用SML)的概念。例如下面的表達式在有序列表中插入一個元素:SML中的模式匹配 - 代表一個列表(x :: y)
fun insert (n,nil) = [n]
| insert (n, L as x::l) =
if(n < x) then n::L
else x::(insert(n,l))
如何將列表L表示爲x :: l?我知道x指的是列表中的第一個元素,其餘的是l,但我不知道該怎麼調用這個構造或者如何使用它。我讀了很多,但我找到的所有文檔都沒有提到這一點。這是另一個不使用'as'關鍵字的例子。
(*returns a list with the sum of each element added of two lists added together*)
fun addLists (nil,L) = L
| addLists (L,nil) = L
| addLists (x::xs,y::ys) =
(x + y)::(addLists(xs,ys))
謝謝你的幫忙!
L只是第二個參數,只要它具有格式x :: l – Ingo