2022-01-06 00:02:07 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-01-06 00:02:33 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-06 00:02:34 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2022-01-06 00:05:16 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-01-06 00:06:09 +0100 | mud | (~mud@user/kadoban) |
2022-01-06 00:08:13 +0100 | Inst | (~delicacie@2601:6c4:4080:3f80:6819:92d4:93fc:ed3b) |
2022-01-06 00:09:22 +0100 | jushur | (~human@user/jushur) |
2022-01-06 00:09:30 +0100 | <Axman6> | ImportQualifiedPost is the default in DAML, and I honestly wish it was turned on by default in Haskell, particularly since it doesn't break anything. so much nicer than the mess that "import qualified" creates |
2022-01-06 00:11:12 +0100 | <geekosaur> | it's in GHC2021, so default as of ghc 9.2 |
2022-01-06 00:11:21 +0100 | <Axman6> | awww yisss |
2022-01-06 00:12:31 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-90.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-01-06 00:12:53 +0100 | shapr | (~user@2601:7c0:c202:5190:cecd:8e39:7234:9a0d) (Ping timeout: 252 seconds) |
2022-01-06 00:14:01 +0100 | <awpr> | as someone who currently maintains only Hackage libraries and no leaf application code: I'm really excited to switch over to this in 2032 |
2022-01-06 00:14:03 +0100 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-01-06 00:14:16 +0100 | <jackdk> | I don't understand why this fires you up so much, Axman6. |
2022-01-06 00:14:37 +0100 | Inst | (~delicacie@2601:6c4:4080:3f80:6819:92d4:93fc:ed3b) (Ping timeout: 240 seconds) |
2022-01-06 00:15:38 +0100 | <hpc> | jackdk: wadler's law |
2022-01-06 00:15:45 +0100 | <Axman6> | vertical alignment of code is very important, it makes it much easier for me to read, and the only way to do that with imports at the moment is by doing ugly things like tomsmeding's post above (https://paste.tomsmeding.com/bpwrBBcP). |
2022-01-06 00:16:35 +0100 | justIrresolute | (~justache@user/justache) |
2022-01-06 00:16:47 +0100 | <Axman6> | it also greatly reduces commit noise, if you have code where you had no qualified imports and then add one you need to change every import line. having post qualified imports means only that line changes |
2022-01-06 00:16:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 00:17:08 +0100 | <Axman6> | (because writing import Foo all the time when you have no qualified modules is insanity) |
2022-01-06 00:18:00 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-06 00:18:14 +0100 | <Axman6> | bring dyslexic makes this even more of a problem, trying to find mistakes in unaligned code is much harder |
2022-01-06 00:25:20 +0100 | <EvanR> | well, comments and imports arguably take up a lot of space in haskell relative to code |
2022-01-06 00:25:25 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 00:25:25 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 00:25:25 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 00:25:37 +0100 | <EvanR> | worth bikeshedding xD |
2022-01-06 00:25:40 +0100 | <lechner> | the code is so short |
2022-01-06 00:25:58 +0100 | <jackdk> | I... don't really look at imports all that much |
2022-01-06 00:26:16 +0100 | <EvanR> | me neither, I press page down at the start of each file |
2022-01-06 00:26:24 +0100 | <Axman6> | I do when HLS decides it's not going to find GHC and stop working :) |
2022-01-06 00:28:24 +0100 | <lechner> | Thanks to whomever posted this Ruby talk earlier! Very nice https://tomstu.art/refactoring-ruby-with-monads |
2022-01-06 00:29:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 00:29:59 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 00:30:44 +0100 | <Axman6> | that was me |
2022-01-06 00:31:49 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
2022-01-06 00:31:59 +0100 | <lechner> | thank you! |
2022-01-06 00:35:34 +0100 | <EvanR> | funny, apparently an operator can be a field name |
2022-01-06 00:36:03 +0100 | <geekosaur> | why not? (if nothing else, fields can be functions) |
2022-01-06 00:36:42 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
2022-01-06 00:36:44 +0100 | <EvanR> | I will now abuse this |
2022-01-06 00:36:57 +0100 | <geekosaur> | although I guess that becomes syntactically a little weird, unless RecordDotSyntax does something vaguely useful with it |
2022-01-06 00:37:19 +0100 | <Hecate> | I'm only using optics nowadays |
2022-01-06 00:38:06 +0100 | <awpr> | before QualifiedDo, this could be put to good use with RebindableSyntax as: `let MonadOps{..} = indexedMonadOps in do ...` |
2022-01-06 00:38:19 +0100 | <awpr> | (with QualifiedDo that trick isn't needed) |
2022-01-06 00:48:18 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2022-01-06 00:49:09 +0100 | <lechner> | Hi, what's a good strategy, please, to interrupt a long-running program after it completed an external fork (loop)? In Perl, I used a keystroke. In Haskell, processing input is presumably more complicated. https://salsa.debian.org/lintian/kickoff/-/blob/history/runner#L99 |
2022-01-06 00:49:17 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-06 00:50:40 +0100 | <lechner> | or maybe it's a monad in reverse, as in 'return' when there is Something as opposed to Nothing |
2022-01-06 00:51:03 +0100 | max22- | (~maxime@2a01cb088335980086c6bc2422140675.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-06 00:51:55 +0100 | <geekosaur> | a separate thread that listens for keys and throws to the main thread? |
2022-01-06 00:52:03 +0100 | <Axman6> | ^C |
2022-01-06 00:52:28 +0100 | <lechner> | just catch SIGINT? |
2022-01-06 00:52:35 +0100 | <geekosaur> | signal handling in ghc's runtime is sadly atrocious; don't be surprised if the result is a core dump |
2022-01-06 00:52:52 +0100 | <geekosaur> | but yes, ignoring that SIGINT is a way to do it |
2022-01-06 00:53:03 +0100 | <lechner> | it'll end the program alright! |
2022-01-06 00:55:17 +0100 | <lechner> | is this still true? https://stackoverflow.com/a/34867087 |
2022-01-06 00:56:47 +0100 | <geekosaur> | don't thread and fork in the same program |
2022-01-06 00:56:53 +0100 | <geekosaur> | in any language |
2022-01-06 00:57:00 +0100 | <lechner> | you are right |
2022-01-06 00:57:16 +0100 | <geekosaur> | fork makes all threads go away, and god alone knows what locked resources will never be unlocked |
2022-01-06 00:58:39 +0100 | <geekosaur> | that said, the reason signals are relayed to the main thread is not that they're specifically handled in a separate thread, it's that posix makes zero guarantees which thread receives the signal |
2022-01-06 00:58:53 +0100 | <lechner> | yeah |
2022-01-06 00:59:16 +0100 | <geekosaur> | so it's irrelevant without -threaded |
2022-01-06 00:59:33 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-06 01:00:43 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-01-06 01:02:25 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2022-01-06 01:02:59 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 01:08:15 +0100 | <Axman6> | Praise be to the god of locking, Loki |
2022-01-06 01:08:37 +0100 | <Axman6> | locking is chaos, so I think he's apt |
2022-01-06 01:10:29 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:54a9:bec8:b650:a634) (Remote host closed the connection) |
2022-01-06 01:10:47 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:1c52:e548:30d:e414) |
2022-01-06 01:12:13 +0100 | <lechner> | I think I can just use hReady https://hackage.haskell.org/package/base-4.16.0.0/docs/System-IO.html#v:hReady |
2022-01-06 01:16:44 +0100 | geekosaur | feels a tickling in the back of his brain |
2022-01-06 01:19:05 +0100 | <jackdk> | yeah Axman6 this is a good talk - it's talking about abstractions and laws |
2022-01-06 01:19:35 +0100 | <geekosaur> | it might work but it's a bit tricky |
2022-01-06 01:21:08 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 01:22:55 +0100 | x_kuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-01-06 01:23:17 +0100 | acidjnk | (~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-01-06 01:23:17 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-01-06 01:25:39 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-06 01:32:13 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds) |
2022-01-06 01:36:36 +0100 | cheater | (~Username@user/cheater) |
2022-01-06 01:44:10 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:1c52:e548:30d:e414) (Remote host closed the connection) |
2022-01-06 01:48:02 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2022-01-06 01:48:02 +0100 | <Axman6> | jackdk: the monads in ruby one? |
2022-01-06 01:48:08 +0100 | cheater1__ | (~Username@user/cheater) |
2022-01-06 01:48:12 +0100 | cheater1__ | cheater |
2022-01-06 01:53:56 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-06 01:55:57 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2022-01-06 01:56:37 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
2022-01-06 01:58:03 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 01:58:03 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 01:58:03 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 01:59:17 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-06 01:59:18 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::45db) |
2022-01-06 02:02:41 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-06 02:03:20 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-06 02:05:11 +0100 | BrokenClutch | (~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) |
2022-01-06 02:06:35 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-01-06 02:07:27 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 256 seconds) |
2022-01-06 02:12:30 +0100 | <jackdk> | Axman6: yes |
2022-01-06 02:12:53 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 02:13:43 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 02:14:46 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) |
2022-01-06 02:15:42 +0100 | noddy | (~user@user/noddy) (Quit: WeeChat 3.4) |
2022-01-06 02:20:44 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4) |
2022-01-06 02:21:17 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3) |
2022-01-06 02:26:40 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-01-06 02:27:44 +0100 | kaph_ | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-06 02:33:56 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |
2022-01-06 02:39:10 +0100 | <Axman6> | I feel like I've been told off before for sharing it here, but glad some people got some value from it |
2022-01-06 02:44:14 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 02:44:52 +0100 | <EvanR> | oh, now I gotta click |
2022-01-06 02:45:37 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-06 02:45:59 +0100 | jespada | (~jespada@87.74.32.18) (Ping timeout: 256 seconds) |
2022-01-06 02:46:12 +0100 | <EvanR> | dang, giving a prepared haskell talk at ruby conferences. I've been doing it wrong this whole time |
2022-01-06 02:48:10 +0100 | jespada | (~jespada@87.74.32.18) |
2022-01-06 02:48:36 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
2022-01-06 02:48:39 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2022-01-06 02:48:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-06 02:50:07 +0100 | <Axman6> | I feel like jackdk would be in a good position to do that... |
2022-01-06 02:50:42 +0100 | <jackdk> | Axman6: like a) people travel to conferences these days, and b) I don't have enough other things to do :P |
2022-01-06 02:51:16 +0100 | <Axman6> | you're gonna have so much time once you push amazonka-2.0 out the door, there'll definitely be nothing to fix once that's done |
2022-01-06 02:52:07 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 02:56:22 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.4) |
2022-01-06 03:00:04 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 03:00:50 +0100 | mmhat | (~mmh@55d49507.access.ecotel.net) (Quit: WeeChat 3.4) |
2022-01-06 03:04:40 +0100 | <jackdk> | Axman6: nah people just chuck more things on the pile =S |
2022-01-06 03:05:05 +0100 | <Axman6> | praise be to the backlog |
2022-01-06 03:06:51 +0100 | <jackdk> | mostly I tag them "post 2.0" and say "I'd love to see a PR" because getting something out the door is more important |
2022-01-06 03:08:29 +0100 | tinwood | (~tinwood@canonical/tinwood) (Remote host closed the connection) |
2022-01-06 03:11:18 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-06 03:11:29 +0100 | tinwood | (~tinwood@general.default.akavanagh.uk0.bigv.io) |
2022-01-06 03:11:29 +0100 | tinwood | (~tinwood@general.default.akavanagh.uk0.bigv.io) (Changing host) |
2022-01-06 03:11:29 +0100 | tinwood | (~tinwood@canonical/tinwood) |
2022-01-06 03:16:45 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-06 03:16:46 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
2022-01-06 03:17:34 +0100 | califax- | (~califax@user/califx) |
2022-01-06 03:17:35 +0100 | pottsy | (~pottsy@129.227.183.244) (Quit: Leaving) |
2022-01-06 03:21:45 +0100 | califax | (~califax@user/califx) (Ping timeout: 276 seconds) |
2022-01-06 03:21:45 +0100 | califax- | califax |
2022-01-06 03:26:13 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-01-06 03:27:17 +0100 | xff0x | (~xff0x@2001:1a81:53e7:b00:f827:c356:f4f8:aa66) (Ping timeout: 240 seconds) |
2022-01-06 03:28:21 +0100 | xff0x | (~xff0x@2001:1a81:53e7:b00:ae4:d336:6060:937f) |
2022-01-06 03:29:16 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-01-06 03:32:22 +0100 | neurocyte091 | (~neurocyte@IP-212232089218.dynamic.medianet-world.de) |
2022-01-06 03:32:22 +0100 | neurocyte091 | (~neurocyte@IP-212232089218.dynamic.medianet-world.de) (Changing host) |
2022-01-06 03:32:22 +0100 | neurocyte091 | (~neurocyte@user/neurocyte) |
2022-01-06 03:34:09 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 03:34:51 +0100 | neurocyte09 | (~neurocyte@user/neurocyte) (Ping timeout: 256 seconds) |
2022-01-06 03:34:52 +0100 | neurocyte091 | neurocyte09 |
2022-01-06 03:36:46 +0100 | xff0x | (~xff0x@2001:1a81:53e7:b00:ae4:d336:6060:937f) (Ping timeout: 268 seconds) |
2022-01-06 03:37:07 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 03:38:16 +0100 | vysn | (~vysn@user/vysn) |
2022-01-06 03:38:32 +0100 | xff0x | (~xff0x@2001:1a81:5223:a300:9deb:66dd:70e6:c22a) |
2022-01-06 03:52:59 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds) |
2022-01-06 03:56:59 +0100 | <EvanR> | is it possible to suppress top level forall in a type sig in haddock |
2022-01-06 03:57:18 +0100 | <EvanR> | if it doesn't seem relevant at the level of documentation |
2022-01-06 04:01:14 +0100 | noddy | (~user@user/noddy) |
2022-01-06 04:01:14 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-01-06 04:02:03 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-01-06 04:02:52 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-01-06 04:04:06 +0100 | puke | (~puke@user/puke) (Quit: puke) |
2022-01-06 04:08:25 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 04:19:27 +0100 | kaph_ | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-01-06 04:19:29 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-06 04:29:11 +0100 | <Axman6> | since it affects the order of type variables in type applications, it's really part of the API now |
2022-01-06 04:33:01 +0100 | <BrokenClutch> | I want to wax myself without looking like a femboy |
2022-01-06 04:33:46 +0100 | <BrokenClutch> | oops, wrong chat. How haskell handles stm, is there a optimization on ghc? |
2022-01-06 04:40:32 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-06 04:41:23 +0100 | mbuf | (~Shakthi@122.178.186.114) |
2022-01-06 04:43:14 +0100 | <Axman6> | o.O |
2022-01-06 04:43:41 +0100 | <Axman6> | "is there an optimisation on ghc?" I don;t know what you mean by this. GHC provides an implementation of STM |
2022-01-06 04:48:31 +0100 | td_ | (~td@94.134.91.82) (Ping timeout: 256 seconds) |
2022-01-06 04:50:06 +0100 | td_ | (~td@94.134.91.33) |
2022-01-06 04:53:25 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds) |
2022-01-06 04:53:57 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::45db) (Ping timeout: 240 seconds) |
2022-01-06 04:57:49 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-06 05:00:14 +0100 | <EvanR> | Understood re: order of variables for type applications but |
2022-01-06 05:00:56 +0100 | <EvanR> | what about rearranging so the order is default, so the forall is redundant xD |
2022-01-06 05:00:57 +0100 | noddy | (~user@user/noddy) (Quit: WeeChat 3.4) |
2022-01-06 05:03:32 +0100 | noddy | (~user@user/noddy) |
2022-01-06 05:04:47 +0100 | <jackdk> | there are times where the explicit ordering is very useful cf. constraints-extras |
2022-01-06 05:08:05 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-06 05:08:40 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 05:10:00 +0100 | mtjm | (~mutantmel@2604:a880:2:d0::208b:d001) |
2022-01-06 05:16:09 +0100 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 256 seconds) |
2022-01-06 05:17:23 +0100 | hyiltiz | (~quassel@31.220.5.250) (Quit: hyiltiz) |
2022-01-06 05:18:10 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 05:20:05 +0100 | hyiltiz | (~quassel@31.220.5.250) (Client Quit) |
2022-01-06 05:22:37 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-01-06 05:30:21 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 05:30:21 +0100 | deadmarshal | (~deadmarsh@95.38.116.103) |
2022-01-06 05:30:37 +0100 | xff0x | (~xff0x@2001:1a81:5223:a300:9deb:66dd:70e6:c22a) (Ping timeout: 240 seconds) |
2022-01-06 05:31:42 +0100 | xff0x | (~xff0x@2001:1a81:5223:a300:d0e9:99bd:8a63:7db6) |
2022-01-06 05:32:13 +0100 | sirlensalot | (~sirlensal@ool-44c5f8c9.dyn.optonline.net) (Quit: sirlensalot) |
2022-01-06 05:32:13 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:32:29 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:32:36 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:32:49 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:32:57 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:33:04 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 05:33:12 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:33:18 +0100 | hyiltiz | (~quassel@31.220.5.250) (Client Quit) |
2022-01-06 05:33:19 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:33:26 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 05:33:33 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:33:41 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:33:55 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:34:02 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:34:18 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:34:25 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:34:41 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:34:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:35:03 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:35:11 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:35:25 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:35:32 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:35:48 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:35:56 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:36:11 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:36:19 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:36:37 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:36:44 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:36:59 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:37:06 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:37:20 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:37:28 +0100 | Jing | (~hedgehog@2604:a840:3::103c) |
2022-01-06 05:37:28 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:37:42 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:37:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:37:57 +0100 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 240 seconds) |
2022-01-06 05:38:04 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:38:11 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:38:25 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:38:33 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:38:48 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:38:54 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 05:38:55 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:39:10 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:39:17 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:39:31 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:39:38 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:39:54 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:40:01 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:40:16 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:40:23 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:40:38 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:40:45 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:41:00 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:41:07 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:41:23 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:41:30 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:41:45 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:41:52 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:42:06 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 05:42:14 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-06 05:46:03 +0100 | <EvanR> | LAVAMANNNNNNN |
2022-01-06 05:46:33 +0100 | rekahsoft | (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) |
2022-01-06 05:48:32 +0100 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) |
2022-01-06 05:49:34 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
2022-01-06 05:53:31 +0100 | benin9 | (~benin@183.82.176.241) |
2022-01-06 05:54:37 +0100 | benin | (~benin@183.82.176.241) (Ping timeout: 240 seconds) |
2022-01-06 05:54:37 +0100 | benin9 | benin |
2022-01-06 05:56:11 +0100 | shapr | (~user@2601:7c0:c202:5190:cc66:94d5:eb1a:5dfe) |
2022-01-06 06:04:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-06 06:05:18 +0100 | hyiltiz | (~quassel@31.220.5.250) (Quit: hyiltiz) |
2022-01-06 06:07:37 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds) |
2022-01-06 06:09:04 +0100 | SpencerJanssen[m | (~sjanssenm@2001:470:69fc:105::1:61d8) |
2022-01-06 06:13:54 +0100 | BrokenClutch | (~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) () |
2022-01-06 06:15:37 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
2022-01-06 06:25:05 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2022-01-06 06:26:34 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 256 seconds) |
2022-01-06 06:27:28 +0100 | emf_ | (~emf@c-73-97-137-43.hsd1.wa.comcast.net) |
2022-01-06 06:28:19 +0100 | emf_ | (~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit) |
2022-01-06 06:28:37 +0100 | emf | (~emf@2620:10d:c090:400::5:c06d) (Ping timeout: 240 seconds) |
2022-01-06 06:34:11 +0100 | deadmarshal | (~deadmarsh@95.38.116.103) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-01-06 06:34:28 +0100 | deadmarshal | (~deadmarsh@95.38.116.103) |
2022-01-06 06:35:31 +0100 | <Axman6> | EvanR: because of the way glirc shows joins and parts, lavaman's been shown as lavaman+x+x+x+x+x+x+x+x+x+x+ .. lavaman+x+x+ .. lavamanx+x+x+x+x+x+x+x+x+x, which made your comment even better |
2022-01-06 06:35:42 +0100 | <EvanR> | lol |
2022-01-06 06:36:13 +0100 | <sshine> | ahhh -- this is a joke for those who don't ignore joins/parts. :) |
2022-01-06 06:36:29 +0100 | <EvanR> | I like how glirc compresses it but still makes it annoying |
2022-01-06 06:36:38 +0100 | <EvanR> | instead of just hiding it |
2022-01-06 06:36:47 +0100 | <sshine> | EvanR, you might wanna know. |
2022-01-06 06:38:46 +0100 | <Axman6> | you can turn it off, but it's useful for when youy're helping someone and they decide to piss off in the middle of it |
2022-01-06 06:41:43 +0100 | geranim0 | (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 256 seconds) |
2022-01-06 06:42:51 +0100 | fcc977 | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-06 06:42:55 +0100 | fcc977 | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Remote host closed the connection) |
2022-01-06 06:43:12 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-06 06:45:49 +0100 | <EvanR> | I was just reading about literate haskell, or literate programming. And the idea sounds interesting. But what is the practical workflow like. Does it only produce pdf "papers" or can you generate nice web pages |
2022-01-06 06:46:05 +0100 | <EvanR> | and what is "it"... a ghc flag? |
2022-01-06 06:48:07 +0100 | <sshine> | Axman6, right. I usually prefix my messages when answering people, but that has certainly happened a few times over the years. |
2022-01-06 06:48:32 +0100 | <sshine> | Axman6, (and in the process of prefixing them for the n'th time, realize that the completion doesn't work.) |
2022-01-06 06:49:13 +0100 | <sshine> | EvanR, .lhs files -- and yeah, you could generate LaTeX or Markdown, I guess. |
2022-01-06 06:49:54 +0100 | <EvanR> | wait generating markdown sounds... like stepping backwards |
2022-01-06 06:50:10 +0100 | <EvanR> | compiling from markdown? |
2022-01-06 06:50:14 +0100 | <sshine> | sorry, yes |
2022-01-06 06:50:41 +0100 | <EvanR> | oh, so the markdown is the "nice" version |
2022-01-06 06:50:47 +0100 | <EvanR> | something somewhere shows it nicely |
2022-01-06 06:51:32 +0100 | juhp | (~juhp@128.106.188.82) (Read error: Connection reset by peer) |
2022-01-06 06:51:57 +0100 | <sshine> | yeah, so comments on the outside, code on the inside, rather than the other way around like we usually do. |
2022-01-06 06:52:40 +0100 | <sshine> | and what I was thinking about, IIRC, was this: https://github.com/sol/markdown-unlit#readme -- but that's not regular .lhs format. |
2022-01-06 06:52:47 +0100 | xlei | (~akans@pool-68-129-84-118.nycmny.fios.verizon.net) (Remote host closed the connection) |
2022-01-06 06:53:36 +0100 | xlei | (~akans@pool-68-129-84-118.nycmny.fios.verizon.net) |
2022-01-06 06:57:23 +0100 | <maerwald[m]> | EvanR: https://entangled.github.io/ |
2022-01-06 06:57:41 +0100 | <sshine> | but I might still generate Markdown because I like the idea of using Markdown as the data format for blogs. :) I keep most of my notes in Markdown. CodiMD (that is, HackMD.io's open-sourced back-end) has pretty good MathJax support for embedding LaTeX equations. |
2022-01-06 06:57:44 +0100 | <maerwald[m]> | But I think none of those things are practical for everyday programming |
2022-01-06 06:59:01 +0100 | <EvanR> | ah cool |
2022-01-06 07:00:11 +0100 | <maerwald[m]> | I think what's more important than documentation is module structure, so that module level documentation can tell a good story. Then you can have directory level hacking documentation as well (haddock could support this, in fact) |
2022-01-06 07:01:20 +0100 | <EvanR> | just saw a rant about how literate programming is not documentation it's a PARADIGM!!!!! |
2022-01-06 07:01:40 +0100 | <EvanR> | actually yeah I just got done with some documentation, but it doesn't address any internals |
2022-01-06 07:01:58 +0100 | <EvanR> | so I was like how about literate haskell somehow which necessarily includes internals |
2022-01-06 07:03:44 +0100 | <maerwald[m]> | It makes changing code even harder |
2022-01-06 07:04:09 +0100 | <maerwald[m]> | Imagine refactoring, moving code to different places etc |
2022-01-06 07:04:37 +0100 | <maerwald[m]> | You'll just have so write the story from scratch |
2022-01-06 07:04:48 +0100 | <EvanR> | yeah |
2022-01-06 07:05:22 +0100 | <EvanR> | it's better as an article or demonstration that's easy to check by compiler |
2022-01-06 07:05:55 +0100 | <sshine> | yeah, it's pretty neat for writing tutorials. |
2022-01-06 07:06:01 +0100 | <sshine> | one-page tutorials :P |
2022-01-06 07:06:34 +0100 | <maerwald[m]> | I also think it's more worthwhile to separate documentation of behavior from documentation of intention |
2022-01-06 07:06:53 +0100 | <sshine> | maerwald[m], how so? |
2022-01-06 07:07:01 +0100 | <sshine> | what's an example of documentation of behavior? |
2022-01-06 07:07:28 +0100 | <jackdk> | `// add one to i` |
2022-01-06 07:07:30 +0100 | <maerwald[m]> | When intention changes non-trivially, that's a strong sign you should rewrite the entire function, instead of adjusting it |
2022-01-06 07:09:08 +0100 | <maerwald[m]> | Programmers tend to tweak behavior to the point when the original intention has nothing to do with the current intention |
2022-01-06 07:09:16 +0100 | <maerwald[m]> | Then you're usually left with messy code |
2022-01-06 07:09:31 +0100 | <maerwald[m]> | The only way to find out is documenting intention |
2022-01-06 07:11:28 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 07:12:14 +0100 | <maerwald[m]> | sshine: when you describe relationship of input to output for example |
2022-01-06 07:14:02 +0100 | <sshine> | maerwald[m], where do you think the two kinds of documentation should be separated? I usually have one place where I document stuff, and that's in comments above functions. :) |
2022-01-06 07:14:10 +0100 | <sshine> | and also at the top of modules. |
2022-01-06 07:14:52 +0100 | <maerwald[m]> | sshine: the first line of the documentation should reflect the intention. Then newline and then you can document behavior |
2022-01-06 07:16:25 +0100 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 256 seconds) |
2022-01-06 07:16:27 +0100 | <EvanR> | I'm now convinced writing documentation is pointless thanks maerwald[m] xD |
2022-01-06 07:16:41 +0100 | <EvanR> | unless it's something that never changes like Functor |
2022-01-06 07:16:42 +0100 | <maerwald[m]> | E.g. "We want to extract the device of the path, if any". Subsequently, there will be a lot of edge cases |
2022-01-06 07:16:47 +0100 | <EvanR> | which... barely has any docus |
2022-01-06 07:17:42 +0100 | <maerwald[m]> | But the intention is simple |
2022-01-06 07:20:27 +0100 | <sshine> | maerwald[m], ah, okay. :) I think I'm sort of doing that without being conscious about it. mostly of the "intention" part being the most zoomed-out description I can give something without scope-creeping the explanation. |
2022-01-06 07:21:17 +0100 | <maerwald[m]> | sshine: right, but the catch is the intention must never be changed |
2022-01-06 07:21:25 +0100 | <maerwald[m]> | If it does, write a new function |
2022-01-06 07:21:55 +0100 | <maerwald[m]> | Unless you control all the call sites |
2022-01-06 07:27:11 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 07:29:12 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-01-06 07:30:59 +0100 | <Square> | how do i take a value and turn it into a Exp in TH? |
2022-01-06 07:31:15 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2022-01-06 07:31:59 +0100 | <EvanR> | for the next hour sit quietly and we will control all the call sites |
2022-01-06 07:32:06 +0100 | <jackdk> | Square: https://hackage.haskell.org/package/template-haskell-2.18.0.0/docs/Language-Haskell-TH-Syntax.html… |
2022-01-06 07:33:04 +0100 | <jackdk> | but also if the value is in a variable, then `[|| foo ||]` might do the trick |
2022-01-06 07:34:58 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 07:34:58 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 07:34:58 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 07:38:31 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 07:39:31 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 07:39:39 +0100 | <Square> | jackdk, thanks. That seems to work |
2022-01-06 07:41:32 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
2022-01-06 07:55:42 +0100 | juhp | (~juhp@128.106.188.82) |
2022-01-06 08:00:59 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 08:10:37 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 240 seconds) |
2022-01-06 08:10:41 +0100 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 256 seconds) |
2022-01-06 08:11:53 +0100 | emf | (~emf@c-73-97-137-43.hsd1.wa.comcast.net) |
2022-01-06 08:12:29 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2022-01-06 08:13:36 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 08:14:55 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-01-06 08:15:06 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 08:18:03 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2022-01-06 08:18:11 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-06 08:19:05 +0100 | Jing | (~hedgehog@2604:a840:3::103c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-06 08:21:08 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2022-01-06 08:21:34 +0100 | cheater | (~Username@user/cheater) |
2022-01-06 08:21:57 +0100 | shapr | (~user@2601:7c0:c202:5190:cc66:94d5:eb1a:5dfe) (Ping timeout: 240 seconds) |
2022-01-06 08:24:01 +0100 | coolnickname | (uid531864@user/coolnickname) |
2022-01-06 08:30:21 +0100 | emf_ | (~emf@2620:10d:c090:400::5:29c4) |
2022-01-06 08:34:00 +0100 | emf | (~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Ping timeout: 268 seconds) |
2022-01-06 08:35:11 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 08:37:08 +0100 | nhatanh02 | (~satori@123.24.172.30) |
2022-01-06 08:39:31 +0100 | dsrt^ | (~dsrt@207.5.21.20) |
2022-01-06 08:40:34 +0100 | Jing | (~hedgehog@2604:a840:3::103c) |
2022-01-06 08:40:48 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-90.elisa-laajakaista.fi) |
2022-01-06 08:59:14 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-01-06 09:01:28 +0100 | spaceseller | (~spacesell@31.147.205.13) |
2022-01-06 09:02:45 +0100 | spaceseller | (~spacesell@31.147.205.13) (Remote host closed the connection) |
2022-01-06 09:03:30 +0100 | chele | (~chele@user/chele) |
2022-01-06 09:04:23 +0100 | emf_ | (~emf@2620:10d:c090:400::5:29c4) (Quit: emf_) |
2022-01-06 09:05:39 +0100 | rekahsoft | (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds) |
2022-01-06 09:07:14 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-06 09:14:19 +0100 | jinsun | (~quassel@user/jinsun) (Read error: Connection reset by peer) |
2022-01-06 09:15:39 +0100 | jinsun | (~quassel@user/jinsun) |
2022-01-06 09:21:09 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 09:26:51 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-01-06 09:44:24 +0100 | Dima[m] | (~reddima10@2001:470:69fc:105::366) |
2022-01-06 09:52:48 +0100 | mbuf | (~Shakthi@122.178.186.114) (Quit: Leaving) |
2022-01-06 09:53:47 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-06 09:54:08 +0100 | zaquest | (~notzaques@5.130.79.72) (Quit: Leaving) |
2022-01-06 09:54:45 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-01-06 09:55:00 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-01-06 09:55:40 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-01-06 09:59:14 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-01-06 10:03:36 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds) |
2022-01-06 10:16:45 +0100 | acidjnk | (~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) |
2022-01-06 10:16:47 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) |
2022-01-06 10:16:55 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer) |
2022-01-06 10:17:46 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-06 10:18:53 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 256 seconds) |
2022-01-06 10:20:40 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-01-06 10:24:31 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
2022-01-06 10:25:57 +0100 | Jing | (~hedgehog@2604:a840:3::103c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-06 10:26:31 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-06 10:26:37 +0100 | Jing | (~hedgehog@2604:a840:3::103c) |
2022-01-06 10:32:17 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2022-01-06 10:33:56 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-06 10:35:00 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2022-01-06 10:36:05 +0100 | ubert | (~Thunderbi@p200300ecdf0994db19c621579c5ac118.dip0.t-ipconnect.de) |
2022-01-06 10:36:48 +0100 | Dima[m] | (~reddima10@2001:470:69fc:105::366) () |
2022-01-06 10:43:05 +0100 | kspalaiologos | (~kspalaiol@user/kspalaiologos) |
2022-01-06 10:46:26 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 10:48:29 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-06 10:50:37 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-06 10:54:08 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) |
2022-01-06 11:03:39 +0100 | phma | (~phma@host-67-44-208-205.hnremote.net) (Read error: Connection reset by peer) |
2022-01-06 11:04:53 +0100 | phma | (phma@2001:5b0:212a:8aa8:ed3d:67f3:3037:708a) |
2022-01-06 11:05:54 +0100 | `2jt | (~jtomas@153.red-83-53-252.dynamicip.rima-tde.net) |
2022-01-06 11:08:02 +0100 | phma | (phma@2001:5b0:212a:8aa8:ed3d:67f3:3037:708a) (Read error: Connection reset by peer) |
2022-01-06 11:09:19 +0100 | phma | (phma@2001:5b0:211b:f778:91c:a71f:b4a2:a400) |
2022-01-06 11:10:59 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-01-06 11:13:10 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-06 11:13:43 +0100 | sphynx | (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (Ping timeout: 268 seconds) |
2022-01-06 11:14:06 +0100 | max22- | (~maxime@2a01cb088335980076b5f89708bbcdbc.ipv6.abo.wanadoo.fr) |
2022-01-06 11:14:11 +0100 | sphynx | (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) |
2022-01-06 11:14:38 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-01-06 11:19:16 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-01-06 11:19:18 +0100 | __monty__ | (~toonn@user/toonn) |
2022-01-06 11:19:36 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-01-06 11:32:08 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-01-06 11:33:33 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
2022-01-06 11:33:33 +0100 | Lord_of_Life_ | Lord_of_Life |
2022-01-06 11:35:18 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-06 11:36:09 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 11:36:09 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 11:36:09 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 11:40:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 11:42:28 +0100 | zmt01 | (~zmt00@user/zmt00) |
2022-01-06 11:43:17 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2022-01-06 11:43:47 +0100 | coolnickname | (uid531864@user/coolnickname) (Quit: Connection closed for inactivity) |
2022-01-06 11:48:37 +0100 | jinsun | (~quassel@user/jinsun) (Ping timeout: 240 seconds) |
2022-01-06 11:49:04 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-06 11:50:10 +0100 | jinsun | (~quassel@user/jinsun) |
2022-01-06 11:53:30 +0100 | phaazon | (~phaazon@2001:41d0:a:fe76::1) (Quit: WeeChat 2.9) |
2022-01-06 11:53:48 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-01-06 11:53:55 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-06 11:53:58 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Remote host closed the connection) |
2022-01-06 11:54:39 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-01-06 11:56:37 +0100 | x88x88x | (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) |
2022-01-06 12:00:01 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-06 12:06:56 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 12:06:56 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 12:06:56 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 12:07:37 +0100 | vglfr | (~vglfr@88.155.23.34) |
2022-01-06 12:12:05 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 12:13:46 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) |
2022-01-06 12:16:27 +0100 | ishan_ | (~ishan@122.172.57.62) |
2022-01-06 12:17:57 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-01-06 12:18:04 +0100 | <ishan_> | hello |
2022-01-06 12:19:03 +0100 | <[exa]> | hi! |
2022-01-06 12:19:50 +0100 | <ishan_> | i have just started learning haskell and i had a small doubt |
2022-01-06 12:20:32 +0100 | <ishan_> | why does <min "oh" "hello"> return "hello" |
2022-01-06 12:21:25 +0100 | <[exa]> | because the comparison is lexicographic, and AFAIK 'h' < 'o', at least in ascii |
2022-01-06 12:22:31 +0100 | <ishan_> | ahhh ok ok makes sense |
2022-01-06 12:22:35 +0100 | <ishan_> | Thanks! |
2022-01-06 12:22:38 +0100 | <[exa]> | if you want to compare by lengths, you can construct something like `minOn` |
2022-01-06 12:22:44 +0100 | <[exa]> | let's try |
2022-01-06 12:22:55 +0100 | <[exa]> | > minimumOn length ["oh", "hello"] |
2022-01-06 12:22:56 +0100 | <lambdabot> | error: |
2022-01-06 12:22:56 +0100 | <lambdabot> | • Variable not in scope: |
2022-01-06 12:22:57 +0100 | <lambdabot> | minimumOn :: (t0 a0 -> Int) -> [[Char]] -> t |
2022-01-06 12:23:18 +0100 | <[exa]> | ah noes it requires extra libraries, but you can see it here: https://hackage.haskell.org/package/extra-1.7.10/docs/Data-List-Extra.html#v:minimumOn |
2022-01-06 12:23:59 +0100 | <ishan_> | ooohh, I'll check it out Thanks ! |
2022-01-06 12:24:40 +0100 | <[exa]> | > let minOn f x y = (if f x < f y then x else y) in minOn length "oh" "hello" |
2022-01-06 12:24:42 +0100 | <lambdabot> | "oh" |
2022-01-06 12:24:53 +0100 | <[exa]> | (parens added for clarity only) |
2022-01-06 12:25:37 +0100 | <[exa]> | > let minOn f x y = (if f x < f y then x else y) in minOn reverse "oh" "hello" -- :] |
2022-01-06 12:25:38 +0100 | <lambdabot> | "oh" |
2022-01-06 12:25:46 +0100 | <Hecate> | (which is usually a good thing) |
2022-01-06 12:38:05 +0100 | wroathe | (~wroathe@206.55.188.8) |
2022-01-06 12:38:05 +0100 | wroathe | (~wroathe@206.55.188.8) (Changing host) |
2022-01-06 12:38:05 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 12:40:13 +0100 | ishan_ | (~ishan@122.172.57.62) () |
2022-01-06 12:42:41 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 12:49:03 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 12:50:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 12:51:49 +0100 | cosimone | (~user@93-47-228-11.ip115.fastwebnet.it) |
2022-01-06 12:55:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 12:55:46 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 12:57:05 +0100 | kspalaiologos | (~kspalaiol@user/kspalaiologos) (Quit: Leaving) |
2022-01-06 12:57:21 +0100 | byorgey | (~byorgey@155.138.238.211) (Quit: leaving) |
2022-01-06 12:57:48 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-01-06 12:59:57 +0100 | xff0x | (~xff0x@2001:1a81:5223:a300:d0e9:99bd:8a63:7db6) (Ping timeout: 240 seconds) |
2022-01-06 13:00:58 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 13:01:12 +0100 | xff0x | (~xff0x@2001:1a81:5223:a300:3ef8:2137:a2ce:8bcc) |
2022-01-06 13:01:28 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 13:02:37 +0100 | burnsidesLlama | (~burnsides@129.67.168.22) |
2022-01-06 13:02:47 +0100 | <raehik> | I can't auto derive a Functor instance for a data type that uses a promoted type and a type family, even though it's "clearly" easy to derive one manually (I get "constructor must only use type var as last arg of a data type"). Why is this? I had assumed GHC simplified type family equations eagerly |
2022-01-06 13:03:06 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-06 13:03:38 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-01-06 13:09:52 +0100 | <[exa]> | raehik: I always assumed that the `deriving` is processed before any type families are even evaluated, but I can't find anything that would confirm/deny that |
2022-01-06 13:10:00 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-06 13:11:39 +0100 | geranim0 | (~geranim0@modemcable242.171-178-173.mc.videotron.ca) |
2022-01-06 13:15:34 +0100 | byorgey | (~byorgey@155.138.238.211) |
2022-01-06 13:16:05 +0100 | <raehik> | [exa]: I seeee. also can't find anything in GHC docs that helps but I would take that, thanks |
2022-01-06 13:17:17 +0100 | <geekosaur> | possibly standalone deriving would work better? |
2022-01-06 13:17:45 +0100 | <[exa]> | I see `tcInstDecls` is done in 2 passes so yeah, could help |
2022-01-06 13:21:01 +0100 | wyrd_ | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-06 13:21:05 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2022-01-06 13:24:53 +0100 | <raehik> | I am doing standalone deriving |
2022-01-06 13:24:57 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-06 13:26:28 +0100 | <raehik> | I have a data type with 2 typevars, first is the promoted type, and one of the fields is a type family on both typevars -- which is where the error message is coming from |
2022-01-06 13:27:49 +0100 | <raehik> | as a human I can look at the equation for the given promoted type and know the actual type of the field, and now the instance is boring |
2022-01-06 13:28:05 +0100 | <[exa]> | raehik: is there a proof that the functor argument type doesn't get used e.g. as a contravariant in the type family? |
2022-01-06 13:30:21 +0100 | <raehik> | no I don't think so. but a single equation in the type family would have that proof, and I don't mind writing out multiple derivings for each constructor of the promoted type |
2022-01-06 13:31:07 +0100 | <raehik> | like "deriving instance Functor (X 'Promoted1)" |
2022-01-06 13:31:14 +0100 | xkuru | (~xkuru@user/xkuru) |
2022-01-06 13:31:48 +0100 | <raehik> | and say X has a record "PromotedRep p a" where "PromotedRep 'Promoted1 a = a" |
2022-01-06 13:33:21 +0100 | <raehik> | it all seemed "simple" when I looked at it, so I was curious why GHC was unhappy to derive automatically. (I get that there's usually lots more going on behind the scenes!) |
2022-01-06 13:34:54 +0100 | <[exa]> | can we have a code sample btw? |
2022-01-06 13:35:49 +0100 | <[exa]> | and possibly the precise error |
2022-01-06 13:37:43 +0100 | SpencerJanssen[m | sjanssen |
2022-01-06 13:37:50 +0100 | <raehik> | yes sry, let me write a MWE |
2022-01-06 13:42:04 +0100 | acidjnk_new3 | (~acidjnk@p200300d0c7271e938477eafdff400e1e.dip0.t-ipconnect.de) |
2022-01-06 13:42:08 +0100 | <raehik> | [exa]: https://paste.tomsmeding.com/hKKF0obk (thanks for the help so far) |
2022-01-06 13:43:25 +0100 | <[exa]> | oic you assume closed world |
2022-01-06 13:43:36 +0100 | <raehik> | still a Haskell newbie, recently I keep using this pattern, allows me to move more extension work to the type level. very small loss of having to write out some Foldables etc. |
2022-01-06 13:44:21 +0100 | <[exa]> | could you lift the type family a bit higher to the whole `data X` ? |
2022-01-06 13:44:37 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-06 13:44:37 +0100 | acidjnk | (~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-06 13:45:07 +0100 | <raehik> | ah yeah sure, good point |
2022-01-06 13:45:16 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8) |
2022-01-06 13:45:33 +0100 | <[exa]> | the logical problem I see there is that there's no telling if you give it say `deriving instance Functor (X SomeUnforeseenType)` |
2022-01-06 13:46:10 +0100 | <tomsmeding> | that doesn't mean that 'deriving instance Funcctor (X 'ChoiceA)' couldn't work |
2022-01-06 13:46:37 +0100 | acidjnk_new3 | (~acidjnk@p200300d0c7271e938477eafdff400e1e.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-06 13:46:49 +0100 | <[exa]> | yeah it could, but the data declaration above has a kinda sneaky forall there somewhere, right? |
2022-01-06 13:48:22 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) |
2022-01-06 13:48:23 +0100 | <raehik> | I think this is it? gives me the same errors https://paste.tomsmeding.com/Q6o88q1O |
2022-01-06 13:49:48 +0100 | <[exa]> | I meant replacing X with the type family, like `type family X c a` that chooses one of 2 data representations |
2022-01-06 13:50:03 +0100 | <[exa]> | but yeah that will get unwieldy very quickly |
2022-01-06 13:50:47 +0100 | Hud | (~Hud@184-167-074-028.res.spectrum.com) |
2022-01-06 13:51:06 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-06 13:53:39 +0100 | nhatanh02 | (~satori@123.24.172.30) (Ping timeout: 256 seconds) |
2022-01-06 13:53:55 +0100 | <raehik> | hmm I'm not sure exactly how to do that. I need a concrete product type where the other fields stay the same |
2022-01-06 13:54:05 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 256 seconds) |
2022-01-06 13:55:29 +0100 | coolnickname | (uid531864@user/coolnickname) |
2022-01-06 13:55:44 +0100 | <tomsmeding> | I think the DeriveFunctor logic in GHC just only handles a particular list of cases, in particular these: https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Tc/Deriv/Functor.hs#L508-537 |
2022-01-06 13:55:46 +0100 | <raehik> | I can kind of do it like this: https://paste.tomsmeding.com/Lda5md1q |
2022-01-06 13:56:08 +0100 | <raehik> | But now my Functor instance isn't over the dependent/type family field |
2022-01-06 13:56:19 +0100 | <tomsmeding> | namely type variables, function types, type constructors, applications of supported things, and forall types |
2022-01-06 13:56:26 +0100 | <tomsmeding> | and type families just happen to not be in this list |
2022-01-06 13:56:33 +0100 | <raehik> | oh wonderful cheers tomsmeding |
2022-01-06 13:56:35 +0100 | <merijn> | raehik: Oh |
2022-01-06 13:56:38 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2022-01-06 13:56:43 +0100 | <merijn> | raehik: You can't do thing with partially applied type families |
2022-01-06 13:56:52 +0100 | <merijn> | raehik: Which is why your standalone deriving does not work |
2022-01-06 13:56:58 +0100 | <tomsmeding> | the type family is not partially applied |
2022-01-06 13:57:15 +0100 | <merijn> | tomsmeding: It is in his standalone deriving |
2022-01-06 13:57:18 +0100 | <raehik> | ahhh I think you're right |
2022-01-06 13:58:23 +0100 | <merijn> | raehik: Because partially applied type families are equivalent to type level lambda's (which in turn break decidability) |
2022-01-06 14:00:02 +0100 | <raehik> | merijn: OK, I understand. Thanks very much for all the insights |
2022-01-06 14:00:37 +0100 | <raehik> | I shall install HLS for next time because I am a total failure at deriving instances without assistance |
2022-01-06 14:02:38 +0100 | burnsidesLlama | (~burnsides@129.67.168.22) (Remote host closed the connection) |
2022-01-06 14:06:08 +0100 | ishutin | (~ishutin@92-249-182-7.pool.digikabel.hu) (Ping timeout: 252 seconds) |
2022-01-06 14:06:42 +0100 | Guest|52 | (~Guest|52@92.40.175.189.threembb.co.uk) |
2022-01-06 14:07:58 +0100 | ishutin | (~ishutin@178-164-188-6.pool.digikabel.hu) |
2022-01-06 14:08:27 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 14:12:34 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-01-06 14:12:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 14:18:24 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-01-06 14:19:37 +0100 | Guest|52 | (~Guest|52@92.40.175.189.threembb.co.uk) (Ping timeout: 240 seconds) |
2022-01-06 14:35:32 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2022-01-06 14:37:47 +0100 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2022-01-06 14:43:31 +0100 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
2022-01-06 14:51:53 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-06 14:52:28 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-06 14:53:01 +0100 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 256 seconds) |
2022-01-06 14:53:54 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-01-06 14:53:54 +0100 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2022-01-06 14:54:52 +0100 | `2jt | (~jtomas@153.red-83-53-252.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
2022-01-06 14:56:08 +0100 | <lechner> | Hi, sometimes the docs on Hackage are not available due to build failures. i then go to the code. Is there a way to fix the docs on Hackage? Thanks! https://hackage.haskell.org/package/zeromq4-patterns |
2022-01-06 14:56:38 +0100 | <geekosaur> | you could contact the package maintainers and have them upload docs |
2022-01-06 14:57:07 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-01-06 14:57:14 +0100 | <geekosaur> | packages like that are unlikely to ever build and have automatic doc generation because the hackage builders are not going to have every C library under the sun installed |
2022-01-06 14:59:05 +0100 | <lechner> | isn't this one missing because of a conflict? https://hackage.haskell.org/package/zeromq4-patterns-0.3.1.0/reports/3 |
2022-01-06 15:00:06 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-06 15:00:13 +0100 | <geekosaur> | "conflict: pkg-config package |
2022-01-06 15:00:13 +0100 | <geekosaur> | libzmq>=4.0 && <5.0, not found in the pkg-config database" |
2022-01-06 15:00:25 +0100 | <geekosaur> | which means the C library is not installed |
2022-01-06 15:01:05 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-01-06 15:01:05 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-01-06 15:01:05 +0100 | finn_elija | FinnElija |
2022-01-06 15:01:20 +0100 | katsuragi | (katsuragi@tilde.institute) |
2022-01-06 15:01:24 +0100 | <lechner> | the Haskell package does not declare it as a praraquisite? |
2022-01-06 15:01:26 +0100 | katsuragi | (katsuragi@tilde.institute) (WeeChat 2.9) |
2022-01-06 15:01:31 +0100 | <lechner> | prerequisite? |
2022-01-06 15:01:51 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-06 15:01:53 +0100 | <geekosaur> | it does, but how is the builder to know how to install it, or worse download and build it? |
2022-01-06 15:02:16 +0100 | <lechner> | which os is Hackage on? |
2022-01-06 15:02:19 +0100 | <geekosaur> | also do the hackage maintainers really want their builders to automatically download and install random C libraries? |
2022-01-06 15:02:52 +0100 | <geekosaur> | does it matter? the system package name rarely matches the pkg-config package name |
2022-01-06 15:04:17 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) |
2022-01-06 15:04:31 +0100 | <lechner> | if we at debian could keep up with Hackage (and we are presently behind) the issue would not exist |
2022-01-06 15:05:25 +0100 | ubert | (~Thunderbi@p200300ecdf0994db19c621579c5ac118.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-06 15:05:37 +0100 | <lechner> | but i suppose it would require Hackage maintainers to package for Debian |
2022-01-06 15:06:04 +0100 | <int-e> | Hmm, is there a nicer formulation of this? minmax (x:xs) = foldl' (\(a, b) x -> (min a x, max b x)) (x, x) xs (specification is minmax == minimum &&& maximum, but I want to traverse the list only once) |
2022-01-06 15:07:29 +0100 | <geekosaur> | lechner, you could try asking in #hackage but I'm pretty sure I already know their answer: they're not going to want to automatically install external libraries to make hackage packages build |
2022-01-06 15:07:38 +0100 | <geekosaur> | even if they reliably could do so |
2022-01-06 15:08:33 +0100 | <lechner> | why does the documentation require the C library? |
2022-01-06 15:09:11 +0100 | <geekosaur> | because haddock is in effect a ghc plugin |
2022-01-06 15:09:39 +0100 | <int-e> | Ah I guess I could rewrite the lambda to (\(a,b) -> min a &&& max b) in the spirit of that specification. |
2022-01-06 15:09:56 +0100 | ubert | (~Thunderbi@p200300ecdf0994dbb267d7c5a67baed4.dip0.t-ipconnect.de) |
2022-01-06 15:11:01 +0100 | <geekosaur> | and in particular the parts of the Haskell library which interact with the C library won't compile and may not even parse without at least the C headers around |
2022-01-06 15:11:25 +0100 | <int-e> | @pl \ab -> min (fst ab) &&& max (snd ab) |
2022-01-06 15:11:25 +0100 | <lambdabot> | ap ((&&&) . min . fst) (max . snd) |
2022-01-06 15:12:16 +0100 | <geekosaur> | (example, the Haskell X11 libraries extract a bunch of defines from the C X11 header files and define bindings for them) |
2022-01-06 15:12:37 +0100 | <lechner> | are those used in the docs? |
2022-01-06 15:12:52 +0100 | <lechner> | i guess they could be |
2022-01-06 15:12:59 +0100 | <geekosaur> | they can be referenced |
2022-01-06 15:13:16 +0100 | <geekosaur> | even if they themselves do not have docstrings |
2022-01-06 15:13:27 +0100 | nhatanh02 | (~satori@123.24.172.30) |
2022-01-06 15:13:35 +0100 | <geekosaur> | you'll get better answers from #hackage but you'll probably like them even less |
2022-01-06 15:14:42 +0100 | <lechner> | from 40,000 feet, is it better (or even possible) to isolate haddock from ghc or should Hackage marry Debian? |
2022-01-06 15:14:45 +0100 | <geekosaur> | really, the easiest solution is to have the package maintainer upload their locally generated docs, and cabal makes this easy enough that they should have done so |
2022-01-06 15:15:06 +0100 | <geekosaur> | haddock used to be separate. it was a maintenance nightmare because the two were always out of sync |
2022-01-06 15:15:31 +0100 | <lechner> | Hackage could prevent publication without docs |
2022-01-06 15:15:49 +0100 | <lechner> | as cruel as it sounds |
2022-01-06 15:16:17 +0100 | <geekosaur> | I am again going to point you at #hackage. I am not #hackage |
2022-01-06 15:16:32 +0100 | <geekosaur> | but at the very least I think that prevents any win32-specific packages |
2022-01-06 15:16:32 +0100 | <lechner> | yeah, thanks for taking the timo |
2022-01-06 15:17:00 +0100 | <geekosaur> | and docs I think have to be uploaded in a separate step after thye package is uploaded |
2022-01-06 15:17:06 +0100 | <lechner> | i meant without docs uploaded separately |
2022-01-06 15:17:13 +0100 | <geekosaur> | (again #hackage would know more about this) |
2022-01-06 15:17:23 +0100 | <lechner> | yeah, and thanks! |
2022-01-06 15:17:56 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-06 15:20:56 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
2022-01-06 15:35:04 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2022-01-06 15:36:02 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 15:36:02 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 15:36:02 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 15:38:46 +0100 | <int-e> | Oh cool, I didn't know that data Foo = Bar :?: Baz (deriving Show) and data Foo = (:?:) Bar Baz result in different Show instances |
2022-01-06 15:39:18 +0100 | <int-e> | err, the second one was supposed to also derive (Show), and I messed up the parentheses. |
2022-01-06 15:41:03 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-06 15:44:05 +0100 | <geekosaur> | that's documented in the Report, I think |
2022-01-06 15:44:13 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-01-06 15:46:30 +0100 | vysn | (~vysn@user/vysn) |
2022-01-06 15:48:37 +0100 | vglfr | (~vglfr@88.155.23.34) (Ping timeout: 240 seconds) |
2022-01-06 15:49:59 +0100 | vglfr | (~vglfr@88.155.23.34) |
2022-01-06 15:51:16 +0100 | <int-e> | Yeah it kind of does (the language[1] around this could be clearer though; it says "If the constructor is defined to be an infix operator" which apparently is to be understood to refer to the "(infix conop)" production in[2] [1]https://www.haskell.org/onlinereport/haskell2010/haskellch11.html#x18-18600011.4 [2]https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-690004.2.1 |
2022-01-06 15:51:56 +0100 | <int-e> | anyway, I've read large parts of the report but I don't have it memorized :) |
2022-01-06 15:53:48 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
2022-01-06 15:57:31 +0100 | <lechner> | For those who read Czech, I think I found a copy of "Learn You A Haskell" http://naucte-se.haskell.cz/ |
2022-01-06 15:57:37 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 15:58:37 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 268 seconds) |
2022-01-06 16:06:24 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 16:06:24 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 16:06:24 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 16:07:41 +0100 | max22- | (~maxime@2a01cb088335980076b5f89708bbcdbc.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds) |
2022-01-06 16:09:39 +0100 | k` | (~user@152.1.137.158) |
2022-01-06 16:10:09 +0100 | <k`> | Does anyone have an example of application or library code using `stimes` ? |
2022-01-06 16:11:01 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 16:12:15 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
2022-01-06 16:13:32 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 16:13:32 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 16:13:32 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 16:13:42 +0100 | <merijn> | I used it for AoC :p |
2022-01-06 16:14:09 +0100 | <merijn> | k`: Any specific reason for the question? :p |
2022-01-06 16:16:43 +0100 | Hud | (~Hud@184-167-074-028.res.spectrum.com) (Quit: Client closed) |
2022-01-06 16:17:25 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 240 seconds) |
2022-01-06 16:18:17 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 16:18:23 +0100 | <k`> | merjin: Just curious whether it sees any use. Seems like a lot of work, thought, and lines of GHC core have gone into it. |
2022-01-06 16:19:52 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-06 16:21:06 +0100 | wyrd_ | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-06 16:21:20 +0100 | <merijn> | k`: Not that much, I think? It's handful of lines? |
2022-01-06 16:22:09 +0100 | <merijn> | And it's a pretty big jump in efficiency |
2022-01-06 16:22:33 +0100 | douglaswinship | (~douglaswi@78.40.148.180) |
2022-01-06 16:23:43 +0100 | <k`> | merjin: Oh yeah, no question there. Just wondering efficiency of _what_. |
2022-01-06 16:24:12 +0100 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) |
2022-01-06 16:24:43 +0100 | <merijn> | k`: If you did AoC, I did my first (naive) initial expansion by repeated application of the expansion function, using stimes to make that |
2022-01-06 16:24:52 +0100 | <merijn> | k`: (spoilers, obviously) https://github.com/merijn/AdventOfCode/blob/master/Day14.hs#L71-L78 |
2022-01-06 16:26:24 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 16:26:24 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 16:26:24 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 16:29:07 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-01-06 16:29:51 +0100 | <k`> | merijn: Oh, yeah, the `stimes n f x = stimes n (f x)` instance is neat and makes good use of the abstraction. |
2022-01-06 16:30:37 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 16:30:53 +0100 | <merijn> | Probably some kinda tree builder would too |
2022-01-06 16:30:59 +0100 | <k`> | I guess it could also improve the efficiency of folding a 'bag' structure. |
2022-01-06 16:31:03 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-06 16:32:25 +0100 | <merijn> | k`: Pretty sure the main reason stimes exists is because it's neat and fairly easy to implement, so might as well! And then leave it up to Semigroup users to find instances where it's useful :p |
2022-01-06 16:32:52 +0100 | <k`> | newtype Bag a = Bag [(Int, a)]; instance Foldable Bag where foldMap f (Bag xs) = foldMap (\ (n, x) -> stimes n (f x)) xs |
2022-01-06 16:33:14 +0100 | <merijn> | k`: Also, keep in mind that Semigroup was originally in a different library that "basically every possible operation/feature of semigroups you could think off" |
2022-01-06 16:33:58 +0100 | <merijn> | It was only moved into base fairly recently to make Semigroup a superclass of Monoid, but kept all the minor features so backwards compat is easier |
2022-01-06 16:34:16 +0100 | <k`> | merijn: Oh, did it start as one of ekmett's libraries? |
2022-01-06 16:34:48 +0100 | <merijn> | Yeah, in semigroups |
2022-01-06 16:35:56 +0100 | <k`> | Suddenly it all makes sense :P |
2022-01-06 16:36:05 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-01-06 16:36:52 +0100 | <merijn> | The module was just copy pasted into base and the original package changed to re-export the base module |
2022-01-06 16:37:07 +0100 | <k`> | Right, don't want to be disruptive. |
2022-01-06 16:37:10 +0100 | <geekosaur> | there's also the whole mathematical semigroup thing |
2022-01-06 16:38:00 +0100 | `2jt | (~jtomas@153.red-83-53-252.dynamicip.rima-tde.net) |
2022-01-06 16:38:23 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) |
2022-01-06 16:38:37 +0100 | <k`> | Honestly, though, I'd rather have `Semigroup` with methods like `commutative :: Maybe (Dict (Commutative a))` and `knownStrictFirst :: Proxy a -> Bool` . |
2022-01-06 16:39:00 +0100 | <k`> | Is that considered bad API design in Haskell? |
2022-01-06 16:41:10 +0100 | <k`> | `stimes | Just Dict <- idempotent :: Maybe (Dict (Idempotent a)) = .. | otherwise = ...` |
2022-01-06 16:42:16 +0100 | max22- | (~maxime@2a01cb0883359800b8731b08b5ca29d9.ipv6.abo.wanadoo.fr) |
2022-01-06 16:44:54 +0100 | <k`> | `foldMap f | knownStrictSecond (Proxy :: Proxy b) = foldl' (\ z x -> z <> f x) mempty | otherwise = foldr (\ x z -> f x <> z) mempty` |
2022-01-06 16:45:24 +0100 | <k`> | Is that all too kludgy? |
2022-01-06 16:45:25 +0100 | xff0x | (~xff0x@2001:1a81:5223:a300:3ef8:2137:a2ce:8bcc) (Ping timeout: 240 seconds) |
2022-01-06 16:46:08 +0100 | <merijn> | I think so? Doesn't seem to buy you much? |
2022-01-06 16:46:20 +0100 | <merijn> | k`: Like, what is it supposed to improve over the current thing? |
2022-01-06 16:46:25 +0100 | xff0x | (~xff0x@2001:1a81:5223:a300:e304:e5b3:98c9:ca79) |
2022-01-06 16:46:51 +0100 | <geekosaur> | one would suspect that if it were worth the effort ekmett would have already done it :) |
2022-01-06 16:46:52 +0100 | zincy_ | (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
2022-01-06 16:49:50 +0100 | <k`> | Fold with a commutative semigroup in the wrong direction and you can get massively worse performance for no reason at all. For example foldMapping a `Map` or `Set` to `Any` or `All` requires evaluating about half the map or set. But if you knew they were commutative, you could just fold with the dual on the appropriate half. |
2022-01-06 16:50:17 +0100 | <merijn> | k`: You can just do that yourself in the stimes definition, though? |
2022-01-06 16:50:32 +0100 | <k`> | Not talking about `stimes` here. |
2022-01-06 16:51:06 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-01-06 16:51:39 +0100 | <merijn> | tbh, I think that's not nearly frequent enough to incure the API complexity you suggest |
2022-01-06 16:52:57 +0100 | zincy_ | (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 240 seconds) |
2022-01-06 16:54:43 +0100 | <k`> | Assuming GHC always compiles `foldMap` of a strict semigroup to the equivalent of `foldMap'`, I agree. |
2022-01-06 16:56:39 +0100 | <k`> | Much like `stimes` it's complexity that you can ignore if you like. And there's not really code to get wrong. You just say `commutative = Just Dict` when you know it's commutative. Or `case commutative :: a of Just Dict -> Just Dict; Nothing -> Nothing`. |
2022-01-06 16:56:57 +0100 | vglfr | (~vglfr@88.155.23.34) (Ping timeout: 240 seconds) |
2022-01-06 16:57:15 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 16:57:20 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-06 16:58:07 +0100 | <k`> | But yeah, the benefit probably doesn't outweigh the complexity. |
2022-01-06 16:58:14 +0100 | mbuf | (~Shakthi@171.61.196.206) |
2022-01-06 17:03:37 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-06 17:04:30 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 17:04:30 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 17:04:30 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 17:07:19 +0100 | dsrt^ | (~dsrt@207.5.21.20) (Ping timeout: 256 seconds) |
2022-01-06 17:07:48 +0100 | uam | (uid360535@id-360535.hampstead.irccloud.com) |
2022-01-06 17:09:17 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 17:09:27 +0100 | spaceseller | (~spacesell@31.147.205.13) |
2022-01-06 17:10:28 +0100 | shapr | (~user@98.54.1.142) |
2022-01-06 17:11:32 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 240 seconds) |
2022-01-06 17:11:53 +0100 | zyzzyxdonta | (~zyzzyxdon@ip5f5aa13a.dynamic.kabel-deutschland.de) |
2022-01-06 17:12:11 +0100 | zyzzyxdonta | (~zyzzyxdon@ip5f5aa13a.dynamic.kabel-deutschland.de) () |
2022-01-06 17:12:30 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 17:12:30 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 17:12:30 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 17:16:32 +0100 | shapr | (~user@98.54.1.142) (Ping timeout: 256 seconds) |
2022-01-06 17:20:25 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-06 17:20:41 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
2022-01-06 17:21:10 +0100 | Vajb | (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) |
2022-01-06 17:21:17 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-01-06 17:22:45 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-01-06 17:24:23 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-06 17:24:58 +0100 | mmalter | (~mmalter@88.126.10.237) (Read error: Connection reset by peer) |
2022-01-06 17:25:37 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
2022-01-06 17:28:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 17:29:58 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 17:29:58 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 17:29:58 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 17:33:07 +0100 | sirlensalot | (~sirlensal@ool-44c5f8c9.dyn.optonline.net) |
2022-01-06 17:33:23 +0100 | dextaa | (~DV@user/dextaa) (Ping timeout: 256 seconds) |
2022-01-06 17:35:05 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 17:37:38 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) |
2022-01-06 17:41:37 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-01-06 17:41:42 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-06 17:47:52 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-01-06 17:48:21 +0100 | spaceseller | (~spacesell@31.147.205.13) (Quit: Leaving) |
2022-01-06 17:52:45 +0100 | Jing | (~hedgehog@2604:a840:3::103c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-06 17:54:48 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) |
2022-01-06 17:56:10 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-01-06 17:56:28 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-01-06 18:00:26 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4) |
2022-01-06 18:01:32 +0100 | coolnickname | (uid531864@user/coolnickname) (Quit: Connection closed for inactivity) |
2022-01-06 18:03:25 +0100 | shailangsa_ | (~shailangs@host86-162-150-202.range86-162.btcentralplus.com) (Ping timeout: 240 seconds) |
2022-01-06 18:04:35 +0100 | moshet | (~moshet@190.131.248.18) |
2022-01-06 18:05:07 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds) |
2022-01-06 18:09:12 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 18:09:12 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 18:09:12 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 18:13:52 +0100 | econo | (uid147250@user/econo) |
2022-01-06 18:13:55 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-06 18:14:11 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 18:16:43 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-06 18:19:03 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-06 18:19:49 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
2022-01-06 18:19:55 +0100 | widelec-BB | (~widelec@cpe-109-207-144-181.docsis.tczew.net.pl) |
2022-01-06 18:21:42 +0100 | dextaa | (~DV@user/dextaa) |
2022-01-06 18:26:57 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2022-01-06 18:37:58 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving) |
2022-01-06 18:38:33 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-06 18:40:49 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
2022-01-06 18:42:16 +0100 | simendsjo | (~user@84.211.91.241) |
2022-01-06 18:43:15 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-06 18:44:06 +0100 | vysn | (~vysn@user/vysn) |
2022-01-06 18:44:10 +0100 | python476 | (~user@88.160.31.174) |
2022-01-06 18:44:46 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection) |
2022-01-06 18:45:17 +0100 | machinedgod | (~machinedg@24.105.81.50) (Remote host closed the connection) |
2022-01-06 18:46:55 +0100 | emf | (~emf@2620:10d:c090:400::5:f0df) |
2022-01-06 18:48:21 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-01-06 18:48:24 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-01-06 18:48:39 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-01-06 18:48:53 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-06 19:00:37 +0100 | shailangsa | (~shailangs@host86-162-150-202.range86-162.btcentralplus.com) |
2022-01-06 19:00:48 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
2022-01-06 19:01:48 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) |
2022-01-06 19:02:00 +0100 | Feuermagier_ | (~Feuermagi@213.178.26.41) |
2022-01-06 19:02:16 +0100 | Feuermagier_ | (~Feuermagi@213.178.26.41) (Remote host closed the connection) |
2022-01-06 19:08:01 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 256 seconds) |
2022-01-06 19:08:29 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-01-06 19:08:47 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-01-06 19:11:50 +0100 | <polyphem> | /quit |
2022-01-06 19:11:53 +0100 | polyphem | (~rod@2a02:810d:640:776c:e450:3ca3:b389:687a) (Quit: WeeChat 3.3) |
2022-01-06 19:13:04 +0100 | polyphem | (~rod@2a02:810d:640:776c:e450:3ca3:b389:687a) |
2022-01-06 19:15:36 +0100 | benin | (~benin@183.82.176.241) (Quit: The Lounge - https://thelounge.chat) |
2022-01-06 19:17:18 +0100 | uam | (uid360535@id-360535.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-06 19:18:44 +0100 | mbuf | (~Shakthi@171.61.196.206) (Quit: Leaving) |
2022-01-06 19:22:20 +0100 | simendsjo | (~user@84.211.91.241) (Ping timeout: 256 seconds) |
2022-01-06 19:23:45 +0100 | neurocyte09 | (~neurocyte@user/neurocyte) (Read error: Connection reset by peer) |
2022-01-06 19:24:32 +0100 | neurocyte091 | (~neurocyte@IP-212232089218.dynamic.medianet-world.de) |
2022-01-06 19:24:32 +0100 | neurocyte091 | (~neurocyte@IP-212232089218.dynamic.medianet-world.de) (Changing host) |
2022-01-06 19:24:32 +0100 | neurocyte091 | (~neurocyte@user/neurocyte) |
2022-01-06 19:25:35 +0100 | xb0o2 | (~xb0o2@user/xb0o2) |
2022-01-06 19:27:04 +0100 | dsrt^ | (~dsrt@207.5.21.20) |
2022-01-06 19:27:15 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 19:29:21 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-01-06 19:38:37 +0100 | deadmarshal | (~deadmarsh@95.38.116.103) (Ping timeout: 240 seconds) |
2022-01-06 19:39:13 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 19:41:07 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-06 19:44:26 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 19:46:33 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-06 19:46:34 +0100 | <EvanR> | what is a good name for this operation, splitAt? :: SplitLocation -> T -> (T,T) such that cat the two results always equals the original |
2022-01-06 19:46:57 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
2022-01-06 19:47:38 +0100 | <monochrom> | splitAt is a good name. It's why it's already taken. :) |
2022-01-06 19:48:06 +0100 | <EvanR> | typeclass to the rescue |
2022-01-06 19:48:26 +0100 | emf | (~emf@2620:10d:c090:400::5:f0df) (Quit: emf) |
2022-01-06 19:50:35 +0100 | <EvanR> | class Monoid a => Split t a | a -> t where |
2022-01-06 19:50:45 +0100 | <EvanR> | Semigroup |
2022-01-06 19:51:25 +0100 | xlei | (~akans@pool-68-129-84-118.nycmny.fios.verizon.net) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-01-06 19:52:43 +0100 | xlei | (~akans@pool-68-129-84-118.nycmny.fios.verizon.net) |
2022-01-06 19:53:23 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
2022-01-06 19:56:37 +0100 | <EvanR> | splitAt :: t -> a -> (a,a) -- fst (splitAt t x) <> snd (splitAt t x) = x |
2022-01-06 19:57:07 +0100 | noddy | (~user@user/noddy) (Quit: WeeChat 3.4) |
2022-01-06 19:57:52 +0100 | widelec-BB | (~widelec@cpe-109-207-144-181.docsis.tczew.net.pl) (Quit: ) |
2022-01-06 19:58:38 +0100 | <EvanR> | > splitAt 3 [0..9] |
2022-01-06 19:58:39 +0100 | <lambdabot> | ([0,1,2],[3,4,5,6,7,8,9]) |
2022-01-06 19:58:44 +0100 | <EvanR> | ok good |
2022-01-06 20:01:10 +0100 | widelec-BB | (~widelec@cpe-109-207-144-181.docsis.tczew.net.pl) |
2022-01-06 20:01:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 20:02:18 +0100 | noddy | (~user@user/noddy) |
2022-01-06 20:03:25 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-01-06 20:04:16 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2022-01-06 20:05:57 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-06 20:06:32 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-06 20:10:08 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection) |
2022-01-06 20:13:37 +0100 | cheater | (~Username@user/cheater) |
2022-01-06 20:16:25 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |
2022-01-06 20:17:12 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-06 20:17:35 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-06 20:23:25 +0100 | jespada | (~jespada@87.74.32.18) (Read error: Connection reset by peer) |
2022-01-06 20:23:37 +0100 | jespada_ | (~jespada@87.74.32.18) |
2022-01-06 20:24:56 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) |
2022-01-06 20:25:54 +0100 | <EvanR> | shoot the semigroup doesn't always correspond to cat |
2022-01-06 20:27:56 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-01-06 20:29:27 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-06 20:30:17 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-06 20:38:10 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2022-01-06 20:42:34 +0100 | simendsjo | (~user@84.211.91.241) |
2022-01-06 20:52:37 +0100 | moshet | (~moshet@190.131.248.18) (Ping timeout: 240 seconds) |
2022-01-06 20:59:14 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
2022-01-06 21:05:28 +0100 | juhp | (~juhp@128.106.188.82) (Ping timeout: 256 seconds) |
2022-01-06 21:07:06 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection) |
2022-01-06 21:07:27 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
2022-01-06 21:08:11 +0100 | juhp | (~juhp@128.106.188.82) |
2022-01-06 21:15:35 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 21:15:35 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 21:15:35 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 21:16:08 +0100 | <EvanR> | is there a more efficient ordering for IntMap.intersection if one of the IntMaps is very small or empty |
2022-01-06 21:16:32 +0100 | kuribas | (~user@ptr-25vy0i9v3nmgstpk1ug.18120a2.ip6.access.telenet.be) |
2022-01-06 21:17:36 +0100 | <EvanR> | in lambdabot I think I'm observing no |
2022-01-06 21:18:53 +0100 | <lechner> | Hi, with this code receiving and sending ZeroMQ traffic, I eventually see "file descriptor 1024 out of range for select (0--1024). Recompile with -threaded to work around this." dsal once said there was an issue with the "finalizer". Am I running out of file descriptors? Thanks! https://paste.tomsmeding.com/8ofcOqTl |
2022-01-06 21:19:57 +0100 | <EvanR> | oof |
2022-01-06 21:20:11 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-01-06 21:20:30 +0100 | <EvanR> | (compiling WITHOUT -threaded is kind of suspicious imho) |
2022-01-06 21:21:11 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 21:21:41 +0100 | <monochrom> | EvanR: The doc says "O(m+n)" so I don't think there is a difference between "intersect x y" and "intersect y x". |
2022-01-06 21:22:39 +0100 | <EvanR> | > IM.intersect IM.empty IM.empty |
2022-01-06 21:22:40 +0100 | <lambdabot> | error: |
2022-01-06 21:22:40 +0100 | <lambdabot> | Not in scope: ‘IM.intersect’ |
2022-01-06 21:22:40 +0100 | <lambdabot> | Perhaps you meant ‘IM.intersection’ (imported from Data.IntMap) |
2022-01-06 21:22:45 +0100 | <EvanR> | > IM.intersection IM.empty IM.empty |
2022-01-06 21:22:46 +0100 | <lambdabot> | fromList [] |
2022-01-06 21:22:50 +0100 | <EvanR> | > IM.intersection IM.empty (IM.fromList (zip [0..] [0.100000000])) |
2022-01-06 21:22:51 +0100 | <lambdabot> | fromList [] |
2022-01-06 21:23:03 +0100 | <EvanR> | fast... I hope |
2022-01-06 21:27:50 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-01-06 21:27:50 +0100 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2022-01-06 21:28:08 +0100 | <monochrom> | That one is probably hand-coded :) |
2022-01-06 21:28:19 +0100 | <monochrom> | > IM.intersection IM.empty undefined |
2022-01-06 21:28:20 +0100 | <lambdabot> | fromList [] |
2022-01-06 21:28:31 +0100 | <EvanR> | > IM.intersection (IM.singleton (4,9)) (IM.fromList (zip [0..] [0.100000000])) |
2022-01-06 21:28:32 +0100 | <lambdabot> | error: |
2022-01-06 21:28:32 +0100 | <lambdabot> | • Couldn't match expected type ‘IM.IntMap a’ |
2022-01-06 21:28:32 +0100 | <lambdabot> | with actual type ‘a0 -> IM.IntMap a0’ |
2022-01-06 21:28:39 +0100 | <EvanR> | > IM.intersection (IM.singleton 4 9) (IM.fromList (zip [0..] [0.100000000])) |
2022-01-06 21:28:40 +0100 | <lambdabot> | fromList [] |
2022-01-06 21:29:01 +0100 | <monochrom> | That can't be right... |
2022-01-06 21:29:06 +0100 | <EvanR> | wut |
2022-01-06 21:30:42 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-01-06 21:30:51 +0100 | <travv0> | > > IM.fromList (zip [0..] [0.100000000]) |
2022-01-06 21:30:52 +0100 | <lambdabot> | <hint>:1:1: error: parse error on input ‘>’ |
2022-01-06 21:30:57 +0100 | <travv0> | > IM.fromList (zip [0..] [0.100000000]) |
2022-01-06 21:30:58 +0100 | <lambdabot> | fromList [(0,0.1)] |
2022-01-06 21:31:03 +0100 | <travv0> | was that intentional? |
2022-01-06 21:31:11 +0100 | <monochrom> | Oh haha, good eyes. |
2022-01-06 21:31:12 +0100 | <EvanR> | no |
2022-01-06 21:31:14 +0100 | <EvanR> | wth |
2022-01-06 21:31:50 +0100 | <EvanR> | > IM.intersection IM.empty (IM.fromList (zip [0..] [0..100000000])) |
2022-01-06 21:31:51 +0100 | <lambdabot> | fromList [] |
2022-01-06 21:32:04 +0100 | <EvanR> | > IM.intersection (IM.singleton 4 9) (IM.fromList (zip [0..] [0..100000000])) |
2022-01-06 21:32:09 +0100 | <EvanR> | dammit |
2022-01-06 21:32:10 +0100 | <lambdabot> | mueval-core: Time limit exceeded |
2022-01-06 21:32:15 +0100 | <xerox> | [0.100000] is the break;break; of haskell |
2022-01-06 21:33:28 +0100 | gentauro | (~gentauro@user/gentauro) |
2022-01-06 21:34:15 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 21:34:24 +0100 | <EvanR> | I guess in the case of small intmap it's better to use a mapWithKey and lookup |
2022-01-06 21:35:49 +0100 | python476 | (~user@88.160.31.174) (Ping timeout: 240 seconds) |
2022-01-06 21:39:17 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 21:43:11 +0100 | <dmj`> | are there no ffi bindings to libc? |
2022-01-06 21:44:22 +0100 | <Hecate> | gnu libc? sweet hell you don't want that :') |
2022-01-06 21:44:42 +0100 | <polyphem> | strcpy is nice |
2022-01-06 21:44:43 +0100 | deadmarshal | (~deadmarsh@95.38.116.103) |
2022-01-06 21:44:53 +0100 | <EvanR> | it's pretty easy to ffi bind individual standard c functions |
2022-01-06 21:45:13 +0100 | <EvanR> | if you need 1 or 2 |
2022-01-06 21:45:55 +0100 | <EvanR> | I can't wait until my haskell program has security hole due to strcpy xD |
2022-01-06 21:54:15 +0100 | cosimone | (~user@93-47-228-11.ip115.fastwebnet.it) (Remote host closed the connection) |
2022-01-06 21:58:06 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-06 21:59:04 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-06 22:01:01 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds) |
2022-01-06 22:02:06 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-01-06 22:03:16 +0100 | pavonia | (~user@user/siracusa) |
2022-01-06 22:04:23 +0100 | simendsjo | (~user@84.211.91.241) (Ping timeout: 256 seconds) |
2022-01-06 22:04:37 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-01-06 22:04:44 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-06 22:06:04 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-06 22:10:28 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-01-06 22:11:03 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-06 22:13:26 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2022-01-06 22:14:08 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-01-06 22:14:35 +0100 | nhatanh02 | (~satori@123.24.172.30) (Ping timeout: 256 seconds) |
2022-01-06 22:15:25 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-01-06 22:15:32 +0100 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-06 22:16:59 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection) |
2022-01-06 22:20:09 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-06 22:22:38 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-06 22:22:51 +0100 | `2jt | (~jtomas@153.red-83-53-252.dynamicip.rima-tde.net) (Remote host closed the connection) |
2022-01-06 22:25:02 +0100 | <fendor[m]> | I miss the bot that reported that a library had a new release ☹️ |
2022-01-06 22:25:23 +0100 | <int-e> | that was hackagebot, hmm |
2022-01-06 22:26:16 +0100 | <int-e> | (maybe I misremember the nick) |
2022-01-06 22:26:25 +0100 | <geekosaur> | it was hackagebot |
2022-01-06 22:26:29 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2022-01-06 22:26:44 +0100 | <geekosaur> | vanished maybe a month before freenode blew up |
2022-01-06 22:27:30 +0100 | emf | (~emf@2620:10d:c090:400::5:9fd9) |
2022-01-06 22:28:30 +0100 | <geekosaur> | always reported with /me, iirc |
2022-01-06 22:32:10 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-06 22:32:14 +0100 | cheater | (~Username@user/cheater) |
2022-01-06 22:34:48 +0100 | k` | (~user@152.1.137.158) (Remote host closed the connection) |
2022-01-06 22:35:10 +0100 | dudek | (~dudek@185.150.236.156) |
2022-01-06 22:37:21 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-06 22:38:37 +0100 | <dmj`> | If GHC lost existential types, how sorely would they be missed |
2022-01-06 22:39:16 +0100 | <maralorn> | What is the most common List/Seq like datatype which is strict in the elements? |
2022-01-06 22:39:33 +0100 | <Heffalump[m]> | dmj': Lose what exactly? Just the exists keyword, or existentials via GADTs? |
2022-01-06 22:40:38 +0100 | <Cale> | Or like, the syntax that uses forall in a data declaration outside a constructor? |
2022-01-06 22:41:25 +0100 | benin | (~benin@183.82.176.241) |
2022-01-06 22:41:57 +0100 | <Cale> | We get a decent amount of use out of Some. |
2022-01-06 22:42:03 +0100 | <Cale> | (i.e. https://hackage.haskell.org/package/some-1.0.3/docs/Data-Some.html ) |
2022-01-06 22:42:23 +0100 | <Cale> | Ironically, it's not defined using existentials :D |
2022-01-06 22:43:15 +0100 | <EvanR> | oh nice |
2022-01-06 22:43:29 +0100 | <Cale> | (It originally was, but was changed to be a newtype along with pattern synonyms that safely unsafeCoerce) |
2022-01-06 22:45:03 +0100 | <Cale> | But the only reason for that is that you're not allowed to define existential newtypes in GHC for no particular reason |
2022-01-06 22:47:37 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 22:47:37 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 22:47:37 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 22:48:05 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds) |
2022-01-06 22:48:44 +0100 | <EvanR> | I just ran into that, it's very annoying |
2022-01-06 22:48:47 +0100 | acidjnk_new3 | (~acidjnk@p200300d0c7271e249cd77df40fde183d.dip0.t-ipconnect.de) |
2022-01-06 22:48:51 +0100 | acidjnk | (~acidjnk@p200300d0c7271e249cd77df40fde183d.dip0.t-ipconnect.de) |
2022-01-06 22:48:57 +0100 | <EvanR> | I see you can get around it with GHC.Any |
2022-01-06 22:50:37 +0100 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2022-01-06 22:50:46 +0100 | <Cale> | Of course, if you need a class dictionary packed in there, that's not possible with a newtype |
2022-01-06 22:53:42 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-01-06 22:56:13 +0100 | <monochrom> | If GHC lost existential types, we would restore it with rank-2 types. |
2022-01-06 22:56:23 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
2022-01-06 22:57:06 +0100 | <monochrom> | I don't think of existential typing as an anti-pattern, but even if you do, a direct anti-pattern is still less bad than an encoded anti-pattern. |
2022-01-06 22:57:54 +0100 | <xerox> | not an existential threat |
2022-01-06 22:58:09 +0100 | <monochrom> | haha |
2022-01-06 23:00:52 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2022-01-06 23:13:25 +0100 | shapr | (~user@2601:7c0:c202:5190:e39f:2980:57ec:6939) |
2022-01-06 23:14:55 +0100 | <dmj`> | Cale, Heffalump[m]: I think if we lost existentials, it'd be a loss of existential quantification, existentials introduced via GADTs, polymorphic recursion and maybe RankNTypes too ... |
2022-01-06 23:15:06 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-01-06 23:15:28 +0100 | <Heffalump[m]> | dmj`: I'd be very very unhappy then :-) |
2022-01-06 23:16:02 +0100 | <dmj`> | Heffalump[m]: on a scale of 1-10, how unhappy would you be |
2022-01-06 23:17:39 +0100 | <geekosaur> | don't we lose IO then? (IO being built on top of ST which uses an existential) |
2022-01-06 23:17:45 +0100 | <shapr> | dmj`: existential crisis? |
2022-01-06 23:18:08 +0100 | <geekosaur> | yeh, methinks this sounds like sa very violent reaction to something |
2022-01-06 23:19:04 +0100 | <dmj`> | geekosaur: didn't we have I/O before existentials? I don't see them in the haskell 2010 report at least. |
2022-01-06 23:19:11 +0100 | <dmj`> | maybe I'm blind though |
2022-01-06 23:19:51 +0100 | <Heffalump[m]> | I don't think GHC's implementation of the Prelude has ever been pure H98/H2010. It is entitled to use extensions (or the old "-fglasgow-exts") internally to its own libraries. |
2022-01-06 23:20:03 +0100 | <monochrom> | runST needs rank-2 or existential. But IO does not have to go through ST. |
2022-01-06 23:22:39 +0100 | <geekosaur> | I guess IO is the same machinery but uses a non-existential in place of the existential |
2022-01-06 23:22:57 +0100 | <geekosaur> | this still sounds pretty violent to me |
2022-01-06 23:25:05 +0100 | <monochrom> | If you lose rank-2, then you lose "(Functor f, Monad g) => (forall x. f x -> g x) -> Free f a -> g a", which is a very important thing for free monads. |
2022-01-06 23:25:44 +0100 | <monochrom> | You lose all of lens and optics etc. |
2022-01-06 23:25:49 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-06 23:27:34 +0100 | <monochrom> | "violent" is not the first response that comes to my mind, but "dumbing down", "watering down", "back to stone age" is. |
2022-01-06 23:27:41 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-06 23:27:51 +0100 | <dmj`> | monochrom: It might be possible to retain RankNTypes w/o existentials... but one could argue lens and optics were solutions to get around GHC's record system lacking row polymorphism. |
2022-01-06 23:28:25 +0100 | <dmj`> | monochrom: but yea, you'd lose monad morphism libraries |
2022-01-06 23:29:37 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-06 23:31:28 +0100 | xb0o2 | (~xb0o2@user/xb0o2) (Quit: Client closed) |
2022-01-06 23:31:37 +0100 | <monochrom> | "data X = forall a. MkX foo" ≅ "newtype Y = MkY (forall r. (forall a. foo -> r) -> r)" |
2022-01-06 23:32:20 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 23:33:52 +0100 | <dmj`> | existentials also block monomorphization from happening iiuc |
2022-01-06 23:37:36 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-06 23:37:36 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-06 23:37:36 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-06 23:38:42 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-01-06 23:41:09 +0100 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 256 seconds) |
2022-01-06 23:41:48 +0100 | <dmj`> | monochrom: oh okay, maybe not then |
2022-01-06 23:42:26 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-06 23:43:55 +0100 | <dmj`> | existentials inhibit type inference too |
2022-01-06 23:44:28 +0100 | <[itchyjunk]> | Is a list of empty tupils represented as [(,)] ? or just [] |
2022-01-06 23:44:46 +0100 | <geekosaur> | [] like any other empty list |
2022-01-06 23:44:54 +0100 | <[itchyjunk]> | makes sense |
2022-01-06 23:45:02 +0100 | <geekosaur> | (,) is a tuple constructor |
2022-01-06 23:45:04 +0100 | <geekosaur> | :t (,) |
2022-01-06 23:45:06 +0100 | <lambdabot> | a -> b -> (a, b) |
2022-01-06 23:45:08 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-06 23:45:15 +0100 | <Heffalump[m]> | what exactly do you mean by "empty tuple"? Do you mean "List of empty tuples" or "Empty list of tuples"? |
2022-01-06 23:46:59 +0100 | <kuribas> | [itchyjunk]: the type or the value? |
2022-01-06 23:47:09 +0100 | <[itchyjunk]> | the value |
2022-01-06 23:47:37 +0100 | deadmarshal | (~deadmarsh@95.38.116.103) (Ping timeout: 240 seconds) |
2022-01-06 23:47:42 +0100 | <kuribas> | [] is a an empty list of tuples. |
2022-01-06 23:48:00 +0100 | <kuribas> | I don't know what an "empty tuple" is. |
2022-01-06 23:48:02 +0100 | <dmj`> | shapr: it would be an existential crisis :) |
2022-01-06 23:48:05 +0100 | <geekosaur> | () |
2022-01-06 23:48:47 +0100 | <monochrom> | The empty tuple is (), aka unit. |
2022-01-06 23:49:05 +0100 | <monochrom> | [(), (), (), ()] is an example list of empty tuples. |
2022-01-06 23:49:14 +0100 | <[itchyjunk]> | this seems to work but i am unsure about sizes of [a] [b] |
2022-01-06 23:49:15 +0100 | <[itchyjunk]> | https://bpa.st/GWEQ |
2022-01-06 23:49:24 +0100 | <monochrom> | Not to be confused with empty list of tuples. |
2022-01-06 23:49:24 +0100 | <[itchyjunk]> | Do I just assume the size provided is always equal? |
2022-01-06 23:49:52 +0100 | <geekosaur> | try it out with both the Prelude's zip and yours |
2022-01-06 23:50:05 +0100 | kuribas | (~user@ptr-25vy0i9v3nmgstpk1ug.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2022-01-06 23:50:16 +0100 | <geekosaur> | (you can make a smallish change which removes that requirement) |
2022-01-06 23:50:25 +0100 | <[itchyjunk]> | uh my breaks , but the zip works |
2022-01-06 23:51:04 +0100 | <[itchyjunk]> | i think i know, myZip [a] [] amd myZip [] [b] should be addressed mamybe |
2022-01-06 23:51:17 +0100 | <geekosaur> | almost |
2022-01-06 23:51:26 +0100 | <geekosaur> | [a] matches the 1-item list |
2022-01-06 23:51:42 +0100 | <[itchyjunk]> | ah |
2022-01-06 23:51:56 +0100 | <[itchyjunk]> | myZip x [] and myZip [] y maybe |
2022-01-06 23:52:06 +0100 | <geekosaur> | yes |
2022-01-06 23:52:23 +0100 | <geekosaur> | and for the final trick, most of us would write _ in place of the binding that won't be used |
2022-01-06 23:52:23 +0100 | <Inst> | can i have some haskell help with a really stupid example? |
2022-01-06 23:52:33 +0100 | <[itchyjunk]> | hurrah, myZip = Zip now, i think |
2022-01-06 23:52:45 +0100 | <geekosaur> | Inst, don't ask to ask, just ask |
2022-01-06 23:52:55 +0100 | <[itchyjunk]> | ah myZip _ [] = [] |
2022-01-06 23:53:01 +0100 | <Inst> | quicksort a@(x:xs) = ((if null a then [] else quicksort [ k | k <- xs , k <= x ] ++ [x] ++ quicksort [k | k <- xs , k>x]) :: Ord a => [a]) |
2022-01-06 23:53:07 +0100 | <Inst> | this isn't typechecking properly |
2022-01-06 23:53:59 +0100 | <Inst> | so i know you can force a type signature on a specific expression |
2022-01-06 23:54:01 +0100 | <Inst> | https://cdn.discordapp.com/attachments/505367988166197268/928781846425247795/unknown.png |
2022-01-06 23:54:22 +0100 | <Inst> | but this is really complex, 1, 2, it's not working with an inline type signature |
2022-01-06 23:54:26 +0100 | <geekosaur> | you can but it doesn't generally do what you think |
2022-01-06 23:54:33 +0100 | <Inst> | why not? |
2022-01-06 23:54:54 +0100 | <Inst> | EvanR, might you be interested in helping? |
2022-01-06 23:55:01 +0100 | <geekosaur> | the `a` you use there is not related to any other `a` and in particuloar not to one in your type signature if any |
2022-01-06 23:55:24 +0100 | <geekosaur> | (unless you use ScopedTypeVariables and "declare" the type variables as shared) |
2022-01-06 23:56:21 +0100 | <geekosaur> | so basically6 you can use type ascriptions anywhere but they're not very useful unless concrete, i.e. no type variables |
2022-01-06 23:56:30 +0100 | <Inst> | i took the type signature out, i'm just treating it as an exercise to figure out how to arbitrarily jam type signatures |
2022-01-06 23:56:43 +0100 | <Inst> | okay, hold on |
2022-01-06 23:56:53 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-01-06 23:57:26 +0100 | <Inst> | it works if i force Int |
2022-01-06 23:58:21 +0100 | <geekosaur> | right |
2022-01-06 23:58:31 +0100 | <Inst> | why is this, geekosaur? I really don't get why Haskell wants to be this way |
2022-01-06 23:58:43 +0100 | <geekosaur> | because that's how it was defined |
2022-01-06 23:59:06 +0100 | <geekosaur> | there are a bunch of people who wish it hadn't been, but that's what happened. you need an extension and a forall to change it |
2022-01-06 23:59:15 +0100 | <geekosaur> | I already mentioed the extension above |
2022-01-06 23:59:15 +0100 | <Inst> | no, but wouldn't it be more flexible if you could use the 5 liner bubblesort and have it be completely complete, including through the use of a type variable type signature? |
2022-01-06 23:59:22 +0100 | <Inst> | i see |
2022-01-06 23:59:25 +0100 | <Inst> | i don't really understand |
2022-01-06 23:59:53 +0100 | <monochrom> | You can always write a top-level type sig, instead of local type sigs. |