zip,unzip および last を case 構文を使わ ずに定義せよ.
解答例
fun zip (nil,_) = nil | zip (_,nil) = nil | zip (h1::t1, h2::t2) = (h1,h2) :: zip (t1, t2) fun unzip nil = (nil,nil) | unzip ((a,b)::t) = let val (A,B) = unzip t in (a::A, b::B) end fun last [a] = a | last (_::t) = last t