Created
May 1, 2012 09:10
-
-
Save be5invis/2566627 to your computer and use it in GitHub Desktop.
Moescript source map example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function F1$_(){ | |
var Tp$_, Tq$_, T11$_, T12$_; | |
var ecSchemata$, item$, mktable$, t$; | |
//MoeMap// var ecSchemata = [yield: fYield, return: fReturn, bind: fBind] | |
//MoeMap// where | |
ecSchemata$ = (function F2$_(){ | |
var fBind$, fReturn$, fYield$; | |
//MoeMap// fReturn = Enumerable function(x): | |
fReturn$ = Enumerable$({build:function(SCHEMATA$_){return function(x$){ | |
var T4$_, T5$_, T6$_, T7$_; | |
function block_T1(T1$_){ | |
//MoeMap// if(x != undefined) | |
if(!((x$ !== undefined)))return block_T2(); | |
//MoeMap// enumeration.yield! x | |
T4$_ = (enumeration$); | |
T5$_ = ("yield"); | |
T6$_ = (((T4$_)[T5$_])); | |
T7$_ = (x$); | |
return SCHEMATA$_.yield(T6$_.call(T4$_,T7$_,block_T8)); | |
}; | |
function block_T8(T8$_){ | |
T8$_; | |
return block_T2(); | |
}; | |
function block_T2(T2$_){ | |
return SCHEMATA$_["return"](); | |
}; | |
return block_T1; | |
}}}); | |
//MoeMap// fYield(x) = x | |
fYield$ = function F4$_(x$){ | |
return x$; | |
}; | |
//MoeMap// fBind = Enumerable function(list, callback): | |
fBind$ = Enumerable$({build:function(SCHEMATA$_){return function(list$, callback$){ | |
var Tb$_, Tc$_, Tf$_, Tg$_, Tj$_, Tk$_, Tl$_, Tm$_; | |
var x$, y$; | |
function block_Ta(Ta$_){ | |
//MoeMap// for(var x in list) | |
Tb$_=MOE_GET_ENUM(list$); | |
(Tc$_ = Tb$_()) ? ( x$ = Tc$_[0] ): undefined; | |
return block_Td(); | |
}; | |
function block_Td(Td$_){ | |
if(!(Tc$_))return block_Te(); | |
//MoeMap// for(var y in callback x) | |
Tf$_=MOE_GET_ENUM(callback$(x$)); | |
(Tg$_ = Tf$_()) ? ( y$ = Tg$_[0] ): undefined; | |
return block_Th(); | |
}; | |
function block_Th(Th$_){ | |
if(!(Tg$_))return block_Ti(); | |
//MoeMap// enumeration.yield! y | |
Tj$_ = (enumeration$); | |
Tk$_ = ("yield"); | |
Tl$_ = (((Tj$_)[Tk$_])); | |
Tm$_ = (y$); | |
return SCHEMATA$_.yield(Tl$_.call(Tj$_,Tm$_,block_Tn)); | |
}; | |
function block_Tn(Tn$_){ | |
Tn$_; | |
(Tg$_ = Tf$_()) ? ( y$ = Tg$_[0] ): undefined; | |
return block_Th(); | |
}; | |
function block_Ti(Ti$_){ | |
(Tc$_ = Tb$_()) ? ( x$ = Tc$_[0] ): undefined; | |
return block_Td(); | |
}; | |
function block_Te(Te$_){ | |
return SCHEMATA$_["return"](); | |
}; | |
return block_Ta; | |
}}}); | |
//@ - MOEMAP -- undefined; | |
return {"yield": fYield$, "return": fReturn$, "bind": fBind$}; | |
}()); | |
//MoeMap// var mktable(G) = | |
mktable$ = function F6$_(G$){ | |
var _$_THIS = this; | |
var _$_ARGS = MOE_SLICE(arguments, 0); | |
var f$; | |
//MoeMap// var f = G.build ecSchemata | |
f$ = G$.build(ecSchemata$); | |
//MoeMap// f.apply(this, arguments)() | |
//MoeMap// | |
//MoeMap// // simple usage | |
return f$.apply(_$_THIS, _$_ARGS)(); | |
}; | |
//MoeMap// for(var item in mktable {var x <- (1..100); x * 2 + 1}) trace item | |
//MoeMap// | |
//MoeMap// // complicated usage | |
Tp$_ = MOE_GET_ENUM(mktable$({build:function(SCHEMATA$_){return function(){ | |
var Ts$_; | |
var x$; | |
function block_Tr(Tr$_){ | |
Ts$_ = (((MOE_RANGE_EX(1, 100)))); | |
return (SCHEMATA$_.bind(Ts$_,block_Tt)); | |
}; | |
function block_Tt(Tt$_){ | |
(x$ = Tt$_); | |
return SCHEMATA$_["return"]((x$ * 2 + 1)); | |
return SCHEMATA$_["return"](); | |
}; | |
return block_Tr; | |
}}})); | |
while((Tq$_ = Tp$_())){ | |
item$ = Tq$_[0]; | |
trace$(item$); | |
}; | |
//MoeMap// var t = mktable {var x <- (1...9); var y <- (x...9); x + ' * ' + y + ' = ' + x * y } | |
//MoeMap// // t = mktable [build: fBuild] | |
//MoeMap// // where fBuild(schemata)()() = | |
//MoeMap// // schemata.bind (1...9), (x) => | |
//MoeMap// // schemata.bind (x...9), (y) => | |
//MoeMap// // schemata.return (x + ' * ' + y + ' = ' + x * y) | |
t$ = mktable$({build:function(SCHEMATA$_){return function(){ | |
var Tw$_, Ty$_; | |
var x$, y$; | |
function block_Tv(Tv$_){ | |
Tw$_ = (((MOE_RANGE_INCL(1, 9)))); | |
return (SCHEMATA$_.bind(Tw$_,block_Tx)); | |
}; | |
function block_Tx(Tx$_){ | |
(x$ = Tx$_); | |
Ty$_ = (((MOE_RANGE_INCL(x$, 9)))); | |
return (SCHEMATA$_.bind(Ty$_,block_Tz)); | |
}; | |
function block_Tz(Tz$_){ | |
(y$ = Tz$_); | |
return SCHEMATA$_["return"]((x$ + " * " + y$ + " = " + x$ * y$)); | |
return SCHEMATA$_["return"](); | |
}; | |
return block_Tv; | |
}}}); | |
//MoeMap// for(var item in t) trace item | |
T11$_ = MOE_GET_ENUM(t$); | |
while((T12$_ = T11$_())){ | |
item$ = T12$_[0]; | |
trace$(item$); | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment