vladimir-vg
The challenge isn't really in building a decent implementation or adopting useful features. There are plenty of languages with decent implementations and features that are on display in Github graveyard.
The challenge is to deeply understand what THE PROBLEM is. Books won't help you with that at all. Long walks, drinking fresh water, meditation, prayer. It may take years.
And once you understood the problem, the path is clear: research and studying prototypes of other people helps greatly.
What is the problem that you're trying to solve? You listed the features, not the issue you're aiming at.
Functions can be seen as basic tools of software design only if you completely leave out IO and asynchronous nature of the communication.
That’s why Haskell is so beautiful and understandable when you work with pure data, and suddenly becomes so cumbersome and cryptic when you need to work with IO and async communication. Because functions ARE NOT basic tools of software design.
Actors that asynchronously pass each other messages are.
> that wall being the limitations of programming languages you outline here
Exactly. I was thinking about the same a while ago. EVE is an attempt to build a new reality where those limitations are gone. But it didn't work quite well -- in order to get support, money, users it should be somehow connected to production.
There is a platform where all this complexety with IO (the mail send in your example) is abstracted quite nicely and can be manipulated/mocked: the BEAM platform (Erlang, Elixir).
You can record IO for particular process (it just messages), replay it if you want.
Also, modules can be compiled in any order, functions in module can be defined in any order. It's much easier to treat function as smallest unit of code. To create a parser that could transform code into data, allow it to manipulate (structured editing and all) and transform it back to text form, to be used by other programmers.
I think if LightTable was aiming at BEAM platform it could go a bit further. Utilize growing popularity of Elixir, and create a new development platform.