Category:Wart: Difference between revisions
m
no edit summary
No edit summary |
mNo edit summary |
||
Line 13:
{{language programming paradigm|Functional}}
{{language programming paradigm|Procedural}}
[http://github.com/akkartik/wart#readme Wart] is an experimental, dynamic, [http://plus.google.com/110981030061712822816/posts/KaSKeg4vQtz batshit-liberal] language designed to eventually be used by small teams of [http://en.wikipedia.org/wiki/Motivation#Intrinsic_and_extrinsic_motivation intrinsically-motivated] programmers. Wart is based on [http://paulgraham.com/lispfaq1.html
* How far can we change the syntax of
*# While lispers can continue to write fully-parenthesized
*# Wart provides infix operators in an elegant way without compromising homoiconicity or macros. Infix operations provide only one precedence rule: operators without whitespace are evaluated before operators with whitespace.<pre style='margin-left:3.5em'>(n * n-1) # does what you think</pre>The catch: infix characters like dashes can't be used in names, unlike traditional
*# All functions can be called with keyword arguments as needed, using ''aliases'' so both caller and callee can use the right name for them.
<pre style='margin-left:6em'>
Line 30:
</pre>
* What would a language ecosystem be like without any backwards-compatibility guarantees, super easy to change and fork promiscuously? Wart has no version numbers, and new versions and forks are free to change all semantics to their hearts' desire. Instead of a spec or frozen interfaces, we rely on automated tests. Wart is thoroughly tested, and
* What would a language look like with an emphasis on a parsimonious and harmonious system of names? This is only possible if the language has no reserved words, and even primitives can be overloaded in arbitrary ways. So you never end up with constructions like 'my_if' or 'append2' or 'queue_length'. (More info: http://akkartik.name/blog/readable-bad)
|