trillion_exabyte has quit [Ping timeout: 240 seconds]
spip has joined #ocaml
trillion_exabyte has joined #ocaml
Haudegen has joined #ocaml
slothby has joined #ocaml
bartholin has joined #ocaml
alexherbo2 has joined #ocaml
<discocaml>
<cemerick> I agree with a lot of this. I've tinkered with Eio for the first time a bit this week (given the apparent rush to it in Dream), and I'm currently leaning towards avoiding it at least for the foreseeable future.
<discocaml>
<cemerick> Losing the explicitness provided by Lwt is the biggest impact IMO. I've done a lot of work in systems with ambient concurrency and parallelism (esp on the JVM), and Eio (and untyped effects in general) goes right back to that well AFAICT. Not looking forward to it.
<discocaml>
<cemerick> my luke-warm take would be that anyone hoping for Eio/untyped effects to serve as a unifying force vis a vis lwt/async is going to be disappointed. "Direct-style IO" comes with its own set of tradeoffs, and migrating from either of the monadic concurrency libraries isn't going to be an obvious or easy exercise, at least for many.
<discocaml>
<cemerick> we'll have a triumvirate instead of a duumvirate 🤷 🙃
<discocaml>
<jaycle> I'm only in the tinkering phase with OCaml myself. Attracted mainly b/c of the strong type-safety mixed with pragmatic FP. Do you (@cemerick) think that typed effects will solve the issues you mention? Do we have any sense of the timeline for that landing? I couldn't find anything in GitHub - only some papers and links to a 5 year old talk.
<discocaml>
<jaycle> I'm only in the tinkering phase with OCaml as a whole, myself. Attracted mainly b/c of the strong type-safety mixed with pragmatic FP. Do you (@cemerick) think that typed effects will solve the issues you mention? Do we have any sense of the timeline for that landing? I couldn't find anything in GitHub - only some papers and links to a 5 year old talk.
<discocaml>
<cemerick> Re: typed effects, I don't know. I wouldn't lean too hard on speculative future developments like that (same with e.g. "modular implicits"); even leaving aside whether or not they'll ever exist outside of research prototypes, it's too easy to project one's hopes and dreams on such things
<discocaml>
<cemerick> FWIW, I can't recommend OCaml enough. I'd recommend carrying on with your tinkering! 🙂
<discocaml>
<jaycle> Seems wise. OCaml seems to move slower than other ecosystems I'm familiar with, but that's not necessarily a bad thing. I just think I should really temper expectations that typed effects are on the way or will solve the hidden nature of direct IO. Guess I'll stick with Lwt, too. Which it sounds like is Dream's plan at least for the main branch.
<companion_cube>
oh, it ended up on master in the end?
<discocaml>
<jaycle> Oh, was going from what I heard on stream.
<discocaml>
<cemerick> 🤷 that was my understanding as well, but HEAD has eio-related vendoring
<companion_cube>
thought he was going to put that in a branch
<discocaml>
<jaycle> But 1.) I'm not sure if master == opam's release branch. If so, doesn't matter much. 2.) If the commits are just in support of Eio but not changing the top-level api.
<discocaml>
<jaycle> But I'm not sure 1.) if master == opam's release branch. If so, doesn't matter much. 2.) If the commits are just in support of Eio but not changing the top-level api.
<discocaml>
<jaycle> But I'm not sure 1.) if master == opam's release branch. If not, it doesn't matter much. 2.) If the commits are just in support of Eio but not changing the top-level api.
Stumpfenstiel has joined #ocaml
<companion_cube>
plz stop editing your messages too much, it spams IRC :p
<discocaml>
<jaycle> Sorry. I'm a ready, fire, aim kinda guy. Same reason why I need strong types
Serpent7776 has joined #ocaml
<companion_cube>
heh I hear you
Techcable has joined #ocaml
Anarchos has quit [Quit: Vision[]: i've been blurred!]
Tuplanolla has joined #ocaml
Anarchos has joined #ocaml
raskol has joined #ocaml
John_Ivan__ has quit [Read error: Connection reset by peer]
John_Ivan has joined #ocaml
olle has joined #ocaml
bartholin has quit [Quit: Leaving]
olle has quit [Ping timeout: 260 seconds]
alexherbo2 has quit [Remote host closed the connection]
rf has joined #ocaml
<discocaml>
<'a patate> It just hit me... Is there such thing as... a function on types?
<discocaml>
<'a patate> I mean, you can think of `*` (as in `type t = a * b`) as "something" that builds a new type with two types.
<discocaml>
<'a patate> `type 'a t` takes any type and builds another type with it...
<discocaml>
<'a patate> Is there a general way of describing transformations on types?
Anarchos has quit [Quit: Vision[]: i've been blurred!]
<companion_cube>
no, not in OCaml
<companion_cube>
that kind of thing tends to break the good properties of type inference
<discocaml>
<'a patate> Yeah, sorry, did not meant specifically in ocaml
<discocaml>
<'a patate> Yeah, sorry, did not meant specifically in ocaml
<companion_cube>
then sure, it's one of the facets of the lambda cube iirc :)
<discocaml>
<'a patate> Why would it break type inference?
<companion_cube>
because you would need to compute in types, just to typecheck stuff
<discocaml>
<'a patate> I guess cube is a type theory term... (I'm not familiar with it)
<discocaml>
<'a patate> And it's expensive?
<discocaml>
<'a patate> To compute types
Serpent7776 has quit [Ping timeout: 255 seconds]
Haudegen has quit [Quit: No Ping reply in 180 seconds.]
Haudegen has joined #ocaml
<companion_cube>
well, if you start running arbitrary computations are compile time, then yes
raskol has quit [Ping timeout: 252 seconds]
bgs has quit [Remote host closed the connection]
Anarchos has joined #ocaml
<discocaml>
<'a patate> Yeah, of course xD
<discocaml>
<'a patate> But it might be nice, still... I mean, it is not taking time if you don't use it, and if you have good reasons and need it, it might be more expressive, right?
<companion_cube>
you also complexify the language (and the typechecker) significantly
<companion_cube>
same reason why OCaml doesn't have dependent types
<discocaml>
<'a patate> The overall language? Or only the specific parts where you use the functionality?
<discocaml>
<'a patate> Yes @ilo Kali , I was about to read it quickly before sleep
<discocaml>
<Kali> 👍
<discocaml>
<'a patate> I definitely slow down significantly when there are formulas, as I never know how to look up their meaning... But it seems like it says quite what I was thinking about...
<companion_cube>
yeah the overall language
<companion_cube>
now you need the typechecker to be able to run code, for a start
<companion_cube>
in OCaml typechecking comes earlier than compilation to anything executable
Anarchos has quit [Quit: Vision[]: i've been blurred!]
Stumpfenstiel has quit [Ping timeout: 252 seconds]
szkl has quit [Quit: Connection closed for inactivity]