Sorting in Racket

Our example demonstrates sorting in Racket. We’ll look at sorting for built-in types first.

#lang racket

(require racket/sort)

(define (main)
  ; Sorting functions work for any comparable built-in type.
  (define strs '("c" "a" "b"))
  (define sorted-strs (sort strs string<?))
  (printf "Strings: ~a\n" sorted-strs)

  ; An example of sorting numbers.
  (define nums '(7 2 4))
  (define sorted-nums (sort nums <))
  (printf "Numbers: ~a\n" sorted-nums)

  ; We can also check if a list is already in sorted order.
  (define is-sorted (sorted? sorted-nums <))
  (printf "Sorted: ~a\n" is-sorted))

(main)

In Racket, we use the racket/sort module for sorting operations. The sort function is used to sort lists, and it takes two arguments: the list to be sorted and a comparison function.

For strings, we use string<? as the comparison function, which compares strings lexicographically. For numbers, we use < to sort in ascending order.

The sorted? function checks if a list is already in sorted order according to a given comparison function.

To run the program, save it as sorting.rkt and use the racket command:

$ racket sorting.rkt
Strings: (a b c)
Numbers: (2 4 7)
Sorted: #t

This example demonstrates basic sorting operations in Racket. The language provides powerful sorting capabilities that can be easily applied to various data types.