Skip to content
This repository was archived by the owner on Nov 25, 2019. It is now read-only.

Repository files navigation

The Helm Compiler

Example dataset

(To showcase current progress)

moduleOneexposing (..)
importHelm.Compiler.Sudo.Nativetype Maybe a
=Nothing|Just a
type Either a b
=Left a
|Right b
type User=Anonymous|NamedStringtype Visibility=All|Active|Completed(+):Int->Int->Int(+) leftA rightA =Helm.Compiler.Sudo.Native.plusInt leftA rightA
(+):Float->Float->Float(+) leftA rightA =Helm.Compiler.Sudo.Native.plusFloat leftA rightA
(-):Int->Int->Int(-) leftA rightA =Helm.Compiler.Sudo.Native.subInt leftA rightA
(-):Float->Float->Float(-) leftA rightA =Helm.Compiler.Sudo.Native.subFloat leftA rightA
(==):Int->Int->Bool(==) leftA rightA =Helm.Compiler.Sudo.Native.isEqInt leftA rightA
(==):Float->Float->Bool(==) leftA rightA =Helm.Compiler.Sudo.Native.isEqFloat leftA rightA
(==):String->String->Bool(==) leftA rightA =Helm.Compiler.Sudo.Native.isEqString leftA rightA
(==):Char->Char->Bool(==) leftA rightA =Helm.Compiler.Sudo.Native.isEqChar leftA rightA
plusA x y =
x + y
alpha1 x =
plusA x 1alpha2 x =
x + x
alpha3 x =
alpha2 1alpha4 x y =
x + y
alpha5 x =
alpha4 x 1plusInt:Int->Int->IntplusInt x y =
x + y
fib n =if n ==0then0else if n ==1then1else(fib (n -1))+(fib (n -2))beta:Intbeta =
fib 0id x = x
delta1 z =let
passA x y = x
x :Int
x = passA (0+ z)0
y :Int
y =1in
x + y + z
delta2 z =let
passB x y = x
x :Int
x = id 0
y :Int
y =1
passX x y = x
in
x + y
delta3 =let
x =1+1
y =2in
x + y
typeTest =if TruethenLeft"True"elseRight"False"x1 =Truex2 =Truex3 =Truex4 =Truegamma =if Truethen1else if Falsethen2else if Falsethen3else4omega x y z =
x y z
phi f x =
f x
test = phi id
test2 = test 0

The above is compiled into:

enumMaybe<A>{Nothing(),Just(A)}enumEither<A,B>{Left(A),Right(B)}enumUser{Anonymous(),Named(&'staticstr)}enumVisibility{All(),Active(),Completed()}fnf0(f1:u32,f2:u32) -> u32{Helm::Compiler::Sudo::Native::plusInt(f1, f2)}fnf3(f4:u32,f5:u32) -> u32{f0(f5, f4)}fnf6(f7:u32) -> u32{f0(f7, f7)}fnf8(f9:u32,f10:u32) -> u32{f0(f10, f9)}fnf11(f12:f32,f13:f32) -> f32{Helm::Compiler::Sudo::Native::subFloat(f12, f13)}fnf14(f15:f32,f16:f32) -> bool{Helm::Compiler::Sudo::Native::isEqFloat(f15, f16)}fnf17(f18:&'staticstr,f19:&'staticstr) -> bool{Helm::Compiler::Sudo::Native::isEqString(f18, f19)}fnf20(f21:char,f22:char) -> bool{Helm::Compiler::Sudo::Native::isEqChar(f21, f22)}fnf23(f24:u32) -> u32{f3(f24,1)}fnf25(f26:u32,f27:u32) -> u32{f0(f26, f27)}fnf28(f29:u32,f30:u32) -> u32{Helm::Compiler::Sudo::Native::subInt(f29, f30)}fnf31(f32:u32,f33:u32) -> bool{Helm::Compiler::Sudo::Native::isEqInt(f32, f33)}fnf34(f35:u32) -> u32{matchf31(f35,0){true =>
0,false =>
matchf31(f35,1){true =>
1,false =>
f0(f34(f28(f35,1)),f34(f28(f35,2)))}}}fnf36() -> u32{f34(0)}fnf37<AM>(f39:AM) -> AM{
f39
}fnf40<AP,AQ>(f43:AP,f44:AQ) -> AP{
f43
}fnf45(f46:u32) -> u32{f40(f0(0, f46),0)}fnf47() -> u32{1}fnf48(f49:u32) -> u32{f0(f0(f45(f49),f47()), f49)}fnf50() -> u32{f37(0)}fnf51() -> u32{1}fnf52<BB>(f54:BB) -> u32{f0(f50(),f51())}fnf55<BE,BF>(f58:BE,f59:BF) -> BE{
f58
}fnf60<BJ,BK>(f63:BJ,f64:BK) -> BJ{
f63
}fnf65() -> u32{f0(1,1)}fnf66() -> u32{2}fnf67() -> u32{f0(f65(),f66())}fnf68() -> Either<&'staticstr,&'staticstr>{matchtrue{true =>
Either::Left("True"),false =>
Either::Right("False")}}fnf69() -> bool{true}fnf70() -> bool{true}fnf71() -> bool{true}fnf72() -> bool{true}fnf73() -> u32{matchtrue{true =>
1,false =>
matchfalse{true =>
2,false =>
matchfalse{true =>
3,false =>
4}}}}fnf74<BX,BY,BZ>(f78:&Fn(BX,BY) -> BZ,f79:BX,f80:BY) -> BZ{f78(f79, f80)}fnf81<CE,CF>(f84:&Fn(CE) -> CF,f85:CE) -> CF{f84(f85)}fnf86<CJ>(f88:CJ) -> u32{f6(1)}fnf89<CM>(f91:CM) -> CM{f81(&f37, f91)}fnf92() -> u32{f89(0)}fnf93(f94:u32) -> u32{f8(f94,1)}fnf95(f96:f32,f97:f32) -> f32{Helm::Compiler::Sudo::Native::plusFloat(f96, f97)}

About

Really old project...

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages