app "quicksortapp" packages { base: "platform" } imports [base.Task, Quicksort] provides [ main ] to base main : Task.Task {} [] main = Task.after Task.getInt \n -> unsortedList = if n == 0 then # small unsorted list of 20 elements (0-9) [ 2, 4, 4, 0, 3, 8, 3, 6, 4, 9, 4, 6, 3, 5, 2, 2, 3, 1, 1, 3 ] else # big unsorted list of 2000 elements (0-1000) [ 891, 330, 190, 304, 991, 803, 54, 362, 428, 318, 59, 631, 995, 36, 711, 450, 654, 614, 74, 288, 198, 11, 369, 290, 7, 934, 72, 642, 955, 782, 724, 811, 3, 402, 517, 128, 902, 612, 454, 281, 794, 109, 497, 454, 238, 541, 215, 672, 4, 855, 908, 868, 177, 885, 460, 133, 367, 113, 131, 191, 148, 254, 914, 680, 735, 783, 225, 720, 708, 447, 625, 526, 529, 914, 126, 857, 574, 234, 249, 433, 779, 74, 275, 302, 315, 131, 518, 572, 301, 450, 346, 630, 928, 420, 183, 287, 420, 730, 512, 533, 69, 942, 214, 801, 196, 633, 13, 493, 343, 910, 462, 939, 394, 367, 619, 583, 674, 265, 113, 909, 202, 135, 859, 924, 214, 27, 30, 531, 662, 90, 917, 35, 236, 210, 456, 758, 338, 514, 590, 907, 106, 147, 625, 199, 766, 628, 894, 552, 108, 982, 94, 751, 734, 678, 371, 894, 204, 719, 559, 676, 362, 782, 959, 826, 793, 935, 17, 837, 179, 679, 819, 33, 197, 611, 719, 718, 688, 365, 36, 62, 349, 719, 598, 826, 135, 218, 889, 282, 948, 442, 345, 453, 386, 840, 95, 921, 293, 241, 494, 774, 139, 712, 373, 730, 301, 472, 805, 41, 355, 384, 188, 168, 869, 17, 339, 55, 238, 476, 394, 725, 130, 53, 978, 762, 418, 419, 920, 913, 780, 723, 750, 277, 92, 37, 979, 971, 882, 936, 190, 216, 452, 495, 450, 597, 567, 994, 587, 777, 700, 685, 991, 995, 533, 443, 945, 56, 186, 413, 239, 286, 234, 486, 399, 410, 853, 516, 443, 999, 591, 16, 452, 314, 459, 343, 296, 189, 84, 465, 640, 616, 122, 665, 379, 858, 930, 188, 47, 445, 959, 93, 244, 89, 610, 26, 952, 294, 77, 619, 775, 661, 291, 290, 443, 458, 689, 107, 517, 794, 827, 313, 506, 568, 264, 400, 485, 972, 430, 953, 258, 409, 305, 729, 288, 146, 133, 603, 568, 748, 891, 521, 199, 12, 714, 180, 848, 317, 947, 454, 166, 776, 907, 493, 195, 5, 631, 791, 86, 932, 809, 464, 80, 846, 323, 300, 658, 869, 712, 316, 551, 700, 438, 457, 516, 747, 54, 854, 636, 72, 352, 24, 159, 222, 844, 427, 369, 969, 208, 337, 663, 388, 624, 943, 781, 868, 563, 559, 638, 818, 205, 927, 265, 235, 713, 871, 617, 34, 751, 530, 36, 418, 251, 654, 213, 99, 799, 808, 439, 609, 263, 481, 113, 706, 185, 386, 776, 152, 178, 468, 922, 0, 942, 817, 428, 66, 399, 355, 450, 792, 549, 237, 532, 212, 254, 279, 941, 685, 211, 100, 994, 182, 503, 707, 368, 472, 297, 820, 905, 83, 319, 345, 47, 547, 769, 713, 204, 153, 687, 372, 656, 914, 448, 872, 73, 955, 318, 381, 254, 849, 719, 909, 905, 558, 471, 142, 136, 865, 392, 650, 342, 698, 199, 385, 673, 632, 14, 792, 523, 862, 872, 792, 957, 739, 713, 373, 72, 464, 667, 394, 933, 305, 332, 444, 960, 322, 900, 841, 146, 566, 723, 884, 355, 153, 49, 928, 689, 304, 467, 306, 952, 277, 943, 421, 216, 704, 525, 293, 974, 754, 978, 96, 582, 5, 811, 229, 304, 52, 610, 160, 872, 831, 388, 925, 216, 665, 435, 913, 753, 381, 452, 786, 737, 834, 191, 165, 16, 174, 997, 735, 976, 189, 340, 161, 653, 849, 447, 264, 950, 349, 4, 375, 312, 3, 279, 833, 600, 721, 205, 162, 832, 451, 998, 26, 689, 870, 215, 651, 419, 831, 70, 308, 596, 500, 624, 672, 481, 522, 390, 79, 410, 77, 336, 502, 10, 95, 697, 591, 385, 820, 807, 726, 537, 359, 772, 548, 768, 981, 838, 90, 599, 172, 272, 718, 417, 789, 578, 669, 786, 534, 403, 602, 180, 115, 205, 96, 573, 359, 830, 970, 431, 533, 342, 777, 600, 880, 374, 262, 704, 31, 710, 148, 264, 288, 501, 540, 851, 929, 420, 93, 5, 350, 80, 810, 8, 153, 369, 582, 908, 756, 523, 964, 124, 842, 152, 378, 946, 720, 425, 975, 844, 211, 378, 963, 966, 297, 763, 891, 180, 505, 33, 201, 377, 167, 35, 600, 698, 801, 977, 378, 361, 35, 401, 479, 266, 758, 32, 956, 943, 705, 860, 737, 791, 727, 162, 997, 213, 785, 804, 292, 56, 651, 567, 547, 866, 531, 835, 875, 122, 721, 202, 632, 895, 117, 676, 522, 993, 357, 867, 49, 797, 655, 91, 608, 838, 322, 582, 736, 708, 65, 39, 325, 126, 619, 135, 161, 523, 228, 414, 610, 339, 952, 691, 612, 238, 400, 846, 861, 313, 161, 752, 920, 136, 650, 939, 920, 262, 358, 899, 505, 738, 155, 783, 743, 359, 605, 330, 805, 662, 608, 617, 894, 387, 568, 235, 539, 799, 58, 943, 937, 234, 386, 819, 917, 405, 490, 113, 353, 444, 437, 361, 357, 225, 656, 551, 973, 305, 892, 30, 665, 920, 716, 126, 294, 72, 635, 590, 451, 89, 236, 714, 44, 698, 401, 271, 670, 371, 919, 397, 141, 484, 847, 630, 813, 247, 414, 239, 943, 691, 277, 357, 212, 480, 220, 293, 441, 314, 193, 193, 734, 687, 515, 802, 964, 127, 547, 918, 638, 234, 145, 790, 715, 555, 160, 754, 646, 329, 861, 637, 195, 762, 33, 605, 618, 78, 938, 668, 940, 454, 606, 309, 518, 635, 211, 101, 753, 532, 743, 730, 231, 608, 516, 422, 457, 346, 155, 569, 947, 51, 334, 172, 123, 295, 885, 778, 428, 980, 621, 805, 169, 808, 316, 401, 639, 769, 118, 698, 618, 105, 744, 174, 353, 752, 957, 257, 497, 743, 260, 872, 590, 815, 543, 906, 501, 760, 358, 325, 621, 780, 189, 262, 51, 439, 341, 290, 829, 303, 705, 477, 886, 137, 6, 383, 303, 7, 149, 59, 125, 83, 877, 83, 378, 444, 318, 402, 810, 404, 329, 812, 4, 885, 44, 866, 489, 907, 860, 727, 582, 139, 808, 704, 619, 74, 909, 242, 879, 566, 221, 534, 628, 23, 916, 590, 303, 489, 523, 958, 563, 728, 657, 250, 195, 500, 88, 907, 310, 353, 745, 563, 64, 455, 91, 390, 393, 697, 65, 786, 240, 222, 617, 216, 125, 597, 913, 170, 591, 495, 840, 278, 966, 968, 978, 843, 655, 9, 557, 249, 490, 202, 550, 83, 619, 220, 351, 853, 816, 455, 561, 4, 376, 901, 300, 33, 739, 262, 991, 948, 234, 717, 857, 527, 902, 789, 624, 203, 445, 911, 288, 700, 823, 773, 970, 526, 967, 687, 144, 745, 123, 833, 889, 676, 14, 47, 96, 876, 832, 276, 60, 148, 266, 782, 456, 592, 736, 78, 451, 724, 581, 718, 993, 287, 386, 938, 243, 312, 736, 495, 493, 908, 961, 999, 404, 542, 880, 679, 433, 394, 417, 888, 448, 502, 732, 516, 22, 606, 338, 776, 711, 936, 270, 986, 275, 834, 335, 122, 287, 966, 378, 854, 233, 539, 687, 436, 193, 241, 899, 791, 698, 784, 618, 267, 194, 562, 102, 220, 866, 723, 422, 460, 924, 308, 925, 113, 508, 878, 547, 739, 475, 823, 645, 938, 959, 0, 758, 574, 706, 19, 127, 167, 344, 845, 740, 361, 768, 560, 72, 360, 866, 753, 992, 946, 929, 461, 371, 875, 599, 907, 669, 862, 67, 301, 101, 962, 827, 762, 499, 168, 183, 207, 416, 81, 333, 856, 202, 717, 533, 892, 625, 573, 313, 672, 805, 384, 294, 223, 0, 905, 410, 489, 474, 986, 842, 661, 66, 73, 918, 512, 211, 968, 26, 523, 631, 249, 621, 907, 474, 146, 388, 292, 873, 2, 404, 31, 713, 206, 225, 861, 983, 659, 743, 426, 798, 152, 9, 355, 195, 410, 618, 687, 210, 1, 928, 588, 461, 217, 132, 598, 151, 88, 320, 352, 439, 934, 968, 542, 323, 184, 227, 759, 383, 335, 146, 223, 400, 438, 451, 334, 837, 616, 753, 864, 162, 129, 913, 564, 17, 935, 951, 561, 977, 940, 956, 979, 508, 547, 513, 880, 700, 874, 485, 924, 788, 223, 162, 836, 965, 679, 696, 68, 975, 704, 44, 393, 777, 473, 209, 273, 471, 418, 350, 116, 669, 335, 639, 747, 40, 334, 417, 625, 427, 240, 248, 928, 170, 856, 159, 344, 328, 872, 123, 400, 376, 921, 934, 24, 793, 734, 839, 894, 926, 318, 389, 228, 977, 946, 613, 274, 973, 879, 757, 898, 499, 883, 405, 798, 861, 580, 577, 587, 25, 159, 391, 80, 708, 404, 593, 510, 389, 995, 786, 602, 931, 668, 368, 256, 333, 319, 918, 469, 997, 508, 334, 729, 227, 67, 666, 873, 921, 238, 112, 944, 238, 455, 287, 274, 920, 335, 820, 436, 900, 822, 880, 235, 5, 578, 502, 666, 750, 859, 467, 510, 969, 309, 369, 618, 312, 868, 999, 147, 588, 229, 967, 519, 638, 619, 982, 630, 48, 275, 807, 218, 906, 677, 841, 563, 530, 32, 494, 744, 753, 148, 43, 26, 679, 390, 135, 405, 746, 410, 487, 965, 475, 751, 199, 271, 20, 823, 833, 345, 217, 63, 13, 70, 982, 713, 491, 397, 670, 618, 85, 186, 389, 804, 355, 206, 950, 419, 637, 619, 180, 194, 773, 713, 508, 229, 77, 252, 30, 402, 558, 326, 385, 335, 995, 178, 398, 3, 116, 148, 733, 98, 447, 154, 329, 699, 104, 626, 816, 137, 43, 29, 402, 333, 292, 832, 823, 132, 449, 76, 288, 746, 730, 955, 79, 105, 52, 760, 429, 490, 377, 567, 469, 482, 614, 351, 672, 613, 942, 369, 72, 214, 54, 964, 382, 63, 18, 853, 775, 166, 551, 86, 980, 443, 659, 807, 835, 620, 288, 474, 663, 910, 935, 487, 851, 527, 763, 149, 139, 79, 333, 852, 374, 462, 241, 363, 195, 311, 822, 511, 187, 886, 180, 558, 222, 800, 66, 785, 990, 396, 243, 215, 248, 684, 780, 160, 661, 563, 457, 241, 711, 426, 296, 387, 506, 252, 289, 517, 923, 193, 787, 32, 222, 394, 692, 338, 684, 289, 809, 262, 351, 906, 231, 150, 692, 776, 187, 166, 903, 378, 583, 81, 704, 851, 552, 352, 132, 476, 759, 254, 178, 894, 183, 193, 907, 665, 683, 317, 360, 269, 348, 243, 835, 975, 193, 719, 82, 533, 874, 674, 43, 628, 167, 930, 332, 511, 176, 753, 42, 123, 768, 168, 943, 707, 783, 939, 714, 57, 799, 487, 332, 401, 335, 851, 965, 483, 654, 743, 436, 679, 675, 293, 324, 229, 337, 151, 88, 121, 469, 896, 213, 917, 608, 535, 130, 779, 672, 768, 632, 926, 29, 31, 899, 699, 4, 727, 587, 571, 830, 477, 532, 898, 293, 785, 915, 602, 291, 797, 210, 324, 711, 330, 746, 675, 149, 148, 235, 566, 212, 381, 126, 620, 49, 349, 392, 736, 693, 124, 703, 185, 569, 8, 785, 585, 488, 720, 269, 683, 457, 643, 181, 453, 976, 255, 175, 234, 644, 479, 146, 153, 719, 38, 682, 995, 865, 507, 606, 184, 886, 371, 210, 438, 123, 941, 139, 624, 854, 908, 860, 992, 372, 16, 282, 298, 270, 402, 693, 261, 402, 106, 379, 639, 156, 616, 395, 865, 409, 526, 27, 373, 604, 486, 786, 685, 814, 364, 595, 847, 792, 187, 266, 589, 981, 873, 213, 221, 293, 932, 278, 487, 760, 789, 687, 306, 680, 269, 593, 998, 790, 664, 98, 611, 959, 198, 860, 469, 779, 435, 78, 707, 717, 614, 405, 589, 92, 547, 761, 254, 88, 663, 375, 464, 489, 391, 575, 259, 427, 112, 155, 352, 544, 53, 532, 130, 663, 298, 894, 768, 336, 808, 433, 651, 452, 172, 301, 997, 82, 189, 376, 68, 250, 859, 67, 312, 514, 287, 618, 677, 250, 206, 30, 88, 991, 397, 686, 255, 353, 54, 172, 560, 783, 757, 407, 727, 22, 200, 192, 212, 248, 558, 528, 535, 495, 991, 678, 749, 484, 356, 10, 646, 920, 219, 705, 11, 988, 241, 731, 836, 350, 967, 635, 713, 610, 107, 69, 677, 349, 365, 293, 24, 860, 24, 294, 73, 113, 301, 226, 35, 31, 49, 776, 807, 951 ] sort unsortedList |> Quicksort.show |> Task.putLine sort : List I64 -> List I64 sort = \list -> Quicksort.sortWith list (\x, y -> Num.compare x y)