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