I just committed 6f6559 that adds support for an experimental new driver called 
`flxc` that will support a REPL. It's got a ways to go, but here's what it can 
already do:

    # build/debug/bin/flxc -I build/debug/lib --import nugram.flxh --import 
flx.flx
    >>> 1;
    ... PARSED:    call 1 ();
    ... EXPANDED:  call 1 ();
    ... DESUGARED: call 1 ();
    >>> (1 + 2) * 3;
    ... PARSED:    call 1+2*3 ();
    ... EXPANDED:  call 9 ();
    ... DESUGARED: call 9 ();
    >>> val x = 5;
    ... PARSED:    val x = 5;
    ... EXPANDED:  val x = 5;
    ... DESUGARED: val x: typeof(5);
    x := 5;
    >>> fun foo (x:int) (y:float) = {
            val z = x + 1;
            var w = y * 2.0f;
            val s = "hello ";
            return s + "world!";
        }
    ... PARSED:    fun foo(val x: int) (val y: float): <none>
    {
      val z = x+1;
      var w = y*2.0f;
      val s = "hello ";
      return s+"world!";
    }
    ... EXPANDED:  fun foo(val x: int) (val y: float): <none>
    {
      val z = (add (x, 1));
      var w = (mul (y, 2.0f));
      val s = "hello ";
      return (add (s, "world!"));
    }
    ... DESUGARED: generated curry fun foo(val x: int): <none>
    {
      body _rqs_foo = c"" requires _rqs_<input>;
      fun foo'2(val y: float): <none>
      {
        body _rqs_foo'2 = c"" requires _rqs_foo;
        val z: typeof((add (x, 1)));
        z := (add (x, 1));
        var w: typeof((mul (y, 2.0f)));
        w := (mul (y, 2.0f));
        val s: typeof("hello ");
        s := "hello ";
        return (add (s, "world!"));
      }
      return foo'2 of (float);
    }


It even supports syntax extension:

    >>> syntax foo {
            requires statements;

            svar_def := "foo" sdeclname = sexpr ";" =>#
                """
                `(ast_var_decl ,_sr ,(first _2) ,(second _2) none (some ,_4))
                """;
        };
    ... PARSED:    {/**/;}
    ... EXPANDED:
    ... DESUGARED:
    >>> open syntax foo;
    ... PARSED:    {/**/;}
    ... EXPANDED:
    ... DESUGARED:
    >>> foo x = 5;
    ... PARSED:    var x = 5;
    ... EXPANDED:  var x = 5;
    ... DESUGARED: var x: typeof(5);
    x := 5;

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT 
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian 
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com 
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to