Programming Language

Nocter

A self-contained systems language built around simplicity, encapsulation, and foolproof design.

/examples/ordering.nct

ordering.nct

use std/io.print

use std/string.String

use std/vec.Vec

struct Rank {
    value: i32,
}

instance Rank {
    operator (&self < other: &Self): bool {
        return self.value < other.value
    }
}

func earlier<T>(left: &T, right: &T): bool where (&T < &T): bool {
    return left < right
}

func main(): i32! {
    let low = Rank { value: 2 }
    let high = Rank { value: 8 }
    if !earlier(&low, &high) || high <= low {
        return 1
    }
    let alpha = String "alpha"
    let beta = String "beta"
    let alpha_view = &alpha
    let beta_view = &beta
    if !(alpha_view < beta_view) {
        return 2
    }
    let alpha_text: &str = "alpha"
    let beta_text: &str = "beta"
    if !(alpha_text < beta_text) || !(alpha_text < beta_view) || !(alpha_view < beta_text) {
        return 2
    }
    let first = Vec [1, 2]
    let second = Vec [1, 3]
    let first_view = &first
    let second_view = &second
    if !(first_view < second_view) {
        return 3
    }
    print("strict ordering selected source declarations\n")?
    return 0
}