Hyperlambda, a new approach to creating domain specific programming languages

In Hyperlambda, there is no difference between a “function” and a “keyword”. It’s all based upon hierarchical graph objects anyways. One of the really cool consequences of this, is that it is really easy to create what’s commonly referred to as “domain specific programming languages”. These are narrow programming languages, exclusively intended for some specific domain, such as accounting, CRM, etc.

You could for instance create a “keyword” named “create-contact”, and it would become a fully fledged keyword, inseparable from things such as “if”, “while” and “for-each”.

This allows you to create your own programming language, according to your specific needs. Below is an example of how to create an Active Event, that will become a fully fledged keyword, inseparable from any other keywords in the language. First comes the Hyperlambda version of creating such a keyword.

create-event:create-customer
  /*
   * Stuff to create customer goes in here ...
   */

Then to consume this newly created keyword, would imply something like the following.

create-customer
  name:John Doe
  param2:Parameter 2 value

Etc …

This allows you to create your own vocabulary, according to your domain specific needs, facilitating for your own unique programming language. Of course, creating something similar also in C#, is equally simply.

[ActiveEvent (name = "create-customer")]
private void create_customer (ApplicationContext context, ActiveEventArgs e)
{
   /*
    * Do stuff with e.Args here ...
    */
}

This is one of the coolest features of Hyperlambda if you ask me. Hyperlambda is whatever you want it to be, really …

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s