NEL(ID:5612/nel001)

Natural Expert Language 


for Natural Expert Language

Haskell like language for writing Expert Systems


References:
  • Nigel W. O. Hutchison, Ute Neuhaus, Manfred Schmidt-Schauss, and Cordy Hall. "Natural Expert: a commercial functional programming environment" Journal of Functional Programming, 7(2): 163-182, March 1997. view details
  • Wadler, Philip "An angry half-dozen" view details Extract: Design
    Natural Expert integrates an entity-attribute database management system with NEL (Natural Expert Language), a higher-order, statically typed, lazy functional language, roughly similar to Haskell. One of the selling points of Natural Expert is its user environment. The database is used not only to manipulate user data, but also to store the NEL program itself, which is structured as a number of rules. The database records what rules refer to what other rules, aiding program maintenance. A simple hyper-text facility lets the reader jump from use of a rule or attribute to its definition.

    The result returned from a database access is typically a list of entity indexes. Lazy evaluation processes entities one at a time, reducing the amount of store required. This is important, because Natural Expert runs on mainframes. One might expect a mainframe to provide more resources than a personal computer, but Natural Expert typically uses only 80K for the heap, and even then some clients complain it is too large.

    Traditionally, lazy languages disallow side effects, because the order in which the effects occur would be difficult to predict. NEL, however, permits one use of side effects, a primitive that prints a given question on a terminal and returns the answer typed by the user. Questions are printed in an arbitrary order, but that's no problem for this domain. More importantly, thanks to lazy evaluation, a question is asked only if it's relevant to the task at hand. Expert systems people call this "backwards chaining".

    Training is key to industrial use of any system. Natural Expert is taught in a one-week course, which includes polymorphic types and higher-order functions. Typically, students grumble about all the compile-time error messages generated by the unfamiliar type system, but are pleased to discover that once a program passes the compiler it often runs correctly on the first try. Nonetheless, clients still point to lack of familiarity with functional languages as a bar to wider acceptance.

    Although many of the applications built with Natural Expert are successful and in current use, sales of the system generated insufficient revenue, and Software AG has dropped it as a product.
          in SIGPLAN Notices 33(2) February 1998 view details