2022/01/06

2022-01-06 00:02:07 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-01-06 00:02:33 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-06 00:02:34 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-06 00:05:16 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-01-06 00:06:09 +0100mud(~mud@user/kadoban)
2022-01-06 00:08:13 +0100Inst(~delicacie@2601:6c4:4080:3f80:6819:92d4:93fc:ed3b)
2022-01-06 00:09:22 +0100jushur(~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 +0100Tuplanolla(~Tuplanoll@91-159-69-90.elisa-laajakaista.fi) (Quit: Leaving.)
2022-01-06 00:12:53 +0100shapr(~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 +0100Pickchea(~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 +0100Inst(~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 +0100justIrresolute(~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 +0100wroathe(~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 +0100eggplantade(~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 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 00:25:25 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 00:25:25 +0100wroathe(~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 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 00:29:59 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-06 00:30:44 +0100 <Axman6> that was me
2022-01-06 00:31:49 +0100Midjak(~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 +0100notzmv(~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 +0100kupi(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 +0100CiaoSen(~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 +0100max22-(~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 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-06 01:00:43 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-01-06 01:02:25 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2022-01-06 01:02:59 +0100merijn(~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 +0100little_mac(~little_ma@2601:410:4300:3ce0:54a9:bec8:b650:a634) (Remote host closed the connection)
2022-01-06 01:10:47 +0100little_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 +0100geekosaurfeels 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 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 01:22:55 +0100x_kuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-01-06 01:23:17 +0100acidjnk(~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-01-06 01:23:17 +0100acidjnk_new(~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-01-06 01:25:39 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-06 01:32:13 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
2022-01-06 01:36:36 +0100cheater(~Username@user/cheater)
2022-01-06 01:44:10 +0100little_mac(~little_ma@2601:410:4300:3ce0:1c52:e548:30d:e414) (Remote host closed the connection)
2022-01-06 01:48:02 +0100cheater(~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 +0100cheater1__(~Username@user/cheater)
2022-01-06 01:48:12 +0100cheater1__cheater
2022-01-06 01:53:56 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-06 01:55:57 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-01-06 01:56:37 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2022-01-06 01:58:03 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 01:58:03 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 01:58:03 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 01:59:17 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-06 01:59:18 +0100mvk(~mvk@2607:fea8:5cdd:f000::45db)
2022-01-06 02:02:41 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-01-06 02:03:20 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-01-06 02:05:11 +0100BrokenClutch(~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e)
2022-01-06 02:06:35 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-01-06 02:07:27 +0100jgeerds(~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 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 02:13:43 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 02:14:46 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2022-01-06 02:15:42 +0100noddy(~user@user/noddy) (Quit: WeeChat 3.4)
2022-01-06 02:20:44 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-01-06 02:21:17 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2022-01-06 02:26:40 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-01-06 02:27:44 +0100kaph_(~kaph@net-2-38-107-19.cust.vodafonedsl.it)
2022-01-06 02:33:56 +0100Codaraxis(~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 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 02:44:52 +0100 <EvanR> oh, now I gotta click
2022-01-06 02:45:37 +0100notzmv(~zmv@user/notzmv)
2022-01-06 02:45:59 +0100jespada(~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 +0100jespada(~jespada@87.74.32.18)
2022-01-06 02:48:36 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2022-01-06 02:48:39 +0100azimut_(~azimut@gateway/tor-sasl/azimut)
2022-01-06 02:48:49 +0100lavaman(~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 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 02:56:22 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.4)
2022-01-06 03:00:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 03:00:50 +0100mmhat(~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 +0100tinwood(~tinwood@canonical/tinwood) (Remote host closed the connection)
2022-01-06 03:11:18 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-06 03:11:29 +0100tinwood(~tinwood@general.default.akavanagh.uk0.bigv.io)
2022-01-06 03:11:29 +0100tinwood(~tinwood@general.default.akavanagh.uk0.bigv.io) (Changing host)
2022-01-06 03:11:29 +0100tinwood(~tinwood@canonical/tinwood)
2022-01-06 03:16:45 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-06 03:16:46 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-01-06 03:17:34 +0100califax-(~califax@user/califx)
2022-01-06 03:17:35 +0100pottsy(~pottsy@129.227.183.244) (Quit: Leaving)
2022-01-06 03:21:45 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-01-06 03:21:45 +0100califax-califax
2022-01-06 03:26:13 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-01-06 03:27:17 +0100xff0x(~xff0x@2001:1a81:53e7:b00:f827:c356:f4f8:aa66) (Ping timeout: 240 seconds)
2022-01-06 03:28:21 +0100xff0x(~xff0x@2001:1a81:53e7:b00:ae4:d336:6060:937f)
2022-01-06 03:29:16 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-06 03:32:22 +0100neurocyte091(~neurocyte@IP-212232089218.dynamic.medianet-world.de)
2022-01-06 03:32:22 +0100neurocyte091(~neurocyte@IP-212232089218.dynamic.medianet-world.de) (Changing host)
2022-01-06 03:32:22 +0100neurocyte091(~neurocyte@user/neurocyte)
2022-01-06 03:34:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-06 03:34:51 +0100neurocyte09(~neurocyte@user/neurocyte) (Ping timeout: 256 seconds)
2022-01-06 03:34:52 +0100neurocyte091neurocyte09
2022-01-06 03:36:46 +0100xff0x(~xff0x@2001:1a81:53e7:b00:ae4:d336:6060:937f) (Ping timeout: 268 seconds)
2022-01-06 03:37:07 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 03:38:16 +0100vysn(~vysn@user/vysn)
2022-01-06 03:38:32 +0100xff0x(~xff0x@2001:1a81:5223:a300:9deb:66dd:70e6:c22a)
2022-01-06 03:52:59 +0100Inst(~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 +0100noddy(~user@user/noddy)
2022-01-06 04:01:14 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-01-06 04:02:03 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-01-06 04:02:52 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-01-06 04:04:06 +0100puke(~puke@user/puke) (Quit: puke)
2022-01-06 04:08:25 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 04:19:27 +0100kaph_(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-01-06 04:19:29 +0100Erutuon(~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 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-06 04:41:23 +0100mbuf(~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 +0100td_(~td@94.134.91.82) (Ping timeout: 256 seconds)
2022-01-06 04:50:06 +0100td_(~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 +0100mvk(~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 +0100noddy(~user@user/noddy) (Quit: WeeChat 3.4)
2022-01-06 05:03:32 +0100noddy(~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 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-06 05:08:40 +0100hyiltiz(~quassel@31.220.5.250)
2022-01-06 05:10:00 +0100mtjm(~mutantmel@2604:a880:2:d0::208b:d001)
2022-01-06 05:16:09 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 256 seconds)
2022-01-06 05:17:23 +0100hyiltiz(~quassel@31.220.5.250) (Quit: hyiltiz)
2022-01-06 05:18:10 +0100hyiltiz(~quassel@31.220.5.250)
2022-01-06 05:20:05 +0100hyiltiz(~quassel@31.220.5.250) (Client Quit)
2022-01-06 05:22:37 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-01-06 05:30:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 05:30:21 +0100deadmarshal(~deadmarsh@95.38.116.103)
2022-01-06 05:30:37 +0100xff0x(~xff0x@2001:1a81:5223:a300:9deb:66dd:70e6:c22a) (Ping timeout: 240 seconds)
2022-01-06 05:31:42 +0100xff0x(~xff0x@2001:1a81:5223:a300:d0e9:99bd:8a63:7db6)
2022-01-06 05:32:13 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net) (Quit: sirlensalot)
2022-01-06 05:32:13 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:32:29 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:32:36 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:32:49 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:32:57 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:33:04 +0100hyiltiz(~quassel@31.220.5.250)
2022-01-06 05:33:12 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:33:18 +0100hyiltiz(~quassel@31.220.5.250) (Client Quit)
2022-01-06 05:33:19 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:33:26 +0100hyiltiz(~quassel@31.220.5.250)
2022-01-06 05:33:33 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:33:41 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:33:55 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:34:02 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:34:18 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:34:25 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:34:41 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:34:49 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:35:03 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:35:11 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:35:25 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:35:32 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:35:48 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:35:56 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:36:11 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:36:19 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:36:37 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:36:44 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:36:59 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:37:06 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:37:20 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:37:28 +0100Jing(~hedgehog@2604:a840:3::103c)
2022-01-06 05:37:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:37:42 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:37:49 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:37:57 +0100hyiltiz(~quassel@31.220.5.250) (Ping timeout: 240 seconds)
2022-01-06 05:38:04 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:38:11 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:38:25 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:38:33 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:38:48 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:38:54 +0100hyiltiz(~quassel@31.220.5.250)
2022-01-06 05:38:55 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:39:10 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:39:17 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:39:31 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:39:38 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:39:54 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:40:01 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:40:16 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:40:23 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:40:38 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:40:45 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:41:00 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:41:07 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:41:23 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:41:30 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:41:45 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:41:52 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-06 05:42:06 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 05:42:14 +0100lavaman(~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 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2022-01-06 05:48:32 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2022-01-06 05:49:34 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-01-06 05:53:31 +0100benin9(~benin@183.82.176.241)
2022-01-06 05:54:37 +0100benin(~benin@183.82.176.241) (Ping timeout: 240 seconds)
2022-01-06 05:54:37 +0100benin9benin
2022-01-06 05:56:11 +0100shapr(~user@2601:7c0:c202:5190:cc66:94d5:eb1a:5dfe)
2022-01-06 06:04:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2022-01-06 06:05:18 +0100hyiltiz(~quassel@31.220.5.250) (Quit: hyiltiz)
2022-01-06 06:07:37 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds)
2022-01-06 06:09:04 +0100SpencerJanssen[m(~sjanssenm@2001:470:69fc:105::1:61d8)
2022-01-06 06:13:54 +0100BrokenClutch(~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) ()
2022-01-06 06:15:37 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
2022-01-06 06:25:05 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-01-06 06:26:34 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2022-01-06 06:27:28 +0100emf_(~emf@c-73-97-137-43.hsd1.wa.comcast.net)
2022-01-06 06:28:19 +0100emf_(~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit)
2022-01-06 06:28:37 +0100emf(~emf@2620:10d:c090:400::5:c06d) (Ping timeout: 240 seconds)
2022-01-06 06:34:11 +0100deadmarshal(~deadmarsh@95.38.116.103) (Quit: ZNC 1.8.2 - https://znc.in)
2022-01-06 06:34:28 +0100deadmarshal(~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 +0100geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 256 seconds)
2022-01-06 06:42:51 +0100fcc977(~kaph@net-2-38-107-19.cust.vodafonedsl.it)
2022-01-06 06:42:55 +0100fcc977(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Remote host closed the connection)
2022-01-06 06:43:12 +0100kaph(~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 +0100juhp(~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 +0100xlei(~akans@pool-68-129-84-118.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-01-06 06:53:36 +0100xlei(~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 +0100hyiltiz(~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 +0100hyiltiz(~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 +0100wroathe(~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 +0100whatsupdoc(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 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 07:34:58 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 07:34:58 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 07:38:31 +0100hyiltiz(~quassel@31.220.5.250)
2022-01-06 07:39:31 +0100wroathe(~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 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2022-01-06 07:55:42 +0100juhp(~juhp@128.106.188.82)
2022-01-06 08:00:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 08:10:37 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 240 seconds)
2022-01-06 08:10:41 +0100hyiltiz(~quassel@31.220.5.250) (Ping timeout: 256 seconds)
2022-01-06 08:11:53 +0100emf(~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 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 08:14:55 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-06 08:15:06 +0100hyiltiz(~quassel@31.220.5.250)
2022-01-06 08:18:03 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2022-01-06 08:18:11 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-06 08:19:05 +0100Jing(~hedgehog@2604:a840:3::103c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-06 08:21:08 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2022-01-06 08:21:34 +0100cheater(~Username@user/cheater)
2022-01-06 08:21:57 +0100shapr(~user@2601:7c0:c202:5190:cc66:94d5:eb1a:5dfe) (Ping timeout: 240 seconds)
2022-01-06 08:24:01 +0100coolnickname(uid531864@user/coolnickname)
2022-01-06 08:30:21 +0100emf_(~emf@2620:10d:c090:400::5:29c4)
2022-01-06 08:34:00 +0100emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Ping timeout: 268 seconds)
2022-01-06 08:35:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-06 08:37:08 +0100nhatanh02(~satori@123.24.172.30)
2022-01-06 08:39:31 +0100dsrt^(~dsrt@207.5.21.20)
2022-01-06 08:40:34 +0100Jing(~hedgehog@2604:a840:3::103c)
2022-01-06 08:40:48 +0100Tuplanolla(~Tuplanoll@91-159-69-90.elisa-laajakaista.fi)
2022-01-06 08:59:14 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-06 09:01:28 +0100spaceseller(~spacesell@31.147.205.13)
2022-01-06 09:02:45 +0100spaceseller(~spacesell@31.147.205.13) (Remote host closed the connection)
2022-01-06 09:03:30 +0100chele(~chele@user/chele)
2022-01-06 09:04:23 +0100emf_(~emf@2620:10d:c090:400::5:29c4) (Quit: emf_)
2022-01-06 09:05:39 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds)
2022-01-06 09:07:14 +0100Akiva(~Akiva@user/Akiva)
2022-01-06 09:14:19 +0100jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2022-01-06 09:15:39 +0100jinsun(~quassel@user/jinsun)
2022-01-06 09:21:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 09:26:51 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-01-06 09:44:24 +0100Dima[m](~reddima10@2001:470:69fc:105::366)
2022-01-06 09:52:48 +0100mbuf(~Shakthi@122.178.186.114) (Quit: Leaving)
2022-01-06 09:53:47 +0100notzmv(~zmv@user/notzmv)
2022-01-06 09:54:08 +0100zaquest(~notzaques@5.130.79.72) (Quit: Leaving)
2022-01-06 09:54:45 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-01-06 09:55:00 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-01-06 09:55:40 +0100zaquest(~notzaques@5.130.79.72)
2022-01-06 09:59:14 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-01-06 10:03:36 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
2022-01-06 10:16:45 +0100acidjnk(~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de)
2022-01-06 10:16:47 +0100acidjnk_new(~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de)
2022-01-06 10:16:55 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2022-01-06 10:17:46 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-01-06 10:18:53 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 256 seconds)
2022-01-06 10:20:40 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-01-06 10:24:31 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-01-06 10:25:57 +0100Jing(~hedgehog@2604:a840:3::103c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-06 10:26:31 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-06 10:26:37 +0100Jing(~hedgehog@2604:a840:3::103c)
2022-01-06 10:32:17 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-01-06 10:33:56 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it)
2022-01-06 10:35:00 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2022-01-06 10:36:05 +0100ubert(~Thunderbi@p200300ecdf0994db19c621579c5ac118.dip0.t-ipconnect.de)
2022-01-06 10:36:48 +0100Dima[m](~reddima10@2001:470:69fc:105::366) ()
2022-01-06 10:43:05 +0100kspalaiologos(~kspalaiol@user/kspalaiologos)
2022-01-06 10:46:26 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 10:48:29 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-06 10:50:37 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-01-06 10:54:08 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2022-01-06 11:03:39 +0100phma(~phma@host-67-44-208-205.hnremote.net) (Read error: Connection reset by peer)
2022-01-06 11:04:53 +0100phma(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 +0100phma(phma@2001:5b0:212a:8aa8:ed3d:67f3:3037:708a) (Read error: Connection reset by peer)
2022-01-06 11:09:19 +0100phma(phma@2001:5b0:211b:f778:91c:a71f:b4a2:a400)
2022-01-06 11:10:59 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-01-06 11:13:10 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Remote host closed the connection)
2022-01-06 11:13:43 +0100sphynx(~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (Ping timeout: 268 seconds)
2022-01-06 11:14:06 +0100max22-(~maxime@2a01cb088335980076b5f89708bbcdbc.ipv6.abo.wanadoo.fr)
2022-01-06 11:14:11 +0100sphynx(~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288)
2022-01-06 11:14:38 +0100gehmehgeh(~user@user/gehmehgeh)
2022-01-06 11:19:16 +0100chexum(~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 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-01-06 11:32:08 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-01-06 11:33:33 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-01-06 11:33:33 +0100Lord_of_Life_Lord_of_Life
2022-01-06 11:35:18 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-06 11:36:09 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 11:36:09 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 11:36:09 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 11:40:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-06 11:42:28 +0100zmt01(~zmt00@user/zmt00)
2022-01-06 11:43:17 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2022-01-06 11:43:47 +0100coolnickname(uid531864@user/coolnickname) (Quit: Connection closed for inactivity)
2022-01-06 11:48:37 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 240 seconds)
2022-01-06 11:49:04 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-06 11:50:10 +0100jinsun(~quassel@user/jinsun)
2022-01-06 11:53:30 +0100phaazon(~phaazon@2001:41d0:a:fe76::1) (Quit: WeeChat 2.9)
2022-01-06 11:53:48 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-01-06 11:53:55 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it)
2022-01-06 11:53:58 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Remote host closed the connection)
2022-01-06 11:54:39 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-01-06 11:56:37 +0100x88x88x(~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb)
2022-01-06 12:00:01 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it)
2022-01-06 12:06:56 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 12:06:56 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 12:06:56 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 12:07:37 +0100vglfr(~vglfr@88.155.23.34)
2022-01-06 12:12:05 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-06 12:13:46 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2022-01-06 12:16:27 +0100ishan_(~ishan@122.172.57.62)
2022-01-06 12:17:57 +0100cosimone(~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 +0100wroathe(~wroathe@206.55.188.8)
2022-01-06 12:38:05 +0100wroathe(~wroathe@206.55.188.8) (Changing host)
2022-01-06 12:38:05 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 12:40:13 +0100ishan_(~ishan@122.172.57.62) ()
2022-01-06 12:42:41 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-06 12:49:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-06 12:50:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 12:51:49 +0100cosimone(~user@93-47-228-11.ip115.fastwebnet.it)
2022-01-06 12:55:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-06 12:55:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 12:57:05 +0100kspalaiologos(~kspalaiol@user/kspalaiologos) (Quit: Leaving)
2022-01-06 12:57:21 +0100byorgey(~byorgey@155.138.238.211) (Quit: leaving)
2022-01-06 12:57:48 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-06 12:59:57 +0100xff0x(~xff0x@2001:1a81:5223:a300:d0e9:99bd:8a63:7db6) (Ping timeout: 240 seconds)
2022-01-06 13:00:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-06 13:01:12 +0100xff0x(~xff0x@2001:1a81:5223:a300:3ef8:2137:a2ce:8bcc)
2022-01-06 13:01:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 13:02:37 +0100burnsidesLlama(~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 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-06 13:03:38 +0100pretty_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 +0100mc47(~mc47@xmonad/TheMC47)
2022-01-06 13:11:39 +0100geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca)
2022-01-06 13:15:34 +0100byorgey(~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 +0100wyrd_(~wyrd@gateway/tor-sasl/wyrd)
2022-01-06 13:21:05 +0100Midjak(~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 +0100wyrd(~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 +0100xkuru(~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 +0100SpencerJanssen[msjanssen
2022-01-06 13:37:50 +0100 <raehik> yes sry, let me write a MWE
2022-01-06 13:42:04 +0100acidjnk_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 +0100acidjnk_new(~acidjnk@p200300d0c7271e93a97d350f09b0dd65.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-06 13:44:37 +0100acidjnk(~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 +0100hughjfchen(~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 +0100acidjnk_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 +0100hughjfchen(~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 +0100Hud(~Hud@184-167-074-028.res.spectrum.com)
2022-01-06 13:51:06 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-06 13:53:39 +0100nhatanh02(~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 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 256 seconds)
2022-01-06 13:55:29 +0100coolnickname(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 +0100dhouthoo(~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 +0100burnsidesLlama(~burnsides@129.67.168.22) (Remote host closed the connection)
2022-01-06 14:06:08 +0100ishutin(~ishutin@92-249-182-7.pool.digikabel.hu) (Ping timeout: 252 seconds)
2022-01-06 14:06:42 +0100Guest|52(~Guest|52@92.40.175.189.threembb.co.uk)
2022-01-06 14:07:58 +0100ishutin(~ishutin@178-164-188-6.pool.digikabel.hu)
2022-01-06 14:08:27 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 14:12:34 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-06 14:12:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-06 14:18:24 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-06 14:19:37 +0100Guest|52(~Guest|52@92.40.175.189.threembb.co.uk) (Ping timeout: 240 seconds)
2022-01-06 14:35:32 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2022-01-06 14:37:47 +0100burnsidesLlama(~burnsides@dhcp168-022.wadham.ox.ac.uk)
2022-01-06 14:43:31 +0100burnsidesLlama(~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-01-06 14:51:53 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-06 14:52:28 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-06 14:53:01 +0100hyiltiz(~quassel@31.220.5.250) (Ping timeout: 256 seconds)
2022-01-06 14:53:54 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-01-06 14:53:54 +0100burnsidesLlama(~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 +0100eggplantade(~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 +0100Vajb(~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 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-01-06 15:01:05 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-01-06 15:01:05 +0100finn_elijaFinnElija
2022-01-06 15:01:20 +0100katsuragi(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 +0100katsuragi(katsuragi@tilde.institute) (WeeChat 2.9)
2022-01-06 15:01:31 +0100 <lechner> prerequisite?
2022-01-06 15:01:51 +0100Vajb(~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 +0100jgeerds(~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 +0100ubert(~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 +0100ubert(~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 +0100nhatanh02(~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 +0100lavaman(~lavaman@98.38.249.169)
2022-01-06 15:20:56 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2022-01-06 15:35:04 +0100shriekingnoise(~shrieking@186.137.144.80)
2022-01-06 15:36:02 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 15:36:02 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 15:36:02 +0100wroathe(~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 +0100waleee(~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 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-01-06 15:46:30 +0100vysn(~vysn@user/vysn)
2022-01-06 15:48:37 +0100vglfr(~vglfr@88.155.23.34) (Ping timeout: 240 seconds)
2022-01-06 15:49:59 +0100vglfr(~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 +0100zincy_(~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 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-06 15:58:37 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 268 seconds)
2022-01-06 16:06:24 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 16:06:24 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 16:06:24 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 16:07:41 +0100max22-(~maxime@2a01cb088335980076b5f89708bbcdbc.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
2022-01-06 16:09:39 +0100k`(~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 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-06 16:12:15 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-06 16:13:32 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 16:13:32 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 16:13:32 +0100wroathe(~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 +0100Hud(~Hud@184-167-074-028.res.spectrum.com) (Quit: Client closed)
2022-01-06 16:17:25 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 240 seconds)
2022-01-06 16:18:17 +0100wroathe(~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 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-06 16:21:06 +0100wyrd_(~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 +0100douglaswinship(~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 +0100LiaoTao(~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 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 16:26:24 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 16:26:24 +0100wroathe(~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 +0100wroathe(~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 +0100coot(~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 +0100Sgeo(~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 +0100n3rdy1(~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 +0100max22-(~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 +0100xff0x(~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 +0100xff0x(~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 +0100zincy_(~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 +0100bontaq(~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 +0100zincy_(~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 +0100vglfr(~vglfr@88.155.23.34) (Ping timeout: 240 seconds)
2022-01-06 16:57:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-06 16:57:20 +0100wyrd(~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 +0100mbuf(~Shakthi@171.61.196.206)
2022-01-06 17:03:37 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-06 17:04:30 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 17:04:30 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 17:04:30 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 17:07:19 +0100dsrt^(~dsrt@207.5.21.20) (Ping timeout: 256 seconds)
2022-01-06 17:07:48 +0100uam(uid360535@id-360535.hampstead.irccloud.com)
2022-01-06 17:09:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-06 17:09:27 +0100spaceseller(~spacesell@31.147.205.13)
2022-01-06 17:10:28 +0100shapr(~user@98.54.1.142)
2022-01-06 17:11:32 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 240 seconds)
2022-01-06 17:11:53 +0100zyzzyxdonta(~zyzzyxdon@ip5f5aa13a.dynamic.kabel-deutschland.de)
2022-01-06 17:12:11 +0100zyzzyxdonta(~zyzzyxdon@ip5f5aa13a.dynamic.kabel-deutschland.de) ()
2022-01-06 17:12:30 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 17:12:30 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 17:12:30 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 17:16:32 +0100shapr(~user@98.54.1.142) (Ping timeout: 256 seconds)
2022-01-06 17:20:25 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-01-06 17:20:41 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-06 17:21:10 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506)
2022-01-06 17:21:17 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-01-06 17:22:45 +0100CiaoSen(~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 +0100mmalter(~mmalter@88.126.10.237) (Read error: Connection reset by peer)
2022-01-06 17:25:37 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
2022-01-06 17:28:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-06 17:29:58 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 17:29:58 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 17:29:58 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 17:33:07 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net)
2022-01-06 17:33:23 +0100dextaa(~DV@user/dextaa) (Ping timeout: 256 seconds)
2022-01-06 17:35:05 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-06 17:37:38 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-01-06 17:41:37 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-01-06 17:41:42 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-06 17:47:52 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-01-06 17:48:21 +0100spaceseller(~spacesell@31.147.205.13) (Quit: Leaving)
2022-01-06 17:52:45 +0100Jing(~hedgehog@2604:a840:3::103c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-06 17:54:48 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2022-01-06 17:56:10 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-06 17:56:28 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-06 18:00:26 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
2022-01-06 18:01:32 +0100coolnickname(uid531864@user/coolnickname) (Quit: Connection closed for inactivity)
2022-01-06 18:03:25 +0100shailangsa_(~shailangs@host86-162-150-202.range86-162.btcentralplus.com) (Ping timeout: 240 seconds)
2022-01-06 18:04:35 +0100moshet(~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 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 18:09:12 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 18:09:12 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 18:13:52 +0100econo(uid147250@user/econo)
2022-01-06 18:13:55 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-01-06 18:14:11 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-06 18:16:43 +0100Akiva(~Akiva@user/Akiva)
2022-01-06 18:19:03 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-06 18:19:49 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2022-01-06 18:19:55 +0100widelec-BB(~widelec@cpe-109-207-144-181.docsis.tczew.net.pl)
2022-01-06 18:21:42 +0100dextaa(~DV@user/dextaa)
2022-01-06 18:26:57 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2022-01-06 18:37:58 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
2022-01-06 18:38:33 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-06 18:40:49 +0100Codaraxis(~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
2022-01-06 18:42:16 +0100simendsjo(~user@84.211.91.241)
2022-01-06 18:43:15 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-06 18:44:06 +0100vysn(~vysn@user/vysn)
2022-01-06 18:44:10 +0100python476(~user@88.160.31.174)
2022-01-06 18:44:46 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-06 18:45:17 +0100machinedgod(~machinedg@24.105.81.50) (Remote host closed the connection)
2022-01-06 18:46:55 +0100emf(~emf@2620:10d:c090:400::5:f0df)
2022-01-06 18:48:21 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-06 18:48:24 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-01-06 18:48:39 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-06 18:48:53 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-06 19:00:37 +0100shailangsa(~shailangs@host86-162-150-202.range86-162.btcentralplus.com)
2022-01-06 19:00:48 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
2022-01-06 19:01:48 +0100Feuermagier(~Feuermagi@user/feuermagier)
2022-01-06 19:02:00 +0100Feuermagier_(~Feuermagi@213.178.26.41)
2022-01-06 19:02:16 +0100Feuermagier_(~Feuermagi@213.178.26.41) (Remote host closed the connection)
2022-01-06 19:08:01 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 256 seconds)
2022-01-06 19:08:29 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-06 19:08:47 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-06 19:11:50 +0100 <polyphem> /quit
2022-01-06 19:11:53 +0100polyphem(~rod@2a02:810d:640:776c:e450:3ca3:b389:687a) (Quit: WeeChat 3.3)
2022-01-06 19:13:04 +0100polyphem(~rod@2a02:810d:640:776c:e450:3ca3:b389:687a)
2022-01-06 19:15:36 +0100benin(~benin@183.82.176.241) (Quit: The Lounge - https://thelounge.chat)
2022-01-06 19:17:18 +0100uam(uid360535@id-360535.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-06 19:18:44 +0100mbuf(~Shakthi@171.61.196.206) (Quit: Leaving)
2022-01-06 19:22:20 +0100simendsjo(~user@84.211.91.241) (Ping timeout: 256 seconds)
2022-01-06 19:23:45 +0100neurocyte09(~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
2022-01-06 19:24:32 +0100neurocyte091(~neurocyte@IP-212232089218.dynamic.medianet-world.de)
2022-01-06 19:24:32 +0100neurocyte091(~neurocyte@IP-212232089218.dynamic.medianet-world.de) (Changing host)
2022-01-06 19:24:32 +0100neurocyte091(~neurocyte@user/neurocyte)
2022-01-06 19:25:35 +0100xb0o2(~xb0o2@user/xb0o2)
2022-01-06 19:27:04 +0100dsrt^(~dsrt@207.5.21.20)
2022-01-06 19:27:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 19:29:21 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-01-06 19:38:37 +0100deadmarshal(~deadmarsh@95.38.116.103) (Ping timeout: 240 seconds)
2022-01-06 19:39:13 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 19:41:07 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-06 19:44:26 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-06 19:46:33 +0100Akiva(~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 +0100Gurkenglas(~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 +0100emf(~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 +0100xlei(~akans@pool-68-129-84-118.nycmny.fios.verizon.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-01-06 19:52:43 +0100xlei(~akans@pool-68-129-84-118.nycmny.fios.verizon.net)
2022-01-06 19:53:23 +0100zincy_(~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 +0100noddy(~user@user/noddy) (Quit: WeeChat 3.4)
2022-01-06 19:57:52 +0100widelec-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 +0100widelec-BB(~widelec@cpe-109-207-144-181.docsis.tczew.net.pl)
2022-01-06 20:01:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-06 20:02:18 +0100noddy(~user@user/noddy)
2022-01-06 20:03:25 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-01-06 20:04:16 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2022-01-06 20:05:57 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-01-06 20:06:32 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-06 20:10:08 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-06 20:13:37 +0100cheater(~Username@user/cheater)
2022-01-06 20:16:25 +0100Codaraxis(~Codaraxis@user/codaraxis)
2022-01-06 20:17:12 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-06 20:17:35 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-06 20:23:25 +0100jespada(~jespada@87.74.32.18) (Read error: Connection reset by peer)
2022-01-06 20:23:37 +0100jespada_(~jespada@87.74.32.18)
2022-01-06 20:24:56 +0100jgeerds(~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 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-01-06 20:29:27 +0100notzmv(~zmv@user/notzmv)
2022-01-06 20:30:17 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-01-06 20:38:10 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2022-01-06 20:42:34 +0100simendsjo(~user@84.211.91.241)
2022-01-06 20:52:37 +0100moshet(~moshet@190.131.248.18) (Ping timeout: 240 seconds)
2022-01-06 20:59:14 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-06 21:05:28 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 256 seconds)
2022-01-06 21:07:06 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-06 21:07:27 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-06 21:08:11 +0100juhp(~juhp@128.106.188.82)
2022-01-06 21:15:35 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 21:15:35 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 21:15:35 +0100wroathe(~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 +0100kuribas(~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 +0100machinedgod(~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 +0100wroathe(~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 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-01-06 21:27:50 +0100gentauro(~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 +0100FinnElija(~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 +0100gentauro(~gentauro@user/gentauro)
2022-01-06 21:34:15 +0100wroathe(~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 +0100python476(~user@88.160.31.174) (Ping timeout: 240 seconds)
2022-01-06 21:39:17 +0100wroathe(~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 +0100deadmarshal(~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 +0100cosimone(~user@93-47-228-11.ip115.fastwebnet.it) (Remote host closed the connection)
2022-01-06 21:58:06 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-06 21:59:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-06 22:01:01 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds)
2022-01-06 22:02:06 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-01-06 22:03:16 +0100pavonia(~user@user/siracusa)
2022-01-06 22:04:23 +0100simendsjo(~user@84.211.91.241) (Ping timeout: 256 seconds)
2022-01-06 22:04:37 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-01-06 22:04:44 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-06 22:06:04 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-01-06 22:10:28 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-01-06 22:11:03 +0100tromp(~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 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-01-06 22:14:35 +0100nhatanh02(~satori@123.24.172.30) (Ping timeout: 256 seconds)
2022-01-06 22:15:25 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-01-06 22:15:32 +0100burnsidesLlama(~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-06 22:16:59 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-06 22:20:09 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-01-06 22:22:38 +0100tromp(~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 +0100cheater(~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 +0100emf(~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 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-06 22:32:14 +0100cheater(~Username@user/cheater)
2022-01-06 22:34:48 +0100k`(~user@152.1.137.158) (Remote host closed the connection)
2022-01-06 22:35:10 +0100dudek(~dudek@185.150.236.156)
2022-01-06 22:37:21 +0100eggplantade(~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 +0100benin(~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 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 22:47:37 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 22:47:37 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 22:48:05 +0100cosimone(~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 +0100acidjnk_new3(~acidjnk@p200300d0c7271e249cd77df40fde183d.dip0.t-ipconnect.de)
2022-01-06 22:48:51 +0100acidjnk(~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 +0100johnw(~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 +0100Sgeo_(~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 +0100Sgeo(~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 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2022-01-06 23:13:25 +0100shapr(~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 +0100takuan(~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 +0100CiaoSen(~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 +0100eggplantade(~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 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-06 23:31:28 +0100xb0o2(~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 +0100hyiltiz(~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 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-06 23:37:36 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-06 23:37:36 +0100wroathe(~wroathe@user/wroathe)
2022-01-06 23:38:42 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-01-06 23:41:09 +0100hyiltiz(~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 +0100wroathe(~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 +0100hyiltiz(~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 +0100deadmarshal(~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 +0100kuribas(~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 +0100jakalx(~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.