GreaseMonkey has quit [Quit: No Ping reply in 180 seconds.]
greaser|q has joined #ocaml
Haudegen has joined #ocaml
goober has joined #ocaml
<discocaml>
<cemerick> you'd need more than a parser, would need an interpeter, too
<companion_cube>
and it needs to be able to load URLs too, iirc…
<olle>
Is there a name for the pattern that's not tagless but tagfull rather?
<discocaml>
<Kali> what do you mean? there might be an answer, i'm just not sure if i understand the question
<discocaml>
<Kali> could you give an example
<octachron>
deep embedding
<olle>
octachron: Yeah? Googling, thank you
<olle>
Kail, search for tagless-final for info :)
<discocaml>
<Kali> oh, i see
<discocaml>
<Kali> i had read about tagless-final a while ago and forgot about it, i thought you were talking about tagged types
<discocaml>
<Kali> nevermind
goober has quit [Remote host closed the connection]
trillion_exabyte has quit [Ping timeout: 240 seconds]
trillion_exabyte has joined #ocaml
Putonlalla has quit [Ping timeout: 256 seconds]
rf has joined #ocaml
Haudegen has quit [Quit: Bin weg.]
<discocaml>
<cemerick> toastal: tbc, you can use dhall with OCaml without any additional work simply by using the existing standalone dhall-to-X tools
<discocaml>
<cemerick> Looking at the language-oriented implementations, I'm surprised that they all appear to carry their own implementations, rather than linking to an authoritative one
mbuf has quit [Quit: Leaving]
<companion_cube>
that'd require a portable authoritative one
<companion_cube>
the main impl is in Haskell, isn't it? not the easiest to reuse from other languages
<discocaml>
<cemerick> there's a mature rust impl it seems
<companion_cube>
but then you have to export an AST and all that, no?
<discocaml>
<cemerick> yeah, there's no getting around that
<discocaml>
<cemerick> but that's a minor task compared to getting a parser and interpreter wired up from scratch
<discocaml>
<cemerick> which it seems like all of the existing impls do, even those for languages that are really not suited for such things IMO
dhil has joined #ocaml
Haudegen has joined #ocaml
bartholin has joined #ocaml
olle has quit [Ping timeout: 248 seconds]
troydm has joined #ocaml
<pgiarrusso>
OTOH you'd have to export a non-GCed AST into GCed languages, which doesn't sound fun either
<discocaml>
<Kakadu> Folks, when we open bisect_ppx report why lines are in three colors? I could guess what green means, but what is the difference between red and white?
<companion_cube>
pgiarrusso: better than the opposite, but yeah
dhil has quit [Ping timeout: 256 seconds]
<discocaml>
<lukstafi> Anyone going to the OCaml workshop? If yes, do you also go to the full ICFP?
spip has quit [Quit: Konversation terminated!]
alexherbo2 has quit [Remote host closed the connection]
alexherbo2 has joined #ocaml
spip has joined #ocaml
<discocaml>
<cemerick> Do cancellations in eio actually preempt the underlying fiber, or does cancellation just result in the fiber's task being "zombified"? I'd like to have timeouts that actually reclaim resources (CPU/memory) in a reasonable timeframe upon a timeout expiring, ideally without cooperative checking.
<companion_cube>
I think if a fiber is stuck in a CPU loop, there's not much you can do
<discocaml>
<cemerick> I miss the JVM's "unsafe" `Thread.stop()` for such things
<discocaml>
<cemerick> I'll run an experiment to check, but I guess multicore still isn't for me 🙃
<companion_cube>
but does Thread.stop really work on all architectures??
<discocaml>
<cemerick> companion_cube: can't say I've run a JVM with `.stop()` calls on anything other than x86/x64/ppc, but for those, yes
daftaupe has quit [Ping timeout: 264 seconds]
<companion_cube>
that's cool, I wonder how that works
<discocaml>
<cemerick> oh, if you mean "architecture" re: uring or not, who knows
<companion_cube>
although… I guess pthread_kill actually exists
<companion_cube>
no no, you got it right
<discocaml>
<cemerick> yeah, killing runaway loops and such is always a thing, it's just a question if the runtime on top allows it, and/or if it blows up "too often" in practice
wingsorc has joined #ocaml
<discocaml>
<cemerick> hrm, there are some comments away from the official docs that imply runaway cancellations works. Experiment definitely in order.
<companion_cube>
please report!
<companion_cube>
meanwhile, I'm realizing that I can't make an injective open sum type :(
<companion_cube>
`type +'a foo = ..`
<companion_cube>
can't use this as a GADT :((((
<discocaml>
<cemerick> that mostly makes sense
<companion_cube>
`type _ foo += Foo_int : int -> int foo`
<companion_cube>
I expected this to work…
daftaupe has joined #ocaml
alexherbo2 has quit [Remote host closed the connection]
<sadiq>
you can no longer have uninterruptible cpu loops in OCaml
<sadiq>
(since.. 4.13 I think?)
<sadiq>
though I have no idea how cancellations work in Eio
<discocaml>
<cemerick> sadiq: really! I'll have to dig through the changelog to see where/when that's guaranteed
<discocaml>
<cemerick> sadiq: am I right in thinking that this change is only really relevant within the context of multicore? i.e. it's not like this provides for interrupting loops pre-50
<sadiq>
well, it means we can deliver ctrl-c to things we couldn't before
<sadiq>
but yes, it's there largely for multicore
<sadiq>
I wonder if you can raise an effect from a signal handler.
<discocaml>
<cemerick> (in which I see a comment I left months ago, but had forgotten about ofc 🤦 )
<sadiq>
I forgot how long that PR got
sagax has joined #ocaml
<sadiq>
I think if you don't mind using Unix and registering a signal handler you could use a new Domain in multicore and install a signal handler that raises an async exception?
<sadiq>
then signal that domain when you want to cancel it
greaser|q has quit [Changing host]
greaser|q has joined #ocaml
greaser|q is now known as GreaseMonkey
<discocaml>
<cemerick> sadiq: but isnt the point of 11411 that a domain can't be interrupted in that way?
<discocaml>
<cemerick> (I haven't read it over again this afternoon tbc)
bgs has quit [Remote host closed the connection]
waleee has joined #ocaml
sagax has quit [Read error: Connection reset by peer]
bartholin has quit [Remote host closed the connection]