1
1
mirror of https://github.com/anoma/juvix.git synced 2024-12-15 18:13:56 +03:00
juvix/tests/positive/MiniHaskell/HelloWorld.mjuvix

50 lines
717 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 {
ghc ↦ "IO ()";
};
infixl 1 >>;
axiom >> : Action → Action → Action {
ghc ↦ "(>>)";
};
axiom String : Type;
axiom putStr : String → Action {
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;