Unfortunately I have no way to copy from oz buffer yet, so couldn't show 10th

row for Mul1. But it can be seen by running following program...

declare

GenericPascal OpList ShiftLeft ShiftRight

fun {GenericPascal Op N}

if N==1 then [1]

else L in

L={GenericPascal Op N-1}

{OpList Op {ShiftLeft L} {ShiftRight L}}

end

end

fun {OpList Op L1 L2}

case L1 of H1|T1 then

case L2 of H2|T2 then

{Op H1 H2}|{OpList Op T1 T2}

end

else nil end

end

fun {ShiftLeft L}

case L of H|T then

H|{ShiftLeft T}

else [0] end

end

fun {ShiftRight L} 0|L end

declare

fun {Mul X Y} X*Y end

declare

fun {Mul1 X Y} (X+1)*(Y+1) end

{Browse {GenericPascal Mul 10}}

{Browse {GenericPascal Mul1 10}}

## No comments:

## Post a Comment