1
1
mirror of https://github.com/anoma/juvix.git synced 2024-12-15 01:52:11 +03:00
juvix/tests/positive/MiniHaskell/HelloWorld.juvix

53 lines
754 B
Plaintext
Raw Normal View History

module HelloWorld;
inductive {
zero : ;
suc : ;
};
inductive V {
zeroV : V;
sucV : V;
};
infixl 6 +;
+ : ;
+ zero b := b;
+ (suc a) b := suc (a + b);
infixl 7 *;
* : ;
* zero b := zero;
* (suc a) b := b + (a * b);
axiom Action : Type;
compile Action {
ghc ↦ "IO ()";
};
infixl 1 >>;
axiom >> : Action → Action → Action;
compile >> {
ghc ↦ "(>>)";
};
axiom String : Type;
axiom putStr : String → Action;
compile putStr {
ghc ↦ "putStrLn";
};
doTimes : → Action → Action;
doTimes zero _ := putStr "done";
doTimes (suc n) a := a >> doTimes n a;
three : ;
three := suc (suc (suc zero));
main : Action;
main := doTimes three (putStr "hello world");
end;