Skip to content
Dmitry Ponyatov edited this page Apr 26, 2019 · 1 revision

metaL

metaL is a FORTH-like frame structure definition and command language (DDL) was derived from classical FORTH to avoid a lot of low-level implementation problems like direct memory addressing, interfacing with external libraries, etc.

metaL is not intended to be a programming language, you should especially note it.

The universe of the metaL system is a large extendable network of interconnected objects, which can be used to modify itself in a programmatic manner. We need to manipulate such a frame network, and the most simple and flexible way to do it is a Command Line Interface. In result, we need to have very simple command language, and FORTH is unbeatable in such a role.

FORTH-like command/scripting language for Frame-based metaprogramming

metaL inherits two structures from FORTH

For commands interpreter it uses PLY library.

metaL is not a programming language:

The goal of metaL is providing simple to implement and use command interface between a user and Frame-powered Knowledge Database. Using metaL you are not writing programs: you design frame graph structure using data stack and very simple postfix syntax. You also can use global vocabulary to hold frame constructs which can be addressed as slot names of a vocabulary frame.

Database with executable data

Minsky’s frame model suggests the presence of executable semantics: there are daemons and executable slots at the level of object/graph database engine.

Here we have some drawbacks in storage implementation: back storage engines available for most (implementation) programming languages can't hold executable elements.

There is No Syntax

I tend to totally avoid any scripting languages use. If you look a lot of publications and manuals on expert system design, there are a lot of cryptic Lisp/Prolog code defines knowledge databases and rules. But it is not required to have scripting, as data stored in the database itself has a power of describing processing procedures and rules. It looks like MPS: The Domain-Specific Language Creator by JetBrains where data defines not only structures, but its (self)transformations.

From the other side, it is a very common case to have human-readable ASCII formats for batching data loading and transformation, so I leave very primitive FORTH-like command language for these tasks.

Executable definitions

To define new commands in metaL you can

  • use Seqence as an anonymous executable frame, and
  • assign it to name in vocabulary.

metaL has no colon definitions, its equivalent is Seqence which runs in a global context.

Clone this wiki locally