| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
MicroHaskell is an interpreter for a small subset of the Haskell programming language. It is designed around an intermediate representation rooted in the principles of the lambda calculus. This project serves both as a practical tool for experimenting with functional programming constructs and as an educational platform for studying the theoretical concepts of Haskell and functional languages more broadly.
The following example demonstrates recursive bindings, arithmetic, currying, and higher-order functions in MicroHaskell:
-- Calculates the factorial of n
factorial n = if n == 0 then 1 else n * factorial (n - 1);
-- Calculates the n-th fibonacci number
fibonacci n =
if n == 0 then 0
else if n == 1 then 1
else fibonacci (n - 1) + fibonacci (n - 2);
-- Calculates the great common divisor of a and b
gcd a b =
if b == 0
then abs a
else gcd b (mod a b);
-- Partially applies gcd to 36 (currying)
curriedGcd = gcd 36;
constant = 42;
-- Applies op to arguments a and b
apply op a b = op a b;
-- Calculates whether five is an odd number. Uses let bindings.
isFiveOdd =
let
isOdd n =
if n == 0 then 0
else isEven (n - 1);
isEven n =
if n == 0 then 1
else isOdd (n - 1);
n = 5
in
isOdd n;
lambda = (\x y -> x * y) 3 4;
main = (apply (+) (curriedGcd 317523) (fibonacci 10)) * factorial 4 - constant + isFiveOdd * lambda;For more examples, checkout the examples directory and the MicroHaskell prelude.
Potential future enhancements to MicroHaskell include:
| Back | FazBrowse Home | New Git URL |