3 ms·
Hi all, I didn't realize that my project would end up in hacker-news. I was planning to make a public announcement later when I had something more stable. But w
by pikatchu 16y ago
Hi all, I didn't realize that my project would end up in hacker-news. I was planning to make a public announcement later when I had something more stable. But well ... There is no going back now.
Right now, I need to stabilize closures, finish the standard library, write more tests and optimizations.
I saw a comment saying: it looks like clean. Well it's different in 2 ways, LinearML is strict and every object is linear. In most languages (Clean, ATS, etc ...), linear types are used to encode side-effects, as an alternative to monads. This is not the case here, in LiML, every object is linear! sharing has to be explicit. This leads to 3 interesting properties:
1) message passing is cheap (no need to copy)
2) most operations can be done "in-place", which is normally not true for a purely functional language. This allows better caching.
3) There is no GC. No runtime overhead for garbage collection at all.
- sausagefeet 16y agoIs LiML meant to attack concurrency or parallelism or both?
- pikatchu 16y agoboth
- kenjackson 16y agoI'm a little late to this thread, but just wanted to say nice job. This looks promising.
- pikatchu 16y agothanks!
- limmeau 16y agoI know this question is unpopular among PL researchers, but what is the biggest program you've ever written in your language?
- pikatchu 16y agoThis is an unfair question :-) My plan was to release LinearML with a significant amount of non-trivial examples. The guys from "mirage" are working on a TCP stack based on LiML. I thought that would have been a really good app. So, to answer your question. Right now, there isn't much. But the question is unfair because I am not the one who made this public anouncement ... I didn't want to make the anouncement for 3 reasons: I just started a new job at Facebook last week, and wanted to focus on that; I wanted to release something relatively stable/fast; I wanted quite a few non-trivial examples to prove my point. But I understand your skepticism. I would have certainly asked the same question :-)
- dkersten 16y agoI like this project. It fits nicely with my own views of a good parallel/concurrent language. As I said in another comment, I am playing around with languuge design/implementation too. Could you perhaps give some notes on how you implemented the linear type system? I am browsing through the source code, but finding it tough understanding whats going on. Anything at all (brief overview?) would be useful and appreciated.