我正在阅读Chris Okasaki的纯功能数据结构,并且有一个例子遇到了问题。它位于here。我特别不理解rotate
和exec
功能是如何工作的:这个标准ML代码究竟做了什么?
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的语言。 :-)
美元符号是他对懒惰评价的表示法。实质上,这是一个实时的持续队列,您可以将项目从尾部旋转到前部。 – 2009-11-12 23:03:28