← Back to Examples

11 Advanced Typeclasses

Cure language example demonstrating various features

Source Code

# 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