examples/run/01_calculate.cat
#!/usr/bin/env catnip
# Calculatrice avec formules

# Définir des fonctions mathématiques

# Factorielle
factorial = (n) => {
    if n <= 1 { 1 }
    else { n * factorial(n - 1) }
}

# Fibonacci
fib = (n) => {
    if n <= 1 { n }
    else { fib(n - 1) + fib(n - 2) }
}

# Puissance
pow = (base, exp) => {
    if exp == 0 { 1 }
    else { base * pow(base, exp - 1) }
}

# Somme d'une liste
sum_list = (lst) => { fold(lst, 0, (acc, x) => { acc + x }) }

# Moyenne d'une liste
avg_list = (lst) => { sum_list(lst) / len(lst) }

# Exemples de calculs
print("Calculatrice Catnip")
print()

print("Factorielles :")
print(f"  5! = {factorial(5)}")
print(f"  7! = {factorial(7)}")
print(f"  10! = {factorial(10)}")
print()

print("Fibonacci :")
print(f"  fib(10) = {fib(10)}")
print(f"  fib(15) = {fib(15)}")
print(f"  fib(20) = {fib(20)}")
print()

print("Puissances :")
print(f"  2^10 = {pow(2, 10)}")
print(f"  3^5 = {pow(3, 5)}")
print(f"  10^3 = {pow(10, 3)}")
print()

print("Statistiques :")
numbers = list(10, 20, 30, 40, 50)
print("  Liste : [10, 20, 30, 40, 50]")
print(f"  Somme : {sum_list(numbers)}")
print(f"  Moyenne : {avg_list(numbers)}")
print()

# Formule composée
a      = 5
b      = 3
c      = 2
result = a * pow(b, c) + factorial(4)

print("Formule composée :")
print(f"  a = {a}")
print(f"  b = {b}")
print(f"  c = {c}")
print(f"  a * b^c + 4! = {a} * {b}^{c} + 24")
print(f"  = {result}")

result  # → 69