私は Chris Okasaki の純粋関数型データ構造を読んでいますが、問題を抱えている例が 1 つあります。ここにあります。rotate
特に、関数とexec
関数がどのように機能するかわかりません。
fun rotate($Nil, y::_, a) = $Cons (y, a)
| rotate ($Cons (x, xs), y :: ys, a) =
$Cons(x, rotate (xs, ys, $Cons (y, a)))
fun exec (f, r, $Cons (X, s)) = (f, r, s)
| exec (f, r, $Nil) = let val f' = rotate (f, r, $Nil) in (f', [], f') end
誰かがこれを愚かな人々の言葉で表現できますか? 私はまだ ML ベースの言語を学んでいます。:-)