Elisa: Programming by Definitions

 News     Language  Description     Data Structures    Tutorials    References    Copyright     Contact





Quick Start with Elisa  

Using Development System Demo's


Language Description

1. Lexical Elements
2. Basic Data Types and Expressions
3. Definitions
4. Streams
5. Backtracking
6. Statements and Special Expressions
7. Arrays

8. Lists
9. Descriptors
10. Components
11. Collections
12. Generic Components
13. Terms
14. Categories
15. Types 

16. Built-in Definitions
17. Higher-order Definitions

18. External Interfaces


Data Structures

1. Sequences
2. Examples involving Lists
3. Trees
4. Graphs
5. Searching State Spaces
6. Language Processing
7. Knowledge Representations          



1. Multi-value Functions

2. Lists and Streams

3. Descriptors

4. Trees




What is Elisa? 

Elisa is an experimental programming language. It started as an attempt to combine the paradigms of procedural programming, functional programming, object-oriented programming and logic programming into one coherent linguistic framework. Integration of the best features of different paradigms could create new possibilities of solving problems and could open new ways of programming. And it may create synergistic effects where the power of an integrated language is larger than the sum of the features of different paradigms. However, during this integration process it turned out that a complete integration of different paradigms is not possible. Mainly because of conflicting requirements. For example, assignment statements are essential in procedural and object-oriented paradigms, but are forbidden in the functional paradigm. 

As a consequence we dropped the requirement of complete integration and decided to design a new language based on the best and well-established features of different paradigms. The result is a language not hindered by compatibility requirements but a language that uses the best available concepts. Not by piling feature upon feature on top of an existing language but by carefully designing a new language. This approach means that not all the functions of the different paradigms can be preserved, compromises were sometimes necessary. The resulting language has its own characteristics. 

Programming by Definitions 

One of its characteristics of Elisa is that the programs in Elisa are based on  definitions. An Elisa program consists of a series of definitions. Programming in Elisa means identifying and designing definitions.  In addition, the language contains also a number of novel features such as multi-value functions and extensive pattern matching. As a result, an Elisa program often consists of a limited number of  concise definitions. A description of the language can be found in Language Description. Sophisticated Data Structures such as lists, sequences, trees, graphs are demonstrating the power of Elisa. There are also a number of Tutorials explaining  implications of several language features. 


Elisa's Development System  

In order to verify the concepts of a new programming language  a compiler and associated runtime system has been developed. The development system is available for Windows computers. Elisa's Development System (EDS) is the integrated development environment in which developers can work when creating  programs in the Elisa language. The EDS system provides  a development and execution environment that allows different components and libraries to work together to create Elisa applications. It provides facilities for programming, editing, compiling, linking, testing, execution and debugging of Elisa programs. The Elisa compiler generates direct machine code and it interfaces with C libraries. The development system can be downloaded on Windows. Included in the download are a number of demo programs, demonstrating the capabilities of the system. Learn more about ...

What about Feedback?

Your feedback will be highly appreciated. Please send your comments, good or bad, to Jan Klunder.





  <!-- Start of StatCounter Code for Default Guide -->
<script type="text/javascript">
var sc_project=11338540;
var sc_invisible=0;
var sc_security="f2d7a14f";
var sc_https=1;
var scJsHost = (("https:" == document.location.protocol) ?
"https://secure." : "http://www.");
document.write("<sc"+"ript type='text/javascript' src='" + scJsHost+
<noscript><div class="statcounter"><a title="Web Analytics Made Easy -
StatCounter" href="http://statcounter.com/" target="_blank"><img
class="statcounter" src="//c.statcounter.com/11338540/0/f2d7a14f/0/"
alt="Web Analytics Made Easy - StatCounter"></a></div></noscript>
<!-- End of StatCounter Code for Default Guide -->