Home liberachat/#haskell: Logs Calendar

Logs on 2023-11-07 (liberachat/#haskell)

00:12:41 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 240 seconds)
00:13:38 <EvanR> newsham, there's an open world assumption. Code should still work if future code is introduced which adds instances. So deciding to do something on "no such instance now" would be wrong in the face of that
00:14:50 <EvanR> deciding statically
00:14:53 xff0x joins (~xff0x@2405:6580:b080:900:1034:83b0:f1e0:db5e)
00:14:59 bcksl joins (end@user/bcksl)
00:15:23 <EvanR> and deciding dynamically at runtime like those crazy things linked, sounds like asking for pain xD
00:15:30 × Athas quits (athas@2a01:7c8:aaac:1cf:d300:623e:69e4:545f) (Quit: ZNC 1.8.2 - https://znc.in)
00:15:40 Athas joins (athas@2a01:7c8:aaac:1cf:d300:623e:69e4:545f)
00:18:30 <newsham> yah, I see the point about not doing this dynamically.  but I'm still not following the "open world" assumption reasoning.  in my mind, when the code is compiling something like `Show a => a -> String` it has to make a static decision to provide the "Show a" at compile time, or provide an error.  So in my mind it should be possible to implement
00:18:31 <newsham> a `~(Show a) => a -> String`, making the same choice based on the non-existance of (Show a) dictionary.  Perhaps not with that same syntax, but, say for example, defining a `class ~(Show a) => Unshowable a` dictionary.
00:18:49 <newsham> so there's some ignorance in my model somewhere about why this cant work.
00:18:50 × diagprov quits (sid348783@user/diagprov) (Server closed connection)
00:19:03 diagprov joins (sid348783@user/diagprov)
00:19:23 <EvanR> if you write a function with type Show a => a -> String, and there's no other information, no it doesn't statically determine anything, yet it still works if linked into other projects
00:19:53 <EvanR> it's waiting for a dictionary
00:20:05 <newsham> but at the call site, it must decide statically.
00:20:10 <EvanR> not necessarily
00:20:25 <EvanR> it could be called from yet another parametric function
00:20:28 <newsham> how is that implemented under the covers?
00:20:40 <EvanR> dictionary passing
00:20:53 <geekosaur> Show is in fact a good example of that because many Show instances defer to other Show instances
00:21:07 <EvanR> you could think of Show a => a -> String as taking 2 arguments, the dictionary and the thing to be shown
00:21:22 <newsham> but the compiler will tell you at compile (or link?) time that it couldnt construct a dictionary for the purpose.
00:21:33 <newsham> *nod*
00:21:58 <EvanR> yeah if you try to show the ord function it will complain
00:22:03 <EvanR> > show ord
00:22:05 <lambdabot> "<Char -> Int>"
00:22:11 <EvanR> WOW
00:22:17 <newsham> `show x` desugars to `show x.showdictionary x` or something akin to it.
00:22:46 <EvanR> show instances for everything makes this issue hard demonstrate xD
00:22:57 <EvanR> > ord + ord
00:22:59 <lambdabot> error:
00:22:59 <lambdabot> • No instance for (Num (Char -> Int)) arising from a use of ‘+’
00:22:59 <lambdabot> (maybe you haven't applied a function to enough arguments?)
00:23:12 <newsham> dont worry, I will not overgeneralize by lambdabot's hacks :)
00:23:21 <EvanR> so it won't compile, but that's different from "does compile but is broken now"
00:24:50 <EvanR> (because someone down the line could provide the requisite Num instance, but we based our decision on the fact that it doesn't and never will exist)
00:27:18 <newsham> right, but, doesnt ghc statically determine at compile+link time which objects have the right type to meet the required type constraints and generate dictionaries for each applicable type that can be used at the call sites?   there's never a case where ghc will compile code and determine at runtime if an object is `Show a` or not, right?
00:27:41 <EvanR> the other thing is separate compilation
00:28:12 <EvanR> so even if call site is in module A and polymorphic code is in module B, they need to be able to compile separately without knowing about each other yet
00:28:30 <newsham> understood that at the point of compiling a single .sh into something like an .o, it might not have the full information.  but by the time it is linked, it does, right?  (maybe you're talking about dynamic linking here?  or the `Dyn` type handling?)
00:28:44 <newsham> single .hs (not .sh)
00:28:57 <EvanR> so it should do what at link time
00:29:07 <geekosaur> but that cannot go back and modify something that was compiled 6 months ago, which it would have to do
00:29:44 <newsham> so at link time it could resolve a `class ~(Show a) => Unshowable a where ...` to construct an `Unshowable` dictionary.
00:29:53 <newsham> if the language designers chose to
00:30:18 <geekosaur> with a custom linker that understood how to write Haskell code and hotpatch a library written 6 months ago?
00:30:31 <geekosaur> you're welcome to try to write such a linker
00:30:43 <newsham> ok, I see where you're going with this.
00:30:51 <newsham> its possible, but perhaps not practical
00:31:31 <geekosaur> also said linker needs to deal with C++ templates, Rust, Go, etc. that might be linked into Haskell
00:31:39 <EvanR> I have a feeling even if that were possible it would cause other problems
00:31:42 <newsham> given that the compiler would like to build these class dictionaries in the object files where the class and instances were defined.
00:31:42 × jackdk quits (sid373013@cssa/jackdk) (Server closed connection)
00:31:51 jackdk joins (sid373013@cssa/jackdk)
00:31:52 <geekosaur> right now everyone uses the C linker, and nobody wants to change that
00:32:17 <geekosaur> C++ has a bunch of template restrictions specifically so they don't have to do this either
00:32:39 <EvanR> maybe a sane way to approach your feature would be a global "this type cannot possibly have an instance of class X" and this is communicated globally
00:33:13 <geekosaur> but now it's not truly an open typeclass any more. (and indeed one way proposed for this is closed typeclasses)
00:33:20 <newsham> i think I have a handle on the reasoning now.  I'm not trying to propose this so much as understand the whys.
00:33:22 <EvanR> but by itself it kind of sounds like "private" in oop
00:33:42 <EvanR> a feature about lack of features
00:34:23 <newsham> I guess to add to the reasoning, as types get more expressive, it might be easy to demonstrate that type P is inhabited, but not always possible to know if ~P.
00:34:54 <geekosaur> it's doable but you need type witnesses at runtime, as I said earlier
00:35:02 <EvanR> well data types are closed, the author designed it to serve a specific purpose and not to be appended to. Doing so could break invariants guaranteed by the type
00:35:34 acidjnk joins (~acidjnk@p200300d6e72b9352bd047a176d81e23c.dip0.t-ipconnect.de)
00:35:54 <geekosaur> and it's a different kind of type witness than instance dictionaries
00:36:07 <geekosaur> I've seen it but all I recall now is that it involved Refl
00:36:23 <geekosaur> which … is useless for looking it up 🙂
00:38:06 <EvanR> newsham, have you seen the typeclasses vs the world video, I'd see which is the 4 or 5 cool things about type classes break if you manage to depend on the non-instance of something
00:38:06 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
00:38:08 × ProofTechnique_ quits (sid79547@id-79547.ilkley.irccloud.com) (Server closed connection)
00:38:15 <EvanR> which of the*
00:38:23 ProofTechnique_ joins (sid79547@id-79547.ilkley.irccloud.com)
00:38:27 <newsham> i havent
00:38:35 <geekosaur> but that then raises another problem: since it can't be done with a class dictionary, either we now need two extra parameters only one of which is inhabited at runtime, or we need one that is somehow two types at the same time
00:38:54 <EvanR> like the diamond dependency "problem" from multiple inheritance actually being not a problem and working perfectly in the type class world
00:39:40 <newsham> geekosaur I dont buy that argument.  if you're willing to let the compiler decide if a class exists or not, you could use it to construct a class/dictionary as a witness of it not existing.
00:40:06 <EvanR> how do you witness the non-existence of something in haskell
00:40:10 <geekosaur> so you've ignored the past 15 or so minutes?
00:40:37 <newsham> no.  i'm just saying I think this is something that could be implemented if it was something that compiler decided was worth implementing.
00:41:17 × bcksl quits (end@user/bcksl) (Quit: \)
00:41:35 <newsham> anyway, I think this argument is becoming unproductive, and I think I have found out what I was curious about.  thank you for helping me along.
00:42:15 motherfsck joins (~motherfsc@user/motherfsck)
00:42:16 <geekosaur> [07 00:35:54] <geekosaur> and it's a different kind of type witness than instance dictionaries
00:42:39 × newsham quits (~newsham@2603-800c-2c01-6825-1540-4c8c-dd9a-bb11.res6.spectrum.com) (Quit: Client closed)
00:43:06 <geekosaur> the typeclass dictionary approach only works if there are no "doesn't exist" constraints
00:43:15 × Lycurgus quits (~georg@user/Lycurgus) (Quit: Lost terminal)
00:43:52 <geekosaur> I don't know enough to say if some other approach would be possible, but I'm pretty sure it would come at a very high price relative to typeclass dictionaries
00:43:58 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6dde:4903:7d59:6a8d) (Ping timeout: 272 seconds)
00:44:23 <EvanR> maybe it would be productive to have an example use case
00:44:59 <EvanR> if it's "default implementation for every type" it seems like there's a more straight forward way
00:45:01 bcksl joins (end@user/bcksl)
00:45:13 <EvanR> other languages have that
00:45:39 <monochrom> My view: "I have only 100 modules. Is it not possible for the compiler to check all 100 modules, see for itself that Int is not made a Foo instance, therefore it can safely support a way to say 'if Int is not Foo then here is how to make Int a Bar instance'?" Answer: Yes, you have just defeated separate compilation.
00:45:49 × bcksl quits (end@user/bcksl) (Remote host closed the connection)
00:46:05 × bliminse quits (~bliminse@user/bliminse) (Ping timeout: 240 seconds)
00:46:08 <monochrom> The class system is open because it helps with separate compilation.
00:46:40 <monochrom> With an open world, then Prolog's negation-as-failure cannot be relied on.
00:48:20 bliminse joins (~bliminse@user/bliminse)
00:49:08 <monochrom> But hey! Separate compilation is also standing in the way of mutually import-each-other modules. Perhaps there is a venture for writing a Haskell compiler that has a NoSeparateCompilation extension, by which you can support both CWA and recursive modules.
00:49:14 <geekosaur> he's already rejected that because the linker could be taught to rewrite code on the fly
00:49:32 bcksl joins (~bcksl@user/bcksl)
00:49:37 <monochrom> Well yeah I wouldn't mind that.
00:49:51 <monochrom> Now, who wrote that linker again? >:)
00:50:42 <geekosaur> and how does that go if everyone writes their own linker to support all these pie-in-the-sky extensions (I already mentioned C++ template restrictions that come from the linker)
00:50:53 <c_wraith> GHC's separate compilation leads to a few different cases where it technically violates the spec.
00:51:33 <monochrom> In that case, we are saved by the brutal economic reality that everyone waits for someone else to do it, therefore nothing happens and no harm done. >:)
00:51:36 <c_wraith> the lack of mutual imports is one. You can actually violate typeclass coherence without an error too.
00:51:57 × John_Ivan quits (~John_Ivan@user/john-ivan/x-1515935) (Quit: Disrupting the dragon's slumber one time too often shall eventually bestow upon all an empirical and indiscriminate conflagration that will last for all goddamn eternity.)
00:52:05 <monochrom> Corollary: This is why every real language is harmful. >:)
00:52:52 <geekosaur> technically .hs-boot files make ghc spec-conformant there
00:53:08 <geekosaur> it says they have to be supported somehow, possibly with extra information
00:53:20 <geekosaur> it says nothing about sanity
00:54:02 <c_wraith> well... those sure aren't sane!
00:54:10 <monochrom> Also, a crazy Haskell compiler that says "put all modules in the same file" is compliant, too. >:)
00:54:50 <EvanR> that strategy is viable over in C apparently
00:55:02 <EvanR> but is somehow wildly less popular than put all code in one .h file
00:55:53 <c_wraith> don't forget "put all your code in one .h file that you #include wherever you want to know about he library, and then define a special macro in one file to tell it to put all the definitions in that file."
00:56:21 <monochrom> hehe
00:57:07 clxt joins (~cl_xt@2a09:bac5:9de2:1791::259:c1)
00:57:49 <EvanR> separate compilation is a dead end goal
00:58:14 <geekosaur> oh god I've seen code like that
00:58:43 <c_wraith> one of my friends was telling me a library she was using did that. flecs, maybe?
01:00:16 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
01:04:41 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 240 seconds)
01:09:21 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
01:10:31 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:16:24 newsham joins (~newsham@2603-800c-2c01-6825-1540-4c8c-dd9a-bb11.res6.spectrum.com)
01:17:02 × hpc quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (Quit: Lost terminal)
01:17:03 <newsham> " In the many cases in which monomorphization does succeed, it has the additional benefit of leading to very efficient code.
01:17:03 <newsham> For instance, all dictionaries (used to implement type classes) are statically eliminated by partial evaluation"
01:17:36 <newsham> so the knowledge of "x :: P" can be lost at this stage of compilation.
01:18:41 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Ping timeout: 240 seconds)
01:19:57 × JSharp quits (sid4580@id-4580.lymington.irccloud.com) (Server closed connection)
01:20:15 JSharp joins (sid4580@id-4580.lymington.irccloud.com)
01:21:09 × clxt quits (~cl_xt@2a09:bac5:9de2:1791::259:c1) ()
01:23:27 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
01:25:40 <geekosaur> or not known in the first place. `show (Just x) = "Just " ++ show x` — `x` is polymorphic and the dictionary can't be eliminated. (this isn't actually how `Show` works but is simplified)
01:26:29 <geekosaur> I left out the showsPrec stuff that uses a dlist rather than append, and deals with inserting parentheses for precedence
01:26:48 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 260 seconds)
01:30:27 × Axman6 quits (~Axman6@user/axman6) (Server closed connection)
01:34:35 <newsham> my point above is that it is convenient in separate compilation to perform optimizations on a per-file basis that removes knowledge that "x :: P".  it could in theory be preserved and kept til linking time.
01:35:45 <EvanR> there are link time optimizations, cross module inlining at least
01:36:04 <newsham> ghc knows "x :: P" for all the "x" in the program at some point, but forgets some of it during separate compilation.  for any decidable "P" (ghc supprots undecidable types), it could in theory preserve knowledge of all "x :: P" until link time, and compute any "x :: ~P" at link time.
01:36:37 <newsham> but it doesnt do that
01:36:59 <geekosaur> and never will because a haskell-only linker is no-go
01:37:38 <geekosaur> in a world where people expect to link haskell, C, Rust, Go, etc. together, custom per-language linkers are not and cannot be a thing
01:37:54 <geekosaur> it's bad enough that ghc needs hacks to allow linking with C++
01:39:03 <geekosaur> hacks which don't scale once you want to link Rust into it
01:39:15 × degraafk quits (sid71464@id-71464.lymington.irccloud.com) (Server closed connection)
01:39:24 degraafk joins (sid71464@id-71464.lymington.irccloud.com)
01:40:19 <newsham> "and never will" is probably right.  "cannot be a thing" is not correct.  but off topic.
01:41:07 <geekosaur> cannot viablybe a thing
01:41:32 <geekosaur> can be a thing if Haskell is to play only with itself, including a severly crippled FFI
01:41:53 <geekosaur> this is not a world anyone wants, so it will never happen
01:42:03 × Athas quits (athas@2a01:7c8:aaac:1cf:d300:623e:69e4:545f) (Quit: ZNC 1.8.2 - https://znc.in)
01:42:12 Athas joins (athas@2a01:7c8:aaac:1cf:d300:623e:69e4:545f)
01:42:17 <newsham> there is a world of things that are possible to do but will not likely be done.
01:42:27 <geekosaur> one way or another, you need a closed world. either a closed typeclass, or a closed Haskell
01:42:46 <monochrom> OK Copenhagen vs Multiple World, anyone? >:)
01:43:06 <geekosaur> like there's an actual difference?
01:43:16 <geekosaur> one's the other in a mirror
01:44:10 <EvanR> still wondering what the not constraint is for
01:44:48 <geekosaur> uh, he's said multiple times, he wants ~(Show x)
01:45:03 <EvanR> if there's a convincing use case we can just use a kennedy speech to argue that it should be done even if it's ridiculously hard
01:45:08 <newsham> that was the motivation behind the musing.
01:45:12 <EvanR> yeah but why
01:45:39 <EvanR> is it a default implementation of show or something
01:45:41 <monochrom> Wait, I thought Kennedy argued that there was no use case. >:)
01:45:45 <newsham> *sigh* I was just trying to understand the practical reasons why it is not supported and/or not easily supported.  my questions are already answered.  i'm still musing.
01:46:05 <EvanR> because we have existing shenanigans to force default Show
01:46:25 <newsham> there exists use cases.  whether they are worthwhile is a value judgement and an engineering judgement.
01:46:38 <EvanR> is this a classical existence? xD
01:46:47 <EvanR> use cases exist, trust me
01:47:28 <newsham> constructively one use case would be to implement show for non-showables without other hackery.
01:48:00 <EvanR> you're negating the show constraint as well as all other ways of doing that
01:48:32 <EvanR> I have a positive version: use idris where everything can be shown without any code at all, it's built in
01:48:39 <EvanR> it's nice
01:48:58 <EvanR> I 3/4 seriously wish haskell had this
01:49:09 <newsham> "use cases exist -- here is one, which might not be very motivating, but it does exist"
01:49:23 <EvanR> yeah I already guessed that on
01:49:59 <newsham> excludedMiddle :: Either P ~P
01:50:08 <newsham> now i classic logic much?
01:50:26 <EvanR> yeah I don't think ghc can do that
01:50:53 <newsham> and around we go
01:51:07 <newsham> I guess it keeps the conversation going
01:51:18 <EvanR> solve the collatz conjecture please ghc
01:52:57 <newsham> Decidable P =>
01:59:55 × xff0x quits (~xff0x@2405:6580:b080:900:1034:83b0:f1e0:db5e) (Ping timeout: 258 seconds)
02:00:18 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
02:00:46 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:04:38 paddymahoney joins (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com)
02:09:17 × dispater quits (~dispater@mail.brprice.uk) (Server closed connection)
02:09:37 dispater joins (~dispater@mail.brprice.uk)
02:15:54 <dibblego> data Blah a = Blah -- remind me again that name of this data type please
02:16:27 <geekosaur> Proxy?
02:18:04 <monochrom> Yeah, Proxy :)
02:18:26 <monochrom> The unit functor, applicative, monad. >:)
02:19:40 <monochrom> I do not like the following argument, it feels disingenious to me, but the type can be used to refute "monad wraps/contains value to be extracted". :)
02:20:00 <monochrom> where "can" = some people buy that argument
02:22:21 × otto_s quits (~user@p5de2ff30.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
02:22:55 <monochrom> Another trivia pursuit: Moggi's monad papers add a technical definition on top of monads. It's rather long, but an easy corollary is that pure is injective. So Proxy does not satisfy the extra definition. This is reasonable in the papers, the focus is on monads that stand for non-trivial program semantics.
02:24:17 otto_s joins (~user@p4ff276b4.dip0.t-ipconnect.de)
02:30:39 × newsham quits (~newsham@2603-800c-2c01-6825-1540-4c8c-dd9a-bb11.res6.spectrum.com) (Ping timeout: 248 seconds)
02:30:57 <hammond> cd 4
02:36:05 mrmr15537 joins (~mrmr@user/mrmr)
02:36:55 × mrmr1553 quits (~mrmr@user/mrmr) (Ping timeout: 255 seconds)
02:36:55 mrmr15537 is now known as mrmr1553
02:37:21 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 240 seconds)
02:39:21 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
02:40:44 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6dde:4903:7d59:6a8d)
02:45:30 × Athas quits (athas@2a01:7c8:aaac:1cf:d300:623e:69e4:545f) (Quit: ZNC 1.8.2 - https://znc.in)
02:45:39 Athas joins (athas@sigkill.dk)
02:49:05 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
02:49:46 Inst joins (~Inst@120.244.192.250)
02:51:16 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6dde:4903:7d59:6a8d) (Ping timeout: 272 seconds)
02:53:04 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:53:16 <dibblego> thank ya
02:53:37 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:00:18 Axman6 joins (~Axman6@user/axman6)
03:05:59 × edr quits (~edr@user/edr) (Quit: Leaving)
03:06:38 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:06:38 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:06:38 finn_elija is now known as FinnElija
03:09:48 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 256 seconds)
03:11:19 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds)
03:13:01 <lockywolf> Is it possible to use Cabal to install a different version of GHC locally?
03:13:19 × pixelmonk quits (~pixelmonk@173.46.79.26) (Quit: WeeChat 4.1.0)
03:14:14 <monochrom> No.
03:17:36 <dibblego> ghcup
03:19:01 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:19:39 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
03:20:03 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:22:11 × AndreasK quits (sid320732@id-320732.uxbridge.irccloud.com) (Server closed connection)
03:22:20 AndreasK joins (sid320732@id-320732.uxbridge.irccloud.com)
03:33:31 × isekaijin quits (~user@user/isekaijin) (Quit: brb)
03:38:15 Pozyomka joins (~pyon@user/pyon)
03:48:41 × td_ quits (~td@i53870926.versanet.de) (Ping timeout: 240 seconds)
03:50:45 td_ joins (~td@i5387090C.versanet.de)
03:51:00 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
04:01:12 × qhong quits (~qhong@rescomp-21-400677.stanford.edu) (Read error: Connection reset by peer)
04:01:16 qhong_ joins (~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu)
04:33:52 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
04:35:01 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
04:41:28 × waleee quits (~waleee@h-176-10-144-38.na.cust.bahnhof.se) (Ping timeout: 272 seconds)
04:42:09 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
04:42:40 chiselfuse joins (~chiselfus@user/chiselfuse)
04:45:30 aforemny joins (~aforemny@i59F516D1.versanet.de)
04:45:54 × aforemny_ quits (~aforemny@2001:9e8:6cd9:8900:f44b:90af:4c17:1875) (Ping timeout: 258 seconds)
04:46:54 × natto quits (~natto@129.154.243.159) (Server closed connection)
04:48:48 natto joins (~natto@129.154.243.159)
04:51:01 qqq joins (~qqq@92.43.167.61)
05:02:56 × sudden quits (~cat@user/sudden) (Quit: leaving)
05:03:17 trev joins (~trev@user/trev)
05:03:32 sudden joins (~cat@user/sudden)
05:04:26 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
05:21:18 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 255 seconds)
05:27:58 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
05:27:58 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
05:28:23 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
05:28:24 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
05:28:32 Inst joins (~Inst@120.244.192.250)
05:40:34 jmdaemon joins (~jmdaemon@user/jmdaemon)
05:46:46 <lockywolf> Can somebody have a look at this pull request and tell me what is wrong with it? https://github.com/haskell/hackage-server/pull/1262
05:55:16 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
05:59:53 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
06:04:49 Lycurgus joins (~georg@li1192-118.members.linode.com)
06:04:49 × Lycurgus quits (~georg@li1192-118.members.linode.com) (Changing host)
06:04:49 Lycurgus joins (~georg@user/Lycurgus)
06:06:21 × Square quits (~Square@user/square) (Ping timeout: 240 seconds)
06:08:31 × thegman quits (~thegman@072-239-207-086.res.spectrum.com) (Quit: leaving)
06:15:53 × Fangs quits (sid141280@2a03:5180:f:4::2:27e0) (Server closed connection)
06:16:05 Fangs joins (sid141280@id-141280.hampstead.irccloud.com)
06:24:41 × ACuriousMoose quits (~ACuriousM@142.166.18.53) (Ping timeout: 240 seconds)
06:26:37 × cjay quits (cjay@nerdbox.nerd2nerd.org) (Server closed connection)
06:26:45 cjay joins (cjay@nerdbox.nerd2nerd.org)
06:27:27 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:29:01 harveypwca joins (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b)
06:32:24 <Inst> quick question about the m word, is it right to have an intuition that the identity laws are primarily about pure / return, not bind?
06:32:29 <Inst> yes, bind / join has to be part of it
06:32:34 michalz joins (~michalz@185.246.207.201)
06:32:47 <Inst> but it's basically saying that there has to be an identity configuration of the type
06:33:07 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
06:33:25 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
06:34:47 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
06:35:23 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
06:36:21 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
07:00:11 Square2 joins (~Square4@user/square)
07:00:55 × ysh____ quits (sid6017@id-6017.ilkley.irccloud.com) (Server closed connection)
07:01:05 ysh____ joins (sid6017@id-6017.ilkley.irccloud.com)
07:01:43 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
07:05:36 × gdown quits (~gavin@h69-11-149-109.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
07:07:46 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:13:16 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
07:26:39 × lightandlight quits (sid135476@id-135476.helmsley.irccloud.com) (Server closed connection)
07:26:48 lightandlight joins (sid135476@id-135476.helmsley.irccloud.com)
07:33:33 chele joins (~chele@user/chele)
07:34:53 gmg joins (~user@user/gehmehgeh)
07:35:17 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
07:41:51 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:8e88:94cf:6ada:183f)
07:54:01 catac joins (~Adium@121.145.15.50)
07:57:20 fendor joins (~fendor@2a02:8388:1640:be00:cb6e:46f6:2fe6:1728)
07:59:06 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 258 seconds)
08:02:02 × lexi-lambda quits (sid92601@id-92601.hampstead.irccloud.com) (Server closed connection)
08:02:11 lexi-lambda joins (sid92601@id-92601.hampstead.irccloud.com)
08:05:15 × dsal quits (sid13060@id-13060.lymington.irccloud.com) (Server closed connection)
08:05:24 dsal joins (sid13060@id-13060.lymington.irccloud.com)
08:07:00 × fendor quits (~fendor@2a02:8388:1640:be00:cb6e:46f6:2fe6:1728) (Remote host closed the connection)
08:08:00 ec_ joins (~ec@gateway/tor-sasl/ec)
08:08:08 fendor joins (~fendor@2a02:8388:1640:be00:cb6e:46f6:2fe6:1728)
08:09:20 sord937 joins (~sord937@gateway/tor-sasl/sord937)
08:11:12 EvanR_ joins (~EvanR@user/evanr)
08:11:44 × EvanR quits (~EvanR@user/evanr) (Ping timeout: 272 seconds)
08:13:26 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
08:19:53 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
08:21:20 × yandere quits (sid467876@id-467876.ilkley.irccloud.com) (Server closed connection)
08:21:30 yandere joins (sid467876@id-467876.ilkley.irccloud.com)
08:24:33 × mustafa quits (sid502723@rockylinux/releng/mustafa) (Server closed connection)
08:24:45 mustafa joins (sid502723@rockylinux/releng/mustafa)
08:25:15 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
08:26:07 × adanwan_ quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
08:26:35 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
08:30:41 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 240 seconds)
08:33:10 × harveypwca quits (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b) (Quit: Leaving)
08:34:44 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:34:52 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
08:38:17 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
08:40:37 Jackneill_ joins (~Jackneill@20014C4E1E058A00193351DCDA9024FA.dsl.pool.telekom.hu)
08:48:10 catac parts (~Adium@121.145.15.50) ()
08:51:05 alp joins (~alp@2001:861:5e02:eff0:7717:48d8:8dae:8ad2)
08:51:24 × alp quits (~alp@2001:861:5e02:eff0:7717:48d8:8dae:8ad2) (Changing host)
08:51:24 alp joins (~alp@user/alp)
08:53:54 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:54:35 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Server closed connection)
08:54:59 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
08:56:21 Guest|52 joins (~Guest|52@1-36-218-010.ptr.netvigator.com)
09:04:14 × andjjj23 quits (~irc@107.170.228.47) (Server closed connection)
09:04:32 andjjj23 joins (~irc@107.170.228.47)
09:04:38 <tomsmeding> @tell Inst are the identity laws of a Monoid, i.e. mempty <> x = x = x <> mempty, primarily about mempty?
09:04:38 <lambdabot> Consider it noted.
09:07:33 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
09:09:40 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6dde:4903:7d59:6a8d)
09:10:40 × s4msung quits (pcWAavz3xz@user/s4msung) (Server closed connection)
09:10:59 s4msung joins (RZuYfCKc6a@user/s4msung)
09:16:01 × chessai quits (sid225296@id-225296.lymington.irccloud.com) (Server closed connection)
09:16:11 chessai joins (sid225296@id-225296.lymington.irccloud.com)
09:16:35 eso joins (a0662dfd5e@2604:bf00:561:2000::1266)
09:18:23 eggplant_ joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
09:19:35 × Guest|52 quits (~Guest|52@1-36-218-010.ptr.netvigator.com) (Ping timeout: 252 seconds)
09:20:08 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6dde:4903:7d59:6a8d) (Ping timeout: 252 seconds)
09:29:17 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:43:55 Inst joins (~Inst@120.244.192.250)
09:49:00 <Inst> That's interesting @tomsmeding
09:49:28 <Inst> I guess there's probably also a semigroup equivalent of monad, no?
09:52:12 danse-nr3 joins (~danse@151.47.127.210)
09:52:36 <ncf> Bind
09:53:57 <Inst> i mean associative without an identity element, but pure / eta is identity if you see monads as a monoid in the category of endofunctor
09:54:10 <Inst> in other words, no pure / return / eta, only bind / join / map
09:54:53 <ncf> yes, that's Bind from semigroupoids
09:56:15 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
09:57:20 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
10:01:23 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
10:02:05 × ubert quits (~Thunderbi@77.119.202.170.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
10:05:27 ubert joins (~Thunderbi@77.119.214.97.wireless.dyn.drei.com)
10:07:43 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds)
10:13:40 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 256 seconds)
10:14:48 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 256 seconds)
10:20:01 mc47 joins (~mc47@xmonad/TheMC47)
10:21:01 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
10:23:17 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
10:28:04 arahael joins (~arahael@1.145.70.153)
10:31:37 <Inst> https://hackage.haskell.org/package/semigroupoids-6.0.0.1/docs/Data-Functor-Bind.html#t:Bind
10:34:06 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:40:44 × robertm quits (robertm@lattice.rojoma.com) (Server closed connection)
10:41:06 robertm joins (robertm@lattice.rojoma.com)
10:41:21 × arahael quits (~arahael@1.145.70.153) (Ping timeout: 240 seconds)
10:58:49 lg188 joins (~lg188@82.18.98.230)
10:59:53 × _0xa_ quits (~user@2001:19f0:5001:2ba8:5400:1ff:feda:88fc) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
11:01:26 _0xa joins (~user@2001:19f0:5001:2ba8:5400:1ff:feda:88fc)
11:01:26 × _0xa quits (~user@2001:19f0:5001:2ba8:5400:1ff:feda:88fc) (Changing host)
11:01:26 _0xa joins (~user@user/0xa/x-3134607)
11:02:10 × shawwwn quits (sid6132@id-6132.helmsley.irccloud.com) (Server closed connection)
11:02:19 shawwwn joins (sid6132@id-6132.helmsley.irccloud.com)
11:12:21 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 240 seconds)
11:13:17 × ft quits (~ft@p4fc2a529.dip0.t-ipconnect.de) (Quit: leaving)
11:14:06 mmhat joins (~mmh@p200300f1c7445e14ee086bfffe095315.dip0.t-ipconnect.de)
11:14:36 xff0x joins (~xff0x@2405:6580:b080:900:c499:902e:6f70:c890)
11:15:45 × mmhat quits (~mmh@p200300f1c7445e14ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
11:19:58 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 256 seconds)
11:21:46 × _0xa quits (~user@user/0xa/x-3134607) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
11:22:52 _0xa joins (~user@2001:19f0:5001:2ba8:5400:1ff:feda:88fc)
11:22:52 × _0xa quits (~user@2001:19f0:5001:2ba8:5400:1ff:feda:88fc) (Changing host)
11:22:52 _0xa joins (~user@user/0xa/x-3134607)
11:23:01 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 240 seconds)
11:25:19 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
11:28:28 __monty__ joins (~toonn@user/toonn)
11:31:07 × dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Server closed connection)
11:31:34 dmj` joins (sid72307@id-72307.hampstead.irccloud.com)
11:32:49 Inst joins (~Inst@120.244.192.250)
11:43:24 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
11:47:05 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
12:05:49 steew joins (~steew@user/steew)
12:07:35 × tomku quits (~tomku@user/tomku) (Server closed connection)
12:07:49 tomku joins (~tomku@user/tomku)
12:17:07 Lycurgus joins (~georg@user/Lycurgus)
12:24:08 × alp quits (~alp@user/alp) (Quit: Leaving)
12:24:23 alp joins (~alp@2001:861:5e02:eff0:7717:48d8:8dae:8ad2)
12:25:48 × Boarders___ quits (sid425905@id-425905.lymington.irccloud.com) (Server closed connection)
12:26:11 Boarders___ joins (sid425905@id-425905.lymington.irccloud.com)
12:26:25 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 255 seconds)
12:28:57 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
12:31:29 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
12:40:46 ddellacosta joins (~ddellacos@2607:fb90:df95:5632:ce76:6ed1:85ad:5fc9)
12:40:54 edr joins (~edr@user/edr)
12:41:15 chomwitt joins (~chomwitt@94.66.63.70)
12:41:53 × SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (Server closed connection)
12:42:03 SanchayanMaity joins (sid478177@id-478177.hampstead.irccloud.com)
12:50:26 × danse-nr3 quits (~danse@151.47.127.210) (Ping timeout: 258 seconds)
13:01:33 × alp quits (~alp@2001:861:5e02:eff0:7717:48d8:8dae:8ad2) (Ping timeout: 260 seconds)
13:04:43 × ddellacosta quits (~ddellacos@2607:fb90:df95:5632:ce76:6ed1:85ad:5fc9) (Ping timeout: 264 seconds)
13:07:37 × lally quits (sid388228@id-388228.uxbridge.irccloud.com) (Server closed connection)
13:07:46 lally joins (sid388228@id-388228.uxbridge.irccloud.com)
13:17:16 × NiKaN quits (sid385034@id-385034.helmsley.irccloud.com) (Server closed connection)
13:17:26 danse-nr3 joins (~danse@151.35.103.37)
13:17:56 NiKaN joins (sid385034@id-385034.helmsley.irccloud.com)
13:21:05 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
13:21:58 img joins (~img@user/img)
13:24:47 × nshepperd2 quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Server closed connection)
13:25:02 nshepperd2 joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
13:26:55 × doyougnu- quits (~doyougnu@45.46.170.68) (Ping timeout: 264 seconds)
13:33:37 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
13:34:54 takuan joins (~takuan@178-116-218-225.access.telenet.be)
13:36:47 × fendor quits (~fendor@2a02:8388:1640:be00:cb6e:46f6:2fe6:1728) (Remote host closed the connection)
13:37:43 × chomwitt quits (~chomwitt@94.66.63.70) (Ping timeout: 264 seconds)
13:37:49 aliosablack joins (~chomwitt@ppp-94-67-201-151.home.otenet.gr)
13:38:20 fendor joins (~fendor@2a02:8388:1640:be00:cb6e:46f6:2fe6:1728)
13:42:57 × aliosablack quits (~chomwitt@ppp-94-67-201-151.home.otenet.gr) (Ping timeout: 258 seconds)
13:47:55 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 264 seconds)
13:57:32 × sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection)
13:57:47 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
13:59:47 × gooba_ quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Quit: Leaving)
14:00:02 gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com)
14:00:13 sefidel joins (~sefidel@user/sefidel)
14:02:43 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
14:05:11 × gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection)
14:05:33 gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com)
14:08:58 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
14:13:29 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:14:20 notzmv joins (~zmv@user/notzmv)
14:24:49 × caasih quits (sid13241@id-13241.ilkley.irccloud.com) (Server closed connection)
14:24:59 caasih joins (sid13241@id-13241.ilkley.irccloud.com)
14:26:11 zetef joins (~quassel@95.77.17.251)
14:26:45 aliosablack joins (~chomwitt@2a02:587:7a05:2c00:1ac0:4dff:fedb:a3f1)
14:30:51 lhpitn joins (~tn@mail.lebenshilfe-pi.de)
14:31:07 × lhpitn quits (~tn@mail.lebenshilfe-pi.de) (Remote host closed the connection)
14:31:26 × aliosablack quits (~chomwitt@2a02:587:7a05:2c00:1ac0:4dff:fedb:a3f1) (Ping timeout: 252 seconds)
14:31:29 lhpitn joins (~tn@31.172.106.163.static-pppoe.dt.ipv4.wtnet.de)
14:36:31 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 264 seconds)
14:49:42 notzmv joins (~zmv@user/notzmv)
14:50:31 Lycurgus joins (~georg@user/Lycurgus)
14:53:32 elevenkb parts (elevenkb@thunix.net) (ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.1))
15:04:48 billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
15:07:43 ddellacosta joins (~ddellacos@146.70.165.106)
15:17:04 rosco joins (~rosco@yp-150-69.tm.net.my)
15:18:11 × ddellacosta quits (~ddellacos@146.70.165.106) (Ping timeout: 252 seconds)
15:19:43 × rosco quits (~rosco@yp-150-69.tm.net.my) (Remote host closed the connection)
15:20:11 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
15:22:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:23:07 fweht joins (uid404746@id-404746.lymington.irccloud.com)
15:31:57 × Square2 quits (~Square4@user/square) (Remote host closed the connection)
15:36:56 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
15:43:30 × Pozyomka quits (~pyon@user/pyon) (Quit: brb)
15:43:39 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
15:44:12 Pozyomka joins (~pyon@user/pyon)
15:48:47 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
16:00:22 × Pozyomka quits (~pyon@user/pyon) (Quit: brb)
16:00:50 Pozyomka joins (~pyon@user/pyon)
16:09:20 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 252 seconds)
16:13:10 aliosablack joins (~chomwitt@2a02:587:7a05:2c00:1ac0:4dff:fedb:a3f1)
16:19:22 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
16:20:41 × zetef quits (~quassel@95.77.17.251) (Remote host closed the connection)
16:21:05 × aliosablack quits (~chomwitt@2a02:587:7a05:2c00:1ac0:4dff:fedb:a3f1) (Ping timeout: 240 seconds)
16:23:41 × danse-nr3 quits (~danse@151.35.103.37) (Ping timeout: 240 seconds)
16:25:51 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Quit: WeeChat 4.1.0)
16:27:24 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:8e88:94cf:6ada:183f) (Ping timeout: 258 seconds)
16:30:01 danse-nr3 joins (~danse@151.35.103.37)
16:41:26 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:41:50 <Inst> https://media.discordapp.net/attachments/531640671149359108/1171489169416134716/image.png?ex=655cdd4f&is=654a684f&hm=4cbfb7e6ec17734e88e1bfc7a563a60b1f3d398edf873740527f6284a30d8229&=&width=850&height=842
16:41:57 <Inst> hmmm, it's impossible to get a random type, right?
16:42:48 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
16:43:06 <Inst> since types don't exist at runtime (unless you're using typeable / dynamic, iirc)
16:44:45 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
16:46:12 zetef joins (~quassel@5.2.182.98)
16:47:16 alp joins (~alp@2001:861:5e02:eff0:40fb:3515:43ea:e419)
16:49:57 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
16:49:57 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
16:53:08 × eggplant_ quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:53:24 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6d7a:4eb0:231d:253f)
16:53:25 <danse-nr3> but values exist at runtime, and they might belong to different types
16:53:47 <EvanR_> types as such still don't exist at runtime even with typeable dynamic, but their value level representatives do
16:54:44 <EvanR_> it appears you're trying to get a random value of type Int not a random type
16:54:49 EvanR_ is now known as EvanR
16:56:22 <exarkun> It's not really clear what the image has to do with the question, really
16:56:41 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
16:57:08 <exarkun> And it is certainly possible to get a random type - here you go, GHC.Cmm.Expr.Area
16:59:04 <EvanR> xkcd certified random
17:00:48 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
17:00:54 <monochrom> :)
17:01:33 <monochrom> Probably XY problem too.
17:04:04 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
17:05:44 AlexNoo_ joins (~AlexNoo@94.233.241.129)
17:06:08 × billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Remote host closed the connection)
17:07:56 ChaiTRex joins (~ChaiTRex@user/chaitrex)
17:08:40 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
17:09:03 × AlexZenon quits (~alzenon@178.34.161.199) (Ping timeout: 240 seconds)
17:09:11 × AlexNoo quits (~AlexNoo@178.34.161.199) (Ping timeout: 258 seconds)
17:10:19 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
17:10:57 × zetef quits (~quassel@5.2.182.98) (Ping timeout: 255 seconds)
17:13:31 × danse-nr3 quits (~danse@151.35.103.37) (Ping timeout: 255 seconds)
17:13:45 danse-nr3 joins (~danse@151.43.104.61)
17:16:25 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
17:17:37 AlexZenon joins (~alzenon@94.233.241.129)
17:22:44 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:27:23 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
17:29:05 × jjhoo quits (jahakala@user/jjhoo) (Remote host closed the connection)
17:30:24 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:31:10 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
17:33:32 AlexNoo_ is now known as AlexNoo
17:34:56 × califax quits (~califax@user/califx) (Remote host closed the connection)
17:35:18 califax joins (~califax@user/califx)
17:35:27 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
17:36:02 aliosablack joins (~chomwitt@2a02:587:7a05:2c00:1ac0:4dff:fedb:a3f1)
17:36:09 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
17:36:38 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
17:37:01 jjhoo joins (~jahakala@user/jjhoo)
17:39:01 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
17:40:14 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
17:41:13 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
17:43:41 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 240 seconds)
17:44:18 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
17:44:39 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
17:45:35 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
17:46:01 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
17:47:02 euleritian joins (~euleritia@dynamic-046-114-204-198.46.114.pool.telefonica.de)
17:47:45 <EvanR> lets talk about parsers and laziness. In a bog standard parser you have something like ByteString -> Either ParseError a, internally using parsec or something. Let's say you're parsing a big sequence of things. You can't start to process any of the things until this thing resolves to a Left or Right. Since the last item could be borked. Meanwhile you use a lot of memory storing up a big list of things
17:48:40 <EvanR> Otoh if you know the parse won't fail, you could make a lazy ByteString -> [Thing] and use less memory
17:49:10 ski joins (~ski@88.131.7.247)
17:49:16 <geekosaur> isn't the popint of a parser that you process as you go and throw it out on error?
17:49:20 <EvanR> so dumb idea, first run a "would parse" pass which doesn't yield anything except yes or no, then start over, reopen the file, regenerate the bytestring, and parse lazily
17:49:53 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
17:49:58 <geekosaur> race condition ahoy!
17:50:09 <EvanR> both steps presumably run without using much memory
17:50:35 <EvanR> oh yeah, if someone edits the file between the two steps
17:52:09 <ski> ("popint" ?)
17:52:10 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
17:52:24 geekosaur can't type
17:52:28 <geekosaur> "point"
17:52:34 <EvanR> it was a type error
17:52:54 ski was confused
17:53:05 × euleritian quits (~euleritia@dynamic-046-114-204-198.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
17:53:23 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:54:05 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
17:54:19 <danse-nr3> not sure which train of thoughts you are following, but that leading to "do the parse, then open the file again" sounds not promising
17:54:32 <EvanR> or seek back to the beginning
17:54:52 <geekosaur> anyway how does this situation differ from any compiler, which has to build the AST first and then modify it. especially relevant to GHC which has to e.g. apply fixity in a post-processing pass
17:55:31 <EvanR> that depends on what the next step of processing would have been, if it can't be lazy it can't be lazy anyway
17:56:22 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
17:56:22 <geekosaur> if you're relying on the last thing in the file parsing, arguably you can't really be lazy
17:56:55 <EvanR> if you know the last thing in file would parse, somehow, you can!
17:57:19 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
17:59:14 × drewjose quits (~drewjose@129.154.40.88) (Ping timeout: 245 seconds)
17:59:19 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
18:01:39 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
18:01:44 <ski> EvanR : you want some kind of `foldParse' ?
18:02:23 <EvanR> :t foldMap
18:02:24 <lambdabot> (Foldable t, Monoid m) => (a -> m) -> t a -> m
18:02:35 yin is now known as zzz
18:04:22 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
18:04:44 <ski> something like `foldParse :: (o -> a -> o) -> o -> Parser a -> ByteString -> Either ParseError o', maybe ?
18:05:07 <monochrom> It is true that Parsec etc are not lazy (or rather, are not streaming). They were invented for compiler-like use cases where for the rest of the computation, it is acceptable, even necessary, to hold in memory the entirety of some data structure equivalent to the whole input, so there is no point trying to stream (unless you really need to cut down memory footprint from 2n to n, say).
18:05:09 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
18:05:34 <monochrom> However, since then, attoparsec etc have already offered streaming options.
18:06:22 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
18:06:43 <EvanR> attoparsec can incrementally be fed input, but there is still no partial results, for a programming language you'd return a whole AST, or if it's a simple list of input items, you'd construct a big list
18:06:50 <EvanR> so streaming in but not out
18:07:22 <EvanR> grokking foldParse
18:08:11 <monochrom> It's also pretty easy to roll your own poor person's streaming for a simple list of items. You run Parsec once per item, not the whole list.
18:08:32 gmg joins (~user@user/gehmehgeh)
18:08:44 <monochrom> Then couple that with I/O streaming, e.g., fmap lines getContents or pipes or conduit or...
18:08:58 <ski> EvanR : basically `foldl'ing your list of results, except doing it upfront, internally, as each successive item is available, rather than at the end, after getting the whole list
18:09:09 <EvanR> now given the thesis that you know it would parse, parsec would work, but now it's doing a bunch of expensive stuff for nothing
18:09:24 <danse-nr3> "no partial result", but isn't this the goal of non-strict parsing in the first place? I thought you wanted strict parsing
18:10:01 <ski> (what does "strict" vs. "non-strict" mean in this context ?)
18:10:11 <monochrom> hee hee
18:10:55 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:10:58 <EvanR> strict doesn't apply because nothing is crashing everything is terminating
18:11:10 <monochrom> 3 most overused jargons in Haskell: isomorphic, strict, non-strict. >:)
18:11:49 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
18:11:51 <EvanR> ski, so move more of the task into the parser
18:12:21 <ski> yea, since the parser has that sequence of "parsed results so far", presumably
18:12:23 <danse-nr3> you were talking about lazy and i talked about strict, does not sound that mysterious
18:12:32 × fendor quits (~fendor@2a02:8388:1640:be00:cb6e:46f6:2fe6:1728) (Ping timeout: 252 seconds)
18:12:51 <EvanR> yeah this lazy and that strict are from different departments
18:13:01 <ski> i'm not sure whether this would work for parsing another structure than left-associated sequences, though
18:13:17 <monochrom> I actually also have a weird trick to get very close to streaming or laziness in the case of eg "many foo" so that it does not wait until the end of the output list.
18:13:59 <monochrom> But it requires exposing the Parser type and writing one more combinator.
18:14:26 <EvanR> ski, yes generalizations beyond "list" would be cool
18:14:31 <ski> (e.g. some syntax tree with inherited and synthesized attributes associated with the grammar productions .. to what extend could we fire those rules, during the parser process, with, let's say, some kind of parser-combinator like parser)
18:15:01 <ski> monochrom : which one ?
18:16:57 ski 's been thinking about ordered logic lately .. which is related to parsing
18:18:07 <monochrom> Suppose the Parser type goes like "newtype P a = MkP{unP :: String -> [] (String, a)}". Define pledge :: P a -> P a; pledge (MkP p) = MkP (\s -> let (s2, a) : tl = p s in (s2, a) : tl)
18:18:07 <ski> (also .. i'm reminded i should try to get my application of composable continuations to precedence parsing working ..)
18:18:33 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
18:19:22 <monochrom> "pledge foo" is unsafe in general, but safe if you know that foo doesn't fail. In particular, many p = pledge (some p <|> pure []) makes sense.
18:20:41 <ski> right. looks similar to `promiseHead :: Eq a => a -> [a] -> [a]; promiseHead x0 ~(x:xs) = x0 : case x0 == x of True -> xs', which i defined for some tying-the-knot stuff
18:20:49 <monochrom> Yeah.
18:20:50 <EvanR> is this a noop that introduces a thing that would crash if the assumption of not failing failed
18:21:04 <monochrom> Yes.
18:21:45 <EvanR> how does it improve memory usage xD
18:22:16 <ski> it pulls success earlier in time
18:22:24 <monochrom> I also have a version for if the Parser type uses the Leijen-Meijer method of tracking consumedness for disabling backtracking.
18:22:38 <EvanR> oh
18:22:46 <ski> hm, not sure i know what that is
18:22:49 <monochrom> Here is an elementary narrative.
18:23:09 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
18:24:54 <monochrom> Suppose I give you "m :: Maybe [Int]". But m could be a thunk that will take huge memory and time before it even resolves to Just (another thunk for the list).
18:25:26 <monochrom> But for some reason we already know that it will resolve to Just. (Say, because it came from many foo? :) )
18:26:56 <monochrom> So I write a function "pledge m = let Just xs = m in Just xs". Now within O(1) time you see a "Just" and can move on without waiting.
18:27:14 <monochrom> Equivalently use an irrefutable pattern. :)
18:27:50 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
18:28:06 <monochrom> It is like unsafeInterleaveIO but for parsers :)
18:28:56 <EvanR> so it uses huge memory and time sooner, so it can be reclaimed sooner
18:29:13 <ski> what's that Leijen-Meijer method, then ?
18:29:19 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 264 seconds)
18:29:29 <monochrom> This trick is distilled from Wadler's trick in «Monads for Functional Programming» section 5.11.
18:29:59 <monochrom> That would be the paper Parsec: Direct-Style Monadic Parser Combinators For The Real World
18:30:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:30:26 <monochrom> Today's parsec probably CPS that, ironically. :)
18:30:47 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
18:31:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:31:35 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
18:32:11 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
18:32:12 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
18:32:30 <monochrom> The history, probably revisionist, may be: a long time ago there was a CPS solution, then Leijen and Meijer were like "but we can defunctionalize it to a simpler ADT", but then people were like "but ADT is too slow we need to CPS it again" >:)
18:33:26 <danse-nr3> CPS continuation passing style and ADT algebraic data types?
18:33:34 <monochrom> yeah
18:34:23 neceve joins (~neceve@user/neceve)
18:34:25 <danse-nr3> i did not know there was a tradeoff between the two
18:34:29 <ncf> adjoint dunctor theorem
18:35:19 <EvanR> the tradeoff that CPS is better in every way? xD
18:35:22 <monochrom> yeah readable code vs performant code >:)
18:35:30 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
18:35:56 <monochrom> I think "CPS is better" is incidental on GHC.
18:36:04 <monochrom> or rather, "CPS is faster".
18:36:32 <EvanR> also, readable vs faster is a terrible choice right
18:36:54 <EvanR> how has haskell engineers not revolted against that and figured out a fix
18:36:58 <danse-nr3> found ncatlab.org/nlab/show/adjoint+functor+theorem but of course it would take me a while to see the connection with continuation passing style. The other day here we were saying that continuation passing was not easy to model mathematically
18:36:58 <monochrom> Then again it's probably just "jump table is faster than if-then-else".
18:37:36 <monochrom> Well, GHC figured out pointer tagging to make ADTs faster.
18:38:11 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
18:38:16 <monochrom> A long time ago Appel was also like "the compiler should auto-CPS everything so the user doesn't have to".
18:38:16 <int-e> monochrom: I feel the same but with a different mental model... I think the continuation closures have a better chance of getting inlined than a function that is called with a constructor that starts with a case expression taking that value apart.
18:39:07 <int-e> simplified maybe, since each case becomes a separate function, those functions look smaller.
18:39:54 <EvanR> so what happened to Appel
18:40:11 <monochrom> Yeah, but GHC also has got an insane rewriter for that, and is an important part of the "from vector to stream to nothing" thing.
18:40:27 <int-e> (Is this model accurate? Probably not really... ghc is a complex beast.)
18:41:04 <monochrom> To be sure, empirically, there are still many cases when human CPSing still beats GHC.
18:41:25 <monochrom> But you would be surprised how many other cases GHC works smart.
18:41:29 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
18:41:41 <monochrom> I know because I was. :)
18:42:27 <monochrom> This: https://mail.haskell.org/pipermail/haskell-cafe/2013-April/107775.html
18:43:24 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
18:44:32 <monochrom> EvanR: I think most FP compilers follow what Appel says. GHC is the exception actually.
18:44:41 <EvanR> that's... those isVal tests use pattern matching xD
18:45:29 <monochrom> Yeah, but my point is eg isVal-then-fromVal repeats the same pattern matching, and GHC catches that.
18:45:57 <EvanR> thank bob for that
18:46:06 <monochrom> I think the redundancy can be restored with -O0.
18:46:25 <EvanR> style decisions should stay out of performance considerations
18:46:59 <monochrom> Well, this is one of those few happy cases when bad style is also slow code >:)
18:47:26 <EvanR> yeah it's usually the other way around
18:48:04 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
18:48:14 <monochrom> It is not everyday that everything aligns and there is a win-win winner and therefore, human nature being what it is, the human applies a not-gate and chooses the losing solution. >:)
18:50:54 <exarkun> always a shame to break a streak
18:51:36 <int-e> GHC is smart with redundant cases when it sees them (your code is small enough that everything gets inlined)
18:52:53 <monochrom> Yeah, I think the vector library has to manually tell GHC "inline this" much more often.
18:53:30 <monochrom> It is why it takes forever to compile. :)
18:53:55 <monochrom> good style, fast code, fast build --- pick two. >:)
18:54:07 × matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.2 - https://znc.in)
18:54:11 <exarkun> *at most
18:54:18 <int-e> And hmm, with CPS it would be harder to do that. (you have someCPSMaybe nothingCB1 justCB1 followed by someCPSMaybe nothingCB2 justCB2... now teach the compiler that if the first call returns nothingCB1 then the second call returns nothingCB2 :-P
18:54:21 <danse-nr3> good style and fast code forever
18:54:50 <int-e> There is no free lunch.
18:54:58 matijja joins (~matijja@193.77.181.201)
18:55:04 <monochrom> Then I guess thank God for https://xkcd.com/303/ ? >:)
18:55:11 danse-nr3 should probably offer lunch to GHC devs
18:55:24 × matijja quits (~matijja@193.77.181.201) (Client Quit)
18:55:32 <int-e> monochrom: I don't like eating swords
18:55:44 <EvanR> until chat-gpt is asked to write a compiler that can compete with GHC. And it freaks out and produces professor moriarty
18:55:55 matijja joins (~matijja@193.77.181.201)
18:56:22 <int-e> It's a bit sad that all the non-ghc compilers more or less died.
18:57:06 <danse-nr3> it is a bit the culture we live in. At some point a "best" is chosen and all bubbles point to that
18:58:58 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
18:59:04 <int-e> (jhc was particularly exciting because it was so different in many regards, in particular its treatment of type classes.)
18:59:22 <exarkun> danse-nr3: is that culture or natural selection
18:59:26 <danse-nr3> j standing for?
18:59:33 <EvanR> john's
18:59:41 <ski> jmeacham
18:59:41 <monochrom> natural selection and economics >:)
18:59:42 <geekosaur> john meacham?
18:59:53 <danse-nr3> nah, natural selection leaves way more room for the existing to survive
19:00:09 <monochrom> then again perhaps selection + economics = culture
19:00:22 <exarkun> danse-nr3: on the contrary! it is still much easier to revive hugs than, say, a dinosaur.
19:00:41 <ski> obligatory : "The story of jhc" <http://repetae.net/computer/jhc/jhc.shtml#the-story-of-jhc>
19:00:52 <danse-nr3> add propaganda to the equation monochrom
19:00:54 <int-e> maybe the comparison *is* apt. natural selection really isn't very good in the short term
19:01:11 <monochrom> dinosaur got an unfair shock.
19:02:20 <danse-nr3> except this comparison does not explain why our culture leads to the production of more dinosaurs
19:02:34 <Rembane> Network effects?
19:03:03 <danse-nr3> which slips out of the natural selection comparison...
19:03:47 <monochrom> Dinosaurs got a meteor shock. We will get a nuclear shock or pandemic shock, then most compilers won't survive either. >:)
19:04:22 <danse-nr3> glasgow is not that distributed after all
19:04:41 <monochrom> Also I think "natural selection leaves way more room for the existing to survive" manifests not in more Haskell compilers but more scripting languages.
19:04:43 <int-e> . o O ( yet )
19:05:01 <int-e> . o O ( nothing a big enough explosion can't fix )
19:05:15 <int-e> (re: "not distributed")
19:06:16 <danse-nr3> just less mortality for diversity in general monochrom, it can be observed also outside haskell-land
19:06:26 <monochrom> Haskell compilers are complex, you should compare that to elephants and whales and see no surprise that they are fewer and rarer. The biosphere and the programsphere both favour low-cost things such as insects and scripting languages.
19:07:15 × alp quits (~alp@2001:861:5e02:eff0:40fb:3515:43ea:e419) (Ping timeout: 258 seconds)
19:07:19 <danse-nr3> john apparently managed to build a whale all by himself at some point
19:07:25 <monochrom> (Yes, I have done the impossibly ridiculous: comparing scripting languages to insects. Ha!)
19:07:45 <monochrom> He hasn't added GC, has he? >:)
19:08:35 <int-e> who's out there hunting compilers to extinction though
19:08:46 <int-e> maybe it's time to move to -offtopic
19:09:17 <EvanR> the references section on the story of JHC doesn't seem to have anything on the type classes
19:09:17 <monochrom> That would be when we start counting Java compilers >:)
19:09:36 <EvanR> how are they different
19:10:14 × kraftwerk28 quits (~kraftwerk@164.92.219.160) (Quit: *disconnects*)
19:11:19 <int-e> EvanR: IIRC JHC had explicit type witnesses (imagine an ADT representing the type structure of each value), and type classes were implemented by pattern matching on that witness. It was a whole program compiler, so this approach was possible. And hopefully, due to aggressive inlining, most of the type witnesses would not actually be manifested at runtime.
19:11:22 kraftwerk28 joins (~kraftwerk@164.92.219.160)
19:11:57 AlexNoo_ joins (~AlexNoo@94.233.241.129)
19:14:03 × trev quits (~trev@user/trev) (Quit: trev)
19:14:27 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
19:14:58 <ski> .. Mercury passes around type-infos at run-time .. and has type classes
19:15:01 × AlexNoo quits (~AlexNoo@94.233.241.129) (Ping timeout: 240 seconds)
19:17:01 <ski> (unfortunately, it also breaks parametricity .. i think if they'd been aiming for it, they could have avoided that)
19:18:03 <mauke> reminds me of https://okmij.org/ftp/Computation/typeclass.html#Kaes
19:19:16 <ski> oh, shiny, ty ! :)
19:19:59 <monochrom> Oh, so Wadler didn't get that first...
19:21:01 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
19:21:30 × ThePenguin quits (~ThePengui@cust-95-80-24-166.csbnet.se) (Quit: ThePenguin)
19:23:55 <mauke> actually, https://okmij.org/ftp/Computation/typeclass.html#intensional is probably a better link
19:24:09 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
19:24:38 accord joins (uid568320@id-568320.hampstead.irccloud.com)
19:25:06 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
19:26:45 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
19:30:40 <dolio> monochrom: The irony is that those types of languages get much more complicated type systems bolted onto them.
19:32:09 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
19:34:49 <EvanR> elixir's currently desired type system https://arxiv.org/abs/2306.06391 "a polymorphic type system with set-theoretic types and semantic subtyping"
19:36:36 <dolio> Yeah, I saw someone asking about a similar paper for erlang recently.
19:37:07 <dolio> According to the paper it was taking ~1 minute to check a 6 line function.
19:38:52 ft joins (~ft@p4fc2a529.dip0.t-ipconnect.de)
19:41:26 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
19:42:23 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6d7a:4eb0:231d:253f) (Remote host closed the connection)
19:42:39 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:43:40 mik3d joins (~mik3d@pool-173-61-131-199.cmdnnj.fios.verizon.net)
19:45:10 <EvanR> Stefan Kaes eh...
19:45:58 <int-e> school must have been hell
19:48:26 × mik3d quits (~mik3d@pool-173-61-131-199.cmdnnj.fios.verizon.net) (Client Quit)
19:51:49 alp joins (~alp@2001:861:5e02:eff0:c4b6:a2a:56cf:4df4)
19:52:37 AlexNoo_ is now known as AlexNoo
19:59:00 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:03:01 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
20:05:43 × kiriakos quits (~kiriakos@p5b03e4f0.dip0.t-ipconnect.de) (Quit: kiriakos)
20:06:35 × asivitz quits (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity)
20:07:18 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
20:09:50 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
20:11:40 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Remote host closed the connection)
20:12:02 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
20:12:32 mvk joins (~mvk@2607:fea8:5c9a:a600::900d)
20:12:33 × mvk quits (~mvk@2607:fea8:5c9a:a600::900d) (Client Quit)
20:13:14 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
20:13:32 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
20:15:46 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
20:16:02 euleritian joins (~euleritia@dynamic-046-114-207-195.46.114.pool.telefonica.de)
20:16:52 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
20:18:30 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6d7a:4eb0:231d:253f)
20:20:01 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
20:21:41 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
20:22:35 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6d7a:4eb0:231d:253f) (Ping timeout: 240 seconds)
20:23:09 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
20:24:39 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
20:25:45 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
20:27:48 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
20:27:50 × Pixi quits (~Pixi@user/pixi) (Quit: Leaving)
20:29:04 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
20:29:31 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
20:31:31 pixelmonk joins (~pixelmonk@50.205.76.66)
20:35:55 × danse-nr3 quits (~danse@151.43.104.61) (Ping timeout: 264 seconds)
20:38:50 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
20:45:19 Pixi joins (~Pixi@user/pixi)
20:54:10 × ski quits (~ski@88.131.7.247) (Ping timeout: 255 seconds)
21:00:39 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:9856:bce6:702c:92bf)
21:01:44 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:05:20 danza joins (~francesco@151.43.104.61)
21:07:20 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6d7a:4eb0:231d:253f)
21:09:30 ciiur^ joins (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net)
21:10:35 × danza quits (~francesco@151.43.104.61) (Read error: Connection reset by peer)
21:13:18 × CrunchyFlakes_ quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Quit: ZNC 1.8.2 - https://znc.in)
21:13:55 CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
21:16:50 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
21:17:13 sord937 joins (~sord937@gateway/tor-sasl/sord937)
21:17:45 × migas9 quits (~migas@static.140.65.63.178.clients.your-server.de) (Remote host closed the connection)
21:18:02 migas9 joins (~migas@static.140.65.63.178.clients.your-server.de)
21:18:32 ubert1 joins (~Thunderbi@77.119.168.33.wireless.dyn.drei.com)
21:18:59 × alp quits (~alp@2001:861:5e02:eff0:c4b6:a2a:56cf:4df4) (Ping timeout: 252 seconds)
21:18:59 × ubert quits (~Thunderbi@77.119.214.97.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
21:19:00 ubert1 is now known as ubert
21:20:54 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
21:21:28 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:9856:bce6:702c:92bf) (Quit: WeeChat 3.5)
21:23:29 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
21:23:44 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:9856:bce6:702c:92bf)
21:25:37 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
21:26:12 danza joins (~francesco@ge-19-117-186.service.infuturo.it)
21:26:37 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
21:28:20 × ciiur^ quits (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net) (Ping timeout: 252 seconds)
21:29:01 ciiur^ joins (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net)
21:29:19 noscript joins (~james@user/earldouglas)
21:29:47 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:9856:bce6:702c:92bf) (Quit: WeeChat 3.5)
21:29:51 noscript parts (~james@user/earldouglas) ()
21:30:01 earldouglas joins (~james@user/earldouglas)
21:30:04 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
21:32:32 earldouglas parts (~james@user/earldouglas) ()
21:33:19 × ciiur^ quits (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net) (Ping timeout: 255 seconds)
21:33:50 ciiur^ joins (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net)
21:33:53 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
21:36:41 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
21:37:33 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
21:40:06 kiriakos joins (~kiriakos@p5b03e4f0.dip0.t-ipconnect.de)
21:40:20 ACuriousMoose joins (~ACuriousM@142.166.18.53)
21:40:50 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:40:54 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
21:43:08 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
21:46:17 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
21:49:44 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
21:50:05 × elkcl quits (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Ping timeout: 240 seconds)
21:50:10 × neceve quits (~neceve@user/neceve) (Ping timeout: 258 seconds)
21:56:38 alp joins (~alp@2001:861:5e02:eff0:152f:3894:dff9:5483)
21:58:36 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
22:00:52 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
22:01:39 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
22:01:54 jinsun joins (~jinsun@user/jinsun)
22:02:12 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
22:03:22 elkcl joins (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru)
22:05:18 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
22:05:21 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
22:06:12 mechap joins (~mechap@user/mechap)
22:06:14 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
22:11:14 × dagit quits (~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (Server closed connection)
22:16:09 fendor joins (~fendor@2a02:8388:1640:be00:cb6e:46f6:2fe6:1728)
22:16:39 zetef joins (~quassel@5.2.182.98)
22:16:54 × zetef quits (~quassel@5.2.182.98) (Remote host closed the connection)
22:20:37 × fendor quits (~fendor@2a02:8388:1640:be00:cb6e:46f6:2fe6:1728) (Remote host closed the connection)
22:23:20 × pointlessslippe1 quits (~pointless@212.82.82.3) (Ping timeout: 255 seconds)
22:23:51 × michalz quits (~michalz@185.246.207.201) (Remote host closed the connection)
22:24:39 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
22:34:43 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 264 seconds)
22:35:21 × kraftwerk28 quits (~kraftwerk@164.92.219.160) (Quit: *disconnects*)
22:35:25 × ciiur^ quits (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net) (Ping timeout: 255 seconds)
22:36:17 ciiur^ joins (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net)
22:36:46 kraftwerk28 joins (~kraftwerk@164.92.219.160)
22:40:02 emmanuelux joins (~emmanuelu@user/emmanuelux)
22:41:02 pavonia joins (~user@user/siracusa)
22:41:41 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
22:42:53 × ciiur^ quits (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net) (Remote host closed the connection)
22:44:55 × aliosablack quits (~chomwitt@2a02:587:7a05:2c00:1ac0:4dff:fedb:a3f1) (Ping timeout: 264 seconds)
22:45:33 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
22:46:21 × mechap quits (~mechap@user/mechap) (Ping timeout: 240 seconds)
22:51:21 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
22:55:03 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
22:55:14 × alp quits (~alp@2001:861:5e02:eff0:152f:3894:dff9:5483) (Ping timeout: 252 seconds)
22:56:19 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:57:30 × kraftwerk28 quits (~kraftwerk@164.92.219.160) (Quit: *disconnects*)
22:58:40 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:58:46 kraftwerk28 joins (~kraftwerk@164.92.219.160)
23:02:19 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:04:44 alp joins (~alp@2001:861:5e02:eff0:86bc:a0a1:58c4:4dac)
23:06:57 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
23:10:08 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:11:33 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
23:13:19 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
23:14:22 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:17:34 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
23:19:59 × pixelmonk quits (~pixelmonk@50.205.76.66) (Ping timeout: 252 seconds)
23:21:28 pointlessslippe1 joins (~pointless@212.82.82.3)
23:24:05 × acidjnk quits (~acidjnk@p200300d6e72b9352bd047a176d81e23c.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
23:24:17 × accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
23:27:12 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:30:27 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
23:30:28 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:32:38 × Jackneill_ quits (~Jackneill@20014C4E1E058A00193351DCDA9024FA.dsl.pool.telekom.hu) (Ping timeout: 252 seconds)
23:33:47 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
23:42:05 pixelmonk joins (~pixelmonk@50.205.76.66)
23:44:44 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:46:33 Sgeo joins (~Sgeo@user/sgeo)
23:49:26 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
23:52:02 × dfg quits (~dfg@user/dfg) (Server closed connection)
23:52:20 dfg joins (~dfg@dfg.rocks)
23:52:20 × dfg quits (~dfg@dfg.rocks) (Changing host)
23:52:20 dfg joins (~dfg@user/dfg)
23:56:57 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Read error: Connection reset by peer)

All times are in UTC on 2023-11-07.