read


read
or learn more

Ix syntax for functions

Oct 27, 2008

I have been playing around with my personal programming language Ix and have settled on, what I consider, I clean syntax. I tried to do fancy parsing, but soon realized that since everything is a function call of some sort, then the syntax falls out naturally:

--- This is a comment
--- 

fn( foo
    "This is a docstring"
    [?arg1 ?arg2]

    action1()
    action2(?arg1)
    action3(?arg2)

    '(?arg1 ?arg2)) --- return a list

fn( bar
    "This is also a docstring"
    [?x]

    if(not(?x)
        false
    else
        true))

fn( baz 
    "This shows the case/when"
    [?arg]
    
    case( ?arg
        when(true
             out("got true" crlf)
             1)
        when(false
             out("got false" crlf)
             2)
        when(chimp
             out("What the?!?" crlf)
             3)
        default
             4))

fn( fortest
    "Showing the for"
    [?min ?max]

    for([?i in range(?min ?max)]
        if(even?(?i)
            out(even crlf)
        else
            out(odd crlf))))

fn( nstest
    "Using the namespace operator and let"
    []
    
    let ?sine <- math/sine(math/?PI)
    out("sine of pi is " ?sine crlf)
    ?sine)

-m

2 Comments, Comment or Ping

  1. Interesting syntax, but it bears a strong resemblance to m-expressions. Do you also support a transformation between the two, with Lisp-style lists for ASTs?

  2. The syntax is still a work in progress, however what you see here is essentially an inverted S expression.

    -m

Reply to “Ix syntax for functions”