Lerp Development Log:
Simplifications
16 March 2005


Spent a little more time working on Lerp.  One of the original ideas for the language was that it would be very Prolog-like, in that you have these databases full of assertions, you run pattern queries on them, and inference rules run and crank out the answer.  Well, this kind of sucked -- in the same way Prolog generally sucks -- so I decided to take it out.  Provisions for inference rules made the compiler and the query answerer significantly more complicated.  This complication would hurt a lot later, when I start allowing data to be stored in various different ways as specified by schemas.  Since I was never happy with it, killing it seemed like the right choice.  (Though really, even if I wanted to keep the functionality, deleting it and rewriting it would probably be the correct choice... that stuff had always felt too messy).

There was a lot of fallout to those changes, but it only took a few hours to get it all fixed. 

Whereas the Prolog-ness is gone now, I am glad I went through that phase of design, since it got me to where I am now.  You can think of the current system as what Prolog might be like if you removed inference and made it a minor facet of an imperative language.  The role of the declarative stuff will grow, but this will require some syntax support and heavy thinking.  Before I do that, I need to tie down a lot of loose ends in the rest of the system.

I got some more work done on the IDE, adding minor pieces of new language functionality and fixing small bugs as I went.  Here is a new screenshot:

 

 

The main differences from last time are the scrollbars (yay!) and the functional data browser in the lower-right corner.  The browser is displaying what's in the global namespace, and you can click on stuff to expand it out and see the values.  By doing that you could find and examine anything in the "heap".  But, better ways of searching and visualization will be made available eventually.  All those values are updated live, so as you move the windows around you see the little maintenance variables for that changing in the data browser, etc.

Now I'm at the point where I want to start working on the type system.  Get the parameterized types right (lame parameterized type support is one of the great screw-ups of C++).  Also I want to implement a projection-based type relation system; my plan is for there to be no such thing as inheritance in the hierarchical-OO sense, and we'll see how that goes.
 

[Back to Lerp Development Log]