Cure language example demonstrating various features
# Example: Advanced Typeclass System Features
module AdvancedTypeclasses do
export [main/0]
import Std.Io [println]
# Eq typeclass for equality comparison
typeclass Eq(T) do
def eq(x: T, y: T): Bool
end
# Ord typeclass for ordering (depends on Eq)
typeclass Ord(T) when Eq(T) do
def compare(x: T, y: T): Int
end
# Eq instance for Int
instance Eq(Int) do
def eq(x: Int, y: Int): Bool = x == y
end
# Ord instance for Int
instance Ord(Int) do
def compare(x: Int, y: Int): Int = 0
end
# Show typeclass for string representation
typeclass Show(T) do
def show(x: T): String
end
# Show instance for Int
instance Show(Int) do
def show(x: Int): String = "Int"
end
# Generic function using multiple constraints
def display_comparison(x: T, y: T): T where Show(T), Ord(T) =
println(show(x))
println(show(y))
compare(x, y)
x
def main(): Int =
println("Advanced Typeclasses Demo")
display_comparison(5, 3)
0
end