Is there an existing compatibility library functorized over the intersection of Async and Lwt? That would make being compatible with both much easier. On Mon, Mar 7, 2016 at 4:08 AM, Simon Cruanes wrote: > Hi, > > It seems that Lwt is more popular in the community > outside JaneStreet than Async (if only by looking at its reverse > dependencies on opam.ocaml.org). There has been posts about this, for > instance http://rgrinberg.com/blog/2014/12/11/abandoning-async/ . > However, if you're writing a library, it is good taste (if possible) to > parametrize you code over an "IO" monad that will be easy to instantiate > with either Async or Lwt (or the trivial blocking monad where 'a t = 'a > and (>>=) x f = f x) along with the required IO primitives. > > Regarding general utility functions, if they do not perform IO or depend > on (blocking) IO they can be used directly with Async/Lwt (unless they > really take a very long time to complete). > > Le Mon, 07 Mar 2016, Malcolm Matalka a écrit : > > Yotam Barnoy writes: > > > Hi all > > > > > > I'm thinking about my next project in OCaml, and I'm wondering how many > > > users of OCaml currently use Lwt or Async regularly. > > > > > > One of the advantages of OCaml over Haskell (which I'm not crazy > about) is > > > the fact that you don't have to constantly be stuck inside a monad. > > > However, once you want to use these user-level threading libraries, > you're > > > essentially tied to a monad. It also means that the usage of any other > > > monad from Lwt/Async code is out -- OCaml doesn't have the monad > > > transformer infrastructure to layer monads easily as far as I can tell > (am > > > I wrong?). I mean, even in Haskell using Monad Transformers is a pain > (IMO). > > > > > > Also, what happens to general utility functions that aren't rewritten > for > > > Async/Lwt -- as far as I can tell, being in non-monadic code, they will > > > always starve other threads, since they cannot yield to another > Async/Lwt > > > thread. Is this perception correct? If so, this seems to imply that you > > > either write your code to cooperate within these frameworks and suffer > the > > > monad, or don't, and make it near-impossible for Lwt/Async users to > make > > > use of your code. > > > > > > I would like to get an idea of the usage level of these libraries, as > well > > > as the burden of writing compatible code, any difficulties etc. Also, > I'd > > > like to get a sense of the domains that benefit from these libraries. > Some > > > domains (such as gaming) traditionally involve a continuous main loop, > and > > > would thus only suffer from the additional overhead of queuing in these > > > libraries. > > > > > > -Yotam > > > > I mostly use Async. However, I think most usage of Lwt or Async > > requires doing as little as possible in these frameworks and using them > > to orchestrate other functions. For example, I usually try to separate > > parsing of a network protocol from the reading and writing of the bytes. > > > > -- > > Caml-list mailing list. Subscription management and archives: > > https://sympa.inria.fr/sympa/arc/caml-list > > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > > Bug reports: http://caml.inria.fr/bin/caml-bugs > > > -- > Simon Cruanes > > http://weusepgp.info/ > key 49AA62B6, fingerprint 949F EB87 8F06 59C6 D7D3 7D8D 4AC0 1D08 49AA > 62B6 >