Morloc: Foreign languages unified under common functional type system
github.comThis is fine if all you care about is functions. Very little in Python is just functions though, and the same is true in C++. The issue with FFI is always adapting the different concepts from one language to another. I can't see how (or if they try) to unify other language's OOP with a functional language over the top.
I like the idea though - one functional language to rule them all is a great dream!
Yeah, I've thought a bunch about polyglot environments and the design I keep coming back to is a very generic object representation (almost definitely with a metaobject protocol), of which functions are just one kind of object. GraalVM does this with https://www.graalvm.org/truffle/javadoc/org/graalvm/polyglot...
As the morloc developer, I can tell you OOP support is in the pipeline (and there is some support now).
A proper reply to this comment would fill a very long blog post, and I'm currently on vacation, so I'll have to get back to you later.
It's cool to know that there are plans for it. I look forward to hearing about them when you get there.
Enjoy your vacation!
This idea is amazing, and amazingly ambitious.
I wonder if the morloc language (as distinct from the tool) really has to be a new language, or if it could be represented in Haskell or a more flexible variant like Agda or Idris.
Slightly off topic but the docs are really well formatted.
[0] Link: https://morloc-project.github.io/docs/
[1] Code: https://github.com/morloc-project/docs/
Asciidoc is great.
<meta name="generator" content="Asciidoctor 2.0.12">
Morloc as in "more lines of code"?
From the git repo history it looks like the original name was "Loc", for "Language of Composition".
Morlock's are also the creatures that manage the machines under the world in Well's Time Traveler novel. Though I guess they are known more for their dietary preferences.
Please make a Nix derivation so we don't have to think about those horrible installation instructions.
They look pretty simple: unless I’m missing something, it’s just ‘stack install’, plus a couple more commands for each language you want to use with morloc.
Devops, in general, is never complicated. Still, it's not something I want to do unless I'm paid for it, and especially not for trying out hobby projects.
You can also look at the .travis.yml file. It contains the instructions for installing everything needed to run all tests on Ubuntu.
I'm not sure how this works with functions that have side effects. Perhaps they're banned?
That is a very good question. Currently effects are outside the typesystem, but I'm planning on adding an algebraic effect system similar to the one used in Microsoft's Koka language.
Sounds like someone was finally smart enough to tackle "The Next 700 Libraries"[0] problem.
From the README it seems that Python, C++, and R are supported. Which others? It seems like the documentation should have the definitive list, and explain what's supported in each language.
At the moment, it is just these three languages (and partial Rust support). I'll start adding new languages once the type system is more stable.
rust and haskell will love each other