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
Impulse is a small, dynamic object-oriented language that aims to have simple syntax and semantics. It also aims to be lightweight, reflective and open, and easily embeddable.
License
mikeaustin/impulse-language
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
___ __ ___ ___ | |\ /| |__| | | | |___ |___ _|_ | \/ | | |___| |___ ___| |___ 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
About
Impulse is a small, dynamic object-oriented language that aims to have simple syntax and semantics. It also aims to be lightweight, reflective and open, and easily embeddable.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published