15 comments

[ 1.8 ms ] story [ 37.1 ms ] thread
I think this is sort of how creatures keep evolving towards crabhood but for lisp.
This is pretty cool. The function notation is rather intersting with how it looks like blocks.
Just a nitpick. It has no reserved words but has reserved symbols.

It's great that there're more experiments on new languages.

Yeah, your primitives are effectively your reserved words. And you need some primitives.
> Strictly no side effects* to help you write functional code

> *With the exception of IO

That's one hell of a footnote.

But how else would you do IO?
By having IO functions taking an argument representing the global IO environment/state and returning it. That way IO functions can remain pure.
Next you are going to tell me about endofunctors I guess.
```

geometric_mean = {a b ->

  <- (power (multiply a b) 0.5)
}

(print (geometric_mean 3 5)) // prints 5.83...

```

Bug or typo?

Coffeescript function definition, call and block syntax is terser and clearer, and beautiful. To my eye at least this is verbose and messy.
How is that different from a minimal lisp?
I can't articulate this idea, because I'm not well versed enough in programming language implementation. Maybe some forth or lisp folks can help me. A programming language can be very minimal, which is great. But it does reach a certain minimum possible complexity with regard to syntax. It has to have either a toggle to switch from 'execute mode' into 'compile mode' a la forth's `:` operator, or it has to have a particular syntax difference between 'defining a function' versus 'call a function'. I'm not sure if this is true. Does lisp have such a difference, or is everything just function application all the way down? This idea is stuck in my head. Can anybody recommend a book or formal terminology for what I'm getting at here?
> is everything just function application all the way down?

No non-toy programming language is actually implemented this way, but you can do it if you really want: SK combinator calculus is an example.