Category:Wart: Difference between revisions
m
no edit summary
(Language description) |
mNo edit summary |
||
(12 intermediate revisions by the same user not shown) | |||
Line 1:
{{language
|exec=interpreted
[http://github.com/akkartik/wart#readme Wart] is an experimental, dynamic, [https://plus.google.com/110981030061712822816/posts/KaSKeg4vQtz batshit-liberal] language designed for small teams of [https://en.wikipedia.org/wiki/Motivation#Intrinsic_and_extrinsic_motivation intrinsically-motivated] programmers. Wart is based on [http://paulgraham.com/lispfaq1.html lisp], but with a cleaner syntax and more powerful primitives to help non-lispers appreciate the power of lisp. Wart was designed with several questions in mind:▼
|site=https://github.com/akkartik/wart
|gc=yes
|parampass=value
|strength=strong
|checking=dynamic
|hopl=no
|LCT=no
|tags=lisp, c
}}
{{language programming paradigm|Dynamic}}
{{language programming paradigm|Functional}}
{{language programming paradigm|Procedural}}
▲[http://github.com/akkartik/wart#readme Wart] is an experimental, dynamic, [
* How far can we
*# 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
*#
<pre style='margin-left:6em'>
def (subtract a|from b)
a-b
</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
* 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)
Line 23 ⟶ 36:
* Can a language implementation remain intelligible to outsiders over time, especially under pressure to run fast? Wart is exploring experimental primitives in the core interpreter that will make partial evaluation as easy as passing code through eval multiple times.
These
To run the following examples in most places (but not Windows):
$ git clone http://github.com/akkartik/wart
$ cd wart
$ ./wart
ready! type in an expression, then hit enter twice. ctrl-d exits.
Now you can start pasting in code. Lines starting with '=>' are results printed by Wart; don't type those in.
|