The lambdaway project, a small and coherent language dedicated to the web
epsilonwiki.free.fr
epsilonwiki.free.fr
I find the explanation at [0] a little more detailed and informative (8th European Lisp Symposium 2015). Worth checking out if you are interested.
[0] http://epsilonwiki.free.fr/alphawiki_2/?view=lambdatalk_slid...
I found the console[1] and started using it. I was trying to expand a list of things into LI elements; at some point I wrote this:
{def lis| {lambda {:x} {li :x}}}
The bar represents the cursor just before I hit backspace. After I hit backspace, I entered an infinite recursive evaluation which eventually stopped with stack overflow.
Maybe evaluating the code after each keypress is not ideal. Or maybe you could add a timeout, a custom depth limit or something else ;-)Also, being accustomized to syntax coloring, completion, indentation, warnings, etc., I find the environment particularly dry, especially when you consider your target audience. On the one hand, beginners who want to learn will be able to explore and find their way through trial and errors anyway, but on the other hand, a little bit of feedback can help when they are blocked. For example, when forms are badly formed the output is "ooops": this is better than nothing, obviously, but still a little terse. I looked at the teaching[2] section and this is a good introduction, and I am not telling you to be more like Scratch either, but there might some way to bring a little bit more interactive help.
Overall, this is a nice project and it brings a lot of different things together (maths, svg, javascript). I could be useful as a richer Markdown and I find it more readable than the typical Wiki syntax.
[0] http://epsilonwiki.free.fr/alphawiki_2/meca/JS.js [1] http://epsilonwiki.free.fr/lambdaway/meca/ [2] http://epsilonwiki.free.fr/lambdaway/?view=teaching
About {def lis| {lambda {:x} {li :x}}}, I wrote this expression in http://epsilonwiki.free.fr/lambdaway/?view=sandbox and I didn't see any infinite loop. Click on the top-left "+" in the frameview and then on edit to inspect the code.
OK, the error messages are terse, there is no syntax colorization in the textarea. There is a timeout for each keypress but it has to be improved.
It's a work in progres, I'm alone and I need help.
I understand this is hard work. I hope you find time and maybe someone to help you develop this project.
Because we are in a wiki context where text is 95% of the content. I want to be able to write (Hello World) without triggering any evaluation, trying to apply Hello to World. Usually, other languages (except HTML) evaluate every words in code except quoted sentences - called strings - like this "Hello World". Lambdatalk inverts this process: everything is unevaluated out of curly braces. For instance this expression 1+2 is equal to {+ 1 2} should be written in Javascript like this: "1+2 is equal to " + (1+2). I think that it's the main point of lambdatalk, this inverted process. You could have a look to these links: "curl | latex | LML | PDF | skribe | SXML" in the page http://epsilonwiki.free.fr/lambdaway/?view=curl.
EDIT: For example, the image http://epsilonwiki.free.fr/alphawiki_2/data/lambdatalk_splas... from the talk linked at https://news.ycombinator.com/item?id=12306246 appears to have both 'title' and 'titre'.
- in the expression {{titre}lambda-talk}, titre (which is title in french, sorry) is the name of a constant defined further in the page or in an external page acting as a library.
A new one is under construction here : http://epsilonwiki.free.fr/lambdaway/?view=lambdaway, but it's in french until now. Sorry.
The function "serie" comes with "map" and "reduce". You could have a look to an application of "serie" in http://epsilonwiki.free.fr/lambdaway/?view=euler
And OK, I should have named it "series" or "range". I promise I will replace "serie" by "range" to be coherent with my choice of english names for builtin keywords and functions. Nobody's perfect.
I would have posted this before, but "You are posting too fast." Sigh.
It sounds like I gave offence. I meant my criticism to be constructive, and I apologise if it came across as an attack. (For what it's worth, it's only because the language looks interesting that I bother trying to make constructive suggestions!)
By the way, while we're talking syntax, why {} instead of ()?
And also, don't forget that to use Curl products or execute Curl applications over the internet, it’s necessary to acquire and agree to a Curl license. The lambdaway project is free and easy to install, http://epsilonwiki.free.fr/lambdaway/?view=download.
I haven't forgotten. I was excited to see a full-stack solution get invented that about anyone could use. Then they wanted to lock it up commercially. That killed all hope of it spreading. (sighs)
These days I'm more into pushing Opa given it brings ML-style robustness to the full-stack concept. Was good to see your project, though, as I'm all for experimentation in this space. :)
As an aside, Elm looks a nice way to write web client code. I hope Elm will one day compile to a fast language for the server (e.g. C, OCaml or WebAssembly). There's no reason Elm shouldn't be as fast as OCaml and I think for server-based work it should be within 2x C speed.
Unfortunately, Spock doesn't seem to be ready for prime time. It works, but it can stress your JS implementation in odd ways.
> It begins with simple things, for instance you could simply write
{ava}
> and get a picture of the gorgious Ava GardnerIt made me think that this was some kind of framework with a feature akin to invoking `/giphy [some word]` in Slack. Only after scrolling all the way down do we find that it's just basically a variable that holds the same amount of code it would take to show that image through HTML and CSS, without any information on why it would be beneficial to follow a practice of writing inline styles (as opposed to the standard practice of using CSS selectors and external sheets).
The constant "ava" can be stored in another page of the wiki, a library which can be called via a {require mylibrary}. Please be nice enough to believe that I'm aware of the standard practice... This "quick" introduction can't explain everything. Neither CSS standard practices, nor first class functions, currying, tail-recursion, macros, and so on. Please take time to go further in this work before saying « it's just plain misleading ». Thank you.
The premise of the intro is that it is just "simple things" (and the conclusion, "Keep it Small and Simple"). "Simple", to me, would be how invoking "ava" embeds an image of an Ava into the page, a priori. But that is not at all the case and I have to scroll past 3 large headshots of actresses to get to the point. And even then, the utility is unclear.
I don't expect a "quick" introduction to explain everything. But if the article has the time to throw in random photos to gaze upon, then I'm going to be disappointed when I get to the end to see few details explained.
Anyway, the source code is tiny and educational. :)