可变分区未在 mozart Oz 中引入错误

Variable Partition not introduced error in mozart Oz

我正在尝试在 Mozart OZ 中实现快速排序,但出现变量未引入错误。我是这种语言的新手。请帮帮我。

 declare
fun {QuickSort L}
    case L
    of X|L2 then Left Right SL SR in
       {Partition L2 X Left Right}
       SL={QuickSort Left}
       SR={QuickSort Right}
       {Append SL X|SR}
    [] nil then  nil
 end
 end
 {Browse {QuickSort[4 7 66 545 1 65 22 322]}}
proc {Partition Xs Pivot Left Right}
   case Xs
   of X|Xr then
      if X < Pivot
      then Ln in
         Left = X | Ln
         {Partition Xr Pivot Ln Right}
      else Rn in
         Right = X | Rn
         {Partition Xr Pivot Left Rn}
      end
   [] nil then Left=nil Right=nil
   end
end


fun lazy {LQuickSort Xs}
   case Xs of X|Xr then Left Right SortedLeft SortedRight in
      {Partition Xr X Left Right}
      {LAppend {LQuickSort Left} X|{LQuickSort Right}}
   [] nil then nil
   end
end

这是我的作业之一: 这是解决方案:

declare
fun {LAppend Xs Ys}
   case Xs of X|Xr then
      X|{LAppend Xr Ys}
   [] nil then Ys
   end
end

declare
proc {Partition L2 X L R}
   case L2
   of Y|M2 then
      if Y<X then Ln in
     L=Y|Ln
     {Partition M2 X Ln R}
      else Rn in
     R=Y|Rn
     {Partition M2 X L Rn}
      end
   [] nil then L=nil R=nil
   end
end

declare
fun {LQuicksort L}
   case L of X|L2 then Left Right SL SR in
      {Partition L2 X Left Right}
      SL={LQuicksort Left}
      SR={LQuicksort Right}
      {LAppend SL X|SR}
   [] nil then nil
   end
end

declare
Xs={LQuicksort [3 1 4 1 5 9 2 6 5]}
{Browse Xs}