Home liberachat/#haskell: Logs Calendar

Logs on 2022-06-30 (liberachat/#haskell)

00:02:20 × king_gs quits (~Thunderbi@187.201.91.195) (Read error: Connection reset by peer)
00:02:31 king_gs1 joins (~Thunderbi@2806:103e:29:a4ff:9938:ec1d:a54a:6688)
00:04:15 × hounded quits (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Quit: Leaving)
00:04:50 king_gs1 is now known as king_gs
00:08:15 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
00:10:29 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
00:16:14 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
00:17:51 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
00:23:22 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
00:23:44 pseigo joins (~pseigo@d108-173-20-33.abhsia.telus.net)
00:25:19 × cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Remote host closed the connection)
00:26:48 frost joins (~frost@user/frost)
00:28:17 cosimone joins (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81)
00:29:48 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
00:31:16 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
00:31:26 × sudden quits (~cat@user/sudden) (Ping timeout: 272 seconds)
00:31:41 sudden joins (~cat@user/sudden)
00:32:48 <jackdk> `MVar`s (which is how `Chan` is implemented) should be able to admit an `Invariant` instance but I think you'd have to do horrible unsafe things to actually write it
00:39:03 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
00:42:43 × king_gs quits (~Thunderbi@2806:103e:29:a4ff:9938:ec1d:a54a:6688) (Quit: king_gs)
00:43:55 × pleo quits (~pleo@user/pleo) (Ping timeout: 260 seconds)
00:48:59 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
00:49:32 × sander quits (~sander@user/sander) (Ping timeout: 268 seconds)
00:54:40 × Tuplanolla quits (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.)
00:58:10 × xff0x quits (~xff0x@2405:6580:b080:900:6299:ef57:2e8d:3dc9) (Ping timeout: 268 seconds)
00:58:15 × mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
00:59:38 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
01:01:41 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
01:02:29 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
01:03:53 Guest20 joins (~Guest20@2601:46:c881:49e0:5804:f33a:d097:444e)
01:04:19 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
01:11:12 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:56 mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001)
01:14:45 nate4 joins (~nate@98.45.169.16)
01:17:19 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:18:06 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:19:18 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds)
01:19:58 <albet70> what's the difference between chunk and stream in web? there're bodyReader and stream both in the Web.Scotty.Trans
01:19:59 Guest2083 joins (~Guest20@2601:46:c881:49e0:5804:f33a:d097:444e)
01:20:26 sander joins (~sander@user/sander)
01:20:43 × sagax quits (~sagax_nb@user/sagax) (Excess Flood)
01:21:28 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 272 seconds)
01:25:58 × Kevin578 quits (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 240 seconds)
01:26:08 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
01:27:04 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
01:27:50 sagax joins (~sagax_nb@user/sagax)
01:28:45 × Guest20 quits (~Guest20@2601:46:c881:49e0:5804:f33a:d097:444e) (Quit: Client closed)
01:28:50 × Guest2083 quits (~Guest20@2601:46:c881:49e0:5804:f33a:d097:444e) (Quit: Client closed)
01:29:25 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
01:29:42 zaquest joins (~notzaques@5.130.79.72)
01:31:12 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
01:39:40 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
01:52:26 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
01:52:26 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
01:53:03 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 268 seconds)
01:55:20 <dsal> I assume a stream is made of chunks.
01:56:38 kimjetwav joins (~user@2607:fea8:2340:da00:e1b5:3eed:5fa8:62c7)
01:58:25 <Axman6> My experience with streams is that they are made of water
02:01:46 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
02:02:21 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 246 seconds)
02:05:03 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:fd7f:8a24:ea99:bd9b) (Remote host closed the connection)
02:09:27 <dsal> Lucky.
02:09:44 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:fd7f:8a24:ea99:bd9b)
02:11:33 × pseigo quits (~pseigo@d108-173-20-33.abhsia.telus.net) (Quit: left)
02:11:44 pseigo joins (~pseigo@d108-173-20-33.abhsia.telus.net)
02:17:32 machinedgod joins (~machinedg@66.244.246.252)
02:27:25 <monochrom> I thought they had fish, too.
02:36:19 × fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
02:38:10 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
02:42:23 × td_ quits (~td@muedsl-82-207-238-037.citykom.de) (Ping timeout: 268 seconds)
02:43:45 td_ joins (~td@muedsl-82-207-238-240.citykom.de)
02:44:17 <Axman6> you wouldn't say a stream was made of fish though - without fish, it's still a stream, without water, it's no longer a stream
02:46:37 × pseigo quits (~pseigo@d108-173-20-33.abhsia.telus.net) (Quit: left)
02:46:47 pseigo joins (~pseigo@d108-173-20-33.abhsia.telus.net)
02:49:18 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
02:49:31 <Axman6> Profpatsch: it would be useful exercise to try writing a Functor instance for Chan - its definition is https://hackage.haskell.org/package/base-4.16.1.0/docs/src/Control-Concurrent-Chan.html#Chan and you can copy that into a module and see if you can go it. I think you'll find it's at least very difficult, if not impossible (one of the big reasons is that you need to use IO to do anything with an MVar, so that pretty much rules out Functor, but even writing: f
02:49:31 <Axman6> mapish :: (a -> b) -> Chan a -> IO (Chan b) is not trivial, if it is possible)
02:49:58 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
02:51:10 <Axman6> s/go/do
02:51:15 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
02:52:02 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
03:01:32 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
03:02:48 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
03:06:55 × pseigo quits (~pseigo@d108-173-20-33.abhsia.telus.net) (Quit: left)
03:07:13 pseigo joins (~pseigo@d108-173-20-33.abhsia.telus.net)
03:08:20 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 255 seconds)
03:14:27 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
03:17:04 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:17:29 flinner joins (~user@user/flinner)
03:18:26 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
03:20:46 img joins (~img@user/img)
03:21:06 × pseigo quits (~pseigo@d108-173-20-33.abhsia.telus.net) (Ping timeout: 264 seconds)
03:21:42 slac81585 joins (~slack1256@191.125.227.211)
03:23:36 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
03:23:36 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
03:23:36 wroathe joins (~wroathe@user/wroathe)
03:24:20 × slack1256 quits (~slack1256@186.11.62.168) (Ping timeout: 260 seconds)
03:24:50 slac81585 is now known as slack1256
03:28:28 kaskal- joins (~kaskal@089144220061.atnat0029.highway.webapn.at)
03:28:50 × kaskal quits (~kaskal@89.144.222.105) (Ping timeout: 240 seconds)
03:35:40 notzmv joins (~zmv@user/notzmv)
03:37:31 vysn joins (~vysn@user/vysn)
03:37:32 × Vajb quits (~Vajb@2001:999:48c:99ca:b00c:585c:3999:aa8b) (Read error: Connection reset by peer)
03:38:35 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
03:39:16 coot joins (~coot@213.134.190.95)
03:51:34 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
04:00:15 vglfr joins (~vglfr@coupling.penchant.volia.net)
04:06:49 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
04:06:54 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
04:12:25 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
04:12:26 × quarkyalice quits (~alice@user/quarkyalice) (Read error: Connection reset by peer)
04:12:42 quarkyalice joins (~alice@172.77.24.253)
04:12:43 × quarkyalice quits (~alice@172.77.24.253) (Changing host)
04:12:43 quarkyalice joins (~alice@user/quarkyalice)
04:12:56 Vajb joins (~Vajb@85-76-113-230-nat.elisa-mobile.fi)
04:21:08 pseigo joins (~pseigo@d108-173-20-33.abhsia.telus.net)
04:21:41 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
04:32:24 macabre joins (~m@161.35.15.236)
04:36:22 × flinner quits (~user@user/flinner) (Quit: Using Circe, the loveliest of all IRC clients)
04:39:20 × mstksg quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 248 seconds)
04:41:07 mstksg joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
04:52:41 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:fd7f:8a24:ea99:bd9b) (Remote host closed the connection)
04:53:38 nate4 joins (~nate@98.45.169.16)
04:53:43 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
04:55:19 jgeerds joins (~jgeerds@55d45f48.access.ecotel.net)
04:56:12 × pseigo quits (~pseigo@d108-173-20-33.abhsia.telus.net) (Ping timeout: 268 seconds)
04:56:12 dyeplexer joins (~dyeplexer@user/dyeplexer)
04:58:40 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
05:00:05 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
05:04:50 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 268 seconds)
05:12:15 × winny quits (~weechat@user/winny) (Ping timeout: 268 seconds)
05:14:00 winny joins (~weechat@user/winny)
05:14:30 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
05:16:57 dyeplexer joins (~dyeplexer@user/dyeplexer)
05:18:00 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
05:36:25 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:41:45 × slack1256 quits (~slack1256@191.125.227.211) (Remote host closed the connection)
05:50:33 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
05:51:23 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
05:52:32 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
05:54:48 × raym quits (~raym@user/raym) (Ping timeout: 244 seconds)
05:54:50 raym_ joins (~raym@user/raym)
05:55:18 × YoungFrog quits (~youngfrog@2a02:a03f:c21b:f900:812e:6c05:83db:6853) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
05:55:37 YoungFrog joins (~youngfrog@2a02:a03f:c21b:f900:4573:7c9a:94a6:9db6)
06:01:58 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
06:03:56 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 272 seconds)
06:06:03 jelewis2 joins (~lewisje@2001:470:1f11:14e:50c5:a481:bb91:9810)
06:06:16 × darkstardevx quits (~darkstard@50.53.212.60) (Quit: Leaving)
06:06:38 raym_ is now known as raym
06:06:54 hsw_ joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
06:08:00 × hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Remote host closed the connection)
06:09:18 × jrm quits (~jrm@user/jrm) (Ping timeout: 240 seconds)
06:09:32 jrm joins (~jrm@user/jrm)
06:09:35 × lewisje quits (~lewisje@2001:470:1f11:14e:50c5:a481:bb91:9810) (Ping timeout: 268 seconds)
06:15:19 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
06:19:43 acidjnk joins (~acidjnk@dynamic-046-114-169-191.46.114.pool.telefonica.de)
06:22:05 Pickchea joins (~private@user/pickchea)
06:28:12 hsw_ is now known as hsw
06:29:54 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:30:40 MajorBiscuit joins (~MajorBisc@c-001-020-035.client.tudelft.eduvpn.nl)
06:32:05 × gdown quits (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
06:34:18 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
06:38:44 michalz joins (~michalz@185.246.204.97)
06:39:28 lortabac joins (~lortabac@88.125.6.227)
06:47:51 yoneda joins (~mike@193.206.102.122)
06:48:38 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
06:51:18 odnes joins (~odnes@109-178-162-164.pat.ren.cosmote.net)
06:56:22 <albet70> when post file with chunk, how the data upload to scotty server? post with request?
06:56:56 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:01:50 quarkyalice_ joins (~alice@172.77.162.117)
07:01:50 × quarkyalice_ quits (~alice@172.77.162.117) (Changing host)
07:01:50 quarkyalice_ joins (~alice@user/quarkyalice/x-8092822)
07:03:40 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 260 seconds)
07:04:28 × quarkyalice quits (~alice@user/quarkyalice) (Ping timeout: 268 seconds)
07:04:38 jonathanx joins (~jonathan@c-5eea65d0-74736162.cust.telenor.se)
07:09:52 gmg joins (~user@user/gehmehgeh)
07:13:18 zeenk joins (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3)
07:15:14 × jonathanx quits (~jonathan@c-5eea65d0-74736162.cust.telenor.se) (Read error: No route to host)
07:15:46 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
07:16:28 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:16:49 alp joins (~alp@user/alp)
07:18:03 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
07:18:18 mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi)
07:21:56 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
07:22:02 jonathanx joins (~jonathan@dyn-5-sc.cdg.chalmers.se)
07:22:42 gmg joins (~user@user/gehmehgeh)
07:24:42 × mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 264 seconds)
07:27:55 × winny quits (~weechat@user/winny) (Ping timeout: 268 seconds)
07:28:46 winny joins (~weechat@user/winny)
07:29:26 × sagax quits (~sagax_nb@user/sagax) (Excess Flood)
07:29:55 × jonathanx quits (~jonathan@dyn-5-sc.cdg.chalmers.se) (Read error: Connection reset by peer)
07:30:05 jonathanx joins (~jonathan@dyn-5-sc.cdg.chalmers.se)
07:34:48 × jonathanx quits (~jonathan@dyn-5-sc.cdg.chalmers.se) (Ping timeout: 248 seconds)
07:38:07 mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi)
07:38:36 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:38:52 mmhat joins (~mmh@p200300f1c7160b67ee086bfffe095315.dip0.t-ipconnect.de)
07:43:36 × shriekingnoise quits (~shrieking@201.212.175.181) (Quit: Quit)
07:46:11 mbuf joins (~Shakthi@122.164.12.45)
07:47:02 cfricke joins (~cfricke@user/cfricke)
07:47:38 × acidjnk quits (~acidjnk@dynamic-046-114-169-191.46.114.pool.telefonica.de) (Ping timeout: 268 seconds)
07:49:29 gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
07:49:34 acidjnk joins (~acidjnk@dynamic-046-114-169-191.46.114.pool.telefonica.de)
07:52:57 machinedgod joins (~machinedg@66.244.246.252)
07:55:37 jonathanx joins (~jonathan@dyn-5-sc.cdg.chalmers.se)
07:55:38 chomwitt joins (~chomwitt@2a02:587:dc1c:800:1243:591f:920e:62b8)
08:00:18 jonathanx_ joins (~jonathan@dyn-5-sc.cdg.chalmers.se)
08:00:35 × jonathanx quits (~jonathan@dyn-5-sc.cdg.chalmers.se) (Ping timeout: 268 seconds)
08:01:06 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 246 seconds)
08:01:19 PiDelport joins (uid25146@id-25146.lymington.irccloud.com)
08:03:02 machinedgod joins (~machinedg@66.244.246.252)
08:04:08 pseigo joins (~pseigo@d108-173-20-33.abhsia.telus.net)
08:05:31 × jonathanx_ quits (~jonathan@dyn-5-sc.cdg.chalmers.se) (Ping timeout: 268 seconds)
08:06:29 <Profpatsch> Axman6: I’d guess you’d have to install the function in an MVar as well, which would blow up the representation of the chan
08:06:41 <Profpatsch> So it makes sense that it has nearly no instances
08:07:13 <dminuoso> Axman6: Why shouldnt it be possible?
08:08:00 <Profpatsch> BUt it’s rather easy to do it with conduit: (repeatMC (readChan ch)) .| mapC f
08:08:42 <merijn> ooh
08:08:44 <merijn> wait
08:08:50 <merijn> I missed some context
08:09:02 <merijn> Chan and conduits...what are we doing?
08:09:29 <Profpatsch> merijn: just taking some chunks from a chan and mapping a function over them
08:09:56 <Profpatsch> I mean I know that unbounded chans are not the best, but it was just a scripting thing
08:11:42 <merijn> Just asking because I made my own closable channel type and a conduit interface for parallel processing of it, but not sure it's relevant for the problem :p
08:14:38 × Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds)
08:15:39 christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
08:20:12 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
08:21:46 × odnes quits (~odnes@109-178-162-164.pat.ren.cosmote.net) (Remote host closed the connection)
08:21:47 ccntrq joins (~Thunderbi@2a00:6020:1383:c500:e7bb:73b6:1514:e3cc)
08:22:45 × raym quits (~raym@user/raym) (Remote host closed the connection)
08:24:05 odnes joins (~odnes@109-178-162-164.pat.ren.cosmote.net)
08:24:21 × odnes quits (~odnes@109-178-162-164.pat.ren.cosmote.net) (Read error: Connection reset by peer)
08:24:22 odnes_ joins (~odnes@109-178-162-164.pat.ren.cosmote.net)
08:26:30 ulvarrefr joins (~user@188.124.56.153)
08:27:43 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
08:29:14 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
08:29:18 <Profpatsch> merijn: yeah, if it was more than a toy script I’d have hunted for something like that :)
08:29:54 <Profpatsch> Tho I have to admit I’m very careful pulling in channels/mutexes, because I’m very bad at parallel programming (as I guess people might have noticed) :)
08:30:10 <merijn> Profpatsch: Also, it's very fucking hard to get right :p
08:30:31 <Profpatsch> merijn: is it unagi-chan?
08:30:34 <merijn> That's actually why I split it off into its own package, I was tired of reimplementing it badly every time
08:31:25 <merijn> naah, unagi-chan is trying to be fast for high numbers of messages. My main problem was "I want to concurrently process a whole bunch of stuff coming from a channel"
08:31:39 <Profpatsch> But stuff like reading a stdout an stderr of a subprocess basically *forces* you into using something like channels
08:32:05 <merijn> Why?
08:32:24 <Profpatsch> unless you want to do an event loop
08:32:31 <Profpatsch> I guess with epoll you can also do it
08:32:59 <Profpatsch> But then you have to restructure your whole execution loop around it
08:33:33 <merijn> Profpatsch: you can just hook into the already existing RTS event loop, though :p
08:34:15 <Profpatsch> merijn: I saw some functions where you can race multiple Fds, do you mean that?
08:34:27 acidjnk_new joins (~acidjnk@dynamic-046-114-173-120.46.114.pool.telefonica.de)
08:34:33 <merijn> Profpatsch: https://hackage.haskell.org/package/base-4.16.1.0/docs/Control-Concurrent.html#g:6
08:34:48 <Profpatsch> ah yeah, those
08:35:02 <Profpatsch> It’s good to know that they are there for next time haha
08:35:07 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
08:35:10 <merijn> Profpatsch: Specifically threadWaitReadSTM, you can just use that to get a bunch of STM action and have 1 thread wait until any of the files are ready to read from
08:35:46 <Profpatsch> merijn: do you know whether the rts uses epolling under the hood?
08:35:49 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
08:36:08 <merijn> It does (well, depending on platform)
08:36:35 <merijn> kqueue on BSD/macOS and the new windows stuff on windows
08:36:38 <Profpatsch> I guess the good thing is that that means it can work on a single-threaded env
08:37:23 <Profpatsch> Wait, but can *I* say I want to wait and timeout after a few ms?
08:37:44 <merijn> Well, there's
08:37:47 <merijn> @hackage timeout
08:37:47 <lambdabot> https://hackage.haskell.org/package/timeout
08:37:52 <merijn> eh, wait
08:37:53 <Profpatsch> Does async work on the single-threaded runtime?
08:37:54 × acidjnk quits (~acidjnk@dynamic-046-114-169-191.46.114.pool.telefonica.de) (Ping timeout: 264 seconds)
08:37:54 <merijn> wrong command
08:37:58 <merijn> @hoogle timeout
08:37:58 <lambdabot> System.Timeout timeout :: Int -> IO a -> IO (Maybe a)
08:37:58 <lambdabot> System.Directory.Internal.Prelude timeout :: () => Int -> IO a -> IO (Maybe a)
08:37:58 <lambdabot> System.Timeout.Lifted timeout :: MonadBaseControl IO m => Int -> m a -> m (Maybe a)
08:38:44 <Profpatsch> ohhhh
08:38:47 <Profpatsch> How did I miss that
08:38:55 <Profpatsch> that’s cool
08:39:20 <Profpatsch> oh course it can be a combinator in Haskell
08:39:23 <Profpatsch> that’s so good
08:39:42 <Profpatsch> > yfw language with no first-class IO values
08:39:44 <lambdabot> <hint>:1:28: error: parse error on input ‘class’
08:40:01 <Profpatsch> lambdabot, the average greentext-enjoyer
08:41:39 <Profpatsch> Wait, is every epoll loop in the GHC rts written with an exception handler interrupt case?
08:41:58 <Profpatsch> So if the Timeout is thrown to e.g. hGetLine it knows how to immediately stop itself?
08:42:20 <merijn> Profpatsch: The thing is, hGetLine, etc. aren't blocking at all
08:42:35 <merijn> Profpatsch: They just register a thread with the event manager, then unschedule the thread
08:42:55 <Profpatsch> merijn: thread in the green sense?
08:43:09 <merijn> Profpatsch: Which just means threads can be woken up by 2 things: event manager wake up (i.e. readable data) OR an exception
08:43:14 <merijn> yes, in the forkIO sense
08:43:40 <Profpatsch> Ah, so it’s built into the base loop
08:43:54 <Profpatsch> makes sense
08:44:14 <Profpatsch> I should just start reading the GHC code at this point
08:46:33 azimut joins (~azimut@gateway/tor-sasl/azimut)
08:47:30 × chomwitt quits (~chomwitt@2a02:587:dc1c:800:1243:591f:920e:62b8) (Ping timeout: 264 seconds)
08:48:05 × tnks quits (sid412124@helmsley.irccloud.com) (Ping timeout: 256 seconds)
08:48:15 tnks joins (sid412124@id-412124.helmsley.irccloud.com)
08:49:18 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds)
08:49:31 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
08:52:47 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Remote host closed the connection)
08:53:00 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
08:54:34 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
08:55:08 raym joins (~raym@user/raym)
08:55:09 nate4 joins (~nate@98.45.169.16)
08:58:51 × odnes_ quits (~odnes@109-178-162-164.pat.ren.cosmote.net) (Remote host closed the connection)
08:58:55 odnes__ joins (~odnes@109-178-162-164.pat.ren.cosmote.net)
08:59:38 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
09:00:13 synthmeat parts (~synthmeat@user/synthmeat) (WeeChat 3.5)
09:01:13 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.5)
09:01:29 Guest79 joins (~Guest79@193.233.158.141)
09:01:32 Tuplanolla joins (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi)
09:02:03 odnes joins (~odnes@109-178-162-164.pat.ren.cosmote.net)
09:02:42 Guest79 is now known as oumptrain
09:03:48 × odnes__ quits (~odnes@109-178-162-164.pat.ren.cosmote.net) (Read error: Connection reset by peer)
09:04:39 × oumptrain quits (~Guest79@193.233.158.141) (Client Quit)
09:11:40 yax__ joins (~yax__@user/yax/x-9576643)
09:11:53 <yax__> hii ^_^
09:15:43 × cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Remote host closed the connection)
09:17:18 Schrostfutz joins (~Schrostfu@schettlerdck.tkn.tu-berlin.de)
09:17:24 × jespada quits (~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:19:38 × jelewis2 quits (~lewisje@2001:470:1f11:14e:50c5:a481:bb91:9810) (Quit: Leaving)
09:20:56 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds)
09:25:41 × raym quits (~raym@user/raym) (Ping timeout: 268 seconds)
09:25:55 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:28:57 mc47 joins (~mc47@xmonad/TheMC47)
09:29:20 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:31:56 atwm joins (~atwm@81.28.193.19)
09:32:19 × hyiltiz_ quits (~quassel@31.220.5.250) (Ping timeout: 244 seconds)
09:33:08 hyiltiz joins (~quassel@31.220.5.250)
09:33:25 × coot quits (~coot@213.134.190.95) (Quit: coot)
09:34:36 ubert joins (~Thunderbi@2a02:8109:abc0:6434:dbe1:e0b6:a385:2fd6)
09:39:38 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
09:40:02 gustik joins (~gustik@2a01:c844:2457:2220:475d:34f:d571:996f)
09:44:40 × pseigo quits (~pseigo@d108-173-20-33.abhsia.telus.net) (Ping timeout: 260 seconds)
09:46:32 × mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Read error: Connection reset by peer)
09:47:02 × gustik quits (~gustik@2a01:c844:2457:2220:475d:34f:d571:996f) (Quit: Leaving)
09:47:56 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 255 seconds)
09:49:09 gustik joins (~gustik@2a01:c844:2457:2220:475d:34f:d571:996f)
09:49:38 hyiltiz joins (~quassel@31.220.5.250)
09:53:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
09:53:20 × mmhat quits (~mmh@p200300f1c7160b67ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
09:57:24 raym joins (~raym@user/raym)
09:57:45 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Ping timeout: 268 seconds)
10:03:44 ozkutuk joins (~ozkutuk@176.240.173.153)
10:03:59 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
10:06:23 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
10:06:29 mmhat joins (~mmh@p200300f1c7160b83ee086bfffe095315.dip0.t-ipconnect.de)
10:06:42 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
10:08:07 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
10:08:14 × acidjnk_new quits (~acidjnk@dynamic-046-114-173-120.46.114.pool.telefonica.de) (Ping timeout: 268 seconds)
10:10:27 × atwm quits (~atwm@81.28.193.19) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:10:57 × gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
10:18:06 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
10:18:39 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
10:19:26 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
10:21:59 acidjnk_new joins (~acidjnk@dynamic-046-114-173-120.46.114.pool.telefonica.de)
10:22:54 × odnes quits (~odnes@109-178-162-164.pat.ren.cosmote.net) (Ping timeout: 264 seconds)
10:23:37 × gustik quits (~gustik@2a01:c844:2457:2220:475d:34f:d571:996f) (Quit: Leaving)
10:31:19 × ubert quits (~Thunderbi@2a02:8109:abc0:6434:dbe1:e0b6:a385:2fd6) (Remote host closed the connection)
10:31:31 ubert joins (~Thunderbi@2a02:8109:abc0:6434:5b4a:1ea:c071:1ecb)
10:37:27 × yax__ quits (~yax__@user/yax/x-9576643) (Quit: Lost terminal)
10:40:42 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
10:40:42 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
10:43:00 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 260 seconds)
10:43:28 × finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer)
10:43:52 × zeenk quits (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3) (Quit: Konversation terminated!)
10:44:27 jakalx parts (~jakalx@base.jakalx.net) ()
10:44:36 machinedgod joins (~machinedg@66.244.246.252)
10:45:50 × vysn quits (~vysn@user/vysn) (Read error: Connection reset by peer)
10:46:53 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:47:36 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
10:51:27 <Profpatsch> uwu
10:53:15 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
10:54:56 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
11:03:01 × quarkyalice_ quits (~alice@user/quarkyalice/x-8092822) (Remote host closed the connection)
11:03:19 quarkyalice_ joins (~alice@172.77.162.117)
11:03:20 × quarkyalice_ quits (~alice@172.77.162.117) (Changing host)
11:03:20 quarkyalice_ joins (~alice@user/quarkyalice/x-8092822)
11:08:12 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
11:12:29 × Kevin578 quits (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Read error: Connection reset by peer)
11:15:42 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Remote host closed the connection)
11:16:38 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
11:16:56 vglfr joins (~vglfr@coupling.penchant.volia.net)
11:18:05 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
11:18:50 img joins (~img@user/img)
11:23:27 × frost quits (~frost@user/frost) (Quit: Client closed)
11:23:28 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
11:23:29 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
11:25:49 xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp)
11:26:40 jpds joins (~jpds@gateway/tor-sasl/jpds)
11:29:54 lewisje joins (~lewisje@2001:470:1f11:14e:cd43:1885:128a:a771)
11:30:42 × acidjnk_new quits (~acidjnk@dynamic-046-114-173-120.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
11:31:29 × Kaipei quits (~Kaiepi@156.34.47.253) (Ping timeout: 268 seconds)
11:31:54 notzmv joins (~zmv@user/notzmv)
11:33:56 acidjnk_new joins (~acidjnk@dynamic-046-114-169-012.46.114.pool.telefonica.de)
11:36:29 frost joins (~frost@user/frost)
11:36:33 acidjnk joins (~acidjnk@dynamic-046-114-169-012.46.114.pool.telefonica.de)
11:37:54 jakalx joins (~jakalx@base.jakalx.net)
11:37:55 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
11:38:20 azimut joins (~azimut@gateway/tor-sasl/azimut)
11:39:09 × acidjnk_new quits (~acidjnk@dynamic-046-114-169-012.46.114.pool.telefonica.de) (Ping timeout: 246 seconds)
11:41:03 dyeplexer joins (~dyeplexer@user/dyeplexer)
11:42:17 odnes joins (~odnes@109-178-162-164.pat.ren.cosmote.net)
11:44:38 × alp quits (~alp@user/alp) (Ping timeout: 240 seconds)
11:47:31 × Schrostfutz quits (~Schrostfu@schettlerdck.tkn.tu-berlin.de) (Ping timeout: 268 seconds)
11:47:48 Kaipei joins (~Kaiepi@156.34.47.253)
11:50:30 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
11:50:42 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
11:51:19 odnes_ joins (~odnes@109-178-162-164.pat.ren.cosmote.net)
11:51:52 × odnes quits (~odnes@109-178-162-164.pat.ren.cosmote.net) (Read error: Connection reset by peer)
11:53:22 chomwitt joins (~chomwitt@2a02:587:dc1c:800:9086:accf:d98b:5e0d)
11:55:05 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
11:55:20 Surobaki joins (~surobaki@69.49-107-213.static.virginmediabusiness.co.uk)
11:56:39 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 246 seconds)
11:59:51 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Ping timeout: 268 seconds)
12:03:55 × ubert quits (~Thunderbi@2a02:8109:abc0:6434:5b4a:1ea:c071:1ecb) (Remote host closed the connection)
12:04:07 ubert joins (~Thunderbi@2a02:8109:abc0:6434:8b92:e555:3967:c2a6)
12:04:53 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
12:05:06 Haskelytic joins (~Haskelyti@118.179.211.17)
12:06:59 <Haskelytic> guys, im reading the haskell first principles book and in chapter 16 (functors) it says the law `fmap (f . g) = fmap f . fmap g` follows from `fmap id = id`
12:07:18 <Haskelytic> I'm struggling to see how as they just dropped that without any explanation
12:07:53 × lortabac quits (~lortabac@88.125.6.227) (Ping timeout: 255 seconds)
12:08:08 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
12:08:10 lortabac joins (~lortabac@2a01:e0a:541:b8f0:d403:38fe:64cf:db6d)
12:09:35 <merijn> Haskelytic: Well, it actually follows from "fmap id = id" *and* the type system
12:10:11 <merijn> Haskelytic: "fmap id = id" guarantees that 'fmap' cannot change "the structure" your mapping (i.e. lists remains the same length, trees, the same shape, etc.)
12:10:22 dextaa joins (~DV@user/dextaa)
12:10:45 <merijn> And the type system guarantees that if you have a function 'a -> b' that you fmap all 'a' in the input MUST be transformed into b's, else you'd get conflicting types
12:16:48 dyeplexer joins (~dyeplexer@user/dyeplexer)
12:21:34 atwm joins (~atwm@81.28.193.19)
12:21:51 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 246 seconds)
12:26:45 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:29:45 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 260 seconds)
12:31:15 machinedgod joins (~machinedg@66.244.246.252)
12:35:14 dyeplexer joins (~dyeplexer@user/dyeplexer)
12:36:07 Schrostfutz joins (~Schrostfu@schettlerdck.tkn.tu-berlin.de)
12:36:43 <tomjaguarpaw> Traversal' t a -> (a -> a -> Ordering) -> t -> t
12:36:58 <tomjaguarpaw> ^ This seems plausible. Has anyone got any experience with it? Does it exist somewhere?
12:37:17 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
12:38:00 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
12:38:06 <tomjaguarpaw> Oh, I guess it can be obtained via partsOf
12:38:42 × chomwitt quits (~chomwitt@2a02:587:dc1c:800:9086:accf:d98b:5e0d) (Ping timeout: 268 seconds)
12:44:52 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 268 seconds)
12:46:02 <Surobaki> Hi, can as-patterns only be used with lists? Or can they be used to refer to constructed datatypes too?
12:46:18 <geekosaur> anywhere a pattern can
12:46:26 machinedgod joins (~machinedg@66.244.246.252)
12:46:55 <merijn> > case Just 5 of x@(Just y) -> (x, y) -- you tell me ;)
12:46:57 <lambdabot> (Just 5,5)
12:47:38 zeenk joins (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3)
12:48:12 <geekosaur> keys conf@(XConfig {XMonad.modMask = modMask}) = …
12:48:42 <geekosaur> grabs the whole XConfig and uses record syntax to extract one field from it
12:49:59 <Surobaki> Oh great, thank you!
12:51:08 moonsheep joins (~user@user/moonsheep)
12:51:18 <moonsheep> How can I serialize an StdGen?
12:51:27 <moonsheep> It seems that internally it uses an SMGen, whose constructor I can't access
12:51:56 <merijn> eh, don't
12:52:41 <geekosaur> you can extract and serialize a seed iirc, if you actually need to do that
12:53:12 <merijn> I would say just store a seed from the beginning if you need reproducability
12:55:02 mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi)
12:55:39 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
12:55:49 <geekosaur> hm, can't extract a seed I guess. so what merijn said
12:55:56 <geekosaur> you probably want that anyway
12:56:13 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
12:57:37 nate4 joins (~nate@98.45.169.16)
12:59:18 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 246 seconds)
12:59:29 Sgeo joins (~Sgeo@user/sgeo)
13:00:42 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
13:02:20 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
13:02:30 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 264 seconds)
13:03:46 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
13:04:36 × kimjetwav quits (~user@2607:fea8:2340:da00:e1b5:3eed:5fa8:62c7) (Ping timeout: 268 seconds)
13:05:18 stef204 joins (~stef204@user/stef204)
13:08:03 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
13:08:08 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 248 seconds)
13:09:44 machinedgod joins (~machinedg@66.244.246.252)
13:11:23 × acidjnk quits (~acidjnk@dynamic-046-114-169-012.46.114.pool.telefonica.de) (Ping timeout: 268 seconds)
13:13:47 motherfsck joins (~motherfsc@user/motherfsck)
13:15:13 × atwm quits (~atwm@81.28.193.19) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:19:40 × ccntrq quits (~Thunderbi@2a00:6020:1383:c500:e7bb:73b6:1514:e3cc) (Remote host closed the connection)
13:21:25 <moonsheep> Ah, alright, I don't really need reproducibility anyway, but being able to serialize it would've saved me some trouble
13:21:27 <moonsheep> Thanks anyway!
13:22:05 × Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed)
13:23:50 Guest3 joins (~Guest3@43.21.135.77.rev.sfr.net)
13:26:45 <merijn> moonsheep: I mean, why can't you simply store the seed before creating the StdGen?
13:26:45 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
13:29:13 <moonsheep> I can yeah
13:29:21 <geekosaur> it might not really be about the StdGen as such, it might be serializing a structure that happens to contain a StdGen and not needing to special-case it?
13:29:31 <moonsheep> Exactly
13:29:34 <merijn> ah
13:29:53 <moonsheep> It was just a matter of convenience
13:33:01 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:35:04 × moonsheep quits (~user@user/moonsheep) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1))
13:35:29 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:38:55 Haskelytic joins (~Haskelyti@118.179.211.17)
13:40:08 × Schrostfutz quits (~Schrostfu@schettlerdck.tkn.tu-berlin.de) (Ping timeout: 255 seconds)
13:45:13 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
13:45:49 chomwitt joins (~chomwitt@2a02:587:dc1c:800:6c20:6100:5fd0:a681)
13:46:56 × noctux quits (~noctux@user/noctux) (Read error: Connection reset by peer)
13:47:12 noctux joins (~noctux@user/noctux)
13:49:07 Guest3 parts (~Guest3@43.21.135.77.rev.sfr.net) ()
13:49:54 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
13:51:41 shriekingnoise joins (~shrieking@201.212.175.181)
13:52:50 <yrlnry> Is there a way to write this with combinators instead of two explicit cases? v ?! Nothing = Nothing ; v ?! (Just i) = Just (V.! i)
13:53:05 <yrlnry> I tried doing something with right sections but I couldn't make it work.
13:53:45 <yrlnry> That second clause was wrong. It was supposed to say v ?! Nothing = Nothing ; v ?! (Just i) = Just (v V.! i)
13:54:16 <merijn> yrlnry: findWithDefault ?
13:54:31 <merijn> oh, wait nested lookups?
13:54:42 <merijn> yrlnry: Just use >>= ?
13:56:48 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
13:57:12 <yrlnry> I don't understand how >>= is applicable here.
13:57:43 <geekosaur> Maybe is a Monad
13:58:16 <merijn> > Nothing >>= \x -> Just (x+2)
13:58:18 <lambdabot> Nothing
13:58:24 <merijn> > Just 5 >>= \x -> Just (x+2)
13:58:26 <lambdabot> Just 7
13:58:30 <yrlnry> That I do understand, Thanks.
13:58:39 <tdammers> > (+ 2) <$> Nothing
13:58:41 <lambdabot> Nothing
13:58:46 <tdammers> > (+ 2) <$> Just 1
13:58:48 <geekosaur> substitute V.! for + there
13:58:48 <lambdabot> Just 3
14:00:18 arthurs115 joins (~arthurs11@163.5.10.106)
14:01:19 Lears joins (~Leary]@122-58-224-198-vdsl.sparkbb.co.nz)
14:01:20 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Ping timeout: 268 seconds)
14:01:33 × [Leary] quits (~Leary]@122-58-224-198-vdsl.sparkbb.co.nz) (Ping timeout: 276 seconds)
14:03:05 <yrlnry> Sorry, I still don't get it. ! is a function of two arguments Vector a -> Int -> a. I want to turn it into a function of two arguments Vector a -> f Int -> f a. Your example uses (+), which confuses me because its two arguments have the same type and I'm not sure whether you are applying f to the first or to the second argument.
14:03:06 × zeenk quits (~zeenk@2a02:2f04:a301:3d00:39df:1c4b:8a55:48d3) (Quit: Konversation terminated!)
14:03:22 × jgeerds quits (~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 272 seconds)
14:03:38 <yrlnry> Also your example has an explicit Just, which I don't want.
14:04:30 <geekosaur> it'd also be spelled `pure`. But see tdammers's example using Applicative, which may be closer to what you want
14:04:52 <yrlnry> I think so, yes.
14:06:17 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
14:07:38 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds)
14:08:04 motherfsck joins (~motherfsc@user/motherfsck)
14:08:08 <yrlnry> Thanks, I think the f <$> i form is one of the things I was looking for.
14:11:24 Schrostfutz joins (~Schrostfu@schettlerdck.tkn.tu-berlin.de)
14:12:05 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:d403:38fe:64cf:db6d) (Quit: WeeChat 2.8)
14:14:25 × feliix42 quits (~felix@gibbs.uberspace.de) (Read error: Connection reset by peer)
14:14:45 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
14:14:45 × AWizzArd quits (~code@gehrels.uberspace.de) (Read error: Connection reset by peer)
14:14:53 AWizzArd joins (~code@gehrels.uberspace.de)
14:16:27 <yrlnry> I have `class MJDHashable t where ...` and now I want to say that strings are instances. When I say `instance MJDHashable String where ...` ghci says: ` Illegal instance declaration for ‘MJDHashable String’ ... where T is not a synonym.`. Is the problem here really that String is a for [Char]?
14:16:35 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 255 seconds)
14:17:30 feliix42 joins (~felix@gibbs.uberspace.de)
14:18:03 × arthurs115 quits (~arthurs11@163.5.10.106) (Ping timeout: 246 seconds)
14:18:36 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 268 seconds)
14:19:27 vglfr joins (~vglfr@coupling.penchant.volia.net)
14:20:12 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
14:22:52 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
14:23:35 gmg joins (~user@user/gehmehgeh)
14:24:26 <geekosaur> yes
14:24:54 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
14:25:10 <geekosaur> note that this isn't just being pedantic, because an instance for String will overlap with instances for other lists
14:25:51 averell joins (~averell@user/averell)
14:25:59 <geekosaur> or at least complicate them
14:27:56 <geekosaur> in particular, it will overlap with instance MJDHashable a => MJDHashable [a] where …
14:28:00 <yrlnry> I see. I could do `instance MJDHashable a => instance MJDHashable [a]`, but I can't do this for a single specific a.
14:28:03 <yrlnry> Yes, just so.
14:28:27 <geekosaur> there's an extension which will let you do it for a specific a, but that just means you have two overlaps with the general one
14:28:48 <yrlnry> It seems like it could allow that, using the general instance for all the cases that aren't overridden by more specific definitions.
14:29:05 <geekosaur> it will try, but it makes no guarantees
14:29:25 <geekosaur> you can use pragmas to permit the overlap and ghc will try its best
14:30:00 <yrlnry> It might generate code to use the a => [a] definition for String, even if there is also a [Char] definition available?
14:30:53 <geekosaur> yes. it depends on what instances are in scope at the point where it needs to pass the dictionary
14:31:21 <yrlnry> That makes sense, thanks.
14:31:33 <geekosaur> as I understand it, things will work most reliably if all instances are in the same file and it's always imported
14:41:03 <yrlnry> I suppose `instance (Functor f, Functor g) => Functor (f . g) where fmap = fmap . fmap` doesn't work, but could we get around it by doing something like `class Composition a b ab | a b -> ab where ...` and then `instance (Functor f, Functor g, Composition f g fg) => Functor fg where ... ?
14:43:16 <dminuoso> yrlnry: Of course that works!
14:43:29 <yrlnry> The first one, or the second one, or both?
14:43:38 <dminuoso> The first one, except we need a surrogate newtype for it.
14:43:57 <merijn> yrlnry: That looks like reinventing Data.Compose
14:44:04 <dminuoso> ^-
14:44:12 <merijn> Eh, Data.Functor.Compose, I guess
14:44:18 <geekosaur> was gonna say
14:44:42 <dminuoso> yrlnry: Personally I prefer the name being :.: rather than Compose, it makes the functorial composition a bit more obvious
14:44:52 <yrlnry> Thanks, I will look into that.
14:44:56 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
14:45:40 acidjnk joins (~acidjnk@dynamic-046-114-169-012.46.114.pool.telefonica.de)
14:45:42 <yrlnry> How about that, awesome.
14:47:06 dextaa joins (~DV@user/dextaa)
14:50:14 × Schrostfutz quits (~Schrostfu@schettlerdck.tkn.tu-berlin.de) (Ping timeout: 272 seconds)
14:54:06 pleo joins (~pleo@user/pleo)
15:01:21 × mmhat quits (~mmh@p200300f1c7160b83ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5)
15:02:54 × odnes_ quits (~odnes@109-178-162-164.pat.ren.cosmote.net) (Quit: Leaving)
15:03:05 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:03:51 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:09:27 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
15:16:07 Schrostfutz joins (~Schrostfu@schettlerdck.tkn.tu-berlin.de)
15:18:26 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
15:26:31 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:26:45 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.5)
15:27:08 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
15:28:54 × Surobaki quits (~surobaki@69.49-107-213.static.virginmediabusiness.co.uk) (Ping timeout: 268 seconds)
15:33:16 × echoreply quits (~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) (Quit: WeeChat 2.8)
15:33:28 × Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed)
15:33:44 echoreply joins (~echoreply@45.32.163.16)
15:37:30 odnes joins (~odnes@109-178-162-164.pat.ren.cosmote.net)
15:37:48 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.5)
15:39:22 arthurs115 joins (~arthurs11@163.5.10.42)
15:39:47 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
15:41:13 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
15:43:06 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds)
15:43:26 × Schrostfutz quits (~Schrostfu@schettlerdck.tkn.tu-berlin.de) (Ping timeout: 255 seconds)
15:45:03 × odnes quits (~odnes@109-178-162-164.pat.ren.cosmote.net) (Remote host closed the connection)
15:47:20 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
15:55:54 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 264 seconds)
15:57:42 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:58:17 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
15:59:15 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
16:01:23 × pleo quits (~pleo@user/pleo) (Quit: quit)
16:02:16 eax_ parts (6ba2dd7b84@user/eax/x-8810663) ()
16:02:49 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Ping timeout: 268 seconds)
16:04:03 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
16:04:41 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
16:06:22 × mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
16:06:58 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:07:01 Haskelytic joins (~Haskelyti@118.179.211.17)
16:07:34 mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001)
16:09:32 × michalz quits (~michalz@185.246.204.97) (Read error: No route to host)
16:10:42 acidjnk_new joins (~acidjnk@dynamic-046-114-169-012.46.114.pool.telefonica.de)
16:10:56 × mbuf quits (~Shakthi@122.164.12.45) (Quit: Leaving)
16:12:43 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Quit: Ping timeout (120 seconds))
16:13:11 Goodbye_Vincent joins (cyvahl@freakshells.net)
16:13:38 × acidjnk quits (~acidjnk@dynamic-046-114-169-012.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
16:13:58 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
16:15:24 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Client Quit)
16:16:10 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
16:16:19 Goodbye_Vincent joins (~Goodbye_V@freakshells.net)
16:17:53 cosimone joins (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81)
16:19:59 × arthurs115 quits (~arthurs11@163.5.10.42) (Quit: arthurs115)
16:20:31 econo joins (uid147250@user/econo)
16:21:51 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:25:27 pleo joins (~pleo@user/pleo)
16:25:28 pseigo joins (~pseigo@d108-173-20-33.abhsia.telus.net)
16:28:49 × Goodbye_Vincent quits (~Goodbye_V@freakshells.net) (Quit: Ping timeout (120 seconds))
16:28:57 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:30:25 Goodbye_Vincent joins (~Goodbye_V@freakshells.net)
16:32:15 son0p joins (~ff@181.136.122.143)
16:34:36 jafarlihi joins (~user@188.253.239.229)
16:35:57 × phma quits (~phma@2001:5b0:2144:56f8:f543:9add:d16f:4fe4) (Read error: Connection reset by peer)
16:36:21 phma joins (~phma@host-67-44-208-95.hnremote.net)
16:37:36 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:38:20 michalz joins (~michalz@185.246.204.97)
16:38:45 <ephemient> https://github.com/BowenFu/hspp ... template magic scary
16:39:35 qhong_ joins (~qhong@rescomp-21-400677.stanford.edu)
16:39:35 × qhong quits (~qhong@rescomp-21-400677.stanford.edu) (Read error: Connection reset by peer)
16:42:40 × frost quits (~frost@user/frost) (Quit: Client closed)
16:43:12 Topsi joins (~Topsi@37.84.228.224)
16:43:55 × Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed)
16:48:20 aeka` joins (~aeka@2606:6080:1001:e:2e9c:bad5:dbdd:84ea)
16:49:11 × aeka quits (~aeka@user/hiruji) (Ping timeout: 256 seconds)
16:49:11 aeka` is now known as aeka
16:49:30 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
16:52:03 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
16:53:51 × MajorBiscuit quits (~MajorBisc@c-001-020-035.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.5)
16:54:05 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 255 seconds)
16:56:50 yauhsien joins (~yauhsien@61-231-28-31.dynamic-ip.hinet.net)
16:58:41 × pseigo quits (~pseigo@d108-173-20-33.abhsia.telus.net) (Quit: left)
16:58:52 pseigo joins (~pseigo@d108-173-20-33.abhsia.telus.net)
16:59:07 nate4 joins (~nate@98.45.169.16)
17:01:09 × yauhsien quits (~yauhsien@61-231-28-31.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
17:02:01 × mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 268 seconds)
17:03:57 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds)
17:04:26 Haskelytic joins (~Haskelyti@118.179.211.17)
17:04:49 <Haskelytic> question about arbitrary / coarbitrary in QuickCheck
17:04:56 <Haskelytic> why is the naming upside down
17:05:12 <Haskelytic> coarbitrary for the domain, arbitrary for codomain
17:05:38 <Haskelytic> it would make more sense (naming wise) to be the other way round
17:05:41 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:05:44 <Haskelytic> sorry if this sounds like a stupid question lol
17:06:04 <shapr> huh, I hadn't thought of it that way
17:07:06 jakalx joins (~jakalx@base.jakalx.net)
17:07:18 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
17:09:52 <geekosaur> afaik it's just because Arbitrary came first
17:11:14 Topsi1 joins (~Topsi@host-88-217-154-179.customer.m-online.net)
17:12:37 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
17:13:07 × Topsi quits (~Topsi@37.84.228.224) (Ping timeout: 268 seconds)
17:13:07 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 268 seconds)
17:16:11 cdepillabout[m] joins (~cdepillab@2001:470:69fc:105::3d3)
17:16:34 <int-e> I think the naming is correct as is. "Arbitrary" is named by functionality. "Coarbitrary" is dual to that in a reasonable sense.
17:18:33 merijn joins (~merijn@c-001-001-028.client.esciencecenter.eduvpn.nl)
17:18:58 gmg joins (~user@user/gehmehgeh)
17:19:04 × ubert quits (~Thunderbi@2a02:8109:abc0:6434:8b92:e555:3967:c2a6) (Remote host closed the connection)
17:20:16 × Topsi1 quits (~Topsi@host-88-217-154-179.customer.m-online.net) (Read error: Connection reset by peer)
17:20:31 × jafarlihi quits (~user@188.253.239.229) (Ping timeout: 268 seconds)
17:23:10 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Remote host closed the connection)
17:24:11 gascOwn joins (~Gascown@151.16.46.212)
17:24:30 <gascOwn> hi everybody, new Haskeller
17:24:42 <monochrom> In retrospect, possibly it is the "domain-codomain" pair that's backwards.
17:25:17 × gascOwn quits (~Gascown@151.16.46.212) (Remote host closed the connection)
17:25:45 gascOwn joins (~Gascown@151.16.46.212)
17:26:03 <monochrom> Or maybe not. Instead, I might be OK with s/Coarbitrary/Contraarbitary/
17:26:04 <int-e> I guess "domain" is kind of meaningless
17:26:15 jafarlihi joins (~user@188.253.228.60)
17:26:51 <monochrom> At a meta level, it looks like Wadler's law is getting worse.
17:27:03 <geekosaur> gascOwn, hello
17:27:08 <monochrom> It is no longer fashionable to pick on syntax. Now people have to pick on spellings, too.
17:27:08 <int-e> (So when you have two sets, as in A -> B, then it could apply to either one.)
17:27:34 <int-e> My pet peeve is still the reflect/reify pair.
17:27:34 × Vajb quits (~Vajb@85-76-113-230-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
17:28:07 <int-e> (refelctions are immaterial, so when given values and types, the reflections should be the types... no? meh.)
17:28:08 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
17:30:30 <int-e> (I used to feel more strongly about this though... the prevailing terminology is analogous to whe Java world, where the reflection methods are about turning types into values describing them.)
17:33:05 <int-e> Btw, Arbitrary a can be thought of as providing a function that takes a seed and produces a new seed and a value, s -> (s, a), and Coarbitrary as one that does the opposite, (s, a) -> s, making those dual in the proper categorical sense.
17:33:06 <monochrom> Ah but we also say "my concrete actions are reflections of my abstract ideas"
17:33:41 coot joins (~coot@213.134.190.95)
17:33:47 <monochrom> This is what happens when programmers insist on "daily" "intuitive" "plain English" nomenclature.
17:37:25 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
17:38:07 <dolio> co- just means some kind of opposite of another concept. It makes no sense to expect that the named concept in a pair will always be related to every other named concept, and not the opposite of a named concept.
17:38:23 <dolio> Sometimes both the thing and its opposite are named.
17:41:24 <monochrom> One might say, they are co-named. >:)
17:42:41 <int-e> . o O ( consider a co-edge in a graph, from a co-source to a co-target )
17:43:09 <int-e> (directed graph)
17:46:25 × jafarlihi quits (~user@188.253.228.60) (Ping timeout: 268 seconds)
17:46:25 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 268 seconds)
17:50:44 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
17:52:50 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
17:53:12 × merijn quits (~merijn@c-001-001-028.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
17:54:49 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
17:56:00 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
17:56:02 jafarlihi joins (~user@188.253.228.60)
17:56:24 × jafarlihi quits (~user@188.253.228.60) (Client Quit)
18:00:30 <EvanR> int-e, the idea of "material" is evocative and effective as part of an argument.
18:01:18 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 264 seconds)
18:01:28 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Ping timeout: 248 seconds)
18:01:57 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Remote host closed the connection)
18:01:57 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
18:02:47 <EvanR> but I distinctly remember someone reacting badly to justification involving material
18:02:56 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 255 seconds)
18:03:09 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
18:03:13 <EvanR> I can't remember if it was programming philosophy or regular philosophy
18:04:22 <monochrom> Sorry, what is "justification involving material"?
18:04:45 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
18:05:15 <monochrom> I am thinking "empirical evidence" but I'm sure I'm wrong.
18:05:45 <EvanR> in this case, the direction of reflection should be toward the immaterial
18:06:52 <monochrom> OK I'll just say haha.
18:07:21 <monochrom> And contribute "co-material" :)
18:07:24 × Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed)
18:08:51 <EvanR> in high school optics you were required to identify what was a virtual image and what was a real image. That never made any sense xD
18:09:26 <dolio> If you get values that describe types, then the values are the reflection.
18:09:36 <dolio> If you get types that describe values, then the types are the reflection.
18:09:54 <dolio> It's just like co-.
18:10:37 <EvanR> that solves it
18:11:56 <int-e> EvanR: Yeah I did think that I had a good argument... but fighting the published literature and existing code is a losing fight so I've more or less made my peace with it.
18:12:21 <int-e> Though I still like bringing it up on occasion. :)
18:13:05 × nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
18:14:32 <int-e> EvanR: The virtual/real image thing... funny, I never questioned that when I was in highschool. You do have a point.
18:15:13 <int-e> (Well, the way a real image becomes real is if you hold a sheet of paper in that plane.)
18:15:25 hochata parts (~hochata@user/hochata) ()
18:15:33 <EvanR> uh huh
18:15:34 <int-e> (Since there are actual photons there to intercept)
18:15:38 <monochrom> OK, when do we say "reify"?
18:15:52 <EvanR> there are actual photons regardless lol, since you can see the image
18:16:23 <int-e> EvanR: if you hold a sheet of paper in the plane with a virtual image, you'll see photons but they won't produce that image
18:16:46 × gascOwn quits (~Gascown@151.16.46.212) (Remote host closed the connection)
18:16:51 <int-e> Anyway, I think that's how the distinction makes some sense.
18:17:10 gascOwn joins (~Gascown@151.16.46.212)
18:17:42 <EvanR> I know the words you say, can say them, but in the manner of chinese room thought experiment
18:17:52 <int-e> In the end the only "real" images are on the retina of an eye. :P (Oh no, I guess now we have to define "real"... though maybe that was the issue all along.)
18:18:19 <monochrom> You know, "real image" was an oxymoron in the first place :)
18:18:28 <EvanR> now you're talking
18:18:48 <monochrom> "I have a real NFT" or something
18:19:37 <monochrom> We need to add real images and virtual images to the lens library!
18:20:30 <geekosaur> how do you know they're not already there? 🙂
18:22:05 <int-e> EvanR: Ah, here's an issue: The distinction doesn't make so much sense with planar mirrors... it makes more sense with lenses (the physical kind)... since there you get focal planes on the way, rather than just the originating object and whatever happens in your eye.
18:22:37 <int-e> of course trust computer science to give "virtual images" a whole new meaning
18:23:53 <darkling> We're great at stealing other people's words.
18:24:01 <geekosaur> virtual images live in the cloud…
18:24:07 <EvanR> criteria to get the right answer: real images are right side up, virtual image is upside down. Totally different!
18:24:13 <int-e> "you took the words right out of my mouth"
18:24:30 <EvanR> doing actual work with actual optics probably makes the distinction make sense for practical reasons
18:24:58 <int-e> EvanR: oh yeah... a classic: why do wall mirrors flip left and right but not up and down?
18:25:10 <EvanR> lol no
18:25:16 <geekosaur> heh
18:25:37 <EvanR> "they do reflect left right... handedness"
18:25:58 <EvanR> oh that's what you said
18:26:01 <monochrom> geekosaur, is that why I see Santa's image in the cloud? :)
18:26:26 × pleo quits (~pleo@user/pleo) (Quit: quit)
18:26:27 <int-e> (They flip back and front. The left/right flip is psychological: we identify with our mirror image.)
18:27:01 <EvanR> yeah it doesn't flip left right at all
18:27:23 <geekosaur> we just expect it to because someone facoing us is turned around relative to us
18:27:27 <geekosaur> *facing
18:27:33 <EvanR> as evidenced by text written on glass shown in the mirror
18:27:46 <monochrom> Yeah you rotate yourself about a vertical axis to face the mirror.
18:29:19 BusConscious joins (~martin@ip5f5bdf0d.dynamic.kabel-deutschland.de)
18:30:47 <BusConscious> hello everyone my exitcode-stdio test suite is just freezing and does not print anything
18:31:05 <BusConscious> I use defaultMain from Test.Framework
18:31:53 <BusConscious> it doesn't even react to print statements in the IO actions I bind into defaultMain, but maybe this is because of lazyness
18:32:14 <dolio> int-e: That always strikes me as one of the most poorly explained simple topics in physics.
18:32:25 <geekosaur> print is normally strict, and in fact is what usually forces lazy expressions if nothing else does
18:32:37 <BusConscious> when I don't bind to defaultMain, it doesn 't freeze, but obvs also isn't running the tests
18:34:14 <monochrom> Perhaps you really have an infinite-loop bug.
18:36:22 × wenjie quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.5)
18:36:40 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 248 seconds)
18:37:02 <BusConscious> mhm I'm not doing anything too special inside of these tests: https://paste.tomsmeding.com/jgchpHBQ
18:37:39 <BusConscious> fizbin: I'm working off of your example https://github.com/fizbin/cabal-demo-backflip/blob/master/test/BackflipShellTests.hs
18:38:07 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
18:38:51 <BusConscious> ah I may have an idea
18:39:31 <BusConscious> ah the issue is in runTest.s
18:39:36 <BusConscious> runTest.sh
18:40:29 <int-e> BusConscious: ah, so the first "print" worked?
18:40:51 <int-e> (line 15)
18:40:58 <BusConscious> nope
18:41:00 <BusConscious> nothing
18:41:02 <int-e> huh
18:41:33 <BusConscious> but when I run runTest.sh without any arguments it waits for the $? and hangs itself up
18:41:48 <int-e> I guess it depends on how this is being run... stdout might be intercepted
18:42:06 <BusConscious> so this is why I now assueme, that it is the scripts fault
18:42:09 slack1256 joins (~slack1256@191.125.227.211)
18:42:15 <BusConscious> int-e: what do you mean?
18:43:06 <BusConscious> for good measure this is the script: https://paste.tomsmeding.com/2mnw6Km7
18:43:10 <int-e> AIUI, the program, as is, should definitely print that list of scripts. But that doesn't necessarily mean that you get to see that output.
18:43:42 <shiraeeshi[m]> there is a latin word "reflexio" that means something like "coming back"
18:44:15 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
18:44:34 <BusConscious> ah I see it reads stdout from a pipe and waits until it is closed i.e. the test terminated
18:44:37 <BusConscious> interesting
18:44:52 <int-e> BusConscious: $1 > bash.stdout 2> kell.errout <-- should be bash.errout?
18:45:08 atwm joins (~atwm@81.28.193.19)
18:45:19 <shiraeeshi[m]> so "reflexio" means "applying something to oneself", for example "thinking about oneself"
18:45:31 <slack1256> is `ghc -ddump-stranal -o example example.hs` supposed to print something? I am using ghc 9.2.2 but I don't see any output. Can anyone check on their end?
18:45:42 <int-e> BusConscious: but you're better equipped to figure out what's wrong with the script
18:45:49 <int-e> (if anything)
18:46:05 <BusConscious> int-e: aah
18:46:12 <slack1256> As a test case, you can use this file https://fixpt.de/blog/2017-12-04-strictness-analysis-part-1.html .
18:46:13 <BusConscious> thanks
18:46:16 <BusConscious> this did it
18:46:25 <shiraeeshi[m]> so in Java, when a program manipulates itself, it's called "reflection"
18:46:49 <BusConscious> I just assumed it work with an argument
18:46:53 <shiraeeshi[m]> not in an optical sense, but in the "coming back" sense
18:48:22 <monochrom> slack1256: Yeah interesting, it doesn't output what I thought it would, neither stdout nor stderr nor a file.
18:48:47 <slack1256> monochrom: So I am not crazy!
18:49:05 <slack1256> -ddump-str-signatures doesn't work also.
18:49:06 <dolio> slack1256: Was it already compiled before? You might have to -fforce-recomp.
18:49:11 <monochrom> Ah need -O
18:49:28 <slack1256> Oh yeah, on the real example I used `-fforce-recomp`.
18:49:56 <monochrom> Upon reflection I guess without optimization there is no point doing any analysis :)
18:50:27 <slack1256> monochrom: Oh good point
18:50:28 <int-e> no need to be strict!
18:50:41 <slack1256> I thought that by default ghc compiled with -O1.
18:50:50 Haskelytic joins (~Haskelyti@118.179.211.17)
18:50:51 <slack1256> monochrom: Thank you.
18:51:04 <monochrom> -O1 is cabal's default
18:51:15 <slack1256> Oh, that explains it.
18:51:42 <yin> why is -O1 the default?
18:52:34 <Clint> because it's the best one
18:52:43 pavonia joins (~user@user/siracusa)
18:52:48 <geekosaur[m]> Because -O2 is unreliable optimizations that can make things worse
18:52:58 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
18:53:01 <slack1256> And -O0 is "no demand analysis done"
18:53:04 <int-e> And -O0 makes most programs much slower and memory hungry.
18:53:09 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
18:53:42 <dolio> I don't think O2 makes things worse to a degree that would be worrying. It just takes a lot longer for no tangible benefit in most cases.
18:54:07 <int-e> I think the main issue with -O2 is that compilation time increases quite significantly.
18:55:15 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
18:55:16 <int-e> ...as you said.
18:55:37 <yin> i sometimes get significant opt from O1 to O2
18:56:12 <yin> but yeah comp time
18:56:13 <monochrom> Yes, but it's probably best left to a case-by-case conscious decision.
18:56:21 <dolio> Sometimes you can tell cabal to do -O2.
18:56:40 × gascOwn quits (~Gascown@151.16.46.212) (Quit: Leaving)
18:57:07 <yin> well, only way to know is to try it so...
18:57:31 <monochrom> http://www.vex.net/~trebla/haskell/cabal-cabal.xhtml#O2
18:58:18 × shapr quits (~user@2600:4040:2d31:7100:3ad0:84b6:f5f:d1d0) (Remote host closed the connection)
18:58:23 <Clint> monochrom: and do you?
18:58:36 <monochrom> I don't.
18:59:54 <geekosaur[m]> I build my xmonad configuration with -O2 but it's tiny
19:00:03 <monochrom> No Haskell Weekly News yet :(
19:00:22 <slack1256> The demand analysis is neat a optimization pass. It also gives you a neat heuristic to give people to make their programs faster: expose your program as a bunch of small pipelines. On each one provide a "good consumer" so the demands are clear and let "lazy eval/deman driven evaluation" do the rest.
19:01:17 × atwm quits (~atwm@81.28.193.19) (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:01:40 <slack1256> For example: using `put` on a state monad is a bad consumer. That is apparent from the output of this pass. You better force before putting a value on there because you don't know when is it gonna be demanded.
19:02:17 atwm joins (~atwm@81.28.193.19)
19:04:10 Pickchea joins (~private@user/pickchea)
19:05:39 <Haskelytic> "One thing we notice about this type is that the type param-
19:05:40 <Haskelytic> eter 𝑏 is a phantom type. It has no corresponding witness at
19:05:40 <Haskelytic> the value/term level."
19:05:47 <Haskelytic> what is this thing called "witness"
19:06:34 <Haskelytic> the type in question is `newtype Constant a b = Constant a`
19:07:11 <geekosaur> imo that's bad phrasing
19:07:15 <slack1256> `Constant (3 :: Int)` is a term/witness/proof that the type `Constant Int b` is inhabited.
19:07:21 <monochrom> You can safely delete "witness at the" for now.
19:08:30 <monochrom> Eventually when you look at things like the Curry-Howard correspondence, you see why it can make sense to say that a value is a "witness".
19:08:52 <yrlnry> Earlier I had an issue with wanting to turn Vector.! from a `Vector a -> Int -> a` into a `Vector a -> Maybe Int -> Maybe a`, and various things were suggested. But in the larger context (which I didn't explain) I found a better solution, which was to write my whole function, including the troublesome application of (!), as a do-block running in the Maybe monad.
19:08:57 <BusConscious> can I specificy the binary folder in cabal?
19:08:59 <dolio> Haskelytic: It's kind of sloppy use of terminology. It's probably derived from speaking about proofs of propositions. When you prove `∃x. P x`, the chosen value of `x` for which `P` holds is the 'witness' given in the proof.
19:09:49 <geekosaur> yrlnry, that was suggested by several of us, although we said use (>>😃 instead (which is what do blocks turn into)
19:09:52 <geekosaur> er
19:09:54 <monochrom> But yeah the Curry-Howard correspondence is not necessary everyday, and even when it's necessary, saying "witness" is not always necessary either.
19:09:59 <BusConscious> because rn it builds to dist-newstyle/build/$buildhost/ghc-$ghcversion/kell-$kellversion/kell/build/kell
19:10:16 <Haskelytic> I've heard of this Curry-Howard (proofs as types) idea before and kind of have an intuitive feel for it but I was thrown off by the phrasing
19:10:17 <BusConscious> and I don't want to find out all of these variables in CI
19:10:22 <Haskelytic> Thanks guys
19:10:34 <monochrom> Is this from the Haskell Wiki? I can see how over-enthusiastic authors add distracting advanced information there, since they do it all the time.
19:10:37 <yrlnry> geekosaur: I realize that now, but I didn't understand the suggestion at the time, and I think I said so.
19:10:38 <geekosaur> BusConscious, that looks like you did cabal build. for a binary, cabal install names sense, and you can specify a directory other than the default ~/.cabal/bin
19:10:48 <geekosaur> *makes sense
19:10:49 <Haskelytic> monochrom: this is from the "haskell from first principles" book
19:10:54 <dolio> Or you could expand things to say that a term construction like `(w, p)` "witnesses" the truth of `∃ x. P x` when `p` is a proof of `P w`.
19:11:04 <Haskelytic> honestly it's a decent book but I wish the authors would not introduce terms without definition
19:11:06 <Haskelytic> :)
19:11:21 <BusConscious> geekosaur: Can I cabal install in githubs CI?
19:11:21 <monochrom> Well, I guess Chris Allen also adds distracting advanced information all the time...
19:11:30 <BusConscious> well I guess I will have to try
19:12:04 <monochrom> Bit by bit my belief of his care for pedogogy is wearing off.
19:12:06 <Haskelytic> dolio: honestly, i'm not advanced enough to see why that would matter to a non-logician :)
19:12:09 <geekosaur> use --installdir to specify where to install it. you probably also want --install-method=copy and maybe --overwrite-policy=always
19:12:14 <monochrom> perhaps s/ of / in /
19:12:36 haskell_apprenti joins (~haskell_a@d-216-189-180-13.fl.cpe.atlanticbb.net)
19:12:42 <Haskelytic> monochrom: speaking of pedagogy, the Haskell community has a serious problem with it :)
19:12:43 <dolio> It's just jargon.
19:12:53 <yrlnry> I am not complaining. I feel like we had a good outcome. I am always grateful for your advice and guidance, which is so courteously given.
19:12:59 <geekosaur> Haskelytic, eventually it will make sense. it just doesn't belong in a book for beginners
19:13:23 <monochrom> I don't even think it's necessary, even when it makes sense.
19:13:38 <geekosaur> (the practical meaning of a witness is that it's a proof that something is not bottom/nontermination)
19:13:49 slac33932 joins (~slack1256@191.126.99.75)
19:14:01 <haskell_apprenti> question - I'm having some trouble importing a module from a file in an other directory, is there an easy way to do that in VSCode?
19:14:42 <monochrom> This is why Unpopular Opinion: Enthusiasm is the anti-thesis to pedagogy.
19:15:18 <monochrom> To properly teaching, you keep calm and do the cold calculation of what you don't need to tell the students.
19:15:19 <haskell_apprenti> DirA/fileA DirB/fileB, ModuleB is in fileB. I tried "import DirB.ModuleB", but it didn't work
19:15:31 mikoto-chan joins (~mikoto-ch@62.237.32.210)
19:15:49 <haskell_apprenti> trying to import to ModuleA
19:15:50 <monochrom> Not excited and "oh btw I want to tell you about 2-categories too!"
19:15:56 merijn joins (~merijn@c-001-001-028.client.esciencecenter.eduvpn.nl)
19:16:18 × slack1256 quits (~slack1256@191.125.227.211) (Ping timeout: 264 seconds)
19:16:39 <Haskelytic> monochrom: I faced one too many enthusiastic teachers before so I swore not to perpetuate the suffering :)
19:16:56 <Haskelytic> by not teaching anyone ;)
19:17:08 <shiraeeshi[m]> actually, I think Java programs can't manipulate themselves, even with reflection. They can just inspect themselves, lifting themselves to the meta-level by doing that. "Programs manipulating themselves" - that's in the Lisp department.
19:17:26 <EvanR> proposition (problem) 2 from euclid, from given point A place a straight line equal (in length) to given straight line BC. A picture of doing this would be a witness (that that problem can be solved)
19:19:04 <geekosaur> haskell_apprenti, that would work if it were DirA/DirB instead of DirA and DirB being on the same level. you need to change the `src` stanza in your stack.yaml or cabal.project for the other way to work
19:19:12 <dolio> Seems like that depends on what "manipulate themselves" means.
19:19:35 <Haskelytic> EvanR: I have always found geometry a bit of the uncanny valley because, unlike symbolic formalisms, you kind of need to make appeals to intuition or previously established results transitively derived from said intuition
19:19:54 <Haskelytic> Maybe that's why I always sucked at geometry and found myself drooling on Haskell :)
19:20:07 <Haskelytic> but thanks for that example
19:20:10 <EvanR> later axiomatic formulations of geometry made it like you said, purely symbolic
19:20:17 <dolio> I don'
19:20:20 <EvanR> and something was lost xD
19:20:28 <dolio> Er. I don't know. I don't really like geometry, either.
19:20:30 × mikoto-chan quits (~mikoto-ch@62.237.32.210) (Ping timeout: 264 seconds)
19:20:35 <haskell_apprenti> Thanks geekosaur - this isn't in a stack or cabal project yet though, just loose haskell files - I guess I need to build a project for it to work though?
19:20:50 <monochrom> I used Java reflection to load students' *.class files into some kind of API sandbox, so for example they couldn't do I/O.
19:20:52 <geekosaur> ghc isn't smart enough to do what you want by itself
19:20:54 <Haskelytic> EvanR: the way I see it, if you shift to pure symbols for geometric arguments, nobody besides those in your well-informed clique will ever make heads or tails of it :)
19:21:04 <EvanR> correct
19:21:08 <Haskelytic> so do you really have knowledge XD
19:21:09 <dolio> That's my peeve with a lot of mathematicians. They always start going, "let me show you this geometric thing."
19:21:34 <dolio> But when you show me geometry, I don't trust you.
19:21:41 <geekosaur> well, there are ways to specify source directories, I think
19:21:53 <EvanR> hey that's how I feel about set theory! xD
19:21:56 <int-e> dolio: right, when it comes to rigor, you gotta draw the line somewhere
19:21:58 <Haskelytic> dolio: high school geometry must have been fun for you eh
19:22:27 cyanide3dinner joins (~cyanide4d@106.201.249.151)
19:22:31 <monochrom> Haha that's a great pun.
19:22:38 <haskell_apprenti> Im not sure what magic VSCode is doing to say i can or can't import things if its not in a project
19:22:42 <monochrom> (Did you intend it? :) )
19:22:43 <geekosaur> haskell_apprenti, try ghc -i../DirB
19:22:44 mikoto-chan joins (~mikoto-ch@62.237.32.210)
19:22:53 <EvanR> punintended
19:23:03 <geekosaur> sorry, I think that might be -i..
19:23:07 <int-e> monochrom: will it be funnier if I feign ignorance?
19:23:48 <monochrom> I think it's equally funny either way, no worries.
19:23:52 <dolio> Haskelytic: I don't recall enjoying it as much. But I think it actually might have been the most rigorous proof-y stuff in high school. Because it was actually deductive proofs with inference rules.
19:24:30 <EvanR> which has been the point of geometry education since the elements, teaching logic
19:24:30 <dolio> What I don't trust in geometry are pictures. But in school you had to use inference rules about the pictures to actually prove stuff.
19:24:38 <Haskelytic> int-e: thanks for that pun got a good chuckle!
19:25:08 jgeerds joins (~jgeerds@55d45f48.access.ecotel.net)
19:26:18 <haskell_apprenti> so far i haven't need to compile it - i've just been loading scripts with :l
19:26:19 <EvanR> I just found a constructive version of euclid which doesn't involve classical logic, and so you could hypothetically compute the constructions, in the sense of displaying them on screen from their steps
19:26:46 <haskell_apprenti> While in ghci. does that also compile under the hood?
19:26:53 <EvanR> it uses a small number of possible moves, less than euclid used
19:26:57 <geekosaur> to bytecode, yes
19:27:06 <Haskelytic> EvanR: oh nice! a link?
19:27:13 <geekosaur> although if you pass -fobject-code it will compile to native code
19:27:17 <EvanR> it's gets a bit hairy near the end for reasons
19:27:26 <dolio> Also, I haven't done a lot of geometry, since I don't like it. So mathematicians telling me to think about geometric stuff doesn't actually help most of the time.
19:27:30 <EvanR> but seems technically right
19:27:39 <EvanR> http://www.michaelbeeson.com/research/papers/ConstructiveGeometryFinalPreprintVersion.pdf
19:27:52 × haskell_apprenti quits (~haskell_a@d-216-189-180-13.fl.cpe.atlanticbb.net) (Quit: Client closed)
19:28:10 × mikoto-chan quits (~mikoto-ch@62.237.32.210) (Ping timeout: 268 seconds)
19:28:22 yax__ joins (~yax__@user/yax/x-9576643)
19:28:52 <yax__> how do i not make cabal build put the executable in a really obscure dir?
19:29:20 <geekosaur> you don't. you run cabal install to install it to a public dir
19:29:24 <shiraeeshi[m]> "programs manipulating themselves - that's in the Lisp department", oh, JavaScript too
19:29:44 <geekosaur> [30 19:12:09] <geekosaur> use --installdir to specify where to install it. you probably also want --install-method=copy and maybe --overwrite-policy=always
19:30:01 mikoto-chan joins (~mikoto-ch@85-76-4-157-nat.elisa-mobile.fi)
19:30:04 <yax__> mhm so no other way but cabal install, aight
19:30:08 pleo joins (~pleo@user/pleo)
19:30:12 ARJ0019 joins (~arj0019@162.218.254.7)
19:30:19 <yax__> thanks
19:30:21 <geekosaur> there's also cabal list-bin to get the path, then do whatever with it
19:31:03 × stef204 quits (~stef204@user/stef204) (Quit: WeeChat 3.5)
19:31:20 <yax__> oh
19:31:39 renzhi joins (~xp@2607:fa49:6500:b100::b399)
19:32:32 <EvanR> Haskelytic, also I lied, the real witness would be a motivating picture and then a proof that it actually solves the problem as stated
19:34:19 <dolio> The picture would be the witness in the first sense I wrote.
19:34:41 <dolio> It's one of many possible pictures you could draw that satisfy the condition.
19:35:16 <EvanR> oh ok
19:35:19 <yax__> just write it in a lisp
19:36:07 <dolio> The whole proof is the picture together with the proof that the picture has the desired property.
19:36:09 <EvanR> yes the proof is about that picture, and we're identifying the picture with the first component of the pair
19:36:22 <EvanR> calling that the witness
19:36:38 <yax__> comes with a copy of category theory for programmers
19:38:30 × mikoto-chan quits (~mikoto-ch@85-76-4-157-nat.elisa-mobile.fi) (Ping timeout: 264 seconds)
19:39:28 mikoto-chan joins (~mikoto-ch@85-76-4-157-nat.elisa-mobile.fi)
19:40:00 <Haskelytic> https://paste.tomsmeding.com/pwEeZyhi
19:40:26 <Haskelytic> I was trying to understand a GHC error message by attempting to find out what it must have deduced from the bad definition above
19:40:40 <Haskelytic> is this roughly accurate?
19:42:22 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
19:45:33 <EvanR> fmap f (Wrap fa) = Wrap (fmap f fa) ?
19:46:27 <EvanR> f fa means a = f a
19:46:47 <EvanR> so many different f's xD
19:47:59 <geekosaur> the analysis looked reasonably correct to me, although highlighting the alpha-rename of one of the fs to g would have made things a little clearer
19:48:03 <Haskelytic> haha sorry i lost track of variables haha
19:49:00 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:49:15 <Haskelytic> geekosaur: yeah i'll definitely do that before dumping here next time :)
19:49:18 <EvanR> to play inference engine, you can introduce fresh "unknown" variables names for types like a1, a2, etc
19:49:57 kimjetwav joins (~user@2607:fea8:2340:da00:efc1:2d50:b0df:6b8b)
19:50:09 <Haskelytic> EvanR: thanks for the tip!
19:50:29 × merijn quits (~merijn@c-001-001-028.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
19:50:45 <Haskelytic> The GHC typechecker feels like magic to me so I thought I'll try to reverse engineer it myself on simple cases
19:51:53 <geekosaur> it's really not magic, at least until you start getting into type families or functional dependencies
19:53:38 × BusConscious quits (~martin@ip5f5bdf0d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
19:54:04 <EvanR> I'm still not 100% sure how it does just basic type classes xD
19:55:04 × mikoto-chan quits (~mikoto-ch@85-76-4-157-nat.elisa-mobile.fi) (Ping timeout: 248 seconds)
19:55:35 jmdaemon joins (~jmdaemon@user/jmdaemon)
20:00:34 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:01:02 <Haskelytic> wow this book is kind of crazy :)
20:01:08 <Haskelytic> I just learned about rank N types
20:01:10 <yax__> which
20:01:28 <Haskelytic> `type Nat f g = forall a. f a -> g a`
20:01:37 <Haskelytic> yax__: haskell from first principles
20:01:55 <Haskelytic> the authors just threw that in there in a chapter on functors
20:03:25 onosendi joins (sid552923@user/onosendi)
20:03:37 onosendi parts (sid552923@user/onosendi) (WeeChat 3.4.1)
20:04:03 <Haskelytic> natural transformations something something :)
20:04:08 <Haskelytic> is this another category theory term
20:04:54 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
20:08:29 slack1256 joins (~slack1256@191.126.227.81)
20:08:51 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:09:34 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
20:09:47 <EvanR> yeah
20:10:14 <EvanR> morphisms are a thing between objects, functors are a thing between categories, natural transformations are a thing between functors
20:10:30 × slac33932 quits (~slack1256@191.126.99.75) (Ping timeout: 246 seconds)
20:11:20 <EvanR> ok, to make that seem cooler, functors are a thing between morphisms (in the source and target category)
20:11:43 <yax__> functors are morphisms between morphisms
20:11:53 <EvanR> also that
20:14:17 × Unhammer quits (~Unhammer@user/unhammer) (Ping timeout: 255 seconds)
20:14:20 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
20:20:16 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:25:56 Vajb joins (~Vajb@2001:999:48c:99ca:b00c:585c:3999:aa8b)
20:28:51 Unhammer joins (~Unhammer@user/unhammer)
20:30:39 elkcl_ joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
20:31:19 × elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 256 seconds)
20:31:20 elkcl_ is now known as elkcl
20:33:29 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:33:32 × coot quits (~coot@213.134.190.95) (Quit: coot)
20:33:33 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Remote host closed the connection)
20:34:53 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:36:24 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:39:12 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
20:43:08 <yrlnry> I have this monad pipeline: `getIndex k m >>= vec V.! >>= Just . snd`. The `>>= Just . snd` there is bugging me, I feel like something is redundant. Is there a law that lets us rewrite expressions of the form `>>= (f . g)`?
20:44:29 <geekosaur> not sure of that but I think that's <$> snd
20:44:54 <geekosaur> hm, no,m that's flipped
20:45:09 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 246 seconds)
20:45:14 <geekosaur> >>= pure . foo is fmap foo
20:46:20 <yrlnry> Is there a flipped version of fmap?
20:46:36 <yrlnry> (And thanks, that is is the answer I was looking for.)
20:46:50 <geekosaur> % :info <$>
20:46:50 <yahb2> (<$>) :: Functor f => (a -> b) -> f a -> f b ; -- Defined in ‘Data.Functor’ ; infixl 4 <$>
20:46:59 <geekosaur> % :info >>=
20:46:59 <yahb2> type Monad :: (* -> *) -> Constraint ; class Applicative m => Monad m where ; (>>=) :: m a -> (a -> m b) -> m b ; ... ; -- Defined in ‘GHC.Base’ ; infixl 1 >>=
20:47:15 <geekosaur> snd <$> getIndex …
20:49:17 × jargon quits (~jargon@184.101.186.108) (Remote host closed the connection)
20:49:44 <geekosaur> does have the downside that it switches order, so flip fmap would fit "pipeline" better
20:50:33 <geekosaur> @hoogle Functor f => f a -> (a -> b) -> f b
20:50:34 <lambdabot> Data.Functor (<&>) :: Functor f => f a -> (a -> b) -> f b
20:50:34 <lambdabot> Control.Lens.Lens (<&>) :: Functor f => f a -> (a -> b) -> f b
20:50:34 <lambdabot> Control.Lens.Operators (<&>) :: Functor f => f a -> (a -> b) -> f b
20:50:46 <geekosaur> there you go, <&>
20:50:52 <yrlnry> Thanks!
20:51:26 <yrlnry> Ugh, I did the Hoogle a couple minutes ago but got the f's in the wrong place >:-(
20:54:04 × pleo quits (~pleo@user/pleo) (Quit: quit)
20:58:20 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
21:00:45 nate4 joins (~nate@98.45.169.16)
21:03:10 slac89545 joins (~slack1256@191.125.99.87)
21:03:14 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
21:05:25 × slack1256 quits (~slack1256@191.126.227.81) (Ping timeout: 260 seconds)
21:05:48 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
21:07:26 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 255 seconds)
21:07:35 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
21:07:51 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
21:08:36 jakalx joins (~jakalx@base.jakalx.net)
21:08:46 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
21:13:35 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
21:13:51 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
21:14:41 <Haskelytic> What is a sufficient condition for a type to have a Functor instance?
21:15:10 <Haskelytic> I think that the (partially-applied) type constructor must have kind `* -> *`
21:15:15 slac89545 is now known as slack1256
21:15:21 <Haskelytic> That alone should be enough
21:15:28 <Haskelytic> I'm trying to think of counter-examples
21:16:34 merijn joins (~merijn@c-001-001-028.client.esciencecenter.eduvpn.nl)
21:16:36 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
21:17:19 × yax__ quits (~yax__@user/yax/x-9576643) (Ping timeout: 268 seconds)
21:17:22 <glguy> Haskelytic: that and you have to be able to write an fmap implementation for the type
21:17:45 <Haskelytic> glguy: haha I forgot the obvious XD
21:18:18 <EvanR> one counter example is the container type Data.Set
21:18:48 <EvanR> which you probably want a Functor instance for, but can't have it
21:19:04 jakalx joins (~jakalx@base.jakalx.net)
21:20:05 <Haskelytic> EvanR: oh wow okay let me check that out
21:24:32 Surobaki joins (~surobaki@43.84-2-80.static.virginmediabusiness.co.uk)
21:27:10 jargon joins (~jargon@184.101.186.108)
21:27:29 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:29:02 × Surobaki quits (~surobaki@43.84-2-80.static.virginmediabusiness.co.uk) (Ping timeout: 268 seconds)
21:29:08 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:33:06 × Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 264 seconds)
21:35:18 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50) (Remote host closed the connection)
21:38:49 × pierrot quits (~pi@user/pierrot) (Read error: Connection reset by peer)
21:38:55 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
21:39:14 ARJ0019 parts (~arj0019@162.218.254.7) (Leaving)
21:39:46 <dsal> Yeah, Set can't be a functor for a reason that I don't usually care about when I want it. But it's good to respect the laws.
21:40:40 pierrot joins (~pi@user/pierrot)
21:40:50 <DigitalKiwi> law abiding haskell citizen
21:42:06 <geekosaur> arguably the compiler becoming chaotic evil when you violate laws is more effective than police
21:42:34 <Haskelytic> geekosaur: XD
21:42:51 <Haskelytic> Statically typed legal system when :)
21:44:15 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
21:44:15 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
21:47:02 × christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 255 seconds)
21:47:14 pleo joins (~pleo@user/pleo)
21:50:49 × PiDelport quits (uid25146@id-25146.lymington.irccloud.com) (Quit: Connection closed for inactivity)
21:50:57 × pseigo quits (~pseigo@d108-173-20-33.abhsia.telus.net) (Ping timeout: 246 seconds)
21:51:05 × merijn quits (~merijn@c-001-001-028.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
21:51:13 <monochrom> "newtype X a = MkX (a -> Bool)" cannot be made a non-bottom Functor instance.
21:52:07 <monochrom> In this case the kind of X is laughably unhelpful.
21:52:48 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c904:ea1d:dddd:db50)
21:53:39 <monochrom> Instead, if you reason about variance, e.g., "a -> Bool" is contravariant in "a", "Bool -> a" is covariant in "a", that can get you somewhere.
21:56:30 × chomwitt quits (~chomwitt@2a02:587:dc1c:800:6c20:6100:5fd0:a681) (Ping timeout: 264 seconds)
21:57:51 slack1092 joins (~slack1256@191.125.99.70)
22:00:03 × slack1256 quits (~slack1256@191.125.99.87) (Ping timeout: 246 seconds)
22:01:21 pseigo joins (~pseigo@2001:56a:78d1:5700:3617:fe46:866c:704c)
22:17:03 <Haskelytic> Meta-talk: I'm getting a nagging suspicion that pure functional programming like in Haskell isn't popular because you can't use simple analogies to the real world
22:17:13 <Haskelytic> Imagine explaining applicatives to an outsider :)
22:17:35 chomwitt joins (~chomwitt@2a02:587:dc1c:800:4903:6345:e64d:64f4)
22:17:45 <Haskelytic> compare that to OOP where the mammalian kingdom barking and inheriting different barks is the name of the game
22:17:49 <geekosaur> except they're gradually adding them
22:18:10 <Haskelytic> geekosaur: how so?
22:18:20 <geekosaur> they just call them different things, and most of the laws are on the honor system instead of enforced within the type system
22:18:52 <Haskelytic> Hmm...are you referring to features like async, futures?
22:19:01 <geekosaur> Applicative isn't there yet, I think, but isn't Functor called mappable in C++?
22:19:15 × pierrot quits (~pi@user/pierrot) (Read error: Connection reset by peer)
22:19:17 <Haskelytic> Ah yes, functors are probably the easier one to introduce
22:19:32 <geekosaur> one step at a time
22:19:33 <Haskelytic> Although C++ folks kind of used Functor to mean something else entirely haha
22:19:45 <geekosaur> that's okay, so does SML
22:20:23 <dolio> Simple analogies to the real world don't really hold up as appropriate ways to design programs.
22:20:56 pierrot joins (~pi@user/pierrot)
22:22:11 <EvanR> I distinctly remember functions being explained as "machines in a pipeline, with an input side and an output side" in school
22:22:55 <EvanR> "function machine"
22:22:57 <monochrom> I thought OOP was the one doing unrealistic simple analogies to the real world.
22:23:09 <EvanR> yeah that's what I'm saying xD
22:24:36 <EvanR> it seems more accurate than horse and unicorn are both quadrupeds, hence implementation (single) inheritance
22:24:48 <monochrom> In practice, people got OOP to work by coding up complicated analogies.
22:26:17 <monochrom> That thing about single inheritance too. The real world does not obey single inheritance.
22:26:51 <dolio> I should say, it's a reasonable hypothesis about why it's popular. But when you program for real, things end up not being simple.
22:27:00 <dolio> So you are initially sold on a lie.
22:27:18 <monochrom> On top of that, taxonomy in biology has hardly anything to do with business applications.
22:29:59 <monochrom> On top of that ^ 2, OOP people laugh at FP for using toy examples, when they themselves also have to use toy examples such as squares and rectangles to explain the Liskov substitutability principle.
22:31:08 × acidjnk_new quits (~acidjnk@dynamic-046-114-169-012.46.114.pool.telefonica.de) (Ping timeout: 255 seconds)
22:31:19 <dolio> That's good, though, because Oleg then explains why squares and rectangles violate the Liskov substitution principle.
22:31:19 × zaquest quits (~notzaques@5.130.79.72) (Ping timeout: 268 seconds)
22:31:25 <monochrom> ( ^3 : Then they go on to demonstrate that they don't even understand that toy example.)
22:31:37 <Haskelytic> My favorite is shapes lol
22:31:47 <Haskelytic> Look ma my shapes are in a hierarchy
22:33:09 <monochrom> @quote monochrom in.nature
22:33:09 <lambdabot> monochrom says: the fibonacci sequence is everywhere in nature, for example haskell tutorials and python tutorials
22:33:20 <Haskelytic> XD
22:35:59 <EvanR> a circle is a kind of ellipse, where major and minor axis are equal. An ellipse is a kind of circle, one that you apply a stretching transformation to
22:36:11 × michalz quits (~michalz@185.246.204.97) (Remote host closed the connection)
22:36:22 × cyanide3dinner quits (~cyanide4d@106.201.249.151) (Remote host closed the connection)
22:37:02 <EvanR> wait does that even give an ellipse
22:37:14 × slack1092 quits (~slack1256@191.125.99.70) (Remote host closed the connection)
22:37:15 <dolio> Yes.
22:37:37 <monochrom> Let me confuse you further and ask "what is an ellipse?" >:)
22:37:49 <Haskelytic> EvanR: smells like recursion :)
22:37:58 <Haskelytic> the circle of life
22:38:07 <Haskelytic> or is it cycle i forget
22:38:16 <monochrom> Google Ellipse
22:38:20 <hpc> total ellipse of the cardioid?
22:41:10 <dolio> Maybe Oleg doesn't explain about squares and rectangles. I thought he did, but I can only find bags and sets.
22:42:45 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
22:45:15 zaquest joins (~notzaques@5.130.79.72)
22:52:39 × Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed)
22:55:41 machinedgod joins (~machinedg@66.244.246.252)
23:02:10 yaroot_ joins (~yaroot@130.70.30.125.dy.iij4u.or.jp)
23:05:33 × yaroot quits (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Ping timeout: 244 seconds)
23:05:34 yaroot_ is now known as yaroot
23:09:52 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Remote host closed the connection)
23:12:19 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
23:16:36 yauhsien joins (~yauhsien@61-231-22-150.dynamic-ip.hinet.net)
23:16:39 merijn joins (~merijn@c-001-001-028.client.esciencecenter.eduvpn.nl)
23:18:15 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Remote host closed the connection)
23:18:40 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
23:20:03 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
23:20:37 × Tuplanolla quits (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.)
23:21:20 × pseigo quits (~pseigo@2001:56a:78d1:5700:3617:fe46:866c:704c) (Ping timeout: 272 seconds)
23:24:14 × jgeerds quits (~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 255 seconds)
23:27:45 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
23:28:03 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
23:29:12 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
23:29:14 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
23:29:54 × yauhsien quits (~yauhsien@61-231-22-150.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
23:30:23 × AlexZenon quits (~alzenon@178.34.160.206) (Ping timeout: 256 seconds)
23:30:23 × Alex_test quits (~al_test@178.34.160.206) (Ping timeout: 256 seconds)
23:33:41 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
23:35:07 AlexZenon joins (~alzenon@178.34.160.206)
23:35:29 Alex_test joins (~al_test@178.34.160.206)
23:35:43 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
23:35:47 cyanide3dinner joins (~cyanide4d@106.201.249.151)
23:36:09 yaroot_ joins (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953)
23:36:42 × yaroot quits (~yaroot@130.70.30.125.dy.iij4u.or.jp) (Ping timeout: 264 seconds)
23:36:42 yaroot_ is now known as yaroot
23:41:18 MsBrownNote joins (~MsBrownNo@S01069050ca4e3573.cg.shawcable.net)
23:42:14 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
23:43:14 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
23:51:00 × merijn quits (~merijn@c-001-001-028.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
23:51:18 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
23:53:20 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds)
23:53:33 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
23:55:55 × vgtw quits (~vgtw@user/vgtw) (Quit: ZNC - https://znc.in)
23:58:06 pseigo joins (~pseigo@node-1w7jr9ye7hx4fsjarlsl1lkjw.ipv6.telus.net)
23:58:58 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)

All times are in UTC on 2022-06-30.