complexpr/idea.cxpr

33 lines
1005 B
Plaintext

let square = x -> x^2;
let also_square(x) = x^2;
let primes = range(100) |: filter(is_prime);
let prime_squares = range(100) |: map(square);
let also_prime_squares = range(100) |? is_prime |> square;
#
let primes_and_prime_squares = primes |& prime_squares;
if 49 <~ data {
println("49 is the square of a prime");
} else {
println("49 is not the square of a prime");
}
for p : primes {
println(p);
}
# LET IDENT(square) EQ IDENT(x) ARROW IDENT(x) CARET INT(2) SEMICOLON
#
# LET IDENT(data) EQ IDENT(range) LPAREN INT(100) RPAREN PIPECOLON IDENT(filter) LPAREN IDENT(is_prime) RPAREN PIPECOLON IDENT(map) LPAREN IDENT(square) RPAREN SEMICOLON
# LET IDENT(also_data) EQ IDENT(range) LPAREN INT(100) RPAREN PIPEQUESTION IDENT(is_prime) PIPEPOINT IDENT(square) SEMICOLON
# D = x:(fold(map(factors(x), n:(to_int(fold(factors(x),mul)/n))), add))
let D = x -> {
let facts = factors(x);
let product = facts |: foldl(1, mul);
return facts |> (n -> product / n) |: foldl(0, add);
}