2021/08/30

2021-08-30 00:00:40 +0200max22-(~maxime@2a01cb0883359800468c3975aa62b651.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-08-30 00:00:53 +0200 <janiczek> Hm indeed when I tried "s -> Result e (s, a)" I had no issues...
2021-08-30 00:01:26 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-08-30 00:03:04 +0200jtomas_(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
2021-08-30 00:04:28 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-08-30 00:04:36 +0200tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp)
2021-08-30 00:06:59 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-08-30 00:12:30 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net) (Read error: Connection reset by peer)
2021-08-30 00:12:32 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:f0e1:80b7:ba04:2699)
2021-08-30 00:13:39 +0200 <Cale> maerwald: Good reason to be using nix, and to specify the hashes that you expect Hackage packages to have when downloaded. :)
2021-08-30 00:19:46 +0200 <janiczek> So `ExceptT e (StateT s a)` and `StateT s (ExceptT e a)` result in `s -> Either e (a, s)` and `s -> (Either e a, s)` but neither in `Either e (s -> (a, s))` or something else that would have the Either on the outside?
2021-08-30 00:20:35 +0200 <Cale> correct
2021-08-30 00:21:39 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net)
2021-08-30 00:21:40 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-08-30 00:21:41 +0200 <janiczek> Seems unsymmetrical somehow :D and slightly magical... but fair enough
2021-08-30 00:22:11 +0200 <Cale> Well, if you just look at the definition of ExceptT and especially StateT, it'll become clear why :)
2021-08-30 00:22:42 +0200 <Cale> newtype StateT s m a = StateT { runStateT :: s -> m (a, s) }
2021-08-30 00:22:46 +0200Guest372(~xxx@47.245.54.240)
2021-08-30 00:23:07 +0200 <Cale> puts the m in the middle
2021-08-30 00:24:27 +0200 <janiczek> Ah I see
2021-08-30 00:24:57 +0200roboguy__(~roboguy_@2605:a601:afe7:9f00:d502:dcbd:b41f:7bd1)
2021-08-30 00:25:07 +0200 <Cale> Also, perhaps if you don't hide the m's...
2021-08-30 00:25:42 +0200 <Cale> @unmtl ExceptT e (StateT s a)
2021-08-30 00:25:42 +0200 <lambdabot> err: `ExceptT e (StateT s a)' is not applied to enough arguments, giving `/\A. s -> a (Either e A, s)'
2021-08-30 00:25:54 +0200 <Cale> @unmtl ExceptT e (StateT s m a)
2021-08-30 00:25:54 +0200 <lambdabot> err: `ExceptT e (s -> m (a, s))' is not applied to enough arguments.
2021-08-30 00:25:59 +0200 <Cale> @unmtl ExceptT e (StateT s m) a
2021-08-30 00:25:59 +0200 <lambdabot> s -> m (Either e a, s)
2021-08-30 00:26:02 +0200 <Cale> there :)
2021-08-30 00:26:30 +0200 <Cale> @unmtl StateT s (EitherT e m) a
2021-08-30 00:26:30 +0200 <lambdabot> s -> EitherT e m (a, s)
2021-08-30 00:26:54 +0200 <Cale> @unmtl StateT s (ExceptT e m) a
2021-08-30 00:26:54 +0200 <lambdabot> s -> m (Either e (a, s))
2021-08-30 00:27:50 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:f0e1:80b7:ba04:2699) (Ping timeout: 250 seconds)
2021-08-30 00:28:07 +0200 <Cale> Quite often monad transformers end up changing the result type of the monad they're transforming, internally
2021-08-30 00:29:55 +0200 <janiczek> Yeah it didn't occur to me, I went straight for "the other monad goes instead of `a` and that's it". Thanks for the explanation!
2021-08-30 00:30:40 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 240 seconds)
2021-08-30 00:38:16 +0200janiczek(~janiczek@89-24-215-117.customers.tmcz.cz) (Quit: WeeChat 3.2)
2021-08-30 00:40:45 +0200chris(~chris@81.96.113.213)
2021-08-30 00:40:48 +0200chrisGuest8787
2021-08-30 00:42:40 +0200cjb(~cjb@user/cjb)
2021-08-30 00:44:58 +0200elf_fortrez(~elf_fortr@adsl-72-50-7-204.prtc.net)
2021-08-30 00:45:53 +0200elf_fortrez(~elf_fortr@adsl-72-50-7-204.prtc.net) (Client Quit)
2021-08-30 00:46:30 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-30 00:47:44 +0200pavonia_(~user@user/siracusa)
2021-08-30 00:48:40 +0200sander(~sander@user/sander) (Ping timeout: 240 seconds)
2021-08-30 00:49:02 +0200sander(~sander@user/sander)
2021-08-30 00:49:05 +0200orcus-(~orcus@user/brprice)
2021-08-30 00:49:10 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds)
2021-08-30 00:49:10 +0200pavonia(~user@user/siracusa) (Ping timeout: 240 seconds)
2021-08-30 00:49:10 +0200toms(~foobar@pogostick.net) (Ping timeout: 240 seconds)
2021-08-30 00:49:10 +0200koolazer(~koo@user/koolazer) (Ping timeout: 240 seconds)
2021-08-30 00:49:17 +0200toms(~foobar@pogostick.net)
2021-08-30 00:49:26 +0200pavonia_pavonia
2021-08-30 00:49:40 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Ping timeout: 240 seconds)
2021-08-30 00:49:40 +0200sts-q(~sts-q@91.200.108.136) (Ping timeout: 240 seconds)
2021-08-30 00:49:40 +0200td_(~td@muedsl-82-207-238-209.citykom.de) (Ping timeout: 240 seconds)
2021-08-30 00:49:40 +0200orcus(~orcus@user/brprice) (Ping timeout: 240 seconds)
2021-08-30 00:49:40 +0200nisstyre(~wes@user/nisstyre) (Ping timeout: 240 seconds)
2021-08-30 00:50:10 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Ping timeout: 240 seconds)
2021-08-30 00:50:10 +0200tdammers(~tdammers@77.109.72.213.res.static.edpnet.net) (Ping timeout: 240 seconds)
2021-08-30 00:50:30 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 00:50:51 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-30 00:51:11 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-08-30 00:51:37 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 00:51:40 +0200ishutin_(~ishutin@178-164-206-57.pool.digikabel.hu) (Ping timeout: 240 seconds)
2021-08-30 00:51:51 +0200td_(~td@muedsl-82-207-238-209.citykom.de)
2021-08-30 00:52:10 +0200ridcully_(~ridcully@p508ac428.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-08-30 00:52:10 +0200keltono(~kelton@x-160-94-179-178.acm.umn.edu) (Ping timeout: 240 seconds)
2021-08-30 00:53:17 +0200jtomas_(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-08-30 00:53:44 +0200 <maerwald[m]> Cale: `plan.json` has hashes as well
2021-08-30 00:53:46 +0200ishutin(~ishutin@178-164-206-57.pool.digikabel.hu)
2021-08-30 00:54:03 +0200keltono(~kelton@x-160-94-179-178.acm.umn.edu)
2021-08-30 00:54:13 +0200ridcully_(~ridcully@p508ac428.dip0.t-ipconnect.de)
2021-08-30 00:56:31 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 00:57:37 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 00:58:09 +0200Gurkenglas(~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de) (Ping timeout: 248 seconds)
2021-08-30 00:59:02 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 250 seconds)
2021-08-30 01:03:02 +0200nisstyre(~wes@user/nisstyre)
2021-08-30 01:03:14 +0200koolazer(~koo@user/koolazer)
2021-08-30 01:04:14 +0200tdammers(~tdammers@77.109.72.213)
2021-08-30 01:04:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 01:11:24 +0200kayprish(~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Remote host closed the connection)
2021-08-30 01:12:35 +0200acidjnk_new(~acidjnk@p200300d0c72b952094eaf2f81a5b0fde.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-30 01:20:31 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 01:21:38 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 01:22:40 +0200juri_(~juri@178.63.35.222) (Ping timeout: 240 seconds)
2021-08-30 01:24:24 +0200juri_(~juri@178.63.35.222)
2021-08-30 01:25:07 +0200MQ-17J(~MQ-17J@8.6.144.209) (Ping timeout: 252 seconds)
2021-08-30 01:25:53 +0200dsrt^(~dsrt@wsip-98-188-244-188.mc.at.cox.net) (Ping timeout: 248 seconds)
2021-08-30 01:30:04 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 252 seconds)
2021-08-30 01:32:29 +0200opac(~opac@ip-28-56.sn2.clouditalia.com) (Quit: Going offline, see ya! (www.adiirc.com))
2021-08-30 01:33:22 +0200Guest8787(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-08-30 01:36:38 +0200chris(~chris@81.96.113.213)
2021-08-30 01:36:42 +0200chrisGuest9625
2021-08-30 01:37:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
2021-08-30 01:39:17 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-30 01:41:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44d2:fabf:4572:a77d) (Remote host closed the connection)
2021-08-30 01:53:12 +0200Guest9625(~chris@81.96.113.213) (Ping timeout: 250 seconds)
2021-08-30 01:55:23 +0200chomwitt(~chomwitt@2a02:587:dc09:9800:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-08-30 01:56:51 +0200chris(~chris@81.96.113.213)
2021-08-30 01:56:54 +0200chrisGuest9678
2021-08-30 02:02:30 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 02:04:05 +0200sjb0(~stephen@1.145.117.24)
2021-08-30 02:06:55 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 02:11:13 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 248 seconds)
2021-08-30 02:16:32 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 02:17:08 +0200 <Axman6> jle`: How'd you go with hls and vim?
2021-08-30 02:17:38 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 02:18:19 +0200qrpnxz(~qrpnxz@user/qrpnxz) (Quit: Gateway shutdown)
2021-08-30 02:23:05 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-08-30 02:25:04 +0200oxide(~lambda@user/oxide) (Ping timeout: 252 seconds)
2021-08-30 02:26:09 +0200Guest9678(~chris@81.96.113.213) (Ping timeout: 248 seconds)
2021-08-30 02:26:47 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-08-30 02:27:30 +0200obs\(~obscur1ty@user/obs/x-5924898) (Read error: Connection reset by peer)
2021-08-30 02:31:32 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 02:32:39 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 02:34:20 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-08-30 02:36:33 +0200img(~img@user/img)
2021-08-30 02:40:50 +0200oxide(~lambda@user/oxide)
2021-08-30 02:42:09 +0200cjb(~cjb@user/cjb) (Ping timeout: 256 seconds)
2021-08-30 02:42:33 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 02:42:51 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 02:43:16 +0200cjb(~cjb@user/cjb)
2021-08-30 02:43:39 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 02:43:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-30 02:43:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-30 02:43:52 +0200wroathe(~wroathe@user/wroathe)
2021-08-30 02:47:03 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Ping timeout: 250 seconds)
2021-08-30 02:48:10 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-08-30 02:53:33 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 02:54:40 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 02:54:54 +0200leah2(~leah@vuxu.org) (Ping timeout: 256 seconds)
2021-08-30 02:56:39 +0200zgrep(~zgrep@user/zgrep) (Quit: It's a quitter's world.)
2021-08-30 02:58:10 +0200zgrep(~zgrep@user/zgrep)
2021-08-30 02:59:33 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 03:00:40 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 03:05:34 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 03:06:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 03:06:41 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 03:11:18 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-08-30 03:13:04 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2021-08-30 03:13:08 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-08-30 03:13:17 +0200MQ-17J(~MQ-17J@8.6.144.209)
2021-08-30 03:18:45 +0200neurocyte2(~neurocyte@212.232.88.4)
2021-08-30 03:18:45 +0200neurocyte2(~neurocyte@212.232.88.4) (Changing host)
2021-08-30 03:18:45 +0200neurocyte2(~neurocyte@user/neurocyte)
2021-08-30 03:18:57 +0200oxide(~lambda@user/oxide) (Ping timeout: 248 seconds)
2021-08-30 03:19:26 +0200dsrt^(~dsrt@wsip-98-188-244-188.mc.at.cox.net)
2021-08-30 03:20:51 +0200neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 250 seconds)
2021-08-30 03:20:51 +0200neurocyte2neurocyte
2021-08-30 03:21:34 +0200leah2(~leah@vuxu.org)
2021-08-30 03:28:16 +0200hololeap_(~hololeap@user/hololeap)
2021-08-30 03:28:51 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-08-30 03:31:45 +0200dajoer(~david@user/gvx)
2021-08-30 03:32:33 +0200tomboy64(~tomboy64@user/tomboy64) (Quit: Off to see the wizard.)
2021-08-30 03:33:48 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 03:35:04 +0200tomboy64(~tomboy64@user/tomboy64)
2021-08-30 03:35:54 +0200xff0x(~xff0x@2001:1a81:524c:1400:ba85:9ec4:3b29:2be0) (Ping timeout: 250 seconds)
2021-08-30 03:37:36 +0200xff0x(~xff0x@2001:1a81:5283:ae00:5927:9529:db6:e6e9)
2021-08-30 03:42:46 +0200haritzondo(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
2021-08-30 03:43:16 +0200haritz(~hrtz@user/haritz) (Ping timeout: 250 seconds)
2021-08-30 03:55:41 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
2021-08-30 04:00:43 +0200MQ-17J(~MQ-17J@8.6.144.209) (Read error: Connection reset by peer)
2021-08-30 04:01:01 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-30 04:01:01 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-30 04:01:01 +0200wroathe(~wroathe@user/wroathe)
2021-08-30 04:04:40 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-08-30 04:04:47 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
2021-08-30 04:06:31 +0200MQ-17J(~MQ-17J@8.6.144.209)
2021-08-30 04:06:34 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 04:06:39 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-08-30 04:07:41 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 04:07:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 04:09:27 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
2021-08-30 04:09:40 +0200tritlo(sid58727@user/tritlo) (Ping timeout: 258 seconds)
2021-08-30 04:10:17 +0200mustafa(sid502723@rockylinux/releng/mustafa) (Read error: Connection reset by peer)
2021-08-30 04:10:26 +0200hamishmack(sid389057@stonehaven.irccloud.com) (Ping timeout: 268 seconds)
2021-08-30 04:10:41 +0200astra`(sid289983@user/amish) (Ping timeout: 248 seconds)
2021-08-30 04:10:45 +0200dmj`(sid72307@id-72307.stonehaven.irccloud.com) (Ping timeout: 276 seconds)
2021-08-30 04:10:58 +0200pjlsergeant(sid143467@stonehaven.irccloud.com) (Read error: Connection reset by peer)
2021-08-30 04:11:03 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com)
2021-08-30 04:11:35 +0200jakesyl(sid56879@id-56879.stonehaven.irccloud.com) (Ping timeout: 258 seconds)
2021-08-30 04:12:10 +0200amir(sid22336@user/amir) (Ping timeout: 240 seconds)
2021-08-30 04:12:16 +0200tritlo(sid58727@user/tritlo)
2021-08-30 04:12:22 +0200mustafa(sid502723@rockylinux/releng/mustafa)
2021-08-30 04:12:25 +0200hamishmack(sid389057@id-389057.stonehaven.irccloud.com)
2021-08-30 04:12:25 +0200dmj`(sid72307@id-72307.stonehaven.irccloud.com)
2021-08-30 04:12:40 +0200ehamberg(sid18208@id-18208.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
2021-08-30 04:12:55 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-08-30 04:12:56 +0200pjlsergeant(sid143467@stonehaven.irccloud.com)
2021-08-30 04:13:26 +0200astra`(sid289983@user/amish)
2021-08-30 04:13:44 +0200jakesyl(sid56879@id-56879.stonehaven.irccloud.com)
2021-08-30 04:13:52 +0200simon1(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-08-30 04:14:22 +0200ehamberg(sid18208@id-18208.stonehaven.irccloud.com)
2021-08-30 04:15:07 +0200amir(sid22336@user/amir)
2021-08-30 04:15:24 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 04:15:27 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 250 seconds)
2021-08-30 04:15:39 +0200 <simon1> I'm trying to use the GHCi debugger. I've loaded my module Main with `cabal v2-repl unit` which leads to the Main module of my unit test module. I'm placing a breakpoint at the with the content `main = forM_ tests runLabeledModuleTestSuite`. The breakpoint is actually set by the debugger or so it says. Then when running `main` in GHCi, it never stops ???
2021-08-30 04:16:09 +0200 <simon1> It actually runs the tests instead of breaking before.
2021-08-30 04:17:19 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-08-30 04:17:54 +0200 <simon1> When setting the breakpoint, it says `Breakpoint 5 activated at test/unit/Main.hs:30:8-44`.
2021-08-30 04:18:02 +0200 <simon1> It should be fine, but it never breaks.
2021-08-30 04:19:51 +0200 <simon1> There is some code in my unit tests that are still binded to `undefined`. Could that explain why the debugger deosn't stop even thought the actual code is way deeper in another module. Why wouldn't the debugger stop at the first lever?
2021-08-30 04:19:54 +0200 <simon1> level*
2021-08-30 04:20:01 +0200simon1sim590
2021-08-30 04:23:35 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-30 04:25:27 +0200td_(~td@muedsl-82-207-238-209.citykom.de) (Ping timeout: 240 seconds)
2021-08-30 04:27:29 +0200td_(~td@94.134.91.159)
2021-08-30 04:28:35 +0200alx741(~alx741@186.178.108.114) (Quit: alx741)
2021-08-30 04:29:27 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-08-30 04:29:55 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-08-30 04:34:46 +0200oxide(~lambda@user/oxide)
2021-08-30 04:37:13 +0200 <sm> @simon1:libera.chat: things are often evaluated in an order you don't expect, or not at all. try adding lots of trace statements to see what's actually being executed
2021-08-30 04:37:13 +0200 <lambdabot> Unknown command, try @list
2021-08-30 04:44:53 +0200teddyc(theodorc@cassarossa.samfundet.no) (Ping timeout: 252 seconds)
2021-08-30 04:45:18 +0200 <sim590> sm: not sure what was going on but I relaunched `cabal v2-repl` and now it works.
2021-08-30 04:45:52 +0200MQ-17J(~MQ-17J@8.6.144.209) (Ping timeout: 252 seconds)
2021-08-30 04:47:08 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-30 04:47:08 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-30 04:47:08 +0200wroathe(~wroathe@user/wroathe)
2021-08-30 04:47:35 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 04:48:42 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 04:48:57 +0200 <sm> \o/
2021-08-30 04:50:15 +0200 <sim590> \o/ indeed!
2021-08-30 04:51:22 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-08-30 04:52:43 +0200tritlo(sid58727@user/tritlo) (Ping timeout: 250 seconds)
2021-08-30 04:52:47 +0200amir(sid22336@user/amir) (Ping timeout: 240 seconds)
2021-08-30 04:52:55 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 04:53:16 +0200hamishmack(sid389057@id-389057.stonehaven.irccloud.com) (Read error: Connection reset by peer)
2021-08-30 04:53:20 +0200astra`(sid289983@user/amish) (Read error: Connection reset by peer)
2021-08-30 04:53:21 +0200SanchayanMaity(sid478177@id-478177.stonehaven.irccloud.com) (Read error: Connection reset by peer)
2021-08-30 04:53:22 +0200dmj`(sid72307@id-72307.stonehaven.irccloud.com) (Write error: Connection reset by peer)
2021-08-30 04:53:22 +0200acertain(sid470584@id-470584.stonehaven.irccloud.com) (Ping timeout: 258 seconds)
2021-08-30 04:53:34 +0200mustafa(sid502723@rockylinux/releng/mustafa) (Ping timeout: 252 seconds)
2021-08-30 04:53:35 +0200jakesyl(sid56879@id-56879.stonehaven.irccloud.com) (Ping timeout: 250 seconds)
2021-08-30 04:53:38 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Read error: Connection reset by peer)
2021-08-30 04:54:07 +0200pjlsergeant(sid143467@stonehaven.irccloud.com) (Ping timeout: 240 seconds)
2021-08-30 04:54:24 +0200ehamberg(sid18208@id-18208.stonehaven.irccloud.com) (Read error: Connection reset by peer)
2021-08-30 04:54:24 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-08-30 04:54:54 +0200rubin55___(sid175221@id-175221.stonehaven.irccloud.com) (Ping timeout: 258 seconds)
2021-08-30 04:55:32 +0200mustafa(sid502723@rockylinux/releng/mustafa)
2021-08-30 04:55:33 +0200amir(sid22336@user/amir)
2021-08-30 04:55:33 +0200hamishmack(sid389057@stonehaven.irccloud.com)
2021-08-30 04:55:34 +0200ehamberg(sid18208@stonehaven.irccloud.com)
2021-08-30 04:55:35 +0200SanchayanMaity(sid478177@stonehaven.irccloud.com)
2021-08-30 04:55:46 +0200acertain(sid470584@id-470584.stonehaven.irccloud.com)
2021-08-30 04:55:50 +0200jakesyl(sid56879@id-56879.stonehaven.irccloud.com)
2021-08-30 04:56:08 +0200tritlo(sid58727@user/tritlo)
2021-08-30 04:56:08 +0200astra`(sid289983@user/amish)
2021-08-30 04:56:11 +0200rubin55___(sid175221@id-175221.stonehaven.irccloud.com)
2021-08-30 04:56:30 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-08-30 04:56:35 +0200pjlsergeant(sid143467@id-143467.stonehaven.irccloud.com)
2021-08-30 04:56:41 +0200dmj`(sid72307@stonehaven.irccloud.com)
2021-08-30 04:56:54 +0200Firedancer(sid336191@id-336191.stonehaven.irccloud.com) (Ping timeout: 276 seconds)
2021-08-30 04:57:27 +0200Firedancer(sid336191@id-336191.stonehaven.irccloud.com)
2021-08-30 05:05:12 +0200markpythonicbtc(~textual@2601:647:5a00:35:84bd:a15:7b92:ba0f)
2021-08-30 05:06:30 +0200Ariakenom(~Ariakenom@2001:9b1:efd:c800:3061:d615:b40a:a206) (Read error: Connection reset by peer)
2021-08-30 05:07:35 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 05:08:42 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 05:09:35 +0200roboguy__(~roboguy_@2605:a601:afe7:9f00:d502:dcbd:b41f:7bd1) ()
2021-08-30 05:14:07 +0200otto_s(~user@p5b0448eb.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-08-30 05:16:04 +0200otto_s(~user@p5b044a64.dip0.t-ipconnect.de)
2021-08-30 05:18:10 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-30 05:18:36 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 05:18:43 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-08-30 05:19:43 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 05:21:04 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-08-30 05:22:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-30 05:22:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-30 05:22:33 +0200wroathe(~wroathe@user/wroathe)
2021-08-30 05:29:00 +0200markpythonicbtc(~textual@2601:647:5a00:35:84bd:a15:7b92:ba0f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-30 05:29:36 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-30 05:30:43 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-30 05:31:15 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-08-30 05:32:06 +0200mei(~mei@user/mei)
2021-08-30 05:34:33 +0200juhp(~juhp@bb116-14-48-29.singnet.com.sg) (Read error: Connection reset by peer)
2021-08-30 05:34:40 +0200juhp(~juhp@bb116-14-48-29.singnet.com.sg)
2021-08-30 05:36:23 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-08-30 05:39:46 +0200y04nn(~y04nn@91.193.4.154) (Ping timeout: 252 seconds)
2021-08-30 05:42:47 +0200juhp(~juhp@bb116-14-48-29.singnet.com.sg) (Ping timeout: 240 seconds)
2021-08-30 05:43:07 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
2021-08-30 05:46:40 +0200markpythonicbtc(~textual@2601:647:5a00:35:b49f:c38:77c7:9b54)
2021-08-30 05:47:51 +0200juhp(~juhp@bb116-14-48-29.singnet.com.sg)
2021-08-30 05:51:29 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-08-30 05:52:25 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-08-30 05:53:22 +0200hyiltiz(~quassel@31.220.5.250)
2021-08-30 05:54:21 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-08-30 06:02:48 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 250 seconds)
2021-08-30 06:04:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 06:07:51 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-08-30 06:09:33 +0200markpythonicbtc(~textual@2601:647:5a00:35:b49f:c38:77c7:9b54) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-30 06:12:48 +0200Guest1(~Guest1@223.18.154.68)
2021-08-30 06:16:25 +0200markpythonicbtc(~textual@c-24-6-12-87.hsd1.ca.comcast.net)
2021-08-30 06:16:44 +0200Guest7(~Guest7@50.47.115.102)
2021-08-30 06:21:19 +0200 <Guest7> Do you use an alternative prelude (e.g. relude)? If so, which one?
2021-08-30 06:29:37 +0200Guest7(~Guest7@50.47.115.102) (Ping timeout: 256 seconds)
2021-08-30 06:38:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-30 06:40:59 +0200retroid_(~retro@5ec19a54.skybroadband.com) (*.net *.split)
2021-08-30 06:40:59 +0200mrckndt(~mrckndt@user/mrckndt) (*.net *.split)
2021-08-30 06:40:59 +0200elcaro(~anonymous@45.32.191.75) (*.net *.split)
2021-08-30 06:40:59 +0200drakonis(drakonis@user/drakonis) (*.net *.split)
2021-08-30 06:40:59 +0200dexterfoo(dexter@2a01:7e00::f03c:91ff:fe86:59ec) (*.net *.split)
2021-08-30 06:40:59 +0200Unhammer(~Unhammer@user/unhammer) (*.net *.split)
2021-08-30 06:40:59 +0200vgtw(~vgtw@c-9164205c.07-348-756d651.bbcust.telenor.se) (*.net *.split)
2021-08-30 06:40:59 +0200thelounge9230681(~thelounge@cpe-75-85-161-60.san.res.rr.com) (*.net *.split)
2021-08-30 06:40:59 +0200teehemkay(sid14792@id-14792.tooting.irccloud.com) (*.net *.split)
2021-08-30 06:40:59 +0200SethTisue__(sid14912@id-14912.charlton.irccloud.com) (*.net *.split)
2021-08-30 06:40:59 +0200JSharp(sid4580@id-4580.tooting.irccloud.com) (*.net *.split)
2021-08-30 06:40:59 +0200darxun(sid504814@id-504814.tinside.irccloud.com) (*.net *.split)
2021-08-30 06:40:59 +0200_0x47(sid508683@id-508683.tinside.irccloud.com) (*.net *.split)
2021-08-30 06:40:59 +0200jackdk(sid373013@cssa/jackdk) (*.net *.split)
2021-08-30 06:40:59 +0200SoF(~skius@user/skius) (*.net *.split)
2021-08-30 06:40:59 +0200kristjansson_(sid126207@id-126207.tinside.irccloud.com) (*.net *.split)
2021-08-30 06:40:59 +0200dsf_(~dsf@cpe-66-75-56-205.san.res.rr.com) (*.net *.split)
2021-08-30 06:40:59 +0200guibou(~guibou@163.172.83.213) (*.net *.split)
2021-08-30 06:40:59 +0200ralu(~ralu@static.211.245.203.116.clients.your-server.de) (*.net *.split)
2021-08-30 06:40:59 +0200incertia(~incertia@d4-50-26-103.nap.wideopenwest.com) (*.net *.split)
2021-08-30 06:40:59 +0200fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof) (*.net *.split)
2021-08-30 06:40:59 +0200drdo(~drdo@overlord0.drdo.eu) (*.net *.split)
2021-08-30 06:41:00 +0200Trattue(~Trattue@152.70.182.158) (*.net *.split)
2021-08-30 06:41:00 +0200SquidDev(~SquidDev@autoclave.squiddev.cc) (*.net *.split)
2021-08-30 06:41:00 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
2021-08-30 06:41:00 +0200voldial(~user@user/voldial) (*.net *.split)
2021-08-30 06:41:00 +0200janus(janus@anubis.0x90.dk) (*.net *.split)
2021-08-30 06:41:00 +0200xerox(~edi@user/edi) (*.net *.split)
2021-08-30 06:41:00 +0200bcoppens(~bartcopp@vpn2.bartcoppens.be) (*.net *.split)
2021-08-30 06:41:00 +0200tlax(tlax@kapsi.fi) (*.net *.split)
2021-08-30 06:41:00 +0200canta(~canta@user/canta) (*.net *.split)
2021-08-30 06:41:00 +0200exarkun(~exarkun@user/exarkun) (*.net *.split)
2021-08-30 06:41:00 +0200glowcoil(sid3405@id-3405.tinside.irccloud.com) (*.net *.split)
2021-08-30 06:41:00 +0200dfordvm(~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (*.net *.split)
2021-08-30 06:41:00 +0200hubvu(sid495858@id-495858.tinside.irccloud.com) (*.net *.split)
2021-08-30 06:41:00 +0200noddy(~user@user/noddy) (*.net *.split)
2021-08-30 06:41:00 +0200jle`(~justin@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
2021-08-30 06:41:00 +0200agander_m(sid407952@id-407952.tinside.irccloud.com) (*.net *.split)
2021-08-30 06:41:00 +0200pieguy128(~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca) (*.net *.split)
2021-08-30 06:41:00 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (*.net *.split)
2021-08-30 06:41:00 +0200Flow(~none@gentoo/developer/flow) (*.net *.split)
2021-08-30 06:41:00 +0200koz(~koz@121.99.240.58) (*.net *.split)
2021-08-30 06:41:00 +0200drlkf(~drlkf@2001:41d0:a:62bb::1) (*.net *.split)
2021-08-30 06:41:00 +0200sphynx(~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (*.net *.split)
2021-08-30 06:41:00 +0200dme2(~dme2@67.205.140.199) (*.net *.split)
2021-08-30 06:41:08 +0200tlax(tlax@kapsi.fi)
2021-08-30 06:41:09 +0200bcoppens(~bartcopp@vpn2.bartcoppens.be)
2021-08-30 06:41:09 +0200ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2021-08-30 06:41:11 +0200elcaro(~anonymous@45.32.191.75)
2021-08-30 06:41:11 +0200xerox(~edi@user/edi)
2021-08-30 06:41:11 +0200teehemkay(sid14792@id-14792.tooting.irccloud.com)
2021-08-30 06:41:12 +0200SethTisue__(sid14912@id-14912.charlton.irccloud.com)
2021-08-30 06:41:13 +0200darxun(sid504814@id-504814.tinside.irccloud.com)
2021-08-30 06:41:13 +0200sphynx(~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288)
2021-08-30 06:41:15 +0200mrckndt(~mrckndt@user/mrckndt)
2021-08-30 06:41:16 +0200dexterfoo(dexter@2a01:7e00::f03c:91ff:fe86:59ec)
2021-08-30 06:41:17 +0200drlkf(~drlkf@2001:41d0:a:62bb::1)
2021-08-30 06:41:17 +0200exarkun(~exarkun@59.5.70.34.bc.googleusercontent.com)
2021-08-30 06:41:17 +0200koz(~koz@121.99.240.58)
2021-08-30 06:41:18 +0200thelounge9230681(~thelounge@cpe-75-85-161-60.san.res.rr.com)
2021-08-30 06:41:21 +0200janus(janus@anubis.0x90.dk)
2021-08-30 06:41:21 +0200glowcoil(sid3405@id-3405.tinside.irccloud.com)
2021-08-30 06:41:21 +0200JSharp(sid4580@id-4580.tooting.irccloud.com)
2021-08-30 06:41:22 +0200dsf_(~dsf@cpe-66-75-56-205.san.res.rr.com)
2021-08-30 06:41:26 +0200canta(~canta@cvm0.d5k.one)
2021-08-30 06:41:31 +0200drakonis(drakonis@2600:3c02::f03c:92ff:fe5e:b8bf)
2021-08-30 06:41:31 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de)
2021-08-30 06:41:33 +0200voldial(~user@195.179.201.175)
2021-08-30 06:41:36 +0200jle`(~justin@cpe-23-240-75-236.socal.res.rr.com)
2021-08-30 06:41:37 +0200exarkun(~exarkun@59.5.70.34.bc.googleusercontent.com) (Changing host)
2021-08-30 06:41:37 +0200exarkun(~exarkun@user/exarkun)
2021-08-30 06:41:39 +0200Unhammer(~Unhammer@2a01:799:42:6a00::40c)
2021-08-30 06:41:40 +0200dfordvm(~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
2021-08-30 06:41:50 +0200SquidDev(~SquidDev@autoclave.squiddev.cc)
2021-08-30 06:41:51 +0200Flow(~none@salem.informatik.uni-erlangen.de)
2021-08-30 06:41:53 +0200canta(~canta@cvm0.d5k.one) (Changing host)
2021-08-30 06:41:53 +0200canta(~canta@user/canta)
2021-08-30 06:42:00 +0200_0x47(sid508683@id-508683.tinside.irccloud.com)
2021-08-30 06:42:01 +0200kristjansson_(sid126207@id-126207.tinside.irccloud.com)
2021-08-30 06:42:02 +0200Unhammer(~Unhammer@2a01:799:42:6a00::40c) (Changing host)
2021-08-30 06:42:02 +0200Unhammer(~Unhammer@user/unhammer)
2021-08-30 06:42:22 +0200agander_m(sid407952@id-407952.tinside.irccloud.com)
2021-08-30 06:42:26 +0200jackdk(sid373013@cssa/jackdk)
2021-08-30 06:42:27 +0200hubvu(sid495858@id-495858.tinside.irccloud.com)
2021-08-30 06:42:32 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca)
2021-08-30 06:42:34 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-08-30 06:42:36 +0200drdo(~drdo@overlord0.drdo.eu)
2021-08-30 06:42:41 +0200fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof)
2021-08-30 06:42:59 +0200incertia(~incertia@d4-50-26-103.nap.wideopenwest.com)
2021-08-30 06:43:14 +0200dme2(~dme2@67.205.140.199)
2021-08-30 06:43:46 +0200Trattue(~Trattue@152.70.182.158)
2021-08-30 06:44:17 +0200vgtw(~vgtw@c-9164205c.07-348-756d651.bbcust.telenor.se)
2021-08-30 06:45:07 +0200awth13(~awth13@user/awth13) (*.net *.split)
2021-08-30 06:45:07 +0200Techcable(~Techcable@168.235.93.147) (*.net *.split)
2021-08-30 06:45:07 +0200Dykam(Dykam@dykam.nl) (*.net *.split)
2021-08-30 06:45:07 +0200Eoco(~ian@x-160-94-179-157.acm.umn.edu) (*.net *.split)
2021-08-30 06:45:07 +0200polux(~polux@51.15.169.172) (*.net *.split)
2021-08-30 06:45:07 +0200drewolson1(~drewolson@user/drewolson) (*.net *.split)
2021-08-30 06:45:07 +0200wrunt(~ajc@vmx14030.hosting24.com.au) (*.net *.split)
2021-08-30 06:45:07 +0200orzo_(joe@lasker.childrenofmay.org) (*.net *.split)
2021-08-30 06:45:07 +0200glider(~glider@user/glider) (*.net *.split)
2021-08-30 06:45:07 +0200Vq(~vq@90-227-195-41-no77.tbcn.telia.com) (*.net *.split)
2021-08-30 06:45:07 +0200dave_uy(~dave_uy@108.61.193.26) (*.net *.split)
2021-08-30 06:45:07 +0200Teacup(~teacup@user/teacup) (*.net *.split)
2021-08-30 06:45:07 +0200glguy(x@libera/staff/glguy) (*.net *.split)
2021-08-30 06:45:08 +0200Unode(~Unode@194.94.44.220) (*.net *.split)
2021-08-30 06:45:08 +0200pierrot(~pi@user/pierrot) (*.net *.split)
2021-08-30 06:45:08 +0200ellie(~ellie@user/ellie) (*.net *.split)
2021-08-30 06:45:08 +0200tristanC(~tristanC@user/tristanc) (*.net *.split)
2021-08-30 06:45:08 +0200relrod(~relrod@redhat/ansible.staff.relrod) (*.net *.split)
2021-08-30 06:45:08 +0200aweinstock(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (*.net *.split)
2021-08-30 06:45:08 +0200arahael(~arahael@203.221.97.63) (*.net *.split)
2021-08-30 06:45:08 +0200monochrom(trebla@216.138.220.146) (*.net *.split)
2021-08-30 06:45:08 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de) (*.net *.split)
2021-08-30 06:45:08 +0200paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (*.net *.split)
2021-08-30 06:45:08 +0200L29Ah(~L29Ah@user/l29ah) (*.net *.split)
2021-08-30 06:45:08 +0200adium(adium@user/adium) (*.net *.split)
2021-08-30 06:45:08 +0200jonrh(sid5185@charlton.irccloud.com) (*.net *.split)
2021-08-30 06:45:08 +0200whez(sid470288@tooting.irccloud.com) (*.net *.split)
2021-08-30 06:45:08 +0200edwardk(sid47016@haskell/developer/edwardk) (*.net *.split)
2021-08-30 06:45:08 +0200sm2n(~sm2n@user/sm2n) (*.net *.split)
2021-08-30 06:45:08 +0200fjmorazan(~quassel@user/fjmorazan) (*.net *.split)
2021-08-30 06:45:08 +0200energizer(~energizer@user/energizer) (*.net *.split)
2021-08-30 06:45:08 +0200gabiruh(~gabiruh@vps19177.publiccloud.com.br) (*.net *.split)
2021-08-30 06:45:08 +0200Clint(~Clint@user/clint) (*.net *.split)
2021-08-30 06:45:08 +0200wanko(~wanko@51.15.4.226) (*.net *.split)
2021-08-30 06:45:08 +0200remexre(~nathan@user/remexre) (*.net *.split)
2021-08-30 06:45:08 +0200Patternmaster(~georg@li1192-118.members.linode.com) (*.net *.split)
2021-08-30 06:45:08 +0200vk3wtf(~doc@220-245-2-190.tpgi.com.au) (*.net *.split)
2021-08-30 06:45:08 +0200typedfern__(~Typedfern@28.red-83-57-142.dynamicip.rima-tde.net) (*.net *.split)
2021-08-30 06:45:08 +0200jackhill(~jackhill@kalessin.dragonsnail.net) (*.net *.split)
2021-08-30 06:45:08 +0200EvanR(~evan@mail.evanr.info) (*.net *.split)
2021-08-30 06:45:08 +0200spoonm(spoonm@inaba.spoonm.org) (*.net *.split)
2021-08-30 06:45:08 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (*.net *.split)
2021-08-30 06:45:08 +0200drewr(~drew@user/drewr) (*.net *.split)
2021-08-30 06:45:14 +0200orzo(joe@lasker.childrenofmay.org)
2021-08-30 06:45:14 +0200Clint(~Clint@user/clint)
2021-08-30 06:45:15 +0200whez(sid470288@id-470288.tooting.irccloud.com)
2021-08-30 06:45:16 +0200wanko(~wanko@51.15.4.226)
2021-08-30 06:45:18 +0200EvanR(~evan@mail.evanr.info)
2021-08-30 06:45:19 +0200Dykam(Dykam@dykam.nl)
2021-08-30 06:45:20 +0200tristanC(~tristanC@163.172.94.116)
2021-08-30 06:45:21 +0200guibou(~guibou@163.172.83.213)
2021-08-30 06:45:21 +0200jackhill(~jackhill@kalessin.dragonsnail.net)
2021-08-30 06:45:21 +0200aweinstock(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)
2021-08-30 06:45:22 +0200monochrom(trebla@216.138.220.146)
2021-08-30 06:45:23 +0200Patternmaster(~georg@li1192-118.members.linode.com)
2021-08-30 06:45:23 +0200dave_uy(~dave_uy@108.61.193.26)
2021-08-30 06:45:26 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de)
2021-08-30 06:45:28 +0200relrod(~relrod@redhat/ansible.staff.relrod)
2021-08-30 06:45:30 +0200wrunt(~ajc@vmx14030.hosting24.com.au)
2021-08-30 06:45:30 +0200typedfern__(~Typedfern@28.red-83-57-142.dynamicip.rima-tde.net)
2021-08-30 06:45:31 +0200polux(~polux@51.15.169.172)
2021-08-30 06:45:36 +0200EvanR(~evan@mail.evanr.info) (Changing host)
2021-08-30 06:45:36 +0200EvanR(~evan@user/evanr)
2021-08-30 06:45:40 +0200tristanC(~tristanC@163.172.94.116) (Changing host)
2021-08-30 06:45:40 +0200tristanC(~tristanC@user/tristanc)
2021-08-30 06:45:41 +0200Eoco(~ian@x-160-94-179-157.acm.umn.edu)
2021-08-30 06:45:41 +0200remexre(~nathan@207-153-38-50.fttp.usinternet.com)
2021-08-30 06:45:46 +0200vk3wtf(~doc@220-245-2-190.tpgi.com.au)
2021-08-30 06:45:47 +0200spoonm(spoonm@inaba.spoonm.org)
2021-08-30 06:45:53 +0200awth13(~awth13@89.145.163.86)
2021-08-30 06:45:57 +0200jonrh(sid5185@id-5185.charlton.irccloud.com)
2021-08-30 06:46:00 +0200edwardk(sid47016@id-47016.charlton.irccloud.com)
2021-08-30 06:46:15 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-08-30 06:46:16 +0200awth13(~awth13@89.145.163.86) (Changing host)
2021-08-30 06:46:16 +0200awth13(~awth13@user/awth13)
2021-08-30 06:46:16 +0200sm2n(~sm2n@bras-base-hmtnon143hw-grc-12-70-52-146-205.dsl.bell.ca)
2021-08-30 06:46:18 +0200edwardk(sid47016@id-47016.charlton.irccloud.com) (Changing host)
2021-08-30 06:46:18 +0200edwardk(sid47016@haskell/developer/edwardk)
2021-08-30 06:46:19 +0200Unode(~Unode@194.94.44.220)
2021-08-30 06:46:20 +0200drewr(~drew@115.198.243.35.bc.googleusercontent.com)
2021-08-30 06:46:22 +0200sm2n(~sm2n@bras-base-hmtnon143hw-grc-12-70-52-146-205.dsl.bell.ca) (Remote host closed the connection)
2021-08-30 06:46:23 +0200drewr(~drew@115.198.243.35.bc.googleusercontent.com) (Changing host)
2021-08-30 06:46:23 +0200drewr(~drew@user/drewr)
2021-08-30 06:46:24 +0200glguy(x@libera/staff/glguy)
2021-08-30 06:46:37 +0200Techcable(~Techcable@168.235.93.147)
2021-08-30 06:46:40 +0200remexre(~nathan@207-153-38-50.fttp.usinternet.com) (Client Quit)
2021-08-30 06:46:49 +0200paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
2021-08-30 06:46:49 +0200sm2n(~sm2n@user/sm2n)
2021-08-30 06:46:52 +0200pierrot(~pi@user/pierrot)
2021-08-30 06:46:54 +0200remexre(~nathan@user/remexre)
2021-08-30 06:46:55 +0200gabiruh(~gabiruh@vps19177.publiccloud.com.br)
2021-08-30 06:46:59 +0200glider(~glider@user/glider)
2021-08-30 06:47:01 +0200fjmorazan(~quassel@user/fjmorazan)
2021-08-30 06:47:02 +0200Teacup(~teacup@user/teacup)
2021-08-30 06:47:23 +0200energizer(~energizer@user/energizer)
2021-08-30 06:48:09 +0200jonathanx_(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-08-30 06:48:54 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Read error: Connection reset by peer)
2021-08-30 06:49:07 +0200adium(adium@user/adium)
2021-08-30 06:50:27 +0200Vq(~vq@90-227-195-41-no77.tbcn.telia.com)
2021-08-30 06:50:28 +0200retroid_(~retro@5ec19a54.skybroadband.com)
2021-08-30 06:55:59 +0200peterhil(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
2021-08-30 07:01:01 +0200Guest1(~Guest1@223.18.154.68) (Quit: Client closed)
2021-08-30 07:05:55 +0200arahael(~arahael@203.221.97.63)
2021-08-30 07:14:09 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 248 seconds)
2021-08-30 07:19:25 +0200fabfianda(~fabfianda@37.183.255.57)
2021-08-30 07:22:47 +0200xff0x(~xff0x@2001:1a81:5283:ae00:5927:9529:db6:e6e9) (Ping timeout: 240 seconds)
2021-08-30 07:23:48 +0200xff0x(~xff0x@2001:1a81:5283:ae00:dd66:8a36:3ffc:6058)
2021-08-30 07:26:47 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-08-30 07:32:37 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 250 seconds)
2021-08-30 07:33:59 +0200aegon(~mike@174.127.249.180)
2021-08-30 07:34:05 +0200aegon(~mike@174.127.249.180) (Client Quit)
2021-08-30 07:34:19 +0200aegon(~mike@174.127.249.180)
2021-08-30 07:38:04 +0200xff0x(~xff0x@2001:1a81:5283:ae00:dd66:8a36:3ffc:6058) (Ping timeout: 252 seconds)
2021-08-30 07:38:59 +0200xff0x(~xff0x@2001:1a81:5283:ae00:82de:9d03:d34b:f6a0)
2021-08-30 07:41:57 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 07:43:25 +0200Guest35(~Guest35@223.18.154.68)
2021-08-30 07:44:41 +0200aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-08-30 07:44:58 +0200michalz(~michalz@185.246.204.40)
2021-08-30 07:46:19 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-08-30 07:48:49 +0200ubert(~Thunderbi@178.165.168.136.wireless.dyn.drei.com) (Ping timeout: 248 seconds)
2021-08-30 07:48:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-30 07:48:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-30 07:48:52 +0200wroathe(~wroathe@user/wroathe)
2021-08-30 07:50:12 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-08-30 07:53:32 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 244 seconds)
2021-08-30 07:57:32 +0200 <sim590> I'm trying to make an instance of this class: http://ix.io/3xoR. Here is my try: http://ix.io/3xoS. It's OK for the part of `dhExchange`, but when writing my implementation of `exponentiate`, I'm getting this error: http://ix.io/3xoU. I'm thinking that there's an issue with how I defined the signature of `exponentiate` (and `dhExchange`) with the constraint of MonadState. How can we explaine the
2021-08-30 07:57:34 +0200 <sim590> issue? I'm not understanding quite yet.
2021-08-30 08:07:30 +0200chris(~chris@81.96.113.213)
2021-08-30 08:07:33 +0200chrisGuest3947
2021-08-30 08:08:13 +0200Guest35(~Guest35@223.18.154.68) (Ping timeout: 256 seconds)
2021-08-30 08:15:25 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 08:16:46 +0200lortabac(~lortabac@151.53.201.45)
2021-08-30 08:17:39 +0200arjun(~Srain@user/arjun)
2021-08-30 08:19:04 +0200teddyc(theodorc@cassarossa.samfundet.no)
2021-08-30 08:19:27 +0200MQ-17J(~MQ-17J@8.6.144.209)
2021-08-30 08:20:53 +0200arjun(~Srain@user/arjun) (Remote host closed the connection)
2021-08-30 08:30:58 +0200Guest35(~Guest35@223.18.154.68)
2021-08-30 08:30:59 +0200Guest35(~Guest35@223.18.154.68) (Client Quit)
2021-08-30 08:34:54 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-08-30 08:35:19 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 08:41:25 +0200 <tomsmeding> maerwald: when in doubt, bundle more sources :p
2021-08-30 08:44:04 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 08:50:25 +0200 <maerwald[m]> tomsmeding: the alternative is trying to figure out how to statically link mingw libs
2021-08-30 08:52:48 +0200aman(~aman@user/aman)
2021-08-30 08:54:11 +0200 <tomsmeding> maerwald[m]: doesn't sound like fun
2021-08-30 08:56:19 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-08-30 08:57:02 +0200acidjnk_new(~acidjnk@p200300d0c72b952094eaf2f81a5b0fde.dip0.t-ipconnect.de)
2021-08-30 08:58:17 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-30 09:00:34 +0200xff0x(~xff0x@2001:1a81:5283:ae00:82de:9d03:d34b:f6a0) (Ping timeout: 252 seconds)
2021-08-30 09:01:30 +0200xff0x(~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a)
2021-08-30 09:02:08 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-08-30 09:03:09 +0200 <int-e> sim590: you may have better luck with a more complete question (including class definition, type for `use` and possibly `generator`; ideally a minimal source file with the necessary imports, declarations (`undefined` as implementation is fine)... it's much easier to figure out type errors interactively than by staring at a static type error. That said, one thing that stands out is this type...
2021-08-30 09:03:15 +0200 <int-e> ...signature from the error message: exponentiate :: forall z (m :: * -> *). MonadState (DHMaterial z) m => MyDHComputableInteger -> m MyDHComputableInteger ...so it's supposed to work for any `DHMaterial z`, but the code you have only works for `DHMaterial MyDHComputableInteger`...
2021-08-30 09:04:21 +0200jumper149(~jumper149@80.240.31.34)
2021-08-30 09:05:13 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 09:06:54 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-08-30 09:08:09 +0200 <tomsmeding> siers: cool that you understand my gdiff example code now :) I think that "being originally written in Agda" doesn't necessarily produce the GADT weirdness of gdiff; it's the other way round: they wanted to make a completely type-safe implementation, and this is the way that works out in Haskell
2021-08-30 09:08:36 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
2021-08-30 09:09:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 09:12:33 +0200 <siers> tomsmeding, right, but my thinking was that if you want to write it in agda, you're probably going to make sure it's type-safe :)
2021-08-30 09:13:17 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-08-30 09:14:18 +0200azeem(~azeem@176.200.56.216)
2021-08-30 09:15:41 +0200gehmehgeh(~user@user/gehmehgeh)
2021-08-30 09:16:22 +0200 <tomsmeding> siers: again, knowing the research group that this came out of, I think it was the other way round: they wanted type-safety, and they knew agda, and that worked well together :p
2021-08-30 09:16:31 +0200 <tomsmeding> but true
2021-08-30 09:16:55 +0200 <siers> fair enough, you probably know better. I was just speculating
2021-08-30 09:21:46 +0200kuribas(~user@ptr-25vy0i98x8tu9s1v8mf.18120a2.ip6.access.telenet.be)
2021-08-30 09:23:08 +0200Pickchea(~private@user/pickchea)
2021-08-30 09:24:31 +0200Guest3947(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-30 09:28:47 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 09:29:24 +0200chris(~chris@81.96.113.213)
2021-08-30 09:29:28 +0200chrisGuest3638
2021-08-30 09:30:20 +0200fendor(~fendor@178.165.182.151.wireless.dyn.drei.com)
2021-08-30 09:33:01 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-08-30 09:33:46 +0200Guest3638(~chris@81.96.113.213) (Ping timeout: 244 seconds)
2021-08-30 09:36:17 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-08-30 09:40:43 +0200azeem(~azeem@176.200.56.216) (Ping timeout: 252 seconds)
2021-08-30 09:41:15 +0200azeem(~azeem@176.200.56.216)
2021-08-30 09:41:17 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz)
2021-08-30 09:42:08 +0200charukiewicz(~quassel@irouteince04.i.subnet.rcn.com) (Remote host closed the connection)
2021-08-30 09:43:18 +0200charukiewicz(~quassel@irouteince04.i.subnet.rcn.com)
2021-08-30 09:44:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 09:48:52 +0200 <kuribas> What do you think about this article? https://cuddly-octo-palm-tree.com/posts/2021-08-29-data-api/
2021-08-30 09:50:02 +0200 <kuribas> I think his examples are a bit rubbish (why would I want to check if a line limit is not exceeded?).
2021-08-30 09:50:35 +0200 <kuribas> But it's true that data centric programming is pretty easy in clojure, but not in haskell (when you want type-safety).
2021-08-30 09:51:19 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-30 09:51:50 +0200 <kuribas> On the other hand, if I want to parse command line, configuration file, environment variables, etc... from the same source, I'd probably make my own effect.
2021-08-30 09:53:04 +0200 <kuribas> the ability to inspect all data is convenient, but also breaks abstraction barriers, making code more brittle.
2021-08-30 09:55:35 +0200 <maerwald[m]> Someone who coded more than half a year in clojure and didn't lose his mind over impossible to find bugs is a mystery to me
2021-08-30 09:57:26 +0200 <kuribas> maerwald: if you drink the clojure cool-aid for so long, it means you're alread in it. Clojure developers don't care that much.
2021-08-30 09:57:59 +0200 <kuribas> But it's a good point. You get code conciseness, but the price to pay for lack of safety is that you need a lot of tests.
2021-08-30 09:58:01 +0200sjb0(~stephen@1.145.117.24) (Quit: Leaving.)
2021-08-30 09:58:55 +0200 <maerwald[m]> Refactoring clojure code is basically a gamble with the life of your company
2021-08-30 09:58:57 +0200cfricke(~cfricke@user/cfricke)
2021-08-30 09:59:34 +0200 <maerwald[m]> Structural typing done wrong
2021-08-30 09:59:42 +0200 <lortabac> in my experience refactoring simply doesn't happen with dynamically-typed languages
2021-08-30 10:00:07 +0200 <lortabac> once the project reaches a certain size it somehow becomes "append-only"
2021-08-30 10:00:15 +0200 <maerwald[m]> I mean, haskell doesn't have any
2021-08-30 10:00:28 +0200 <lortabac> especially if the original developers are not there anymore
2021-08-30 10:00:38 +0200 <kuribas> lortabac: we do refactor, but it's painful.
2021-08-30 10:01:17 +0200 <lortabac> kuribas: wait 5 more years and you will stop refactoring :)
2021-08-30 10:01:29 +0200 <lortabac> at some point it simply becomes too dangerous
2021-08-30 10:02:38 +0200 <maerwald[m]> If you cherish clojure, you're probably coding in a bubble with no team and don't understand the horror effects it creates for everyone around you
2021-08-30 10:03:30 +0200max22-(~maxime@2a01cb0883359800e8f3a18d7241b1b5.ipv6.abo.wanadoo.fr)
2021-08-30 10:03:49 +0200 <kuribas> maerwald[m]: I asked a new guy about it. His response was, that he doesn't try to understand the code, just run it in the repl and says what it does, which data goes where and how...
2021-08-30 10:03:58 +0200 <maerwald[m]> Like a web page going blank in production, because you deleted a bracket at a wrong place and the code still compiled
2021-08-30 10:04:38 +0200 <kuribas> maerwald[m]: we've had a client complaining because our code broke due to a type error.
2021-08-30 10:04:48 +0200 <kuribas> email reporting I mean...
2021-08-30 10:04:59 +0200 <maerwald[m]> Yes, the only advantage of clojure, interactive development
2021-08-30 10:05:31 +0200 <kuribas> interactive development is much worse in haskell, but I still prefer it, because I am not "forced" to use the repl.
2021-08-30 10:05:32 +0200hendursa1(~weechat@user/hendursaga)
2021-08-30 10:05:42 +0200 <kuribas> I just use it when *I* want to.
2021-08-30 10:06:16 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
2021-08-30 10:06:39 +0200 <maerwald[m]> I stopped interactive development in haskell and it made me better at coding. Thinking for more than 5 minutes about code without compiling it has an interesting effect
2021-08-30 10:07:28 +0200 <maerwald[m]> And it's a pleasure when things compile after you've been editing for 30 minutes
2021-08-30 10:07:36 +0200 <kuribas> maerwald[m]: I test my code *after* writing it.
2021-08-30 10:08:36 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-08-30 10:12:49 +0200rbocquet(~weechat@2001:bc8:47a8:44e::1) (Quit: WeeChat 2.8)
2021-08-30 10:16:10 +0200rbocquet(~weechat@2001:bc8:47a8:44e::1)
2021-08-30 10:17:15 +0200arjun(~Srain@user/arjun)
2021-08-30 10:17:53 +0200 <arjun> Hi, i'm inside a function with some constraints (MonadIO m, MonadCatch m .... etc)
2021-08-30 10:18:08 +0200 <arjun> now one of the arguments is a Maybe FilePath
2021-08-30 10:18:39 +0200 <arjun> and i can't seem to do ` dir <- givenPath ` inside the `do`
2021-08-30 10:18:40 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2021-08-30 10:18:53 +0200 <arjun> " Couldn't match type ‘m’ with ‘Maybe’ "
2021-08-30 10:19:18 +0200 <arjun> while, i could do `let dir = fromJust givenPath` just fine
2021-08-30 10:19:26 +0200 <merijn> Maybe is not an instance of MonadIO, so you can't do that, no
2021-08-30 10:20:19 +0200azeem(~azeem@176.200.56.216) (Ping timeout: 250 seconds)
2021-08-30 10:20:21 +0200 <arjun> bump.
2021-08-30 10:21:08 +0200 <arjun> what's the prefered way to do this kindda thing, just for my curiosity's sake
2021-08-30 10:21:41 +0200 <kuribas> arjun: don't use fromJust, use fromMaybe instead.
2021-08-30 10:21:45 +0200 <kuribas> :t fromJust
2021-08-30 10:21:46 +0200 <lambdabot> Maybe a -> a
2021-08-30 10:21:50 +0200 <kuribas> :t fromMaybe
2021-08-30 10:21:50 +0200 <merijn> "preferred way to do this" <- you haven't really specified what "this" is
2021-08-30 10:21:51 +0200 <lambdabot> a -> Maybe a -> a
2021-08-30 10:22:24 +0200 <merijn> arjun: You have said "I have a Maybe FilePath", but not really anything about how you wanna use it or what you expect to happen
2021-08-30 10:22:27 +0200 <kuribas> arjun: fromJust will crash when you pass a Nothing, with a very unhelpful message.
2021-08-30 10:22:29 +0200azeem(~azeem@62.18.127.19)
2021-08-30 10:22:33 +0200 <arjun> kuribas: yea, just repl'd it. fromJust is unsafe if i get Nothing
2021-08-30 10:23:08 +0200 <kuribas> arjun: as merijn said, you have to figure out what to do when it's `Nothing`.
2021-08-30 10:23:45 +0200 <arjun> merijn: get a value from Just if it's Just (for eg get 5 from Just 5) and Nothing if it's Nothing from a polymorphic function with constraints ? does that make sense?
2021-08-30 10:24:13 +0200 <arjun> merijn: i understand Maybe not having a MonadIO instance
2021-08-30 10:24:25 +0200 <merijn> That doesn't really make sense no
2021-08-30 10:24:38 +0200 <merijn> What does "getting Nothing if it's Nothing" mean
2021-08-30 10:24:44 +0200 <arjun> kuribas: i see. i was hoping "<-" would take care of it for me : P
2021-08-30 10:24:50 +0200 <merijn> <- is not magic
2021-08-30 10:24:57 +0200 <merijn> <- is just sugar for >>=
2021-08-30 10:25:00 +0200 <merijn> :t (>>=)
2021-08-30 10:25:02 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2021-08-30 10:25:02 +0200rtpg(sid443069@charlton.irccloud.com)
2021-08-30 10:25:08 +0200 <kuribas> arjun: you mean, <- would pry into your mind, and do the right thing?
2021-08-30 10:25:10 +0200 <merijn> That means all sides have to be the same 'm'
2021-08-30 10:25:40 +0200 <kuribas> arjun: or better, infer the business logic that needs to apply in this case?
2021-08-30 10:25:46 +0200__monty__(~toonn@user/toonn)
2021-08-30 10:25:48 +0200 <arjun> kuribas: it should also write the docs, white it's at it : P
2021-08-30 10:25:55 +0200 <merijn> arjun: Specifically, if you *did* use <- with Maybe, then they entire do block would be a "Maybe" type
2021-08-30 10:25:58 +0200 <arjun> while*
2021-08-30 10:26:03 +0200 <kuribas> arjun: cool, let me know when you find this :)
2021-08-30 10:26:25 +0200 <merijn> arjun: And your function wouldn't be "foo :: MonadIO m => Maybe FilePath -> m ()" it'd just be "foo :: Maybe FilePath -> Maybe ()" or whatever
2021-08-30 10:26:39 +0200 <arjun> merijn: yes, that's what the error is saying i suppose (hard to read for untrained eyes)
2021-08-30 10:27:00 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk)
2021-08-30 10:27:20 +0200 <arjun> my function is expected to return m Bool, but it returns a fixed type Maybe ..
2021-08-30 10:27:38 +0200 <arjun> i see.
2021-08-30 10:27:46 +0200 <arjun> thanks ! merijn
2021-08-30 10:28:08 +0200 <rtpg> Has there ever been any discussion of having Haskell adopt anonymous sum types? That is to say, instead of using Either Int Bool, being able to write out Int | Bool and pattern match directly off of that? Essentially making sum types first-class in the same way products are
2021-08-30 10:28:41 +0200 <[exa]> (product types are first class?)
2021-08-30 10:28:47 +0200 <opqdonut> sums are first-class in exactly the same way as products
2021-08-30 10:28:55 +0200 <opqdonut> both have their type constructor: (,) and Either
2021-08-30 10:29:38 +0200 <opqdonut> (and you have the ADT syntax which allows you to define a custom collection of sums and products and give it a name)
2021-08-30 10:29:39 +0200 <arjun> why do i always get the image of people evacuating the Titanic when it's drowning when people say "first class"
2021-08-30 10:30:13 +0200 <rtpg> I think it's pretty easy to argue that tuples are ... more.... first-class (like I don't have to give names, I can do N-products instead of stacking with Either). But I get your point from a mechanical level
2021-08-30 10:30:45 +0200 <kuribas> rtpg: tuples have type constructors as well.
2021-08-30 10:31:24 +0200 <rtpg> At least for me, Typescript allows for using anonymous unions, and then is able to very easily deduce what your thing is without having you need to name some helper type like StringOrPropertyAccessorOrInteger
2021-08-30 10:32:51 +0200 <kuribas> rtpg: you should never name things like that :)
2021-08-30 10:33:25 +0200 <[exa]> rtpg: you can't reliably infer an anonymous union without abusing a closed-world assumption
2021-08-30 10:34:51 +0200 <[exa]> rtpg: what about just making a tiny typeclass for that?
2021-08-30 10:34:58 +0200 <rtpg> ah that's a good point, suddenly it's like "is this supposed to return A | B or is it meant to return A and B is a mistake"
2021-08-30 10:35:34 +0200 <[exa]> stuff like "f :: MyFunctionWorksWith a => a -> a" is pretty common I'd say
2021-08-30 10:35:38 +0200 <rtpg> I mean y'all never just have a bucket of things that exist in some inner function that don't have much semantic value beyond being the return type of a handful of objects?
2021-08-30 10:36:27 +0200 <kuribas> rtpg: in lisps often they make one function do a lot of things. The haskell way is more to have different "combinators", to provide different features.
2021-08-30 10:36:35 +0200 <kuribas> rtpg: it works better with static typing
2021-08-30 10:36:53 +0200 <rtpg> though yeah I guess I don't mind making the function itself have to be explicit, it's more around callsites, I would love to pattern match directly on A | B without having to unwrap an Either first. But I guess with Rust I end up taking a trait anyways
2021-08-30 10:36:56 +0200 <merijn> rtpg: Datatypes are cheap to define in Haskell
2021-08-30 10:36:57 +0200 <[exa]> rtpg: or, say. `mySemanticOf :: HasMySemantics a => a -> Bool`, and use it to downcast the many possibilities to something predictable
2021-08-30 10:37:09 +0200 <merijn> rtpg: So, might as well define a datatype
2021-08-30 10:37:34 +0200 <kuribas> rtpg: err, how would you pattern match on A | B, if you don't have a constructor?
2021-08-30 10:38:00 +0200 <merijn> rtpg: In fact, as my projects scale up, the more I love previous me for defining lots and lots of custom datatypes
2021-08-30 10:39:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Remote host closed the connection)
2021-08-30 10:39:47 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 240 seconds)
2021-08-30 10:40:05 +0200 <rtpg> let's say you have Foo = Bar Int | Baz String, and like Mouse Int, then Foo | Mouse you could pattern match like "f:: (Foo | Mouse) -> Int" and just directly "f (Bar i) = i; f (Baz s) = length s, f (Mouse m) = m"
2021-08-30 10:41:11 +0200 <kuribas> merijn: the same for me. And my code becomes more readable.
2021-08-30 10:41:31 +0200 <rtpg> this is very much a "thought about for a little bit" thing, where how the compiler turns this into executable code is probably tricky. TS doesn't have that problem since it doesn't have to actually evaluate the code of course
2021-08-30 10:41:39 +0200hyiltiz(~quassel@31.220.5.250)
2021-08-30 10:42:26 +0200 <merijn> rtpg: How is writing (Foo | Mouse) in a function better than taking 1 line to define an ADT that implements that? :p
2021-08-30 10:43:03 +0200 <rtpg> FooOrMouse = Either Foo Mouse , then I'm writing Left (Bar i) and Left (Baz s) blah blah blah.... it's all line noise to me in that case
2021-08-30 10:43:29 +0200 <rtpg> like sometimes things don't have any conceptual meaning outside of one specific spot! Surely you have had situations where a thing just doesn't have a good name available for it right?
2021-08-30 10:43:30 +0200 <kuribas> important semantic information /= line noise
2021-08-30 10:44:53 +0200 <rtpg> I don't believe that saying Either and then Left/Right in this case is adding extra semantic information in these kinds of cases (where you're really just wanting a sum type). This isn't a general judgement on all sum types, just wondering if this is a thing that has been discussed
2021-08-30 10:45:13 +0200 <merijn> rtpg: I didn't say either, I said defining your own ADT
2021-08-30 10:45:48 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-08-30 10:46:36 +0200 <rtpg> You know that base lisp thing where if you want to define a variable with a let, you end up introducing indentation into your code that wouldn't exist in, say, Python/C? I feel the same way with introducing the intermediate ADT in my example (even if in the internals something would have to be done to get that to work)
2021-08-30 10:47:59 +0200 <kuribas> rtpg: my take is that if you have lots of intermediate ADTs like that, your not thinking in a haskell way...
2021-08-30 10:48:15 +0200 <kuribas> see my comment above
2021-08-30 10:49:24 +0200 <kuribas> If I write my functions in haskell as I would write lisp, it may end up like that.
2021-08-30 10:50:17 +0200 <kuribas> You don't write big functions with lots of functionality, but small functions which compose together to get the functionality.
2021-08-30 10:50:28 +0200 <rtpg> you see the value of an anoymous function right? And why sometimes it's nice to not have to give everything a name?
2021-08-30 10:50:34 +0200SoF(~skius@user/skius)
2021-08-30 10:50:45 +0200 <kuribas> rtpg: yes, that's how I use Either or (,).
2021-08-30 10:50:47 +0200 <rtpg> or stuff like (+1)
2021-08-30 10:51:10 +0200 <kuribas> rtpg: but honestly less and less, nowadays I often create intermedia datatypes.
2021-08-30 10:51:35 +0200 <kuribas> same with anonymous functions, if they get too big, I just name them.
2021-08-30 10:52:30 +0200 <rtpg> shrug, OK I guess this is not really a thing that's being thought about
2021-08-30 10:53:14 +0200 <kuribas> Even using Either for something that is not an error, I consider a code smell...
2021-08-30 10:54:09 +0200 <kuribas> rtpg: it is also just not how haskell works. It would make type inference impossible (or very hard).
2021-08-30 10:55:39 +0200 <rtpg> yeah I get the inference argument. If the language existed just for me I would just say "ok you can use this but you have to explicitly write out the type for it to work" (since without that, inference would always be able to put A and B into A | B) but I mean... I get how that's probably far offbase from what anyone wants
2021-08-30 10:55:40 +0200 <[exa]> rtpg: anonymous functions are okay, anonymous functions on types are okay too; the counter-image to anonymous types is actually anonymous data (think of "magical constants")
2021-08-30 10:56:35 +0200 <[exa]> rtpg: you might want to have a look at the types in Julia; it neatly demonstrates how this "oh just allow both variants" easily evolves into a complete mess
2021-08-30 10:57:41 +0200 <rtpg> oh... yep, Julia's Union is exactly what I was thinking about. Gonna read through these docs a bit
2021-08-30 10:58:05 +0200 <[exa]> re anonymous data, you don't usually write stuff like "there can be `3` or `4` or `someString` here", right?
2021-08-30 10:58:07 +0200 <kuribas> rtpg: I have actually been looking into the type clojure typesystem, and been comtemplating type inference, but it is *vastly* different from what haskell does.
2021-08-30 10:58:45 +0200 <rtpg> There's so much more leeway to do random stuff when type info isn't actually used to , like, compile a program
2021-08-30 10:59:16 +0200 <kuribas> I'd prefer not to do random stuff...
2021-08-30 10:59:18 +0200 <rtpg> "random stuff" = "things that are extremely useful to establish invariants in your business logic"
2021-08-30 10:59:48 +0200 <[exa]> ah, business logic
2021-08-30 10:59:55 +0200 <kuribas> "invariants in business logic == types" for me...
2021-08-30 11:00:25 +0200 <rtpg> The ability in Typescript to arbitrarily establish sum types, difference types (things like "this enum but without this specific value") is super duper usefl
2021-08-30 11:00:25 +0200 <[exa]> I always read it as "business" means "no actual overlap with" there
2021-08-30 11:01:04 +0200 <[exa]> rtpg: types aren't static checks
2021-08-30 11:01:27 +0200 <[exa]> (can we finally rename that thing to StaticCheckScript? )
2021-08-30 11:01:34 +0200 <rtpg> like imagine you have an enum with three variants, and you want something that only applies to two of those variants, and you want that to be checked statically
2021-08-30 11:02:44 +0200 <[exa]> good, you add static checks and let your checker propagate them a bit
2021-08-30 11:02:46 +0200 <kuribas> [exa]: aren't they?
2021-08-30 11:03:12 +0200 <[exa]> kuribas: no, they don't evaluate
2021-08-30 11:03:29 +0200 <kuribas> except in dependend languages?
2021-08-30 11:03:39 +0200 <[exa]> yeah but let's not open that box now :D
2021-08-30 11:03:56 +0200 <kuribas> or type families in haskell?
2021-08-30 11:04:23 +0200 <kuribas> [exa]: if you restrict to haskell-2010 not I suppose...
2021-08-30 11:04:45 +0200 <[exa]> type families evaluate types to types, that's still kinda okay
2021-08-30 11:05:12 +0200 <[exa]> although they could cover the case with Int|Bool
2021-08-30 11:06:45 +0200 <rtpg> I mean it's like... I just want the computer to verify things that it could theoretically verify (at least I think so). This probably requires a bit of a theory dive though, maybe in particular the idea of difference types makes some stuff just not work anymore
2021-08-30 11:07:14 +0200Gurkenglas(~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de)
2021-08-30 11:07:27 +0200martin02(~silas@141.84.69.76)
2021-08-30 11:08:10 +0200 <rtpg> the fact that I can't restrict an input type to like... only certain ADT variants has always been a "we could potentially eliminate an entire class of bugs" thing for me, and yes I get that it's "not the same", but, y'know
2021-08-30 11:10:06 +0200 <kuribas> rtpg: haskell isn't purescript. If you want to code like purescript, then code in... purescript?
2021-08-30 11:10:27 +0200 <kuribas> rtpg: as merijn showed, this isn't a huge problem, just requires some wrapping and unwrapping.
2021-08-30 11:12:20 +0200 <lortabac> rtpg: you can use Liquid Haskell to add this kind of restrictions to your types, if this is what you are looking for
2021-08-30 11:12:39 +0200 <kuribas> just cosmetics or light boilerplate isn't a good reason to make complicated changes to a language IMO...
2021-08-30 11:13:25 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-30 11:13:43 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk)
2021-08-30 11:14:19 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-30 11:14:50 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk)
2021-08-30 11:16:12 +0200 <rtpg> Oh you know what? I think Liquid Haskell might help out somewhat here with some of my use cases
2021-08-30 11:17:22 +0200 <kuribas> rtpg: my guess is that you would be helped far better by refactoring your code, rather than jumping into liquid haskell.
2021-08-30 11:19:12 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 245 seconds)
2021-08-30 11:21:21 +0200 <lortabac> TBH I haven't followed the whole discussion, I just proposed Liquid Haskell in response to "restricting input to certain variants"
2021-08-30 11:30:05 +0200MQ-17J(~MQ-17J@8.6.144.209) (Ping timeout: 250 seconds)
2021-08-30 11:32:06 +0200 <[exa]> rtpg: honestly you might eventually like that all restrictions actually need to be named
2021-08-30 11:32:45 +0200 <[exa]> rtpg: consider someone else finding the `Bool|Int` sometime in the code sometime future-ish, and wondering "ah this is what breaks my usecase, let's just add the Float there"
2021-08-30 11:33:02 +0200 <[exa]> s/sometime/somewhere
2021-08-30 11:33:20 +0200 <rtpg> I consider that a feature not a bug
2021-08-30 11:34:12 +0200 <[exa]> in the simplest crude case, you just do `class WorksInCaseX a` and add `instance WorksInCaseX Int` possibly with clear explanation comment
2021-08-30 11:34:32 +0200 <[exa]> doesn't even need to have methods (but I guess that the usecase will find methods, at least for converting the values around)
2021-08-30 11:36:24 +0200 <[exa]> also, it makes the thing a bit more maintainable, consider if someone starts to copy the Bool|Int around...
2021-08-30 11:40:02 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 11:41:51 +0200mc47(~mc47@xmonad/TheMC47)
2021-08-30 11:42:54 +0200neo2(~neo3@cpe-292712.ip.primehome.com)
2021-08-30 11:44:16 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Ping timeout: 250 seconds)
2021-08-30 11:46:17 +0200lortabac(~lortabac@151.53.201.45) (Quit: WeeChat 2.8)
2021-08-30 11:46:18 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 11:46:52 +0200ArctVaulMarsHMPJ(~pjetcetal@128-71-152-79.broadband.corbina.ru) (Read error: Connection reset by peer)
2021-08-30 11:50:31 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-08-30 11:50:41 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 244 seconds)
2021-08-30 11:51:19 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk)
2021-08-30 11:52:07 +0200MQ-17J(~MQ-17J@8.6.144.209)
2021-08-30 11:52:21 +0200ArctVaulMarsHMPJ(~pjetcetal@128-71-152-79.broadband.corbina.ru)
2021-08-30 11:55:51 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 244 seconds)
2021-08-30 11:56:05 +0200Vooch(~iovoo@096-038-011-034.biz.spectrum.com) (Ping timeout: 250 seconds)
2021-08-30 12:03:01 +0200MQ-17J(~MQ-17J@8.6.144.209) (Ping timeout: 250 seconds)
2021-08-30 12:04:11 +0200cfricke(~cfricke@user/cfricke)
2021-08-30 12:05:55 +0200Pickchea(~private@user/pickchea) (Ping timeout: 252 seconds)
2021-08-30 12:18:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 12:19:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 12:24:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-30 12:25:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 12:27:19 +0200notzmv(~zmv@user/notzmv)
2021-08-30 12:29:17 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk)
2021-08-30 12:30:04 +0200APic(apic@apic.name) (Ping timeout: 252 seconds)
2021-08-30 12:30:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 12:30:07 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 252 seconds)
2021-08-30 12:30:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 12:33:20 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-08-30 12:33:48 +0200markus_(~markus@80-121-50-158.adsl.highway.telekom.at)
2021-08-30 12:34:39 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
2021-08-30 12:35:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-30 12:37:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 12:37:18 +0200jakalx(~jakalx@base.jakalx.net)
2021-08-30 12:42:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 12:42:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 12:44:35 +0200cfricke(~cfricke@user/cfricke)
2021-08-30 12:45:58 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-30 12:46:12 +0200kuribas(~user@ptr-25vy0i98x8tu9s1v8mf.18120a2.ip6.access.telenet.be) (ERC (IRC client for Emacs 26.3))
2021-08-30 12:47:17 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-30 12:48:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-30 12:48:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 12:49:00 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-30 12:49:58 +0200jushur(~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
2021-08-30 12:52:30 +0200APic(apic@apic.name)
2021-08-30 12:54:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-30 12:54:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 12:55:32 +0200acidjnk_new3(~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de)
2021-08-30 12:58:59 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-30 12:59:16 +0200acidjnk_new(~acidjnk@p200300d0c72b952094eaf2f81a5b0fde.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-08-30 12:59:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 13:00:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 13:01:02 +0200alx741(~alx741@186.178.108.114)
2021-08-30 13:03:00 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version)
2021-08-30 13:03:09 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-30 13:05:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-08-30 13:06:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 13:08:11 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-30 13:09:00 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-08-30 13:09:44 +0200AlexNoo_(~AlexNoo@178.34.163.49)
2021-08-30 13:12:01 +0200Alex_test(~al_test@94.233.240.82) (Ping timeout: 248 seconds)
2021-08-30 13:12:33 +0200AlexZenon(~alzenon@94.233.240.82) (Ping timeout: 248 seconds)
2021-08-30 13:13:07 +0200AlexNoo(~AlexNoo@94.233.240.82) (Ping timeout: 240 seconds)
2021-08-30 13:16:42 +0200AlexZenon(~alzenon@178.34.163.49)
2021-08-30 13:16:47 +0200juhp(~juhp@bb116-14-48-29.singnet.com.sg) (Ping timeout: 240 seconds)
2021-08-30 13:16:48 +0200Alex_test(~al_test@178.34.163.49)
2021-08-30 13:21:52 +0200neo1(~neo3@cpe-292712.ip.primehome.com)
2021-08-30 13:22:28 +0200mc47(~mc47@xmonad/TheMC47) (Read error: Connection reset by peer)
2021-08-30 13:22:33 +0200themc47(~mc47@xmonad/TheMC47)
2021-08-30 13:23:13 +0200opac(~opac@ip-28-56.sn2.clouditalia.com)
2021-08-30 13:24:48 +0200neo2(~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 250 seconds)
2021-08-30 13:25:33 +0200fendor_(~fendor@91.141.74.138.wireless.dyn.drei.com)
2021-08-30 13:26:31 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-08-30 13:27:50 +0200fendor(~fendor@178.165.182.151.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
2021-08-30 13:27:57 +0200ahri(~ahri@195.158.248.151)
2021-08-30 13:28:31 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-30 13:29:08 +0200kuribas(~user@ptr-25vy0i98x8tu9s1v8mf.18120a2.ip6.access.telenet.be)
2021-08-30 13:29:41 +0200 <ahri> I think I'm being a bit dense here, but I can't guess the syntax to use a shared function in an instance definition, like with a "where" in a function definition
2021-08-30 13:30:42 +0200 <ahri> https://paste.tomsmeding.com/QA1aEJhV is a syntax error
2021-08-30 13:31:01 +0200 <Hecate> hmm
2021-08-30 13:31:04 +0200 <Hecate> indeed
2021-08-30 13:31:12 +0200 <Hecate> ahri: what does the code look like without the shared function?
2021-08-30 13:31:38 +0200 <ahri> it's a bit messier because I'm using H
2021-08-30 13:31:44 +0200 <ahri> sorry, mistyped
2021-08-30 13:32:08 +0200 <ahri> I'm using GHC and Haste with the same codebase, so I have CPP enabled and some defined macros
2021-08-30 13:32:22 +0200 <Hecate> ahri: did you think of putting the helper function outside of the instance?
2021-08-30 13:32:39 +0200 <Hecate> in the end, you just have to not export it
2021-08-30 13:32:54 +0200 <ahri> yeah, I was hoping I could keep it neater, but you're right; it's not a big deal
2021-08-30 13:32:59 +0200 <Hecate> but if you let me see the code I can give you my opinion on the whole thing
2021-08-30 13:33:55 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2021-08-30 13:34:03 +0200 <Hecate> ahri: but yeah, this is a minor detail, don't think too much into it :)
2021-08-30 13:34:07 +0200Pickchea(~private@user/pickchea)
2021-08-30 13:34:09 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-08-30 13:34:54 +0200benin0369329(~benin@183.82.206.204)
2021-08-30 13:35:39 +0200 <ahri> https://paste.tomsmeding.com/kMULblU0 is what it looks like - I'm writing JSON instances for Aeson and Haste at the same time
2021-08-30 13:36:09 +0200 <ahri> this works, but Aeson is not encoding the JSON as I would like - the order of keys is non-deterministic (because it uses a map)
2021-08-30 13:36:39 +0200 <ahri> so it seems I will need to add a `toEncoding` definition for my types
2021-08-30 13:37:01 +0200 <ahri> I found an example at https://stackoverflow.com/questions/37865388/haskell-generating-json-with-aeson-gives-incorrect-or…
2021-08-30 13:37:31 +0200 <ahri> but I would prefer not to have the maintenance burden of repeating everything, hence a shared helper
2021-08-30 13:37:43 +0200benin036932(~benin@183.82.206.204) (Ping timeout: 252 seconds)
2021-08-30 13:37:43 +0200benin0369329benin036932
2021-08-30 13:39:01 +0200 <ahri> the key problem I'm trying to solve is that many of my instances have a `type` property to switch on, and I want this to go first so that when I'm debugging my application I can see what events occurred, in what order, in a pretty way so that it's not mentally taxing to search through each line to understand the log event
2021-08-30 13:39:26 +0200 <ahri> (I'm aware that the property order does not matter to the computers involved - but it does to me!)
2021-08-30 13:41:55 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 13:42:37 +0200 <Hecate> ahri: yeah this is understandable
2021-08-30 13:43:54 +0200 <merijn> If it used a Map, then wouldn't the order of keys be deterministic :p
2021-08-30 13:44:00 +0200 <merijn> Unless it serialises the Map in a weird way
2021-08-30 13:46:11 +0200 <ahri> I mis-spoke; the order may be deterministic but it's not in insertion order
2021-08-30 13:46:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Ping timeout: 250 seconds)
2021-08-30 13:47:00 +0200 <ahri> I suppose it's in hashcode order :)
2021-08-30 13:48:42 +0200 <kuribas> merijn: Aeson objects are hashmaps.
2021-08-30 13:48:44 +0200 <ahri> Aeson is using Data.HashMap.Strict under the hood
2021-08-30 13:48:47 +0200 <merijn> ah
2021-08-30 13:48:50 +0200 <merijn> Bah
2021-08-30 13:50:01 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 13:50:06 +0200 <kuribas> ahri: make a newtype with a custom Aeson decoder.
2021-08-30 13:50:23 +0200 <kuribas> ahri: where it checks for the "type" fields, then outputs that first.
2021-08-30 13:50:29 +0200Gurkenglas(~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
2021-08-30 13:50:56 +0200 <kuribas> ahri: then use that newtype to print to the log.
2021-08-30 13:51:17 +0200 <ahri> thanks, I'll have a look at that!
2021-08-30 13:51:19 +0200 <kuribas> ahri: hmm, or better, use deriving via
2021-08-30 13:51:30 +0200 <kuribas> (via the newtype of course)
2021-08-30 13:52:12 +0200 <kuribas> ahri: just make sure you don't make recursive definitions which loop!
2021-08-30 13:53:36 +0200 <kuribas> ahri: if that doesn't work, you can also make a custom "Value" printer.
2021-08-30 13:54:30 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2021-08-30 13:54:52 +0200goepsilongo(~goepsilon@2603-7000-ab00-62ed-f994-ccd9-a78d-3463.res6.spectrum.com)
2021-08-30 13:59:14 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-08-30 14:03:03 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-08-30 14:04:30 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 14:05:41 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 14:08:03 +0200Nahra(~user@static.161.95.99.88.clients.your-server.de) (Remote host closed the connection)
2021-08-30 14:08:42 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-08-30 14:08:54 +0200Nahra(~user@static.161.95.99.88.clients.your-server.de)
2021-08-30 14:09:14 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-08-30 14:10:11 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
2021-08-30 14:15:16 +0200arjun(~Srain@user/arjun) (Remote host closed the connection)
2021-08-30 14:20:40 +0200markpythonicbtc(~textual@c-24-6-12-87.hsd1.ca.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-30 14:21:11 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-08-30 14:24:03 +0200fendor_fendor
2021-08-30 14:24:20 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 14:25:57 +0200frobnicator(~frobnicat@185-227-75-147.dsl.cambrium.nl)
2021-08-30 14:26:10 +0200acidjnk_new3(~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-08-30 14:27:14 +0200qwedfg(~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
2021-08-30 14:27:27 +0200 <frobnicator> how do you pattern match on records. E.g.: data Tuple a b = Tuple {first :: a, second :: b} -- appFst f t@{first=a} = t { first=f a }
2021-08-30 14:28:41 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-30 14:29:04 +0200qwedfg(~qwedfg@user/qwedfg)
2021-08-30 14:29:34 +0200goepsilongo_(~goepsilon@2603-7000-ab00-62ed-41c9-c3be-94ad-0c24.res6.spectrum.com)
2021-08-30 14:29:39 +0200 <kuribas> frobnicator: appFst f t@Tuple{first=a} = t { first = f a}
2021-08-30 14:29:41 +0200ahri(~ahri@195.158.248.151) (Quit: zzz)
2021-08-30 14:30:01 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2021-08-30 14:30:13 +0200 <kuribas> frobnicator: the extensions recordWildCards and nameFieldPuns are also great.
2021-08-30 14:30:24 +0200 <frobnicator> ahh I see, thanks
2021-08-30 14:30:46 +0200goepsilongo(~goepsilon@2603-7000-ab00-62ed-f994-ccd9-a78d-3463.res6.spectrum.com) (Ping timeout: 256 seconds)
2021-08-30 14:32:10 +0200jonathanx_(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 252 seconds)
2021-08-30 14:33:10 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-30 14:35:14 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 14:36:14 +0200L29Ah(~L29Ah@user/l29ah)
2021-08-30 14:36:28 +0200vektor(~vektor@212.232.83.94)
2021-08-30 14:37:02 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-30 14:38:17 +0200jonathanx_(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-08-30 14:38:39 +0200vektor(~vektor@212.232.83.94) (Client Quit)
2021-08-30 14:39:12 +0200Vektor(~Vektor@212.232.83.94)
2021-08-30 14:39:38 +0200Pickchea(~private@user/pickchea) (Ping timeout: 244 seconds)
2021-08-30 14:39:55 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 14:40:13 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 14:41:28 +0200juhp(~juhp@128.106.188.220)
2021-08-30 14:41:58 +0200lortabac(~lortabac@62.98.7.122)
2021-08-30 14:45:36 +0200kenran(~kenran@200116b82beee700b3543c7d21744630.dip.versatel-1u1.de)
2021-08-30 14:46:39 +0200 <Vektor> I'm struggling to sort out my types here: https://paste.tomsmeding.com/SjS9fUbr - probability is a complicated bit of logic that has the provided type. I could change some details if necessary. grad is a function of Numeric.AD, signature provided for convenience. I need a type signature for the "something" function. Usually, I'd let the compiler
2021-08-30 14:46:40 +0200 <Vektor> sort this out, but in this case that's impossible for reasons that escape me.
2021-08-30 14:47:45 +0200 <Vektor> Basicallý, type inference doesn't work with forall, afaict, and I need a forall in the signature of "something". Hence I need to explicitly provide that. I gave it my best shot, but ghc is insistent on using two different variables s and s1, which imo should be unified and I'd be golden.
2021-08-30 14:47:58 +0200 <kuribas> Vektor: if it cannot match two "rigid variables", it almost always means you have to provide a type somewhere.
2021-08-30 14:48:07 +0200max22-(~maxime@2a01cb0883359800e8f3a18d7241b1b5.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
2021-08-30 14:48:45 +0200opqdonut(opqdonut@pseudo.fixme.fi) (Remote host closed the connection)
2021-08-30 14:48:56 +0200 <kuribas> Vektor: in particular, you want to fix the first argument of Reverse to someting.
2021-08-30 14:49:31 +0200opqdonut(opqdonut@pseudo.fixme.fi)
2021-08-30 14:50:04 +0200 <kuribas> Vektor: what often helps is to enable scopedTypeVariables, and giving manual types to intermediate expressions.
2021-08-30 14:50:15 +0200qwedfg_(~qwedfg@user/qwedfg)
2021-08-30 14:50:18 +0200 <kuribas> When it typechecks, start removing the types to clean it up.
2021-08-30 14:51:00 +0200qwedfg(~qwedfg@user/qwedfg) (Ping timeout: 244 seconds)
2021-08-30 14:51:17 +0200 <Vektor> I've applied the last trick myself. Not with scopedTypeVariables, usually, but rather by testing things in global scope where I can annotate anyway. Hasn't helped me here this far.
2021-08-30 14:51:36 +0200 <Vektor> The "explicit s" might be a good shout, I'll poke around numeric.AD for a clue.
2021-08-30 14:54:35 +0200 <kuribas> Vektor: the rankN type in grad is probably the cause.
2021-08-30 14:55:39 +0200qwedfg_(~qwedfg@user/qwedfg) (Ping timeout: 244 seconds)
2021-08-30 14:55:42 +0200AlexNoo_AlexNoo
2021-08-30 14:56:01 +0200qwedfg(~qwedfg@user/qwedfg)
2021-08-30 14:57:03 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-30 14:57:04 +0200phma(~phma@host-67-44-208-231.hnremote.net) (Read error: Connection reset by peer)
2021-08-30 14:57:18 +0200Vajb(~Vajb@2001:999:65:a818:f418:a5b8:e792:8650)
2021-08-30 15:00:40 +0200phma(~phma@host-67-44-208-231.hnremote.net)
2021-08-30 15:00:52 +0200 <kuribas> Vektor: perhaps that lambda passed to grad doesn't fix the `s` type variable?
2021-08-30 15:02:14 +0200 <Vektor> could I explicitly omit the details of grad by... I dunno, wrapping it or something? I mean, if we know that forall Num a, Reverse s a is also Num, then that just means that grad can be applied to any function Num a, Functor f => f a -> a, and will give a gradient function of type f b -> f b (Num b), right? Can I provide something like grad_ ::
2021-08-30 15:02:15 +0200 <Vektor> [..]; grad_ = grad that omits all that nonsense about Reverse and Reifies?
2021-08-30 15:02:38 +0200 <Vektor> Ohh, the lambda messing things up is a good idea, I'll give that one a type.
2021-08-30 15:03:15 +0200 <Vektor> *try
2021-08-30 15:03:52 +0200 <kuribas> Vektor: I think it uses an intermediary type to compute the gradient, but if you leave it polymorphically, it will complain.
2021-08-30 15:03:56 +0200markpythonicbtc(~textual@50.228.44.6)
2021-08-30 15:04:10 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 240 seconds)
2021-08-30 15:04:27 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 15:05:46 +0200 <kuribas> Vektor: the constraint for something (Num a2, Reifies s Tape) says it has to use the type variable `s`, but ghc determines that it can also use other things besides `s`.
2021-08-30 15:07:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Lost terminal)
2021-08-30 15:07:57 +0200 <kuribas> So it complains.
2021-08-30 15:08:03 +0200 <Vektor> You're not saying that simply changing s to s1 will fix it, right?
2021-08-30 15:08:15 +0200 <kuribas> indeed, I am not saying that :)
2021-08-30 15:08:23 +0200 <kuribas> s and s1 are free variables.
2021-08-30 15:08:31 +0200Vajb(~Vajb@2001:999:65:a818:f418:a5b8:e792:8650) (Ping timeout: 252 seconds)
2021-08-30 15:09:21 +0200 <kuribas> You need scopedTypeVariables, put a "forall s ." on "something", the provide a type annotation using "s" in the lambda.
2021-08-30 15:09:28 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-30 15:10:08 +0200 <kuribas> well s1 is a free variable, s is bound inside the type signator, but not available outside.
2021-08-30 15:10:40 +0200 <kuribas> You can make s available inside the function body by writing a "forall s." and using scopeTypeVariables.
2021-08-30 15:10:52 +0200 <Vektor> something:: forall s a2. (Num a2, Reifies s Tape) => [([Char], Expr (Reverse s a2))] -> Expr (Reverse s a2) -> Value (Reverse s a2) -> [a2] -> [a2] - pretty much the same error
2021-08-30 15:12:01 +0200 <Vektor> Not sure if I'm expressing what I want to express there..
2021-08-30 15:13:30 +0200 <kuribas> Vektor: no, you need to put a signature in the lambda body...
2021-08-30 15:16:17 +0200Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2021-08-30 15:17:54 +0200 <kuribas> Vektor: IMO they should have taken a proxy argument.
2021-08-30 15:18:03 +0200 <Vektor> I've extracted the lambda into it's own function to see what ghc would think it is, and it's just :: Num a => ...
2021-08-30 15:18:39 +0200 <Vektor> If I'm not mistaken, that means I don't need s in there and don't need a forall, right?
2021-08-30 15:19:03 +0200 <kuribas> Vektor: yes, you do.
2021-08-30 15:19:08 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-08-30 15:19:15 +0200lortabac(~lortabac@62.98.7.122) (Quit: WeeChat 2.8)
2021-08-30 15:24:04 +0200 <Vektor> I've tried \(theta :: [Reverse s a2]) -> ....; still the same kind of error.
2021-08-30 15:24:14 +0200 <Vektor> Is that what you had in mind?
2021-08-30 15:24:15 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-08-30 15:25:00 +0200 <Vektor> https://paste.tomsmeding.com/d7tR8aJG - there's the error
2021-08-30 15:26:41 +0200renzhi(~xp@2607:fa49:6500:3d00::d986)
2021-08-30 15:27:10 +0200leptest
2021-08-30 15:27:22 +0200testlep
2021-08-30 15:28:16 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr)
2021-08-30 15:30:27 +0200quantum(~quantum@user/quantum/x-8556232) (Quit: Reconnecting)
2021-08-30 15:30:38 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 15:30:44 +0200quantum(~quantum@user/quantum/x-8556232)
2021-08-30 15:31:08 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-30 15:31:55 +0200leplep-
2021-08-30 15:32:24 +0200 <kuribas> Vektor: no, the a2 must be free.
2021-08-30 15:32:47 +0200 <mastarija> Do we have a list of which GHC version uses which base?
2021-08-30 15:34:50 +0200 <Vektor> kuribas: ok, tried "(\(theta :: Num a => [Reverse s a]) -> ..", same thing.
2021-08-30 15:35:01 +0200Morrow_(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-08-30 15:36:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 15:36:26 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-30 15:37:52 +0200 <kuribas> Vektor: (\theta -> unwrapP $ probability env theta expr sample) :: forall a .Expr (Reverse s a) -> Reverse s a
2021-08-30 15:39:02 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-08-30 15:39:14 +0200 <Vektor> theta is [Reverse s a] instead of Expr (Reverse s a); I assume you just looked at the wrong parameter type, right?
2021-08-30 15:39:34 +0200 <kuribas> Vektor: erm no, sorry that was wrong...
2021-08-30 15:39:44 +0200 <kuribas> Vektor: the grad functions gets to choose the "s" type variable.
2021-08-30 15:39:54 +0200 <kuribas> Vektor: So you cannot choose.
2021-08-30 15:40:14 +0200y04nn(~y04nn@91.193.4.154)
2021-08-30 15:41:00 +0200 <kuribas> Vektor: so this is wrong: something :: (Num a2, Reifies s Tape) =>
2021-08-30 15:41:12 +0200 <kuribas> Vektor: because it says "something" can choose the s type variable.
2021-08-30 15:41:25 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
2021-08-30 15:42:30 +0200acidjnk_new3(~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de)
2021-08-30 15:42:53 +0200 <kuribas> Vektor: also, you cannot pass this to grad: [([Char], Expr (Reverse s a2))]
2021-08-30 15:43:25 +0200 <kuribas> Vektor: basically, the "something" function should not have the "s" type variable, or "Reverse" type anywhere.
2021-08-30 15:43:34 +0200jippiedoe(~david@2a02-a44c-e14e-1-b13-831d-8b8c-690b.fixed6.kpn.net)
2021-08-30 15:44:00 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-08-30 15:44:00 +0200 <Vektor> Conceptually, I'd agree. How do I tell that to ghc? :D
2021-08-30 15:45:03 +0200 <kuribas> Vektor: but in that case, env and expr would need to be polymorphic, no?
2021-08-30 15:45:50 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-08-30 15:45:54 +0200 <Vektor> Kinda, yeah. I mean, conceptually what grad does is it wraps the parameters (theta in this case) into a more bespoke type that records what happens to the number.
2021-08-30 15:46:02 +0200 <Vektor> That can be used to compute the gradient.
2021-08-30 15:46:51 +0200 <Vektor> Therefore, any computation that is differentiated, must be Num a => f a -> a
2021-08-30 15:47:21 +0200 <Vektor> Polymorphic over all Num, such that grad can feed in it's special Num type.
2021-08-30 15:47:45 +0200 <merijn> Sounds like you want Rank2Types
2021-08-30 15:47:55 +0200 <Vektor> How
2021-08-30 15:48:01 +0200 <Vektor> 's that different from RankNTypes?
2021-08-30 15:48:07 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-08-30 15:48:21 +0200 <merijn> RankN is just Rank2 generalised to, well, N :p
2021-08-30 15:48:56 +0200 <merijn> I missed the start of the conversation, though, so that was a blind comment :p
2021-08-30 15:49:06 +0200 <kuribas> it looks like impredicative types though...
2021-08-30 15:49:29 +0200hyiltiz(~quassel@31.220.5.250)
2021-08-30 15:49:44 +0200 <merijn> If you want to *return* a RankNType, then yes
2021-08-30 15:50:04 +0200 <kuribas> can you pass (forall a. Expr (Reverse s a2)) to a function?
2021-08-30 15:50:14 +0200 <merijn> Wrap it in a newtype
2021-08-30 15:50:26 +0200 <merijn> kuribas: You can
2021-08-30 15:50:29 +0200 <kuribas> anyway, I have no idea what he is doing, so I am just guessing.
2021-08-30 15:50:31 +0200 <merijn> kuribas: But you can't return it
2021-08-30 15:50:58 +0200 <Vektor> merijn: https://paste.tomsmeding.com/SjS9fUbr - I have to find a proper type signature for "something". Type inference won't help, because a forall has to go somewhere there.
2021-08-30 15:52:26 +0200 <Vektor> As far as I can tell, s and s1 in that type signature ought to be the same thing, but I don't know how to express that
2021-08-30 15:52:27 +0200hololeap_(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-08-30 15:52:58 +0200 <kuribas> Vektor: you cannot express it. You cannot choose s.
2021-08-30 15:52:58 +0200 <merijn> not enough context
2021-08-30 15:53:08 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
2021-08-30 15:53:22 +0200 <kuribas> Vektor: the "grad" function decides what is "s".
2021-08-30 15:53:54 +0200 <Vektor> kuribas: Conceptually, I agree. But what do I do with that info, in terms of writing a type signature?
2021-08-30 15:54:07 +0200lep-lep
2021-08-30 15:54:24 +0200 <kuribas> Vektor: I have no idea, because I have no what you are doing.
2021-08-30 15:54:27 +0200 <tomsmeding> Vektor: should the second => in the type of unwrapP be -> ?
2021-08-30 15:54:57 +0200 <kuribas> Vektor: it's not just "conceptually", the type system prevents you from fixing the "s" to anything.
2021-08-30 15:55:01 +0200 <Vektor> tomsmeding: Correct, sorry about that
2021-08-30 15:55:43 +0200 <tomsmeding> Vektor: does 'Env a' resolve to '[([Char], Expr a)]' ?
2021-08-30 15:56:14 +0200 <Vektor> Oh, did I leave that in? Yeah, it does. Sorry about the confusion
2021-08-30 15:57:08 +0200Pickchea(~private@user/pickchea)
2021-08-30 15:57:57 +0200 <jippiedoe> grad wants its function argument to work on any `s`, whereas your `something` is trying to make it work on a specific `s`, so I think it will need more adjustment than we can do with only type annotations
2021-08-30 15:58:03 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-08-30 15:58:14 +0200 <tomsmeding> yeah that's correct
2021-08-30 15:58:42 +0200aegon(~mike@174.127.249.180)
2021-08-30 15:58:50 +0200 <Vektor> As for what I'm doing, I'm doing some machine learning. I want to maximize the probability of my data wrt. my model. My model is given as Expr a. Expr being a recursive type that encapsulates a language.
2021-08-30 15:58:56 +0200 <tomsmeding> the three arguments to 'something' all have 's' in their types, meaning that the caller decides on that 's'
2021-08-30 15:59:06 +0200 <Vektor> Value a are samples (again, polymorphic over numerical types to deal with grad.
2021-08-30 15:59:12 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-30 15:59:19 +0200 <Vektor> And Env a is context for the computation.
2021-08-30 15:59:25 +0200 <tomsmeding> Vektor: I think that the arguments to 'something' should not be of type Reverse s a, but of type a
2021-08-30 16:00:01 +0200 <Vektor> In a nutshell: probability is relatively fixed in it's type signature. I want a gradient of the theta argument (the [a]).
2021-08-30 16:00:24 +0200sm2n(~sm2n@user/sm2n) (Quit: Leaving)
2021-08-30 16:00:31 +0200 <merijn> Vektor: I think you wanna existentially hide the polymorphic part from you types. But you paste doesn't have any type definitions, so it's hard to say
2021-08-30 16:00:33 +0200 <Vektor> tomsmeding: That's a good point.
2021-08-30 16:00:35 +0200sm2n(~sm2n@user/sm2n)
2021-08-30 16:00:55 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
2021-08-30 16:01:02 +0200 <Vektor> merijn: Which ones do you need? Expr, Value, Probability?
2021-08-30 16:01:28 +0200 <merijn> Everything that appear in those type signatures? :p
2021-08-30 16:01:37 +0200 <merijn> Else it's just random guess work
2021-08-30 16:01:37 +0200aman(~aman@user/aman) (Quit: aman)
2021-08-30 16:02:08 +0200 <kuribas> Vektor: or you can fix the type of the samples, and put a "fmap fromInteger" inside the lambda.
2021-08-30 16:02:29 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 16:02:29 +0200 <jippiedoe> merijn: did you see https://paste.tomsmeding.com/SjS9fUbr too? It has some of those
2021-08-30 16:02:39 +0200aman(~aman@user/aman)
2021-08-30 16:02:55 +0200 <merijn> jippiedoe: That paste has none of the datatypes?
2021-08-30 16:03:31 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 252 seconds)
2021-08-30 16:04:11 +0200 <Vektor> https://paste.tomsmeding.com/lMbNL2MS - try this, it's got the ones I made up. The others are part of Numeric.AD
2021-08-30 16:05:06 +0200 <tomsmeding> Vektor: you should use 'auto' from the 'ad' library, which has type a -> Reverse s a
2021-08-30 16:05:33 +0200 <tomsmeding> and take env, expr and sample with 'a' instead of 'Reverse s a' in their types, and use 'auto' to convert them to Reverse form
2021-08-30 16:05:54 +0200 <tomsmeding> that is, assuming they are constants from the perspective of differentiation
2021-08-30 16:06:01 +0200notzmv(~zmv@user/notzmv)
2021-08-30 16:06:30 +0200 <tomsmeding> 'Reverse' pairs a value with something that collects derivatives for that value, so to inject constants into the computation, you have to pair them with a "dummy" derivative collector that doesn't collect anything for this value
2021-08-30 16:06:34 +0200 <tomsmeding> and that's exactly what 'auto' does
2021-08-30 16:07:30 +0200 <Vektor> tomsmeding that makes sense. I think by failing to do that, I forced env, theta and expr to expose the ugly reverse innards of the differentiation to the function signature of something.
2021-08-30 16:07:39 +0200 <Vektor> Which got me into this mess in the first place.
2021-08-30 16:08:08 +0200 <tomsmeding> Vektor: kind of -- the 's' parameter is a phantom type parameter which ensures if you call 'grad' two times, their inner computations can't mix up
2021-08-30 16:08:23 +0200 <tomsmeding> it's similar to the 's' type parameter in the ST monad in standard Haskell
2021-08-30 16:09:04 +0200 <tomsmeding> so the very _purpose_ of that 's' type parameter is that it's impossible to let it "leak" outside of that lambda argument to 'grad'
2021-08-30 16:09:12 +0200 <aegon> ghc's user guide seems to have some large warnings about using linear haskell. Anyone have experience using it out in the wild? Is it garunteed to break a project aside from exploratory use cases or is it more like, it might not do as expected etc... And if its part way there, what can i do to help with the development of it?
2021-08-30 16:09:29 +0200 <tomsmeding> which is exactly what you tried to do, and the compiler rightfully denied that :) (Though the error is perhaps less intuitive than you might like)
2021-08-30 16:10:15 +0200 <merijn> aegon: It's mostly a newly released, fairly fundamentally different, big extension to the type system
2021-08-30 16:10:19 +0200 <Vektor> tomsmeding: Preach. Yeah, I was kind of confused when it tried to force my constants to become Reverse s a typed. Didn't understand the purpose of s though...
2021-08-30 16:10:32 +0200 <merijn> aegon: So it's hard to predict how it affects things, hence warning signs
2021-08-30 16:11:13 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 16:12:01 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 16:12:01 +0200 <aegon> merijn: awesome, sounds like it wouldn't be to crazy to go start applying it and hope nothing huge breaks then :)
2021-08-30 16:12:10 +0200 <tomsmeding> Vektor: this question was easy for me to answer because I'm literally implementing a reverse AD algorithm at the moment :p
2021-08-30 16:12:53 +0200 <Vektor> Heh. Is it better than what EKmett created? Should I use it? Or just for academic purposes?
2021-08-30 16:13:18 +0200 <tomsmeding> it's not on Haskell directly, but on an embedded language, so it's not a replacement for 'ad' per se
2021-08-30 16:13:43 +0200 <tomsmeding> 'ad' is great, use it if it works for what you want to do :)
2021-08-30 16:14:11 +0200 <Vektor> embedded language as in you implemented a language within haskell?
2021-08-30 16:14:21 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 250 seconds)
2021-08-30 16:14:28 +0200 <tomsmeding> if you want more parallelism, and Accelerate has the right building blocks for you, then I'm working on AD for Accelerate :p (https://hackage.haskell.org/package/accelerate)
2021-08-30 16:14:40 +0200 <tomsmeding> I didn't, someone else did
2021-08-30 16:15:32 +0200 <tomsmeding> but using accelerate for the first time can be a bit of a rabbit hole, so only try it if you want and have some time :)
2021-08-30 16:15:53 +0200 <Vektor> Oh, AD is plenty rabbit hole for me, thankyouverymuch :)
2021-08-30 16:16:35 +0200 <Vektor> Also, I don't think I want more parallelism because the kind of models I'm looking to differentiate aren't very parallelizable either. Makes sense, right?
2021-08-30 16:17:12 +0200 <tomsmeding> I don't know what kind of models you're working on, but if they aren't parallelisable, then they aren't :p
2021-08-30 16:17:24 +0200 <tomsmeding> are you doing probabilistic programming?
2021-08-30 16:18:29 +0200 <Vektor> Is it that obvious? Yeah, I am
2021-08-30 16:18:59 +0200 <tomsmeding> Probability + AD
2021-08-30 16:19:11 +0200 <Vektor> fair point
2021-08-30 16:19:20 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
2021-08-30 16:21:07 +0200y04nn(~y04nn@91.193.4.154) (Ping timeout: 252 seconds)
2021-08-30 16:21:39 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-30 16:21:39 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-30 16:21:39 +0200wroathe(~wroathe@user/wroathe)
2021-08-30 16:21:56 +0200 <Vektor> You're a PhD student as well. What are you working on?
2021-08-30 16:22:05 +0200 <tomsmeding> currently, AD :p
2021-08-30 16:22:17 +0200 <tomsmeding> not too sure what the future will hold yet
2021-08-30 16:22:32 +0200 <Vektor> Now if that isn't a PhD candidate mood right there.
2021-08-30 16:22:36 +0200 <tomsmeding> :D
2021-08-30 16:22:47 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-08-30 16:23:02 +0200 <tomsmeding> mind if I ask what kind of models you're trying to optimise? and perhaps why you aren't using something like stan? (https://mc-stan.org/)
2021-08-30 16:23:12 +0200 <tomsmeding> s/optimise/fit/
2021-08-30 16:23:22 +0200tdammers(~tdammers@77.109.72.213) (Quit: WeeChat 2.3)
2021-08-30 16:24:08 +0200 <Vektor> I assume you're working more on the engineering / parallelism side of AD then? From up here, AD looks like an otherwise solved problem.
2021-08-30 16:25:02 +0200 <tomsmeding> yeah, basically how to do it in a 1. nice way (i.e. preferably mathematically proven correct), and 2. on specific languages, in particular Accelerate and Accelerate-like languages like Futhark
2021-08-30 16:25:35 +0200 <tomsmeding> 'ad' doesn't work for (2.) because it uses fancy Haskell features that don't really work on a GPU or something
2021-08-30 16:26:29 +0200michalz(~michalz@185.246.204.40) (Ping timeout: 250 seconds)
2021-08-30 16:28:22 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-08-30 16:31:20 +0200nschoe(~quassel@2a01:e0a:8e:a190:58d9:8430:bb92:1d4d)
2021-08-30 16:32:12 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-08-30 16:35:12 +0200michalz(~michalz@185.246.204.33)
2021-08-30 16:39:49 +0200acidjnk_new3(~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-08-30 16:41:09 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-08-30 16:42:55 +0200haritzondo(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2021-08-30 16:43:22 +0200haritz(~hrtz@62.3.70.206)
2021-08-30 16:43:22 +0200haritz(~hrtz@62.3.70.206) (Changing host)
2021-08-30 16:43:22 +0200haritz(~hrtz@user/haritz)
2021-08-30 16:44:24 +0200leplep-
2021-08-30 16:44:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 16:48:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Ping timeout: 250 seconds)
2021-08-30 16:54:29 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 244 seconds)
2021-08-30 16:55:40 +0200azeem(~azeem@62.18.127.19)
2021-08-30 16:59:04 +0200goepsilongo_(~goepsilon@2603-7000-ab00-62ed-41c9-c3be-94ad-0c24.res6.spectrum.com) (Ping timeout: 252 seconds)
2021-08-30 17:00:35 +0200goepsilongo(~goepsilon@2603-7000-ab00-62ed-41c9-c3be-94ad-0c24.res6.spectrum.com)
2021-08-30 17:00:40 +0200tdammers(~tdammers@77.109.72.213.res.static.edpnet.net)
2021-08-30 17:01:52 +0200rembo10_(~rembo10@wally.codeshy.com)
2021-08-30 17:02:05 +0200Vooch(~iovoo@096-038-011-034.biz.spectrum.com)
2021-08-30 17:02:20 +0200Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 250 seconds)
2021-08-30 17:02:44 +0200fabfianda(~fabfianda@37.183.255.57) (Quit: Quit)
2021-08-30 17:07:56 +0200rembo10_(~rembo10@wally.codeshy.com) ()
2021-08-30 17:10:00 +0200 <sim590> int-e: about the miniaml example. Everything was contained in the two first linked files (ix.io links). There was a definition for generator and the class, no? Only, `use` is from Control.Lens.
2021-08-30 17:10:08 +0200max22-(~maxime@2a01cb08833598003c11741276acc8d8.ipv6.abo.wanadoo.fr)
2021-08-30 17:10:26 +0200rembo10(~rembo10@wally.codeshy.com)
2021-08-30 17:10:43 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-30 17:11:34 +0200 <sim590> int-e: is it possible to specify that the signature of the class should only require the code to work for some `DHMaterial z`. Is that done with like for instance the `exists` keyword? I'm not sure. I've seen that somewhere.
2021-08-30 17:11:49 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 17:13:22 +0200alx741(~alx741@186.178.108.114) (Ping timeout: 245 seconds)
2021-08-30 17:17:46 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 252 seconds)
2021-08-30 17:18:17 +0200 <int-e> sim590: Oh I missed the first of the three links. I don't know, maybe you could have a type family to obtain z from v and/or b?
2021-08-30 17:18:52 +0200azeem(~azeem@62.18.127.19)
2021-08-30 17:23:16 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 17:23:41 +0200Everything(~Everythin@37.115.210.35)
2021-08-30 17:25:37 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-08-30 17:26:19 +0200alx741(~alx741@181.196.68.163)
2021-08-30 17:27:52 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 17:28:04 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-08-30 17:28:28 +0200hendursaga(~weechat@user/hendursaga)
2021-08-30 17:28:57 +0200 <sim590> Actually, the design is supposed to make `z` independant from `v` and `b`. `z` is used to actually create `v` and `b`. Normally, a public key `b` is created by computing `z ^ v` where `v` is the private key. So, I had this class defined in order to required the retrival of `z` (that could be changed at any time by the user of the library. It's possible that at some point, the generator is changed
2021-08-30 17:28:59 +0200 <sim590> and that new public and private keys must created. The private key is just a random number, but the public key is the exponentiation of `z` with `v`. But it wouldn't make sens to have `z` retrieved from `v` or `b`.
2021-08-30 17:29:19 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-08-30 17:35:25 +0200 <sim590> Do I need to add `z` in the parameters of the class definition?
2021-08-30 17:37:26 +0200Pickchea(~private@user/pickchea) (Ping timeout: 250 seconds)
2021-08-30 17:39:06 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-08-30 17:41:26 +0200markpythonicbtc(~textual@50.228.44.6) (Remote host closed the connection)
2021-08-30 17:41:40 +0200kenran(~kenran@200116b82beee700b3543c7d21744630.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
2021-08-30 17:42:49 +0200kenran(~kenran@200116b82beee70044dd35752422467f.dip.versatel-1u1.de)
2021-08-30 17:46:24 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-30 17:46:24 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-30 17:46:24 +0200wroathe(~wroathe@user/wroathe)
2021-08-30 17:47:30 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-08-30 17:47:41 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2021-08-30 17:47:56 +0200xenon-(~bc8167eb@217.29.117.252)
2021-08-30 17:49:48 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 17:50:46 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-08-30 17:50:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 17:51:27 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-30 17:51:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 17:52:00 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-08-30 17:52:57 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 245 seconds)
2021-08-30 17:53:54 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
2021-08-30 17:56:11 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 250 seconds)
2021-08-30 17:56:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 17:57:48 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 18:01:37 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 18:02:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 18:02:52 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 252 seconds)
2021-08-30 18:03:00 +0200azeem(~azeem@62.18.127.19)
2021-08-30 18:03:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 18:03:58 +0200markus_(~markus@80-121-50-158.adsl.highway.telekom.at) (Ping timeout: 252 seconds)
2021-08-30 18:05:35 +0200lbseale(~lbseale@user/ep1ctetus)
2021-08-30 18:08:19 +0200drewolson(~drewolson@user/drewolson)
2021-08-30 18:08:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 18:09:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 18:09:39 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Remote host closed the connection)
2021-08-30 18:10:01 +0200Vektor(~Vektor@212.232.83.94) (Ping timeout: 256 seconds)
2021-08-30 18:11:38 +0200goepsilongo_(~goepsilon@2603-7000-ab00-62ed-d076-a878-a2d3-a90b.res6.spectrum.com)
2021-08-30 18:13:05 +0200sleblanc(~sleblanc@user/sleblanc) (Ping timeout: 250 seconds)
2021-08-30 18:13:50 +0200goepsilongo(~goepsilon@2603-7000-ab00-62ed-41c9-c3be-94ad-0c24.res6.spectrum.com) (Ping timeout: 250 seconds)
2021-08-30 18:14:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 18:14:58 +0200kenran(~kenran@200116b82beee70044dd35752422467f.dip.versatel-1u1.de) (Ping timeout: 252 seconds)
2021-08-30 18:16:37 +0200sm2n(~sm2n@user/sm2n) (Ping timeout: 252 seconds)
2021-08-30 18:16:51 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-08-30 18:17:00 +0200kenran(~kenran@200116b82beee70044dd35752422467f.dip.versatel-1u1.de)
2021-08-30 18:17:40 +0200Guest6371(~Guest63@86.123.174.39)
2021-08-30 18:17:44 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-08-30 18:20:43 +0200Guest6371(~Guest63@86.123.174.39) (Client Quit)
2021-08-30 18:22:47 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr)
2021-08-30 18:24:03 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-30 18:24:29 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-30 18:24:40 +0200jaspervdj(~jaspervdj@2a04:ee41:3:52cb:ef96:f70:dfb8:90e3)
2021-08-30 18:24:56 +0200kenran(~kenran@200116b82beee70044dd35752422467f.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-08-30 18:26:02 +0200lep-lep
2021-08-30 18:27:33 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-30 18:27:49 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-30 18:28:08 +0200son0p(~ff@181.136.122.143)
2021-08-30 18:29:08 +0200 <sim590> I've added `z` to the class parameters and it seems like it's fine now. Also, I mixed up the type of `z` when I wrote `(MyDHComputableInteger g) <- use generator`. I should have just written `g <- use generator` but that wasn't the whole problem. So yeah, adding `z` in the parameters of the class is the solution. It seems logical to me now that I understand the error message and the meaning of
2021-08-30 18:29:10 +0200 <sim590> "rigid type variable" a bit more.
2021-08-30 18:29:53 +0200 <sim590> int-e: I don't know about type families though. I'll have a look at that also.
2021-08-30 18:29:58 +0200 <sim590> Thanks!
2021-08-30 18:31:59 +0200napping(~brandon@65.128.58.64)
2021-08-30 18:32:09 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
2021-08-30 18:36:16 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
2021-08-30 18:36:50 +0200Gurkenglas(~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de)
2021-08-30 18:36:59 +0200aman(~aman@user/aman) (Quit: aman)
2021-08-30 18:38:34 +0200amk(~amk@109.255.169.126) (Ping timeout: 252 seconds)
2021-08-30 18:39:26 +0200wroathe(~wroathe@user/wroathe)
2021-08-30 18:40:47 +0200amk(~amk@109.255.169.126)
2021-08-30 18:41:21 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-08-30 18:43:21 +0200Axman6(~Axman6@user/axman6) (*.net *.split)
2021-08-30 18:43:21 +0200tubogram(~tubogram@user/tubogram) (*.net *.split)
2021-08-30 18:43:45 +0200tubogram(~tubogram@user/tubogram)
2021-08-30 18:44:21 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 18:45:07 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-30 18:52:31 +0200neo1(~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 250 seconds)
2021-08-30 18:52:48 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 244 seconds)
2021-08-30 18:52:57 +0200azeem(~azeem@62.18.127.19)
2021-08-30 18:53:04 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 18:53:15 +0200markus_(~markus@193-154-202-236.adsl.highway.telekom.at)
2021-08-30 18:57:06 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-30 18:57:10 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2021-08-30 18:57:18 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 18:57:48 +0200dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 272 seconds)
2021-08-30 19:01:46 +0200sm2n(~sm2n@user/sm2n)
2021-08-30 19:02:10 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 240 seconds)
2021-08-30 19:02:22 +0200azeem(~azeem@62.18.127.19)
2021-08-30 19:03:27 +0200ystael(~ystael@user/ystael) (Quit: Lost terminal)
2021-08-30 19:03:42 +0200jippiedoe(~david@2a02-a44c-e14e-1-b13-831d-8b8c-690b.fixed6.kpn.net) (Quit: Leaving)
2021-08-30 19:04:56 +0200Guest7(~Guest7@50.47.115.102)
2021-08-30 19:07:19 +0200Guest7(~Guest7@50.47.115.102) (Client Quit)
2021-08-30 19:07:21 +0200ystael(~ystael@user/ystael)
2021-08-30 19:07:57 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
2021-08-30 19:10:00 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 19:11:45 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-30 19:14:11 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds)
2021-08-30 19:16:41 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-08-30 19:21:42 +0200xff0x(~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a) (Ping timeout: 245 seconds)
2021-08-30 19:23:00 +0200xff0x(~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a)
2021-08-30 19:25:58 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 19:28:18 +0200chris(~chris@81.96.113.213)
2021-08-30 19:28:21 +0200chrisGuest806
2021-08-30 19:30:35 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 19:30:38 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-30 19:34:59 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds)
2021-08-30 19:34:59 +0200opac(~opac@ip-28-56.sn2.clouditalia.com) (Read error: Connection reset by peer)
2021-08-30 19:36:08 +0200opac(~opac@ip-28-56.sn2.clouditalia.com)
2021-08-30 19:43:37 +0200jaspervdj(~jaspervdj@2a04:ee41:3:52cb:ef96:f70:dfb8:90e3) (Quit: Client closed)
2021-08-30 19:45:25 +0200leplep-
2021-08-30 19:49:58 +0200lep-lep
2021-08-30 19:50:47 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-08-30 19:51:18 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-08-30 19:59:43 +0200neo1(~neo3@cpe-292712.ip.primehome.com)
2021-08-30 20:02:22 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 20:06:41 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
2021-08-30 20:06:55 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-30 20:08:03 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Remote host closed the connection)
2021-08-30 20:12:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 20:18:19 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 250 seconds)
2021-08-30 20:22:21 +0200azeem(~azeem@62.18.127.19)
2021-08-30 20:22:29 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-08-30 20:24:24 +0200Guest806(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-30 20:27:21 +0200alx741(~alx741@181.196.68.163) (Ping timeout: 244 seconds)
2021-08-30 20:27:35 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr)
2021-08-30 20:27:47 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-30 20:28:24 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 20:29:17 +0200chris(~chris@81.96.113.213)
2021-08-30 20:29:19 +0200chrisGuest7078
2021-08-30 20:30:48 +0200mizu_no_oto(~mizu_no_o@cpe-74-67-208-45.twcny.res.rr.com)
2021-08-30 20:32:05 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-08-30 20:32:11 +0200 <mastarija> Has anyone played with haddock and internal libraries? When I do `cabal haddock` everything seems fine. I can even see the documentation from my "hidden" internal module from hidden library. But when I build with `cabal haddock --haddock-for-hackage` documentation for items I've exported from my internal module is no longer visible in the main module, only types are, but they are missing the documentation.
2021-08-30 20:32:40 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2021-08-30 20:32:44 +0200 <mastarija> Not sure if this is because I'm viewing docs intended for hackage locally, or if this is how it'll be on the hackage as well.
2021-08-30 20:33:10 +0200 <mastarija> Here's my cabal file: https://github.com/mastarija/valor/blob/new/valor.cabal
2021-08-30 20:33:34 +0200Guest7078(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-08-30 20:34:09 +0200cheater(~Username@user/cheater) (Ping timeout: 248 seconds)
2021-08-30 20:34:35 +0200cheater(~Username@user/cheater)
2021-08-30 20:35:16 +0200chris(~chris@81.96.113.213)
2021-08-30 20:35:20 +0200chrisGuest3410
2021-08-30 20:36:00 +0200mizu_no_oto(~mizu_no_o@cpe-74-67-208-45.twcny.res.rr.com) (Quit: Client closed)
2021-08-30 20:37:43 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 20:37:49 +0200gentauro(~gentauro@user/gentauro)
2021-08-30 20:38:17 +0200mizu_no_oto(~textual@cpe-74-67-208-45.twcny.res.rr.com)
2021-08-30 20:40:26 +0200alx741(~alx741@186.178.108.235)
2021-08-30 20:41:46 +0200Everything(~Everythin@37.115.210.35) ()
2021-08-30 20:41:49 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
2021-08-30 20:42:15 +0200 <mastarija> hm... adding `docs all` to the incantation seems to fix the missing documentation for re-exported items
2021-08-30 20:42:24 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-08-30 20:44:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 20:51:34 +0200 <maerwald> What's the inverse class of IsString?
2021-08-30 20:51:44 +0200 <dminuoso> Inverse in what sense?
2021-08-30 20:52:18 +0200 <maerwald> sth like ToString
2021-08-30 20:52:39 +0200 <Clint> IsntString
2021-08-30 20:52:49 +0200 <dminuoso> maerwald: And what would that do, exactly?
2021-08-30 20:52:52 +0200 <dminuoso> Other than say Show
2021-08-30 20:53:01 +0200 <maerwald> huh?
2021-08-30 20:53:17 +0200 <dminuoso> Oh
2021-08-30 20:53:19 +0200 <maerwald> you don't call show when converting bytestring or Text to String
2021-08-30 20:53:22 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 252 seconds)
2021-08-30 20:53:40 +0200 <dminuoso> I see, you mean some ToString class that you could roundtrip back again after IsString?
2021-08-30 20:53:49 +0200 <maerwald> sth for my logger
2021-08-30 20:53:52 +0200 <dminuoso> (akin to Read and Show?)
2021-08-30 20:54:01 +0200azeem(~azeem@62.18.127.19)
2021-08-30 20:54:03 +0200 <maerwald> wanted to use https://hackage.haskell.org/package/fast-logger-3.0.5/docs/System-Log-FastLogger.html#t:ToLogStr first
2021-08-30 20:54:08 +0200 <maerwald> but then realized I don't need the lib at all
2021-08-30 20:54:24 +0200 <maerwald> except I don't have such a nice class
2021-08-30 20:54:26 +0200 <dminuoso> 20:53:20 maerwald | you don't call show when converting bytestring or Text to String
2021-08-30 20:54:37 +0200 <dminuoso> converting bytestring to String is not a clear operation what that should even do
2021-08-30 20:54:47 +0200 <dminuoso> "convert binary data to string" - what's the semantics of that?
2021-08-30 20:54:48 +0200 <maerwald> for my use case it's well-defined
2021-08-30 20:54:56 +0200 <dminuoso> Sure, which is why a typeclass is a bad fit for it
2021-08-30 20:55:17 +0200 <maerwald> i don't really care, it fits my use case if it does utf8 conversion
2021-08-30 20:55:24 +0200 <dminuoso> You mean decoding?
2021-08-30 20:58:56 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 21:03:09 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-08-30 21:03:10 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2021-08-30 21:04:34 +0200 <monochrom> Do you really need it to be a class method?
2021-08-30 21:05:10 +0200xff0x(~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a) (Ping timeout: 240 seconds)
2021-08-30 21:06:12 +0200 <maerwald> I just switched to Text and don't bother
2021-08-30 21:09:41 +0200xff0x(~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a)
2021-08-30 21:10:20 +0200kenran(~kenran@200116b82beee7004dc0acd36ace2d8d.dip.versatel-1u1.de)
2021-08-30 21:13:32 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-30 21:16:49 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 21:18:07 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 252 seconds)
2021-08-30 21:18:28 +0200azeem(~azeem@62.18.127.19)
2021-08-30 21:18:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-30 21:19:58 +0200kuribas(~user@ptr-25vy0i98x8tu9s1v8mf.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-08-30 21:20:53 +0200 <mastarija> Is there a way to silence haddock warnings, like not being able to link to GHC.Classes.Eq
2021-08-30 21:21:25 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-08-30 21:21:46 +0200pavonia(~user@user/siracusa)
2021-08-30 21:22:05 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 21:26:22 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2021-08-30 21:26:52 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: Connection reset by peer)
2021-08-30 21:27:18 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-08-30 21:33:44 +0200kenran(~kenran@200116b82beee7004dc0acd36ace2d8d.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-08-30 21:34:04 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 21:34:15 +0200kayprish(~kayprish@cable-188-2-229-172.dynamic.sbb.rs)
2021-08-30 21:34:38 +0200kenran(~kenran@200116b82beee700b7996ab960c3ff15.dip.versatel-1u1.de)
2021-08-30 21:34:48 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
2021-08-30 21:40:59 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-08-30 21:41:07 +0200ubert(~Thunderbi@178.115.67.30.wireless.dyn.drei.com)
2021-08-30 21:41:14 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 244 seconds)
2021-08-30 21:41:28 +0200azeem(~azeem@62.18.127.19)
2021-08-30 21:44:01 +0200_xft0(~jaroslawj@185.234.208.208.r.toneticgroup.pl)
2021-08-30 21:45:24 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-08-30 21:45:40 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 240 seconds)
2021-08-30 21:46:04 +0200azeem(~azeem@62.18.127.19)
2021-08-30 21:50:14 +0200mjrosenb(~mrosenbe@4.7.173.100)
2021-08-30 21:50:34 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 252 seconds)
2021-08-30 21:51:18 +0200azeem(~azeem@62.18.127.19)
2021-08-30 21:52:48 +0200 <mjrosenb> with lens, is there a way to do something like a zip? e.g. I have [(1, 'a'), (2, 'b')] and [4, 6], and with (*), I want to get [(4, 'a'), (12, 'b')]
2021-08-30 21:54:38 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk)
2021-08-30 21:55:12 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 21:55:15 +0200mjrosenb(~mrosenbe@4.7.173.100) (Read error: Connection reset by peer)
2021-08-30 21:55:53 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-30 21:59:10 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
2021-08-30 21:59:52 +0200mei(~mei@user/mei) (Ping timeout: 252 seconds)
2021-08-30 22:02:45 +0200ystael(~ystael@user/ystael) (Ping timeout: 250 seconds)
2021-08-30 22:02:45 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
2021-08-30 22:03:38 +0200ubert(~Thunderbi@178.115.67.30.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-08-30 22:03:56 +0200ubert(~Thunderbi@178.115.67.30.wireless.dyn.drei.com)
2021-08-30 22:03:56 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
2021-08-30 22:04:05 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 22:04:11 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-08-30 22:05:07 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-08-30 22:05:10 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 240 seconds)
2021-08-30 22:06:55 +0200juhp(~juhp@128.106.188.220)
2021-08-30 22:08:10 +0200ubert(~Thunderbi@178.115.67.30.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-08-30 22:08:47 +0200mizu_no_oto(~textual@cpe-74-67-208-45.twcny.res.rr.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-30 22:13:17 +0200dagi59194dagit
2021-08-30 22:13:38 +0200 <aegon> traverse and fst?
2021-08-30 22:13:57 +0200 <aegon> oh, he quit
2021-08-30 22:15:29 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
2021-08-30 22:19:35 +0200 <dminuoso> aegon: that wouldnt do it.
2021-08-30 22:20:06 +0200 <aegon> yeah, i think he was looking for Grates?
2021-08-30 22:20:37 +0200 <aegon> dunno, started looking around after I thought about it, since he quit i'm going back to work instead of grokking grates, those seem like it though
2021-08-30 22:20:43 +0200 <aegon> :P
2021-08-30 22:20:59 +0200mjrosenb(~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net)
2021-08-30 22:21:22 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 22:21:43 +0200 <dminuoso> I think what they were looking for is
2021-08-30 22:21:44 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 22:21:46 +0200 <dminuoso> % :t partsOf
2021-08-30 22:21:48 +0200 <yahb> dminuoso: Functor f => Traversing (->) f s t a a -> LensLike f s t [a] [a]
2021-08-30 22:21:49 +0200 <mjrosenb> looks like logs aren't up yet, and my machine got bounced. Were there any responses to my question about an hour ago?
2021-08-30 22:21:53 +0200 <dminuoso> mjrosenb: ^-
2021-08-30 22:21:58 +0200 <mjrosenb> hrm, that looks relevant
2021-08-30 22:22:01 +0200 <aegon> I'm still getting used to basic lenses
2021-08-30 22:22:22 +0200 <dminuoso> mjrosenb: Do look up the docs, it's a highly unsafe primitive
2021-08-30 22:22:36 +0200 <dminuoso> Well potentially unlawful.
2021-08-30 22:22:49 +0200 <aegon> dminuoso: are Grates at all relevant to this or did I get sideholed down that package doc
2021-08-30 22:23:12 +0200 <mjrosenb> I remeber seeing partsOf, and not thinking it relevant, but I'll look at it again.
2021-08-30 22:23:18 +0200 <aegon> https://hackage.haskell.org/package/lens-family-core-2.1.0/docs/Lens-Family.html
2021-08-30 22:23:25 +0200 <dminuoso> mjrosenb: Mmm, looking at it again and again, I dont think partsOf even helps here.
2021-08-30 22:23:54 +0200 <dminuoso> mjrosenb: I'd probably use an indexed traversal, and then iover
2021-08-30 22:23:59 +0200 <aegon> :t zipWithOf
2021-08-30 22:24:00 +0200 <lambdabot> error:
2021-08-30 22:24:00 +0200 <lambdabot> • Variable not in scope: zipWithOf
2021-08-30 22:24:00 +0200 <lambdabot> • Perhaps you meant one of these:
2021-08-30 22:24:32 +0200 <dminuoso> i.e. something like
2021-08-30 22:24:37 +0200 <aegon> https://hackage.haskell.org/package/lens-family-core-2.1.0/docs/Lens-Family.html#v:zipWithOf
2021-08-30 22:24:48 +0200zebrag(~chris@user/zebrag)
2021-08-30 22:25:13 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-08-30 22:25:40 +0200nschoe(~quassel@2a01:e0a:8e:a190:58d9:8430:bb92:1d4d) (Ping timeout: 240 seconds)
2021-08-30 22:25:42 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk)
2021-08-30 22:25:48 +0200 <dminuoso> % import qualified Data.Vector as V
2021-08-30 22:25:48 +0200 <mjrosenb> aegon: well, the name zipWithOf sounds promising
2021-08-30 22:25:48 +0200 <yahb> dminuoso:
2021-08-30 22:25:58 +0200 <dminuoso> mjrosenb: that's outside the scope of regular lenses
2021-08-30 22:26:14 +0200 <dminuoso> oh mmm
2021-08-30 22:26:47 +0200 <dminuoso> This is indeed interesting
2021-08-30 22:26:51 +0200 <mjrosenb> the problem with an indexed traversal is that it'll turn an o(n) operation into an o(n^2) operation
2021-08-30 22:27:27 +0200 <dminuoso> Did you do profiling on this?
2021-08-30 22:27:39 +0200 <dminuoso> It might not even be relevant
2021-08-30 22:27:47 +0200 <mjrosenb> not that I expect n to be more than 10, but *shrug*
2021-08-30 22:27:53 +0200 <dminuoso> ...
2021-08-30 22:28:00 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
2021-08-30 22:28:14 +0200 <dminuoso> You can stuff it in a vector if you really care
2021-08-30 22:28:30 +0200 <dminuoso> Data will stay inside a cache line
2021-08-30 22:30:54 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-08-30 22:31:52 +0200burnsidesLlama(~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 244 seconds)
2021-08-30 22:32:23 +0200hannessteffenhag(~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
2021-08-30 22:39:06 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 244 seconds)
2021-08-30 22:39:18 +0200azeem(~azeem@62.18.127.19)
2021-08-30 22:41:20 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-30 22:47:05 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
2021-08-30 22:47:49 +0200acidjnk_new3(~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de)
2021-08-30 22:48:08 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 250 seconds)
2021-08-30 22:48:17 +0200xenon-(~bc8167eb@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-08-30 22:48:31 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-08-30 22:49:00 +0200azeem(~azeem@62.18.127.19)
2021-08-30 22:49:55 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2021-08-30 22:51:07 +0200Lord_of_Life_Lord_of_Life
2021-08-30 22:51:30 +0200Pickchea(~private@user/pickchea)
2021-08-30 22:57:07 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-08-30 22:57:34 +0200_xft0(~jaroslawj@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal)
2021-08-30 23:05:28 +0200sjb0(~stephen@1.145.78.87)
2021-08-30 23:06:12 +0200 <maerwald> tomsmeding: I'm down to 73 deps from 136!
2021-08-30 23:06:28 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 23:06:32 +0200 <maerwald> by removing 4 packages
2021-08-30 23:06:53 +0200 <tomsmeding> maerwald: 🎉
2021-08-30 23:07:03 +0200 <tomsmeding> doing the good work
2021-08-30 23:07:14 +0200 <tomsmeding> you got the logger as well?
2021-08-30 23:07:33 +0200 <maerwald> I dropped loggers and rolled my own
2021-08-30 23:07:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Remote host closed the connection)
2021-08-30 23:07:40 +0200 <maerwald> tried fast-logger first
2021-08-30 23:07:53 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 23:07:56 +0200phma(~phma@host-67-44-208-231.hnremote.net) (Read error: Connection reset by peer)
2021-08-30 23:08:18 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 23:09:33 +0200wrengr_awaywrengr
2021-08-30 23:09:42 +0200 <Rembane_> maerwald: What architecture/idea/construction did you with for a logger?
2021-08-30 23:10:12 +0200 <maerwald> I posted it here: https://www.reddit.com/r/haskell/comments/pe9109/good_reasonably_easy_log_library/hayzn3m?utm_sour…
2021-08-30 23:10:35 +0200phma(~phma@host-67-44-209-72.hnremote.net)
2021-08-30 23:12:27 +0200 <Rembane_> maerwald: Thank you!
2021-08-30 23:12:41 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
2021-08-30 23:13:43 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 244 seconds)
2021-08-30 23:14:24 +0200 <maerwald> couldn't figure out how you combine loggers in fast-logger
2021-08-30 23:14:39 +0200 <maerwald> and LogCallback isn't enough imo
2021-08-30 23:14:40 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 240 seconds)
2021-08-30 23:14:47 +0200acidjnk_new(~acidjnk@p200300d0c72b958461a8e0175dc7ce9e.dip0.t-ipconnect.de)
2021-08-30 23:14:57 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 23:15:36 +0200hyiltiz(~quassel@31.220.5.250)
2021-08-30 23:15:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-30 23:16:24 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-08-30 23:16:41 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-30 23:17:28 +0200 <Rembane_> maerwald: I like the code of your logger, it's very simple and extendable.
2021-08-30 23:18:02 +0200acidjnk_new3(~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-30 23:18:12 +0200 <maerwald> the only thing that fast-logger gives me is O(1) append for LogStr
2021-08-30 23:19:29 +0200 <maerwald> Rembane_: yeah, you just add stuff to LoggerConfig, adjust logInternal and pass it in when you construct your reader
2021-08-30 23:22:25 +0200 <maerwald> I guess MonadLogger allows logging in pure code too
2021-08-30 23:22:26 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
2021-08-30 23:22:58 +0200 <maerwald> but not sure that matters for most
2021-08-30 23:23:00 +0200 <Rembane_> I've never needed logging in pure code, do you?
2021-08-30 23:23:12 +0200 <maerwald> if I do, I just add MonadIO :p
2021-08-30 23:23:59 +0200 <Rembane_> ^^
2021-08-30 23:24:39 +0200 <Rembane_> Either the pure functions work as intended, or I Debug.Trace them until they do.
2021-08-30 23:26:38 +0200 <maerwald> tomsmeding: so it was: string-interpolate, zip, monad-logger and yaml
2021-08-30 23:26:43 +0200gogo(~gogo@212.83.184.228)
2021-08-30 23:26:58 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-30 23:28:12 +0200 <maerwald> tomsmeding: how did you analyze the deps again?
2021-08-30 23:28:17 +0200 <gogo> hello please a server for cvv and prepayer card sorry
2021-08-30 23:30:49 +0200 <maerwald> I guess one could add a golden test that uses `cabal-plan topo`
2021-08-30 23:30:58 +0200 <Lycurgus> https://github.com/commercialhaskell/stack-templates appears to be the complete set, intimations to the contrary notwithstanding, is that the case?
2021-08-30 23:32:19 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 23:33:07 +0200lavaman(~lavaman@98.38.249.169)
2021-08-30 23:33:13 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-30 23:33:21 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 244 seconds)
2021-08-30 23:34:44 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 23:36:18 +0200minimario(~minimario@2603:900a:1600:ba00:fd6a:eb62:ef42:2446)
2021-08-30 23:38:55 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-08-30 23:39:12 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-30 23:40:30 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-08-30 23:40:34 +0200Morrow_(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds)
2021-08-30 23:40:49 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-30 23:48:34 +0200gogo(~gogo@212.83.184.228) (Remote host closed the connection)
2021-08-30 23:49:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-30 23:49:40 +0200azeem(~azeem@62.18.127.19) (Ping timeout: 250 seconds)
2021-08-30 23:52:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
2021-08-30 23:52:34 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-08-30 23:52:56 +0200azeem(~azeem@62.18.127.19)
2021-08-30 23:56:24 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-08-30 23:58:41 +0200kenran(~kenran@200116b82beee700b7996ab960c3ff15.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-08-30 23:58:47 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 245 seconds)