load list fmod MERGE-SORT is protecting LIST-INT . op mergeSort : List -> List . op merge : List List -> List [comm] . --- comm attributt er et lite trick som gjoer funksjonen enda kortere --- ikke noedvendig for eksamensbesvarelse vars L L' : List . vars NEL NEL' : NeList . vars I J : Int . eq mergeSort(nil) = nil . eq mergeSort(I) = I . ceq mergeSort(NEL NEL') = merge(mergeSort(NEL), mergeSort(NEL')) if length(NEL) == length(NEL') or length(NEL) == s length(NEL') . eq merge(nil, L) = L . ceq merge(I L, J L') = I merge(L, J L') if I <= J . endfm red mergeSort(2 89 0 -3 1 6 45 23 78 11 1 1 1 1) . red mergeSort(nil) . red mergeSort(34) . red mergeSort(-6 -7) . red mergeSort(2 89 0) . red mergeSort(2 89 0 -3) . red mergeSort(2 89 0 -3 1) .