This repository has been archived by the owner on Aug 19, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
87 lines (59 loc) · 2.75 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
___ __ ___ ___
| |\ /| |__| | | | |___ |___
_|_ | \/ | | |___| |___ ___| |___
A small, dynamic, object-oriented language. http://mike-austin.com/impulse
_______________________________________________________________________________
Impulse is a small, dynamic, prototyped-based object-oriented language that
aims to have simple syntax and semantics. It also aims to be lightweight,
reflective and open, and easily embeddable. It borrows syntax and semantics
from other languages such as Ruby, Smalltalk, Dylan, Io, Lua and JavaScript
along with ideas from functional languages like Haskell and ML.
A core goal is too keep the language, both the implementation and the syntax,
small and lightweight. Impulse tries to factor special syntax such as pattern
matching and list comprehension into the language using predicates.
FEATURES
* Prototype Based
Singletons are easy to create, and objects can change behavior by switching
their parent prototypes.
* Small and lightweight
The core is less than 2,000 lines of lightweight C++, including the VM,
parser and garbage collector.
* Reflective and Open
All objects, including native C++ prototypes can be extended and modified.
Everything is a first class object.
* Easily Embeddable
The language was designed from the bottom up, to provide the most simple
interface to the runtime.
EXAMPLES
# Get a list of even numbers between 1 and 10
[1..10] map: |n| n even ? n * n
# The ubiquitous factorial example
factorial = |n| n == 0 ? 1 : n * factorial [n - 1]
COMPILING
Compiling should be as easy as "make && sudo make install". Impulse has been
tested with GCC 4.3.3 on Ubuntu 32/64, GCC 4.0.1 on MacOS X, and MinGW GCC
3.4.5 on Windows.
DOCUMENTATION
The Impulse Programming Language
http://docs.google.com/Doc?id=dmknvsb_7c8v9kmw3
Impulse: Why Another New Language?
http://docs.google.com/Doc?id=dmknvsb_6g4hg89cb
Impulse Runtime Documentation
http://docs.google.com/Doc?id=dmknvsb_9dprqb2fh
Impulse Example: Standard Library
http://docs.google.com/Doc?id=dmknvsb_8fpkd4whr
Impulse Runtime Class Reference
http://mike-austin.com/impulse/source/0.5/docs
RELATED
Predicate Dispatching: A Unified Theory of Dispatch
http://www.cs.washington.edu/research/projects/cecil/www/Papers/gud.html
Dylan Singleton Types [Dylan Reference Manual]
http://www.opendylan.org/books/drm/Singletons
Haskell/Pattern matching
http://en.wikibooks.org/wiki/Haskell/Pattern_matching
The Self Programming Language
http://en.wikipedia.org/wiki/Self_programming_language
Prototypes with Multiple Dispatch [PDF]
http://lee.fov120.com/ecoop.pdf
CONTACT
You can reach me with any questions or comments at mike AT mike-austin DOT com