mikeaustin / impulse-language

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.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

___         __              ___   ___
 |  |\  /| |__| |   | |    |___  |___
_|_ | \/ | |    |___| |___  ___| |___

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.

License:Other


Languages

Language:C++ 61.2%Language:Ruby 38.4%Language:C 0.3%Language:Python 0.1%Language:Lua 0.0%Language:Io 0.0%