Settings

Theme

Morloc: Foreign languages unified under common functional type system

github.com

93 points by agentofuser · 21 comments

Reader

9 threads
rkangel

This 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!

  • remexre

    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...

  • arendsee

    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.

    • rkangel

      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!

Y_Y

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.

scythmic_waves

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/

soco

Morloc as in "more lines of code"?

  • catern

    From the git repo history it looks like the original name was "Loc", for "Language of Composition".

    • arendsee

      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.

otabdeveloper4

Please make a Nix derivation so we don't have to think about those horrible installation instructions.

  • bradrn

    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.

    • otabdeveloper4

      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.

    • arendsee

      You can also look at the .travis.yml file. It contains the instructions for installing everything needed to run all tests on Ubuntu.

butterisgood

I'm not sure how this works with functions that have side effects. Perhaps they're banned?

  • arendsee

    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.

wydfre

Sounds like someone was finally smart enough to tackle "The Next 700 Libraries"[0] problem.

[0]: https://dl.acm.org/doi/10.1145/1622123.1622147

skybrian

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.

  • arendsee

    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.

dlahoda

rust and haskell will love each other

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection