Skip to content
This repository has been archived by the owner on Aug 19, 2023. It is now read-only.

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

Notifications You must be signed in to change notification settings

mikeaustin/impulse-language

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

No packages published

Languages