metamaya

    0.0.2 • Public • Published

    Metamaya

    Metamaya is a declarative programming language with minimal syntax.

    The language is currently rather simple, but more exciting features are on the roadmap:

    • lazy evaluation
    • pattern matching
    • cyclic dependency detection
    • optional typing...

    Installation

    In node.js:

    npm install metamaya
    

    Usage

    In example.mm:

    a = b.x;
    b = {
        x = 1;
    }
    

    In Javascript:

    var mm = require("metamaya");
    var example = mm.require("./example.mm");
    console.log(mm.eval(example.a));

    Output:

    1
    

    Alternatively, you can compile a string directly.

    var mod = mm.compile("x = 3*3");
    console.log(mm.eval(mod.x));

    Quick tour

    Names are statically scoped in metamaya programs. As reassignment is not allowed, a name is simply defined by assigning a value to it.

    a = b.c.y; // 1
    b = {
        x = 1;
        c = { y = x; }  // x comes from the enclosing scope
    }
    

    You can do the usual arithmetics. As you have probably noticed, names can be accessed before the place of definition.

    a = (x + y) * (x - y); // -5
    x = 2;
    y = 3;
    

    Metamaya operators are simply Javascript operators, so you can guess what happens when two strings are added up.

    a = "meta";
    b = "maya";
    mm = a + b; // "metamaya"
    

    The Javascript global context can be accessed from metamaya code.

    a = Number("2"); // 2
    

    You can easily define your own functions too.

    sqr(x) = x * x
    a = sqr(3); // 9
    

    That's all for now. Please note that metamaya is in a very early phase, so anything may change the next week.

    Keywords

    none

    Install

    npm i metamaya

    Homepage

    metamaya.org

    DownloadsWeekly Downloads

    3

    Version

    0.0.2

    License

    MIT

    Last publish

    Collaborators

    • kkeri