list pairのpattern matchingの計算
Concepts, Techniques, and Models of Computer Programming (MIT Press)
で取り上げられているパスカルの三角形(で日本語訳は正しいでしょうか)に関するfunctionにcons( list pair) のpattern matching が用いられていますがelementはどのように追加され機能するのか教えてください。以下コード全文です。言語:oz
declare Pascal AddList ShiftLeft ShiftRight fun {Pascal N}
if N==1 then [1] else
{AddList {ShiftLeft {Pascal N-1}} {ShiftRight {Pascal N-1}}}
end end
fun {ShiftLeft L} case L of H|T then H|{ShiftLeft T}
else [0] end end
fun {ShiftRight L} 0|L end
fun {AddList L1 L2} case L1 of H1|T1 then
case L2 of H2|T2 then H1+H2|{AddList T1 T2}
end
else nil end
end
ShiftLeftとAddListに用いられているのが分かると思います。いくらグーグルしても探し方なのかなかなかまとまった情報がなかったので少し読み進める前に最後の切り札として質問してみることにしました。よろしくお願いします。