Hacker News new | ask | show | jobs
Show HN: Lambda 0.2 – a func language better than TypeScrip, jq and jQuery (github.com)
9 points by henryluo 90 days ago
What's your tool chain for data and document processing? - jq is great, but limited to JSON; and jQuery limited to HTML; templating systems get messy for non-trivial logic; TypeScript lacks pattern matching and schema support.

So I built Lambda — an expressive functional language that combines the power of Lisp, TypeScript, and many DSLs like jq, jQuery, RelaxNG, etc.

It has a lightweight 9 MB runtime, built from scratch in C/C++, that provides an end-to-end document processing pipeline (parse → validate/query/transform → layout → render/view).

Internally, Lambda parse different input formats (Markdown, Wiki, HTML/XML, JSON/YAML/TOML/CSV, LaTeX, PDF, …) into a unified Lambda/Mark node tree, then transformed with Lambda scripts, validated with schemas, and then rendered via the Radiant HTML/CSS/SVG layout and rendering engine.

Repo (with examples and demos): https://github.com/henry-luo/lambda

I’d love feedback on: where this could actually be useful in your workflows; language design (what feels unnecessary vs. missing); etc.

7 comments

A game-changing programming language has just emerged! It’s time to say goodbye to those outdated, inefficient, and syntactically cumbersome languages.
Hope it will change the way people work with data and documents.
I know this isn't quite the same thing but how does this compare to nushell, which is my current goto for data processing and cli related stuff. It took provides a standard language and processes the various data formats it can read into tanks and records.
Thanks for bringing up Nushell. I don't have working experience with Nushell. Just by looking at the documentation, I think the obvious differences are: 1. Nushell is a simple shell script. Lambda is a full functional language. Nushell does not have class support. 2. Nushell does not have built-in markup data support. 3. Nushell does not have rich type, pattern matching and schema support. 4. Nushell is CLI. Lambda supports both CLI and GUI.
Nushell is a lot more than a simple shell script, it's a full programming language. Certainly no markup support builtin though.

Unless I'm misunderstanding nushell has a type system and is strongly/gradually typed. And there is pattern matching too, though unsure what you mean by schema support?

Lambda has first-class type support. Type can be constructed like data at runtime under Lambda, which is more powerful than most programming languages.
I agree that Nushell is close to a full programming language.
thanks for pointing out. I did not notice that nushell has pattern matching. for schema support, I mean something like RelaxNG, or XML Schema.
I'm particular interested in large PDF parsing, for those table form PDF content. Biggest problem of PDF parsing is the relativity of content according to content that output not the PDF internal layout box sequence. Sometime parse result had content sequence off.
Lambda's PDF support is still very limited at moment. I do plan to enhance it in next release.
Both the set of features and the benchmark results look really impressive. Well done
thanks.

As for the performance, I'm standing on the shoulder of great tools like MIR JIT compiler.

The feature set looks compelling. I'm genuinely eager to dive in.
Glad to hear that. Note that the language is still being developed, and there're bugs here and there. So bear with those bugs. But it should be fun to try it out.
While Lambda still has a pretty static GUI at the moment. My plan is to build it into a fully interactive, editable UI on all kinds of document data.
Searching and narrowing down to doubts in this language in google with this name will be difficult :/
Yes, I thought of this issue when I name it Lambda. But I like the name 'Lambda'. Once get over the initial stage, Lambda will be easy for people to remember.