cvogt / flow-comprehensions

Work in progress: Simpler and more powerful alternative to Scala's built-in for-comprehension syntax
Other
25 stars 5 forks source link

related work #7

Open cvogt opened 8 years ago

cvogt commented 8 years ago

Ha, looks like other people had similar ideas in the past: https://www.google.com/url?sa=t&source=web&rct=j&url=http://www.cl.cam.ac.uk/~dao29/drafts/codo-notation-orchard12.pdf&ved=0CB8QFjABahUKEwiqlr_xk-3IAhXGpB4KHfABDxY&usg=AFQjCNGgNwAa-zP749_cJ8btZS41MS_pEQ&sig2=m7OAfEFQf4CmFPwUa_UjLQ

cvogt commented 8 years ago

More related work worth checking out for similarities:

http://comonad.com/reader/2007/parameterized-monads-in-haskell/ http://research.microsoft.com/en-us/um/people/nswamy/papers/polymonads.pdf http://www.cl.cam.ac.uk/~dao29/ixmonad/ https://personal.cis.strath.ac.uk/conor.mcbride/Kleisli.pdf

cvogt commented 8 years ago

https://github.com/djspiewak/emm

https://github.com/non/cats/issues/766

cvogt commented 8 years ago

https://github.com/aztek/scala-workflow https://github.com/sbt/sbt/blob/0.13/util/appmacro/src/main/scala/sbt/appmacro/Instance.scala#L45 https://github.com/scala/async#what-is-async http://doc.akka.io/docs/akka/2.3-M1/scala/dataflow.html https://github.com/jedesah/computation-expressions#asyncawait https://github.com/pelotom/effectful

stanch commented 8 years ago

Here’s a couple more:

cvogt commented 8 years ago

thanks for sharing. wow, each looks quite advanced already.

stanch commented 8 years ago

One awesome feature that is only present in scala-workflow (AFAIK) is the ability to use the least interface required. E.g. ~Some(1) + 1 will just use a map / Functor, and ~Some(1) + ~Some(1) will just use app / Applicative instead of flatMap / Monad.

Might be worthwhile to resurrect scala-workflow by replacing untyped macros with a postfix unwrap operation, like it’s done in each and effectful. I tried macro-annotations a couple of years ago, but faced some problems there (see https://github.com/aztek/scala-workflow/issues/2). On the other hand, I don’t think scala-workflow supports all of the language features supported by each, e.g. try, etc.

cvogt commented 8 years ago

could you make this a separate issue? Worth thinking about. Thx!

cvogt commented 8 years ago

We are definitely planning to add more optimizations of similar nature to this library but details of how are yet to be determined

acjay commented 8 years ago

I'm not sure what the generic name is for the programming concept of a scope that is suspendable for extraction and injection of values from an outside context. But here's a piece of related work, which eschews category-theoretic thinking: http://blog.paralleluniverse.co/2015/08/07/scoped-continuations/.

cvogt commented 8 years ago

Interesting paper reference I got at the NYC Haskell meetup https://www.cs.umd.edu/~mwh/papers/swamy11monad.html

Lightweight Monadic Programming in ML - UMD Department of Computer Science

The talk was a out co effects which was very interesting and quite relevant this this as well http://tomasp.net/coeffects/