fun dummy() {} Func = type(dummy); NFunc = type(print); # The function type is not a built-in at the moment, # but we can define it manually. fun copyList(list: List) { list2 = []; i = 0; while i < count(list): { list2[i] = list[i]; i = i+1; } return list2; } fun numericLess(a: int | float, b: int | float) return a < b; fun bubbleSort(list: List, less: NFunc | Func = numericLess) { list2 = copyList(list); do { swapped = false; i = 0; while i < count(list2)-1 and not swapped: { if less(list2[i+1], list2[i]): { swapped = true; tmp = list2[i+1]; list2[i+1] = list2[i]; list2[i] = tmp; } i = i + 1; } } while swapped; return list2; } unordered_list = [3, 2, 1, 6, -2]; ordered_list = bubbleSort(unordered_list); print(ordered_list, '\n'); # [-2, 1, 2, 3, 6]