···11-prx
22-===
11+# Prexonite Script
3244-Prexonite, a .NET hosted scripting language with a focus on meta-programming and embedded DSLs33+ function main() {
44+ println("Hello World");
55+ }
66+77+Another implementation of JavaScript? No, much much worse:
88+99+1010+ function flipperize(xs) =
1111+ xs
1212+ >> where(? is not null)
1313+ >> map(x => if(x mod 2 == 0) "flip"
1414+ else "flop");
1515+1616+That, and tons of meta-programming<sup><a href="#f1">1</a></sup> await you in this dynamically typed<sup><a href="#f2">2</a></sup>,
1717+somewhat object-aware<sup><a href="#f3">3</a></sup>, interpreted<sup><a href="#f4">4</a></sup> abomination of a scripting language.
1818+1919+<div id="footnotes">
2020+ <h3>Footnotes</h3>
2121+ <ol>
2222+ <li>
2323+ <a name="f1"> </a> In it's most unsafe and raw form: Imagine macros, which to the untrained eye look exactly like functions, that produce arbitrary AST nodes to be spliced into their callsites. Or format your hard drive. And then crash the compiler.
2424+ </li>
2525+ <li>
2626+ <a name="f2"> </a>I guess you could make the argument that the type system in Prexonite Script is actually highly advanced by being able to deal with dependent types. In case you're into that kind of thing. Then again, that is usually not very impressive in dynamically typed settings.
2727+ </li>
2828+ <li>
2929+ <a name="f3"> </a>Yes, that's a thing. Prexonite Script allows you to <em>consume</em> objects, methods, properties, index accessors,
3030+ etc. but there is no way to define classes or even prototypes, like with JavaScript. Having said that, there are ways
3131+ to define custom constructors that return <em>"objects"</em>, however,
3232+ looking for <code>.prototype</code> will be in vain.
3333+ </li>
3434+ <li>
3535+ <a name="f4"> </a>Technically speaking, Prexonite Script is actually being compiled. Three times. A significant portion of Prexonite code runs as x86, directly on your CPU. But wait until you hear the best part: It doesn't matter since most performance is wasted on insisting that every method invocation must do a full overload resolution. You know, in case those pesky methods swapped places since the last loop iteration.
3636+ </li>
3737+ </ol>
3838+</div>