2021/06/09

2021-06-09 00:01:55 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-09 00:04:06 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-06-09 00:05:27 +0200ddellacosta(~ddellacos@89.46.62.128) (Remote host closed the connection)
2021-06-09 00:06:03 +0200ddellacosta(~ddellacos@89.46.62.128)
2021-06-09 00:06:50 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:740c:f2c0:db49:e24b) (Quit: Leaving)
2021-06-09 00:07:03 +0200dudek(~dudek@185.150.236.112) (Quit: Leaving)
2021-06-09 00:07:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90fb:e693:9986:91e0) (Remote host closed the connection)
2021-06-09 00:07:27 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90fb:e693:9986:91e0)
2021-06-09 00:09:47 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 00:10:37 +0200ddellacosta(~ddellacos@89.46.62.128) (Ping timeout: 258 seconds)
2021-06-09 00:13:06 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-09 00:14:27 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-06-09 00:17:51 +0200blankhart(~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) (Quit: WeeChat 2.8)
2021-06-09 00:18:02 +0200boxscape(~boxscape@user/boxscape) (Quit: Connection closed)
2021-06-09 00:18:54 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2021-06-09 00:22:51 +0200Codaraxis(~Codaraxis@89.45.7.142) (Read error: Connection reset by peer)
2021-06-09 00:23:03 +0200Codaraxis(~Codaraxis@89.45.7.142)
2021-06-09 00:26:38 +0200agumonke`(~user@88.160.31.174) (Read error: Connection reset by peer)
2021-06-09 00:27:24 +0200xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-06-09 00:27:43 +0200yoctocell(~yoctocell@h87-96-130-155.cust.a3fiber.se) (Quit: Using Circe, the loveliest of all IRC clients)
2021-06-09 00:27:49 +0200xkuru(~xkuru@user/xkuru)
2021-06-09 00:28:21 +0200notzmv(~zmv@user/notzmv)
2021-06-09 00:28:25 +0200agumonke`(~user@88.160.31.174)
2021-06-09 00:29:37 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 252 seconds)
2021-06-09 00:31:13 +0200xsperry(~as@user/xsperry)
2021-06-09 00:31:17 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-09 00:32:09 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130) (Ping timeout: 245 seconds)
2021-06-09 00:34:21 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 00:37:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 00:40:09 +0200 <zwro[m]> hi I'm on Matrix and a little confused. is this freenode or libera?
2021-06-09 00:40:20 +0200 <Cajun> libera
2021-06-09 00:40:45 +0200 <zwro[m]> it's libera, right?
2021-06-09 00:41:01 +0200 <geekosaur> yes
2021-06-09 00:46:06 +0200 <zwro[m]> thanks. I'm noticing some lag
2021-06-09 00:46:48 +0200lbseale(~lbseale@ip72-194-54-201.sb.sd.cox.net) (Changing host)
2021-06-09 00:46:48 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-09 00:46:49 +0200 <geekosaur> I think the bridge is still in testing; it's laggy and it goes down fairly often
2021-06-09 00:46:54 +0200zwro[m](~zwromatri@2001:470:69fc:105::1d4) ()
2021-06-09 00:47:05 +0200 <geekosaur> welp
2021-06-09 00:47:25 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 258 seconds)
2021-06-09 00:47:45 +0200lbseale(~lbseale@user/ep1ctetus) (Quit: Leaving)
2021-06-09 00:48:00 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-09 00:49:31 +0200jespada(~jespada@90.254.242.55) (Ping timeout: 264 seconds)
2021-06-09 00:50:38 +0200jespada(~jespada@90.254.242.55)
2021-06-09 00:52:51 +0200 <sm[m]> it will also sometimes stop relaying IRC to Matrix, but thankfully that doesn't seem to be affecting this channel much
2021-06-09 00:54:00 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 00:58:31 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-06-09 00:59:52 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 01:01:36 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-06-09 01:05:18 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-09 01:08:15 +0200ddellacosta(~ddellacos@89.46.62.113)
2021-06-09 01:09:32 +0200agumonke`(~user@88.160.31.174) (Ping timeout: 250 seconds)
2021-06-09 01:11:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-06-09 01:11:49 +0200Jin63(~Jin@ip-109-41-193-148.web.vodafone.de)
2021-06-09 01:12:34 +0200ddellacosta(~ddellacos@89.46.62.113) (Ping timeout: 245 seconds)
2021-06-09 01:13:38 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-09 01:16:03 +0200hexfive(~eric@50.35.83.177)
2021-06-09 01:16:12 +0200hexfive(~eric@50.35.83.177) (Client Quit)
2021-06-09 01:16:49 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2-rc1)
2021-06-09 01:16:54 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 250 seconds)
2021-06-09 01:17:59 +0200jaevanko(~jaevanko@2600:1700:1330:2bef:8da6:e24d:9a34:2f32)
2021-06-09 01:19:02 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com)
2021-06-09 01:19:09 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
2021-06-09 01:24:19 +0200motherfs1(~motherfsc@user/motherfsck)
2021-06-09 01:26:27 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 252 seconds)
2021-06-09 01:26:38 +0200MQ-17J(~MQ-17J@8.21.10.116)
2021-06-09 01:26:53 +0200ddellacosta(~ddellacos@89.46.62.50)
2021-06-09 01:31:24 +0200ddellacosta(~ddellacos@89.46.62.50) (Ping timeout: 252 seconds)
2021-06-09 01:37:31 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-06-09 01:37:52 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-09 01:38:36 +0200jamestmartin(james@jtmar.me)
2021-06-09 01:39:00 +0200jneira(~jneira@166.red-81-39-172.dynamicip.rima-tde.net) (Ping timeout: 250 seconds)
2021-06-09 01:41:35 +0200blankhart(~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net)
2021-06-09 01:41:37 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1)
2021-06-09 01:42:02 +0200fendor_(~fendor@178.165.130.85.wireless.dyn.drei.com)
2021-06-09 01:42:50 +0200Jin63AWizzard
2021-06-09 01:42:54 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 250 seconds)
2021-06-09 01:43:40 +0200ddellacosta(~ddellacos@89.46.62.58)
2021-06-09 01:43:46 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 258 seconds)
2021-06-09 01:44:38 +0200fendor(~fendor@178.115.41.96.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
2021-06-09 01:47:13 +0200AWizzard(~Jin@ip-109-41-193-148.web.vodafone.de) (Quit: Client closed)
2021-06-09 01:48:07 +0200 <jaevanko> Is it possible to describe a function that takes a function as an argument that has a class bound on it? For example, like this: https://gotbits.net/di.hs
2021-06-09 01:48:22 +0200ddellacosta(~ddellacos@89.46.62.58) (Ping timeout: 258 seconds)
2021-06-09 01:49:31 +0200xkuru(~xkuru@user/xkuru)
2021-06-09 01:51:35 +0200 <jaevanko> Wait. That works if I add RankNTypes and jam a forall in there
2021-06-09 01:51:38 +0200 <jaevanko> Hmm :/
2021-06-09 01:51:39 +0200 <geekosaur> you'd need a forall to introduce a class context in that position, otherwise you put it in the normal place
2021-06-09 01:52:43 +0200 <jaevanko> Is GHC able to inline the definition of lift' so it doesn't have to do dynamic dispatch on the passed in function?
2021-06-09 01:53:04 +0200 <jaevanko> I think that question was malformed
2021-06-09 01:56:01 +0200 <jaevanko> But if I define (+) in terms of that lift', would it have to pass in the typeclass dictionary, or could it optimize it to just dispatch on Value's tag?
2021-06-09 01:56:34 +0200 <geekosaur> I also suspect that doesn't quite do what you'd hoped, specifically because there's no way for it to relate the typeclass to the tag
2021-06-09 01:57:35 +0200 <jaevanko> How do you mean?
2021-06-09 01:58:02 +0200 <geekosaur> \hm, no, I misunderstood what you were doing there. I can't answer your question, either
2021-06-09 01:58:34 +0200 <jaevanko> Guess I'll just try it and squint at some Core
2021-06-09 02:00:00 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90fb:e693:9986:91e0) (Remote host closed the connection)
2021-06-09 02:00:33 +0200derelict(~winter@2603-6011-f901-9e5b-78b5-8b2f-cdb2-4171.res6.spectrum.com) (Quit: WeeChat 3.1)
2021-06-09 02:02:02 +0200sm_sm
2021-06-09 02:02:46 +0200ddellacosta(~ddellacos@86.106.121.116)
2021-06-09 02:07:10 +0200ddellacosta(~ddellacos@86.106.121.116) (Ping timeout: 250 seconds)
2021-06-09 02:07:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90fb:e693:9986:91e0)
2021-06-09 02:09:10 +0200marinelli(~marinelli@gateway/tor-sasl/marinelli) (Ping timeout: 252 seconds)
2021-06-09 02:09:38 +0200marinelli(~marinelli@gateway/tor-sasl/marinelli)
2021-06-09 02:10:36 +0200hmmmas(~chenqisu1@183.217.201.236)
2021-06-09 02:11:08 +0200agumonke`(~user@88.163.231.79)
2021-06-09 02:11:39 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79)
2021-06-09 02:13:31 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-06-09 02:17:11 +0200pe200012(~pe200012@58.248.179.180)
2021-06-09 02:17:27 +0200nkpart(uid3844@id-3844.highgate.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-09 02:17:46 +0200Guest53(~Guest53@2601:640:4080:dca0:196f:8963:ff06:765b)
2021-06-09 02:18:37 +0200agumonke`(~user@88.163.231.79) (Read error: Connection reset by peer)
2021-06-09 02:18:39 +0200Guest53(~Guest53@2601:640:4080:dca0:196f:8963:ff06:765b) (Client Quit)
2021-06-09 02:20:50 +0200agumonke`(~user@88.163.231.79)
2021-06-09 02:22:28 +0200 <slack1256> If I define `newtype Supremum a b = MkS a deriving Eq` and I load that module on ghci, run `:info Supremum` that prints `instance (Eq a) => Eq (Supremum a)`. That instance context is implicitly declared on my `deriving` clause, is that part of the haskell report? Is that "smartness" specified somewhere?
2021-06-09 02:22:45 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-06-09 02:22:49 +0200zeenk(~zeenk@2a02:2f04:a310:b600:b098:bf18:df4d:4c41) (Quit: Konversation terminated!)
2021-06-09 02:25:27 +0200trent(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
2021-06-09 02:25:46 +0200 <jaevanko> If you replace the `MkS a` with `MkS b`, would the instance bound change to Eq b?
2021-06-09 02:27:08 +0200 <slack1256> Yes. It seems it does some analysis.
2021-06-09 02:29:09 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-09 02:29:41 +0200derelict(~winter@2603-6011-f901-9e5b-78b5-8b2f-cdb2-4171.res6.spectrum.com)
2021-06-09 02:33:43 +0200 <geekosaur> yes, this is defined in the Report
2021-06-09 02:34:01 +0200FunctorPunk(~igloo@c-73-119-137-166.hsd1.ma.comcast.net)
2021-06-09 02:34:33 +0200 <ski> slack1256 : <https://www.haskell.org/onlinereport/derived.html>
2021-06-09 02:34:35 +0200FunctorPunk(~igloo@c-73-119-137-166.hsd1.ma.comcast.net) (Client Quit)
2021-06-09 02:34:49 +0200 <slack1256> Thank god.
2021-06-09 02:34:53 +0200 <geekosaur> https://www.haskell.org/onlinereport/haskell2010/haskellch11.html#x18-18300011.1
2021-06-09 02:35:52 +0200 <slack1256> This is awesome, I feel I can rely on such behaviour now!
2021-06-09 02:36:18 +0200 <slack1256> I was exploring if we should enable some kind of instance context specification on the deriving clauses :fear: .
2021-06-09 02:38:04 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b)
2021-06-09 02:38:58 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 258 seconds)
2021-06-09 02:39:10 +0200 <ski> slack1256 : you can write `deriving instance Eq a => Eq (Supremum a b)' as a separate declaration, if you enable `StandaloneDeriving'
2021-06-09 02:41:16 +0200 <slack1256> Got it.
2021-06-09 02:41:40 +0200xkuru(~xkuru@user/xkuru)
2021-06-09 02:41:55 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b) (Client Quit)
2021-06-09 02:43:04 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b)
2021-06-09 02:45:17 +0200 <slack1256> TIL: `StandaloneDeriving` helps recover `stock` deriving for GADTs and have more specific instance context with stock deriving.
2021-06-09 02:45:20 +0200 <slack1256> Awesome stuff.
2021-06-09 02:47:01 +0200MQ-17J(~MQ-17J@8.21.10.116) (Ping timeout: 258 seconds)
2021-06-09 02:53:03 +0200fjmorazan(~quassel@user/fjmorazan) (Quit: fjmorazan)
2021-06-09 02:53:45 +0200fjmorazan(~quassel@user/fjmorazan)
2021-06-09 03:02:10 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-06-09 03:03:59 +0200yd502(~yd502@180.168.212.6)
2021-06-09 03:08:09 +0200yd502_(~yd502@180.168.212.6)
2021-06-09 03:08:12 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 252 seconds)
2021-06-09 03:10:29 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 245 seconds)
2021-06-09 03:10:31 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 264 seconds)
2021-06-09 03:10:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90fb:e693:9986:91e0) (Remote host closed the connection)
2021-06-09 03:10:52 +0200otto_s(~user@p5de2f98e.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-06-09 03:12:26 +0200xff0x_(~xff0x@2001:1a81:52c9:6b00:ea05:f1db:1e96:7c29)
2021-06-09 03:14:43 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Ping timeout: 264 seconds)
2021-06-09 03:15:38 +0200xff0x(~xff0x@port-92-193-150-196.dynamic.as20676.net) (Ping timeout: 250 seconds)
2021-06-09 03:15:55 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b95b:27c0:9816:d7ad)
2021-06-09 03:22:06 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7) (Ping timeout: 250 seconds)
2021-06-09 03:22:43 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7)
2021-06-09 03:25:34 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-06-09 03:28:46 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-09 03:31:58 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-06-09 03:34:47 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-09 03:37:09 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
2021-06-09 03:38:27 +0200pe200012(~pe200012@58.248.179.180) (Ping timeout: 252 seconds)
2021-06-09 03:38:41 +0200pe200012(~pe200012@58.248.179.180)
2021-06-09 03:38:48 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-06-09 03:41:54 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 03:43:48 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-09 03:44:38 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 03:45:03 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
2021-06-09 03:48:28 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-09 03:50:25 +0200haltux(~haltux@a89-154-181-47.cpe.netcabo.pt)
2021-06-09 03:57:42 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 252 seconds)
2021-06-09 03:58:57 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-09 04:00:42 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 250 seconds)
2021-06-09 04:00:58 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 04:03:51 +0200ddellacosta(~ddellacos@86.106.121.84)
2021-06-09 04:05:22 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
2021-06-09 04:05:34 +0200unyu(~pyon@user/pyon)
2021-06-09 04:06:24 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-06-09 04:06:24 +0200FinnElijaGuest2126
2021-06-09 04:06:24 +0200finn_elijaFinnElija
2021-06-09 04:07:57 +0200ddellacosta(~ddellacos@86.106.121.84) (Ping timeout: 244 seconds)
2021-06-09 04:09:26 +0200Guest2126(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
2021-06-09 04:11:44 +0200td_(~td@muedsl-82-207-238-242.citykom.de) (Ping timeout: 258 seconds)
2021-06-09 04:13:51 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 04:15:38 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-09 04:18:19 +0200qoelet(~kumo@139.180.144.166) (Ping timeout: 264 seconds)
2021-06-09 04:20:13 +0200trent(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 272 seconds)
2021-06-09 04:21:50 +0200qoelet(~kumo@139.180.144.166)
2021-06-09 04:22:09 +0200ddellacosta(~ddellacos@86.106.121.69)
2021-06-09 04:23:17 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-09 04:26:33 +0200ddellacosta(~ddellacos@86.106.121.69) (Ping timeout: 244 seconds)
2021-06-09 04:27:31 +0200wei2912(~wei2912@112.199.250.21)
2021-06-09 04:27:35 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 244 seconds)
2021-06-09 04:27:57 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-09 04:28:45 +0200qoelet(~kumo@139.180.144.166) (Quit: WeeChat 2.9)
2021-06-09 04:29:46 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 04:29:47 +0200c_wraith(~c_wraith@adjoint.us)
2021-06-09 04:30:46 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Quit: WeeChat 3.1)
2021-06-09 04:31:51 +0200nattiestnate(~nate@36.70.194.182) (Quit: WeeChat 3.1)
2021-06-09 04:33:03 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 04:34:21 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-06-09 04:35:30 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 258 seconds)
2021-06-09 04:35:48 +0200c_l_ste(~celeste@ip68-12-146-37.ok.ok.cox.net) (Ping timeout: 250 seconds)
2021-06-09 04:37:25 +0200nilof(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 258 seconds)
2021-06-09 04:43:02 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-09 04:45:30 +0200a6a45081-2b83(~aditya@223.226.227.160)
2021-06-09 04:47:12 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-06-09 04:49:39 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-06-09 04:57:23 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-06-09 04:57:28 +0200a6a45081-2b83(~aditya@223.226.227.160) (Quit: Konversation terminated!)
2021-06-09 04:59:57 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 05:00:03 +0200realtime(~realtime@177.18.185.16)
2021-06-09 05:00:12 +0200realtime(~realtime@177.18.185.16) (Remote host closed the connection)
2021-06-09 05:01:52 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-06-09 05:01:55 +0200realtime(~realtime@177.18.185.16)
2021-06-09 05:03:26 +0200realtime(~realtime@177.18.185.16) (Client Quit)
2021-06-09 05:03:49 +0200realtime(~realtime@177.18.185.16)
2021-06-09 05:07:41 +0200c_l_ste(~celeste@ip68-12-146-37.ok.ok.cox.net)
2021-06-09 05:08:51 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-06-09 05:11:40 +0200notzmv(~zmv@user/notzmv)
2021-06-09 05:13:05 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 05:14:41 +0200Codaraxis(~Codaraxis@89.45.7.142) (Remote host closed the connection)
2021-06-09 05:14:59 +0200Codaraxis(~Codaraxis@89.45.7.142)
2021-06-09 05:17:31 +0200emergence(~emergence@vm0.max-p.me) (Quit: emergence)
2021-06-09 05:18:15 +0200emergence(~emergence@vm0.max-p.me)
2021-06-09 05:19:59 +0200relrod(~relrod@redhat/ansible.staff.relrod)
2021-06-09 05:21:11 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 05:22:56 +0200trent(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
2021-06-09 05:25:42 +0200 <guest61> ski yes I did, use case of instead of !! or use data structure
2021-06-09 05:29:23 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-06-09 05:30:24 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
2021-06-09 05:30:37 +0200Lord_of_Life_Lord_of_Life
2021-06-09 05:36:14 +0200 <trent> Hi everyone, I have started reading about GADTs and want to see if my intuition is correct about them. Are they basically used over standard unions as a way to do 'overloading' of a function's return type? Overloading in the sense of OOP method overloading.
2021-06-09 05:38:54 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-06-09 05:42:09 +0200 <glguy> trent, I don't think they have much to do with OOP method overloading
2021-06-09 05:43:42 +0200 <trent> Damn, I was hoping thats all they were used for - to handle different return types
2021-06-09 05:44:12 +0200 <trent> What use are they then? I guess I have started reading about them before I have a use case
2021-06-09 05:44:57 +0200 <monochrom> The GHC user's guide has a very prototypical example.
2021-06-09 05:47:12 +0200 <trent> monochrom: The Term example? Thats where I thought I understood them in this way
2021-06-09 05:47:44 +0200yd502_(~yd502@180.168.212.6) (Ping timeout: 250 seconds)
2021-06-09 05:48:44 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-09 05:50:29 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
2021-06-09 06:00:46 +0200realtime(~realtime@177.18.185.16) (Quit: Leaving)
2021-06-09 06:01:14 +0200Adran(adran@botters/adran) (Quit: Este é o fim.)
2021-06-09 06:01:25 +0200zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-06-09 06:01:32 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-09 06:01:44 +0200yd502_(~yd502@180.168.212.6)
2021-06-09 06:01:45 +0200 <c_wraith> trent: if all you care about is returning multiple types, you can use regular data types to do that.
2021-06-09 06:02:00 +0200pe200012(~pe200012@58.248.179.180) (Ping timeout: 252 seconds)
2021-06-09 06:02:13 +0200pe200012(~pe200012@58.248.179.180)
2021-06-09 06:02:54 +0200Adran(~adran@botters/adran)
2021-06-09 06:02:55 +0200 <glguy> trent, here's a little GADT example: https://bpa.st/FHHA
2021-06-09 06:02:56 +0200 <trent> Then I think I am not 'getting' the use of GADT's.
2021-06-09 06:03:43 +0200 <glguy> With GADTs you can constraint what types each constructor works at, and you can learn those constraints through pattern matching
2021-06-09 06:04:03 +0200 <glguy> parameterized data types no longer have to work for all possible instantiations of their parameters
2021-06-09 06:04:27 +0200 <trent> glguy: What does GADT give you in that example that you wouldnt get with a simple union type?
2021-06-09 06:04:49 +0200 <glguy> trent, change the example not to use a gadt
2021-06-09 06:05:14 +0200 <glguy> make it a simple union type and then fix the file and see where it goes
2021-06-09 06:05:37 +0200 <glguy> ideally you'll have a realization along the way where you get stuck :)
2021-06-09 06:06:13 +0200 <glguy> if not come back with questions, but it's a chance to figure some stuff out
2021-06-09 06:06:24 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-06-09 06:07:18 +0200Adran(~adran@botters/adran) (Client Quit)
2021-06-09 06:07:18 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-06-09 06:08:05 +0200MQ-17J(~MQ-17J@8.21.10.116)
2021-06-09 06:09:24 +0200Adran(~adran@botters/adran)
2021-06-09 06:11:38 +0200hmmmas(~chenqisu1@183.217.201.236) (Quit: Leaving.)
2021-06-09 06:14:02 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-06-09 06:15:44 +0200 <trent> glguy: thank you for that, I am working through it now.
2021-06-09 06:16:11 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-06-09 06:18:15 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae)
2021-06-09 06:21:31 +0200Adran(~adran@botters/adran) (Quit: Este é o fim.)
2021-06-09 06:22:15 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-09 06:23:19 +0200Hoch(~Hoch@191.96.170.83)
2021-06-09 06:23:41 +0200ddellacosta(~ddellacos@89.46.62.125)
2021-06-09 06:24:35 +0200Sgeo_(~Sgeo@ool-18b9875e.dyn.optonline.net)
2021-06-09 06:25:02 +0200fendor__(~fendor@178.165.130.85.wireless.dyn.drei.com)
2021-06-09 06:25:04 +0200Hoch(~Hoch@191.96.170.83) ()
2021-06-09 06:25:05 +0200spatchkaa_(~spatchkaa@S010600fc8da47b63.gv.shawcable.net)
2021-06-09 06:25:45 +0200MidAutumnMoon3(~MidAutumn@user/midautumnmoon)
2021-06-09 06:26:43 +0200pierrot_(~pi@user/pierrot)
2021-06-09 06:27:02 +0200Adran(~adran@botters/adran)
2021-06-09 06:27:58 +0200ddellacosta(~ddellacos@89.46.62.125) (Ping timeout: 244 seconds)
2021-06-09 06:28:06 +0200cheater1__(~Username@user/cheater)
2021-06-09 06:28:42 +0200Solarion_(~solarion@mail.digitasaru.net)
2021-06-09 06:28:56 +0200evie1(~evie@188.27.66.89)
2021-06-09 06:28:58 +0200kmein_(~weechat@user/kmein)
2021-06-09 06:29:03 +0200xerox_(~edi@user/edi)
2021-06-09 06:29:06 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-06-09 06:29:06 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (strontium.libera.chat (Nickname regained by services)))
2021-06-09 06:29:06 +0200finn_elijaFinnElija
2021-06-09 06:29:12 +0200fresheye1(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-06-09 06:29:14 +0200Clint_(~Clint@user/clint)
2021-06-09 06:29:35 +0200alx741(~alx741@181.196.69.18) (Quit: alx741)
2021-06-09 06:29:37 +0200Erutuon_(~Erutuon@user/erutuon)
2021-06-09 06:30:41 +0200derelict(~winter@2603-6011-f901-9e5b-78b5-8b2f-cdb2-4171.res6.spectrum.com) (Ping timeout: 272 seconds)
2021-06-09 06:31:01 +0200jespada_(~jespada@90.254.242.55)
2021-06-09 06:32:21 +0200yd502_(~yd502@180.168.212.6) (Remote host closed the connection)
2021-06-09 06:32:40 +0200TheCoffeMaker_(~TheCoffeM@125-121-245-190.fibertel.com.ar)
2021-06-09 06:32:58 +0200Adran(~adran@botters/adran) (Quit: Este é o fim.)
2021-06-09 06:33:58 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (*.net *.split)
2021-06-09 06:33:58 +0200fendor_(~fendor@178.165.130.85.wireless.dyn.drei.com) (*.net *.split)
2021-06-09 06:33:58 +0200jespada(~jespada@90.254.242.55) (*.net *.split)
2021-06-09 06:33:58 +0200xsperry(~as@user/xsperry) (*.net *.split)
2021-06-09 06:33:58 +0200ukari(~ukari@user/ukari) (*.net *.split)
2021-06-09 06:33:58 +0200Erutuon(~Erutuon@user/erutuon) (*.net *.split)
2021-06-09 06:33:58 +0200kmein(~weechat@user/kmein) (*.net *.split)
2021-06-09 06:33:58 +0200pierrot(~pi@user/pierrot) (*.net *.split)
2021-06-09 06:33:58 +0200kaol(~kaol@178.62.241.234) (*.net *.split)
2021-06-09 06:33:58 +0200Clint(~Clint@user/clint) (*.net *.split)
2021-06-09 06:33:58 +0200davean(~davean@davean.sciesnet.net) (*.net *.split)
2021-06-09 06:33:58 +0200asm(~alexander@user/asm) (*.net *.split)
2021-06-09 06:33:58 +0200Solarion(~solarion@mail.digitasaru.net) (*.net *.split)
2021-06-09 06:33:58 +0200spatchkaa(~spatchkaa@s010600fc8da47b63.gv.shawcable.net) (*.net *.split)
2021-06-09 06:33:58 +0200cheater(~Username@user/cheater) (*.net *.split)
2021-06-09 06:33:58 +0200Sgeo(~Sgeo@user/sgeo) (*.net *.split)
2021-06-09 06:33:58 +0200fabfianda(~fabfianda@net-93-148-121-206.cust.vodafonedsl.it) (*.net *.split)
2021-06-09 06:33:58 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (*.net *.split)
2021-06-09 06:33:58 +0200MidAutumnMoon(~MidAutumn@user/midautumnmoon) (*.net *.split)
2021-06-09 06:33:58 +0200Evie-(~evie@user/evie-) (*.net *.split)
2021-06-09 06:33:58 +0200xerox(~edi@user/edi) (*.net *.split)
2021-06-09 06:33:58 +0200tv(~tv@user/tv) (*.net *.split)
2021-06-09 06:33:59 +0200MidAutumnMoon3MidAutumnMoon
2021-06-09 06:34:02 +0200cheater1__cheater
2021-06-09 06:34:23 +0200kaol(~kaol@178.62.241.234)
2021-06-09 06:35:11 +0200mrufrufin(~dxk@108.235.170.90)
2021-06-09 06:36:28 +0200awth13(~user@185.209.196.143)
2021-06-09 06:36:34 +0200Adran(adran@botters/adran)
2021-06-09 06:36:58 +0200Adran(adran@botters/adran) (Remote host closed the connection)
2021-06-09 06:37:24 +0200awth13(~user@185.209.196.143) (Remote host closed the connection)
2021-06-09 06:37:40 +0200ordinate(~ordinate@c-68-38-144-3.hsd1.in.comcast.net) (Quit: Leaving)
2021-06-09 06:37:47 +0200awth13(~user@185.209.196.143)
2021-06-09 06:38:16 +0200awth13(~user@185.209.196.143) (Remote host closed the connection)
2021-06-09 06:38:38 +0200awth13(~user@185.209.196.143)
2021-06-09 06:40:01 +0200asm(~alexander@burner.asm89.io)
2021-06-09 06:40:02 +0200paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
2021-06-09 06:40:13 +0200tv(~tv@user/tv)
2021-06-09 06:40:46 +0200davean(~davean@davean.sciesnet.net)
2021-06-09 06:40:49 +0200jao(~mail@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Read error: No route to host)
2021-06-09 06:41:15 +0200ukari(~ukari@user/ukari)
2021-06-09 06:41:54 +0200slack1256(~slack1256@191.125.38.7) (Ping timeout: 250 seconds)
2021-06-09 06:43:30 +0200awth13(~user@185.209.196.143) (Quit: ERC (IRC client for Emacs 27.2))
2021-06-09 06:43:56 +0200awth13(~user@185.209.196.143)
2021-06-09 06:44:03 +0200Adran(adran@botters/adran)
2021-06-09 06:44:43 +0200awth13(~user@185.209.196.143) ()
2021-06-09 06:45:45 +0200awth13(~user@185.209.196.143)
2021-06-09 06:45:48 +0200awth13(~user@185.209.196.143) (Remote host closed the connection)
2021-06-09 06:46:19 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b) (Ping timeout: 245 seconds)
2021-06-09 06:46:25 +0200awth13(~user@user/awth13)
2021-06-09 06:46:58 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-09 06:47:11 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-06-09 06:48:11 +0200awth13(~user@user/awth13) (Client Quit)
2021-06-09 06:48:44 +0200juhp(~juhp@128.106.188.66)
2021-06-09 06:49:22 +0200 <guest61> cabal and cabal-install are not same thing?
2021-06-09 06:49:26 +0200awth13(~user@user/awth13)
2021-06-09 06:49:47 +0200 <guest61> I saw there are cabal and cabal-install in downloads.haskell.org
2021-06-09 07:00:54 +0200UpstreamSalmon(uid12077@id-12077.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-09 07:01:27 +0200 <int-e> guest61: There are two packages, Cabal (capital C) is a library that can be used to build stand-alone Setup programs, but is also used by the 'cabal-install' package that provides an executable called 'cabal'...
2021-06-09 07:02:17 +0200awth13(~user@user/awth13) (Remote host closed the connection)
2021-06-09 07:02:30 +0200pe200012(~pe200012@58.248.179.180) (Ping timeout: 252 seconds)
2021-06-09 07:02:45 +0200pe200012(~pe200012@183.236.83.76)
2021-06-09 07:04:10 +0200 <int-e> historically, Cabal the library predates cabal the program by a few years, otherwise the package names would probably be different (say, cabal-lib and cabal)
2021-06-09 07:09:53 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-06-09 07:10:07 +0200derelict(~winter@2603-6011-f901-9e5b-78b5-8b2f-cdb2-4171.res6.spectrum.com)
2021-06-09 07:10:50 +0200charukiewicz(~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 252 seconds)
2021-06-09 07:10:53 +0200charukiewicz_(~quassel@irouteince04.i.subnet.rcn.com)
2021-06-09 07:13:09 +0200awth13(~user@user/awth13)
2021-06-09 07:16:20 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2021-06-09 07:16:35 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-06-09 07:17:05 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net)
2021-06-09 07:17:24 +0200yd502(~yd502@180.168.212.6)
2021-06-09 07:18:42 +0200phma(phma@2001:5b0:211f:5688:8179:a979:62a:8bf6)
2021-06-09 07:19:22 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 07:19:22 +0200Bartosz(~textual@24.35.90.211) (Client Quit)
2021-06-09 07:19:53 +0200ddellacosta(~ddellacos@86.106.121.90)
2021-06-09 07:20:24 +0200arjun(~user@user/arjun)
2021-06-09 07:20:28 +0200phma_(phma@2001:5b0:211f:5688:8179:a979:62a:8bf6) (Ping timeout: 244 seconds)
2021-06-09 07:20:48 +0200 <arjun> https://www.manning.com/books/haskell-in-depth, any reviews on this one people?
2021-06-09 07:20:56 +0200 <arjun> on the fence wether to buy
2021-06-09 07:22:38 +0200blankhart(~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds)
2021-06-09 07:23:00 +0200blankhart(~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net)
2021-06-09 07:24:17 +0200ddellacosta(~ddellacos@86.106.121.90) (Ping timeout: 244 seconds)
2021-06-09 07:24:30 +0200fabfianda(~fabfianda@net-93-148-121-206.cust.dsl.teletu.it)
2021-06-09 07:26:38 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-09 07:27:11 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 07:30:28 +0200 <arjun> hi Bartosz : P
2021-06-09 07:31:03 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295)
2021-06-09 07:31:46 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 07:32:45 +0200xff0x_(~xff0x@2001:1a81:52c9:6b00:ea05:f1db:1e96:7c29) (Ping timeout: 272 seconds)
2021-06-09 07:33:22 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-09 07:33:27 +0200xff0x_(~xff0x@2001:1a81:52c9:6b00:ad16:d7f9:3b66:59f3)
2021-06-09 07:35:01 +0200dut(~dut@user/dut)
2021-06-09 07:38:59 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 07:40:32 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-09 07:42:08 +0200Guest78(~Guest78@115.236.91.18)
2021-06-09 07:42:36 +0200 <Guest78> hello all
2021-06-09 07:46:07 +0200danidiaz(~ESDPC@static-35-0-85-188.ipcom.comunitel.net)
2021-06-09 07:47:49 +0200 <Axman6> Hello
2021-06-09 07:48:09 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-06-09 07:48:14 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
2021-06-09 07:48:52 +0200TheRAt(~TheRAt@user/therat)
2021-06-09 07:50:32 +0200zmt01(~zmt00@user/zmt00) (Quit: Gone.)
2021-06-09 07:50:43 +0200Guest78(~Guest78@115.236.91.18) (Quit: Client closed)
2021-06-09 07:52:20 +0200 <guest61> aha, compile ghc on arm successfully
2021-06-09 07:52:28 +0200 <Axman6> noice
2021-06-09 07:53:57 +0200 <guest61> by the way, there's an error in that configure file
2021-06-09 07:54:23 +0200 <guest61> gcc -V -qversion , those two parameters are invalid
2021-06-09 07:55:28 +0200 <Axman6> if it's the ghc configure file, this isn't really the place to report it, the GHC gitlab is probably a better place (perhaps asking in #ghc might help)
2021-06-09 07:56:27 +0200 <guest61> ok
2021-06-09 07:56:43 +0200statusbot1(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-06-09 07:56:52 +0200Codaraxis_(~Codaraxis@89.45.7.142)
2021-06-09 07:57:16 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2021-06-09 07:57:21 +0200Codaraxis(~Codaraxis@89.45.7.142) (Read error: Connection reset by peer)
2021-06-09 07:57:21 +0200arjun(~user@user/arjun) (Ping timeout: 244 seconds)
2021-06-09 07:57:27 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Read error: Connection reset by peer)
2021-06-09 07:57:31 +0200aerona(~aerona@2600:6c54:4600:f300:7c57:ac62:2191:e44b) (Read error: Connection reset by peer)
2021-06-09 07:57:47 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
2021-06-09 07:58:40 +0200marinelli(~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli)
2021-06-09 08:01:44 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295) (Quit: Leaving)
2021-06-09 08:01:57 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295)
2021-06-09 08:04:43 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 08:07:17 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-06-09 08:13:29 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-06-09 08:13:53 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-09 08:13:59 +0200yd502_(~yd502@180.168.212.6)
2021-06-09 08:14:57 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5)
2021-06-09 08:24:44 +0200xff0x_(~xff0x@2001:1a81:52c9:6b00:ad16:d7f9:3b66:59f3) (Ping timeout: 244 seconds)
2021-06-09 08:25:37 +0200xff0x_(~xff0x@2001:1a81:52c9:6b00:a719:2b91:3f7b:5d25)
2021-06-09 08:26:20 +0200ridcully(~ridcully@pd951f269.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-06-09 08:27:02 +0200ridcully(~ridcully@p508ac428.dip0.t-ipconnect.de)
2021-06-09 08:27:02 +0200Sgeo_(~Sgeo@ool-18b9875e.dyn.optonline.net) (Read error: Connection reset by peer)
2021-06-09 08:28:04 +0200yd502_(~yd502@180.168.212.6) (Ping timeout: 250 seconds)
2021-06-09 08:28:11 +0200yd502(~yd502@180.168.212.6)
2021-06-09 08:28:26 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-09 08:29:04 +0200xerox_xerox
2021-06-09 08:29:37 +0200yd502_(~yd502@180.168.212.6)
2021-06-09 08:30:00 +0200tose(~tose@ip-85-160-1-181.eurotel.cz)
2021-06-09 08:30:33 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-09 08:32:29 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-09 08:33:31 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-09 08:33:34 +0200yd502(~yd502@180.168.212.6)
2021-06-09 08:34:19 +0200chele(~chele@user/chele)
2021-06-09 08:35:27 +0200yd502_(~yd502@180.168.212.6) (Ping timeout: 252 seconds)
2021-06-09 08:37:38 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-06-09 08:38:16 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Client Quit)
2021-06-09 08:39:12 +0200derelict(~winter@2603-6011-f901-9e5b-78b5-8b2f-cdb2-4171.res6.spectrum.com) (Ping timeout: 244 seconds)
2021-06-09 08:40:51 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-09 08:41:45 +0200 <dminuoso> optics question. would you rather use `each %> someIx` or `traversed % someIx`? I cant for my life decide which one is better.
2021-06-09 08:41:56 +0200dminuosois bikeshedding quite hard here
2021-06-09 08:42:20 +0200 <c_wraith> is each anything like lens's each?
2021-06-09 08:43:32 +0200mc47(~mc47@xmonad/TheMC47)
2021-06-09 08:43:36 +0200 <c_wraith> ah, yes it is.
2021-06-09 08:43:39 +0200 <dminuoso> c_wraith: Yeah, except it's fixed to be an indexed traversal
2021-06-09 08:43:57 +0200 <c_wraith> I'd prefer traversed anywhere it works
2021-06-09 08:44:44 +0200 <dminuoso> c_wraith: The key difference is that in optics, `traversed` is a non-indexed traversal, and `each` gives a guaranteed indexed traversal.
2021-06-09 08:45:04 +0200 <dminuoso> And (%) forbids composition if both sides are indexed (requiring you to explicitly opt into <%> which (,)'s the indexes together
2021-06-09 08:45:50 +0200 <c_wraith> Each is the weird ad-hoc class that does whatever someone decided it should. I kind of don't like that.
2021-06-09 08:46:04 +0200 <c_wraith> well, there's itraversed
2021-06-09 08:46:21 +0200 <c_wraith> Not quite as universal as traversed, but it's a lot more obvious what it does
2021-06-09 08:46:29 +0200 <dminuoso> I guess the primary motivation of each is to support tuples
2021-06-09 08:46:47 +0200 <dminuoso> There's also the bit that `each` reads nicely in the optics DSL.. :p
2021-06-09 08:47:04 +0200hmmmas(~chenqisu1@183.217.201.236)
2021-06-09 08:47:56 +0200michalz(~michalz@185.246.204.125)
2021-06-09 08:48:30 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Ping timeout: 244 seconds)
2021-06-09 08:48:30 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 244 seconds)
2021-06-09 08:50:48 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295) (Remote host closed the connection)
2021-06-09 08:51:01 +0200 <dminuoso> or well, I guess that's not entirely true. the index types get combined at the type level, but many combinators require only a single index
2021-06-09 08:51:08 +0200nschoe(~quassel@178.251.84.79)
2021-06-09 08:51:12 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295)
2021-06-09 08:51:26 +0200 <dminuoso> (i.e. (%) allows composition just fine, but most of the time your optic must have only a single index type)
2021-06-09 08:51:40 +0200 <dminuoso> c_wraith: Yeah I guess.
2021-06-09 08:53:03 +0200tose(~tose@ip-85-160-1-181.eurotel.cz) (Remote host closed the connection)
2021-06-09 08:53:09 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-09 08:54:11 +0200jophish(~jophish@2001:470:69fc:105::670)
2021-06-09 08:54:17 +0200yd502(~yd502@180.168.212.6)
2021-06-09 08:55:13 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 244 seconds)
2021-06-09 08:55:25 +0200dunkeln(~dunkeln@94.129.65.28) (Quit: leaving)
2021-06-09 08:56:20 +0200yd502_(~yd502@180.168.212.6)
2021-06-09 08:57:23 +0200yd502__(~yd502@180.168.212.6)
2021-06-09 08:58:33 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 252 seconds)
2021-06-09 08:59:37 +0200yd502(~yd502@180.168.212.6)
2021-06-09 09:00:55 +0200yd502_(~yd502@180.168.212.6) (Ping timeout: 264 seconds)
2021-06-09 09:01:27 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
2021-06-09 09:01:50 +0200nsilv(~nsilv@212.103.198.210)
2021-06-09 09:01:56 +0200yd502__(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-09 09:03:07 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:69cc:8900:882e:bc6e)
2021-06-09 09:09:41 +0200xff0x_(~xff0x@2001:1a81:52c9:6b00:a719:2b91:3f7b:5d25) (Ping timeout: 244 seconds)
2021-06-09 09:10:46 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 09:10:48 +0200xff0x_(~xff0x@port-92-195-66-229.dynamic.as20676.net)
2021-06-09 09:12:52 +0200oniko
2021-06-09 09:13:54 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 09:14:30 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 09:16:24 +0200MQ-17J(~MQ-17J@8.21.10.116) (Ping timeout: 244 seconds)
2021-06-09 09:16:41 +0200MQ-17J(~MQ-17J@8.21.10.116)
2021-06-09 09:17:10 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-06-09 09:17:44 +0200 <siers> can I use lens (in combo with th) to access the "a" which is inside all cases of a disjoint union? Simplest example "Either a a"
2021-06-09 09:18:45 +0200 <dminuoso> siers: use `failing`
2021-06-09 09:19:17 +0200 <dminuoso> Together with unsafeSingular you can even reconstruct a lens from this.
2021-06-09 09:19:17 +0200kenran(~kenran@200116b82b683c006ea54bdc3ffd5a0f.dip.versatel-1u1.de)
2021-06-09 09:19:32 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-06-09 09:20:31 +0200 <dminuoso> % f :: Lens' (Either (Int, Char) (String, Int)) Int; f = unsafeSingular (_Left . _1 `failing` _Right . _2) -- siers
2021-06-09 09:20:31 +0200 <yahb> dminuoso:
2021-06-09 09:21:00 +0200ddellacosta(~ddellacos@89.46.62.109)
2021-06-09 09:21:30 +0200ramon(~ramon@user/ramon)
2021-06-09 09:21:41 +0200 <siers> nice
2021-06-09 09:23:20 +0200 <siers> I think unsafeSingular could be mentioned here then: https://stackoverflow.com/questions/36521208/how-to-make-the-product-of-two-lenses
2021-06-09 09:23:22 +0200 <dminuoso> (I guess you can even use `singular` here)
2021-06-09 09:23:32 +0200agumonke`(~user@88.163.231.79) (Ping timeout: 250 seconds)
2021-06-09 09:24:12 +0200 <siers> never mind, probably not
2021-06-09 09:24:25 +0200 <dminuoso> % f :: Lens' (Either (Int, Char) (String, Int)) Int; f = singular (_Left . _1 `failing` _Right . _2)
2021-06-09 09:24:25 +0200 <yahb> dminuoso:
2021-06-09 09:24:47 +0200teaSlurper(~chris@81.96.113.213)
2021-06-09 09:24:56 +0200 <dminuoso> % Left (1, 'f') & f .~ 10
2021-06-09 09:24:56 +0200 <yahb> dminuoso: Left (10,'f')
2021-06-09 09:25:04 +0200 <dminuoso> % Right ("foo", 20) & f .~ 10
2021-06-09 09:25:04 +0200 <yahb> dminuoso: Right ("foo",10)
2021-06-09 09:25:07 +0200 <siers> nice
2021-06-09 09:25:30 +0200ddellacosta(~ddellacos@89.46.62.109) (Ping timeout: 252 seconds)
2021-06-09 09:26:03 +0200 <dminuoso> Yeah, I make heavy use of this trick, as ugly as it is.
2021-06-09 09:26:53 +0200 <siers> why do you think it's ugly? :)
2021-06-09 09:27:15 +0200 <siers> because requires human proof?
2021-06-09 09:27:18 +0200 <siers> it*
2021-06-09 09:29:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 09:30:09 +0200 <dminuoso> siers: It's rather, in the type algebra, it's very obvious and visible that this shouldnt even need proof.
2021-06-09 09:31:00 +0200teaSlurper(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-06-09 09:31:35 +0200 <dminuoso> siers: Its the same thing with the article you mentioned
2021-06-09 09:31:52 +0200Erutuon_Erutuon
2021-06-09 09:33:34 +0200 <dminuoso> Often I get away with just Folds instead, but if you stare at this, it makes you crave for a more fitting abstraction
2021-06-09 09:33:35 +0200 <dminuoso> https://gist.github.com/dminuoso/d73bf2520faf4e36d3168c8db789727a
2021-06-09 09:33:44 +0200nschoe(~quassel@178.251.84.79)
2021-06-09 09:33:50 +0200 <siers> you mean shouldn't need proof or should be possible to encode as a proof?
2021-06-09 09:34:46 +0200asm(~alexander@burner.asm89.io) (Changing host)
2021-06-09 09:34:46 +0200asm(~alexander@user/asm)
2021-06-09 09:36:05 +0200 <dminuoso> siers: In my problem domain, at least with the representation I chose, sum types are sort of like diamonds. I constantly split them up (with say filteredBy), or I want to join them back together (with summing/unsafeSingular+failingT)
2021-06-09 09:37:05 +0200 <dminuoso> But there's no way to track "these prism-like things are disjoint" for example in the lens/optics ergonomics
2021-06-09 09:37:14 +0200 <dminuoso> You need manual human written proof
2021-06-09 09:37:17 +0200 <dminuoso> Every time.
2021-06-09 09:37:26 +0200 <dminuoso> Or you just shrug and pretend its alright
2021-06-09 09:38:00 +0200 <siers> right, but it's due to a language limitation? or could you technically encode that and carry it along in haskell?
2021-06-09 09:38:39 +0200ubert(~Thunderbi@p200300ecdf259da7d446db1a2ac53d1c.dip0.t-ipconnect.de)
2021-06-09 09:38:40 +0200 <dminuoso> No idea, really. I just know this act of "splitting/joining sum types" doesnt fit well into lens/optics.
2021-06-09 09:39:02 +0200 <siers> gotcha
2021-06-09 09:40:21 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-06-09 09:41:07 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 264 seconds)
2021-06-09 09:42:16 +0200yd502(~yd502@180.168.212.6)
2021-06-09 09:44:19 +0200 <dminuoso> The primitive I originally wanted, was some: partition :: (Is k An_AffineFold, Is l An_AffineFold) => Optic' k is a i -> Optic' l is a j -> IxAffineFold (Either i j) a a -- or some such.
2021-06-09 09:45:23 +0200 <dminuoso> But even this representation completely throws away the information, since you're back to square one with the index of (Either i j)
2021-06-09 09:46:22 +0200trent(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 244 seconds)
2021-06-09 09:46:25 +0200lodeAardwolf
2021-06-09 09:46:43 +0200Aardwolf(~lode@77-56-208-202.dclient.hispeed.ch) (Leaving)
2021-06-09 09:47:42 +0200 <dminuoso> And of course its unsafe already, since it demands proof that the provided affine folds are disjoint
2021-06-09 09:49:27 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-09 09:50:48 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-09 09:55:02 +0200ukari(~ukari@user/ukari)
2021-06-09 09:56:21 +0200mastarija(~mastarija@31.217.11.88)
2021-06-09 09:56:23 +0200Chobbes(~Chobbes@user/chobbes) (Ping timeout: 252 seconds)
2021-06-09 09:56:41 +0200zeenk(~zeenk@2a02:2f04:a310:b600:b098:bf18:df4d:4c41)
2021-06-09 09:56:46 +0200yd502_(~yd502@180.168.212.6)
2021-06-09 09:57:03 +0200 <mastarija> Can't remember, how does one "install" a package globally so I can use it from ghci without having to create a project?
2021-06-09 09:57:16 +0200 <mastarija> I thought it was cabal install --lib random
2021-06-09 09:57:25 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-09 09:57:34 +0200 <Cajun> last i recall it was `cabal install --lib PACKAGE`
2021-06-09 09:57:50 +0200cfricke(~cfricke@user/cfricke)
2021-06-09 09:58:01 +0200 <mastarija> Yes, that's what I tried, but ghci still can not find System.Random for some reason
2021-06-09 09:59:04 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 250 seconds)
2021-06-09 09:59:10 +0200 <mastarija> Oh, I tried for a second time and now I get some error
2021-06-09 09:59:17 +0200 <lortabac> mastarija: you need to make the package visible in ghci
2021-06-09 09:59:22 +0200yd502(~yd502@180.168.212.6)
2021-06-09 09:59:28 +0200 <mastarija> Yes, in that one file
2021-06-09 09:59:33 +0200 <mastarija> I'm gonna check now
2021-06-09 10:00:03 +0200 <lortabac> you can also do it interactively: :set -package PACKAGE_NAME
2021-06-09 10:00:31 +0200 <merijn> mastarija: --lib is *at best* in beta atm
2021-06-09 10:00:49 +0200 <mastarija> That's ok, I just wanted to try something out quickly
2021-06-09 10:01:03 +0200Chobbes(~Chobbes@user/chobbes)
2021-06-09 10:01:21 +0200 <merijn> mastarija: you can start ghci with a package in scope via "cabal repl --build-depends"
2021-06-09 10:01:41 +0200 <merijn> i.e. "cabal repl --build-depends random-x.y.z"
2021-06-09 10:01:52 +0200yd502_(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-09 10:02:31 +0200 <lortabac> yes, merijn's suggestion is more reliable than mine
2021-06-09 10:02:44 +0200 <dminuoso> +1 to merijn's suggestion
2021-06-09 10:02:50 +0200 <merijn> Also less likely to make your life a pain later :p
2021-06-09 10:03:25 +0200 <merijn> "install --lib" is, effectively, the same as pinning all future build plans/installs to the package version you happen to install right now
2021-06-09 10:03:37 +0200 <merijn> Which, uh, is rather limiting
2021-06-09 10:05:29 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-09 10:05:32 +0200 <mastarija> meh.. I just erase that pinning file every so often
2021-06-09 10:05:52 +0200 <mastarija> but yes, --build-depends work nicely
2021-06-09 10:05:57 +0200 <mastarija> Although it's a bit slow to load
2021-06-09 10:06:06 +0200 <mastarija> thanks merijn
2021-06-09 10:07:29 +0200phanf(~phanf@226.148.192.35.bc.googleusercontent.com) (Quit: leaving)
2021-06-09 10:07:42 +0200hendursa1(~weechat@user/hendursaga)
2021-06-09 10:09:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b95b:27c0:9816:d7ad) (Remote host closed the connection)
2021-06-09 10:10:52 +0200yd502(~yd502@180.168.212.6)
2021-06-09 10:10:58 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 252 seconds)
2021-06-09 10:12:12 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.204.25) (Quit: EXIT)
2021-06-09 10:14:13 +0200 <merijn> Should only be slow the first time, I think?
2021-06-09 10:14:14 +0200 <dminuoso> with `cabal install --lib` you very rapidly end up with failure to install anything further from experience.
2021-06-09 10:14:24 +0200 <dminuoso> It works for the first 1-2 packages, and then you cant install anything else.
2021-06-09 10:14:28 +0200 <merijn> It JIT installs the package you need, then loads it inside ghci
2021-06-09 10:14:34 +0200ikex(~ash@user/ikex)
2021-06-09 10:14:45 +0200 <merijn> If the package is already in the global store (after the first run) it can skip that step
2021-06-09 10:15:10 +0200 <dminuoso> *package with the resolved version + flags.
2021-06-09 10:15:19 +0200brandonh(~brandonh@151.44.80.15)
2021-06-09 10:15:25 +0200 <dminuoso> If in a different projects you have other constraints that would result in a different version of the same library, it'd have to be rebuilt of course.
2021-06-09 10:16:39 +0200phanf(~phanf@226.148.192.35.bc.googleusercontent.com)
2021-06-09 10:17:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3429:27e5:c9dc:b9d2)
2021-06-09 10:19:09 +0200emliunix_(~emliunix@b4kebweac68.route-server.jp)
2021-06-09 10:19:45 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 10:20:07 +0200hendursa1(~weechat@user/hendursaga) (Remote host closed the connection)
2021-06-09 10:20:12 +0200hendursaga(~weechat@user/hendursaga)
2021-06-09 10:21:38 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-09 10:22:02 +0200emliunix__(~emliunix@198.144.166.57) (Ping timeout: 250 seconds)
2021-06-09 10:22:09 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3429:27e5:c9dc:b9d2) (Ping timeout: 245 seconds)
2021-06-09 10:27:14 +0200pera(~pera@user/pera)
2021-06-09 10:28:16 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net)
2021-06-09 10:28:24 +0200azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Ping timeout: 245 seconds)
2021-06-09 10:29:27 +0200azeem(~azeem@176.201.21.77)
2021-06-09 10:30:03 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-09 10:30:18 +0200fendor__fendor
2021-06-09 10:30:39 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.204.25)
2021-06-09 10:33:15 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130)
2021-06-09 10:33:37 +0200xsperry(~as@user/xsperry)
2021-06-09 10:33:55 +0200thyriaen(~thyriaen@45.178.73.238)
2021-06-09 10:34:12 +0200 <thyriaen> good morning, my friends - what fun tutorialy resources do you recommend to get into haskell ? I think best would be some kind of problemset to solve - any suggestions ?
2021-06-09 10:35:06 +0200 <dexterfoo> how can I run these 3 ghci commands all together? ":r" ":!clear" "main"
2021-06-09 10:35:19 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae) (Read error: Connection reset by peer)
2021-06-09 10:35:19 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Read error: Connection reset by peer)
2021-06-09 10:35:19 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7) (Read error: Connection reset by peer)
2021-06-09 10:35:19 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1) (Read error: Connection reset by peer)
2021-06-09 10:35:19 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5) (Read error: Connection reset by peer)
2021-06-09 10:35:19 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a) (Write error: Connection reset by peer)
2021-06-09 10:35:19 +0200psydroid(~psydroidm@user/psydroid) (Write error: Connection reset by peer)
2021-06-09 10:35:20 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200bb010g(~bb010gmat@2001:470:69fc:105::9a5) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a9c) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200Soft(~soft-matr@2001:470:69fc:105::c75) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200amesgen[m](~amesgenam@2001:470:69fc:105::82b) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200jophish(~jophish@2001:470:69fc:105::670) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (Write error: Connection reset by peer)
2021-06-09 10:35:20 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200srid[m](~sridmatri@2001:470:69fc:105::1c2) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200tomferon[m](~tomferon@2001:470:69fc:105::268) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200siraben(~siraben@user/siraben) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200sm[m](~sm@plaintextaccounting/sm) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200kadoban(~kadoban@user/kadoban) (Read error: Connection reset by peer)
2021-06-09 10:35:20 +0200peddie(~peddie@2001:470:69fc:105::25d) (Read error: Connection reset by peer)
2021-06-09 10:35:53 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79)
2021-06-09 10:35:54 +0200mastarija_(~mastarija@31.217.8.68)
2021-06-09 10:36:20 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 250 seconds)
2021-06-09 10:36:36 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2021-06-09 10:36:36 +0200sm[m](~sm@plaintextaccounting/sm)
2021-06-09 10:36:36 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22)
2021-06-09 10:36:36 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2021-06-09 10:36:36 +0200peddie(~peddie@2001:470:69fc:105::25d)
2021-06-09 10:36:36 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2021-06-09 10:36:36 +0200psydroid(~psydroidm@2001:470:69fc:105::165)
2021-06-09 10:36:36 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db)
2021-06-09 10:36:36 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a)
2021-06-09 10:36:36 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2021-06-09 10:36:36 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-06-09 10:36:37 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e)
2021-06-09 10:36:37 +0200kadoban(~kadoban@user/kadoban)
2021-06-09 10:36:37 +0200jophish(~jophish@2001:470:69fc:105::670)
2021-06-09 10:36:38 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2021-06-09 10:36:48 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2021-06-09 10:36:48 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0)
2021-06-09 10:36:48 +0200srid[m](~sridmatri@2001:470:69fc:105::1c2)
2021-06-09 10:36:48 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae)
2021-06-09 10:36:48 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d)
2021-06-09 10:36:48 +0200amesgen[m](~amesgenam@2001:470:69fc:105::82b)
2021-06-09 10:36:48 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d)
2021-06-09 10:36:48 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd)
2021-06-09 10:36:48 +0200bb010g(~bb010gmat@2001:470:69fc:105::9a5)
2021-06-09 10:36:48 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3)
2021-06-09 10:36:48 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7)
2021-06-09 10:36:48 +0200tomferon[m](~tomferon@2001:470:69fc:105::268)
2021-06-09 10:36:48 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2021-06-09 10:36:48 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8)
2021-06-09 10:36:49 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5)
2021-06-09 10:36:49 +0200Soft(~soft-matr@2001:470:69fc:105::c75)
2021-06-09 10:36:49 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a9c)
2021-06-09 10:36:49 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1)
2021-06-09 10:36:50 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284)
2021-06-09 10:36:50 +0200jaror[m](~jaror@2001:470:69fc:105::265)
2021-06-09 10:36:50 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2)
2021-06-09 10:36:51 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2021-06-09 10:37:33 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 10:38:56 +0200mastarija(~mastarija@31.217.11.88) (Ping timeout: 250 seconds)
2021-06-09 10:39:19 +0200ubert(~Thunderbi@p200300ecdf259da7d446db1a2ac53d1c.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-06-09 10:41:49 +0200yd502(~yd502@180.168.212.6)
2021-06-09 10:41:59 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 10:42:24 +0200 <yushyin> thyriaen: https://www.cis.upenn.edu/~cis194/spring13/lectures.html https://github.com/system-f/fp-course ( https://wiki.haskell.org/Tutorials )
2021-06-09 10:42:25 +0200siraben(~siraben@user/siraben)
2021-06-09 10:43:05 +0200 <dminuoso> @where learning
2021-06-09 10:43:05 +0200 <lambdabot> I know nothing about learning.
2021-06-09 10:43:07 +0200 <dminuoso> @where learn
2021-06-09 10:43:07 +0200 <lambdabot> https://wiki.haskell.org/Learning_Haskell
2021-06-09 10:43:18 +0200 <thyriaen> thanks
2021-06-09 10:43:32 +0200ikex(~ash@user/ikex) (Ping timeout: 264 seconds)
2021-06-09 10:47:14 +0200yoctocell(~user@h87-96-130-155.cust.a3fiber.se)
2021-06-09 10:48:10 +0200yd502_(~yd502@180.168.212.6)
2021-06-09 10:48:18 +0200benin033(~benin@183.82.206.233)
2021-06-09 10:48:33 +0200benin03(~benin@183.82.206.233) (Ping timeout: 252 seconds)
2021-06-09 10:48:33 +0200benin033benin03
2021-06-09 10:48:38 +0200yoctocell(~user@h87-96-130-155.cust.a3fiber.se) (Client Quit)
2021-06-09 10:48:58 +0200 <dmwit> dexterfoo: What's wrong with `:r\n:!clear\nmain\n`?
2021-06-09 10:49:24 +0200nsilv(~nsilv@212.103.198.210) (Ping timeout: 244 seconds)
2021-06-09 10:49:49 +0200 <dmwit> (NB I'm not claiming that meets your needs. I just don't know what your needs are and this is my best idea about how to find them out.)
2021-06-09 10:50:15 +0200yd502__(~yd502@58.32.9.235)
2021-06-09 10:51:28 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-09 10:53:28 +0200yd502_(~yd502@180.168.212.6) (Ping timeout: 272 seconds)
2021-06-09 10:53:39 +0200yoctocell(~yoctocell@h87-96-130-155.cust.a3fiber.se)
2021-06-09 10:54:18 +0200wonko(~wjc@62.115.229.50)
2021-06-09 10:56:41 +0200nsilv(~nsilv@212.103.198.210)
2021-06-09 10:56:42 +0200dhil(~dhil@195.213.192.47)
2021-06-09 11:00:35 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 11:00:38 +0200thyriaen(~thyriaen@45.178.73.238) (Quit: Leaving)
2021-06-09 11:01:04 +0200yoctocell(~yoctocell@h87-96-130-155.cust.a3fiber.se) (Remote host closed the connection)
2021-06-09 11:02:00 +0200yoctocell(~yoctocell@h87-96-130-155.cust.a3fiber.se)
2021-06-09 11:03:09 +0200yd502__(~yd502@58.32.9.235) (Ping timeout: 244 seconds)
2021-06-09 11:04:17 +0200favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-09 11:04:35 +0200yd502__(~yd502@58.32.9.235)
2021-06-09 11:05:03 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-06-09 11:10:34 +0200kris(~quassel@82-69-3-58.dsl.in-addr.zen.co.uk)
2021-06-09 11:10:58 +0200kris(~quassel@82-69-3-58.dsl.in-addr.zen.co.uk) (Client Quit)
2021-06-09 11:11:01 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-06-09 11:11:37 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130) (Ping timeout: 244 seconds)
2021-06-09 11:11:59 +0200yoctocell(~yoctocell@h87-96-130-155.cust.a3fiber.se) (Remote host closed the connection)
2021-06-09 11:12:22 +0200zelmac(~quassel@82-69-3-58.dsl.in-addr.zen.co.uk)
2021-06-09 11:14:01 +0200ddellacosta(~ddellacos@89.46.62.112)
2021-06-09 11:14:30 +0200 <tomsmeding> dexterfoo: in case it doesn't, what about `:def R \_ -> Prelude.return (":r\n:!clear\nmain\n")`? Then :R runs that
2021-06-09 11:15:20 +0200 <jophish> The topic here needs updating, the matrix bridge is up and running
2021-06-09 11:15:29 +0200 <jophish> ignore that if you can't see my messages
2021-06-09 11:15:46 +0200jrm(~jrm@156.34.187.65) (Read error: Connection reset by peer)
2021-06-09 11:15:49 +0200 <tomsmeding> jophish: I can :)
2021-06-09 11:15:59 +0200nsilv(~nsilv@212.103.198.210) (Remote host closed the connection)
2021-06-09 11:16:02 +0200 <tomsmeding> but isn't it in some kind of beta state?
2021-06-09 11:16:18 +0200jrm(~jrm@156.34.187.65)
2021-06-09 11:17:55 +0200 <jophish> oh, perhaps
2021-06-09 11:18:56 +0200ddellacosta(~ddellacos@89.46.62.112) (Ping timeout: 264 seconds)
2021-06-09 11:21:55 +0200mastarija__(~mastarija@46.188.129.109)
2021-06-09 11:22:42 +0200yd502__(~yd502@58.32.9.235) (Ping timeout: 250 seconds)
2021-06-09 11:22:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-09 11:23:15 +0200koishi_(~koishi_@160.16.113.140)
2021-06-09 11:23:32 +0200nsilv(~nsilv@212.103.198.210)
2021-06-09 11:23:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 11:24:46 +0200pagnol(~user@014198154145.ctinets.com)
2021-06-09 11:25:05 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 11:25:32 +0200mastarija_(~mastarija@31.217.8.68) (Ping timeout: 264 seconds)
2021-06-09 11:25:33 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net)
2021-06-09 11:26:11 +0200yoctocell(~yoctocell@h87-96-130-155.cust.a3fiber.se)
2021-06-09 11:27:39 +0200nsilv(~nsilv@212.103.198.210) (Client Quit)
2021-06-09 11:28:06 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 11:28:43 +0200 <gentauro> If I try to subscract 1 from each value in a list: `map ((-) 1) [1 .. 10]` why is this not equal `[0 .. 9]`?
2021-06-09 11:28:58 +0200 <gentauro> oh
2021-06-09 11:29:09 +0200 <wallymathieu[m]> Hi gentauro
2021-06-09 11:29:11 +0200 <gentauro> `(-) 1 x` got it
2021-06-09 11:29:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-06-09 11:29:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 11:30:03 +0200 <gentauro> wallymathieu[m]: hi
2021-06-09 11:30:15 +0200 <involans> @gentauro: you might want to user `subtract` here
2021-06-09 11:30:15 +0200 <lambdabot> Unknown command, try @list
2021-06-09 11:30:37 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-06-09 11:30:39 +0200 <involans> `map (subtract 1) [1 .. 10]`
2021-06-09 11:31:24 +0200 <dexterfoo> dmwit: this doesn't seem to work :| tomsmeding: thanks this works!
2021-06-09 11:31:44 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-06-09 11:31:54 +0200 <gentauro> involans: do you know why `(flip (-) 1)` doesn't work?
2021-06-09 11:32:12 +0200 <gentauro> oh, it does :)
2021-06-09 11:32:50 +0200 <involans> Yes - was about to say :) `subtract === flip (-)`
2021-06-09 11:33:01 +0200bramhaag(~bramhaag@endeavour.servers.alpaca.engineer) (Ping timeout: 265 seconds)
2021-06-09 11:34:23 +0200chddr(~Thunderbi@31.148.23.125)
2021-06-09 11:34:38 +0200yd502(~yd502@180.168.212.6)
2021-06-09 11:35:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-09 11:35:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 11:36:03 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 11:37:23 +0200 <yushyin> or (- 1) with -XLexicalNegation :)
2021-06-09 11:40:48 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-06-09 11:40:55 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3429:27e5:c9dc:b9d2)
2021-06-09 11:41:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-06-09 11:41:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 11:42:52 +0200nsilv(~nsilv@212.103.198.210)
2021-06-09 11:45:12 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-09 11:45:32 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3429:27e5:c9dc:b9d2) (Ping timeout: 268 seconds)
2021-06-09 11:46:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-06-09 11:46:44 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295) (Ping timeout: 245 seconds)
2021-06-09 11:47:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 11:48:54 +0200emliunix_(~emliunix@b4kebweac68.route-server.jp) (Remote host closed the connection)
2021-06-09 11:52:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-09 11:53:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 11:56:11 +0200bramhaag(~bramhaag@134.195.121.39)
2021-06-09 11:56:40 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 11:58:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-06-09 11:59:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 12:00:07 +0200 <involans> ooh, `LexicalNegation` looks great. Thanks yushyin
2021-06-09 12:00:45 +0200jippiedoe(~david@77-171-152-62.fixed.kpn.net)
2021-06-09 12:02:26 +0200abraham(~abraham@173.239.198.148)
2021-06-09 12:04:21 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 12:04:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-09 12:05:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 12:06:44 +0200Torro(Torro@gateway/vpn/protonvpn/torro)
2021-06-09 12:09:00 +0200Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-06-09 12:09:12 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 12:09:37 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-06-09 12:10:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-06-09 12:11:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 12:12:09 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:69cc:8900:882e:bc6e) (Ping timeout: 245 seconds)
2021-06-09 12:12:34 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-06-09 12:13:24 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-06-09 12:16:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-06-09 12:16:56 +0200abraham(~abraham@173.239.198.148) (Quit: Textual IRC Client: www.textualapp.com)
2021-06-09 12:17:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 12:18:55 +0200agumonke`(~user@88.160.31.174)
2021-06-09 12:22:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-06-09 12:22:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 12:23:10 +0200mc47(~mc47@xmonad/TheMC47) (Quit: Leaving)
2021-06-09 12:23:33 +0200brandonh(~brandonh@151.44.80.15) (Read error: Connection reset by peer)
2021-06-09 12:26:22 +0200poljar1(~poljar@93-141-130-48.adsl.net.t-com.hr)
2021-06-09 12:27:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-06-09 12:28:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 12:28:19 +0200Clint_Clint
2021-06-09 12:28:21 +0200brandonh(~brandonh@151.44.23.230)
2021-06-09 12:28:34 +0200poljar(~poljar@93-139-12-109.adsl.net.t-com.hr) (Ping timeout: 250 seconds)
2021-06-09 12:30:57 +0200brandonh(~brandonh@151.44.23.230) (Client Quit)
2021-06-09 12:31:13 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-06-09 12:31:24 +0200agumonke`(~user@88.160.31.174) (Ping timeout: 252 seconds)
2021-06-09 12:31:25 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 12:33:36 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-06-09 12:35:37 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-09 12:35:56 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 250 seconds)
2021-06-09 12:36:25 +0200mrufrufin(~dxk@108.235.170.90) ()
2021-06-09 12:37:00 +0200nsilv(~nsilv@212.103.198.210) (Ping timeout: 245 seconds)
2021-06-09 12:40:04 +0200niko(~niko@libera/staff/niko) (Remote host closed the connection)
2021-06-09 12:40:36 +0200niko(~niko@libera/staff/niko)
2021-06-09 12:41:18 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-06-09 12:41:19 +0200fabfianda(~fabfianda@net-93-148-121-206.cust.dsl.teletu.it) (Ping timeout: 245 seconds)
2021-06-09 12:41:31 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc)
2021-06-09 12:41:46 +0200fabfianda(~fabfianda@mob-5-90-253-108.net.vodafone.it)
2021-06-09 12:42:01 +0200hmmmas(~chenqisu1@183.217.201.236) (Quit: Leaving.)
2021-06-09 12:42:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3429:27e5:c9dc:b9d2)
2021-06-09 12:43:54 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-09 12:44:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-06-09 12:45:50 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130)
2021-06-09 12:46:51 +0200koishi_(~koishi_@160.16.113.140) (Quit: /ragequit)
2021-06-09 12:47:12 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3429:27e5:c9dc:b9d2) (Ping timeout: 268 seconds)
2021-06-09 12:47:44 +0200 <raehik> Years ago there was a handy GHC plugin framework HERMIT. I'm interested in using it but can't get it to build with GHC 8.10 (originally for 7.10? lots of functions now missing). Anyone here who may know more about HERMIT and possibility of using it in 2021?
2021-06-09 12:48:24 +0200_________(~nobody@user//x-7881368) (Ping timeout: 245 seconds)
2021-06-09 12:48:45 +0200 <gentauro> involans: hmmm, `-1` should be a number and `- 1` should be a function awaiting for it's second value
2021-06-09 12:49:06 +0200 <gentauro> I mean, you don't write a decimal number like this: `10 . 24`
2021-06-09 12:50:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 12:51:12 +0200poljar(~poljar@93-143-149-172.adsl.net.t-com.hr)
2021-06-09 12:51:17 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 12:51:20 +0200koishi_(~koishi_@185.209.85.134)
2021-06-09 12:52:50 +0200wonko(~wjc@62.115.229.50) (Ping timeout: 250 seconds)
2021-06-09 12:53:07 +0200 <maerwald> a single whitespace deciding on semantics is a dangerous path
2021-06-09 12:53:42 +0200poljar1(~poljar@93-141-130-48.adsl.net.t-com.hr) (Ping timeout: 250 seconds)
2021-06-09 12:54:20 +0200 <tomsmeding> raehik: does it talk to the GHC library interface? If so, I think making it work with the GHC api of a few years later is basically impossible without a rewrite
2021-06-09 12:54:54 +0200 <yushyin> gentauro: you can have that since ghc9.0.1 and LexicalNegation extension
2021-06-09 12:55:06 +0200 <tomsmeding> unless it uses a very limited portion of the api or something
2021-06-09 12:55:29 +0200 <yushyin> gentauro: https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/lexical_negation.html#extension…
2021-06-09 12:55:35 +0200_________(~nobody@user//x-7881368)
2021-06-09 12:56:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-06-09 12:56:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 12:56:34 +0200 <raehik> tomsmeding: yes it does seem to hook in quite deep into GHC
2021-06-09 12:56:36 +0200dyniec_dyniec
2021-06-09 12:56:50 +0200 <raehik> most of the now-missing functions and constructors left in 8.0 - 8.4 :(
2021-06-09 12:58:35 +0200dyniec(~dyniec@mail.dybiec.info) (Quit: WeeChat 3.0)
2021-06-09 12:58:46 +0200dyniec(~dyniec@mail.dybiec.info)
2021-06-09 13:02:42 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 244 seconds)
2021-06-09 13:02:48 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 250 seconds)
2021-06-09 13:03:14 +0200jespada_(~jespada@90.254.242.55) (Ping timeout: 250 seconds)
2021-06-09 13:05:12 +0200hendursa1(~weechat@user/hendursaga)
2021-06-09 13:05:19 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 252 seconds)
2021-06-09 13:06:19 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130) (Ping timeout: 268 seconds)
2021-06-09 13:06:30 +0200jespada(~jespada@90.254.242.55)
2021-06-09 13:06:38 +0200agumonke`(~user@88.160.31.174)
2021-06-09 13:10:52 +0200koishi_(~koishi_@185.209.85.134) (Quit: /ragequit)
2021-06-09 13:11:00 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Ping timeout: 250 seconds)
2021-06-09 13:11:23 +0200maerwald(~maerwald@user/maerwald) (Quit: gone)
2021-06-09 13:11:54 +0200maerwald(~maerwald@mail.hasufell.de)
2021-06-09 13:14:03 +0200maerwald(~maerwald@mail.hasufell.de) (Changing host)
2021-06-09 13:14:03 +0200maerwald(~maerwald@user/maerwald)
2021-06-09 13:15:09 +0200ddellacosta(~ddellacos@89.46.62.17)
2021-06-09 13:15:10 +0200sciencentistguy(~sciencent@hacksoc/ordinary-member)
2021-06-09 13:15:23 +0200 <gentauro> 12:53 < maerwald> a single whitespace deciding on semantics is a dangerous path
2021-06-09 13:15:25 +0200 <gentauro> howcome?
2021-06-09 13:15:35 +0200 <gentauro> we do it for decimal numbers right?
2021-06-09 13:15:48 +0200 <maerwald> gentauro: bugs
2021-06-09 13:15:51 +0200 <gentauro> `10.24` is valid while `10 . 24` isn't
2021-06-09 13:16:08 +0200 <merijn> hah
2021-06-09 13:16:15 +0200 <merijn> that's what you think
2021-06-09 13:16:18 +0200 <merijn> :t 10 . 24
2021-06-09 13:16:19 +0200 <lambdabot> (Num (b -> c), Num (a -> b)) => a -> c
2021-06-09 13:16:39 +0200 <gentauro> maerwald: I understand it would be problematic for `backwards compatibility` reasons
2021-06-09 13:16:44 +0200 <gentauro> merijn: :o
2021-06-09 13:16:44 +0200 <maerwald> no, bugs
2021-06-09 13:17:13 +0200 <gentauro> :t 1 2 7
2021-06-09 13:17:14 +0200 <lambdabot> (Num t1, Num t2, Num (t1 -> t2 -> t3)) => t3
2021-06-09 13:17:19 +0200 <gentauro> :|
2021-06-09 13:17:21 +0200 <gentauro> what was that?
2021-06-09 13:17:23 +0200 <merijn> maerwald: tbh, the biggest flaw in haskell is allowing operators without whitespace around them
2021-06-09 13:17:23 +0200 <gentauro> I mean
2021-06-09 13:17:27 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:fef:c229:4466:542)
2021-06-09 13:17:28 +0200 <maerwald> Compare with rusts misfeature of omitting `return` when the last line doesn't end with a `;`
2021-06-09 13:17:35 +0200brandonh(~brandonh@151.46.91.125)
2021-06-09 13:17:40 +0200 <merijn> gentauro: "1 :: Num a => a" there is no reason 'a' can't be a function
2021-06-09 13:17:42 +0200 <maerwald> so now you have to BLINK every time at the end of a function body
2021-06-09 13:17:52 +0200 <maerwald> to be sure you don't miss the damn `;`
2021-06-09 13:17:55 +0200 <maerwald> or the lack thereof
2021-06-09 13:17:56 +0200 <merijn> In fact, Num instances exist for functions
2021-06-09 13:18:11 +0200 <gentauro> merijn: `λ> 1 . 2 <interactive>:2:1: error: `
2021-06-09 13:18:17 +0200 <gentauro> I get an error with my `ghci`
2021-06-09 13:18:23 +0200 <gentauro> do I need to enable `stuff`?
2021-06-09 13:18:30 +0200 <merijn> maerwald: If we had just specified Haskell from the start to make whitespace mandatory around operators 90% of these problems where nonexistent
2021-06-09 13:18:37 +0200 <merijn> gentauro: It's an error because functions aren't printable
2021-06-09 13:18:45 +0200 <merijn> > 1 . 2 -- this errors too
2021-06-09 13:18:47 +0200 <lambdabot> error:
2021-06-09 13:18:47 +0200 <lambdabot> • Could not deduce (Num (b0 -> c))
2021-06-09 13:18:47 +0200 <lambdabot> (maybe you haven't applied a function to enough arguments?)
2021-06-09 13:18:57 +0200 <merijn> Because there's no Num instance for functions in scope
2021-06-09 13:19:04 +0200 <gentauro> merijn: yeah, but my point was that:
2021-06-09 13:19:05 +0200 <gentauro> > 1.2
2021-06-09 13:19:07 +0200 <lambdabot> 1.2
2021-06-09 13:19:11 +0200 <gentauro> is a decimal number
2021-06-09 13:19:14 +0200 <dminuoso> This suggestion "maybe you haven't applied..." is particularly helpful here, merijn!
2021-06-09 13:19:15 +0200 <gentauro> while
2021-06-09 13:19:18 +0200 <gentauro> > 1 . 2
2021-06-09 13:19:20 +0200 <lambdabot> error:
2021-06-09 13:19:20 +0200 <lambdabot> • Could not deduce (Num (b0 -> c))
2021-06-09 13:19:20 +0200 <lambdabot> (maybe you haven't applied a function to enough arguments?)
2021-06-09 13:19:22 +0200 <gentauro> becomes a function
2021-06-09 13:19:24 +0200 <dminuoso> (I know where it comes from, but it can be terribly deceiving)
2021-06-09 13:19:30 +0200 <merijn> gentauro: "1 . 2" is valid Haskell expression that can compile just by importing a module
2021-06-09 13:19:42 +0200ddellacosta(~ddellacos@89.46.62.17) (Ping timeout: 250 seconds)
2021-06-09 13:19:44 +0200 <maerwald> gentauro: in sufficiently polymorphic code, both may compile
2021-06-09 13:19:53 +0200 <merijn> gentauro: https://hackage.haskell.org/package/NumInstances
2021-06-09 13:20:10 +0200 <maerwald> I've had impossible to guess bugs in lens code too, where you'd think it should have been an error
2021-06-09 13:20:16 +0200 <maerwald> but it wasn't
2021-06-09 13:20:33 +0200 <merijn> The other mistakes in Haskell was having unary -
2021-06-09 13:21:22 +0200 <merijn> I swear, we could massively improve Haskell with a time machine, AMP proposal, and the sane plan for mandatory whitespace around operators and removing unary -
2021-06-09 13:21:43 +0200 <gentauro> merijn: do you want to start over again?
2021-06-09 13:21:45 +0200 <gentauro> xD
2021-06-09 13:21:49 +0200 <merijn> Yes
2021-06-09 13:21:51 +0200 <maerwald> merijn: nah, we're busy implementing type level features... no time for cleaning up the language
2021-06-09 13:22:16 +0200 <gentauro> is this how Java become Java? :o
2021-06-09 13:22:19 +0200 <dminuoso> % fix 1
2021-06-09 13:22:19 +0200 <yahb> dminuoso: ; <interactive>:3:1: error:; * No instance for (Num (() -> ())) arising from a use of `it'; (maybe you haven't applied a function to enough arguments?); * In the first argument of `print', namely `it'; In a stmt of an interactive GHCi command: print it
2021-06-09 13:22:21 +0200 <merijn> maerwald: Can't really clean up some of these issues without Python2-to-3 scenarios, because old code might break
2021-06-09 13:22:25 +0200 <dminuoso> % fix 1
2021-06-09 13:22:28 +0200 <maerwald> :: for kind signatures is confusing af for me
2021-06-09 13:22:30 +0200 <yahb> dminuoso: [Timed out]
2021-06-09 13:22:32 +0200 <dminuoso> Here. Compiles and runs just fine!
2021-06-09 13:22:38 +0200 <gentauro> :t fix
2021-06-09 13:22:39 +0200 <lambdabot> (a -> a) -> a
2021-06-09 13:22:40 +0200 <merijn> maerwald: TypeInType is crazy nonsense, tbh
2021-06-09 13:22:44 +0200 <dminuoso> If you ever want to fix your numbers, that's the way to go.
2021-06-09 13:22:47 +0200 <gentauro> :t fix 1
2021-06-09 13:22:48 +0200 <lambdabot> Num (a -> a) => a
2021-06-09 13:23:07 +0200 <gentauro> to `fix 1` equals infinite recursion?
2021-06-09 13:23:15 +0200 <merijn> "maybe"
2021-06-09 13:23:56 +0200 <DigitalKiwi> what is fix
2021-06-09 13:24:06 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-09 13:24:19 +0200 <dminuoso> DigitalKiwi: think of it as a tool to create anonymous loops
2021-06-09 13:24:25 +0200 <dminuoso> or anonymous recursion, rather
2021-06-09 13:24:56 +0200edwtjo(~edwtjo@user/edwtjo) (Quit: WeeChat 3.0)
2021-06-09 13:25:02 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-09 13:25:11 +0200 <dminuoso> `ones = 1 : ones` requires a binding, so this is named recursion. Or you can just write `fix (1:)`
2021-06-09 13:25:22 +0200 <dminuoso> (Ignoring tying-the-not here, which you should do)
2021-06-09 13:25:29 +0200 <merijn> DigitalKiwi: fix is the most primitive distilled form of recursion
2021-06-09 13:25:50 +0200 <merijn> DigitalKiwi: Any recursive function can be rewritten as fix + non-recursive function
2021-06-09 13:26:02 +0200 <dminuoso> And any use of fix can be turned into just simple recursion.
2021-06-09 13:26:19 +0200 <merijn> DigitalKiwi: See: https://gist.github.com/merijn/b86649a6aa21bd140803
2021-06-09 13:26:30 +0200 <dminuoso> One part where fix is particularly handy, is you have a data type and want to create mutually referencing fields
2021-06-09 13:26:31 +0200 <Taneb> merijn: being pedantic, I'm not sure all instances of recursion can be written that way. In particular, polymorphic recursion fails
2021-06-09 13:27:02 +0200 <dminuoso> You can just write `fix $ \d -> Data { f1 = [1,2,3]; f2 = [2,3,4]; f3 = f1 d <> f2 d }` for example
2021-06-09 13:27:06 +0200 <merijn> Taneb: polymorphic recursion requires typeclasses or some such anyway, no?
2021-06-09 13:27:15 +0200 <Taneb> No? Let me write something
2021-06-09 13:27:16 +0200zelmac(~quassel@82-69-3-58.dsl.in-addr.zen.co.uk) (Quit: zelmac)
2021-06-09 13:27:17 +0200chddr(~Thunderbi@31.148.23.125) (Ping timeout: 268 seconds)
2021-06-09 13:27:25 +0200 <dminuoso> (This is compact and eloquent, and will use sharing)
2021-06-09 13:28:55 +0200 <Taneb> merijn: https://gist.github.com/Taneb/e17d338384a62297002983e123d8d59d
2021-06-09 13:29:01 +0200 <dminuoso> mfix is far more interesting than fix I think
2021-06-09 13:29:27 +0200 <dminuoso> fix is just handy, but mfix can do things that take a lot more effort than without
2021-06-09 13:29:57 +0200 <Taneb> merijn: I don't think it's possible to write "size" there with fix and a non-recursive function
2021-06-09 13:29:57 +0200 <tomsmeding> maerwald: out of context reply, but re the semicolon issue on the last line with rust: it's not going to typecheck when you make the wrong decision in at most one place, I think
2021-06-09 13:30:03 +0200 <Taneb> Happy to be proven wrong here
2021-06-09 13:30:27 +0200 <maerwald> tomsmeding: it hinders reading flow
2021-06-09 13:30:31 +0200 <tomsmeding> not sure if it's possible to conceive a situation where getting two semicolons wrong makes a type correct program again
2021-06-09 13:30:45 +0200 <merijn> Taneb: hmm, maybe
2021-06-09 13:31:02 +0200 <tomsmeding> agree about the incongruity with the rest of the imperative language though; go full let...in or have a return keyword
2021-06-09 13:31:07 +0200 <merijn> Taneb: You're probably right, but I'm too tired to dedicate any brain cycles too considering a way around it :p
2021-06-09 13:31:08 +0200 <hpc> DigitalKiwi: since it hasn't been mentioned yet, the easiest way to understand fix is that fix (\f -> expression that mentions f) is analogous to f = expression that mentions f
2021-06-09 13:31:27 +0200 <merijn> hpc: I already did that via my map implementation above ;)
2021-06-09 13:31:34 +0200 <dminuoso> hpc: modulo knot tying!
2021-06-09 13:31:39 +0200 <Taneb> merijn: I believe this kind of recursion is invalid in ML, incidentally, but Haskell accepts it without complaint
2021-06-09 13:31:52 +0200pavonia(~user@user/siracusa)
2021-06-09 13:31:56 +0200 <dminuoso> Which I think should still be mentioned. If you naively write `f = expression that mentions f` your stack will suffer
2021-06-09 13:32:07 +0200 <dminuoso> With fix it wouldnt
2021-06-09 13:33:12 +0200 <merijn> dminuoso: huh?
2021-06-09 13:33:14 +0200 <merijn> dminuoso: Why?
2021-06-09 13:33:26 +0200hmmmas(~chenqisu1@183.217.201.236)
2021-06-09 13:33:41 +0200 <dminuoso> mmm
2021-06-09 13:33:47 +0200 <dminuoso> ah I guess it wouldnt
2021-06-09 13:33:51 +0200 <tomsmeding> @src fix
2021-06-09 13:33:51 +0200 <lambdabot> fix f = let x = f x in x
2021-06-09 13:34:32 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 264 seconds)
2021-06-09 13:35:20 +0200 <tomsmeding> looks like it would be exactly the same, to me
2021-06-09 13:35:32 +0200koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-06-09 13:35:34 +0200 <dminuoso> Yeah, I think I misremembered something.
2021-06-09 13:35:41 +0200 <dminuoso> @src cycle
2021-06-09 13:35:41 +0200 <lambdabot> cycle [] = undefined
2021-06-09 13:35:41 +0200 <lambdabot> cycle xs = xs' where xs' = xs ++ xs'
2021-06-09 13:35:44 +0200fabfianda(~fabfianda@mob-5-90-253-108.net.vodafone.it) (Ping timeout: 250 seconds)
2021-06-09 13:35:52 +0200 <dminuoso> Maybe my brain was wired wrong with this in mind
2021-06-09 13:36:00 +0200fabfianda(~fabfianda@net-93-148-121-206.cust.vodafonedsl.it)
2021-06-09 13:36:30 +0200 <merijn> yeah
2021-06-09 13:36:39 +0200koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-06-09 13:36:42 +0200 <merijn> "cycle xs = xs ++ cycle xs" is where you'd lose sharing
2021-06-09 13:36:58 +0200 <tomsmeding> ooooo right sharing
2021-06-09 13:37:38 +0200benin03(~benin@183.82.206.233) (Ping timeout: 244 seconds)
2021-06-09 13:41:14 +0200 <merijn> but the problem here is the sharing of the *result* of the recursion, rather than the function itself
2021-06-09 13:43:32 +0200 <dminuoso> That makes sense
2021-06-09 13:43:58 +0200agumonke`(~user@88.160.31.174) (Ping timeout: 250 seconds)
2021-06-09 13:44:01 +0200boxscape(~boxscape@user/boxscape)
2021-06-09 13:49:53 +0200kenran(~kenran@200116b82b683c006ea54bdc3ffd5a0f.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-06-09 13:50:42 +0200curiousgay(~quassel@178.217.208.8) (Ping timeout: 264 seconds)
2021-06-09 13:52:39 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-06-09 13:53:08 +0200Natch(~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 264 seconds)
2021-06-09 13:54:25 +0200 <DigitalKiwi> what is sharing
2021-06-09 13:54:59 +0200Natch(~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
2021-06-09 13:56:00 +0200um(niahifz5l1@user/um)
2021-06-09 13:56:10 +0200um(niahifz5l1@user/um) ()
2021-06-09 13:56:43 +0200hmmmas(~chenqisu1@183.217.201.236) (Quit: Leaving.)
2021-06-09 13:56:59 +0200 <tomsmeding> let x = complicated_stuff in x + x
2021-06-09 13:57:12 +0200 <tomsmeding> will only compute x once, because its result is _shared_ between its usages
2021-06-09 13:57:30 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 268 seconds)
2021-06-09 13:57:38 +0200 <tomsmeding> let l = 1 : l in ...
2021-06-09 13:57:52 +0200 <tomsmeding> there the list and its tail are shared (i.e. point to the same thing in memory)
2021-06-09 13:57:59 +0200 <dminuoso> This is something you can only get with purity in the language. With an impure language, you demand the compiler prove this is a legit transformation.,
2021-06-09 13:58:34 +0200 <dminuoso> This might be a good teaser why unsafePerformIO can behave really unexpected, because GHC will make assumptions like the above.
2021-06-09 13:59:03 +0200 <dminuoso> % cycle [1,2,3]
2021-06-09 13:59:09 +0200 <yahb> dminuoso: [1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2
2021-06-09 13:59:12 +0200 <boxscape> dminuoso when you say "This", do you mean having the compiler automatically introduce sharing into an expression that wouldn't otherwise have it?
2021-06-09 13:59:59 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 14:00:01 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b)
2021-06-09 14:01:00 +0200 <dminuoso> boxscape: fsvo of "automatically", anyhow
2021-06-09 14:01:06 +0200 <boxscape> ok
2021-06-09 14:01:18 +0200pagnol(~user@014198154145.ctinets.com) (Ping timeout: 250 seconds)
2021-06-09 14:01:52 +0200andreypopp(~andreypop@94.188.42.16)
2021-06-09 14:02:57 +0200 <merijn> boxscape: CSE (Common Sub-expression Elimination) is an optimisation that exists in GHC, yes
2021-06-09 14:03:09 +0200 <boxscape> right, okay
2021-06-09 14:03:36 +0200 <merijn> boxscape: So if you write "(2 + 2) * (2 + 2)" ghc may decide to compile it as "let x = 2 + 2 in x * x"
2021-06-09 14:03:59 +0200 <boxscape> I remember when I first read (I think in LYAH) that being lazy means every expression is evaluated at most once, I assumed that means CSE is applied to everything
2021-06-09 14:04:21 +0200 <boxscape> (which of course was not at all what was meant by it)
2021-06-09 14:04:32 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-06-09 14:04:42 +0200 <merijn> boxscape: Well, that also gets is in the pedantic argument that Haskell is "non-strict" and *not* lazy ;)
2021-06-09 14:04:51 +0200 <boxscape> yes, but I don't think LYAH made that distinction
2021-06-09 14:04:57 +0200 <merijn> Probably not, no
2021-06-09 14:05:12 +0200nsilv(~nsilv@212.103.198.210)
2021-06-09 14:06:21 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-06-09 14:06:52 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-06-09 14:07:40 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 14:09:12 +0200 <boxscape> (looking at google though, it doesn't seem as though the phrase "at most once" appears in LYAH, actually. It does appear in that context in a few other places)
2021-06-09 14:10:53 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-09 14:11:22 +0200V(~v@anomalous.eu) (Quit: We're here. We're queer. Connection reset by peer)
2021-06-09 14:11:55 +0200V(~v@anomalous.eu)
2021-06-09 14:13:16 +0200andreypopp(~andreypop@94.188.42.16) (Textual IRC Client: www.textualapp.com)
2021-06-09 14:14:33 +0200 <boxscape> LYAH does seem to say on the first page though that laziness implies fusion of list operations
2021-06-09 14:16:31 +0200curiousgay(~quassel@178.217.208.8)
2021-06-09 14:17:25 +0200 <boxscape> also in another chapter: "Thanks to Haskell's laziness, even if you map something over a list several times and filter it several times, it will only pass over the list once." http://learnyouahaskell.com/higher-order-functions
2021-06-09 14:17:30 +0200 <boxscape> which strikes me as wrong
2021-06-09 14:17:33 +0200 <int-e> boxscape: not really... laziness means that doubleMe(doubleMe(doubleMe(xs))) is evaluated without ever fully evaluating the intermediate lists
2021-06-09 14:18:12 +0200 <int-e> boxscape: fusion is about completely eliminating the intermediate lists; they don't even exist as a cons with unevaluated tail anymore
2021-06-09 14:18:38 +0200 <boxscape> int-e yes, I'd agree with that, I think the text is ignoring that fusion is necessary at all though
2021-06-09 14:19:01 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at)
2021-06-09 14:19:16 +0200 <int-e> maybe
2021-06-09 14:19:51 +0200 <boxscape> (or rather, implying that you get fusion for free as soon as you have laziness)
2021-06-09 14:20:58 +0200 <int-e> the text is imprecise because it focuses on the values of the list, ignoring its spine
2021-06-09 14:21:19 +0200 <boxscape> yeah that's true
2021-06-09 14:21:57 +0200tose(~tose@ip-85-160-36-186.eurotel.cz)
2021-06-09 14:23:53 +0200ddellacosta(~ddellacos@86.106.121.83)
2021-06-09 14:26:33 +0200 <merijn> Even without fusion laziness reduces the operational cost
2021-06-09 14:26:43 +0200 <merijn> Since allocating and GCing in GHC is cheap
2021-06-09 14:26:54 +0200 <merijn> not having to store the entire spine N times certainly matters
2021-06-09 14:27:12 +0200 <boxscape> that's fair
2021-06-09 14:27:43 +0200Torro(Torro@gateway/vpn/protonvpn/torro) (Quit: leaving)
2021-06-09 14:28:33 +0200ddellacosta(~ddellacos@86.106.121.83) (Ping timeout: 252 seconds)
2021-06-09 14:29:28 +0200 <delYsid> How do I run Haskell code at build-time to generate a datafile which will be includeed via file-embed?
2021-06-09 14:30:01 +0200 <delYsid> I guess I need to hook into Setup.hs? But I didnt find any good examples yet.
2021-06-09 14:32:42 +0200 <merijn> I would strongly advice on reconsidering at least one of those two >.>
2021-06-09 14:33:55 +0200zebrag(~chris@user/zebrag)
2021-06-09 14:35:39 +0200 <delYsid> care to elaborate?
2021-06-09 14:35:58 +0200 <merijn> Hooking Setup.hs is super brittle
2021-06-09 14:36:01 +0200 <xerox> delYsid: looks like it, I found this https://cabal.readthedocs.io/en/3.4/cabal-package.html#autogenerated-modules-and-includes and an example in the wild https://github.com/ArgonDesign/acov/search?q=buildversion
2021-06-09 14:36:11 +0200 <merijn> It will break lots of things, such as doctests, etc.
2021-06-09 14:36:35 +0200 <merijn> delYsid: What kinda data do you need to embed?
2021-06-09 14:36:49 +0200 <delYsid> merijn: So is there a better way then Setup.hs?
2021-06-09 14:37:42 +0200 <merijn> Not if you need an external file. But then, if you are gonna generate the file at compile time, do you even need an external file?
2021-06-09 14:38:13 +0200 <delYsid> merijn: I lookup table, essentially... The data is in a text file, and I'd like to move the parser step from runtime to compile-time, since decoding via the Binary instance is way faster...
2021-06-09 14:38:43 +0200 <delYsid> s/I/A/
2021-06-09 14:38:58 +0200 <merijn> delYsid: But you can just generate your lookup table at compile and embed that, rather than using file-embed, no?
2021-06-09 14:39:43 +0200 <delYsid> I dont understand. I was planning to use decode . embedFile
2021-06-09 14:39:46 +0200 <merijn> file-embed lets you embed external file as ByteString. But TemplateHaskell is much more powerful than that, you can simply convert to your final data structure at compile time and embed that data structure
2021-06-09 14:39:59 +0200 <merijn> delYsid: Right, but that's like, the worst of both worlds?
2021-06-09 14:40:09 +0200 <merijn> delYsid: The decode still happens at runtime
2021-06-09 14:40:37 +0200 <delYsid> true, but its less worse then what I currently have, which is running megaparsec at runtime
2021-06-09 14:41:11 +0200 <delYsid> But I get the idea, however, I have to admit, I am afraid of TH. Whenever I touched it, I almost went mad.
2021-06-09 14:41:12 +0200 <merijn> delYsid: Is your text file generated or static?
2021-06-09 14:41:23 +0200 <merijn> delYsid: file-embed *is* TH, though :p
2021-06-09 14:41:43 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-06-09 14:42:00 +0200 <delYsid> Well, the text file is sort of static, yeah.
2021-06-09 14:42:17 +0200 <delYsid> It might change sometime, but its not autogenerated.
2021-06-09 14:42:37 +0200 <merijn> ok, then I think your initial question was already confusing
2021-06-09 14:43:06 +0200 <delYsid> likely, my questions here tend to do that.
2021-06-09 14:43:27 +0200 <merijn> delYsid: Your question parses as: I want to generate a text-file using Haskell code, then embed that file using file-embed. Which is a major PITA, because that'd involve hooking Setup.hs and some kinda preprocessor setup
2021-06-09 14:43:41 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3429:27e5:c9dc:b9d2)
2021-06-09 14:43:51 +0200 <merijn> delYsid: Whereas "I already have a file and want to embed that" is much less painful
2021-06-09 14:44:12 +0200 <merijn> Because that can be done entirely in TH
2021-06-09 14:45:52 +0200 <merijn> delYsid: If you have both "a text file" and "Haskell code that translates that file into whatever data structure you need at runtime", then doing that conversion in TH is fairly straightforward
2021-06-09 14:45:54 +0200 <delYsid> Well, I know embedFile, and use it. All I want is to run the conversion from text to binary a build-time so that I can load a binary a runtime... I could as well commit the binary file to the repo, but thats ugly man.
2021-06-09 14:46:38 +0200 <merijn> delYsid: Right, but how about this: Rather than than embedding the binary file, "read and convert" the text file at compile time and embed the resulting data structure
2021-06-09 14:47:00 +0200 <delYsid> And pointers on getting me started on that? Its essentially a newtype'd HashMap...
2021-06-09 14:47:27 +0200 <merijn> delYsid: Suppose your final (at runtime) data structure is "YourMap Foo Value" and you have "Text -> Either Error (YourMap Foo Value)" then things are "fairly" easy
2021-06-09 14:47:42 +0200 <merijn> delYsid: Well, you'll want: https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH-Syntax.html…
2021-06-09 14:48:12 +0200 <merijn> delYsid: liftTyped turns a *value* (at TH runtime, i.e. compile time) into the TH *representation* of that value
2021-06-09 14:48:34 +0200 <delYsid> oh, neat
2021-06-09 14:48:41 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3429:27e5:c9dc:b9d2) (Ping timeout: 268 seconds)
2021-06-09 14:48:45 +0200 <merijn> delYsid: I've got a fun library showcasing this
2021-06-09 14:48:48 +0200berberman_(~berberman@user/berberman)
2021-06-09 14:49:04 +0200berberman(~berberman@user/berberman) (Ping timeout: 272 seconds)
2021-06-09 14:49:05 +0200 <merijn> delYsid: https://hackage.haskell.org/package/validated-literals
2021-06-09 14:49:17 +0200 <merijn> delYsid: Which does partial conversions at compile time (and errors if they fail)
2021-06-09 14:49:46 +0200 <merijn> delYsid: The Q (i.e. TH monad) is an instance of MonadIO, so you can just liftIO any filesystem code to run at compile time with no issue
2021-06-09 14:50:05 +0200_________(~nobody@user//x-7881368) (Remote host closed the connection)
2021-06-09 14:50:23 +0200 <delYsid> So whats the type of my "compiler" function, then?
2021-06-09 14:50:47 +0200 <merijn> delYsid: And then you could just write "lookup = $( liftIO (readFile path) >>= foo)" where 'foo' is a combination of liftTyped + your decode stuff
2021-06-09 14:51:24 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 14:51:31 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-09 14:51:42 +0200 <merijn> Simplest case would be "foo = liftTyped . decodeData" (but that's wrong if decodeData can return an Either/throw an exception, which you'd need to handle before liftTyped)
2021-06-09 14:52:16 +0200 <merijn> but the validated-literals code has some examples of how to turn "Either Error a" into 'TExp a' that has a type error at compile time
2021-06-09 14:52:41 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-06-09 14:52:45 +0200 <merijn> delYsid: For example: https://github.com/merijn/validated-literals/blob/master/ValidLiterals.hs#L110-L116
2021-06-09 14:53:00 +0200wonko(~wjc@62.115.229.50)
2021-06-09 14:54:13 +0200 <merijn> delYsid: And then valid (or validInteger, etc.) can be used as splices like: https://github.com/merijn/validated-literals/blob/master/examples/Examples.hs#L24-L25
2021-06-09 14:55:29 +0200 <delYsid> [||val||] ugh, TH...
2021-06-09 14:55:29 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 14:55:31 +0200poljar1(~poljar@93-139-68-198.adsl.net.t-com.hr)
2021-06-09 14:55:34 +0200tose(~tose@ip-85-160-36-186.eurotel.cz) (Quit: WeeChat 3.0)
2021-06-09 14:56:09 +0200 <merijn> delYsid: '[|| x ||]' just turns *value* 'x' into "an AST representing the value 'x'"
2021-06-09 14:56:18 +0200 <merijn> delYsid: Since the output of TH is *an AST*
2021-06-09 14:56:55 +0200zmt00(~zmt00@user/zmt00)
2021-06-09 14:56:57 +0200 <merijn> So "2" is just the value 2 in the TH code, but "[|| 2 ||]" is "an AST representing the syntax '2'"
2021-06-09 14:57:14 +0200 <delYsid> my problem starts at liftTyped. I dont understand its type signature at all. Because I dont know what Code is... The Q monad confuses me.
2021-06-09 14:58:06 +0200 <merijn> delYsid: Q monad is "IO + GHC"
2021-06-09 14:58:30 +0200poljar(~poljar@93-143-149-172.adsl.net.t-com.hr) (Ping timeout: 250 seconds)
2021-06-09 14:58:53 +0200 <merijn> delYsid: The Q is the "quasiquoting" monad. i.e. the context in which code that runs at compile time executes
2021-06-09 14:59:13 +0200 <merijn> delYsid: Does the Exp type make sense to you? https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH.html#g:20
2021-06-09 14:59:45 +0200 <merijn> delYsid: i.e., that's just the datatype for Haskell's AST
2021-06-09 14:59:52 +0200 <xerox> I used to be in the same camp til I found https://downloads.haskell.org/~ghc/8.10.3/docs/html/users_guide/glasgow_exts.html#template-haskell it is a very clear explanation I think
2021-06-09 14:59:54 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-06-09 14:59:57 +0200 <merijn> (well, the expression part of the AST, anyway)
2021-06-09 14:59:59 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 244 seconds)
2021-06-09 15:00:17 +0200 <merijn> brb
2021-06-09 15:00:23 +0200_________(~nobody@user//x-7881368)
2021-06-09 15:01:15 +0200alx741(~alx741@181.196.69.18)
2021-06-09 15:01:32 +0200brandonh(~brandonh@151.46.91.125) (Ping timeout: 250 seconds)
2021-06-09 15:01:41 +0200ddellacosta(~ddellacos@89.46.62.63)
2021-06-09 15:02:08 +0200favonia(~favonia@user/favonia)
2021-06-09 15:02:10 +0200ddellacosta(~ddellacos@89.46.62.63) (Remote host closed the connection)
2021-06-09 15:02:39 +0200ddellacosta(~ddellacos@89.46.62.63)
2021-06-09 15:03:50 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 15:04:01 +0200ddellaco_(~ddellacos@86.106.121.65)
2021-06-09 15:04:40 +0200 <ski> guest61 : well, i also suggested using `case'-`of' to pick apart the `parse' result, distinguishing between then successful and the failure case, rather than going on to use `fmap' all the time to manipulate the successful result. but also to use `case'-`of', instead of `==' and `/=' (and e.g. using `catMaybes' instead of `filter' and `fmap fromJust'). then i had a few cosmetic changes like removing
2021-06-09 15:04:46 +0200 <ski> redundant brackets, removing all the `$'s, replacing `print' with `putStrLn' with `hPutStrLn stderr', factoring `pure' out of `maybe'
2021-06-09 15:07:32 +0200ddellacosta(~ddellacos@89.46.62.63) (Ping timeout: 264 seconds)
2021-06-09 15:10:39 +0200favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-09 15:11:04 +0200favonia(~favonia@user/favonia)
2021-06-09 15:11:04 +0200jolly(~jolly@208.180.97.158) (Quit: Connection closed)
2021-06-09 15:11:07 +0200cfricke(~cfricke@user/cfricke)
2021-06-09 15:14:04 +0200jolly(~jolly@208.180.97.158)
2021-06-09 15:14:06 +0200fabfianda(~fabfianda@net-93-148-121-206.cust.vodafonedsl.it) (Ping timeout: 250 seconds)
2021-06-09 15:14:54 +0200fabfianda(~fabfianda@mob-5-90-243-109.net.vodafone.it)
2021-06-09 15:17:49 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 272 seconds)
2021-06-09 15:18:52 +0200 <delYsid> merijn: So, how do I make my type an instance of Lift?
2021-06-09 15:19:42 +0200cfricke(~cfricke@user/cfricke)
2021-06-09 15:21:04 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-06-09 15:22:12 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 15:23:44 +0200mastarija__(~mastarija@46.188.129.109) (Ping timeout: 264 seconds)
2021-06-09 15:25:50 +0200chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr)
2021-06-09 15:26:35 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-06-09 15:26:41 +0200nsilv(~nsilv@212.103.198.210) (Ping timeout: 272 seconds)
2021-06-09 15:29:30 +0200kiweun(~sheepduck@2607:fea8:2a61:4800::6882) (Remote host closed the connection)
2021-06-09 15:29:53 +0200kiweun(~sheepduck@2607:fea8:2a61:4800::e92f)
2021-06-09 15:30:01 +0200 <dminuoso> delYsid: You write an instance declaration?
2021-06-09 15:30:12 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-09 15:30:51 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-09 15:31:42 +0200 <dminuoso> delYsid: All you have to do is specify how to build an Exp from a value of your type. To generate fresh names that cannot be captured, you can use `newName` inside the definition of `lift`
2021-06-09 15:32:08 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-06-09 15:33:12 +0200thyriaen(~thyriaen@45.178.73.238)
2021-06-09 15:33:32 +0200 <merijn> delYsid: You can DeriveLift
2021-06-09 15:33:33 +0200 <jaror[m]> With (since) 9.0.1 you have to give an implementation of `liftTyped`, that might be harder than implementing `lift`.
2021-06-09 15:35:21 +0200nsilv(~nsilv@212.103.198.210)
2021-06-09 15:38:03 +0200ddellaco_(~ddellacos@86.106.121.65) (Remote host closed the connection)
2021-06-09 15:38:32 +0200ddellacosta(~ddellacos@86.106.121.65)
2021-06-09 15:39:40 +0200ddellaco_(~ddellacos@89.46.62.34)
2021-06-09 15:39:45 +0200 <delYsid> merijn: I did. I even found th-instances-lift for Unboxed Vector, but now I am stuck at HashMap not having a Lift instance...
2021-06-09 15:40:01 +0200hendursaga(~weechat@user/hendursaga)
2021-06-09 15:43:32 +0200ddellacosta(~ddellacos@86.106.121.65) (Ping timeout: 264 seconds)
2021-06-09 15:45:04 +0200ell8(~ellie@user/ellie)
2021-06-09 15:46:28 +0200ell(~ellie@user/ellie) (Read error: Connection reset by peer)
2021-06-09 15:46:29 +0200ell8ell
2021-06-09 15:46:41 +0200jlamothe(~jlamothe@198.251.57.81) (Quit: leaving)
2021-06-09 15:47:43 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-09 15:47:48 +0200slack1256(~slack1256@191.125.180.163)
2021-06-09 15:49:56 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-06-09 15:50:21 +0200 <merijn> delYsid: You can workaround that like so: https://github.com/merijn/validated-literals/blob/master/examples/ByteString.hs#L28
2021-06-09 15:51:54 +0200 <merijn> i.e. "AppE <$> [| HM.fromList |] <*> lift x" where "x :: [(k, v)]"
2021-06-09 15:52:19 +0200 <jippiedoe> re: laziness and fusing list operations: I like to think of it in evaluation order; laziness evaluates the f's and g's in `map f . map g` in the same order as the fused `map (f . g)`. Actual fusion/deforestation just removes some indirection with consing and unconsing
2021-06-09 15:56:00 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-09 15:57:33 +0200jaevanko(~jaevanko@2600:1700:1330:2bef:8da6:e24d:9a34:2f32) (Quit: Leaving)
2021-06-09 15:59:20 +0200_________(~nobody@user//x-7881368) (Remote host closed the connection)
2021-06-09 15:59:51 +0200xff0x_(~xff0x@port-92-195-66-229.dynamic.as20676.net) (Ping timeout: 252 seconds)
2021-06-09 16:00:10 +0200xff0x_(~xff0x@185.65.135.235)
2021-06-09 16:00:22 +0200biberu\(~biberu@user/biberu)
2021-06-09 16:00:35 +0200 <delYsid> oh, it works.
2021-06-09 16:00:51 +0200 <merijn> \o/
2021-06-09 16:01:27 +0200slac19625(~slack1256@191.125.180.163)
2021-06-09 16:01:30 +0200tabemann_(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-06-09 16:01:48 +0200nschoe(~quassel@178.251.84.79)
2021-06-09 16:01:49 +0200bollu7(~bollu@139.59.46.74)
2021-06-09 16:01:59 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-06-09 16:02:01 +0200 <dminuoso> jippiedoe: Wouldn't another major benefit of fusing `map f . map g` into `map (f . g)` be improved locality of cache?
2021-06-09 16:02:26 +0200 <merijn> Yes, no, maybe?
2021-06-09 16:02:45 +0200abbie6(~abbie@user/abbie)
2021-06-09 16:03:04 +0200monochrm(trebla@216.138.220.146)
2021-06-09 16:03:06 +0200 <dminuoso> Well, if the produced data of `f` is still hot in your L1/L2, then surely that's a good thing
2021-06-09 16:03:18 +0200dobblego(~dibblego@122-199-1-30.ip4.superloop.com)
2021-06-09 16:03:18 +0200dobblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2021-06-09 16:03:18 +0200dobblego(~dibblego@haskell/developer/dibblego)
2021-06-09 16:03:23 +0200tomjagua1paw(~tom@li367-225.members.linode.com)
2021-06-09 16:03:31 +0200gentauro_(~gentauro@185.107.12.141)
2021-06-09 16:03:35 +0200sciencen1(~sciencent@hacksoc/ordinary-member)
2021-06-09 16:03:46 +0200 <dminuoso> If you map twice, then depending on the length of the data, you could be evicting chunks of it
2021-06-09 16:03:50 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-06-09 16:03:55 +0200samebchase6(~samebchas@51.15.68.182)
2021-06-09 16:03:57 +0200lambdap7(~lambdap@static.167.190.119.168.clients.your-server.de)
2021-06-09 16:04:03 +0200jlamothe(~jlamothe@198.251.57.81)
2021-06-09 16:04:11 +0200dustinm-(~dustinm@static.38.6.217.95.clients.your-server.de)
2021-06-09 16:04:22 +0200zopsi_(zopsi@2600:3c00::f03c:91ff:fe14:551f)
2021-06-09 16:04:24 +0200_________(~nobody@user//x-7881368)
2021-06-09 16:04:25 +0200urtie(~arthurvl@deban2.xs4all.space)
2021-06-09 16:04:46 +0200micro_(~micro@user/micro)
2021-06-09 16:05:05 +0200Philonous_(~Philonous@user/philonous)
2021-06-09 16:05:23 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a)
2021-06-09 16:05:28 +0200juri__(~juri@178.63.35.222)
2021-06-09 16:06:03 +0200dtman34_(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-06-09 16:06:06 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
2021-06-09 16:06:13 +0200wagle(~wagle@quassel.wagle.io)
2021-06-09 16:06:26 +0200bah_(~bah@l1.tel)
2021-06-09 16:06:38 +0200 <merijn> dminuoso: That doesn't hold though
2021-06-09 16:06:38 +0200ozzymcdu1f(~mathieu@81-234-151-21-no94.tbcn.telia.com)
2021-06-09 16:06:52 +0200 <merijn> dminuoso: In a lazy setting the evaluation of the first and second map would be interleaved
2021-06-09 16:07:07 +0200aravk_(~aravk@user/aravk)
2021-06-09 16:07:09 +0200 <dminuoso> Ah yes
2021-06-09 16:07:15 +0200shailangsa(~shailangs@host86-186-177-181.range86-186.btcentralplus.com) (Killed (NickServ (GHOST command used by Shailangsa_)))
2021-06-09 16:07:21 +0200shanemikel_(~shanemike@desk.roadwar.net)
2021-06-09 16:07:30 +0200typedfern_(~Typedfern@185.red-83-57-142.dynamicip.rima-tde.net)
2021-06-09 16:08:17 +0200 <dminuoso> What's the main benefit of fusion then? Ability of the simplifier to improve `f.g`?
2021-06-09 16:08:27 +0200 <merijn> dminuoso: You get to skip allocating a cons cell
2021-06-09 16:08:31 +0200 <dminuoso> Or is it really just saving extra case-of discriminating on cons?
2021-06-09 16:08:42 +0200 <dminuoso> Ah, it has to create a new one
2021-06-09 16:08:51 +0200boxscape(~boxscape@user/boxscape) (Quit: Connection closed)
2021-06-09 16:08:51 +0200harry(~harry@92.234.0.237)
2021-06-09 16:08:54 +0200ptrcmd_(~ptrcmd@user/ptrcmd)
2021-06-09 16:09:19 +0200otulp_(~otulp@ti0187q162-2423.bb.online.no)
2021-06-09 16:09:30 +0200dmwit_(~dmwit@pool-96-255-233-247.washdc.fios.verizon.net)
2021-06-09 16:09:51 +0200troydm1(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-06-09 16:10:07 +0200 <merijn> yeah
2021-06-09 16:10:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a) (Ping timeout: 272 seconds)
2021-06-09 16:10:15 +0200boxscape(~boxscape@user/boxscape)
2021-06-09 16:10:27 +0200ddellaco_(~ddellacos@89.46.62.34) (Remote host closed the connection)
2021-06-09 16:10:34 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (*.net *.split)
2021-06-09 16:10:34 +0200slack1256(~slack1256@191.125.180.163) (*.net *.split)
2021-06-09 16:10:34 +0200fabfianda(~fabfianda@mob-5-90-243-109.net.vodafone.it) (*.net *.split)
2021-06-09 16:10:34 +0200sciencentistguy(~sciencent@hacksoc/ordinary-member) (*.net *.split)
2021-06-09 16:10:34 +0200niko(~niko@libera/staff/niko) (*.net *.split)
2021-06-09 16:10:34 +0200michalz(~michalz@185.246.204.125) (*.net *.split)
2021-06-09 16:10:34 +0200shanemikel(~shanemike@desk.roadwar.net) (*.net *.split)
2021-06-09 16:10:34 +0200ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com) (*.net *.split)
2021-06-09 16:10:34 +0200gentauro(~gentauro@user/gentauro) (*.net *.split)
2021-06-09 16:10:34 +0200micro(~micro@user/micro) (*.net *.split)
2021-06-09 16:10:34 +0200bah(~bah@l1.tel) (*.net *.split)
2021-06-09 16:10:34 +0200aravk(~aravk@user/aravk) (*.net *.split)
2021-06-09 16:10:34 +0200juri_(~juri@178.63.35.222) (*.net *.split)
2021-06-09 16:10:34 +0200otulp(~otulp@ti0187q162-2423.bb.online.no) (*.net *.split)
2021-06-09 16:10:34 +0200wagle_(~wagle@quassel.wagle.io) (*.net *.split)
2021-06-09 16:10:34 +0200Philonous(~Philonous@user/philonous) (*.net *.split)
2021-06-09 16:10:34 +0200FragByte(~christian@user/fragbyte) (*.net *.split)
2021-06-09 16:10:34 +0200abbie(~abbie@user/abbie) (*.net *.split)
2021-06-09 16:10:34 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (*.net *.split)
2021-06-09 16:10:34 +0200haask(~harry@92.234.0.237) (*.net *.split)
2021-06-09 16:10:34 +0200bollu(~bollu@139.59.46.74) (*.net *.split)
2021-06-09 16:10:34 +0200monochrom(~trebla@216.138.220.146) (*.net *.split)
2021-06-09 16:10:34 +0200Xnuk(~xnuk@45.76.202.58) (*.net *.split)
2021-06-09 16:10:34 +0200dy(~dy@user/dy) (*.net *.split)
2021-06-09 16:10:34 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (*.net *.split)
2021-06-09 16:10:34 +0200biberu(~biberu@user/biberu) (*.net *.split)
2021-06-09 16:10:34 +0200Typedfern(~Typedfern@185.red-83-57-142.dynamicip.rima-tde.net) (*.net *.split)
2021-06-09 16:10:34 +0200hrnz(~ulli@cherry.hrnz.li) (*.net *.split)
2021-06-09 16:10:34 +0200tomjaguarpaw(~tom@li367-225.members.linode.com) (*.net *.split)
2021-06-09 16:10:34 +0200samebchase(~samebchas@51.15.68.182) (*.net *.split)
2021-06-09 16:10:34 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de) (*.net *.split)
2021-06-09 16:10:34 +0200earthy(~arthurvl@deban2.xs4all.space) (*.net *.split)
2021-06-09 16:10:34 +0200dibblego(~dibblego@haskell/developer/dibblego) (*.net *.split)
2021-06-09 16:10:34 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (*.net *.split)
2021-06-09 16:10:34 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (*.net *.split)
2021-06-09 16:10:34 +0200ptrcmd(~ptrcmd@user/ptrcmd) (*.net *.split)
2021-06-09 16:10:34 +0200zopsi(~zopsi@irc.dir.ac) (*.net *.split)
2021-06-09 16:10:34 +0200dustinm(~dustinm@static.38.6.217.95.clients.your-server.de) (*.net *.split)
2021-06-09 16:10:34 +0200dmwit(~dmwit@pool-96-255-233-247.washdc.fios.verizon.net) (*.net *.split)
2021-06-09 16:10:35 +0200monochrmmonochrom
2021-06-09 16:10:35 +0200bollu7bollu
2021-06-09 16:10:35 +0200otulp_otulp
2021-06-09 16:10:35 +0200abbie6abbie
2021-06-09 16:10:35 +0200biberu\biberu
2021-06-09 16:10:35 +0200dobblegodibblego
2021-06-09 16:10:35 +0200lambdap7lambdap
2021-06-09 16:10:42 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-09 16:10:51 +0200ddellacosta(~ddellacos@89.46.62.34)
2021-06-09 16:10:57 +0200fabfianda(~fabfianda@mob-5-90-243-109.net.vodafone.it)
2021-06-09 16:11:07 +0200Xnuk(~xnuk@45.76.202.58)
2021-06-09 16:11:10 +0200dy(~dy@user/dy)
2021-06-09 16:11:10 +0200thyriaen(~thyriaen@45.178.73.238) (Quit: Leaving)
2021-06-09 16:14:55 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-09 16:14:56 +0200Sgeo(~Sgeo@user/sgeo)
2021-06-09 16:16:03 +0200FragByte(~christian@user/fragbyte)
2021-06-09 16:16:16 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-06-09 16:16:54 +0200Codaraxis_(~Codaraxis@89.45.7.142) (Remote host closed the connection)
2021-06-09 16:17:42 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
2021-06-09 16:19:11 +0200 <delYsid> • GHC internal error: ‘fp’ is not in scope during type checking, but it passed the renamer
2021-06-09 16:19:15 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-06-09 16:19:20 +0200 <delYsid> there be dragons
2021-06-09 16:19:20 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7)
2021-06-09 16:19:36 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-06-09 16:19:48 +0200 <ski> @ghc
2021-06-09 16:19:49 +0200 <lambdabot> Command stack underflow at command
2021-06-09 16:20:33 +0200niko(~niko@libera/staff/niko)
2021-06-09 16:20:45 +0200xff0x_(~xff0x@185.65.135.235) (Ping timeout: 252 seconds)
2021-06-09 16:21:02 +0200derelict(~winter@2603-6011-f901-9e5b-78b5-8b2f-cdb2-4171.res6.spectrum.com)
2021-06-09 16:21:13 +0200skewerr(~spoonm@inaba.spoonm.org)
2021-06-09 16:21:25 +0200hrnz(~ulli@irc.plumbing)
2021-06-09 16:22:21 +0200xff0x_(~xff0x@2001:1a81:52c9:6b00:c9ec:1ec0:3ea4:2bb4)
2021-06-09 16:23:53 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-09 16:27:12 +0200brandonh(~brandonh@151.38.222.167)
2021-06-09 16:28:39 +0200just_some_noob6(~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net)
2021-06-09 16:28:55 +0200just_some_noob6(~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) ()
2021-06-09 16:31:59 +0200azeem(~azeem@176.201.21.77) (Read error: Connection reset by peer)
2021-06-09 16:32:12 +0200azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-09 16:32:31 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Quit: Leaving)
2021-06-09 16:33:55 +0200pagnol(~user@014198154145.ctinets.com)
2021-06-09 16:33:59 +0200troydm1(~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2021-06-09 16:34:11 +0200shailangsa(~shailangs@host86-186-177-181.range86-186.btcentralplus.com)
2021-06-09 16:34:15 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-06-09 16:34:23 +0200michalz(~michalz@185.246.204.114)
2021-06-09 16:36:10 +0200mastarija__(~mastarija@46.188.129.109)
2021-06-09 16:37:58 +0200wonko(~wjc@62.115.229.50) (Remote host closed the connection)
2021-06-09 16:38:29 +0200gentauro_(~gentauro@185.107.12.141) (Changing host)
2021-06-09 16:38:29 +0200gentauro_(~gentauro@user/gentauro)
2021-06-09 16:44:22 +0200 <delYsid> merijn: x fp = $(AppE <$> [| fromList |] <*> lift [| x |]) where x = $$(r fp) -- gives me a stage restriction. How do I pass an argument through?
2021-06-09 16:44:58 +0200 <delYsid> ugh, wait
2021-06-09 16:45:27 +0200 <delYsid> x fp = $(AppE <$> [| fromList |] <*> lift $$(r fp)) -- better, but same error
2021-06-09 16:45:58 +0200 <delYsid> r :: FilePath -> Q (TExp [D])
2021-06-09 16:46:06 +0200 <c_wraith> is r defined in the same file?
2021-06-09 16:46:12 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-09 16:46:13 +0200 <c_wraith> that's what the stage restriction is about
2021-06-09 16:46:13 +0200fabfianda(~fabfianda@mob-5-90-243-109.net.vodafone.it) (Read error: Connection reset by peer)
2021-06-09 16:46:26 +0200fabfianda(~fabfianda@net-93-148-121-206.cust.dsl.teletu.it)
2021-06-09 16:46:42 +0200 <delYsid> is there a way to wrap this up without creating *two* internal modules?
2021-06-09 16:46:43 +0200 <gentauro_> «Early June 8, a customer pushed *a valid configuration* change that included the specific circumstances that triggered the bug, which caused 85% of our network to return errors.» so a type error xD https://www.fastly.com/blog/summary-of-june-8-outage
2021-06-09 16:47:08 +0200 <c_wraith> delYsid: you could define r locally instead of at the top level
2021-06-09 16:47:20 +0200 <delYsid> ah
2021-06-09 16:47:42 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 252 seconds)
2021-06-09 16:47:45 +0200 <tdammers> obvious fix: grep for the number 85 in the codebase, and change all occurrences to 0
2021-06-09 16:48:41 +0200 <merijn> delYsid: You don't wanna $( the AppE, you just return that
2021-06-09 16:48:59 +0200 <merijn> At least, I think you don't
2021-06-09 16:49:11 +0200 <merijn> ah, wait, I see what's you're doing
2021-06-09 16:49:34 +0200 <delYsid> I think the problem is Exp vs TExp
2021-06-09 16:49:39 +0200 <merijn> delYsid: You wanna get rid of the outer $( and the use "$(x filepath)" somewhere
2021-06-09 16:49:55 +0200bontaq`(~user@ool-18e47f8d.dyn.optonline.net)
2021-06-09 16:50:28 +0200 <merijn> delYsid: Ah, you're mixing typed and untyped TH too
2021-06-09 16:50:43 +0200 <merijn> $$( is typed TH, but $( and [| are untyped TH
2021-06-09 16:50:49 +0200benin03(~benin@183.82.205.134)
2021-06-09 16:50:57 +0200benin03(~benin@183.82.205.134) (Client Quit)
2021-06-09 16:51:05 +0200 <merijn> delYsid: "lift $$(r fp)" is also suspificous
2021-06-09 16:51:20 +0200 <merijn> That looks like you just want "r fp", tbh
2021-06-09 16:51:21 +0200 <delYsid> yeah, I told you TH confuses me.
2021-06-09 16:51:23 +0200 <delYsid> But I am close
2021-06-09 16:51:37 +0200 <delYsid> AIUI, I have TExp cos I use liftTyped
2021-06-09 16:51:49 +0200 <delYsid> But I dunno how to get rid of it, $$(...) seemed to do the trick
2021-06-09 16:52:15 +0200 <merijn> delYsid: Let's rewind a bit. Part of the confusingness of TH is that you have *2* "runtimes" (the "runtime" of code that runs at compile time and "normal" runtime)
2021-06-09 16:52:29 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7) (Quit: Client closed)
2021-06-09 16:52:35 +0200 <delYsid> No instance for (Lift (Q (TExp [Opening])))
2021-06-09 16:52:50 +0200 <merijn> delYsid: The code that runs at compile time is just regular old boring Haskell. But it needs to (in the end) produce an AST that GHC "inserts" into the code that is being compiled
2021-06-09 16:53:06 +0200 <merijn> delYsid: The Q monad let's you 1) do IO and 2) query GHC about code/types
2021-06-09 16:53:08 +0200 <delYsid> I get that part
2021-06-09 16:53:38 +0200 <merijn> delYsid: $(x) takes "Q (TExp a)" and splices the AST produced by that Q action into that part of the code
2021-06-09 16:54:15 +0200 <merijn> delYsid: So "lift $$(r fp)" first runs 'r fp' (at compile time), then splices the AST into the code
2021-06-09 16:54:16 +0200 <delYsid> It only worked when I used $$, but I was only trying it out in ghci, so maybe the repl differs?
2021-06-09 16:54:49 +0200 <merijn> but then 'lift' tries to turn that AST into an AST again
2021-06-09 16:55:20 +0200gentauro_(~gentauro@user/gentauro) (Quit: leaving)
2021-06-09 16:55:21 +0200 <delYsid> Couldn't match type ‘TExp [Opening]’ with ‘Exp’
2021-06-09 16:55:25 +0200 <merijn> delYsid: So you end up trying to splice the AST of "Q (TExp a)" into your code
2021-06-09 16:55:31 +0200 <merijn> delYsid: Ok, that is easy to fix
2021-06-09 16:55:35 +0200gentauro(~gentauro@user/gentauro)
2021-06-09 16:55:51 +0200 <merijn> delYsid: Replace "[| x |]" with "[|| x ||]"
2021-06-09 16:56:11 +0200 <merijn> ([|| ||] is the typed quotes vs [| |] which produces untyped quotes)
2021-06-09 16:56:27 +0200 <delYsid> Couldn't match type ‘TExp (Q (TExp [Opening]))’ with ‘Exp’
2021-06-09 16:56:28 +0200bontaq`bontaq
2021-06-09 16:56:35 +0200 <merijn> can you pastebin the code?
2021-06-09 16:57:22 +0200 <delYsid> to be honest, no. I am stuck on a console
2021-06-09 16:58:33 +0200 <delYsid> The problem is still typed vs untyped, just that [|| x ||] doesnt help because I have no x, I have "r fp" which is Q (TExp [Opening])
2021-06-09 16:58:46 +0200 <merijn> hold, lemme slap something together
2021-06-09 16:59:16 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-06-09 16:59:33 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-09 16:59:46 +0200 <merijn> And then break it down
2021-06-09 17:00:04 +0200 <merijn> https://paste.tomsmeding.com/l6B1l0Pj
2021-06-09 17:00:22 +0200 <merijn> Ok, so the 'r' there is just regular boring old Haskell you know how to write, right?
2021-06-09 17:01:16 +0200 <delYsid> https://blind.guru/TH.hs
2021-06-09 17:01:27 +0200maerwald(~maerwald@user/maerwald) (Ping timeout: 252 seconds)
2021-06-09 17:01:30 +0200 <merijn> delYsid: Let's breakdown 'x', first we liftIO your boring old IO code into the Q monad. This means we execute *all* of 'r' at compile time (probably 'r' needs to be in a different module from 'x' due to stage restriction)
2021-06-09 17:02:04 +0200Lycurgusjust found googling "legible haskell" amusing
2021-06-09 17:02:05 +0200mastarija__(~mastarija@46.188.129.109) (Quit: Leaving)
2021-06-09 17:02:23 +0200 <merijn> So, 'x' is a TH function that produces a (typed) AST that represents a value of type 'YourType'
2021-06-09 17:02:32 +0200 <merijn> delYsid: Let's look at the parts
2021-06-09 17:02:33 +0200maerwald(~maerwald@mail.hasufell.de)
2021-06-09 17:02:43 +0200maerwald(~maerwald@mail.hasufell.de) (Changing host)
2021-06-09 17:02:43 +0200maerwald(~maerwald@user/maerwald)
2021-06-09 17:02:51 +0200 <merijn> "AppE" is a constructor from Exp which represents function application
2021-06-09 17:03:18 +0200 <delYsid> get that
2021-06-09 17:03:35 +0200favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-09 17:03:48 +0200 <merijn> [|| fromList ||] turns the 'fromList' function into 'Q (TExp (a -> b))', i.e. a quasiquote representing a function (probably 'Q (TExp ([k, v] -> HashMap k v)' here)
2021-06-09 17:04:13 +0200favonia(~favonia@user/favonia)
2021-06-09 17:04:16 +0200 <merijn> So we somehow need to get an AST for [(k, v)] to which we can apply fromList
2021-06-09 17:04:38 +0200 <merijn> delYsid: But what you *have* is not the AST for [(k, v)], but an *actual* list that 'r' just parsed
2021-06-09 17:05:08 +0200 <merijn> delYsid: So we need a function that goes '[(k, v)] -> Q (TExp [(k, v)])'
2021-06-09 17:05:22 +0200 <merijn> delYsid: Which is what liftTyped does
2021-06-09 17:05:48 +0200 <c_wraith> on sufficiently recent versions of GHC...
2021-06-09 17:05:54 +0200 <merijn> Now, since we have AppE and Q is a monad we can do our regular Applicative dance to combine them
2021-06-09 17:05:58 +0200 <c_wraith> I'm a bit sad how recent liftTyped is
2021-06-09 17:06:00 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a)
2021-06-09 17:06:02 +0200 <merijn> c_wraith: Same
2021-06-09 17:06:18 +0200 <merijn> c_wraith: But at least it's here now!
2021-06-09 17:07:12 +0200ski. o O ( "Cross-stage persistence" <http://okmij.org/ftp/ML/MetaOCaml.html#CSP> )
2021-06-09 17:07:14 +0200 <merijn> delYsid: So now that we have 'x' this way, all we need to do to embed your data is call (and splice the result) of 'x' into your actual code, which you'd do using something like 'compileTimeMap = $$(x "path/to/file")' in your code
2021-06-09 17:08:04 +0200 <merijn> delYsid: There's one catch, though. Which is: you cannot call code in the same module as 'x' from 'x' (so your 'r' function needs to be in a different module) and you cannot call 'x' in the module you define it (the stage restriction error before)
2021-06-09 17:08:31 +0200 <merijn> delYsid: Because GHC has to compile 'r' before it can compile 'x' and needs to compile 'x' before you can use it and doing that in the same module is hard
2021-06-09 17:09:22 +0200 <delYsid> Since I dont need r, is there a way to write x such that I dont need a second module?
2021-06-09 17:09:37 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving)
2021-06-09 17:10:10 +0200 <merijn> delYsid: Sure, you can have the code of 'r' inside 'x' itself, if it only uses library code
2021-06-09 17:10:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a) (Ping timeout: 264 seconds)
2021-06-09 17:11:10 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
2021-06-09 17:11:58 +0200 <merijn> delYsid: Something like https://paste.tomsmeding.com/NBPCg1ip
2021-06-09 17:12:13 +0200 <merijn> delYsid: assuming parseList is defined in another module
2021-06-09 17:12:25 +0200 <delYsid> I always hit the same issue. I have a TExp but my AppE wants an Exp
2021-06-09 17:12:58 +0200 <delYsid> the modern web is driving me crazy. try "lynx https://paste.tomsmeding.com/NBPCg1ip" and be welcome in my world.
2021-06-09 17:13:19 +0200wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-09 17:13:30 +0200chele_(~chele@user/chele)
2021-06-09 17:13:31 +0200fendor_(~fendor@178.165.130.85.wireless.dyn.drei.com)
2021-06-09 17:14:18 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2021-06-09 17:14:26 +0200hiptobecubic(~john@c-73-55-99-95.hsd1.fl.comcast.net)
2021-06-09 17:14:30 +0200ell4(~ellie@user/ellie)
2021-06-09 17:15:02 +0200kw`(~user@152.1.137.158)
2021-06-09 17:15:17 +0200nilof(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-09 17:15:32 +0200chele(~chele@user/chele) (Killed (lithium.libera.chat (Nickname regained by services)))
2021-06-09 17:15:32 +0200chele_chele
2021-06-09 17:15:52 +0200laguneucl(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295)
2021-06-09 17:16:05 +0200wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Client Quit)
2021-06-09 17:16:06 +0200spatchkaa__(~spatchkaa@S010600fc8da47b63.gv.shawcable.net)
2021-06-09 17:16:21 +0200poljar(~poljar@93-139-68-198.adsl.net.t-com.hr)
2021-06-09 17:16:34 +0200pavonia(~user@user/siracusa)
2021-06-09 17:16:59 +0200MidAutumnMoon3(~MidAutumn@user/midautumnmoon)
2021-06-09 17:17:11 +0200nshepperd24(~nshepperd@li364-218.members.linode.com)
2021-06-09 17:17:20 +0200 <delYsid> No instance for (Lift (Q (TExp (Q (TExp [Opening])))))
2021-06-09 17:17:25 +0200comerijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 17:17:25 +0200 <comerijn> It's weird that AppE doesn't work, though. It worked in my tests
2021-06-09 17:17:38 +0200 <delYsid> OK, its official, I am just too dumb. But thanks for trying.
2021-06-09 17:17:40 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-09 17:17:44 +0200averell-(~averell@user/averell)
2021-06-09 17:17:45 +0200 <comerijn> hmmm, how much of what I typed got lost?
2021-06-09 17:17:49 +0200wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-09 17:17:53 +0200pierrot(~pi@user/pierrot)
2021-06-09 17:18:20 +0200 <comerijn> delYsid: Naah, it's just unlucky that AppE works on TExp the last time I checked, but doesn't in the latest version
2021-06-09 17:18:54 +0200danidiaz1(~ESDPC@static-35-0-85-188.ipcom.comunitel.net)
2021-06-09 17:18:56 +0200fjmorazan_(~quassel@user/fjmorazan)
2021-06-09 17:19:07 +0200peutri_(~peutri@ns317027.ip-94-23-46.eu)
2021-06-09 17:19:13 +0200 <delYsid> Thats what I was trying to explain. I need a function TExp a -> Exp, somehow. AppE only works with Exp
2021-06-09 17:19:47 +0200nsilv1(~nsilv@212.103.198.210)
2021-06-09 17:19:55 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-06-09 17:19:55 +0200oxide_(~lambda@user/oxide)
2021-06-09 17:19:55 +0200 <comerijn> delYsid: What I typed before getting dropped was: Well, the easiest hack is to rewrite it to "AppE <$> [| fromList |] <*> lift result"
2021-06-09 17:19:58 +0200hueso_(~root@152.170.216.40)
2021-06-09 17:20:01 +0200 <delYsid> Or I just give up and do "fromList $(foo "file")" and call it a day.
2021-06-09 17:20:04 +0200 <comerijn> Which just avoids using typed TH at all
2021-06-09 17:20:06 +0200kmein(~weechat@user/kmein)
2021-06-09 17:20:10 +0200jackhill_(~jackhill@kalessin.dragonsnail.net)
2021-06-09 17:20:10 +0200xerox_(~edi@user/edi)
2021-06-09 17:20:18 +0200pbrisbin_(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-06-09 17:20:19 +0200slowButP1esent(~slowButPr@user/slowbutpresent)
2021-06-09 17:20:23 +0200wei2912_(~wei2912@112.199.250.21)
2021-06-09 17:20:26 +0200johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Ping timeout: 272 seconds)
2021-06-09 17:20:39 +0200 <comerijn> FYI "unType :: TExp a -> Exp" exists too
2021-06-09 17:20:45 +0200blades_(~blades@204.48.29.163)
2021-06-09 17:21:00 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:fef:c229:4466:542) (Ping timeout: 268 seconds)
2021-06-09 17:21:49 +0200codolio(~dolio@130.44.130.54)
2021-06-09 17:21:58 +0200pieguy128_(~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca)
2021-06-09 17:22:21 +0200 <delYsid> aha!
2021-06-09 17:22:31 +0200 <delYsid> just do lift and not liftTyped, and everything is fine.
2021-06-09 17:22:33 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-09 17:22:41 +0200dhouthoo_(~dhouthoo@178-117-36-167.access.telenet.be)
2021-06-09 17:22:56 +0200dy`(~dy@user/dy)
2021-06-09 17:24:12 +0200cwraith(~c_wraith@adjoint.us)
2021-06-09 17:24:58 +0200slowButPresent(~slowButPr@user/slowbutpresent) (*.net *.split)
2021-06-09 17:24:58 +0200fabfianda(~fabfianda@net-93-148-121-206.cust.dsl.teletu.it) (*.net *.split)
2021-06-09 17:24:58 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (*.net *.split)
2021-06-09 17:24:58 +0200pagnol(~user@014198154145.ctinets.com) (*.net *.split)
2021-06-09 17:24:58 +0200dy(~dy@user/dy) (*.net *.split)
2021-06-09 17:24:58 +0200Xnuk(~xnuk@45.76.202.58) (*.net *.split)
2021-06-09 17:24:58 +0200ell(~ellie@user/ellie) (*.net *.split)
2021-06-09 17:24:58 +0200nsilv(~nsilv@212.103.198.210) (*.net *.split)
2021-06-09 17:24:58 +0200chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr) (*.net *.split)
2021-06-09 17:24:58 +0200alx741(~alx741@181.196.69.18) (*.net *.split)
2021-06-09 17:24:58 +0200poljar1(~poljar@93-139-68-198.adsl.net.t-com.hr) (*.net *.split)
2021-06-09 17:24:58 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (*.net *.split)
2021-06-09 17:24:58 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (*.net *.split)
2021-06-09 17:24:58 +0200Natch(~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (*.net *.split)
2021-06-09 17:24:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (*.net *.split)
2021-06-09 17:24:58 +0200dhil(~dhil@195.213.192.47) (*.net *.split)
2021-06-09 17:24:58 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (*.net *.split)
2021-06-09 17:24:58 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (*.net *.split)
2021-06-09 17:24:58 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (*.net *.split)
2021-06-09 17:24:58 +0200ridcully(~ridcully@p508ac428.dip0.t-ipconnect.de) (*.net *.split)
2021-06-09 17:24:58 +0200danidiaz(~ESDPC@static-35-0-85-188.ipcom.comunitel.net) (*.net *.split)
2021-06-09 17:24:58 +0200blankhart(~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) (*.net *.split)
2021-06-09 17:24:58 +0200xerox(~edi@user/edi) (*.net *.split)
2021-06-09 17:24:58 +0200kmein_(~weechat@user/kmein) (*.net *.split)
2021-06-09 17:24:58 +0200pierrot_(~pi@user/pierrot) (*.net *.split)
2021-06-09 17:24:58 +0200MidAutumnMoon(~MidAutumn@user/midautumnmoon) (*.net *.split)
2021-06-09 17:24:58 +0200spatchkaa_(~spatchkaa@S010600fc8da47b63.gv.shawcable.net) (*.net *.split)
2021-06-09 17:24:58 +0200fendor(~fendor@178.165.130.85.wireless.dyn.drei.com) (*.net *.split)
2021-06-09 17:24:58 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (*.net *.split)
2021-06-09 17:24:58 +0200c_wraith(~c_wraith@adjoint.us) (*.net *.split)
2021-06-09 17:24:58 +0200wei2912(~wei2912@112.199.250.21) (*.net *.split)
2021-06-09 17:24:58 +0200fjmorazan(~quassel@user/fjmorazan) (*.net *.split)
2021-06-09 17:24:58 +0200motherfs1(~motherfsc@user/motherfsck) (*.net *.split)
2021-06-09 17:24:58 +0200oxide(~lambda@user/oxide) (*.net *.split)
2021-06-09 17:24:58 +0200kw(~user@152.1.137.158) (*.net *.split)
2021-06-09 17:24:58 +0200bruceleewees(~bruceleew@83.24.248.233.ipv4.supernova.orange.pl) (*.net *.split)
2021-06-09 17:24:58 +0200pieguy128(~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca) (*.net *.split)
2021-06-09 17:24:58 +0200blades(~blades@204.48.29.163) (*.net *.split)
2021-06-09 17:24:58 +0200averell(~averell@user/averell) (*.net *.split)
2021-06-09 17:24:58 +0200peutri(~peutri@ns317027.ip-94-23-46.eu) (*.net *.split)
2021-06-09 17:24:58 +0200jackhill(~jackhill@kalessin.dragonsnail.net) (*.net *.split)
2021-06-09 17:24:58 +0200sh9(~sh9@softbank060116136158.bbtec.net) (*.net *.split)
2021-06-09 17:24:58 +0200hueso(~root@152.170.216.40) (*.net *.split)
2021-06-09 17:24:58 +0200nshepperd2(~nshepperd@li364-218.members.linode.com) (*.net *.split)
2021-06-09 17:24:58 +0200dolio(~dolio@130.44.130.54) (*.net *.split)
2021-06-09 17:24:58 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (*.net *.split)
2021-06-09 17:25:00 +0200ell4ell
2021-06-09 17:25:00 +0200nshepperd24nshepperd2
2021-06-09 17:25:00 +0200MidAutumnMoon3MidAutumnMoon
2021-06-09 17:25:01 +0200Lord_of_Life_Lord_of_Life
2021-06-09 17:26:23 +0200Xnuk(~xnuk@45.76.202.58)
2021-06-09 17:26:39 +0200wroathe_wroathe
2021-06-09 17:26:50 +0200 <cwraith> delYsid: like, instead of the whole (AppE <$> [|| fromList ||] <*> liftTyped result) thing, just use [|| fromList result ||]
2021-06-09 17:27:01 +0200cwraithc_wraith
2021-06-09 17:27:44 +0200Natch(~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
2021-06-09 17:27:47 +0200comerijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-06-09 17:27:48 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-09 17:27:53 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7)
2021-06-09 17:28:09 +0200jneira(~jneira@166.red-81-39-172.dynamicip.rima-tde.net)
2021-06-09 17:29:00 +0200ridcully(~ridcully@p508ac428.dip0.t-ipconnect.de)
2021-06-09 17:29:00 +0200 <c_wraith> yes, I understand that looks weird. quote literals actually do different things depending on the scope of identifiers
2021-06-09 17:29:09 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2021-06-09 17:30:31 +0200 <c_wraith> it looks up fromList and finds the name is in scope at the top level. So it generates a VarE for that name. It looks up result and finds it's local, so it calls liftTyped on it
2021-06-09 17:30:47 +0200 <c_wraith> it calls liftTyped *on the value*, that is
2021-06-09 17:31:24 +0200alx741(~alx741@181.196.69.18)
2021-06-09 17:31:25 +0200 <c_wraith> That's actually one of the hardest parts of TH for me to wrap my head around - what the various name resolution rules inside a quote literal do
2021-06-09 17:31:29 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Ping timeout: 268 seconds)
2021-06-09 17:31:53 +0200motherfs1(~motherfsc@user/motherfsck)
2021-06-09 17:32:22 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-06-09 17:32:31 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-06-09 17:32:34 +0200dhil(~dhil@195.213.192.47)
2021-06-09 17:32:40 +0200bruceleewees(~bruceleew@83.24.248.233.ipv4.supernova.orange.pl)
2021-06-09 17:33:00 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.1)
2021-06-09 17:33:01 +0200sh9(~sh9@softbank060116136158.bbtec.net)
2021-06-09 17:33:04 +0200jippiedoe(~david@77-171-152-62.fixed.kpn.net) (Quit: Leaving)
2021-06-09 17:33:05 +0200pbrisbin_(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Quit: WeeChat 3.1)
2021-06-09 17:33:19 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-06-09 17:35:34 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-09 17:38:25 +0200agumonke`(~user@88.160.31.174)
2021-06-09 17:38:27 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 17:40:53 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-09 17:41:03 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2021-06-09 17:41:35 +0200 <delYsid> Haha. So TH works now, but I need to wait a few minutes till ghci loads the module.
2021-06-09 17:41:42 +0200 <delYsid> And building also takes a minute.
2021-06-09 17:43:02 +0200 <c_wraith> TH is not fast.
2021-06-09 17:43:12 +0200 <c_wraith> this is why I tend to avoid it when I can :)
2021-06-09 17:43:19 +0200 <c_wraith> even if that means writing lenses by hand :)
2021-06-09 17:45:13 +0200aerona(~aerona@2600:6c54:4600:f300:8401:a988:a361:a685)
2021-06-09 17:46:45 +0200fendor_fendor
2021-06-09 17:46:52 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-06-09 17:47:12 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 17:47:59 +0200ddellaco_(~ddellacos@89.46.62.69)
2021-06-09 17:48:20 +0200ddellacosta(~ddellacos@89.46.62.34) (Ping timeout: 264 seconds)
2021-06-09 17:49:33 +0200 <delYsid> If someone complains, I'll point them at merijn :-)
2021-06-09 17:49:48 +0200 <delYsid> But I learnt a bunch, thanks for that!"
2021-06-09 17:51:21 +0200wei2912_(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-06-09 17:52:13 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-09 17:55:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a)
2021-06-09 17:55:30 +0200ddellaco_(~ddellacos@89.46.62.69) (Ping timeout: 264 seconds)
2021-06-09 17:56:56 +0200ddellacosta(~ddellacos@86.106.121.108)
2021-06-09 17:59:21 +0200brandonh(~brandonh@151.38.222.167) (Quit: brandonh)
2021-06-09 18:00:02 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 18:01:08 +0200johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
2021-06-09 18:01:17 +0200nsilv1(~nsilv@212.103.198.210) (Quit: WeeChat 3.0.1)
2021-06-09 18:04:10 +0200azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-09 18:05:59 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 244 seconds)
2021-06-09 18:07:31 +0200ddellaco_(~ddellacos@89.46.62.73)
2021-06-09 18:08:45 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-09 18:09:04 +0200ddellac__(~ddellacos@86.106.121.26)
2021-06-09 18:09:18 +0200ddellacosta(~ddellacos@86.106.121.108) (Ping timeout: 264 seconds)
2021-06-09 18:10:46 +0200lucubratiuncula(~guiot@dynamic-adsl-84-220-161-37.clienti.tiscali.it)
2021-06-09 18:10:59 +0200mpt(~tom@2a02:908:1862:49e0::5) (Quit: WeeChat 3.1)
2021-06-09 18:11:36 +0200lucubratiuncula(~guiot@dynamic-adsl-84-220-161-37.clienti.tiscali.it) (Client Quit)
2021-06-09 18:11:48 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:190f:d7af:8eb9:1d14)
2021-06-09 18:12:11 +0200biberu(~biberu@user/biberu)
2021-06-09 18:12:42 +0200ddellaco_(~ddellacos@89.46.62.73) (Ping timeout: 244 seconds)
2021-06-09 18:13:02 +0200slowButP1esentslowButPresent
2021-06-09 18:13:34 +0200samebchase6samebchase
2021-06-09 18:15:08 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 18:15:17 +0200pe200012(~pe200012@183.236.83.76) (Ping timeout: 244 seconds)
2021-06-09 18:16:00 +0200knu(~knu@mue-88-130-62-022.dsl.tropolys.de)
2021-06-09 18:16:11 +0200jess(~jess@libera/staff/jess) ()
2021-06-09 18:16:41 +0200Baloo_(~Baloo_@45.83.220.183)
2021-06-09 18:16:44 +0200azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-09 18:17:42 +0200peutri_peutri
2021-06-09 18:18:29 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-06-09 18:19:07 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-09 18:21:21 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 18:21:26 +0200azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Ping timeout: 265 seconds)
2021-06-09 18:21:56 +0200ddellacosta(~ddellacos@86.106.121.46)
2021-06-09 18:24:31 +0200azeem(~azeem@176.201.21.77)
2021-06-09 18:24:44 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-06-09 18:24:54 +0200ddellac__(~ddellacos@86.106.121.26) (Ping timeout: 264 seconds)
2021-06-09 18:25:29 +0200 <knu> Hey, I'm a bit confused with the behavior of haddock concerning data families
2021-06-09 18:25:38 +0200sqrt2(~ben@80-108-18-7.cable.dynamic.surfer.at) (Read error: Connection reset by peer)
2021-06-09 18:26:01 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7) (Quit: Client closed)
2021-06-09 18:26:17 +0200 <knu> A module just defining instances won't list any of them in haddock, instead they are all in the module defining the data family
2021-06-09 18:26:54 +0200 <knu> But if write module Barf (module Barf) where it lists every instance, but says that these are patterns
2021-06-09 18:27:27 +0200sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net)
2021-06-09 18:28:07 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-06-09 18:28:43 +0200 <knu> are data family instances equivalent to patterns?
2021-06-09 18:31:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 18:32:06 +0200sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net) (Ping timeout: 264 seconds)
2021-06-09 18:33:15 +0200 <delYsid> aha! [|| fromList $$(x)) ||]
2021-06-09 18:33:18 +0200azeem(~azeem@176.201.21.77) (Ping timeout: 252 seconds)
2021-06-09 18:34:23 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 268 seconds)
2021-06-09 18:36:34 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-06-09 18:36:38 +0200__monty__(~toonn@user/toonn)
2021-06-09 18:37:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a) (Remote host closed the connection)
2021-06-09 18:38:29 +0200azeem(~azeem@176.200.249.22)
2021-06-09 18:39:03 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 244 seconds)
2021-06-09 18:41:38 +0200xerox_xerox
2021-06-09 18:46:46 +0200motherfs1motherfsck
2021-06-09 18:47:42 +0200azeem(~azeem@176.200.249.22) (Ping timeout: 264 seconds)
2021-06-09 18:49:05 +0200fvr(uid503686@id-503686.highgate.irccloud.com)
2021-06-09 18:49:47 +0200fvr(uid503686@id-503686.highgate.irccloud.com) ()
2021-06-09 18:50:22 +0200azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-09 18:50:34 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 18:51:54 +0200ikex(~ash@user/ikex)
2021-06-09 18:54:44 +0200 <ski> knu : huh ?
2021-06-09 18:55:24 +0200 <knu> Jup, it's quite baffling to me
2021-06-09 18:55:42 +0200wonko(~wjc@62.115.229.50)
2021-06-09 18:55:46 +0200 <monochrom> No, I'm sure ski means no one understands your question, it's incoherent.
2021-06-09 18:56:18 +0200 <knu> Oh, how could I clarify?
2021-06-09 18:56:20 +0200 <monochrom> Well, OK, I'll just speak for myself, I find it incoherent.
2021-06-09 18:56:27 +0200 <monochrom> Show actual code?
2021-06-09 18:56:41 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-09 18:57:17 +0200ozzymcdu1f(~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection)
2021-06-09 18:58:17 +0200 <knu> Hm, one moment, I'll upload a preview at hackage
2021-06-09 18:58:46 +0200ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com)
2021-06-09 18:59:40 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b) (Ping timeout: 268 seconds)
2021-06-09 18:59:56 +0200Hecate(~mariposa@user/hecate) (Quit: PissNet)
2021-06-09 19:02:02 +0200laguneucl(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295) (Ping timeout: 265 seconds)
2021-06-09 19:02:39 +0200Hecate(~mariposa@user/hecate)
2021-06-09 19:03:23 +0200 <knu> https://codeshare.io/zydqkN
2021-06-09 19:04:19 +0200 <knu> If I generate haddock for these three modules, in module A I'll see both instances, in module B I'll see nothing and in module C it says pattern Zonk :: Foo Bool
2021-06-09 19:05:29 +0200 <monochrom> Interesting.
2021-06-09 19:05:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a)
2021-06-09 19:05:59 +0200 <knu> And with PatternSynonyms enabled, I can import C (pattern Zonk)
2021-06-09 19:07:08 +0200 <knu> So I'm thinking, that in these cases, patterns and data family instances are the same
2021-06-09 19:07:49 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-09 19:09:23 +0200danidiaz(~ESDPC@static-35-0-85-188.ipcom.comunitel.net)
2021-06-09 19:09:29 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7)
2021-06-09 19:09:47 +0200 <knu> It get's worse:
2021-06-09 19:10:31 +0200econo(uid147250@user/econo)
2021-06-09 19:10:38 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-06-09 19:10:40 +0200 <monochrom> They are certainly not the same. You can't use PatternSynonyms to define data family instances.
2021-06-09 19:10:56 +0200 <knu> If I'm with ghci in module A, I can import B (Foo(Barf)) but I can not import C (Foo(Zonk))
2021-06-09 19:11:13 +0200danidiaz1(~ESDPC@static-35-0-85-188.ipcom.comunitel.net) (Ping timeout: 265 seconds)
2021-06-09 19:11:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (*.net *.split)
2021-06-09 19:11:39 +0200 <knu> It'll say, that C doesn't export Foo, so I can import it only by importing all of C or make a pattern import
2021-06-09 19:12:47 +0200 <monochrom> I agree with the compiler about "C doesn't export Foo". This one is basic.
2021-06-09 19:13:26 +0200 <knu> yes, but why doesn't he complain about import B (Foo(Barf))
2021-06-09 19:14:04 +0200 <knu> also, I can't import C (Zonk)
2021-06-09 19:14:47 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-09 19:16:47 +0200 <knu> I'm writing a lib with a lot of data family instances, which I'd like to split in different modules to have a clean namespace. Now I'm forced to choose between modules without haddock, modules in which haddock claims are only patterns and which aren't easily individually importable.
2021-06-09 19:17:28 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-09 19:17:51 +0200infinisi1(~infinisil@mail.infinisil.com) (Quit: Configuring ZNC, sorry for the joins/quits!)
2021-06-09 19:18:27 +0200infinisil(~infinisil@mail.infinisil.com)
2021-06-09 19:18:42 +0200 <knu> hm
2021-06-09 19:19:03 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Read error: Connection reset by peer)
2021-06-09 19:19:29 +0200 <ski> knu : i guess it might be implicitly defining a pattern synonym `Zonk' for `Foo Bool' ?
2021-06-09 19:19:37 +0200 <maerwald> monochrom: did you follow the HasCallstack base/Data.List RFC? I'm wondering what you think about the `Partial` typeclass approach that was brought up (and is used by purescript it seems)
2021-06-09 19:19:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-06-09 19:20:16 +0200 <monochrom> I didn't.
2021-06-09 19:20:17 +0200 <ski> knu : try `module C (module A,module C) where ...' and then try `import C (Foo(Zonk))' ?
2021-06-09 19:20:25 +0200spatchkaa__spatchkaa
2021-06-09 19:20:52 +0200 <maerwald> https://mail.haskell.org/pipermail/libraries/2021-June/031292.html
2021-06-09 19:21:00 +0200 <monochrom> What is the semantics of Partial?
2021-06-09 19:21:11 +0200 <maerwald> I find it very foggy
2021-06-09 19:21:24 +0200 <maerwald> something like "may call `error`... or not"
2021-06-09 19:21:27 +0200spatchkaa(~spatchkaa@S010600fc8da47b63.gv.shawcable.net) (Quit: Leaving)
2021-06-09 19:21:32 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-09 19:21:38 +0200 <knu> @ski: Yes, I've tried that one. In this case the import works. In haddock I'll get the data family with both instances and additionally the pattern Zonk
2021-06-09 19:21:38 +0200 <lambdabot> Unknown command, try @list
2021-06-09 19:22:08 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-09 19:22:32 +0200 <ski> knu : does that solve your problem ?
2021-06-09 19:22:37 +0200 <knu> So this would be my third option, which would nuke my haddocks, because my data families have about 100 instances
2021-06-09 19:22:50 +0200 <ski> knu : also, what if you try `module C (Foo,module C) where ...' ?
2021-06-09 19:22:59 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-09 19:23:00 +0200 <knu> Same result
2021-06-09 19:23:05 +0200 <monochrom> This is deja vu. I think I saw this in a dream some years ago...
2021-06-09 19:23:33 +0200 <maerwald> quite possible
2021-06-09 19:24:09 +0200 <monochrom> Unlike IsPartial, HasCallBack does not automatically propagate.
2021-06-09 19:24:43 +0200ski. o O ( `promiseTotal :: (IsPartial => a) -> a' )
2021-06-09 19:25:00 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 252 seconds)
2021-06-09 19:25:04 +0200 <maerwald> ski: yeah...which may completely lie
2021-06-09 19:25:09 +0200 <ski> obviously
2021-06-09 19:25:21 +0200 <maerwald> refactored out some stuff, forgot to remove it
2021-06-09 19:25:23 +0200 <maerwald> oops
2021-06-09 19:25:46 +0200 <maerwald> it's basically unsafePerformIO from a different angle
2021-06-09 19:25:55 +0200fabfianda(~fabfianda@mob-5-90-243-109.net.vodafone.it)
2021-06-09 19:26:11 +0200 <maerwald> you have to do proper local reasoning for it to be correct
2021-06-09 19:26:23 +0200 <monochrom> I think I'm on the fence for this. And regardless of any detail refinement such as "does it propagate?" "does it have actual semantic behaviour?" "how annoying is it going to be?"
2021-06-09 19:26:31 +0200ski. o O ( "If you lie to the compiler, the compiler will get its revenge!" )
2021-06-09 19:26:46 +0200Morrow(~Morrow@37.142.145.18)
2021-06-09 19:26:54 +0200 <ski> maerwald : except it's clearer on what the proof obligation is
2021-06-09 19:27:05 +0200 <maerwald> ski: is it?
2021-06-09 19:27:29 +0200 <maerwald> foo :: FilePath -> IO () -- what if this crashes on non-absolute paths?
2021-06-09 19:27:33 +0200 <maerwald> does it make it partial?
2021-06-09 19:28:10 +0200 <maerwald> wait... now, does it call `error` or `throwIO`, or...
2021-06-09 19:28:14 +0200 <maerwald> and, does the user care?
2021-06-09 19:28:17 +0200 <monochrom> "partial" is not a notion for effects. At least by my definitions.
2021-06-09 19:28:23 +0200 <ski> insofar as the partiality of the relevant operation is specified, at least
2021-06-09 19:28:31 +0200 <maerwald> monochrom: SPJ seemed to consider it an effect
2021-06-09 19:28:32 +0200 <ski> maerwald : imho, no
2021-06-09 19:28:45 +0200 <ski> partiality is a side-effect
2021-06-09 19:28:57 +0200 <maerwald> uuuhm
2021-06-09 19:28:59 +0200 <ski> ("no", to "does it make it partial?")
2021-06-09 19:29:00 +0200Morrow(~Morrow@37.142.145.18) (Read error: Connection reset by peer)
2021-06-09 19:29:30 +0200 <monochrom> Err wait, nevermind, foo can still be partial from the POV of math function X->Y under Y=IO()
2021-06-09 19:29:36 +0200 <ski> (just like nontermination is a side-effect)
2021-06-09 19:29:43 +0200 <knu> @ski: module C (module A, module C) where actually solves my issue in the prettiest way
2021-06-09 19:29:43 +0200 <lambdabot> Unknown command, try @list
2021-06-09 19:29:50 +0200 <knu> thanks
2021-06-09 19:30:04 +0200 <ski> `foo undefined' would be partial, though
2021-06-09 19:30:13 +0200 <ski> knu : i was just about to ask if your issue was resolved
2021-06-09 19:30:26 +0200 <zzz> imagine i have some type T = TA Bool | TB Bool and i want to have a list [T] where all T values alternate between True and False. Is there a way I can express this constraint at the type level?
2021-06-09 19:30:26 +0200Morrow(~Morrow@31.154.96.164)
2021-06-09 19:30:35 +0200 <maerwald> monochrom: yeah, there are multiple ways to interpret this
2021-06-09 19:30:40 +0200 <knu> ski: not perfectly, but it's the best solution until now
2021-06-09 19:30:43 +0200 <ski> okay
2021-06-09 19:30:53 +0200 <knu> it still claims to export a lot of patterns
2021-06-09 19:30:57 +0200 <ski> zzz : not alternate between `TA' and `TB', then ?
2021-06-09 19:31:11 +0200 <knu> but I can import them at least without using a pragma
2021-06-09 19:31:22 +0200 <zzz> ski: no, so [TA True, TA False, TA True...] would be valid
2021-06-09 19:31:50 +0200 <knu> and it doesn't spam the documentation with every instance
2021-06-09 19:31:55 +0200 <ski> zzz : how about only storing the initial `Bool', and then a list of `TA's/`TB's, with no `Bool's in them ?
2021-06-09 19:32:22 +0200 <monochrom> I realize that I don't know what to make of: haha :: IO (); haha = do { x <- getLine; print (head x) }
2021-06-09 19:32:47 +0200 <ski> possibly partial
2021-06-09 19:32:56 +0200 <monochrom> Firstly it is not a function. Secondly it is not bottom of IO(). But it still bottoms out.
2021-06-09 19:32:58 +0200 <maerwald> Maybe Partial => IO ()
2021-06-09 19:33:41 +0200 <ski> partial on some executions. just like `head' is partial, for some calls to it
2021-06-09 19:33:52 +0200 <monochrom> At which point my usual reaction is "these are useless dichotomies: bottom vs non-bottom, function vs non-function value, partial vs total"
2021-06-09 19:34:05 +0200 <maerwald> everything is a...?
2021-06-09 19:34:35 +0200 <ski> do we need another word for a "dichotomy" which is not decidable, but only observable / semi-decidable ?
2021-06-09 19:34:58 +0200 <monochrom> No.
2021-06-09 19:35:22 +0200 <monochrom> Some undecidable dichotomies are still useful.
2021-06-09 19:35:26 +0200 <ski> knu : btw, i wonder whether `module C (module A,Foo (Zonk)) where ...' would work, too
2021-06-09 19:35:50 +0200 <monochrom> At least, useful for stating useful undecidable problems? haha
2021-06-09 19:36:40 +0200 <maerwald> Anyway, HasCallStack seems much less controversial, but some consider this will have negative effect on... teaching
2021-06-09 19:38:12 +0200 <monochrom> This is because HasCallStack is not nagware but IsPartial is.
2021-06-09 19:40:04 +0200 <monochrom> But I may like to hear how HasCallStack can be negative for teaching.
2021-06-09 19:41:10 +0200 <monochrom> "module C(Foo(Zonk))" should be just fine, but I haven't tested.
2021-06-09 19:41:12 +0200chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr)
2021-06-09 19:41:32 +0200 <maerwald> monochrom: https://mail.haskell.org/pipermail/libraries/2021-June/031281.html
2021-06-09 19:41:35 +0200 <maerwald> there are the arguments
2021-06-09 19:41:57 +0200 <monochrom> I am just reading https://downloads.haskell.org/~ghc/8.10.5/docs/html/users_guide/glasgow_exts.html#import-and-export
2021-06-09 19:42:23 +0200 <monochrom> Thanks maerwald
2021-06-09 19:42:33 +0200 <knu> ski: just checked, importing works fine, but haddock now lists Foo with every instance, not only Zonk. At least, there is nothing about patterns.
2021-06-09 19:43:42 +0200Morrow(~Morrow@31.154.96.164) (Ping timeout: 252 seconds)
2021-06-09 19:44:04 +0200 <ski> knu : "now lists Foo with every instance, not only Zonk" -- is that preferrable ?
2021-06-09 19:44:34 +0200 <knu> for my case no
2021-06-09 19:44:40 +0200 <tomsmeding> delYsid: Sorry to see you having trouble with the paste site! I see I apparently forgot to send a content-type of text/html (that's now fixed). Are there other specific things that don't work for you?
2021-06-09 19:45:04 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 19:45:08 +0200 <knu> there a lot of instances, so it should only list importable instances
2021-06-09 19:45:33 +0200 <tomsmeding> incidentally, for the cases where I use a text-mode browser, I use elinks rather than lynx because it has better support for various web constructs, but I don't know what works for you
2021-06-09 19:47:15 +0200danidiaz1(~ESDPC@static-35-0-85-188.ipcom.comunitel.net)
2021-06-09 19:47:24 +0200 <monochrom> I ditched lynx for elinks too.
2021-06-09 19:47:41 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 19:47:44 +0200 <monochrom> lynx makes you remember hotkeys. elinks offers a browsable menu.
2021-06-09 19:48:08 +0200 <tomsmeding> also, the line numbers table on my paste site works in elinks whereas it doesn't in lynx :p
2021-06-09 19:48:55 +0200 <monochrom> The problem with hotkeys is the long tail. There are a lot of hotkeys you use infrequently enough that you will never remember, but still frequent enough that you still actually need.
2021-06-09 19:49:26 +0200sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net)
2021-06-09 19:49:35 +0200 <monochrom> The only merit of lynx is first-to-market, as usual.
2021-06-09 19:49:38 +0200Izem(~Izem@bras-base-london1483w-grc-38-65-95-41-91.dsl.bell.ca)
2021-06-09 19:49:50 +0200danidiaz(~ESDPC@static-35-0-85-188.ipcom.comunitel.net) (Ping timeout: 244 seconds)
2021-06-09 19:49:53 +0200 <monochrom> and stronger propaganda.
2021-06-09 19:49:55 +0200 <Izem> what are type annotations in Haskell, expressions?
2021-06-09 19:50:05 +0200 <Rembane_> Izem: No, they are type annotations.
2021-06-09 19:50:14 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-09 19:50:17 +0200 <monochrom> type expressions >:)
2021-06-09 19:50:36 +0200 <monochrom> "everything is an expression"
2021-06-09 19:50:48 +0200 <Izem> ok, I suppose they are just newline delimited also?
2021-06-09 19:50:55 +0200 <tomsmeding> except the things that aren't :p
2021-06-09 19:51:11 +0200 <monochrom> yes until you find out about semicolon
2021-06-09 19:51:18 +0200 <boxscape> I'd say depending on whether they're inline type annotations or type annotations belonging to a declaration, they can be part of an expression or part of a declaration. But they are not these things by themselves
2021-06-09 19:51:19 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 19:51:24 +0200pera(~pera@user/pera) (Ping timeout: 252 seconds)
2021-06-09 19:52:05 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 19:52:13 +0200 <Izem> haskell doesn't seem use semi colon insertion
2021-06-09 19:52:13 +0200 <monochrom> I agree with boxscape.
2021-06-09 19:52:25 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 244 seconds)
2021-06-09 19:52:26 +0200 <Izem> so I guess they are just used in specific places
2021-06-09 19:53:19 +0200 <boxscape> Izem semicolons and braces can be used optionally instead of newlines and indentation
2021-06-09 19:53:20 +0200 <boxscape> % let {semicolon = ";"; colon = ":"} in do {print semicolon; print colon}
2021-06-09 19:53:20 +0200 <yahb> boxscape: ";"; ":"
2021-06-09 19:54:13 +0200 <Izem> impressive
2021-06-09 19:54:27 +0200 <ski> Izem : type signatures are one thing, type ascriptions another
2021-06-09 19:54:56 +0200 <Izem> the former is for functions, the later for simple variables?
2021-06-09 19:55:05 +0200 <ski> no
2021-06-09 19:55:23 +0200 <ski> undefinedBool :: Bool
2021-06-09 19:55:29 +0200 <ski> undefinedBool = undefined :: Bool
2021-06-09 19:55:52 +0200 <Izem> ok
2021-06-09 19:56:00 +0200 <Izem> that looks like a type declaration
2021-06-09 19:56:02 +0200 <ski> the first line is a type signature. the expression (body of the definition, after the `=') on the second line is a type ascription
2021-06-09 19:56:23 +0200 <Izem> have not seen anyone use the word ascription :P
2021-06-09 19:56:40 +0200 <boxscape> (I haven't, either)
2021-06-09 19:57:05 +0200 <ski> data Bool = False | True -- this is a data type declaration (and definition)
2021-06-09 19:57:09 +0200 <boxscape> the haskell report uses type signature for it
2021-06-09 19:57:23 +0200 <boxscape> ("expression type signature", to be precise)
2021-06-09 19:57:48 +0200 <Izem> why did they need a data keyword to distinguish?
2021-06-09 19:58:02 +0200 <ski> it's also possible (with extension), to put an ascription on a pattern
2021-06-09 19:58:15 +0200 <ski> idBool (b :: Bool) = b
2021-06-09 19:58:26 +0200 <ski> or, inside `do' :
2021-06-09 19:58:36 +0200 <ski> b :: Bool <- readLn
2021-06-09 19:58:49 +0200 <ski> or in a lambda expression
2021-06-09 19:59:00 +0200 <ski> \ (b :: Bool) -> ..b..
2021-06-09 19:59:03 +0200 <boxscape> % True = False
2021-06-09 19:59:03 +0200 <yahb> boxscape:
2021-06-09 19:59:04 +0200 <boxscape> hm
2021-06-09 19:59:06 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 19:59:11 +0200 <boxscape> gonna put this at the top level of my next file
2021-06-09 19:59:44 +0200 <ski> Izem : `data' is for declaring data types. there's also `newtype' and `type', which also declares types
2021-06-09 20:00:09 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 20:00:31 +0200 <ski> % let !True = False
2021-06-09 20:00:31 +0200 <yahb> ski: *** Exception: <interactive>:7:5-17: Non-exhaustive patterns in True
2021-06-09 20:00:48 +0200 <Izem> ok, so I suspect there are different classes of types
2021-06-09 20:01:02 +0200 <Izem> data is for algebraic data types iirc
2021-06-09 20:01:26 +0200 <ski> `type' declares a new name (possibly parameterized) for an existing type. a type synonym
2021-06-09 20:02:07 +0200 <ski> `data' and `newtype' declares new types, together with ways to construct values of the new type
2021-06-09 20:02:15 +0200 <Izem> does haskell have symbols?
2021-06-09 20:02:22 +0200 <Izem> no need right?
2021-06-09 20:02:23 +0200 <ski> Izem : yes (algebraic data types)
2021-06-09 20:02:26 +0200 <ski> no symbols
2021-06-09 20:02:28 +0200 <Izem> ah kk
2021-06-09 20:02:42 +0200 <ski> you can use constant data constructors, mostly
2021-06-09 20:02:53 +0200 <Izem> interesting
2021-06-09 20:03:15 +0200 <ski> data Weekday = Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday
2021-06-09 20:03:45 +0200 <Izem> are True and False special?
2021-06-09 20:04:18 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 20:04:20 +0200 <edmundnoble_> Nope
2021-06-09 20:04:26 +0200 <edmundnoble_> `data Bool = True | False`
2021-06-09 20:04:26 +0200 <boxscape> only in the sense that they are used by a few builtin constructs, but Bool is declared as a regular type
2021-06-09 20:04:39 +0200 <edmundnoble_> ^
2021-06-09 20:05:39 +0200 <DigitalKiwi> data Bool = True | False | FileNotFound
2021-06-09 20:05:56 +0200 <edmundnoble_> If you want to define a new datatype, it will be with either `data` or `newtype`, and `newtype` only has subtle operational differences from `data`, it's not fundamentally different at all
2021-06-09 20:07:11 +0200 <edmundnoble_> Type aliases, defined with `type`, have no semantic content and with the exception of a few small things (like error messages changing) could be implemented entirely with preprocessor directives replacing the alias with its contents
2021-06-09 20:07:14 +0200 <ski> Izem : well, there's `OverloadedLabels' <https://downloads.haskell.org/~ghc/8.10.5/docs/html/users_guide/glasgow_exts.html#extension-Overlo…>
2021-06-09 20:07:18 +0200 <edmundnoble_> (er, definition, more than contents)
2021-06-09 20:07:52 +0200 <ski> @src Bool
2021-06-09 20:07:52 +0200 <lambdabot> data Bool = False | True deriving (Eq, Ord)
2021-06-09 20:08:16 +0200 <Izem> cool
2021-06-09 20:08:25 +0200 <ski> (`False' comes before `True', in the `Ord' instance (and also in `Enum',`Bounded' and `Ix')
2021-06-09 20:09:39 +0200 <ski> `Bool' has special support in the `if'-`then'-`else' syntactic sugar (one could just as well use `case'-`of'), and in guards (occuring in pattern-matching, and in list comprehensions)
2021-06-09 20:09:39 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-09 20:09:45 +0200 <vaibhavsagar[m]> can I have a `hie.yaml` configuration that specifies both cabal and stack?
2021-06-09 20:10:19 +0200 <delYsid> tomsmeding: Oh, very cool you just picked that up from chatlog! If you send me a link, I can recheck
2021-06-09 20:10:24 +0200 <vaibhavsagar[m]> this project (https://github.com/Avi-D-coder/implicit-hie) seems to have two different files that need to be moved into the correct place
2021-06-09 20:10:34 +0200 <Izem> what's the difference between case-of and guards?
2021-06-09 20:10:48 +0200 <ephemient> if-then-else desugars to case-of in core, IIRC
2021-06-09 20:11:14 +0200 <ski> what's the difference between an apple and a saxophone ?
2021-06-09 20:11:25 +0200 <ski> they are not directly comparable
2021-06-09 20:11:38 +0200 <boxscape> Izem case-of is used to check whether a value has a certain structure, i.e. which constructors its made up of. Guards are used to check arbitrary boolean conditions
2021-06-09 20:11:52 +0200 <Izem> I see
2021-06-09 20:11:59 +0200 <ski> guards can occur both in `case'-`of', and in "ordinary" function parameter pattern-matching
2021-06-09 20:12:01 +0200 <tomsmeding> delYsid: I guess the same links works :) https://paste.tomsmeding.com/NBPCg1ip
2021-06-09 20:12:16 +0200 <vaibhavsagar[m]> guards desugar to case-of too IIRC
2021-06-09 20:12:29 +0200 <Izem> interesting
2021-06-09 20:12:51 +0200 <Izem> guard clauses are really novel
2021-06-09 20:13:15 +0200cactinoob(~cactinoob@adsl-64-237-237-9.prtc.net)
2021-06-09 20:13:27 +0200 <ski> @src filter
2021-06-09 20:13:27 +0200 <lambdabot> filter _ [] = []
2021-06-09 20:13:27 +0200 <lambdabot> filter p (x:xs)
2021-06-09 20:13:27 +0200 <lambdabot> | p x = x : filter p xs
2021-06-09 20:13:27 +0200 <lambdabot> | otherwise = filter p xs
2021-06-09 20:13:41 +0200 <ski> this is equivalent to
2021-06-09 20:14:03 +0200 <ski> filter p xs0 = case xs0 of
2021-06-09 20:14:43 +0200 <ski> [ ] -> [ ]
2021-06-09 20:14:49 +0200 <ski> x:xs
2021-06-09 20:15:04 +0200 <ski> | p x -> x : filter p xs
2021-06-09 20:15:23 +0200 <ski> | otherwise -> filter p xs
2021-06-09 20:16:08 +0200 <Izem> thanks
2021-06-09 20:16:08 +0200ikex(~ash@user/ikex) (Ping timeout: 268 seconds)
2021-06-09 20:18:31 +0200 <ski> Miranda had guards. i'd guess ISWIM had them, too
2021-06-09 20:19:08 +0200kaizen(uid501599@id-501599.brockwell.irccloud.com)
2021-06-09 20:19:34 +0200 <Izem> yep, though they are different than haskell
2021-06-09 20:19:48 +0200 <Izem> it's like `foo, if bar`
2021-06-09 20:20:17 +0200 <delYsid> tomsmeding: Woohoo! Thanks for fixing the web! :-)
2021-06-09 20:20:23 +0200 <delYsid> (IOW, works for me now)
2021-06-09 20:20:38 +0200 <tomsmeding> delYsid: the line numbers are still kind of borked in lynx, but at least you can read the code :)
2021-06-09 20:21:06 +0200 <delYsid> yeah, about 90% of all paste thingies have the same line number problem, so I guess thats fine
2021-06-09 20:21:16 +0200 <tomsmeding> (they work in elinks)
2021-06-09 20:21:31 +0200 <tomsmeding> (suggests to me that perhaps lynx has some weird handling of html tables)
2021-06-09 20:22:11 +0200 <delYsid> Interesting. I am too old to change browsers, but I really need to remember that one
2021-06-09 20:22:54 +0200 <ski> hm, on a quick scan through Peter J. Landin's "The Next 700 Programming Languages" in 1966-03 at <http://thecorememory.com/Next_700.pdf>, i don't see guards, just conditionals
2021-06-09 20:23:06 +0200 <ski> Izem : yep
2021-06-09 20:23:26 +0200 <delYsid> Now, if someone could fix hackage source links please ... it drives me crazy not being able to casually look at sources, always have to fetch with git and find the reference by hand...
2021-06-09 20:23:39 +0200 <delYsid> But I guess that train has left the station.
2021-06-09 20:26:00 +0200 <sm[m]> delYsid: I use haddock's "source" links on hackage all the time
2021-06-09 20:26:56 +0200 <tomsmeding> sm[m]: in a text-mode browser they suck heavily because the tooltips are inlined
2021-06-09 20:27:07 +0200 <sm[m]> ah
2021-06-09 20:27:30 +0200tomsmedingwonders how hard it would be to make a basic proxy that filters out those tooltips
2021-06-09 20:27:37 +0200 <sm[m]> Haskell Foundation is keen on accessibility, it could be worth raising on discourse
2021-06-09 20:27:44 +0200 <tomsmeding> delYsid: ^
2021-06-09 20:30:28 +0200fabfianda(~fabfianda@mob-5-90-243-109.net.vodafone.it) (Read error: Connection reset by peer)
2021-06-09 20:30:36 +0200 <boxscape> I wish haddock source links worked across packages
2021-06-09 20:30:41 +0200alphacath(~alpha@host-79-36-63-89.retail.telecomitalia.it)
2021-06-09 20:30:58 +0200 <boxscape> I guess that's not really feasible?
2021-06-09 20:31:31 +0200 <Rembane_> I don't think I know the problem good enough, so I think it's 100% feasible.
2021-06-09 20:31:47 +0200 <boxscape> nice
2021-06-09 20:33:08 +0200alphacath(~alpha@host-79-36-63-89.retail.telecomitalia.it) ()
2021-06-09 20:33:13 +0200 <Rembane_> Because every package knows which other packages it depends on, and if those packages are available somewhere that's linkable, it should be possible to create a link to that place. Either locally or on hackage.
2021-06-09 20:34:12 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-09 20:34:25 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-09 20:34:28 +0200 <boxscape> hmm I suppose the hackage URLs are pretty stable
2021-06-09 20:35:31 +0200 <tomsmeding> sometimes I see hackage links in doc text that are supposed to go to a different package, but that seem to "strip off one path component too little"
2021-06-09 20:35:51 +0200 <tomsmeding> so you get pkgA-1.0/pkgB-1.0/module.html
2021-06-09 20:36:18 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 20:36:20 +0200 <boxscape> interestingly the source link for Bool points to a different package (ghc-prim) https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Bool.html#t:Bool
2021-06-09 20:36:22 +0200 <boxscape> but it 404s
2021-06-09 20:36:40 +0200 <boxscape> tomsmeding oh it does exactly what you're saying
2021-06-09 20:37:21 +0200 <tomsmeding> oh the whole link is also wrong
2021-06-09 20:37:41 +0200 <tomsmeding> it goes to base-4.15.0.0/ghc-prim-0.7.0/src/GHC-Types.html#Bool but the correct path is ghc-prim-0.7.0/docs/src/GHC-Types.html#Bool
2021-06-09 20:37:44 +0200 <tomsmeding> note the /docs/
2021-06-09 20:37:46 +0200 <boxscape> yeah
2021-06-09 20:37:56 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 20:38:01 +0200 <tomsmeding> wonder how that happens
2021-06-09 20:38:37 +0200Deide(~Deide@wire.desu.ga)
2021-06-09 20:38:37 +0200Deide(~Deide@wire.desu.ga) (Changing host)
2021-06-09 20:38:37 +0200Deide(~Deide@user/deide)
2021-06-09 20:41:44 +0200Bartosz(~textual@24.35.90.211) (Client Quit)
2021-06-09 20:42:23 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 20:43:39 +0200pgib(~textual@173.38.117.92)
2021-06-09 20:43:58 +0200jco(~jco@c83-248-173-38.bredband.tele2.se)
2021-06-09 20:44:00 +0200knu(~knu@mue-88-130-62-022.dsl.tropolys.de) (Quit: Connection closed)
2021-06-09 20:44:45 +0200MQ-17J(~MQ-17J@8.21.10.116) (Ping timeout: 252 seconds)
2021-06-09 20:45:03 +0200MQ-17J(~MQ-17J@8.21.10.116)
2021-06-09 20:45:20 +0200 <zzz> can i have an IntMap where the keys are newtype T = T Int ?]
2021-06-09 20:45:32 +0200beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net)
2021-06-09 20:46:08 +0200 <xerox> zzz: I use this for that purpose https://github.com/minoki/unboxing-vector
2021-06-09 20:47:09 +0200 <xerox> (it's not exactly what you asked for if the container being a Map matters more than it being indexed with a newtype transparently)
2021-06-09 20:47:17 +0200 <jco> Hello, I'm fooling around a bit with trying to convert .edn to .json. Is there a better way to handle the possibility of error when loading a file, than what I do here: http://ix.io/3pnN? I created a `ExceptT` type alias there, to be able to just `throwError` if anything goes wrong.
2021-06-09 20:50:06 +0200 <zzz> xerox: thanks im taking a look. however i really just wanted a newtype indexed IntMap
2021-06-09 20:51:19 +0200MQ-17J(~MQ-17J@8.21.10.116) (Ping timeout: 244 seconds)
2021-06-09 20:51:36 +0200MQ-17J(~MQ-17J@8.21.10.116)
2021-06-09 20:52:02 +0200 <lyxia> jco: you could throw the exception in IO
2021-06-09 20:57:01 +0200zeenk(~zeenk@2a02:2f04:a310:b600:b098:bf18:df4d:4c41) (Quit: Konversation terminated!)
2021-06-09 20:57:50 +0200 <jco> lyxia: OK, makes it bit simpler yes.
2021-06-09 21:00:33 +0200v01d4lph4(~v01d4lph4@122.160.65.250)
2021-06-09 21:00:33 +0200v01d4lph4(~v01d4lph4@122.160.65.250) (Changing host)
2021-06-09 21:00:33 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-09 21:01:37 +0200 <dminuoso> tomsmeding: I cant help but wonder whether ^ is meaningful to delYsid.
2021-06-09 21:01:53 +0200Izem(~Izem@bras-base-london1483w-grc-38-65-95-41-91.dsl.bell.ca) ()
2021-06-09 21:02:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 21:03:02 +0200 <tomsmeding> dminuoso: I wondered that too after sending the message
2021-06-09 21:04:12 +0200lavaman(~lavaman@98.38.249.169)
2021-06-09 21:05:06 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 252 seconds)
2021-06-09 21:05:28 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2021-06-09 21:05:50 +0200 <jco> OK, another question, more related to how to avoid pyramids of doom when doing error handling: http://ix.io/3pnX. There's a better way to write that, right?
2021-06-09 21:08:28 +0200 <lyxia> Re the haddock tooltips issue, it's a known issue https://github.com/haskell/haddock/issues/1250
2021-06-09 21:15:14 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 21:15:51 +0200danso(~danso@modemcable156.91-20-96.mc.videotron.ca)
2021-06-09 21:18:58 +0200danso(~danso@modemcable156.91-20-96.mc.videotron.ca) (Read error: Connection reset by peer)
2021-06-09 21:18:59 +0200dan-so(~danso@modemcable156.91-20-96.mc.videotron.ca)
2021-06-09 21:19:52 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 21:23:00 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-09 21:23:33 +0200gehmehgeh_(~user@user/gehmehgeh)
2021-06-09 21:24:05 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-06-09 21:29:08 +0200ramon(~ramon@user/ramon) (Ping timeout: 264 seconds)
2021-06-09 21:29:44 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 21:30:04 +0200infandum(~user@207.44.105.67.res-cmts.all2.ptd.net)
2021-06-09 21:31:02 +0200 <infandum> I have converted my program to use optparse-applicative. Upon testing, I noticed I accidentally had "option auto" instead of "option str" (or strOption). Yet this bypassed the compilier. Is there a way to type-check this bug?
2021-06-09 21:31:58 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-09 21:32:10 +0200 <infandum> (there are many, many options and will take a while to test them all)
2021-06-09 21:32:44 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 21:33:07 +0200 <dminuoso> infandum: By the way, did you get my message regarding optparse-generic?
2021-06-09 21:34:00 +0200 <dminuoso> infandum: And no, there's no easy way.
2021-06-09 21:34:48 +0200 <dminuoso> I'd just avoid `option auto` to begin with, Read is not what you'd likely want
2021-06-09 21:36:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-09 21:39:23 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 21:41:12 +0200 <dminuoso> Recall, that deriving generated Show is supposed to generate syntactically correct Haskell expressions that correspond to the value, and Read that would parse those back into values.
2021-06-09 21:43:16 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 272 seconds)
2021-06-09 21:45:40 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-09 21:46:38 +0200 <xerox> anybody else getting ghcid stuck after the first try, no reload, after upgrading to 8.10.5?
2021-06-09 21:47:18 +0200 <xerox> not even printing the "All good."
2021-06-09 21:47:34 +0200 <jco> OK, found the answer to my own question. Pyramid of doom avoided with the help of `hoistEither` from the `errors` library. I like it: http://ix.io/3pob.
2021-06-09 21:49:51 +0200notzmv(~zmv@user/notzmv)
2021-06-09 21:49:53 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-06-09 21:51:05 +0200 <infandum> dminuoso: I did (after I just resigned on), but it expired because I took too long. However, I just converted over to optparse-applicative as I could not figure it out and there seemed to be more features with optparse-applicative (but more boilerplate as well).
2021-06-09 21:51:38 +0200 <dminuoso> infandum: https://gist.github.com/dminuoso/d68598ffb112cbe61c3759a530e2d837
2021-06-09 21:52:01 +0200 <dminuoso> You can use use both together
2021-06-09 21:52:44 +0200kritzefitz_(~kritzefit@picard.host.weltraumschlangen.de)
2021-06-09 21:52:57 +0200maerwald(~maerwald@user/maerwald) (Ping timeout: 268 seconds)
2021-06-09 21:53:03 +0200aerona(~aerona@2600:6c54:4600:f300:8401:a988:a361:a685) (Quit: Leaving)
2021-06-09 21:54:06 +0200kritzefitz(~kritzefit@picard.host.weltraumschlangen.de) (Ping timeout: 265 seconds)
2021-06-09 21:54:06 +0200kritzefitz_kritzefitz
2021-06-09 21:54:23 +0200 <ski> @type maybe empty pure
2021-06-09 21:54:24 +0200 <lambdabot> Alternative f => Maybe a -> f a
2021-06-09 21:54:25 +0200 <ski> @type maybe mzero return
2021-06-09 21:54:26 +0200 <lambdabot> MonadPlus m => Maybe a -> m a
2021-06-09 21:54:28 +0200 <ski> @type either throwError return
2021-06-09 21:54:28 +0200 <lambdabot> MonadError e m => Either e a -> m a
2021-06-09 21:54:51 +0200 <infandum> dminuoso: I see, the instances were what I was missing
2021-06-09 21:55:01 +0200 <infandum> You should submit that to optparse-generic documentation
2021-06-09 21:55:34 +0200 <dminuoso> infandum: The trick is also the newtype wrapper. At that point you might as well submit the code itself.
2021-06-09 21:55:46 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-06-09 21:57:43 +0200jneira(~jneira@166.red-81-39-172.dynamicip.rima-tde.net) (Quit: Connection closed)
2021-06-09 21:59:27 +0200maerwald(~maerwald@mail.hasufell.de)
2021-06-09 21:59:42 +0200dhouthoo_(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
2021-06-09 22:00:07 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 22:00:08 +0200 <infandum> dminuoso: You seem very knowledgeable on this -- is it possible to have the same option name have different help text (and even type) in different entrypoints in optparse-generic? It's possible in optparse-applicative it seems but not in optparse-generic.
2021-06-09 22:00:36 +0200maerwald(~maerwald@mail.hasufell.de) (Changing host)
2021-06-09 22:00:36 +0200maerwald(~maerwald@user/maerwald)
2021-06-09 22:00:46 +0200 <dminuoso> Why shouldn't it be possible?
2021-06-09 22:00:55 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-09 22:00:58 +0200 <infandum> like: command subcommand1 --arg string and command subcommand2 --arg int?
2021-06-09 22:01:04 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-06-09 22:01:08 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-06-09 22:01:12 +0200 <dminuoso> I don't see a reason why it wouldn't work.
2021-06-09 22:01:21 +0200 <infandum> Because the compiler states that within the same record there are two different definitions
2021-06-09 22:01:26 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a) (Remote host closed the connection)
2021-06-09 22:01:34 +0200 <infandum> or, between the two
2021-06-09 22:01:37 +0200 <dminuoso> Ah I see. Use my Nested newtype wrapper to help out.
2021-06-09 22:02:23 +0200 <dminuoso> You'd create a separate data type for each command, call it `data RC1 = RC1 { arg :: Int <?> "fancy number" }` and `data RC2 = RC2 { arg :: String <?> "fancy string" }`
2021-06-09 22:02:40 +0200 <dminuoso> With OverloadedRecordFields enabled, these could even reside in the same module
2021-06-09 22:03:08 +0200 <dminuoso> And then your command data type would just be `data C = C1 (Nested RC1) | C2 (Nested RC2)`
2021-06-09 22:03:32 +0200 <dminuoso> Of course with each passing step you start accomulate a lot of cruft just to please the weird ergonomics of optparse-generic with non-obvious type level tricks
2021-06-09 22:03:40 +0200 <dminuoso> Better to just write `optparse-applicative` parsers.
2021-06-09 22:04:16 +0200 <infandum> which is ironic as optparse-generic is supposed to make the writing faster haha
2021-06-09 22:04:22 +0200 <infandum> still, very interesting stuff!
2021-06-09 22:04:35 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-06-09 22:04:49 +0200 <dminuoso> I can see how optparse-generic is nice to some people when want to quickly get some option parsing with minimal effort.
2021-06-09 22:05:03 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 252 seconds)
2021-06-09 22:05:05 +0200 <dminuoso> I might even use it for *some* parsers
2021-06-09 22:05:15 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a)
2021-06-09 22:05:27 +0200 <dminuoso> As long as I'm ready to switch to optparse-applicative directly. Recall, you can combine/mix these freely, best of both worlds.
2021-06-09 22:05:28 +0200 <infandum> yeah, I converted a while back to optparse-generic, but for this huge program with a lot of features and entrypoints it is a little unwieldy
2021-06-09 22:06:25 +0200 <dminuoso> I do a similar thing with Aeson in one of my programs. About 90% of the instances are generated with generics (with deriving-aeson, for extra convenience), but I dont shy away from writing out 10% by hand because the generics dont do what I want.
2021-06-09 22:06:42 +0200 <dminuoso> Or because I wanted to decouple the public representation from the internal one
2021-06-09 22:07:06 +0200fendor(~fendor@178.165.130.85.wireless.dyn.drei.com) (Remote host closed the connection)
2021-06-09 22:07:18 +0200juhp(~juhp@128.106.188.66)
2021-06-09 22:08:24 +0200 <dminuoso> infandum: Check out `parseRecord` from otpparse-generic. You can use these instances with the data types where it works, and then use `parseRecord` to glue this into your hand-written rest.
2021-06-09 22:11:00 +0200jneira(~jneira@166.red-81-39-172.dynamicip.rima-tde.net)
2021-06-09 22:12:12 +0200Bartosz(~textual@24.35.90.211)
2021-06-09 22:12:37 +0200 <delYsid> sm[m]: I am not on Discourse, mostly does to accessibility :-)
2021-06-09 22:12:48 +0200 <delYsid> s/does/due/
2021-06-09 22:12:52 +0200haltux(~haltux@a89-154-181-47.cpe.netcabo.pt) (Remote host closed the connection)
2021-06-09 22:13:18 +0200stefan-_(~cri@42dots.de) (Ping timeout: 252 seconds)
2021-06-09 22:13:32 +0200 <sm[m]> ack
2021-06-09 22:17:15 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-09 22:17:42 +0200stefan-_(~cri@42dots.de)
2021-06-09 22:18:31 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-09 22:19:23 +0200fresheye1(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-06-09 22:23:12 +0200 <c_l_ste> exit
2021-06-09 22:23:17 +0200jco(~jco@c83-248-173-38.bredband.tele2.se) (Ping timeout: 244 seconds)
2021-06-09 22:23:20 +0200c_l_ste(~celeste@ip68-12-146-37.ok.ok.cox.net) (Quit: leaving)
2021-06-09 22:25:06 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2021-06-09 22:25:07 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-09 22:28:38 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-06-09 22:29:26 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 22:30:22 +0200spatchkaa(~spatchkaa@S010600fc8da47b63.gv.shawcable.net)
2021-06-09 22:31:11 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 268 seconds)
2021-06-09 22:31:45 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-09 22:34:44 +0200nikoo
2021-06-09 22:35:17 +0200hiruji(~hiruji@2606:6080:1001:18:8d41:9604:d435:36b6)
2021-06-09 22:38:08 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-09 22:38:50 +0200ukari(~ukari@user/ukari)
2021-06-09 22:40:19 +0200sciencen1(~sciencent@hacksoc/ordinary-member) (Ping timeout: 272 seconds)
2021-06-09 22:41:21 +0200MQ-17J(~MQ-17J@8.21.10.116) (Ping timeout: 252 seconds)
2021-06-09 22:44:36 +0200MQ-17J(~MQ-17J@8.21.10.116)
2021-06-09 22:49:03 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-06-09 22:50:04 +0200michalz(~michalz@185.246.204.114) (Remote host closed the connection)
2021-06-09 22:50:40 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 244 seconds)
2021-06-09 22:52:41 +0200 <jneira> i think lambdabot got bored in #haskell-es
2021-06-09 22:53:05 +0200 <jneira> how can i convince it to return? :-)
2021-06-09 22:55:14 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 268 seconds)
2021-06-09 22:55:17 +0200 <maerwald> hmm, there's no #haskell.de anymore?
2021-06-09 22:56:00 +0200 <monochrom> Perchance it's renamed to #haskell-de? Or the people in the original #haskell.de don't bother?
2021-06-09 22:56:19 +0200 <ski> (or are slow to react, perchance)
2021-06-09 22:56:28 +0200 <maerwald> #haskell-de also empty
2021-06-09 22:56:39 +0200 <jneira> iirc channel names were normalized in the igration
2021-06-09 22:56:42 +0200 <monochrom> I know that #haskell.tw took this relocation chance to rename to #haskell-tw
2021-06-09 22:57:34 +0200 <monochrom> Unix philosophy that "move" and "rename" are the same thing >:)
2021-06-09 22:57:36 +0200 <ski> it was suggested that `#haskell-*' would be the proper way, to fall under the same jurisdiction
2021-06-09 22:58:37 +0200bruceleewees(~bruceleew@83.24.248.233.ipv4.supernova.orange.pl) (Remote host closed the connection)
2021-06-09 22:59:03 +0200 <ski> (this also happened to `#haskell.se' -> `#haskell-se', and `#haskell.scandinavian' -> `#haskell-scandinavian')
2021-06-09 22:59:05 +0200teaSlurper(~chris@81.96.113.213)
2021-06-09 22:59:06 +0200 <monochrom> Yeah, libera and even previous freenode namespace policy prefers hypthen. But bear in mind that these are just manually followed social constructs, exceptions can happen and don't really fail any algorithm.
2021-06-09 22:59:52 +0200 <maerwald> well, I tried all permutations
2021-06-09 23:01:52 +0200 <maerwald> I'm losing my mother tongue to covid, so I thought maybe...
2021-06-09 23:03:02 +0200 <monochrom> I thought covid didn't attack tongues... >:)
2021-06-09 23:03:13 +0200 <monochrom> your mother lungs, sure >:)
2021-06-09 23:04:12 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 23:04:53 +0200 <maerwald> ok, so who can give me OP in #haskell-de
2021-06-09 23:04:58 +0200 <maerwald> I'll talk to myself
2021-06-09 23:05:08 +0200 <maerwald> (in german)
2021-06-09 23:05:22 +0200 <geekosaur> see #haskell-ops
2021-06-09 23:05:32 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-09 23:07:35 +0200 <pavonia> Weird. There's even a Czech & Slovak sub-channel, but they forgot about the Germans? :o
2021-06-09 23:07:51 +0200 <maerwald> ZE germanz
2021-06-09 23:08:04 +0200dhil(~dhil@80.208.56.181)
2021-06-09 23:08:39 +0200 <maerwald> maybe they're all on freenode?
2021-06-09 23:10:22 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 23:10:35 +0200xsperry(~as@user/xsperry) (Remote host closed the connection)
2021-06-09 23:10:41 +0200 <ski> there's two people in the old #haskell.de
2021-06-09 23:10:53 +0200 <ski> (one might be ChanServ, i guess)
2021-06-09 23:11:01 +0200xsperry(~as@user/xsperry)
2021-06-09 23:11:23 +0200 <pavonia> How many used to be there before the split?
2021-06-09 23:12:18 +0200 <ski> no idea
2021-06-09 23:12:25 +0200 <ski> (never been in there)
2021-06-09 23:12:38 +0200skilooks at maerwald
2021-06-09 23:13:50 +0200Iryon(~Iryon@2a02:a31a:a045:3500:5c9:2f58:8faf:5e52)
2021-06-09 23:14:37 +0200 <maerwald> never been there either
2021-06-09 23:15:46 +0200 <pavonia> :D
2021-06-09 23:15:54 +0200favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-09 23:16:13 +0200favonia(~favonia@user/favonia)
2021-06-09 23:19:46 +0200 <ski> > sum (zipWith ((fromEnum .) . (/=)) "pavonia" "favonia")
2021-06-09 23:19:47 +0200 <lambdabot> 1
2021-06-09 23:22:05 +0200jneira(~jneira@166.red-81-39-172.dynamicip.rima-tde.net) (Quit: Connection closed)
2021-06-09 23:22:19 +0200jneira(~jneira@166.red-81-39-172.dynamicip.rima-tde.net)
2021-06-09 23:23:08 +0200pavoniashould rename to phavonia for even more confusion
2021-06-09 23:23:50 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 23:24:06 +0200 <monochrom> I heard that sometimes "v" means "b" and/or vice versa.
2021-06-09 23:24:35 +0200 <monochrom> or maybe "v" means "beta"
2021-06-09 23:24:50 +0200 <favonia> favonia
2021-06-09 23:24:50 +0200 <favonia> oops sorry for misconfiguration
2021-06-09 23:24:50 +0200favonia(~favonia@user/favonia) (Quit: Leaving)
2021-06-09 23:25:39 +0200 <monochrom> φαβoνια
2021-06-09 23:26:33 +0200slac19625(~slack1256@191.125.180.163) (Ping timeout: 272 seconds)
2021-06-09 23:26:41 +0200wonko(~wjc@62.115.229.50) (Ping timeout: 268 seconds)
2021-06-09 23:28:09 +0200 <tomsmeding> shapr: unwitting entry to the IOHCC https://gist.github.com/vivshaw/2d25a541c0ff7c689474865e8a75c520
2021-06-09 23:32:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-09 23:33:58 +0200juri__juri_
2021-06-09 23:34:00 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2121:a570:d35e:ba7a) (Remote host closed the connection)
2021-06-09 23:34:21 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-09 23:35:47 +0200 <shapr> tomsmeding: whoa, that's nice
2021-06-09 23:35:56 +0200chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr) (Ping timeout: 268 seconds)
2021-06-09 23:38:07 +0200danidiaz1(~ESDPC@static-35-0-85-188.ipcom.comunitel.net) (Read error: Connection reset by peer)
2021-06-09 23:38:09 +0200 <dminuoso> tomsmeding: Mmm, your ircbrowse feels like it has become clunky with all that styling. What happened to the good old raw text?
2021-06-09 23:38:20 +0200 <dminuoso> https://ircbrowse.tomsmeding.com/day/haskell/2021/01/04 is hard to read
2021-06-09 23:39:51 +0200 <boxscape> is that partially just a bug? https://ircbrowse.tomsmeding.com/day/haskell/2021/01/05 is one line per message instead of 3
2021-06-09 23:39:58 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:190f:d7af:8eb9:1d14) (Read error: Connection reset by peer)
2021-06-09 23:41:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-09 23:41:24 +0200 <dminuoso> boxscape: https://www.youtube.com/watch?v=-pzckbNyqfc
2021-06-09 23:41:43 +0200 <boxscape> :)
2021-06-09 23:44:53 +0200 <tomsmeding> dminuoso: that's your browser and it's the fault of boxscape https://ircbrowse.tomsmeding.com/day/haskell/2021/01/04?id=235938#trid235938
2021-06-09 23:45:07 +0200 <boxscape> oh no
2021-06-09 23:45:09 +0200ddellacosta(~ddellacos@86.106.121.46) (Ping timeout: 252 seconds)
2021-06-09 23:45:12 +0200 <tomsmeding> ;)
2021-06-09 23:45:17 +0200 <boxscape> I blame yahb
2021-06-09 23:45:33 +0200 <tomsmeding> By the way I changed no styling, so if anything changed in that regard that's accidental
2021-06-09 23:45:34 +0200 <mniip> who dares
2021-06-09 23:45:48 +0200 <tomsmeding> mniip: follow the link
2021-06-09 23:45:56 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 264 seconds)
2021-06-09 23:46:01 +0200 <mniip> sounds like a personal problem to be tbh
2021-06-09 23:46:03 +0200 <mniip> :P
2021-06-09 23:46:15 +0200 <boxscape> I'll handle it in DMs with yahb
2021-06-09 23:46:31 +0200 <tomsmeding> :p
2021-06-09 23:47:01 +0200 <tomsmeding> I guess some fixed column widths can fix this; I can experiment later
2021-06-09 23:47:33 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-09 23:53:40 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-06-09 23:55:35 +0200skiidly wonders where mauke are
2021-06-09 23:56:50 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-06-09 23:58:28 +0200xkuru(~xkuru@user/xkuru)
2021-06-09 23:59:24 +0200oxide_(~lambda@user/oxide) (Read error: Connection reset by peer)