Koka – A function-oriented programming language(research.microsoft.com)
research.microsoft.com
Koka – A function-oriented programming language
http://research.microsoft.com/en-us/projects/koka/
5 comments
[deleted]
Everyone should check https://github.com/purescript/purescript as more mature language.
One of the source of inspiration was the Koka
Is this project abandoned? Latest update on codeplex is 2.5 years old. It's a shame because it looks like a very nice language.
That's the wiki/web page. The source has been updated recently http://koka.codeplex.com/SourceControl/list/changesets
Publications
Maybe it's not dead yet.
Daan Leijen, Koka: Programming with Row Polymorphic Effect Types, in Mathematically Structured Functional Programming 2014, EPTCS, 18 March 2014.
http://research.microsoft.com/apps/pubs/default.aspx?id=2106...Maybe it's not dead yet.
Martin Odersky is planning to add polymorphic side effect types to Scala.
Lucas Rytz' PhD research describes an early incarnation. The syntax will be different: side effects will be modeled as implicit evidence. But the semantis will be largely the same I believe.
I seem to remember that the default will be that if no side effects are declared that any side effect is assumed. At least that was the idea in Rytz' PhD thesis. The reason for this was pragmatics: the only effect system in a main stream language is Javas checked exceptions. And for that the communis opinio ended up being that the idea is right but having to declare exceptions in intermediary layers of the call graph was not worth the effort. That's why f.i. Anders Hjelberg left checked exceptions out off C#. So getting the usability right is extremely important for a widely adopted effect system.
Btw there are a lot of publications around 2012 on the topic of effect systems.
http://lrytz.flavors.me/#publications-talks
Lucas Rytz' PhD research describes an early incarnation. The syntax will be different: side effects will be modeled as implicit evidence. But the semantis will be largely the same I believe.
I seem to remember that the default will be that if no side effects are declared that any side effect is assumed. At least that was the idea in Rytz' PhD thesis. The reason for this was pragmatics: the only effect system in a main stream language is Javas checked exceptions. And for that the communis opinio ended up being that the idea is right but having to declare exceptions in intermediary layers of the call graph was not worth the effort. That's why f.i. Anders Hjelberg left checked exceptions out off C#. So getting the usability right is extremely important for a widely adopted effect system.
Btw there are a lot of publications around 2012 on the topic of effect systems.
http://lrytz.flavors.me/#publications-talks
March 2014 isn't exactly proof the language is alive today.
Still better than 2012.
KOKA author is now on this http://2015.ecoop.org/profile/daanleijen
and also tutoring PhD (I assume) students for http://goto.ucsd.edu/~nvazou/koka/icfp15.pdf
KOKA author is now on this http://2015.ecoop.org/profile/daanleijen
and also tutoring PhD (I assume) students for http://goto.ucsd.edu/~nvazou/koka/icfp15.pdf
This is fantastic work. It has a very approachable way of controlling side-effects. That's also one of Haskell's goals, but the learning curve is much steeper.
If I was going to teach Haskell to someone, I'd be very tempted to start them off by spending a few days noodling around with Koka.
I love that you can even annotate a function to let it read from a variable, but not write to it, or vice versa.
If I was going to teach Haskell to someone, I'd be very tempted to start them off by spending a few days noodling around with Koka.
I love that you can even annotate a function to let it read from a variable, but not write to it, or vice versa.
I'm definitely going to check this out - I think that having effects explicitly controlled in the code but strict by default is the sweet spot I'm looking for in my next language.
The syntactic sugar used here look absolutely beautiful. I really love this, it looks like a saner functional Ruby/JS baby.