2021/02/25

2021-02-25 00:01:14 +0100jess(jess@freenode/staff/jess)
2021-02-25 00:01:28 +0100 <dolio> Axman6: It might not be an instance that you're looking for. But `Word -> (forall n. KnownNat n => r) -> r`
2021-02-25 00:01:50 +0100 <Axman6> yeah that seems like the right thing
2021-02-25 00:02:32 +0100 <dolio> Although perhaps just `Nat -> ...` because having one of those for every type with some kind of embedding into Nat would be a lot of functions.
2021-02-25 00:03:26 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:b7bd:1d78:9a4c:6909) (Ping timeout: 240 seconds)
2021-02-25 00:03:30 +0100henninb(~henninb@63-228-50-251.mpls.qwest.net)
2021-02-25 00:03:33 +0100 <dolio> Could also be a GADT version of that, though.
2021-02-25 00:03:49 +0100 <dolio> Nat -> SomeKnownNat
2021-02-25 00:04:16 +0100bergey`(~user@107.181.19.30) (Ping timeout: 240 seconds)
2021-02-25 00:04:57 +0100 <Axman6> I'm trying to see if there's a type safe optimisation for the NS coinstructor in generics-sop (/sop-core) which could avoid the use of unsafeCoerce; replace the implementation with data NS f xs = NS Word Any, so also need to ensure the Nat is < length xs at the type level
2021-02-25 00:05:36 +0100random_learner(2fe3acc8@047-227-172-200.res.spectrum.com)
2021-02-25 00:05:58 +0100 <Axman6> there's a PR at the moment to maake the construction of NP more efficient and it'd be nice to also have NS allow for constant time decision of which constructor is represented in the sum type
2021-02-25 00:08:40 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-25 00:09:07 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-25 00:10:09 +0100borne(~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de)
2021-02-25 00:13:34 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 00:14:04 +0100random_learner(2fe3acc8@047-227-172-200.res.spectrum.com) (Quit: Connection closed)
2021-02-25 00:14:24 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2021-02-25 00:14:40 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-02-25 00:17:55 +0100hseg_hseg
2021-02-25 00:18:06 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2021-02-25 00:18:08 +0100skregas(~skregas@201.89-10-150.nextgentel.com)
2021-02-25 00:18:24 +0100zmv-(~zmv@191.255.89.231) (Ping timeout: 246 seconds)
2021-02-25 00:19:24 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-25 00:19:31 +0100skregasskregas_
2021-02-25 00:19:44 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 00:20:24 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-02-25 00:20:55 +0100neiluj(~jco@unaffiliated/neiluj) (Quit: leaving)
2021-02-25 00:21:18 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-02-25 00:23:57 +0100fendor_(~fendor@91.141.0.220.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-02-25 00:24:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2021-02-25 00:24:30 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-02-25 00:25:05 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
2021-02-25 00:25:46 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-02-25 00:27:53 +0100henninb(~henninb@63-228-50-251.mpls.qwest.net) (Quit: Lost terminal)
2021-02-25 00:28:03 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-02-25 00:28:48 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection)
2021-02-25 00:36:26 +0100slack1256(~slack1256@45.4.2.52)
2021-02-25 00:37:28 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-02-25 00:37:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-02-25 00:38:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-25 00:38:27 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-25 00:41:56 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2021-02-25 00:42:16 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 240 seconds)
2021-02-25 00:42:32 +0100pacak(~pacak@bb116-14-220-91.singnet.com.sg) (Remote host closed the connection)
2021-02-25 00:43:15 +0100nehsou^(dsrt@ip98-184-89-2.mc.at.cox.net) ()
2021-02-25 00:44:33 +0100pacak(~pacak@bb116-14-220-91.singnet.com.sg)
2021-02-25 00:44:55 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 00:56:11 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 00:57:35 +0100seneca(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-25 00:58:09 +0100maerwald(~maerwald@mail.hasufell.de) (Ping timeout: 264 seconds)
2021-02-25 01:00:26 +0100acidjnk_new(~acidjnk@p200300d0c73909529c208343cf3ed1b3.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-02-25 01:00:33 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 256 seconds)
2021-02-25 01:01:47 +0100 <nshepperd> ukari: i tried using reflex, but couldn't make any sense of the docs, so i went with reactive-banana. which is unfortunate because I've heard reflex is more performant
2021-02-25 01:02:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-02-25 01:03:22 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-02-25 01:04:22 +0100alx741(~alx741@181.196.69.27)
2021-02-25 01:04:31 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 256 seconds)
2021-02-25 01:05:29 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds)
2021-02-25 01:05:56 +0100hseg(~gesh@IGLD-84-228-239-97.inter.net.il) (Ping timeout: 240 seconds)
2021-02-25 01:06:59 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-foajjiotajxkliux)
2021-02-25 01:07:17 +0100maerwald(~maerwald@mail.hasufell.de)
2021-02-25 01:08:17 +0100heatsink(~heatsink@2600:1700:bef1:5e10:28b0:4c0c:b54b:e522)
2021-02-25 01:08:39 +0100Tario(~Tario@200.119.184.197)
2021-02-25 01:10:54 +0100 <MarcelineVQ> nshepperd: ask Cale about it, he's got all kinds of examples and good ideas
2021-02-25 01:11:05 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2021-02-25 01:11:35 +0100hendursa1(~weechat@gateway/tor-sasl/hendursaga) (Quit: hendursa1)
2021-02-25 01:11:54 +0100hendursaga(~weechat@gateway/tor-sasl/hendursaga)
2021-02-25 01:12:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 01:12:45 +0100esp32_prog(~esp32_pro@185.195.233.147) (Ping timeout: 240 seconds)
2021-02-25 01:14:14 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-02-25 01:16:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 01:17:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-25 01:17:18 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
2021-02-25 01:17:39 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-02-25 01:18:16 +0100Lowl3v3l(~Lowl3v3l@dslb-002-203-233-121.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-02-25 01:21:31 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-02-25 01:21:37 +0100phittacus(bklmatrixo@gateway/shell/matrix.org/x-gwycjuommpiiwoem) (Ping timeout: 260 seconds)
2021-02-25 01:21:38 +0100sagax(~sagax_nb@213.138.71.146) (Ping timeout: 264 seconds)
2021-02-25 01:22:08 +0100conal_(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-25 01:23:26 +0100phittacus(bklmatrixo@gateway/shell/matrix.org/x-ytpsxehmufedpsxo)
2021-02-25 01:26:36 +0100conal(~conal@64.71.133.70)
2021-02-25 01:28:24 +0100rj(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-02-25 01:28:39 +0100 <jackdk> ukari: you were close. The return value of the thing you pass to `runHeadlessApp` is an `Event t ()` that tells Reflex when to stop. If you want to run forever, use `pure never`
2021-02-25 01:29:02 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6)
2021-02-25 01:29:18 +0100 <jackdk> ukari: check this out https://www.irccloud.com/pastebin/9EO7VeXV/Ticker.hs
2021-02-25 01:30:12 +0100 <jackdk> ukari: also #reflex-frp is a good channel
2021-02-25 01:30:16 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 240 seconds)
2021-02-25 01:32:15 +0100rajivr(uid269651@gateway/web/irccloud.com/x-bteccupbxcrkcjlt)
2021-02-25 01:32:15 +0100Tario(~Tario@200.119.184.197) (Read error: Connection reset by peer)
2021-02-25 01:32:44 +0100Tario(~Tario@201.192.165.173)
2021-02-25 01:33:59 +0100Lowl3v3l(~Lowl3v3l@dslb-002-207-103-026.002.207.pools.vodafone-ip.de)
2021-02-25 01:37:31 +0100 <jackdk> nshepperd: the reflex workshop vm helped me a lot, and your reactive-banana experience will probably transfer somewhat
2021-02-25 01:38:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-25 01:38:38 +0100esp32_prog(~esp32_pro@185.195.233.147)
2021-02-25 01:38:49 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 01:40:40 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-02-25 01:41:16 +0100entel(uid256215@botters/entel) (Quit: Connection closed for inactivity)
2021-02-25 01:44:03 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-02-25 01:44:17 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-25 01:44:42 +0100conal(~conal@64.71.133.70)
2021-02-25 01:49:35 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-02-25 01:52:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 01:53:35 +0100martins(~martins@81.198.232.69)
2021-02-25 01:53:49 +0100martins(~martins@81.198.232.69) (Client Quit)
2021-02-25 01:55:44 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 272 seconds)
2021-02-25 01:55:45 +0100stree(~stree@68.36.8.116) (Ping timeout: 264 seconds)
2021-02-25 01:57:35 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-25 01:58:39 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-25 01:59:10 +0100Ranhir(~Ranhir@157.97.53.139)
2021-02-25 02:00:36 +0100seneca(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 246 seconds)
2021-02-25 02:04:11 +0100martins(~martins@81.198.232.69)
2021-02-25 02:05:39 +0100martins(~martins@81.198.232.69) (Client Quit)
2021-02-25 02:06:08 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-02-25 02:07:41 +0100rj(~x@gateway/tor-sasl/rj)
2021-02-25 02:08:26 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:65d8:c770:8e45:ea4c)
2021-02-25 02:08:53 +0100stree(~stree@68.36.8.116)
2021-02-25 02:10:18 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-02-25 02:12:34 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-02-25 02:13:41 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-02-25 02:16:05 +0100howdoi(uid224@gateway/web/irccloud.com/x-gtvjllhbyskilhtc)
2021-02-25 02:18:57 +0100gentauro(~gentauro@unaffiliated/gentauro) (Quit: leaving)
2021-02-25 02:19:00 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-02-25 02:19:55 +0100gentauro(~gentauro@185.107.12.141)
2021-02-25 02:20:49 +0100gentauro(~gentauro@185.107.12.141) (Client Quit)
2021-02-25 02:21:19 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-emqhyvlnnsxogtux) (Quit: Connection closed for inactivity)
2021-02-25 02:21:44 +0100gentauro(~gentauro@unaffiliated/gentauro)
2021-02-25 02:23:12 +0100cyphase(~cyphase@unaffiliated/cyphase) (Ping timeout: 265 seconds)
2021-02-25 02:23:23 +0100gentauro(~gentauro@unaffiliated/gentauro) (Client Quit)
2021-02-25 02:23:39 +0100gentauro(~gentauro@unaffiliated/gentauro)
2021-02-25 02:23:56 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2021-02-25 02:24:51 +0100joecordi_(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 02:24:51 +0100infinity0(~infinity0@freenet/developer/infinity0) (Remote host closed the connection)
2021-02-25 02:26:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-25 02:26:53 +0100vgtw_(~vgtw@gateway/tor-sasl/vgtw)
2021-02-25 02:26:56 +0100Jon(jon@dow.land) (Remote host closed the connection)
2021-02-25 02:27:14 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-02-25 02:27:16 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:65d8:c770:8e45:ea4c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 02:27:30 +0100Jon(jon@dow.land)
2021-02-25 02:27:36 +0100vgtw(~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 268 seconds)
2021-02-25 02:27:37 +0100vgtw_vgtw
2021-02-25 02:27:38 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 264 seconds)
2021-02-25 02:27:56 +0100enikar(~enikar@2001:41d0:2:8673::42) (Ping timeout: 240 seconds)
2021-02-25 02:28:21 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 02:28:59 +0100zmv-(~zmv@191.255.89.231)
2021-02-25 02:29:16 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-02-25 02:29:17 +0100enikar(~enikar@2001:41d0:2:8673::42)
2021-02-25 02:31:49 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-02-25 02:33:06 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 272 seconds)
2021-02-25 02:35:54 +0100joecordi_(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection)
2021-02-25 02:38:01 +0100cyphase(~cyphase@unaffiliated/cyphase)
2021-02-25 02:38:06 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-25 02:38:26 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-25 02:41:14 +0100joecordingley(~joecordin@37.156.75.63)
2021-02-25 02:45:49 +0100joecordingley(~joecordin@37.156.75.63) (Ping timeout: 260 seconds)
2021-02-25 02:48:04 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-02-25 02:53:11 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 02:53:54 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 02:54:06 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-02-25 02:56:05 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-02-25 02:57:26 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds)
2021-02-25 02:58:30 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 02:58:45 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 02:58:53 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-02-25 02:58:55 +0100martins(~martins@81.198.232.69)
2021-02-25 02:58:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-02-25 02:59:44 +0100martins(~martins@81.198.232.69) ()
2021-02-25 03:00:59 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-02-25 03:03:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds)
2021-02-25 03:03:23 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
2021-02-25 03:08:27 +0100xff0x(~xff0x@2001:1a81:525a:9700:e2d:ed0e:1903:82db) (Ping timeout: 272 seconds)
2021-02-25 03:09:52 +0100xff0x(~xff0x@2001:1a81:5295:6100:414c:c2f4:f5f5:8081)
2021-02-25 03:09:56 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 240 seconds)
2021-02-25 03:09:58 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 03:10:25 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-02-25 03:11:42 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-02-25 03:11:59 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2021-02-25 03:14:29 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0)
2021-02-25 03:14:47 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
2021-02-25 03:16:11 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-25 03:16:25 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2021-02-25 03:18:08 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-25 03:18:46 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-25 03:19:16 +0100__minoru__shirae(~shiraeesh@77.94.25.253) (Ping timeout: 240 seconds)
2021-02-25 03:19:34 +0100__minoru__shirae(~shiraeesh@109.166.59.174)
2021-02-25 03:23:21 +0100guest222(~user@61.148.245.136) (Ping timeout: 256 seconds)
2021-02-25 03:24:59 +0100Jd007(~Jd007@162.156.11.151)
2021-02-25 03:25:06 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-02-25 03:27:31 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6)
2021-02-25 03:29:21 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
2021-02-25 03:33:51 +0100irc_user(uid423822@gateway/web/irccloud.com/x-fajfitegppdbkpgx) (Quit: Connection closed for inactivity)
2021-02-25 03:36:51 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 03:37:09 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2021-02-25 03:37:13 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-02-25 03:38:07 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 03:38:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-25 03:38:26 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-25 03:38:57 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds)
2021-02-25 03:38:58 +0100Lord_of_Life_Lord_of_Life
2021-02-25 03:39:23 +0100entel(uid256215@botters/entel)
2021-02-25 03:40:40 +0100Wuzzy(~Wuzzy@p57a2f9e0.dip0.t-ipconnect.de) (Quit: Wuzzy)
2021-02-25 03:41:03 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
2021-02-25 03:41:52 +0100toorevitimirp(~tooreviti@117.182.181.253)
2021-02-25 03:42:27 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 246 seconds)
2021-02-25 03:42:33 +0100esp32_prog(~esp32_pro@185.195.233.147) (Ping timeout: 264 seconds)
2021-02-25 03:46:37 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 03:48:04 +0100drbean_(~drbean@TC210-63-209-206.static.apol.com.tw)
2021-02-25 03:49:16 +0100denisse_(~spaceCat@gateway/tor-sasl/alephzer0)
2021-02-25 03:50:34 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0) (Quit: ZNC 1.7.5 - https://znc.in)
2021-02-25 03:50:59 +0100denisse_denisse
2021-02-25 03:51:37 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
2021-02-25 03:52:36 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 03:54:00 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 03:55:24 +0100tromp_(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 03:55:24 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
2021-02-25 03:57:13 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
2021-02-25 03:58:26 +0100alx741(~alx741@181.196.69.27) (Quit: alx741)
2021-02-25 03:59:57 +0100tromp_(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
2021-02-25 04:00:10 +0100carlomagno(~cararell@148.87.23.11) (Quit: Leaving.)
2021-02-25 04:03:35 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 04:03:44 +0100sw1nn(~sw1nn@2a00:23c6:2385:3a00:5367:7819:3f66:284e) (Ping timeout: 240 seconds)
2021-02-25 04:04:01 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e8ed:b8de:c4bc:271c)
2021-02-25 04:08:37 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
2021-02-25 04:10:04 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat)
2021-02-25 04:10:04 +0100egp_(~egp_@2.95.74.168) (Read error: Connection reset by peer)
2021-02-25 04:10:22 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
2021-02-25 04:11:26 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-02-25 04:14:37 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 04:16:14 +0100sw1nn(~sw1nn@2a00:23c6:2385:3a00:6be:14ea:238:81cf)
2021-02-25 04:16:45 +0100stree(~stree@68.36.8.116) (Ping timeout: 246 seconds)
2021-02-25 04:18:05 +0100slack1256(~slack1256@45.4.2.52) (Ping timeout: 240 seconds)
2021-02-25 04:18:10 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-25 04:18:56 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds)
2021-02-25 04:20:35 +0100FinnElija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-02-25 04:20:35 +0100finn_elijaGuest18260
2021-02-25 04:20:35 +0100FinnElijafinn_elija
2021-02-25 04:22:36 +0100Tops2(~Tobias@dyndsl-091-249-082-052.ewe-ip-backbone.de) (Ping timeout: 240 seconds)
2021-02-25 04:23:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 04:23:34 +0100Tops2(~Tobias@dyndsl-095-033-089-046.ewe-ip-backbone.de)
2021-02-25 04:23:41 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-02-25 04:24:09 +0100Guest18260(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
2021-02-25 04:24:33 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 04:29:21 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
2021-02-25 04:29:21 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2021-02-25 04:29:26 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e8ed:b8de:c4bc:271c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 04:30:09 +0100stree(~stree@68.36.8.116)
2021-02-25 04:31:27 +0100Tario(~Tario@201.192.165.173)
2021-02-25 04:38:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-25 04:38:27 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-25 04:38:39 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-25 04:38:54 +0100Tario(~Tario@201.192.165.173)
2021-02-25 04:40:53 +0100alexelcu(~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-25 04:41:11 +0100plutoniix(~q@184.82.223.179)
2021-02-25 04:41:13 +0100alexelcu(~alexelcu@142.93.180.198)
2021-02-25 04:42:18 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-02-25 04:43:48 +0100 <dmwit> Okay, so using pointer equality as a fast path isn't safe because maybe the value diverges.
2021-02-25 04:44:05 +0100 <dmwit> You could deepseq both values before using that fast path, but then why bother with the fast path, right?
2021-02-25 04:44:20 +0100 <dmwit> But Ed K taught us how to have a deepseq that fires the first time and never again.
2021-02-25 04:44:37 +0100 <dmwit> Is there a library out there that uses this trick to give a pointer-equality based fast path for Eq?
2021-02-25 04:45:50 +0100 <dmwit> (Namely, the trick is like data JustOnce a = JustOnce () a; justOnce a = JustOnce (a `deepseq` ()) a. And then don't export the value constructor.
2021-02-25 04:45:53 +0100 <dmwit> )
2021-02-25 04:46:45 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
2021-02-25 04:47:08 +0100 <edwardk> *cough* pattern synonyms
2021-02-25 04:47:36 +0100 <dmwit> Yes, yes, you need a bunch of API for JustOnce to be comfortable.
2021-02-25 04:48:30 +0100 <edwardk> i actually need to start using this trick with linear types hrmm
2021-02-25 04:48:36 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 246 seconds)
2021-02-25 04:48:59 +0100 <dmwit> Is that just because you're using linear types a lot lately, or do they give some interesting extra bit that's not obvious?
2021-02-25 04:49:09 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds)
2021-02-25 04:49:14 +0100 <dmwit> Well, never mind whether it's obvious or not. =P
2021-02-25 04:49:33 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 04:50:37 +0100theDon(~td@muedsl-82-207-238-135.citykom.de) (Ping timeout: 256 seconds)
2021-02-25 04:52:09 +0100theDon(~td@muedsl-82-207-238-098.citykom.de)
2021-02-25 04:54:33 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
2021-02-25 04:54:47 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 04:55:09 +0100darjeeling_(~darjeelin@122.245.217.214) (Ping timeout: 256 seconds)
2021-02-25 04:56:15 +0100guest222(~user@49.5.6.87)
2021-02-25 04:56:24 +0100vicfred(~vicfred@unaffiliated/vicfred)
2021-02-25 04:56:40 +0100 <guest222> why call fixed-point would create loop?
2021-02-25 04:57:01 +0100 <dmwit> Because the way you compute the fixed point is by looping.
2021-02-25 04:57:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-25 04:57:21 +0100 <edwardk> well, consumability basically comes down to squishing a thing down to leave level types we can know don't contain thunks and then copying
2021-02-25 04:57:48 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-02-25 04:58:07 +0100 <edwardk> so if i can put a thing into a Once a instead of just an 'a' i can know it has been squeeze dry with a single deepseq and share that across future calls to consume
2021-02-25 04:58:16 +0100 <edwardk> or dup
2021-02-25 04:58:28 +0100 <dmwit> (Specifically: the least fixed point of f can be computed by going f (f (f (f (f ...)))), which is a loop.)
2021-02-25 04:58:32 +0100ddellacosta(~ddellacos@86.106.143.33)
2021-02-25 04:58:48 +0100 <edwardk> er to leaf level
2021-02-25 04:59:27 +0100 <dmwit> The idea being to drop even the very cheap seq on the ()?
2021-02-25 04:59:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-02-25 04:59:45 +0100 <dmwit> But if you can drop the cheap seq, why not skip the Once and drop the deepseq in the first place?
2021-02-25 04:59:51 +0100ddellaco_(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 05:00:05 +0100 <edwardk> more that the deepseq here is doing much the same work that i want consume/dup to do to ensure there's no as-yet-unconsumed linear resource dangling in a thunk
2021-02-25 05:00:49 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection)
2021-02-25 05:00:52 +0100 <dmwit> ...oh, interesting.
2021-02-25 05:00:56 +0100 <ski> what kind of linear resource could be a problem ?
2021-02-25 05:01:09 +0100 <edwardk> file handles, sockets, whatever.
2021-02-25 05:01:23 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056)
2021-02-25 05:01:26 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 256 seconds)
2021-02-25 05:01:28 +0100 <edwardk> most things like arrays are really affine, so meh
2021-02-25 05:01:36 +0100 <ski> what would be the problem, if you don't ensure this ?
2021-02-25 05:01:46 +0100 <edwardk> its just a thought based on a passing comment in the code for consume for Int
2021-02-25 05:01:51 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection)
2021-02-25 05:01:59 +0100ddellac__(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 05:02:11 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: Ping timeout (120 seconds))
2021-02-25 05:02:20 +0100pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-02-25 05:02:33 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-02-25 05:02:45 +0100ddellacosta(~ddellacos@86.106.143.33) (Ping timeout: 240 seconds)
2021-02-25 05:03:14 +0100 <edwardk> this is fairly loose in my brain. my intuitions have proven wrong like 2-3 times when digging in linear-base
2021-02-25 05:03:28 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056)
2021-02-25 05:03:45 +0100 <edwardk> so i'm choosing to overcompensate and take any positive warnings they give greater shrift than i otherwise might
2021-02-25 05:04:24 +0100ddellaco_(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 260 seconds)
2021-02-25 05:05:06 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 272 seconds)
2021-02-25 05:05:14 +0100 <ski> hm, okay
2021-02-25 05:05:25 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection)
2021-02-25 05:05:33 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 05:06:05 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 05:06:21 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056)
2021-02-25 05:06:42 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
2021-02-25 05:06:43 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 05:06:59 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 05:07:00 +0100smor(~smor@97.115.144.35)
2021-02-25 05:08:25 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e8ed:b8de:c4bc:271c)
2021-02-25 05:10:18 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-02-25 05:10:29 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection)
2021-02-25 05:10:40 +0100darjeeling_(~darjeelin@122.245.217.214)
2021-02-25 05:11:03 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056)
2021-02-25 05:11:38 +0100rj(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-02-25 05:11:59 +0100Tops2(~Tobias@dyndsl-095-033-089-046.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-02-25 05:12:02 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection)
2021-02-25 05:12:51 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056)
2021-02-25 05:13:28 +0100esp32_prog(~esp32_pro@185.195.233.147)
2021-02-25 05:14:34 +0100smor(~smor@97.115.144.35) (Changing host)
2021-02-25 05:14:34 +0100smor(~smor@unaffiliated/smor)
2021-02-25 05:17:29 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 05:18:57 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 05:20:51 +0100bitmagie(~Thunderbi@200116b806e06a00ddee379279106dee.dip.versatel-1u1.de)
2021-02-25 05:22:20 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 05:26:16 +0100pacak(~pacak@bb116-14-220-91.singnet.com.sg) (Remote host closed the connection)
2021-02-25 05:26:35 +0100pacak(~pacak@bb116-14-220-91.singnet.com.sg)
2021-02-25 05:27:02 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 264 seconds)
2021-02-25 05:28:15 +0100aggin(~ecm@103.88.87.93)
2021-02-25 05:28:36 +0100seneca(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-25 05:28:57 +0100aggin(~ecm@103.88.87.93) (Client Quit)
2021-02-25 05:30:16 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-25 05:32:19 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 272 seconds)
2021-02-25 05:32:33 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 05:32:50 +0100bitmagie1(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de)
2021-02-25 05:33:45 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 05:34:12 +0100bitmagie(~Thunderbi@200116b806e06a00ddee379279106dee.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-02-25 05:34:12 +0100bitmagie1bitmagie
2021-02-25 05:34:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-25 05:34:39 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-xfxeeejhmtblxsmq) ()
2021-02-25 05:38:06 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Read error: Connection reset by peer)
2021-02-25 05:38:26 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-25 05:38:33 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
2021-02-25 05:40:30 +0100howdoi(uid224@gateway/web/irccloud.com/x-gtvjllhbyskilhtc) (Quit: Connection closed for inactivity)
2021-02-25 05:41:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-25 05:43:30 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 05:45:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-25 05:45:50 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-02-25 05:47:36 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-25 05:50:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-25 05:55:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-02-25 05:58:06 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-25 05:59:57 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 258 seconds)
2021-02-25 06:00:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-25 06:01:22 +0100haskell58(7d8294d3@125.130.148.211)
2021-02-25 06:01:54 +0100haskell58(7d8294d3@125.130.148.211) (Client Quit)
2021-02-25 06:02:28 +0100forgottenone(~forgotten@176.42.20.136)
2021-02-25 06:04:51 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 06:05:06 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 06:05:43 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-25 06:06:01 +0100gitgood(~gitgood@80-44-13-166.dynamic.dsl.as9105.com) (Ping timeout: 260 seconds)
2021-02-25 06:07:16 +0100toorevitimirp(~tooreviti@117.182.181.253) (Ping timeout: 240 seconds)
2021-02-25 06:08:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-25 06:14:15 +0100ddellac__(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-02-25 06:14:25 +0100ystael(~ystael@209.6.50.55) (Ping timeout: 260 seconds)
2021-02-25 06:14:28 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 06:14:30 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-25 06:14:35 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-02-25 06:16:09 +0100smor(~smor@unaffiliated/smor) (Remote host closed the connection)
2021-02-25 06:18:40 +0100forgottenone(~forgotten@176.42.20.136) (Quit: Konversation terminated!)
2021-02-25 06:19:01 +0100smor(~smor@unaffiliated/smor)
2021-02-25 06:19:15 +0100fre(~freusque@104.238.190.229) (Ping timeout: 246 seconds)
2021-02-25 06:19:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-02-25 06:19:53 +0100nf(~n@monade.li) (Ping timeout: 258 seconds)
2021-02-25 06:22:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-25 06:23:17 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2021-02-25 06:25:53 +0100forgottenone(~forgotten@176.42.20.136)
2021-02-25 06:27:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-02-25 06:29:58 +0100smor(~smor@unaffiliated/smor) (Remote host closed the connection)
2021-02-25 06:31:15 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-25 06:31:48 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2021-02-25 06:31:51 +0100nf(~n@monade.li)
2021-02-25 06:31:54 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-02-25 06:33:36 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-25 06:34:22 +0100fre(~freusque@104.238.190.229)
2021-02-25 06:34:32 +0100Natch(~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 265 seconds)
2021-02-25 06:35:25 +0100DataComputist(~lumeng@50.43.26.251) (Ping timeout: 260 seconds)
2021-02-25 06:37:10 +0100DataComputist(~lumeng@50.43.26.251)
2021-02-25 06:37:39 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 06:37:42 +0100Natch(~Natch@c-b471e255.014-297-73746f25.bbcust.telenor.se)
2021-02-25 06:38:20 +0100stree(~stree@68.36.8.116) (Ping timeout: 256 seconds)
2021-02-25 06:39:09 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-02-25 06:40:35 +0100borne(~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
2021-02-25 06:42:24 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds)
2021-02-25 06:42:58 +0100monochrom(trebla@216.138.220.146)
2021-02-25 06:43:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-25 06:45:25 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 06:48:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-02-25 06:49:36 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-25 06:50:39 +0100lemmih(~lemmih@2406:3003:2072:44:15d3:24ba:467f:3d99) (Remote host closed the connection)
2021-02-25 06:50:48 +0100stree(~stree@68.36.8.116)
2021-02-25 06:53:05 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2021-02-25 06:53:21 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-02-25 06:53:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 06:55:14 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2021-02-25 06:55:19 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 265 seconds)
2021-02-25 06:55:40 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 06:56:16 +0100lemmih(~lemmih@2406:3003:2072:44:5428:f0dd:ed19:b4df)
2021-02-25 06:57:37 +0100monochrom(trebla@216.138.220.146)
2021-02-25 06:59:15 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 07:00:00 +0100klardotsh(~klardotsh@75-172-17-41.tukw.qwest.net) (Quit: WeeChat 3.0.1)
2021-02-25 07:01:00 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2021-02-25 07:01:17 +0100klardotsh(~klardotsh@75-172-17-41.tukw.qwest.net)
2021-02-25 07:03:53 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds)
2021-02-25 07:04:15 +0100gioyik_(~gioyik@gateway/tor-sasl/gioyik)
2021-02-25 07:06:20 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 268 seconds)
2021-02-25 07:06:55 +0100rotaerk(~rotaerk@ender.afternet.org) (Ping timeout: 265 seconds)
2021-02-25 07:07:30 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Quit: bitmagie)
2021-02-25 07:08:04 +0100gioyik_(~gioyik@gateway/tor-sasl/gioyik) (Read error: Connection reset by peer)
2021-02-25 07:09:29 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 07:10:31 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 07:12:07 +0100gioyik_(~gioyik@gateway/tor-sasl/gioyik)
2021-02-25 07:12:08 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 07:12:08 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 07:12:13 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-02-25 07:12:36 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 07:14:46 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 07:14:58 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
2021-02-25 07:19:17 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
2021-02-25 07:23:50 +0100__minoru__shirae(~shiraeesh@109.166.59.174) (Ping timeout: 265 seconds)
2021-02-25 07:24:47 +0100seneca(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-02-25 07:24:47 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 07:26:22 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-02-25 07:28:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-02-25 07:29:21 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
2021-02-25 07:29:26 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e8ed:b8de:c4bc:271c) (Ping timeout: 264 seconds)
2021-02-25 07:31:22 +0100forgottenone(~forgotten@176.42.20.136) (Quit: Konversation terminated!)
2021-02-25 07:33:57 +0100egp_(~egp_@2.95.74.168)
2021-02-25 07:33:58 +0100egp__(~egp_@2.95.74.168)
2021-02-25 07:35:46 +0100nbloomf(~nbloomf@76.217.43.73)
2021-02-25 07:38:16 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 240 seconds)
2021-02-25 07:38:59 +0100rotaerk(rotaerk@2600:3c02::f03c:91ff:fe70:4a45)
2021-02-25 07:40:25 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 07:42:16 +0100koz(~koz@121.99.240.58)
2021-02-25 07:42:27 +0100koz_(~koz@2404:4408:4342:2a00:1958:92dc:60f3:680b) (Ping timeout: 260 seconds)
2021-02-25 07:43:50 +0100rotaerk(rotaerk@2600:3c02::f03c:91ff:fe70:4a45) (Ping timeout: 264 seconds)
2021-02-25 07:45:13 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
2021-02-25 07:51:22 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 07:51:25 +0100nbloomf(~nbloomf@76.217.43.73) (Ping timeout: 240 seconds)
2021-02-25 07:52:26 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca)
2021-02-25 07:55:26 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de)
2021-02-25 07:55:59 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
2021-02-25 07:56:25 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 240 seconds)
2021-02-25 07:57:35 +0100knupfer(~Thunderbi@200116b82c5b7800ed680aab46f8abc5.dip.versatel-1u1.de)
2021-02-25 07:58:34 +0100dumptruckman(dumptruckm@2600:3c02::f03c:91ff:fe6e:2cfd) (Quit: ZNC - http://znc.in)
2021-02-25 07:58:56 +0100drbean_(~drbean@TC210-63-209-206.static.apol.com.tw) (Ping timeout: 240 seconds)
2021-02-25 08:00:00 +0100pengjiz(~user@2601:547:902:6d00::1) (Quit: ERC (IRC client for Emacs 27.1))
2021-02-25 08:00:45 +0100aqd(~aqd@84.20.147.33)
2021-02-25 08:01:12 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 08:02:21 +0100joecordingley(~joecordin@37.156.75.63)
2021-02-25 08:02:43 +0100dumptruckman(dumptruckm@2600:3c02::f03c:91ff:fe6e:2cfd)
2021-02-25 08:06:51 +0100joecordingley(~joecordin@37.156.75.63) (Ping timeout: 265 seconds)
2021-02-25 08:06:59 +0100 <olligobber> haskell doesn't have a 4 bit type in base? huh
2021-02-25 08:07:16 +0100idhugo_(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net)
2021-02-25 08:11:42 +0100Chai-T-Rex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 268 seconds)
2021-02-25 08:13:22 +0100Chai-T-Rex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2021-02-25 08:13:40 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-02-25 08:13:56 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Quit: bitmagie)
2021-02-25 08:14:35 +0100rotaerk(~rotaerk@ender.afternet.org)
2021-02-25 08:18:27 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 265 seconds)
2021-02-25 08:18:36 +0100poscat(~poscat@114.243.61.85) (Ping timeout: 246 seconds)
2021-02-25 08:18:39 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 08:18:42 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-02-25 08:18:51 +0100idhugo_(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Quit: Leaving)
2021-02-25 08:19:05 +0100poscat(~poscat@114.243.61.85)
2021-02-25 08:19:35 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2021-02-25 08:20:51 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 08:23:20 +0100poscat1(~poscat@2408:8207:4822:a280::1)
2021-02-25 08:24:18 +0100poscat(~poscat@114.243.61.85) (Ping timeout: 256 seconds)
2021-02-25 08:25:36 +0100Graf_Blutwurst(~grafblutw@adsl-178-38-234-220.adslplus.ch)
2021-02-25 08:26:41 +0100 <jle`> do you mean like a literal half byte or like (Bool, Bool)
2021-02-25 08:29:36 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-02-25 08:29:44 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de)
2021-02-25 08:29:48 +0100Varis(~Tadas@unaffiliated/varis)
2021-02-25 08:30:56 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-02-25 08:32:02 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-wygvvgugafrkzfoy)
2021-02-25 08:32:26 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 08:34:25 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 08:36:11 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 08:36:25 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Quit: bitmagie)
2021-02-25 08:41:29 +0100phpostrich(~phpostric@cgn-barr-67-222-245-157.carolinaconnect.net)
2021-02-25 08:41:39 +0100 <phpostrich> Ello
2021-02-25 08:42:52 +0100 <phpostrich> I wanted to learn haskell but Idk if its worth my time... can anyone convince me to use it?
2021-02-25 08:43:56 +0100average(uid473595@gateway/web/irccloud.com/x-kftgzjbwgakalewc) (Quit: Connection closed for inactivity)
2021-02-25 08:45:10 +0100 <Uniaika> uh
2021-02-25 08:45:17 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 08:45:32 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 08:46:02 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 08:46:53 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 08:48:56 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 08:49:38 +0100 <edwardk> phpostrich: no
2021-02-25 08:50:01 +0100phpostrich(~phpostric@cgn-barr-67-222-245-157.carolinaconnect.net) ("Good Bye")
2021-02-25 08:51:11 +0100 <edwardk> jle`: it'd have 4 bools.
2021-02-25 08:51:56 +0100ByronJohnson(~bairyn@unaffiliated/bob0) (Ping timeout: 240 seconds)
2021-02-25 08:52:27 +0100Tene(~tene@poipu/supporter/slacker/tene) (Ping timeout: 272 seconds)
2021-02-25 08:52:36 +0100kozkoz_
2021-02-25 08:53:27 +0100 <koz_> Vector 4 Bit :P
2021-02-25 08:53:49 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-02-25 08:55:39 +0100 <olligobber> Yeah, I'm using (Bool,Bool,Bool,Bool)
2021-02-25 08:56:47 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 08:57:40 +0100geyaeb_(~geyaeb@gateway/tor-sasl/geyaeb)
2021-02-25 08:58:36 +0100stree(~stree@68.36.8.116) (Ping timeout: 240 seconds)
2021-02-25 08:58:39 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Read error: Connection reset by peer)
2021-02-25 08:58:47 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-02-25 08:59:11 +0100geyaeb(~geyaeb@gateway/tor-sasl/geyaeb) (Ping timeout: 268 seconds)
2021-02-25 08:59:26 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-02-25 08:59:37 +0100 <edwardk> olligobber: i wrote one in a bdd library to represent binary functions
2021-02-25 09:00:14 +0100 <edwardk> https://github.com/ekmett/coda/blob/master/wip/bdd/Data/BDD.hs#L455
2021-02-25 09:00:32 +0100 <edwardk> though i just wrote the bits stuff, none of the Num machinery
2021-02-25 09:01:03 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:7b45:fc1a:7f85:7f18)
2021-02-25 09:01:06 +0100 <olligobber> interesting
2021-02-25 09:01:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2021-02-25 09:02:04 +0100 <olligobber> I'm mainly using it for hex digits
2021-02-25 09:02:36 +0100 <edwardk> makes sense
2021-02-25 09:02:39 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-02-25 09:02:55 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 265 seconds)
2021-02-25 09:03:37 +0100ByronJohnson(~bairyn@unaffiliated/bob0)
2021-02-25 09:03:53 +0100Tene(~tene@mail.digitalkingdom.org)
2021-02-25 09:03:53 +0100Tene(~tene@mail.digitalkingdom.org) (Changing host)
2021-02-25 09:03:53 +0100Tene(~tene@poipu/supporter/slacker/tene)
2021-02-25 09:06:24 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 09:06:59 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 09:09:15 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2021-02-25 09:12:20 +0100stree(~stree@68.36.8.116)
2021-02-25 09:13:34 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-foajjiotajxkliux) (Quit: Connection closed for inactivity)
2021-02-25 09:14:15 +0100zaquest(~notzaques@5.128.210.178)
2021-02-25 09:15:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 09:16:18 +0100forgottenone(~forgotten@176.88.28.250)
2021-02-25 09:16:32 +0100skregas_(~skregas@201.89-10-150.nextgentel.com) (Ping timeout: 272 seconds)
2021-02-25 09:16:39 +0100 <koz_> edwardk: I was looking at 'data Store i o r = Store (i -> r) o' from one of your old articles. You say it's an _indexed_ store comonad. How is that different from the regular store comonad?
2021-02-25 09:16:46 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-02-25 09:17:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:28b0:4c0c:b54b:e522) (Remote host closed the connection)
2021-02-25 09:17:35 +0100 <brkscnce> hey, is there some construct to reference a value computed within an expression multiple times in the expression?
2021-02-25 09:18:17 +0100 <brkscnce> something like python's walrus operator I guess
2021-02-25 09:18:57 +0100 <edwardk> i isn't necessarily o
2021-02-25 09:19:16 +0100 <edwardk> start with 'indexed state' and it might be easier
2021-02-25 09:19:28 +0100 <edwardk> s -> (a, s) becomes i -> (a, o) -- for state
2021-02-25 09:19:45 +0100 <koz_> Ah, I see!
2021-02-25 09:19:53 +0100 <edwardk> and you can talk about operations like pure :: a -> State i o a, and work out the operation for (>>=)
2021-02-25 09:20:01 +0100 <edwardk> er pure :: a -> State i i a
2021-02-25 09:20:15 +0100 <koz_> So the idea is that with _un_indexed st{ate,ore}, i ~ o?
2021-02-25 09:20:20 +0100 <edwardk> yeah
2021-02-25 09:20:40 +0100 <edwardk> this is what i usually label an 'atkey style' indexed monad
2021-02-25 09:20:42 +0100 <koz_> OK, thanks, that makes sense now.
2021-02-25 09:20:45 +0100 <brkscnce> trying to split a list, then decide on whether to include the first element of the second list in the first list instead based on a conditional
2021-02-25 09:20:45 +0100 <edwardk> where you have two parameters
2021-02-25 09:20:48 +0100 <koz_> I'm familiar with those.
2021-02-25 09:21:03 +0100 <edwardk> another equivalently powerful way is to use one index surprisingly. but a different kind
2021-02-25 09:21:25 +0100 <edwardk> this is the kleisli arrows of outrageous fortune paper by conor mcbride
2021-02-25 09:21:34 +0100 <edwardk> as well as the conversion to-from atkey style
2021-02-25 09:21:40 +0100 <edwardk> at least for the monad side
2021-02-25 09:21:50 +0100 <koz_> I tried reading that paper, but Conor's writing style throws me for a loop.
2021-02-25 09:21:55 +0100 <edwardk> i had to derive how to do it for the comonad side myself (it uses a rather different trick)
2021-02-25 09:22:02 +0100 <koz_> Might be a good time to look at it again though.
2021-02-25 09:22:07 +0100hiroaki_(~hiroaki@2a02:8108:8c40:2bb8:4773:d7d4:420a:eae0) (Ping timeout: 272 seconds)
2021-02-25 09:22:12 +0100 <koz_> Since I actually _understand_ your earlier derivations now. :P
2021-02-25 09:22:13 +0100 <edwardk> i find it more interesting to just write down the types and play with them
2021-02-25 09:23:20 +0100 <edwardk> i have an unpublished package here: https://github.com/ekmett/indexed/tree/master/src/Indexed
2021-02-25 09:23:59 +0100 <edwardk> https://github.com/ekmett/indexed/blob/master/src/Indexed/Comonad/Store.hs#L30 is a mcbride style store comonad
2021-02-25 09:24:02 +0100 <edwardk> for comparison
2021-02-25 09:24:07 +0100 <jle`> categories are just indexed monoids, whats the problem
2021-02-25 09:24:15 +0100totoro2021(~t@unaffiliated/totoro2021) (Read error: Connection reset by peer)
2021-02-25 09:24:18 +0100 <edwardk> i prefer monoidoids
2021-02-25 09:24:21 +0100 <koz_> jle`: :P
2021-02-25 09:24:32 +0100 <koz_> ~> is an NT?
2021-02-25 09:24:48 +0100 <edwardk> its the parametric monster we usually call a natural transformation but is stronger, yes
2021-02-25 09:25:06 +0100 <edwardk> forall i. s i -> a i
2021-02-25 09:25:23 +0100 <koz_> Yeah, that's the one I'm familiar with.
2021-02-25 09:25:28 +0100 <koz_> Just wanted to make sure.
2021-02-25 09:25:30 +0100totoro2021(~t@unaffiliated/totoro2021)
2021-02-25 09:26:25 +0100 <edwardk> in haskell that is a bit stronger than what folks in category theory call a natural transformation. morally you can think of it as in category theory that for each object in the category (i) you get an arrow associated with it from f i -> g i. which _seems_ like what you get here at first glance.
2021-02-25 09:26:45 +0100 <edwardk> then you realize instead of getting one arrow for each i you get one arrow in total, it can just be given all those types.
2021-02-25 09:27:04 +0100 <edwardk> you don't get to know i and do different things based on that information as long as the little square commutes
2021-02-25 09:27:24 +0100 <edwardk> so parametricity is a stronger constraint than what a category theorist means when they talk about natural transformations
2021-02-25 09:27:35 +0100 <edwardk> so i get super anal retentive when someone applies that word here =)
2021-02-25 09:27:49 +0100 <koz_> So what's the Edward-approved name for ~>?
2021-02-25 09:27:56 +0100 <edwardk> I usually go with ~>
2021-02-25 09:27:58 +0100 <edwardk> =)
2021-02-25 09:28:03 +0100 <koz_> How do you pronounce that?
2021-02-25 09:28:12 +0100 <edwardk> and make you try to figure out how to say "squiggly arrow" without sounding like a goofball
2021-02-25 09:28:14 +0100thorsten`(~Thorsten@ananke.uberspace.de)
2021-02-25 09:28:23 +0100 <edwardk> that is the penance for abusing the term natural transformation for so long ;)
2021-02-25 09:28:37 +0100 <koz_> Eh, I'll just say NT (as in, 'enn-tee').
2021-02-25 09:29:00 +0100edwardktwitches.
2021-02-25 09:29:03 +0100 <koz_> Then I can say it's a homophone that's completely unrelated to acronyms of anything.
2021-02-25 09:29:06 +0100 <koz_> Because English.
2021-02-25 09:29:55 +0100 <edwardk> https://www.cs.bham.ac.uk/~udr/papers/logical-relations-and-parametricity.pdf goes into the naturality vs. parametricity issue more deeply but it does get mathy fast
2021-02-25 09:30:11 +0100 <ukari> jackdk, thank you
2021-02-25 09:30:18 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-02-25 09:30:18 +0100 <thorsten`> Hi, I'm looking for a monad that models consuming elements from the head of a list. Is there any in base or transformers or should I just use State/StateT/ST?
2021-02-25 09:30:20 +0100 <koz_> edwardk: I might have a look at it when it's not 9.30pm.
2021-02-25 09:30:48 +0100 <edwardk> thorsten`: well. let's work it through for a sec
2021-02-25 09:31:00 +0100 <edwardk> you could always use State [x] a
2021-02-25 09:31:02 +0100 <brkscnce> the squiggly arrow thing reminds me of this smbc comic https://www.smbc-comics.com/?id=3278#comic
2021-02-25 09:31:14 +0100 <edwardk> but there's a technically slightly tighter monad you could build based on something called an update monad
2021-02-25 09:31:49 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2021-02-25 09:31:50 +0100 <edwardk> the issue with state is that state is a little 'too big' for the problem asked for. in that you can save the current string and restore back to it after other operations.
2021-02-25 09:32:00 +0100 <edwardk> do you know what a monoid action is?
2021-02-25 09:32:29 +0100 <thorsten`> in math; yes; in haskell: no
2021-02-25 09:32:43 +0100 <koz_> Oh oh oh, we get an edwardk article in real time!
2021-02-25 09:32:49 +0100koz_grabs popcorn.
2021-02-25 09:33:00 +0100 <edwardk> ok, so let's think about a monoid acting on your list. the monoid i'm going to choose will be the natural numbers with addition
2021-02-25 09:33:04 +0100 <edwardk> and the action will be 'drop'
2021-02-25 09:33:15 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2021-02-25 09:33:22 +0100hiroaki_(~hiroaki@2a02:8108:8c40:2bb8:b00a:55a1:d947:55ef)
2021-02-25 09:33:24 +0100 <edwardk> so we can model the limited subset of state actions we want to take with a monad that looks like
2021-02-25 09:33:45 +0100 <edwardk> newtype M x a = M { runM :: [x] -> (a, Int) }
2021-02-25 09:34:00 +0100borne(~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de)
2021-02-25 09:34:04 +0100 <edwardk> instead of being able to get _any_ list out, all you get is the monoid that acts on the input you've seen
2021-02-25 09:34:20 +0100 <edwardk> then applying drop with that number to the current list gives you the new tail that you can feed to the rest of (>>=)
2021-02-25 09:35:05 +0100 <edwardk> i wrote an older article on this topic: https://www.schoolofhaskell.com/user/edwardk/heap-of-successes
2021-02-25 09:35:27 +0100 <edwardk> based on an old paper on "How to replace failure with a list of successes" which is one of the earliest parser combinator approaches
2021-02-25 09:36:27 +0100 <edwardk> the goal there was to derive a slightly more efficient applicative for list-of-successes style parsing
2021-02-25 09:36:57 +0100 <edwardk> anyways, is it practically better than state? not entirely clear
2021-02-25 09:37:17 +0100 <edwardk> it has the downside that the action has to be applied over and over, so you 'drop' the same elements from the list in the left associated (>>=) case
2021-02-25 09:37:59 +0100ski. o O ( `Codensity' ? )
2021-02-25 09:38:06 +0100 <koz_> Was about to say...
2021-02-25 09:38:09 +0100 <edwardk> so you don't want to do this left associated, which means moving to a cps'd version of the monad to rule it out completely or using codensity or another trick, or just accepting that you work with state and that the only operations you really want to do are to drop
2021-02-25 09:38:10 +0100 <edwardk> yeah
2021-02-25 09:38:22 +0100 <edwardk> codensity is one solution, a cps'd state monad is another
2021-02-25 09:38:29 +0100 <edwardk> er cps'd update monad
2021-02-25 09:38:53 +0100 <edwardk> codensity is too big when directly applied, so the cps'd update monad is arguably better
2021-02-25 09:39:08 +0100 <ski> thorsten` : iirc, "consuming elements from the head of a list" is sometimes called `Supply' ?
2021-02-25 09:39:16 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 09:39:17 +0100 <edwardk> another option is to move to a representation of the input that has constant time drop, then left associated or right associated don't matter
2021-02-25 09:39:38 +0100 <thorsten`> edwardk: thanks, I'll try it with the M you provided :)
2021-02-25 09:39:41 +0100 <edwardk> e.g. replacing the [a] with a Vector a or some unboxed thing.
2021-02-25 09:40:07 +0100 <edwardk> thorsten`: in practice? i'd probably use State in production code. for learning? i'd probably build M.
2021-02-25 09:40:22 +0100 <ski> too big, in what sense ?
2021-02-25 09:40:36 +0100 <koz_> ski: Does too much stuff I think.
2021-02-25 09:40:37 +0100 <ski> @unmtl ContT o (StateT s m) a
2021-02-25 09:40:37 +0100 <lambdabot> (a -> s -> m (o, s)) -> s -> m (o, s)
2021-02-25 09:40:39 +0100 <ski> @unmtl ContT o (ReaderT s m) a
2021-02-25 09:40:39 +0100 <lambdabot> (a -> s -> m o) -> s -> m o
2021-02-25 09:40:48 +0100 <edwardk> in the same sense that codensity reader is bigger than reader
2021-02-25 09:41:04 +0100 <ski> the latte is what you want (with `forall o.') ?
2021-02-25 09:41:23 +0100 <edwardk> yeah with the output s being an Int
2021-02-25 09:41:28 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-25 09:41:36 +0100 <edwardk> and the input one [x]
2021-02-25 09:41:37 +0100 <ski> @unmtl StateT s (ContT o m) a
2021-02-25 09:41:38 +0100 <lambdabot> s -> (a -> s -> m o) -> m o
2021-02-25 09:41:45 +0100 <thorsten`> ski: ah, is see, Since I only need it in one place, I think I'd rather use state or a self-built than introducing a dependency to transformers-supply
2021-02-25 09:42:41 +0100 <ski> edwardk : `forall o. (a -> Int -> m o) -> [x] -> m o' ?
2021-02-25 09:42:52 +0100 <edwardk> if it must be a transformer, yes.
2021-02-25 09:42:56 +0100 <ski> yea
2021-02-25 09:43:23 +0100 <ski> (just asking for the transformer to get two for the price of one)
2021-02-25 09:43:47 +0100 <edwardk> yeah, that is the 'right sized' version of it. this is basically the same approach from my 'free monads for less' article series
2021-02-25 09:43:56 +0100 <edwardk> where codensity was sufficient but did way too much
2021-02-25 09:45:42 +0100edwardkstares down quite how many representation-indexed monads he has to write and decides maybe he should read some random webnovel instead
2021-02-25 09:47:07 +0100edwardkthen looks up at state and realizes he doesn't know hw to simultaneously index on both the representation of s and a nicely.
2021-02-25 09:47:08 +0100 <ski> now i'm wondering whether `StateT s (Codensity m) a ~= s -> Codensity m (a,s) ~= forall o. s -> (a -> s -> m o) -> m o' would avoid the left-associativity problem
2021-02-25 09:48:10 +0100 <edwardk> quite likely we wound up using a cps'd monad like that as the base monad in the monad transformer stack for scalaz and that was enough to prevent all the derived monads from blowing the stack
2021-02-25 09:48:18 +0100koz_just read 'coupdate comonad' and giggled.
2021-02-25 09:48:20 +0100 <edwardk> so while i haven't thought this through rigorously it feels right
2021-02-25 09:48:44 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 256 seconds)
2021-02-25 09:48:45 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-02-25 09:49:05 +0100esp32_prog(~esp32_pro@185.195.233.147) (Ping timeout: 240 seconds)
2021-02-25 09:50:06 +0100 <edwardk> koz_: i still want 'relative lenses' made out of coupdate comonad coalgebras where you get a restricted update vocabulary rather than the ability to set all values in the target type regardless of where you came from
2021-02-25 09:50:45 +0100 <koz_> edwardk: Getter and setter technology for Haskell. :P
2021-02-25 09:50:53 +0100ski. o O ( "co-(update monad algebras)" )
2021-02-25 09:51:26 +0100 <edwardk> something like (a -> f i) -> s -> f j -- where i is a monoid that acts on a, and j is a monoid that acts on s.
2021-02-25 09:51:30 +0100 <ski> how's it relative, or restricted ?
2021-02-25 09:51:41 +0100 <edwardk> and then the lens is sort of a translation between update languages
2021-02-25 09:51:47 +0100 <ski> hm
2021-02-25 09:52:22 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 09:53:34 +0100 <Franciman> Hi, I was reading that https://hackage.haskell.org/package/contravariant-1.4/docs/Data-Functor-Contravariant.html if a type is both a functor and a contravariant (lawfully) then I can prove that
2021-02-25 09:53:40 +0100 <Franciman> fmap f = contramap f = phantom
2021-02-25 09:53:44 +0100 <edwardk> its restricted for the same reason that an update monad is a 'restricted' state monad.
2021-02-25 09:53:45 +0100 <Franciman> how can I prove it?
2021-02-25 09:53:53 +0100fendor(~fendor@91.141.0.220.wireless.dyn.drei.com)
2021-02-25 09:54:07 +0100 <edwardk> with a state monad holding, say, all the file handles you've seen and some details about them, you have to worry about the unrestricted power of get/set
2021-02-25 09:54:52 +0100 <ski> edwardk : mhm. you can only specify increments/diffs, relative to the current position, rather that substituting an arbitrary new one for the old
2021-02-25 09:54:56 +0100 <edwardk> Franciman: my recollection was that the proof used the free theorems for fmap/contramap
2021-02-25 09:55:31 +0100 <edwardk> ski: exactly. so if i give you a limited vocabulary for your monoidal updates (or categorical updates if you index this whole construction) then i can know its made out of legal steps
2021-02-25 09:55:34 +0100 <ski> edwardk : what about the ability to change the type of the target of the lens ?
2021-02-25 09:55:41 +0100 <Franciman> thanks edwardk
2021-02-25 09:55:52 +0100 <edwardk> ski: replace monoid actions with category actions
2021-02-25 09:56:03 +0100 <ski> you use a "category action" instead of a monoid action ?
2021-02-25 09:56:05 +0100 <ski> ah
2021-02-25 09:56:06 +0100 <edwardk> becomes harder to state in haskell
2021-02-25 09:56:10 +0100 <ski> mm
2021-02-25 09:56:34 +0100ski. o O ( "vertical categorification" )
2021-02-25 09:57:04 +0100 <edwardk> just like how its hard to _really_ give correct types to incremental programs as you have some term x in type a. and some update that is actually dependent on the term x you have in type a.
2021-02-25 09:57:26 +0100 <ski> (hm, i guess it's "horizontal". easy to confuse these ones)
2021-02-25 09:57:28 +0100 <edwardk> proper incremental changes require a sort of dependent type
2021-02-25 09:57:46 +0100acidjnk_new(~acidjnk@p200300d0c739092208198526eb118d06.dip0.t-ipconnect.de)
2021-02-25 09:58:22 +0100 <ski> ("horizontal" being to replace a single object with multiple ones. "vertical" being to introduce "morphisms between my morphisms !?". and there's also "replace undirected by directed")
2021-02-25 09:58:47 +0100 <edwardk> similarly "real" update monads want a more accurate type than just a monoid acting on a state. tarmo uustalu's paper on the topic gives a more accurate condition
2021-02-25 09:59:27 +0100 <ski> edwardk : re correct types for incremental/adaptive computation .. yea, i remember some paper about incremental lambda-calculus mentioned that
2021-02-25 09:59:30 +0100 <edwardk> https://danel.ahman.ee/papers/types13postproc.pdf
2021-02-25 09:59:55 +0100 <edwardk> is the better update monad paper than the rant above.
2021-02-25 10:00:08 +0100 <ski> ok, ty
2021-02-25 10:00:30 +0100 <edwardk> and its why i tend to think of lots of things in 'directed containers' style vocabulary
2021-02-25 10:00:39 +0100 <edwardk> unfortunately i can't quite express it right in haskell
2021-02-25 10:01:04 +0100 <edwardk> so i limit myself to the monoid-based parody of the idea given above which works for simple things i might update
2021-02-25 10:01:21 +0100 <ski> makes sense
2021-02-25 10:03:30 +0100Feuermagier(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6)
2021-02-25 10:04:26 +0100 <edwardk> currently bending my brain around representation polymorphic ST before trying to move to tougher prey
2021-02-25 10:05:26 +0100sw1nn(~sw1nn@2a00:23c6:2385:3a00:6be:14ea:238:81cf) (Ping timeout: 240 seconds)
2021-02-25 10:05:27 +0100 <edwardk> writing bindST felt like it was quite an accomplishment the other night
2021-02-25 10:05:39 +0100 <edwardk> that Lev trick i mentioned turned out to be the key to making it possible at all
2021-02-25 10:05:47 +0100whald(~trem@2a02:810a:8100:11a6:15b2:7454:c339:fb18) (Remote host closed the connection)
2021-02-25 10:05:59 +0100 <edwardk> without it i think bindST has to live in a class parameterized on both source and target representation
2021-02-25 10:06:11 +0100 <edwardk> and that rather drastically limits the viability of the technique
2021-02-25 10:06:29 +0100 <ski> "A Theory of Changes for Higher-Order Languages: Incrementalizing λ-Calculi by Static Differentiation" by Yufei Cai,Paulo G. Giarrusso (pgiarrusso),Tillmann Rendel,Klaus Ostermann in 2014-06-(09-11) at <https://www.informatik.uni-marburg.de/~pgiarrusso/papers/pldi14-ilc-author-final.pdf>,"Incremental λ-Calculus" <https://www.informatik.uni-marburg.de/~pgiarrusso/ILC/> was the paper i was thinking about
2021-02-25 10:06:35 +0100 <ski> above, mentioning needing dependent types to allow the admissible changes to depend on the current position
2021-02-25 10:06:50 +0100 <edwardk> yeah
2021-02-25 10:07:27 +0100 <ski> now you're parameterizing just on target ?
2021-02-25 10:07:39 +0100 <edwardk> i split the class
2021-02-25 10:07:47 +0100 <edwardk> by using Lev to pull off the trick
2021-02-25 10:08:20 +0100Feuermagier_(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6)
2021-02-25 10:08:31 +0100 <edwardk> mkSTRes :: forall r (b :: TYPE r) s. STRep r => State# s -> Lev b -> (# State# s, b #) -- is the secret
2021-02-25 10:09:19 +0100Feuermagier_octopus
2021-02-25 10:09:21 +0100 <edwardk> er rather bindST is easy
2021-02-25 10:09:24 +0100 <edwardk> fmapST is hard
2021-02-25 10:09:25 +0100 <edwardk> sorry
2021-02-25 10:09:29 +0100octopusoctopus120
2021-02-25 10:09:31 +0100hendursa1(~weechat@gateway/tor-sasl/hendursaga)
2021-02-25 10:09:42 +0100 <edwardk> for a 'linear' ST that is representation polymorphic i get something like:
2021-02-25 10:10:15 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 246 seconds)
2021-02-25 10:10:38 +0100 <edwardk> https://www.irccloud.com/pastebin/YcMvs6bX/ST.hs
2021-02-25 10:10:43 +0100hendursaga(~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 268 seconds)
2021-02-25 10:10:49 +0100 <octopus120> interesting
2021-02-25 10:11:03 +0100octopus120(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) ()
2021-02-25 10:11:17 +0100 <edwardk> case unST m s of (# s', a #) -> mkSTRes s' (f a) -- is the meat of this
2021-02-25 10:11:34 +0100 <ski> `mkSTRes' is basically just a pairing, that works representation-polymorphically ?
2021-02-25 10:11:37 +0100 <edwardk> remember i can't apply a function to an argument without knowing the representation of that argument.
2021-02-25 10:12:02 +0100 <edwardk> so if i go to write case unST m s of (# s', a #) -> (# s', f a #) -- i get stuck
2021-02-25 10:12:07 +0100 <edwardk> i can compute -> f a there
2021-02-25 10:12:14 +0100 <edwardk> but i can't put it into the (# , #)
2021-02-25 10:12:24 +0100 <edwardk> because i don't know the representation of the output of f a
2021-02-25 10:12:45 +0100 <ski> mhm
2021-02-25 10:12:59 +0100 <ski> ah, `mkSTRes' is a method
2021-02-25 10:13:08 +0100 <edwardk> but... Lev is basically the wrapper being built by f a, i lift 'f a' into a calculation that will return its result when you peel the (()~()) => ... off
2021-02-25 10:13:30 +0100average(uid473595@gateway/web/irccloud.com/x-zorlcjntmtivoxma)
2021-02-25 10:13:32 +0100 <edwardk> and then the mkSTRes on the target type can invoke that get the answer and put it in the (#, #)
2021-02-25 10:14:06 +0100 <edwardk> with that i get the option to define a representation polymorphic functor one of several ways and i'm not sure which i like
2021-02-25 10:14:19 +0100 <edwardk> class Functor (f :: forall (r :: RuntimeRep). TYPE r -> TYPE s) where; type FunctorRep f :: RuntimeRep -> Constraint; fmap :: forall r (a :: TYPE r) rb (b :: TYPE rb). (FunctorRep f r, FunctorRep f rb) => (a -> b) -> f a -> f b -- is one such option
2021-02-25 10:14:39 +0100 <edwardk> this however limits me to only functors that work for all representations
2021-02-25 10:14:58 +0100 <edwardk> or rather for whatever ones have my particular FunctorRep class instantiated
2021-02-25 10:15:08 +0100 <edwardk> which i'd do the same backpack dance i'm doing for all of unlifted for at least the base ones
2021-02-25 10:15:19 +0100 <edwardk> another option is something like
2021-02-25 10:15:34 +0100 <edwardk> class JankyFunctor (f :: TYPE r -> TYPE s) (g :: TYPE r' -> TYPE s') | f r -> s, g r' -> s', f r' -> g, g r -> f where jmap :: forall (a :: TYPE r) (b :: TYPE r'). (a -> b) -> f a -> g b
2021-02-25 10:15:52 +0100 <edwardk> where you give me instances pointwise.
2021-02-25 10:16:18 +0100 <ski> hm, so `f b' could be an unboxed tuple, e.g. ?
2021-02-25 10:16:28 +0100 <edwardk> but this turns out to burn me when it comes to my Maybe and List definitions in the package.
2021-02-25 10:16:29 +0100 <edwardk> yeah
2021-02-25 10:16:41 +0100pera(~pera@unaffiliated/pera)
2021-02-25 10:16:44 +0100integerDivision(d5b21a29@gateway/web/cgi-irc/kiwiirc.com/ip.213.178.26.41)
2021-02-25 10:16:48 +0100 <edwardk> JankyFunctor is pretty robust. i can use it for Maybe# which is going to produce an unboxed sum, etc.
2021-02-25 10:17:17 +0100 <edwardk> but its not good enough for List where List is actually a type family so it can include [] and Maybe which is actually a type family so it can include Prelude.Maybe
2021-02-25 10:17:33 +0100 <edwardk> because i can't write JankyFunctor List List
2021-02-25 10:17:35 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-02-25 10:17:48 +0100 <edwardk> or JankyFunctor (List @r) (List @s) -- because List is a synonym
2021-02-25 10:17:55 +0100 <edwardk> so to fix that i need to split JankyFunctor in half
2021-02-25 10:18:00 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 10:18:01 +0100sw1nn(~sw1nn@2a00:23c6:2385:3a00:9310:964a:9231:59c9)
2021-02-25 10:18:20 +0100 <edwardk> and turn the inference rules that determine g from f and the second representation into one class, and the way back into another.
2021-02-25 10:18:38 +0100 <edwardk> just like i did with Wrapped and Rewrapped in lens to make inference work a bit better
2021-02-25 10:18:39 +0100 <ski> hm, `JankyFunctor' makes me think of natural transformations
2021-02-25 10:18:48 +0100 <edwardk> it should =)
2021-02-25 10:19:13 +0100 <ski> (using the diagonal in the naturality square, instead of the plain "uniindexed" map, for each index)
2021-02-25 10:19:21 +0100 <edwardk> except here unlike in the parametric crappy haskell case the 'points' matter.
2021-02-25 10:19:25 +0100 <edwardk> yep
2021-02-25 10:20:27 +0100 <edwardk> so with the split JankyFunctor i could basically make it say that coming from Prelude.Maybe you can infer any member of the type family Maybe @r
2021-02-25 10:20:39 +0100 <ski> i've noticed libary functions commonly offering `forall a b. (a -> b) -> (F a -> G b)' instead of, or in addition to, `forall a. F a -> G a'
2021-02-25 10:21:09 +0100 <edwardk> and then if the type family was closed and switched between Prelude.Maybe and a fixed data family MaybeFam then i could have the other instance mapping from MaybeFam also to the type family
2021-02-25 10:21:22 +0100 <edwardk> and then JankyFunctor's split twin properly handles my List and Maybe type families
2021-02-25 10:21:28 +0100 <ski> or, hm, something like that, at least
2021-02-25 10:22:28 +0100functionalSalad(d5b21a29@gateway/web/cgi-irc/kiwiirc.com/ip.213.178.26.41)
2021-02-25 10:22:44 +0100 <edwardk> anyways with that in place i'd be able to work in IO returning unlifted values from individual combinators or ST s, etc.
2021-02-25 10:22:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
2021-02-25 10:22:54 +0100 <edwardk> the next hurdle is of course State s a
2021-02-25 10:23:02 +0100 <edwardk> which is a nightmare because of the (s, a)
2021-02-25 10:23:13 +0100 <edwardk> CPSing it can let me play Lev games i think
2021-02-25 10:23:39 +0100 <ski> but prevents some lazy games, yes ?
2021-02-25 10:23:39 +0100functionalSalad(d5b21a29@gateway/web/cgi-irc/kiwiirc.com/ip.213.178.26.41) (Client Quit)
2021-02-25 10:23:43 +0100 <edwardk> and of course there's the ReaderT IO pattern which might reduce the pressure
2021-02-25 10:23:44 +0100 <edwardk> yeah
2021-02-25 10:24:06 +0100 <edwardk> but then having a strict (# #) tuple in the result would also
2021-02-25 10:24:19 +0100 <ski> mm
2021-02-25 10:24:28 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 10:24:44 +0100 <edwardk> so i'm slowly butting into the ceiling for this crazy unlifted approach
2021-02-25 10:24:45 +0100 <ski> (i was thinking of some left-recursion example)
2021-02-25 10:24:50 +0100 <edwardk> yeah
2021-02-25 10:25:56 +0100 <ski> (monochrom had some nice examples of this, iirc, on <lpaste.net> .. also some fun `unsafeInterleaveST' ones)
2021-02-25 10:26:25 +0100 <edwardk> my usual goto is the foo = do fail "don't launch missiles"; put "ok"
2021-02-25 10:26:38 +0100 <ski> hehe, yah
2021-02-25 10:27:01 +0100 <ski> (still not really getting how the `JankyFunctor' would apply/help with what you're doing)
2021-02-25 10:27:37 +0100 <edwardk> the goal was to get (>>=) , etc. to just work with representation polymorphic functors
2021-02-25 10:27:45 +0100 <edwardk> even if the arrows you feed me for fmap, etc. change reps
2021-02-25 10:28:11 +0100 <edwardk> :t enumFromThenTo
2021-02-25 10:28:12 +0100 <lambdabot> Enum a => a -> a -> a -> [a]
2021-02-25 10:28:13 +0100 <ski> "representation polymorphic functors" meaning what .. or how does it help ?
2021-02-25 10:28:19 +0100kuribas(~user@ptr-25vy0i970oqtzc3b45o.18120a2.ip6.access.telenet.be)
2021-02-25 10:28:26 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds)
2021-02-25 10:28:52 +0100 <edwardk> the default definition of that builds up a list of values of type Int, but then if i instantiate that for an a of kind TYPE 'DoubleRep or something i have to convert the list to one of a different type
2021-02-25 10:28:58 +0100 <edwardk> it'd be nice if 'map' just worked here
2021-02-25 10:29:10 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Read error: Connection reset by peer)
2021-02-25 10:29:22 +0100 <ski> mhm
2021-02-25 10:29:23 +0100 <edwardk> Just 1# :: Maybe Int#
2021-02-25 10:29:31 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 10:29:33 +0100 <edwardk> is the easiest way to see it
2021-02-25 10:30:15 +0100 <edwardk> or Maybe (MutVar# RealWold Foo)
2021-02-25 10:30:24 +0100 <edwardk> holding an unlifted MutVar# directly
2021-02-25 10:30:27 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Ping timeout: 268 seconds)
2021-02-25 10:30:37 +0100 <edwardk> now use (>>=) on that Maybe
2021-02-25 10:30:51 +0100 <edwardk> or let an IO action return the raw unlifted Array#
2021-02-25 10:31:08 +0100 <edwardk> rather than having to open up IO and go in and fiddle with State# RealWorld yourself
2021-02-25 10:31:18 +0100 <edwardk> and then put it in a box before a user sees it
2021-02-25 10:32:04 +0100 <edwardk> i'd _like_ to put programming with unlifted values on nearly equal footing to programming with lifted ones
2021-02-25 10:32:11 +0100 <edwardk> with the standard classes just working
2021-02-25 10:32:20 +0100 <edwardk> in practice i anticipate this needs more compiler support
2021-02-25 10:32:25 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-25 10:32:27 +0100 <ski> the unlifted `MutVar# s a' is the reference/pointer/address directly to the cell, yes ?
2021-02-25 10:32:32 +0100 <edwardk> but without a decent prototype of the vision its hard to get others on board
2021-02-25 10:32:33 +0100 <edwardk> yeah
2021-02-25 10:32:52 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-25 10:32:54 +0100 <edwardk> data IORef s a = IORef (MutVar# s a) -- is the box around the mutvar
2021-02-25 10:33:19 +0100 <edwardk> the MutVar# s a is a mutable reference cell on the heap that holds a pointer to the actual object
2021-02-25 10:34:18 +0100 <edwardk> but with type IORef# = MutVar# RealWorld -- newIORef# :: a -> IO (IORef# a))
2021-02-25 10:34:56 +0100 <edwardk> gives me back the naked MutVar# and then i can put it in my constructor with my own box, and use the nice do notation even though its unlifted, etc.
2021-02-25 10:35:04 +0100dsrt^(dsrt@ip98-184-89-2.mc.at.cox.net)
2021-02-25 10:35:27 +0100 <ski> sometimes i've wanted to be able to rephrase e.g. `newtype Foobar a = MkFooBar (ReaderT R (State S) a)' as `newtype Foobar :: * -> * = MkFooBar (ReaderT R (State S))' .. iow have the target type of `newtype's not necessarily be `*'
2021-02-25 10:35:52 +0100 <edwardk> we have unlifted newtypes now
2021-02-25 10:36:07 +0100 <ski> now it can be `#' (i use that as an abbreviation for the details), as well, which is an improvement
2021-02-25 10:36:09 +0100 <edwardk> its not quite there
2021-02-25 10:36:19 +0100 <edwardk> but its getting closer
2021-02-25 10:36:35 +0100 <edwardk> i advocated for the newtypes over kind i -> ... as well at the time
2021-02-25 10:36:43 +0100 <edwardk> using Coercible as a justification
2021-02-25 10:36:50 +0100 <edwardk> but simon didn't buy it
2021-02-25 10:37:06 +0100 <edwardk> i'll keep making the case
2021-02-25 10:37:12 +0100skismiles
2021-02-25 10:37:33 +0100 <ski> i'm not quite sure how it would work .. but i think it would be nice, if we could get a reasonable story
2021-02-25 10:37:49 +0100 <edwardk> i think the issue is the constructor doesn't make sense
2021-02-25 10:37:50 +0100leo___(~leo@cpc96810-rdng27-2-0-cust409.15-3.cable.virginm.net)
2021-02-25 10:37:57 +0100 <ski> yea ..
2021-02-25 10:38:13 +0100 <edwardk> so you can only coerce
2021-02-25 10:38:22 +0100 <edwardk> and we don't have a syntax for that
2021-02-25 10:38:25 +0100 <ski> (i've been pondering a little some ideas about internal language in functor categories ..)
2021-02-25 10:39:39 +0100 <edwardk> another option would be some scarier rules about coercible that looked at the definition of a newtype and checked to see if it could be eta-reduced like that
2021-02-25 10:39:51 +0100 <edwardk> and gave the more general Coercible definition
2021-02-25 10:40:30 +0100 <edwardk> Then the Coercible for Foo a to Bar b would be build off of Coercible Foo Bar and Coercible a b
2021-02-25 10:41:14 +0100 <edwardk> right now you have to fully saturate which blocks a number of usecases
2021-02-25 10:42:25 +0100Feuermagier(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Quit: Leaving)
2021-02-25 10:42:44 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-wygvvgugafrkzfoy) (Quit: Connection closed for inactivity)
2021-02-25 10:43:33 +0100 <ski> also reminds me i've wanted to be able to say things like `newtype c (Foo a) = FmapFoo (c (Bar a Int))' where say `Foo :: * -> K',`Bar :: * -> * -> K' and `FmapFoo :: forall (c :: K -> *). c (Bar a Int) -> c (Foo a)'
2021-02-25 10:44:03 +0100 <edwardk> yeah, that rhymes here
2021-02-25 10:44:16 +0100afidegnum(~afidegnum@102.176.65.99) (Ping timeout: 240 seconds)
2021-02-25 10:44:28 +0100 <edwardk> ok, sleepy time. i have a stupid early day tomorrow
2021-02-25 10:44:42 +0100 <ski> .. also wanting to be able to redeclare a `newtype', with a different data constructor, as long as the representations are coercible
2021-02-25 10:44:59 +0100Feuermagier(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6)
2021-02-25 10:45:24 +0100 <edwardk> pattern synonyms?
2021-02-25 10:45:54 +0100 <ski> so we could both have `newtype State s a = MkState (s -> (s,a))' and `newtype State s a = StateFromStateT (StateT Identity s a)' at the same time
2021-02-25 10:46:07 +0100 <ski> yea .. i guess
2021-02-25 10:46:17 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-02-25 10:46:27 +0100afidegnum(~afidegnum@102.176.65.243)
2021-02-25 10:46:46 +0100 <ski> (well, or possibly the latter being a synonym, `StateT' still being a a `newtype')
2021-02-25 10:47:32 +0100 <ski> have fun with `Lev'
2021-02-25 10:51:57 +0100catt(~r@31.127.31.99)
2021-02-25 10:53:12 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2021-02-25 10:54:19 +0100DataComp_(~lumeng@50.43.26.251)
2021-02-25 10:54:23 +0100MVQq(~anja@198.254.199.42)
2021-02-25 10:54:27 +0100vchlup_(~vchlup@nat.brnet.cz)
2021-02-25 10:54:34 +0100hololeap(~hololeap@unaffiliated/hololeap) (Ping timeout: 265 seconds)
2021-02-25 10:54:39 +0100dcoutts_(~dcoutts@unaffiliated/dcoutts)
2021-02-25 10:54:40 +0100travisb_(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-02-25 10:54:43 +0100ralu9(~ralu@static.211.245.203.116.clients.your-server.de)
2021-02-25 10:54:49 +0100dh(dh@bsd.ee) (Disconnected by services)
2021-02-25 10:54:55 +0100dh_(dh@bsd.ee)
2021-02-25 10:55:03 +0100concept27(~concept2@unaffiliated/tubo)
2021-02-25 10:55:05 +0100MasseR3(~MasseR@51.15.143.128)
2021-02-25 10:55:20 +0100madnificent_(~madnifice@static.210.74.63.178.clients.your-server.de)
2021-02-25 10:55:20 +0100lockshaw_(~lockshaw@165.22.163.71)
2021-02-25 10:55:36 +0100LittleFox94(~littlefox@rondra.lf-net.org)
2021-02-25 10:55:36 +0100dave_uy3(~david@108.61.193.26)
2021-02-25 10:55:44 +0100koz(~koz@2404:4408:4342:2a00:1958:92dc:60f3:680b)
2021-02-25 10:55:52 +0100maerwald_(~maerwald@mail.hasufell.de)
2021-02-25 10:55:55 +0100datajerk_(~datajerk@sense.net)
2021-02-25 10:55:59 +0100sepples_(~sepples@67.205.168.224)
2021-02-25 10:56:00 +0100mrusme(~mrus@128.199.8.231)
2021-02-25 10:56:09 +0100dorkside1(~tdbgamer@208.190.197.222)
2021-02-25 10:56:37 +0100xlei_(znc@unaffiliated/xlei)
2021-02-25 10:56:41 +0100Bergle_3(~Bergle_4@101.165.90.119)
2021-02-25 10:56:47 +0100hexo|(~hexo@83.167.228.130)
2021-02-25 10:57:12 +0100smerdyakov7(~dan@5.146.194.90)
2021-02-25 10:57:32 +0100Sparad0x(~etienne@ns3123347.ip-51-68-152.eu)
2021-02-25 10:57:53 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 10:58:00 +0100hyiltiz__(~quassel@31.220.5.250)
2021-02-25 10:58:11 +0100dwts_(pid@gateway/shell/blinkenshell.org/x-cbprcwhcmsnoinei)
2021-02-25 10:58:18 +0100theDon_(~td@muedsl-82-207-238-098.citykom.de)
2021-02-25 10:58:18 +0100justsome1(~justsomeg@unaffiliated/--/x-3805311)
2021-02-25 10:58:27 +0100charukiewicz_(~quassel@irouteince04.i.subnet.rcn.com)
2021-02-25 10:58:27 +0100TommyC7(~TommyC@unaffiliated/sepulchralbloom)
2021-02-25 10:58:41 +0100mmarusea1ph2(~mihai@198.199.100.72)
2021-02-25 10:58:41 +0100lkurusa_(~lkurusa@209.250.237.122)
2021-02-25 10:58:45 +0100hpc_(~juzz@ip98-169-35-13.dc.dc.cox.net)
2021-02-25 10:58:50 +0100hiredman_(~hiredman@volyova.ec2.thelastcitadel.com)
2021-02-25 10:58:55 +0100tomku|two(~tomku@unaffiliated/tomku)
2021-02-25 10:58:58 +0100saurik_(saurik@carrier.saurik.com)
2021-02-25 10:58:59 +0100retlo(~retlo@172.245.134.89)
2021-02-25 10:59:11 +0100lekc(~Neuromanc@unaffiliated/neuromancer)
2021-02-25 10:59:12 +0100cole-h_(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-25 10:59:19 +0100rotaerk_(rotaerk@2600:3c02::f03c:91ff:fe70:4a45)
2021-02-25 10:59:31 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Disconnected by services)
2021-02-25 10:59:33 +0100Katarushisu3(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net)
2021-02-25 10:59:35 +0100lekcNeuromancer
2021-02-25 11:00:07 +0100omnitrogen_(~omnitroge@vps-c9700282.vps.ovh.net)
2021-02-25 11:00:09 +0100meck_(~meck@li1809-18.members.linode.com)
2021-02-25 11:00:16 +0100mstksg(~mstksg@cpe-23-240-75-236.socal.res.rr.com)
2021-02-25 11:00:16 +0100mstksg(~mstksg@cpe-23-240-75-236.socal.res.rr.com) (Changing host)
2021-02-25 11:00:16 +0100mstksg(~mstksg@unaffiliated/mstksg)
2021-02-25 11:00:25 +0100tolt_(~weechat-h@li219-154.members.linode.com)
2021-02-25 11:00:27 +0100earthy_(~arthurvl@deban2.xs4all.space)
2021-02-25 11:00:38 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-02-25 11:00:39 +0100Chobbes_(~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net)
2021-02-25 11:00:44 +0100tv1(~tv@unaffiliated/tv)
2021-02-25 11:00:49 +0100lassulus_(~lassulus@NixOS/user/lassulus)
2021-02-25 11:01:04 +0100cyphase_eviltwin(~cyphase@unaffiliated/cyphase)
2021-02-25 11:01:21 +0100chirpsal1(~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net)
2021-02-25 11:01:57 +0100kloeri_(~kloeri@freenode/staff/exherbo.kloeri)
2021-02-25 11:02:57 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2021-02-25 11:03:09 +0100stree(~stree@68.36.8.116) (*.net *.split)
2021-02-25 11:03:09 +0100rotaerk(~rotaerk@ender.afternet.org) (*.net *.split)
2021-02-25 11:03:09 +0100koz_(~koz@121.99.240.58) (*.net *.split)
2021-02-25 11:03:09 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (*.net *.split)
2021-02-25 11:03:09 +0100DataComputist(~lumeng@50.43.26.251) (*.net *.split)
2021-02-25 11:03:09 +0100theDon(~td@muedsl-82-207-238-098.citykom.de) (*.net *.split)
2021-02-25 11:03:09 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (*.net *.split)
2021-02-25 11:03:10 +0100cyphase(~cyphase@unaffiliated/cyphase) (*.net *.split)
2021-02-25 11:03:10 +0100maerwald(~maerwald@mail.hasufell.de) (*.net *.split)
2021-02-25 11:03:10 +0100vchlup(~vchlup@nat.brnet.cz) (*.net *.split)
2021-02-25 11:03:10 +0100petersen(~petersen@redhat/juhp) (*.net *.split)
2021-02-25 11:03:10 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (*.net *.split)
2021-02-25 11:03:10 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (*.net *.split)
2021-02-25 11:03:10 +0100Katarushisu(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (*.net *.split)
2021-02-25 11:03:10 +0100dwts(pid@gateway/shell/blinkenshell.org/x-iihycrpwtmkkjrix) (*.net *.split)
2021-02-25 11:03:10 +0100hexo-(~hexo@83.167.228.130) (*.net *.split)
2021-02-25 11:03:11 +0100meck(~meck@li1809-18.members.linode.com) (*.net *.split)
2021-02-25 11:03:11 +0100madnificent(~madnifice@static.210.74.63.178.clients.your-server.de) (*.net *.split)
2021-02-25 11:03:11 +0100gienah(~mwright@gentoo/developer/gienah) (*.net *.split)
2021-02-25 11:03:11 +0100MarcelineVQ(~anja@198.254.199.42) (*.net *.split)
2021-02-25 11:03:11 +0100tomku(~tomku@unaffiliated/tomku) (*.net *.split)
2021-02-25 11:03:11 +0100datajerk(~datajerk@sense.net) (*.net *.split)
2021-02-25 11:03:11 +0100mrus(~mrus@128.199.8.231) (*.net *.split)
2021-02-25 11:03:12 +0100dorkside(~tdbgamer@208.190.197.222) (*.net *.split)
2021-02-25 11:03:12 +0100smerdyakov(~dan@5.146.194.90) (*.net *.split)
2021-02-25 11:03:12 +0100dave_uy(~david@108.61.193.26) (*.net *.split)
2021-02-25 11:03:12 +0100charukiewicz(~quassel@irouteince04.i.subnet.rcn.com) (*.net *.split)
2021-02-25 11:03:12 +0100shailangsa(~shailangs@host86-186-191-40.range86-186.btcentralplus.com) (*.net *.split)
2021-02-25 11:03:12 +0100mmaruseacph2(~mihai@198.199.100.72) (*.net *.split)
2021-02-25 11:03:12 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (*.net *.split)
2021-02-25 11:03:12 +0100yahb(xsbot@haskell/bot/yahb) (*.net *.split)
2021-02-25 11:03:12 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker) (*.net *.split)
2021-02-25 11:03:12 +0100TommyC(~TommyC@unaffiliated/sepulchralbloom) (*.net *.split)
2021-02-25 11:03:12 +0100dcoutts(~dcoutts@unaffiliated/dcoutts) (*.net *.split)
2021-02-25 11:03:12 +0100LittleFox(~littlefox@rondra.lf-net.org) (*.net *.split)
2021-02-25 11:03:12 +0100tv(~tv@unaffiliated/tv) (*.net *.split)
2021-02-25 11:03:13 +0100tabemann(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (*.net *.split)
2021-02-25 11:03:13 +0100hyiltiz(~quassel@unaffiliated/hyiltiz) (*.net *.split)
2021-02-25 11:03:13 +0100earthy(~arthurvl@deban2.xs4all.space) (*.net *.split)
2021-02-25 11:03:13 +0100noctux(~noctux@unaffiliated/noctux) (*.net *.split)
2021-02-25 11:03:13 +0100swater(bouhier200@perso.iiens.net) (*.net *.split)
2021-02-25 11:03:13 +0100c-rog(~c-rog@traffic.simst.im) (*.net *.split)
2021-02-25 11:03:13 +0100lassulus(~lassulus@NixOS/user/lassulus) (*.net *.split)
2021-02-25 11:03:13 +0100MasseR(~MasseR@51.15.143.128) (*.net *.split)
2021-02-25 11:03:13 +0100lkurusa(~lkurusa@fedora/Levex) (*.net *.split)
2021-02-25 11:03:13 +0100jle`(~mstksg@unaffiliated/mstksg) (*.net *.split)
2021-02-25 11:03:13 +0100omnitrogen(~omnitroge@vps-c9700282.vps.ovh.net) (*.net *.split)
2021-02-25 11:03:13 +0100chirpsalot(~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (*.net *.split)
2021-02-25 11:03:13 +0100Chobbes(~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) (*.net *.split)
2021-02-25 11:03:13 +0100Bergle_2(~Bergle_4@101.165.90.119) (*.net *.split)
2021-02-25 11:03:13 +0100Sparadox(~etienne@ns3123347.ip-51-68-152.eu) (*.net *.split)
2021-02-25 11:03:13 +0100concept2(~concept2@unaffiliated/tubo) (*.net *.split)
2021-02-25 11:03:13 +0100kloeri(~kloeri@freenode/staff/exherbo.kloeri) (*.net *.split)
2021-02-25 11:03:13 +0100Reiser(~0a2a0001@static.210.242.216.95.clients.your-server.de) (*.net *.split)
2021-02-25 11:03:14 +0100saurik(saurik@carrier.saurik.com) (*.net *.split)
2021-02-25 11:03:14 +0100\2E0KNO(~retlo@172.245.134.89) (*.net *.split)
2021-02-25 11:03:14 +0100xlei(znc@unaffiliated/xlei) (*.net *.split)
2021-02-25 11:03:14 +0100lockshaw(~lockshaw@165.22.163.71) (*.net *.split)
2021-02-25 11:03:14 +0100sssb54(~ssssb56@vps-b2931db6.vps.ovh.ca) (*.net *.split)
2021-02-25 11:03:14 +0100tolt(~weechat-h@li219-154.members.linode.com) (*.net *.split)
2021-02-25 11:03:14 +0100sepples(~sepples@67.205.168.224) (*.net *.split)
2021-02-25 11:03:14 +0100hiredman(~hiredman@volyova.ec2.thelastcitadel.com) (*.net *.split)
2021-02-25 11:03:15 +0100ralu9ralu
2021-02-25 11:03:15 +0100MasseR3MasseR
2021-02-25 11:03:15 +0100Lord_of_Life_Lord_of_Life
2021-02-25 11:03:15 +0100Katarushisu3Katarushisu
2021-02-25 11:03:15 +0100meck_meck
2021-02-25 11:03:15 +0100concept27concept2
2021-02-25 11:03:15 +0100dorkside1dorkside
2021-02-25 11:03:15 +0100xlei_xlei
2021-02-25 11:03:15 +0100thecoffemaker_(~thecoffem@125-121-245-190.fibertel.com.ar)
2021-02-25 11:03:15 +0100lassulus_lassulus
2021-02-25 11:03:23 +0100noctux(~noctux@unaffiliated/noctux)
2021-02-25 11:03:28 +0100smerdyakov7smerdyakov
2021-02-25 11:03:31 +0100omnitrogen_omnitrogen
2021-02-25 11:03:49 +0100gienah(~mwright@gentoo/developer/gienah)
2021-02-25 11:04:01 +0100yahb(xsbot@haskell/bot/yahb)
2021-02-25 11:04:43 +0100swater(bouhier200@perso.iiens.net)
2021-02-25 11:05:57 +0100zmv-(~zmv@191.255.89.231) (Ping timeout: 264 seconds)
2021-02-25 11:05:57 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds)
2021-02-25 11:05:57 +0100Firedancer(sid336191@gateway/web/irccloud.com/x-fizivvwzbeaikpdv) (Ping timeout: 264 seconds)
2021-02-25 11:05:59 +0100Reiser(~0a2a0001@static.210.242.216.95.clients.your-server.de)
2021-02-25 11:06:20 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2021-02-25 11:06:33 +0100jdt(~jdt@208.85.233.130) (Ping timeout: 264 seconds)
2021-02-25 11:06:54 +0100Firedancer(sid336191@gateway/web/irccloud.com/x-eykckjivzotazeph)
2021-02-25 11:06:58 +0100cyphase_eviltwincyphase_
2021-02-25 11:07:02 +0100cyphase_cyphase
2021-02-25 11:07:09 +0100rzmt(~rzmt@87-92-180-112.rev.dnainternet.fi) (Ping timeout: 264 seconds)
2021-02-25 11:07:19 +0100cole-h_cole-h
2021-02-25 11:08:10 +0100rzmt(~rzmt@87-92-180-112.rev.dnainternet.fi)
2021-02-25 11:08:21 +0100jdt(~jdt@208.85.233.130)
2021-02-25 11:09:31 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-gewvwhbittubyvln) (Quit: Connection closed for inactivity)
2021-02-25 11:11:33 +0100sssb54(~ssssb56@vps-b2931db6.vps.ovh.ca)
2021-02-25 11:11:35 +0100tv1tv
2021-02-25 11:12:01 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
2021-02-25 11:16:59 +0100Shailangsa_(~shailangs@host86-186-191-40.range86-186.btcentralplus.com)
2021-02-25 11:18:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 11:19:57 +0100Feuermagier(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Quit: Leaving)
2021-02-25 11:19:58 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-pvdimpwkxzjbymuk)
2021-02-25 11:20:09 +0100Feuermagier(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6)
2021-02-25 11:20:20 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net)
2021-02-25 11:20:32 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net) (Changing host)
2021-02-25 11:20:32 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2021-02-25 11:23:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
2021-02-25 11:24:28 +0100pavonia^\_^\(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-02-25 11:25:51 +0100son0p(~son0p@181.58.39.182)
2021-02-25 11:26:28 +0100maerwald_maerwald
2021-02-25 11:28:12 +0100__monty__(~toonn@unaffiliated/toonn)
2021-02-25 11:28:43 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Quit: leaving)
2021-02-25 11:30:15 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2021-02-25 11:30:24 +0100thorsten`(~Thorsten@ananke.uberspace.de) ("WeeChat 2.7.1")
2021-02-25 11:33:52 +0100 <olligobber> someone here mentioned a way of checking constants are well behaved at compile time
2021-02-25 11:35:08 +0100 <olligobber> so if I have `free :: Char -> Maybe Free', I can use 'A' as a value of type Free since free 'A' = Just ..., but using '(' as a vlaue of type Free will fail at compile time because free '(' = Nothing
2021-02-25 11:35:28 +0100 <olligobber> but I can't remember what it was called or how to find it
2021-02-25 11:35:29 +0100 <merijn> @hackage validated-literals
2021-02-25 11:35:29 +0100 <lambdabot> https://hackage.haskell.org/package/validated-literals
2021-02-25 11:35:37 +0100 <merijn> That one, probably :p
2021-02-25 11:36:09 +0100 <olligobber> ty
2021-02-25 11:36:46 +0100 <merijn> olligobber: For maximum ease of use you'll want -XDeriveLift and derive Lift for Free
2021-02-25 11:36:53 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-02-25 11:37:00 +0100 <merijn> Then you can just do instance Char Free where fromLiteral = free"
2021-02-25 11:38:05 +0100 <merijn> (with a Lift instance on Free you 1) don't have to implement liftResult and 2) you'll compile the *result* of conversion into the exe, rather than having to redo it at runtime)
2021-02-25 11:39:23 +0100 <olligobber> but not all valid Chars are valid Frees?
2021-02-25 11:40:30 +0100 <olligobber> I don't understand Lift
2021-02-25 11:41:03 +0100 <ski> (s/Char Free/Lift Char Free/ ?)
2021-02-25 11:41:27 +0100 <olligobber> Lift only has one parameter
2021-02-25 11:41:45 +0100 <olligobber> I think e means Validate Char Free
2021-02-25 11:42:14 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-02-25 11:43:02 +0100 <olligobber> ah, I don't have validated literals installed :/
2021-02-25 11:43:34 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 11:43:39 +0100__minoru__shirae(~shiraeesh@109.166.59.137)
2021-02-25 11:43:50 +0100danso(~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 264 seconds)
2021-02-25 11:44:24 +0100theDon_theDon
2021-02-25 11:45:31 +0100CatWithMoustache(~CatWithMo@gateway/tor-sasl/catwithmoustache)
2021-02-25 11:45:50 +0100 <olligobber> how do I install packages?
2021-02-25 11:46:06 +0100 <Uniaika> with Cabal
2021-02-25 11:46:15 +0100 <Uniaika> olligobber: https://cabal.readthedocs.io/en/3.4/
2021-02-25 11:46:33 +0100danso(~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-02-25 11:46:50 +0100 <olligobber> "3.2. Building and installing packages To be written"
2021-02-25 11:46:51 +0100 <olligobber> lol
2021-02-25 11:47:28 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-25 11:47:34 +0100 <Uniaika> https://cabal.readthedocs.io/en/3.4/getting-started.html#creating-a-new-application
2021-02-25 11:47:34 +0100dh_(dh@bsd.ee) (Quit: "Fhtagn-Nagh Yog Sothoth")
2021-02-25 11:47:46 +0100dh(dh@bsd.ee)
2021-02-25 11:48:00 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 11:48:11 +0100integerDivision(d5b21a29@gateway/web/cgi-irc/kiwiirc.com/ip.213.178.26.41) (Quit: Connection closed)
2021-02-25 11:48:45 +0100coot_(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 11:48:46 +0100coot_(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2021-02-25 11:49:48 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-02-25 11:51:19 +0100CatWithMoustache(~CatWithMo@gateway/tor-sasl/catwithmoustache) (Quit: Leaving)
2021-02-25 11:51:24 +0100 <olligobber> I think I understand why I need lift
2021-02-25 11:52:16 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
2021-02-25 11:53:45 +0100ubert(~Thunderbi@p200300ecdf25d946a0d2e31ed48a2cf4.dip0.t-ipconnect.de)
2021-02-25 11:53:56 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2021-02-25 11:56:01 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca)
2021-02-25 11:58:08 +0100kam1(~kam1@5.125.126.175)
2021-02-25 12:00:03 +0100 <mananamenos> hi, what are the advantages that ones gets when defining something like `newtype App a = App (ReaderT SomeEnv IO a)`. Why not using directly `ReaderT SomeEnv IO a` with a type alias App for example?
2021-02-25 12:01:06 +0100 <__monty__> mananamenos: String is a type synonym. Sometimes [Char] shines through in error messages.
2021-02-25 12:01:37 +0100 <__monty__> It's also a new type so you can define typeclass instances for it.
2021-02-25 12:02:04 +0100 <mananamenos> __monty__, i know, that's what i meant with type alias, sorry, wanted to say type synonym
2021-02-25 12:02:30 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-25 12:03:04 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-25 12:03:26 +0100 <__monty__> That's alright, I figured and answered the question as if you'd said type synonym : )
2021-02-25 12:03:42 +0100liff(liff@kapsi.fi) ()
2021-02-25 12:04:00 +0100thc202(~thc202@unaffiliated/thc202)
2021-02-25 12:05:04 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-02-25 12:05:26 +0100usr25(~usr25@unaffiliated/usr25)
2021-02-25 12:05:46 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-02-25 12:05:46 +0100 <__minoru__shirae> is it possible to parameterize a type synonym?
2021-02-25 12:06:06 +0100 <__minoru__shirae> if not, then it could be one of the reasons
2021-02-25 12:07:32 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-25 12:07:54 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 12:07:55 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt)
2021-02-25 12:07:56 +0100centril(~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 240 seconds)
2021-02-25 12:08:22 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-02-25 12:10:07 +0100centril(~centril@213-66-146-92-no250.tbcn.telia.com)
2021-02-25 12:10:22 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de)
2021-02-25 12:11:25 +0100sablib(~sablib@59.173.155.233) (Ping timeout: 260 seconds)
2021-02-25 12:11:51 +0100sablib(~sablib@59.173.152.169)
2021-02-25 12:12:37 +0100 <__monty__> > type YAMaybe a = Maybe a; let x = Nothing :: YAMaybe Bool in x
2021-02-25 12:12:39 +0100 <lambdabot> <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘type’
2021-02-25 12:12:46 +0100 <__monty__> % type YAMaybe a = Maybe a; let x = Nothing :: YAMaybe Bool in x
2021-02-25 12:12:47 +0100 <yahb> __monty__: ; <interactive>:32:62: error:; * Couldn't match type: Maybe Bool; with: Q [Dec]; Expected: DecsQ; Actual: YAMaybe Bool; * In the expression: x; In the expression: let x = Nothing :: YAMaybe Bool in x
2021-02-25 12:13:09 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 264 seconds)
2021-02-25 12:13:11 +0100fr33domlover(~fr33domlo@fsf/member/fr33domlover) (Quit: fr33domlover)
2021-02-25 12:13:44 +0100fr33domlover(~fr33domlo@fsf/member/fr33domlover)
2021-02-25 12:15:28 +0100 <ski> __minoru__shirae : yes. but you can't partially apply it (which prevents making it an instance of a type class, sometimes)
2021-02-25 12:15:43 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Quit: bitmagie)
2021-02-25 12:16:43 +0100 <ski> (or, with `LiberalTypeSynonyms' you can partially apply it (possibly to zero parameters), if that partial application is itself passed as a parameter to another type *synonym*, which will eventually end up fully applying it)
2021-02-25 12:16:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-02-25 12:18:05 +0100kloeri_kloeri
2021-02-25 12:18:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 12:19:06 +0100tomsmedingthinks yahb is quite confused there
2021-02-25 12:19:09 +0100viluon(uid453725@gateway/web/irccloud.com/x-amxewsahyzvflymf)
2021-02-25 12:19:16 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 12:20:00 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 12:20:41 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca)
2021-02-25 12:21:02 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Client Quit)
2021-02-25 12:23:04 +0100 <ski> i guess it's interpreting the latter as an implicit declaration splice ?
2021-02-25 12:23:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-02-25 12:23:59 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt) (Remote host closed the connection)
2021-02-25 12:24:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
2021-02-25 12:24:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 12:24:35 +0100gitgood(~gitgood@80-44-13-166.dynamic.dsl.as9105.com)
2021-02-25 12:27:30 +0100zmv-(~zmv@191.255.89.231)
2021-02-25 12:28:07 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a)
2021-02-25 12:28:45 +0100 <ph88> hi all
2021-02-25 12:29:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-02-25 12:29:54 +0100 <ski> lo any
2021-02-25 12:30:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 12:31:29 +0100xff0x(~xff0x@2001:1a81:5295:6100:414c:c2f4:f5f5:8081) (Ping timeout: 272 seconds)
2021-02-25 12:31:52 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca)
2021-02-25 12:32:02 +0100xff0x(~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff)
2021-02-25 12:32:54 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6)
2021-02-25 12:33:02 +0100 <int-e> ski dishing out complements
2021-02-25 12:34:23 +0100skidoes the dishes
2021-02-25 12:35:25 +0100hseg(~gesh@IGLD-84-228-239-97.inter.net.il)
2021-02-25 12:35:33 +0100 <ph88> just did mine :P
2021-02-25 12:36:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-25 12:36:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 12:37:02 +0100Guest_63(53d194a8@h83-209-148-168.cust.a3fiber.se)
2021-02-25 12:37:39 +0100Guest_63(53d194a8@h83-209-148-168.cust.a3fiber.se) (Client Quit)
2021-02-25 12:38:26 +0100 <maerwald> if you want to feel trolled... try to ctrl+c a cabal build inside a docker container
2021-02-25 12:38:41 +0100Feuermagierhas a dishwasher and is very happy about it
2021-02-25 12:38:44 +0100 <ph88> i am working on a language. I have the parsing done in megaparsec. Megaparsec gives the error location in case of wrong syntax (that's cool). But after that with the semantic analysis i would also like to know the source position in case things go wrong. I saw that megaparsec offers this function https://hackage.haskell.org/package/megaparsec-9.0.1/docs/Text-Megaparsec.html#v:getSourcePos which is cool, but it says: This function is
2021-02-25 12:38:44 +0100 <ph88> not cheap, do not call it e.g. on matching of every token, that's a bad idea. How can i best handle this situation ?
2021-02-25 12:39:40 +0100 <ph88> i would like to get a source location for the semantic error and ideally also the call trace. I don't know how i could implement this other than storing the source position of each token in the concrete syntax tree and thus calling getSourcePos everywhere
2021-02-25 12:40:23 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2021-02-25 12:40:28 +0100 <ph88> now i have the situation where i have userland exceptions (in my language, not haskell) and i have to go through the sources manually to figure out which exception from where it could be
2021-02-25 12:42:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-25 12:42:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 12:43:25 +0100 <edwardk> this is why trifecta focused on making that function cheap ;) albeit at the cost of making the regular parser a bit more expensive
2021-02-25 12:44:05 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
2021-02-25 12:44:21 +0100 <edwardk> megaparsec came along later and jettisoned all of that, though they got a lot of other stuff right
2021-02-25 12:45:24 +0100fendor(~fendor@91.141.0.220.wireless.dyn.drei.com) (Remote host closed the connection)
2021-02-25 12:46:33 +0100NieDzejkob_(~quassel@195.149.98.3) ("https://quassel-irc.org - Chat comfortably. Anywhere.")
2021-02-25 12:46:43 +0100NieDzejkob_(~quassel@195.149.98.3)
2021-02-25 12:47:51 +0100 <ph88> i am a bit on a crossroads now. Changing megaparsec to another parser would not be my first choice (although might be necessary in this case). I could either go against the advice and use sourePos everywhere (i don't know exactly how much the slowdown will be). Or i could run a second parser (which i would have to develop) when the first own detects an exception, then i would get the slowdonwn only in the situation when a semantic
2021-02-25 12:47:51 +0100 <ph88> error has occured.
2021-02-25 12:48:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-02-25 12:48:24 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-25 12:48:37 +0100 <ph88> by the way .. nice error formatting in trifecta :)
2021-02-25 12:48:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 12:48:46 +0100fendor(~fendor@91.141.0.220.wireless.dyn.drei.com)
2021-02-25 12:48:48 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-25 12:49:18 +0100coot(~coot@37.30.60.232.nat.umts.dynamic.t-mobile.pl)
2021-02-25 12:51:34 +0100 <ski> your userland exceptions happens during parsing of your language ?
2021-02-25 12:51:55 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2021-02-25 12:53:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-25 12:54:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 12:54:35 +0100 <swarmcollective> True, safety is "slower". Ha!
2021-02-25 12:54:37 +0100 <swarmcollective> True, safety is "slower". Ha!
2021-02-25 12:55:04 +0100 <ph88> ski, no they don't happen during parsing of course. It happens when the userland code is evaluated.
2021-02-25 12:55:41 +0100 <ph88> the problem is that only the parser can capture the source location which can be needed during further stages of analysis (beyond the parsing stage)
2021-02-25 12:55:51 +0100 <ski> then i don't understand "Or i could run a second parser (which i would have to develop) when the first own detects an exception"
2021-02-25 12:56:02 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt)
2021-02-25 12:56:30 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-02-25 12:56:46 +0100dyeplexer(~lol@unaffiliated/terpin)
2021-02-25 12:56:47 +0100 <ph88> then i can keep megaparsec working fast in the case where no exception occured. And suffer performance to run a second parser which keeps track of locations to give additional information in the exception case
2021-02-25 12:57:32 +0100 <ski> it still sounds to me like your exceptions occurs during parse-time, rather than run-time
2021-02-25 12:59:57 +0100 <ph88> hmm don't know how to explain it. Parsing stage is done .. language is running (being interpreted, not compiled to bytecode). Then userland exception occurs ..
2021-02-25 13:00:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-25 13:00:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 13:02:40 +0100 <ski> and then you re-parse, having kept the source around ?
2021-02-25 13:03:11 +0100 <swarmcollective> ph88, re: "other than storing the source position of each token in the concrete syntax tree" Could you build a matching tree of source positions and only reference it in the case of an exception?
2021-02-25 13:03:36 +0100 <ph88> ski, yes keeping around the source location for each token on the reparse
2021-02-25 13:03:39 +0100 <swarmcollective> That would keep the concrete syntax tree clean(er)?
2021-02-25 13:04:23 +0100 <ph88> swarmcollective, yes exactly that "build a matching tree of source positions" the second parser could do in case of the exception
2021-02-25 13:04:26 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 13:04:31 +0100 <ski> i think the perceived problem was that `getSourcePos' was stated to be expensive, and it'd be required to call that at least at exception raise/signalling positions, and also at every call site, if you want call trace to include location info
2021-02-25 13:05:12 +0100 <ski> ph88 : not sure if you'd need it for every token. for every AST node would be not quite as expensive
2021-02-25 13:05:12 +0100 <edwardk> ph88: with trifecta i mostly just wanted to move the bar on how nice error messages could be in haskell. before trifecta they were... sad, meanwhile clang looked amazing.
2021-02-25 13:05:26 +0100 <edwardk> i'm really glad that others took the idea and ran with it
2021-02-25 13:05:36 +0100ski. o O ( monoidal parsing )
2021-02-25 13:05:40 +0100 <edwardk> i build trifecta mostly for me to use
2021-02-25 13:05:55 +0100 <edwardk> yeah i do want to peel that bit of kit out of coda and figure out a way to ship it
2021-02-25 13:06:08 +0100 <edwardk> er built
2021-02-25 13:06:20 +0100 <ph88> ski, ya i guess only at call sites it would be needed which is not strictly every token .. good thinking
2021-02-25 13:06:38 +0100 <edwardk> mostly annoyed at myself for taking the 'parsing trifecta' talk title and using it for the trifecta library that had nothing to do with the techniques from that talk ;)
2021-02-25 13:06:56 +0100 <ph88> edwardk, yes i love that too ... got very much inspired by the error messages from rust and elm ... didn't know clang also made big steps in this direction
2021-02-25 13:07:13 +0100coot(~coot@37.30.60.232.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-25 13:07:20 +0100 <edwardk> clang was the first of the compilers to go all in with ^'s pointing to errors on lines and spans and fixits
2021-02-25 13:07:20 +0100magnuscake(~magnuscak@87.121.92.61)
2021-02-25 13:07:29 +0100 <ph88> what talk are you refering to ?
2021-02-25 13:07:40 +0100plutoniix(~q@184.82.223.179) (Quit: Leaving)
2021-02-25 13:08:04 +0100 <edwardk> http://comonad.com/reader/2009/iteratees-parsec-and-monoid/
2021-02-25 13:08:10 +0100 <ph88> https://elm-lang.org/news/the-syntax-cliff https://github.com/elm/error-message-catalog
2021-02-25 13:08:12 +0100 <edwardk> i gave a couple others back in that era
2021-02-25 13:08:13 +0100 <ski> edwardk : which was the talk about ?
2021-02-25 13:08:23 +0100michalz(~user@185.246.204.46)
2021-02-25 13:08:25 +0100 <ph88> jeez that's quite the era ago :P
2021-02-25 13:08:36 +0100 <edwardk> ways to carve up input on error productions, then splice parse results together
2021-02-25 13:09:34 +0100 <magnuscake> Hello peeps. I'm having a hard time understanding how the following evaluates:
2021-02-25 13:09:50 +0100 <magnuscake> fold :: (flip (*)) 1 [1..3]
2021-02-25 13:09:57 +0100 <magnuscake> so for something like:
2021-02-25 13:09:58 +0100 <edwardk> the monoid talk goes into some surprising detail looking back
2021-02-25 13:10:04 +0100 <ski> (reminds me that OCaml conjures up possible inputs not matched by an inexhaustive pattern-matching)
2021-02-25 13:10:19 +0100 <magnuscake> foldl :: (*) 1 [1..5]
2021-02-25 13:10:27 +0100 <edwardk> no :: in there
2021-02-25 13:10:32 +0100 <ski> magnuscake : i think you probably don't want the `::' ?
2021-02-25 13:10:36 +0100 <magnuscake> whoops my bad
2021-02-25 13:10:45 +0100 <edwardk> > foldl (*) 1 [1..5] :: Expr
2021-02-25 13:10:47 +0100 <lambdabot> 1 * 1 * 2 * 3 * 4 * 5
2021-02-25 13:10:55 +0100 <edwardk> > foldl (flip (*)) 1 [1..5] :: Expr
2021-02-25 13:10:55 +0100 <ski> edwardk beat me to it :)
2021-02-25 13:10:56 +0100 <lambdabot> 5 * (4 * (3 * (2 * (1 * 1))))
2021-02-25 13:11:03 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-02-25 13:11:03 +0100 <magnuscake> foldl (*) 1 [1..5]
2021-02-25 13:11:08 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 13:11:11 +0100 <magnuscake> Yeah
2021-02-25 13:11:12 +0100 <ski> > foldl (**) 1 [1..5] :: Expr
2021-02-25 13:11:14 +0100 <lambdabot> ((((1**1)**2)**3)**4)**5
2021-02-25 13:11:21 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt) (Ping timeout: 264 seconds)
2021-02-25 13:11:28 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 13:11:36 +0100 <magnuscake> How does the evaluation work in for:
2021-02-25 13:11:50 +0100 <magnuscake> foldl (flip (*)) 1 [1..5]
2021-02-25 13:11:59 +0100 <edwardk> Expr is a type that has a Num instance, and tracks what operators you use. so it lets you kinda peek at what the fold is doing here (it comes from a library)
2021-02-25 13:12:04 +0100nictki(~nictki@b2b-78-94-64-166.unitymedia.biz)
2021-02-25 13:12:04 +0100 <magnuscake> Since flip would need two arguments
2021-02-25 13:12:14 +0100 <edwardk> :t foldl
2021-02-25 13:12:15 +0100 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
2021-02-25 13:12:19 +0100 <edwardk> ^- foldl gives it two args
2021-02-25 13:12:25 +0100 <ski> @type flip (*)
2021-02-25 13:12:26 +0100 <lambdabot> Num c => c -> c -> c
2021-02-25 13:12:27 +0100 <edwardk> the result so far and the next entry in the list
2021-02-25 13:12:49 +0100 <edwardk> sorry
2021-02-25 13:13:00 +0100 <edwardk> flip takes one argument, which is a binary function and returns a binary function
2021-02-25 13:13:06 +0100 <edwardk> that is one way to read flip's signature
2021-02-25 13:13:07 +0100 <edwardk> :t flip
2021-02-25 13:13:07 +0100 <ski> @type flip
2021-02-25 13:13:08 +0100 <lambdabot> (a -> b -> c) -> b -> a -> c
2021-02-25 13:13:09 +0100 <lambdabot> (a -> b -> c) -> b -> a -> c
2021-02-25 13:13:20 +0100 <ski> flip :: (a -> b -> c) -> (b -> a -> c)
2021-02-25 13:13:30 +0100 <magnuscake> I am guessing evaluation would look something like this:
2021-02-25 13:13:43 +0100 <magnuscake> aassuming f = flip (:)
2021-02-25 13:13:51 +0100 <magnuscake> ((([] `f` 1) `f` 2) `f` 3)
2021-02-25 13:14:13 +0100 <magnuscake> Where does the second argument for flip come from
2021-02-25 13:14:24 +0100 <ski> foldl (flip (*)) 1 [1 .. 5]
2021-02-25 13:14:27 +0100 <magnuscake> Or third since the first is a function
2021-02-25 13:14:31 +0100 <edwardk> you feed it a basecase
2021-02-25 13:14:45 +0100 <edwardk> :t foldl
2021-02-25 13:14:46 +0100 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
2021-02-25 13:14:49 +0100 <ski> = foldl (flip (*)) (flip (*) 1 1) [2 .. 5]
2021-02-25 13:15:03 +0100 <ski> = foldl (flip (*)) (flip (*) (flip (*) 1 1) 2) [3 .. 5]
2021-02-25 13:15:13 +0100 <ski> = foldl (flip (*)) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) [4 .. 5]
2021-02-25 13:15:16 +0100 <edwardk> (b -> a -> b) is the function you want to fold with, the net 'b' is your base case, which gets passed as your first argument the first time, then you pass a list.
2021-02-25 13:15:27 +0100 <ski> = foldl (flip (*)) (flip (*) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) 4) [5 .. 5]
2021-02-25 13:15:45 +0100 <ski> = foldl (flip (*)) (flip (*) (flip (*) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) 4) 5) []
2021-02-25 13:15:49 +0100mouseghost(~draco@wikipedia/desperek)
2021-02-25 13:15:52 +0100 <edwardk> ski is on a roll, i'll back off =)
2021-02-25 13:15:54 +0100 <ski> = flip (*) (flip (*) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) 4) 5
2021-02-25 13:16:13 +0100 <ski> = 5 * flip (*) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) 4
2021-02-25 13:16:26 +0100 <ski> = 5 * (4 * flip (*) (flip (*) (flip (*) 1 1) 2) 3)
2021-02-25 13:16:46 +0100 <ski> = 5 * (4 * (3 * flip (*) (flip (*) 1 1) 2))
2021-02-25 13:16:59 +0100 <ski> = 5 * (4 * (3 * (2 * flip (*) 1 1)))
2021-02-25 13:17:16 +0100 <ski> = 5 * (4 * (3 * (2 * (1 * 1))))
2021-02-25 13:17:40 +0100 <ski> magnuscake : makes sense ?
2021-02-25 13:18:03 +0100 <magnuscake> Oh absolutely. Hit it out of the field there mate
2021-02-25 13:18:23 +0100 <ski> (and apparently this time Sigyn didn't make threatening noises in the background ..)
2021-02-25 13:18:25 +0100 <magnuscake> That clears it up now. Thank you very much ski and edward
2021-02-25 13:18:39 +0100 <ski> np
2021-02-25 13:19:14 +0100 <mouseghost> wah that, foldr?
2021-02-25 13:19:23 +0100 <ski> ?
2021-02-25 13:19:32 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 260 seconds)
2021-02-25 13:19:34 +0100 <ski> that's `foldl', not `foldr'
2021-02-25 13:19:42 +0100 <edwardk> that was a foldl
2021-02-25 13:19:45 +0100 <mouseghost> oh
2021-02-25 13:19:58 +0100 <mouseghost> thats why im asking :D
2021-02-25 13:20:04 +0100 <ski> would you like to see `foldr (*) 1 [1 .. 5]' or ?
2021-02-25 13:20:09 +0100 <mouseghost> yes pwease
2021-02-25 13:20:11 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 13:20:16 +0100 <mouseghost> though i suppose its going to be the other way round
2021-02-25 13:20:17 +0100 <ski> (or maybe `foldr (flip (*)) 1 [1 .. 5]' ?)
2021-02-25 13:20:32 +0100 <ski> which ?
2021-02-25 13:20:49 +0100 <mouseghost> D: meyb the former..
2021-02-25 13:20:59 +0100 <ski> foldr (*) 1 [1 .. 5]
2021-02-25 13:21:03 +0100 <mouseghost> yes
2021-02-25 13:21:07 +0100 <ski> = 1 * foldr (*) 1 [2 .. 5]
2021-02-25 13:21:16 +0100 <ski> = 1 * (2 * foldr (*) 1 [3 .. 5])
2021-02-25 13:21:26 +0100 <ski> = 1 * (2 * (3 * foldr (*) 1 [4 .. 5]))
2021-02-25 13:21:35 +0100 <ski> = 1 * (2 * (3 * (4 * foldr (*) 1 [5 .. 5])))
2021-02-25 13:21:46 +0100 <ski> = 1 * (2 * (3 * (4 * (5 * foldr (*) 1 []))))
2021-02-25 13:21:51 +0100 <ski> = 1 * (2 * (3 * (4 * (5 * 1))))
2021-02-25 13:22:36 +0100 <ski> with `foldr (flip (*)) 1 [1 .. 5]', you'd end up with `((((1 * 5) * 4) * 3) * 2) * 1' in the end, instead, after reducing away all the `flip's
2021-02-25 13:22:40 +0100Tario(~Tario@201.192.165.173)
2021-02-25 13:22:47 +0100 <mouseghost> hm i see
2021-02-25 13:22:56 +0100 <ski> (try it out yourself, on paper, or in a text editor ?!)
2021-02-25 13:23:32 +0100 <mouseghost> let me find a definition first :D
2021-02-25 13:23:38 +0100 <ski> @src foldl
2021-02-25 13:23:38 +0100 <lambdabot> foldl f z [] = z
2021-02-25 13:23:38 +0100 <lambdabot> foldl f z (x:xs) = foldl f (f z x) xs
2021-02-25 13:23:39 +0100 <ski> @src foldr
2021-02-25 13:23:39 +0100 <lambdabot> foldr f z [] = z
2021-02-25 13:23:39 +0100 <lambdabot> foldr f z (x:xs) = f x (foldr f z xs)
2021-02-25 13:23:43 +0100 <ski> @src flip
2021-02-25 13:23:43 +0100 <lambdabot> flip f x y = f y x
2021-02-25 13:24:30 +0100 <ski> also `[m .. n]' is `m : [m+1 .. n]' if `m <= n', otherwise it's `[]'
2021-02-25 13:25:07 +0100 <mouseghost> hm so thats the difference
2021-02-25 13:25:11 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 13:25:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
2021-02-25 13:25:29 +0100 <magnuscake> Is any point of having a foldl? I get foldr is similar to reduce() in JS and Python
2021-02-25 13:25:30 +0100z0k(~user@115-186-141-91.nayatel.pk)
2021-02-25 13:25:32 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 13:25:32 +0100cdb(~cdb@185.163.110.108) (Remote host closed the connection)
2021-02-25 13:25:51 +0100 <ski> no, `foldl' is similar to `reduce' in some other languages, iirc
2021-02-25 13:26:31 +0100 <magnuscake> Best of both world than I guess :)
2021-02-25 13:27:18 +0100 <ski> `foldl' is iterative / tail-recursive (and therefore bulky / non-incremental), while `foldr' is not (it can be incremental, though, if the callback is non-strict in latter argument)
2021-02-25 13:28:00 +0100Wuzzy(~Wuzzy@p5790ec2c.dip0.t-ipconnect.de)
2021-02-25 13:29:15 +0100 <ski> in a strict language, commonly an iterative version is preferable, in case both would be applicable. Haskell is non-strict though, and here it often makes more sense to be incremental instead (which means that you can now work on infinite lists, and work on very long lists without needing to scan ahead to the end before producing any output .. so your caller effectively can act as a coroutine with you,
2021-02-25 13:29:21 +0100 <ski> consuming your incremental outputs)
2021-02-25 13:29:51 +0100 <ski> also, note that usually, in Haskell, when you think you want foldl you actually want foldl'
2021-02-25 13:30:15 +0100 <ski> foldl f z [ ] = z
2021-02-25 13:30:16 +0100 <ski> er
2021-02-25 13:30:18 +0100 <ski> foldl' f z [ ] = z
2021-02-25 13:30:39 +0100 <ski> foldl' f z (x:xs) = (foldl' f $! f z x) xs
2021-02-25 13:31:06 +0100 <ski> alternatively
2021-02-25 13:31:12 +0100 <ski> foldl' f !z [ ] = z
2021-02-25 13:31:25 +0100 <ski> foldl' f !z (x:xs) = foldl' f (f z x) xs
2021-02-25 13:32:16 +0100darjeeling_(~darjeelin@122.245.217.214) (Ping timeout: 240 seconds)
2021-02-25 13:32:16 +0100 <magnuscake> Yeah that actually makes sense
2021-02-25 13:32:24 +0100 <ski> this means that it will force (to WHNF) the accumulator in each step, rather than just build up a possibly huge thunk at run-time, which will eventually get forced in the end (after `foldl' hits the base case anyway)
2021-02-25 13:32:59 +0100 <ski> in my `foldl' example above, all the `flip's (and also the `*'s, although i didn't show that part) happens after `foldl' is done
2021-02-25 13:33:08 +0100 <ski> with foldl' instead, you'd get
2021-02-25 13:33:24 +0100 <ski> foldl' (flip (*)) 1 [1 .. 5]
2021-02-25 13:33:45 +0100 <ski> = foldl' (flip (*)) (flip (*) 1 1) [2 .. 5]
2021-02-25 13:33:53 +0100 <ski> = foldl' (flip (*)) (1 * 1) [2 .. 5]
2021-02-25 13:34:00 +0100 <ski> = foldl' (flip (*)) 1 [2 .. 5]
2021-02-25 13:34:09 +0100 <ski> = foldl' (flip (*)) (flip (*) 1 2) [3 .. 5]
2021-02-25 13:34:16 +0100 <ski> = foldl' (flip (*)) (2 * 1) [3 .. 5]
2021-02-25 13:34:24 +0100 <ski> = foldl' (flip (*)) 2 [3 .. 5]
2021-02-25 13:34:33 +0100drbean_(~drbean@TC210-63-209-37.static.apol.com.tw)
2021-02-25 13:34:40 +0100 <ski> = foldl' (flip (*)) (flip (*) 2 3) [4 .. 5]
2021-02-25 13:34:49 +0100 <ski> = foldl' (flip (*)) (3 * 2) [4 .. 5]
2021-02-25 13:34:54 +0100 <ski> = foldl' (flip (*)) 6 [4 .. 5]
2021-02-25 13:35:06 +0100 <ski> = foldl' (flip (*)) (flip (*) 6 4) [5 .. 5]
2021-02-25 13:35:16 +0100 <ski> = foldl' (flip (*)) (4 * 6) [5 .. 5]
2021-02-25 13:35:21 +0100 <ski> = foldl' (flip (*)) 24 [5 .. 5]
2021-02-25 13:35:38 +0100 <ski> = foldl' (flip (*)) (flip (*) 24 5) []
2021-02-25 13:35:49 +0100 <ski> = foldl' (flip (*)) (5 * 24) []
2021-02-25 13:35:53 +0100 <ski> = foldl' (flip (*)) 120 []
2021-02-25 13:35:57 +0100 <ski> = 120
2021-02-25 13:36:05 +0100 <ph88> having fun ski ?
2021-02-25 13:36:21 +0100 <ski> (note that this appears a bit longer, because i skipped to tail end of the multiplications, before)
2021-02-25 13:36:33 +0100 <ski> magnuscake : clear ?
2021-02-25 13:36:36 +0100 <ph88> bpaste.net
2021-02-25 13:36:36 +0100 <magnuscake> That is definitely cool mate
2021-02-25 13:36:40 +0100 <ph88> nice pastebin for you ski
2021-02-25 13:37:01 +0100 <magnuscake> Thanks loads. Will be adding that to my notes
2021-02-25 13:37:02 +0100 <ski> ah, but pastebin's aren't interactive :/
2021-02-25 13:37:18 +0100 <ph88> ski, that's a cool idea, interactive pastebin !
2021-02-25 13:37:29 +0100 <ph88> well i guess you could just open ghci and copy paste that into it
2021-02-25 13:37:34 +0100 <ph88> but still ... interactive pastebin :P
2021-02-25 13:37:44 +0100 <ph88> i believe when tomsmeding builds it sm will host it xD
2021-02-25 13:38:38 +0100 <ph88> by the way there is jupyter notebook for haskell too now ... but not sure if it there is a website that offers it
2021-02-25 13:39:12 +0100chisui(59f77ca6@i59F77CA6.versanet.de)
2021-02-25 13:40:39 +0100 <ph88> https://cocalc.com/projects/3d87e727-69f7-4ac5-81b2-867aee98eb45/files/Welcome%20to%20CoCalc.ipynb…
2021-02-25 13:40:48 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt)
2021-02-25 13:40:50 +0100zmv-notzmv
2021-02-25 13:40:53 +0100 <ph88> not sure how well that works and how it works with sharing / interactive .. but cool stuff
2021-02-25 13:41:02 +0100notzmv(~zmv@191.255.89.231) (Changing host)
2021-02-25 13:41:02 +0100notzmv(~zmv@unaffiliated/zmv)
2021-02-25 13:41:04 +0100 <ph88> got the link from https://github.com/gibiansky/IHaskell
2021-02-25 13:42:22 +0100coot(~coot@37.30.60.232.nat.umts.dynamic.t-mobile.pl)
2021-02-25 13:43:27 +0100 <mananamenos> hmm, so I still have doubts and want to find more about the previously made question. What are the advantages of using `newtype App a = App (ReaderT SomeEnv IO a)`. Almost all apps create this app monad. Why don't they use ReaderT directly in this case? Then they wouldn't need to derive for example many classes as they do now..One reason I think I found is that it is good for testing
2021-02-25 13:44:56 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt) (Ping timeout: 240 seconds)
2021-02-25 13:45:05 +0100 <merijn> mananamenos: Which classes would you need to derive?
2021-02-25 13:45:23 +0100marek(~mmahut@209.250.249.245) (Changing host)
2021-02-25 13:45:23 +0100marek(~mmahut@fedora/pyxel)
2021-02-25 13:46:10 +0100 <ski> magnuscake : another note. in the case of `foldr', the growing context of multiplications around the current foldr call is the stack you're seeing. in the case of foldl there is no such growing context/stack, since foldl is tail-recursive. however, the accumulator argument effectively simulates a stack, growing the heap instead. then, after foldl returns, all these flip and (*) calls are turned
2021-02-25 13:46:16 +0100 <ski> into growing stack again, when traversing the expression to the innermost part to begin the multiplications there
2021-02-25 13:46:25 +0100 <ski> while, in the foldl' case, you avoid this latter problem
2021-02-25 13:47:32 +0100 <ski> magnuscake : implementation hiding. insulating users of `App' from accidentally depending on the particularly chosen representation. preventing them from directly accessing your innards
2021-02-25 13:47:37 +0100 <ski> er
2021-02-25 13:47:39 +0100 <ski> mananamenos ^
2021-02-25 13:48:01 +0100michalz(~user@185.246.204.46) (Remote host closed the connection)
2021-02-25 13:48:06 +0100 <mananamenos> merijn, the examples I've seen that use this App abstraction derive Functor, Monad, etc. What I meant is if they hadn't newtype App, they wouldn't even need to do that, as ReaderT is functor, monad etc
2021-02-25 13:48:09 +0100magnuscake(~magnuscak@87.121.92.61) (Quit: Leaving)
2021-02-25 13:48:18 +0100michalz(~user@185.246.204.39)
2021-02-25 13:48:29 +0100 <merijn> mananamenos: But then changing the implementation of your library becomes a breaking change
2021-02-25 13:48:42 +0100 <merijn> mananamenos: And any time you refactor internals you need to refactor everything
2021-02-25 13:49:12 +0100 <ski> typically you'd not want to expose say `MonadReader SomeEnv App' and the like (sometimes i guess you might), but rather define your own operations, possibly wrappers around the basic operations on transformers
2021-02-25 13:49:13 +0100 <mananamenos> merijn, can you give an example what "changing implementation" in this example would mean? I dont follow
2021-02-25 13:49:18 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-02-25 13:49:34 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Quit: ->)
2021-02-25 13:49:52 +0100 <merijn> mananamenos: You realise "whoops, I don't have logging!" and you add, for example LoggingT to that implementation
2021-02-25 13:49:58 +0100 <ski> well, perhaps you'd like to change `ReaderT SomeEnv IO a' to `StateT SomeState (ReaderT SomeEnv IO) a' at some point
2021-02-25 13:50:12 +0100 <ski> or perhaps to `ReaderT (SomeEnv,SomeOtherEnv) IO a'
2021-02-25 13:50:56 +0100__minoru__shirae(~shiraeesh@109.166.59.137) (Ping timeout: 240 seconds)
2021-02-25 13:51:22 +0100coot(~coot@37.30.60.232.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-25 13:51:28 +0100danza(~francesco@151.53.76.37)
2021-02-25 13:51:38 +0100 <mananamenos> ski, and why newtype and not type?
2021-02-25 13:52:12 +0100 <ski> because you can avoid exporting the data constructor of a `newtype', thereby avoiding exposing your implementation, keeping `App' abstract
2021-02-25 13:52:18 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-02-25 13:52:20 +0100 <ski> can't (unfortunately) do that with type synonyms
2021-02-25 13:52:27 +0100 <ski> (you can, in the MLs ..)
2021-02-25 13:53:47 +0100nictki(~nictki@b2b-78-94-64-166.unitymedia.biz) (Quit: leaving)
2021-02-25 13:54:35 +0100 <mananamenos> merijn, ski, thank you. I think I understand it better but still would like to understand more :) Are some blog posts you know about this kind stuff?
2021-02-25 13:55:07 +0100 <ski> not that i can recall, off the top of my head
2021-02-25 13:55:32 +0100 <ski> (probably there are such blags, though. possibly also some page on the Haskell Wiki, or in the Wikibook)
2021-02-25 13:56:53 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2021-02-25 13:58:22 +0100kw(d4662d5d@212.102.45.93) (Ping timeout: 240 seconds)
2021-02-25 13:58:55 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 14:01:48 +0100urodna(~urodna@unaffiliated/urodna)
2021-02-25 14:04:21 +0100pera(~pera@unaffiliated/pera)
2021-02-25 14:06:10 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-25 14:06:29 +0100kam1(~kam1@5.125.126.175) (Quit: Quit)
2021-02-25 14:06:39 +0100thorsten`(~Thorsten@ananke.uberspace.de)
2021-02-25 14:06:52 +0100kam1(~kam1@5.125.126.175)
2021-02-25 14:07:25 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 265 seconds)
2021-02-25 14:08:25 +0100TMA(tma@twin.jikos.cz)
2021-02-25 14:09:30 +0100 <mananamenos> Is this example: https://hackage.haskell.org/package/monad-time-0.3.1.0/docs/Control-Monad-Time.html. Why does `m` must be a monad? Why does this class have this restriction?
2021-02-25 14:09:42 +0100 <mananamenos> *In this example..
2021-02-25 14:10:20 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt)
2021-02-25 14:10:47 +0100 <merijn> mananamenos: Well, what would you be able to do with currentTime if it wasn't?
2021-02-25 14:10:50 +0100aarvar(~foewfoiew@2601:602:a080:fa0:49bc:1f9e:3510:3fc5) (Ping timeout: 264 seconds)
2021-02-25 14:10:53 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 260 seconds)
2021-02-25 14:11:12 +0100son0p(~son0p@181.58.39.182) (Quit: leaving)
2021-02-25 14:11:16 +0100 <merijn> Imagine no superclass constraint and "MonadTime m => m UTCTime", what can you do?
2021-02-25 14:12:07 +0100 <ski> `Applicative' would probably work, i guess .. but it looks like the main instances are `IO' and monad transformer wrappings of that
2021-02-25 14:12:39 +0100 <mananamenos> merijn, you mean that if it wasn't monad you would never be able to unwrap the value inside m, right?
2021-02-25 14:13:22 +0100 <ski> ah .. it does use `OverlappingInstances' to handle `ReaderT UTCTime m' specially .. :/
2021-02-25 14:13:57 +0100 <merijn> mananamenos: Yes
2021-02-25 14:14:41 +0100 <ski> if it was `Functor', you'd be able to `fmap' over it, generically (with no extra constraint)
2021-02-25 14:15:01 +0100 <ski> i think it has superclass constraint, mostly for convenience
2021-02-25 14:15:11 +0100 <mananamenos> hmm, merijn, but that restriction does not prevent me to implement `instance MonadTime IO...`, then I would be able to get time in IO monad. So still dont see what does the restriction m must be a monad adds
2021-02-25 14:15:31 +0100 <merijn> mananamenos: That means you can only ever do something for a specific isntance
2021-02-25 14:15:50 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-02-25 14:16:08 +0100 <merijn> mananamenos: You couldn't do, for example "MonadTime m => ReaderT Foo m ()" because you don't know 'm' is a Monad
2021-02-25 14:16:34 +0100 <ski> (you'd have to do `(Monad m,MonadTime m) => ReaderT Foo m ()')
2021-02-25 14:16:34 +0100 <merijn> mananamenos: Basically, then MonadTime is just "getCurrentTime :: IO UTCTime", but with extra steps
2021-02-25 14:16:42 +0100 <merijn> You cannot use it polymorphically easily
2021-02-25 14:16:48 +0100darjeeling_(~darjeelin@122.245.217.214)
2021-02-25 14:16:49 +0100 <mananamenos> merijn, right, so putting the restriction `m` must be a monad we become sure that anyone who will implement MonadTime will be able to use `do`, >>=
2021-02-25 14:18:59 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2021-02-25 14:21:28 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 14:21:55 +0100esph(~weechat@unaffiliated/esph) (Ping timeout: 265 seconds)
2021-02-25 14:23:01 +0100 <thorsten`> How can I denote the 'dual' of the type `(->) a` of kind * -> *? If I put e.g. type To b a = a -> b ; type I f = f Int then `I (To Int)` fails to parse because 'To' should have 2 arguments.
2021-02-25 14:24:02 +0100 <maerwald> how do you include the project version from foo.cabal into your source code at compile time?
2021-02-25 14:25:37 +0100 <thorsten`> maerwald: https://stackoverflow.com/a/33176906/4400896
2021-02-25 14:26:24 +0100 <merijn> maerwald: Paths_x
2021-02-25 14:26:27 +0100esph(~weechat@unaffiliated/esph)
2021-02-25 14:27:26 +0100reeiiko(~reeiiko@185.163.110.108)
2021-02-25 14:27:34 +0100hseg(~gesh@IGLD-84-228-239-97.inter.net.il) (Quit: WeeChat 3.0)
2021-02-25 14:27:55 +0100toorevitimirp(~tooreviti@117.182.181.253)
2021-02-25 14:29:06 +0100 <geekosaur> thorsten`, there's an extension which delays expansion of type synonyms as long as they're ultimately fully saturated (LiberalTypeSynonyms)
2021-02-25 14:29:38 +0100supercoven(~Supercove@194.34.133.92)
2021-02-25 14:30:47 +0100bennofs1(~benno@dslb-094-222-088-123.094.222.pools.vodafone-ip.de)
2021-02-25 14:32:21 +0100 <thorsten`> ok, thanks geekosaur!
2021-02-25 14:33:32 +0100carlomagno(~cararell@148.87.23.9)
2021-02-25 14:34:05 +0100toorevitimirp(~tooreviti@117.182.181.253) (Remote host closed the connection)
2021-02-25 14:35:56 +0100darjeeling_(~darjeelin@122.245.217.214) (Ping timeout: 240 seconds)
2021-02-25 14:37:10 +0100toorevitimirp(~tooreviti@117.182.181.253)
2021-02-25 14:37:19 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-25 14:37:23 +0100bennofs1(~benno@dslb-094-222-088-123.094.222.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2021-02-25 14:37:39 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 14:37:40 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-xtlevgyyzcpkswkn)
2021-02-25 14:39:31 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt) (Ping timeout: 272 seconds)
2021-02-25 14:41:34 +0100_d0t(void@gateway/vpn/mullvad/d0t/x-89419360)
2021-02-25 14:41:57 +0100 <_d0t> ohai! How do I stop GHC from creating dynamic libraries? I use stack to build stuff.
2021-02-25 14:42:37 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-02-25 14:43:50 +0100crobbins(~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Ping timeout: 264 seconds)
2021-02-25 14:44:42 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-02-25 14:45:39 +0100 <sm[m]> ph88: that's interesting about getSourcePos. I call it a lot. Does laziness come to the rescue at all, or it's cheap if you don't actually use the info ?
2021-02-25 14:45:54 +0100 <sm[m]> also, how many calls would you be making ? have you measured the cost ?
2021-02-25 14:46:39 +0100 <ph88> sm[m], i don't know about the details sorry. I have just read the documentation of megaparsec
2021-02-25 14:47:00 +0100 <sm[m]> I'd measure it
2021-02-25 14:47:22 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt)
2021-02-25 14:47:41 +0100 <ph88> good idea
2021-02-25 14:49:36 +0100toorevitimirp(~tooreviti@117.182.181.253) (Ping timeout: 260 seconds)
2021-02-25 14:52:13 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 14:52:34 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 14:52:36 +0100adamoden(bc970b1d@c188-151-11-29.bredband.comhem.se)
2021-02-25 14:52:47 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de)
2021-02-25 14:53:02 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6)
2021-02-25 14:53:25 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Client Quit)
2021-02-25 14:53:52 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca)
2021-02-25 14:54:19 +0100drbean_(~drbean@TC210-63-209-37.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-02-25 14:55:43 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-02-25 14:56:00 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Remote host closed the connection)
2021-02-25 14:56:22 +0100knupfer(~Thunderbi@200116b82c5b7800ed680aab46f8abc5.dip.versatel-1u1.de) (Remote host closed the connection)
2021-02-25 14:56:28 +0100bergey``(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-02-25 14:56:37 +0100knupfer(~Thunderbi@200116b82c5b78000cf80c553eaca855.dip.versatel-1u1.de)
2021-02-25 14:57:02 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-25 14:58:11 +0100andi^(~andi-@NixOS/user/andi-)
2021-02-25 14:58:17 +0100andi-(~andi-@NixOS/user/andi-) (Ping timeout: 260 seconds)
2021-02-25 14:58:56 +0100darjeeling_(~darjeelin@122.245.217.214)
2021-02-25 14:59:50 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt) (Read error: Connection reset by peer)
2021-02-25 15:00:22 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt)
2021-02-25 15:00:46 +0100guest222(~user@49.5.6.87) (Remote host closed the connection)
2021-02-25 15:00:54 +0100guest222(~user@49.5.6.87)
2021-02-25 15:01:16 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-02-25 15:04:12 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 15:04:56 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2021-02-25 15:05:26 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 15:06:24 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt) (Remote host closed the connection)
2021-02-25 15:06:33 +0100gitgood(~gitgood@80-44-13-166.dynamic.dsl.as9105.com) (Ping timeout: 264 seconds)
2021-02-25 15:07:09 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 15:07:10 +0100 <merijn> It just says to not call it for "every token"
2021-02-25 15:07:29 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 15:08:25 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-02-25 15:09:31 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-02-25 15:09:40 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-25 15:10:11 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 15:10:28 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-02-25 15:10:33 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 15:10:49 +0100usr25_tm(~usr25@unaffiliated/usr25)
2021-02-25 15:11:11 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 15:11:18 +0100adamoden(bc970b1d@c188-151-11-29.bredband.comhem.se) (Quit: Connection closed)
2021-02-25 15:11:33 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 15:11:46 +0100adamoden(bc970b1d@c188-151-11-29.bredband.comhem.se)
2021-02-25 15:12:10 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 15:12:30 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 15:13:17 +0100 <adamoden> Hi, I've got a stupid-ass program that I'm writing for kicks a few years after taking a beginners course in Haskell and can barely string together a function at the moment. I've made slow progress in making my program run but right now I get compiler errors that I can't understand. Is there a chance of getting help understanding the errors if I
2021-02-25 15:13:18 +0100 <adamoden> paste them along with my mess here?
2021-02-25 15:14:08 +0100usr256(~usr25@unaffiliated/usr25)
2021-02-25 15:14:09 +0100 <geekosaur> @where paste
2021-02-25 15:14:10 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-02-25 15:14:34 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-02-25 15:15:05 +0100usr25(~usr25@unaffiliated/usr25) (Ping timeout: 265 seconds)
2021-02-25 15:15:29 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt)
2021-02-25 15:15:58 +0100 <adamoden> I'll take the vbot anser as a yes. https://paste.tomsmeding.com/fPhBk9Of https://paste.tomsmeding.com/jvXjZ1FV
2021-02-25 15:16:13 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 15:16:35 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 15:17:04 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-25 15:17:13 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-25 15:17:16 +0100leo___(~leo@cpc96810-rdng27-2-0-cust409.15-3.cable.virginm.net) (Remote host closed the connection)
2021-02-25 15:17:41 +0100 <geekosaur> short version is that somewhere you're passing a list into a context expecting a number, so it''s trying to find a Num instance for lists and failing
2021-02-25 15:17:57 +0100usr25_tm(~usr25@unaffiliated/usr25) (Ping timeout: 264 seconds)
2021-02-25 15:18:17 +0100 <adamoden> A crap. Thanks for the help.
2021-02-25 15:18:54 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2021-02-25 15:20:24 +0100 <geekosaur> you also have what appears to be a typo on line 14 but the error messages don't go that far
2021-02-25 15:20:29 +0100gitgood(~gitgood@80-44-13-166.dynamic.dsl.as9105.com)
2021-02-25 15:21:40 +0100 <adamoden> I have typos everywhere :P Can't see where I pass a list instead of a number tho...
2021-02-25 15:21:40 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 15:22:55 +0100 <geekosaur> see line 10 of the error messages, you have a list of lists where a list of (Enum a => a) is expected
2021-02-25 15:23:25 +0100 <maerwald> merijn: semi-random question. What do you think about bash completion causing a network call?
2021-02-25 15:23:26 +0100 <geekosaur> although I am confused by the error message paste because it looks like two different compiles going on
2021-02-25 15:23:34 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-25 15:26:01 +0100 <adamoden> That might have been my issue. I'm doing this in Repl.it and when I ran the code again in a new window I only get an error for row 14.
2021-02-25 15:26:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
2021-02-25 15:26:28 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-02-25 15:27:46 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-25 15:28:02 +0100mmarusea1ph2(~mihai@198.199.100.72) (Quit: The past is dead and buried.)
2021-02-25 15:28:15 +0100mmaruseacph2(~mihai@198.199.100.72)
2021-02-25 15:28:22 +0100 <geekosaur> I think you need to fix that before you can get the other errors
2021-02-25 15:28:29 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-02-25 15:28:45 +0100 <geekosaur> and I get quite a few other errors locally after I fix that, although some of them are because repl.it runs a very old ghc
2021-02-25 15:28:55 +0100 <geekosaur> and some things have changed since then
2021-02-25 15:29:54 +0100son0p(~son0p@181.136.122.143)
2021-02-25 15:31:24 +0100 <geekosaur> hm, but some of it is fundamental, like missing Show, Eq, and Ord instances
2021-02-25 15:31:32 +0100 <geekosaur> being polymorphic has its costs
2021-02-25 15:31:43 +0100adamoden(bc970b1d@c188-151-11-29.bredband.comhem.se) (Quit: Connection closed)
2021-02-25 15:31:58 +0100adamoden(bc970b1d@c188-151-11-29.bredband.comhem.se)
2021-02-25 15:32:00 +0100 <adamoden> I do as well. There are MANY problems with this program, the main one being that it does something entirely different than I want it to do in the end :P
2021-02-25 15:32:19 +0100 <adamoden> I will download Haskell and to this locally then.
2021-02-25 15:32:28 +0100slack1256(~slack1256@45.4.2.52)
2021-02-25 15:32:29 +0100 <swarmcollective> adamoden, it is easier to use Int instead of a Num constraint.
2021-02-25 15:33:08 +0100 <swarmcollective> I am able to get it to compile, at least.
2021-02-25 15:33:27 +0100 <geekosaur> yeh, I'd just specialize to Int and String rather than try to be polymorphic and run into all the missing constraints you need
2021-02-25 15:33:29 +0100 <adamoden> swarmcollective I wanted to do that but everything broke. I'll try again in a local compiler.
2021-02-25 15:33:44 +0100 <swarmcollective> https://paste.tomsmeding.com/pwGShc2h
2021-02-25 15:33:47 +0100 <geekosaur> and weird type errors
2021-02-25 15:33:51 +0100usr25(~usr25@unaffiliated/usr25)
2021-02-25 15:34:29 +0100 <adamoden> I think I need Enum for using pred tho, might be I'm wrong about that too.
2021-02-25 15:34:52 +0100antimatroid(~nick@124-169-88-177.tpgi.com.au)
2021-02-25 15:35:06 +0100 <geekosaur> if you specify a type known to implement Enum, you don't have to also specify Enum
2021-02-25 15:35:22 +0100 <antimatroid> https://nift.dev/ functionstein and templatestein now work with non-bracketed code blocks for loops etc., lots of people are playing with my website generator behind the scenes and have put up ads on youtube with several million views in the last few weeks.. You folks might quite like the shell extension flashell, along with the scripting language functionstein and template language templatestein..
2021-02-25 15:35:24 +0100 <geekosaur> String is [Char], Char has an Enum instance
2021-02-25 15:35:29 +0100 <antimatroid> f++: https://pastebin.com/5FM7Hzef bash: https://pastebin.com/RTXXEHBg there's scripts to create and delete 100k empty files, the f++ script takes like ~3s whereas the bash script takes more like ~3m..
2021-02-25 15:35:34 +0100 <adamoden> Oki, good to know!
2021-02-25 15:36:16 +0100 <antimatroid> you can even use the template language from nift to help add build-time programming to making haskell code to run
2021-02-25 15:36:29 +0100antimatroid(~nick@124-169-88-177.tpgi.com.au) ()
2021-02-25 15:36:34 +0100rj(~x@gateway/tor-sasl/rj)
2021-02-25 15:37:48 +0100usr256(~usr25@unaffiliated/usr25) (Ping timeout: 256 seconds)
2021-02-25 15:38:35 +0100 <swarmcollective> Looks like spam to me. :\
2021-02-25 15:41:34 +0100 <swarmcollective> adamoden, repl.it doesn't seem to want to display the output. I changed main to: main = putStrLn $ show $ (length a, a)
2021-02-25 15:42:02 +0100 <swarmcollective> and it does not even display the length; when excluding a, it prints the length of 11.
2021-02-25 15:42:44 +0100 <swarmcollective> Is there an easy way to convert a char to its ascii equivellent?
2021-02-25 15:43:56 +0100 <geekosaur> ifyou mean numeric equivalent, fromEnum or ord
2021-02-25 15:44:04 +0100 <geekosaur> toEnum or chr in the other direction
2021-02-25 15:44:12 +0100adamoden(bc970b1d@c188-151-11-29.bredband.comhem.se) (Quit: Connection closed)
2021-02-25 15:44:24 +0100 <geekosaur> (Data.Char import for chr/ord)
2021-02-25 15:44:24 +0100adamoden(bc970b1d@c188-151-11-29.bredband.comhem.se)
2021-02-25 15:44:35 +0100 <swarmcollective> Thanks geekosaur
2021-02-25 15:45:55 +0100ephemera_(~E@122.34.1.187) (Quit: ephemera_)
2021-02-25 15:46:15 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 246 seconds)
2021-02-25 15:47:20 +0100 <danza> time to refresh some hoogle usage
2021-02-25 15:47:28 +0100MrMobius(~MrMobius@208.58.206.154) (Ping timeout: 265 seconds)
2021-02-25 15:47:29 +0100ephemera_(~E@122.34.1.187)
2021-02-25 15:47:31 +0100 <danza> @hoogle "Char -> Int"
2021-02-25 15:47:32 +0100 <lambdabot> Data.Char digitToInt :: Char -> Int
2021-02-25 15:47:32 +0100 <lambdabot> Data.Char ord :: Char -> Int
2021-02-25 15:47:32 +0100 <lambdabot> GHC.Base ord :: Char -> Int
2021-02-25 15:47:49 +0100[1]MrMobius(~MrMobius@208.58.206.154)
2021-02-25 15:48:29 +0100 <swarmcollective> Hmmm, repl.it still chokes even after using: main = putStrLn $ show $ (length a, map fromEnum a)
2021-02-25 15:49:09 +0100m4lvin(~m4lvin@w4eg.de) (Quit: m4lvin)
2021-02-25 15:49:58 +0100 <danza> the Enum instance is nifty :)
2021-02-25 15:50:03 +0100m4lvin(~m4lvin@w4eg.de)
2021-02-25 15:51:25 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-02-25 15:53:55 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 15:53:56 +0100 <swarmcollective> Ahhh, thanks GHCi... its because of infinite recursion. ;)
2021-02-25 15:55:26 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 268 seconds)
2021-02-25 15:56:02 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-02-25 15:56:46 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 15:58:36 +0100 <slack1256> Would a data/codata distinction make sense on a non-total language? It seems we can get better distinction between lazy and strict parts of a language via this mechanism than for example, reflecting strictness or laziness at the type level.
2021-02-25 15:59:04 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-02-25 16:00:43 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-02-25 16:00:56 +0100ystael(~ystael@209.6.50.55)
2021-02-25 16:02:05 +0100teardown(~user@gateway/tor-sasl/mrush)
2021-02-25 16:03:37 +0100MVQq(~anja@198.254.199.42) (Quit: q)
2021-02-25 16:04:14 +0100MarcelineVQ(~anja@198.254.199.42)
2021-02-25 16:04:57 +0100Shailangsa_(~shailangs@host86-186-191-40.range86-186.btcentralplus.com) ()
2021-02-25 16:08:29 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-25 16:09:30 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-25 16:10:27 +0100 <dolio> slack1256: The distinction as usually specified does not make sense.
2021-02-25 16:12:40 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-25 16:14:11 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 16:14:39 +0100 <slack1256> Between data and codata? I thought it was clear. Data defined by its constructors and codata defined by its destructors. To have proof on type-as-proposition with data you can use well formed recursion. To have a proof with codata you need to show "productiveness".
2021-02-25 16:14:57 +0100darjeeling_(~darjeelin@122.245.217.214) (Ping timeout: 264 seconds)
2021-02-25 16:15:29 +0100 <dolio> I mean it makes no sense in a non-total language. Everything is both data and codata.
2021-02-25 16:15:35 +0100 <dolio> Inductive and coinductive.
2021-02-25 16:15:47 +0100ystael(~ystael@209.6.50.55) (Read error: Connection reset by peer)
2021-02-25 16:16:20 +0100ystael(~ystael@209.6.50.55)
2021-02-25 16:17:43 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-02-25 16:17:54 +0100 <slack1256> Well it gets muddle up, but I think is not because we are on a non-total language, laziness gives data a certain codata behaviours.
2021-02-25 16:18:15 +0100 <slack1256> For example lists and streams are the same under lazy eval.
2021-02-25 16:19:05 +0100clynamen(~clynamen@net-2-34-3-193.cust.vodafonedsl.it)
2021-02-25 16:19:07 +0100clynamen_(~clynamen@net-93-66-46-121.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
2021-02-25 16:19:21 +0100DarknessDad(~LizardDad@c-98-236-134-69.hsd1.oh.comcast.net)
2021-02-25 16:20:36 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca)
2021-02-25 16:21:18 +0100 <dolio> This is what I mean. You say that laziness causes codata behavior, but you are only comparing it to codata in a total language. In the semantics of non-total languages, everything is both data and codata, even the stuff that superficially looks like what you think of as data.
2021-02-25 16:21:59 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net)
2021-02-25 16:22:56 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 16:23:09 +0100 <dolio> If you define spine strict lists, `data SL a = Nil | Cons a !(SL a)`, it is the fixed point of a functor, `data F a x = N | C a !x` ...
2021-02-25 16:23:32 +0100 <dolio> You can write `unfold step s = fmap (unfold step) (step s)`
2021-02-25 16:23:58 +0100 <dolio> Then consider `C 5 :: s -> F Int s`.
2021-02-25 16:24:40 +0100Jd007(~Jd007@162.156.11.151)
2021-02-25 16:24:41 +0100crobbins(~crobbins@2600:380:b862:6852:6dfc:d2e7:3649:b8ed)
2021-02-25 16:25:03 +0100 <dolio> `unfold (C 5) s = ⊥`, but also `unfold (C 5) s = map (unfold (C 5)) (C 5 s) = C 5 (unfold (C 5) s) = C 5 ⊥ = ⊥`
2021-02-25 16:25:57 +0100 <dolio> So it satisfies the equations of the coalgebra homomorphism.
2021-02-25 16:26:21 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
2021-02-25 16:26:53 +0100shailangsa(~shailangs@host86-186-191-40.range86-186.btcentralplus.com)
2021-02-25 16:27:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 260 seconds)
2021-02-25 16:28:11 +0100 <dolio> So, 'strict' types are also coinductive, even though they superficially look like inductive data from a total language.
2021-02-25 16:29:09 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-02-25 16:29:18 +0100 <dolio> The difference is no longer explainable as data vs. codata, inductive vs. coinductive. Instead they are fixed points of distinct functors.
2021-02-25 16:30:53 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-25 16:33:18 +0100 <boxscape> hm it seems like multiplicity polymorphism for (possibly) linear function will be a mess if multiplicity 0 is ever allowed (i.e. graded typing). I think a function can be polymorphic over 1 and ω, over 0 and ω, but not over any other combination
2021-02-25 16:33:34 +0100darjeeling_(~darjeelin@122.245.217.214)
2021-02-25 16:33:55 +0100 <boxscape> assuming ω means you're allowed to use the argument however many times you want
2021-02-25 16:33:55 +0100 <dolio> You mean, the same function won't actually work for 0 and 1?
2021-02-25 16:34:41 +0100 <boxscape> dolio what I mean is if you use an argument once, than %m-> would be a valid arrow only if m is not 0, for example
2021-02-25 16:35:08 +0100 <dolio> I think you can probably only be polymorphic by not using the argument yourself.
2021-02-25 16:35:22 +0100 <boxscape> ah
2021-02-25 16:35:26 +0100 <dolio> You are polymorphic because you just pass the argument to another function.
2021-02-25 16:35:38 +0100 <dolio> Which could be any multiplicity that matches.
2021-02-25 16:36:05 +0100 <boxscape> right now you can have (\x -> x) :: (a %m-> a) in ghc 9.1
2021-02-25 16:36:40 +0100 <boxscape> oh wait
2021-02-25 16:36:55 +0100 <boxscape> I think it ends up not actually being polymorphic if you do that
2021-02-25 16:37:14 +0100 <boxscape> or maybe ghci just doesn't print multiplicity polymorphism by default
2021-02-25 16:37:45 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-02-25 16:38:31 +0100 <dolio> What does it print for something like `(\f x -> f x) :: ((a %m-> b) -> (a %m-> b))`
2021-02-25 16:38:39 +0100 <Philonous> I have a list of Handles and I'm looking for a function that returns the first that has inputs or blocks until one becomes available (like epoll)
2021-02-25 16:39:17 +0100alx741(~alx741@181.196.69.27)
2021-02-25 16:39:29 +0100 <boxscape> dolio it prints the type of that as `forall a b. (a -> b) -> a -> b`
2021-02-25 16:39:58 +0100 <boxscape> and I can use the function I wrote above in both %One-> and %Many-> positions, so I guess it does, in fact, just not print it
2021-02-25 16:40:31 +0100 <dolio> Isn't there also subtyping between multiplicities?
2021-02-25 16:40:37 +0100 <boxscape> uhh possibly
2021-02-25 16:40:51 +0100 <dolio> Which is more what you were talking about before.
2021-02-25 16:41:12 +0100 <boxscape> hmm yeah
2021-02-25 16:41:24 +0100 <dolio> I.E. a linear function can be promoted to an unrestricted function.
2021-02-25 16:41:26 +0100 <geekosaur> Philonous, I suspect you'll have to make a binding to epoll
2021-02-25 16:41:47 +0100knupfer(~Thunderbi@200116b82c5b78000cf80c553eaca855.dip.versatel-1u1.de) (Remote host closed the connection)
2021-02-25 16:41:52 +0100 <merijn> You don't
2021-02-25 16:41:55 +0100 <merijn> You can do this with STM
2021-02-25 16:42:05 +0100 <Philonous> Ah, right
2021-02-25 16:42:07 +0100crobbins(~crobbins@2600:380:b862:6852:6dfc:d2e7:3649:b8ed) (Ping timeout: 260 seconds)
2021-02-25 16:42:19 +0100 <merijn> Philonous: https://hackage.haskell.org/package/base-4.14.1.0/docs/Control-Concurrent.html#v:threadWaitReadSTM
2021-02-25 16:44:00 +0100 <boxscape> anyone know where the Many and One data constructors for linear types are defined?
2021-02-25 16:44:35 +0100crobbins(~crobbins@2600:380:b86f:cfd2:64ef:f87:41ee:2ddd)
2021-02-25 16:44:40 +0100 <Philonous> Maybe it's easier to just start n threads blocking on hWaitForInput and once one unblocks I just put the respective Handle into an {T}MVar
2021-02-25 16:44:47 +0100 <boxscape> (they don't seem to say in the proposal)
2021-02-25 16:45:37 +0100 <boxscape> ghci> id :: a %m-> a
2021-02-25 16:45:38 +0100 <boxscape> Couldn't match type ‘'Many’ with ‘'Many’
2021-02-25 16:45:39 +0100 <boxscape> thanks
2021-02-25 16:46:03 +0100 <boxscape> (though it makes sense that this wouldn't work)
2021-02-25 16:46:34 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 16:46:36 +0100crobbins(~crobbins@2600:380:b86f:cfd2:64ef:f87:41ee:2ddd) (Remote host closed the connection)
2021-02-25 16:47:34 +0100 <boxscape> it's defined in GHC.Types
2021-02-25 16:48:16 +0100 <Philonous> Will ghc support multiplicity-polymorphism?
2021-02-25 16:48:27 +0100 <boxscape> dolio:I.E. a linear function can be promoted to an unrestricted function. -- I don't think this is true; if I have a function `lid :: a %1-> a; lid x = x`, I get an error if I try `lid :: a -> a`
2021-02-25 16:48:31 +0100 <boxscape> Philonous it does already
2021-02-25 16:48:33 +0100 <Philonous> (Or whatever the correct term is)
2021-02-25 16:48:34 +0100 <boxscape> in HEAD
2021-02-25 16:48:41 +0100 <Philonous> Oh, nice.
2021-02-25 16:49:43 +0100 <dolio> Maybe there is no subtyping, then.
2021-02-25 16:50:17 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2021-02-25 16:50:22 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds)
2021-02-25 16:50:47 +0100kam1(~kam1@5.125.126.175) (Ping timeout: 265 seconds)
2021-02-25 16:50:51 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-02-25 16:52:02 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 256 seconds)
2021-02-25 16:53:12 +0100Wuzzy(~Wuzzy@p5790ec2c.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-02-25 16:53:28 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
2021-02-25 16:54:16 +0100notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 240 seconds)
2021-02-25 16:54:30 +0100chisui(59f77ca6@i59F77CA6.versanet.de) (Quit: Connection closed)
2021-02-25 16:54:42 +0100shatriff(~vitaliish@protective.remission.volia.net) (Remote host closed the connection)
2021-02-25 16:54:54 +0100shatriff(~vitaliish@protective.remission.volia.net)
2021-02-25 16:54:57 +0100hiroaki_(~hiroaki@2a02:8108:8c40:2bb8:b00a:55a1:d947:55ef) (Ping timeout: 272 seconds)
2021-02-25 16:57:44 +0100 <dolio> boxscape: I assume it works if you eta expand? But maybe that's all. That'd fit GHC's typical approach.
2021-02-25 16:58:45 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
2021-02-25 16:58:46 +0100 <boxscape> dolio yeah the lid example does work with eta expansion
2021-02-25 16:59:04 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 17:00:07 +0100xosdy[m]1(xosdyaleth@gateway/shell/matrix.org/x-xunefsscnonbtgiv) (Quit: Idle for 30+ days)
2021-02-25 17:00:34 +0100DarknessDad(~LizardDad@c-98-236-134-69.hsd1.oh.comcast.net) (Read error: Connection reset by peer)
2021-02-25 17:02:06 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 17:02:21 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 17:02:33 +0100conal(~conal@64.71.133.70)
2021-02-25 17:03:33 +0100slack1256(~slack1256@45.4.2.52) (Ping timeout: 260 seconds)
2021-02-25 17:03:33 +0100marble_visions(~user@68.183.79.8) (Quit: bye)
2021-02-25 17:03:39 +0100 <sm[m]> ezzieyguywuf: a very good chance, you have to test both ghc versions and adapt to both either using CPP or the *-compat libs on hackage
2021-02-25 17:03:56 +0100 <Clint> ~/win go #linguistics
2021-02-25 17:04:00 +0100Clintsighs.
2021-02-25 17:04:12 +0100marble_visions(~user@68.183.79.8)
2021-02-25 17:04:13 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-25 17:04:19 +0100Rudd0(~Rudd0@185.189.115.108)
2021-02-25 17:04:45 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 17:05:02 +0100 <ezzieyguywuf> sm[m]: you're answering my questions from yesterday?
2021-02-25 17:05:13 +0100 <sm[m]> ohh oops, darn client was scrolled to yesterday :)
2021-02-25 17:05:17 +0100 <ezzieyguywuf> lol nbd
2021-02-25 17:05:26 +0100 <ezzieyguywuf> just checking to make sure I didn't ask something today and forgot
2021-02-25 17:05:41 +0100 <sm[m]> must.. sync.. with.. consensus.. time..
2021-02-25 17:06:55 +0100hiroaki_(~hiroaki@2a02:8108:8c40:2bb8:d62a:148b:cd1:9dfb)
2021-02-25 17:08:47 +0100gr33nbits(~gr33nbits@a109-49-87-64.cpe.netcabo.pt)
2021-02-25 17:08:56 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
2021-02-25 17:09:55 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-02-25 17:10:41 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net)
2021-02-25 17:10:47 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net) (Changing host)
2021-02-25 17:10:47 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2021-02-25 17:13:08 +0100Davith(56be7512@host86-190-117-18.range86-190.btcentralplus.com)
2021-02-25 17:13:40 +0100Davith(56be7512@host86-190-117-18.range86-190.btcentralplus.com) ()
2021-02-25 17:14:54 +0100Guest56442(~zmv@191.255.89.231)
2021-02-25 17:15:03 +0100Pickchea(~private@unaffiliated/pickchea)
2021-02-25 17:15:10 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 17:15:16 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2021-02-25 17:15:49 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 17:16:24 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Ping timeout: 265 seconds)
2021-02-25 17:19:56 +0100acidjnk_new(~acidjnk@p200300d0c739092208198526eb118d06.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-02-25 17:20:24 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 272 seconds)
2021-02-25 17:20:29 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer)
2021-02-25 17:20:55 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 17:21:25 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh)
2021-02-25 17:22:53 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-kzbgzpokvgnzruvp)
2021-02-25 17:23:31 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 17:24:16 +0100alecs[m](malumorema@gateway/shell/matrix.org/x-nmaaktphkqttrbsd)
2021-02-25 17:25:16 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
2021-02-25 17:25:31 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 17:25:33 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2021-02-25 17:26:04 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 17:28:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
2021-02-25 17:28:49 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2021-02-25 17:30:09 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 17:30:18 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 17:30:19 +0100roconnor(~roconnor@host-104-157-194-235.dyn.295.ca)
2021-02-25 17:30:34 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds)
2021-02-25 17:31:14 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 17:33:00 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-25 17:33:03 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 17:35:36 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
2021-02-25 17:35:45 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 260 seconds)
2021-02-25 17:37:33 +0100justsome1(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 246 seconds)
2021-02-25 17:38:21 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 264 seconds)
2021-02-25 17:40:01 +0100hololeap(~hololeap@unaffiliated/hololeap)
2021-02-25 17:41:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-02-25 17:42:00 +0100chisui(59f77ca6@i59F77CA6.versanet.de)
2021-02-25 17:43:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 17:43:28 +0100lazyshrk(~lazyshrk@128.199.58.13) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-25 17:43:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 17:44:11 +0100lazyshrk(~lazyshrk@128.199.58.13)
2021-02-25 17:48:41 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh)
2021-02-25 17:48:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-25 17:49:10 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-25 17:49:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 17:50:15 +0100 <koz> Best line in any paper I've read this year: "Monoid-on-monoid action"
2021-02-25 17:50:16 +0100aqd(~aqd@84.20.147.33) (Ping timeout: 240 seconds)
2021-02-25 17:51:22 +0100 <monochrom> heh
2021-02-25 17:51:29 +0100tapastopos
2021-02-25 17:51:33 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 17:51:36 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt) ()
2021-02-25 17:51:37 +0100 <Taneb> Does that just work out to be a monoid homomorphism?
2021-02-25 17:51:54 +0100bergey``(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Remote host closed the connection)
2021-02-25 17:52:39 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 265 seconds)
2021-02-25 17:52:51 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-02-25 17:53:42 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-02-25 17:53:49 +0100 <koz> Taneb: Yeah, I think so.
2021-02-25 17:53:57 +0100 <koz> But it's still hilarious as a line.
2021-02-25 17:54:39 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-02-25 17:54:39 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-02-25 17:54:39 +0100mouseghost(~draco@wikipedia/desperek)
2021-02-25 17:55:05 +0100 <monochrom> But monoid actions (and group actions) are of value too, whether it is acting on yet another monoid.
2021-02-25 17:55:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-02-25 17:55:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 17:56:16 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 240 seconds)
2021-02-25 17:56:56 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Ping timeout: 240 seconds)
2021-02-25 18:00:33 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 264 seconds)
2021-02-25 18:00:42 +0100pera(pera@gateway/vpn/mullvad/pera)
2021-02-25 18:01:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-02-25 18:01:21 +0100andi^andi-
2021-02-25 18:01:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 18:03:10 +0100crobbins(~crobbins@c-73-76-34-113.hsd1.tx.comcast.net)
2021-02-25 18:03:39 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-02-25 18:04:52 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-25 18:05:49 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-25 18:07:53 +0100pera(pera@gateway/vpn/mullvad/pera) (Ping timeout: 272 seconds)
2021-02-25 18:09:30 +0100pera(~pera@unaffiliated/pera)
2021-02-25 18:09:35 +0100Deide(~Deide@217.155.19.23)
2021-02-25 18:12:17 +0100augnun(~augnun@2804:14c:658b:41bb:9900:3bb7:feab:98f9)
2021-02-25 18:13:21 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 18:13:43 +0100mnrmnaughfind
2021-02-25 18:14:03 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-25 18:15:11 +0100conal(~conal@64.71.133.70)
2021-02-25 18:15:20 +0100 <ski> koz : mapping monoid elements to monoid homomorphisms ? like a bilinear transformation, but for monoids rather than for vector spaces ?
2021-02-25 18:15:56 +0100 <koz> ski: It's from Brent Yorgey's paper about diagrams?
2021-02-25 18:16:36 +0100Tops2(~Tobias@dyndsl-095-033-019-043.ewe-ip-backbone.de)
2021-02-25 18:17:17 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-25 18:19:21 +0100kuribas(~user@ptr-25vy0i970oqtzc3b45o.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-02-25 18:19:41 +0100 <ski> hm, any link ?
2021-02-25 18:19:56 +0100 <koz> https://repository.upenn.edu/cgi/viewcontent.cgi?article=1773&context=cis_papers
2021-02-25 18:20:32 +0100findmnrmnaugh
2021-02-25 18:20:33 +0100darjeeling_(~darjeelin@122.245.217.214) (Ping timeout: 260 seconds)
2021-02-25 18:21:57 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Ping timeout: 260 seconds)
2021-02-25 18:21:58 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2021-02-25 18:23:30 +0100 <ski> hm, we need a catchy term for the verb version of "function extensionality"
2021-02-25 18:23:56 +0100DavidEichmann(~david@234.109.45.217.dyn.plus.net) (Remote host closed the connection)
2021-02-25 18:24:08 +0100 <dolio> How would the verb be used?
2021-02-25 18:24:10 +0100 <rednaZ[m]> Is the result of `f x` used via a binder like `result = \ @ a_a2L5 -> f x` in core guaranteed to be shared although it is technically under a lambda (upper-case lambda)?
2021-02-25 18:24:34 +0100 <ski> "Moreover, η-reducint (1) and (2) yeilds" (page 9 of aforementioned paper)
2021-02-25 18:24:46 +0100 <ski> s/reducint/reducing/
2021-02-25 18:25:18 +0100 <ski> it ought to express that the listed equations are the "function extensionalized" versions of equations (1) and (2)
2021-02-25 18:26:13 +0100conal(~conal@64.71.133.70)
2021-02-25 18:26:27 +0100 <ski> (also, i'm not too sure if it makes much sense to have an `Action' type class, for similar reasons for why there doesn't seem to be much utility to have a `NaturalTransformation' type class)
2021-02-25 18:26:34 +0100 <EvanR> how about zonk
2021-02-25 18:27:42 +0100adamoden(bc970b1d@c188-151-11-29.bredband.comhem.se) (Ping timeout: 240 seconds)
2021-02-25 18:30:35 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de)
2021-02-25 18:30:57 +0100 <lyxia> rednaZ[m]: that seems likely
2021-02-25 18:31:30 +0100 <ski> "zonk" already has a (different) technical meaning. (see <https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/type-checker#user-content-types-var…>,<https://stackoverflow.com/questions/31889048/what-does-the-ghc-source-mean-by-zonk>)
2021-02-25 18:31:36 +0100bitmagie(~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Client Quit)
2021-02-25 18:32:01 +0100 <EvanR> good point, might want to avoid overloading
2021-02-25 18:32:20 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
2021-02-25 18:32:40 +0100 <ski> (i guess we also need a plausible adjectival version)
2021-02-25 18:32:49 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-25 18:33:07 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-25 18:33:39 +0100howdoi(uid224@gateway/web/irccloud.com/x-csqlidmiacqyvucp)
2021-02-25 18:34:50 +0100cocytus(~cocytus@cpe-76-95-48-109.socal.res.rr.com)
2021-02-25 18:34:55 +0100waskell(~quassel@d66-183-230-153.bchsia.telus.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-02-25 18:36:28 +0100 <cocytus> I booted up VSCode today and got this Haskell Extension error: haskell-language-server 1.0.0 for GHC 8.8.4 is not available on Windows_NT
2021-02-25 18:36:37 +0100 <cocytus> Anyone else seeing this problem?
2021-02-25 18:39:09 +0100darjeeling_(~darjeelin@122.245.217.214)
2021-02-25 18:39:38 +0100o1lo01ol1o(~o1lo01ol1@89.214.192.84)
2021-02-25 18:43:19 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 18:43:50 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-25 18:44:20 +0100danza(~francesco@151.53.76.37) (Quit: Leaving)
2021-02-25 18:45:12 +0100 <fendor> cocytus, You should probably report it in #haskell-language-server
2021-02-25 18:45:38 +0100 <fendor> I bet jneira knows what's up
2021-02-25 18:46:46 +0100 <cocytus> Will do. Didn't know that was a channel until now. Thanks.
2021-02-25 18:47:21 +0100afidegnum(~afidegnum@102.176.65.243) (Ping timeout: 264 seconds)
2021-02-25 18:47:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-25 18:48:08 +0100tv-(~tv@unaffiliated/tv-) ("WeeChat 2.9")
2021-02-25 18:49:55 +0100Wuzzy(~Wuzzy@p5790e3bb.dip0.t-ipconnect.de)
2021-02-25 18:49:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 18:50:56 +0100 <ski> koz : ok, yes the action was mapping monoid elements to monoid homomorphisms, so it's like a "bimonoidal transformation" or whatever one should call it
2021-02-25 18:52:45 +0100borne(~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2021-02-25 18:52:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 18:53:42 +0100hiredman_hiredman
2021-02-25 18:54:16 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Read error: Connection reset by peer)
2021-02-25 18:54:33 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
2021-02-25 18:56:44 +0100borne(~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de)
2021-02-25 18:57:41 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-02-25 18:59:30 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection)
2021-02-25 19:00:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-25 19:01:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 19:02:45 +0100 <monochrom> verb version of function extensionality: f is pointwise equal to g
2021-02-25 19:04:04 +0100 <EvanR> is isn't that verbing
2021-02-25 19:04:06 +0100 <dolio> That isn't the verb that was requested, though. Although I'm not really convinced of the necessity.
2021-02-25 19:04:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-25 19:05:02 +0100borne(~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-02-25 19:05:25 +0100 <dolio> The verb was for rewriting a formula to use pointwise equality.
2021-02-25 19:06:24 +0100 <ski> s/formula/defining equation/
2021-02-25 19:06:55 +0100 <monochrom> re-pointify :)
2021-02-25 19:07:04 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
2021-02-25 19:09:05 +0100 <ski> well, really for either direction i guess. although i had the other direction mostly in mind
2021-02-25 19:09:53 +0100ski. o O ( "repointificate","depointificate","pointificate" )
2021-02-25 19:10:02 +0100 <koz> I'm in favour of 'pointificate'.
2021-02-25 19:10:15 +0100Wuzzy(~Wuzzy@p5790e3bb.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-02-25 19:10:21 +0100 <ski> and the first two as specific directed versions of it ?
2021-02-25 19:11:25 +0100fendor(~fendor@91.141.0.220.wireless.dyn.drei.com) (Remote host closed the connection)
2021-02-25 19:12:00 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 19:12:59 +0100 <koz> ski: Along with 'disappointificate'.
2021-02-25 19:13:00 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-25 19:13:01 +0100 <ski> "indirectify" doesn't sound that great (is quite vague about what is indirect) .. i guess "extensionalify" or "extensionalize" isn't quite as bad
2021-02-25 19:13:05 +0100fendor(~fendor@91.141.0.220.wireless.dyn.drei.com)
2021-02-25 19:14:05 +0100xsperry(~as@unaffiliated/xsperry) ()
2021-02-25 19:15:51 +0100 <ski> koz : hm, so "appointificate" would be going from `map f . concat = concat . map (map f)' to `map f (concat xss) = concat (map (map f) xss)', and "disappointificate" the reverse direction, while "pointificate" refers to both ?
2021-02-25 19:16:27 +0100 <koz> ski: Yes!
2021-02-25 19:16:39 +0100 <koz> And people who do this are 'pointiffs'.
2021-02-25 19:16:48 +0100 <ski> i like it
2021-02-25 19:17:38 +0100rajivr(uid269651@gateway/web/irccloud.com/x-bteccupbxcrkcjlt) (Quit: Connection closed for inactivity)
2021-02-25 19:17:39 +0100 <ski> so, it's settled then, at least tentatively ?
2021-02-25 19:17:53 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-02-25 19:17:54 +0100 <koz> No objections here.
2021-02-25 19:19:04 +0100xsperry(~as@unaffiliated/xsperry)
2021-02-25 19:21:25 +0100Graf_Blutwurst(~grafblutw@adsl-178-38-234-220.adslplus.ch) (Quit: WeeChat 3.0)
2021-02-25 19:21:54 +0100waskell(~quassel@d66-183-230-153.bchsia.telus.net)
2021-02-25 19:24:48 +0100 <ski> (fwiw, to clarify, `f x = x^2' is an indirect definition of `f' in the sense that it defines `f' indirectly, by defining what the output `f x' is to be, for every possible input `x'. `f = \x -> x^2' would be a direct definition, in this sense, giving a meaning directly to `f'. ditto applies for defining relations, and defining subsets .. in fact, also applies to "message-dispatching" definitions (aka
2021-02-25 19:24:54 +0100 <ski> "copatterns"), like `repeat :: a -> Stream a; repeat a = as where Head as = a; Tail as = as' and `iterate :: (a -> a) -> a -> Stream a; Head (iterate _ x) = x; Tail (iterate f x) = iterate f (f x)')
2021-02-25 19:26:37 +0100dcoutts__(~duncan@85.186.125.91.dyn.plus.net) (Ping timeout: 260 seconds)
2021-02-25 19:27:11 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2021-02-25 19:28:16 +0100skregas_(~skregas_@201.89-10-150.nextgentel.com)
2021-02-25 19:29:23 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-saqaggydvtpkwddi)
2021-02-25 19:30:38 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
2021-02-25 19:30:49 +0100 <dolio> This seems like being concerned with distinctions that don't really matter.
2021-02-25 19:31:35 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0)
2021-02-25 19:31:39 +0100 <dolio> The 'direct' definition of f is 'directly' defining it to mean a function literal that defined by saying what the output is for every possible input.
2021-02-25 19:32:51 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-02-25 19:34:56 +0100 <ski> yea, the point was the general shape `f x = ..x..' vs. `f = ...
2021-02-25 19:34:57 +0100 <ski> '
2021-02-25 19:35:23 +0100merelyme(~merelyme@185.153.177.12)
2021-02-25 19:35:26 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:7b45:fc1a:7f85:7f18) (Ping timeout: 240 seconds)
2021-02-25 19:37:09 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 19:37:14 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-25 19:37:18 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 19:37:26 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 19:38:36 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-02-25 19:39:56 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 240 seconds)
2021-02-25 19:41:28 +0100darjeeling_(~darjeelin@122.245.217.214) (Ping timeout: 256 seconds)
2021-02-25 19:45:06 +0100meck(~meck@li1809-18.members.linode.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-25 19:45:22 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-25 19:46:33 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 19:46:42 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 19:48:16 +0100meck(~meck@li1809-18.members.linode.com)
2021-02-25 19:50:59 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 19:51:06 +0100Pickchea(~private@unaffiliated/pickchea) (Ping timeout: 256 seconds)
2021-02-25 19:51:24 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 19:51:42 +0100 <dminuoso> ski: I recall a publication discussing the history of terminology in logic, do you happen to know what I’m thinking of?
2021-02-25 19:52:07 +0100 <dminuoso> Im sure it was you who suggested it a while ago
2021-02-25 19:52:27 +0100 <dminuoso> (I think it was some kind of article or letter from Frege, but I can’t seem to find it)
2021-02-25 19:52:45 +0100mawk(mawk@serveur.io) (Ping timeout: 256 seconds)
2021-02-25 19:54:22 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-02-25 19:54:36 +0100merelyme(~merelyme@185.153.177.12) (Remote host closed the connection)
2021-02-25 19:54:42 +0100darjeeling_(~darjeelin@122.245.218.150)
2021-02-25 19:58:07 +0100 <ski> hm .. doesn't seem to ring a bell
2021-02-25 20:00:30 +0100 <ski> Frege has some interesting writings. like "Begriffsschrift","Function and Concept","What is a Function?","The Foundations of Arithmetic"
2021-02-25 20:00:41 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-02-25 20:00:51 +0100conal(~conal@64.71.133.70)
2021-02-25 20:01:06 +0100 <ski> (probably "On Sense and Reference" and "Concept and Object" are also interesting, but i haven't read those)
2021-02-25 20:01:27 +0100 <ski> Frege basically introduces macros at one point
2021-02-25 20:02:47 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-25 20:02:47 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-25 20:03:21 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-25 20:03:23 +0100 <ski> (what he calls "function" we'd call an "expression with holes" (a meta-function, operating on fragments of language phrases by composing smaller ones into larger ones (no analysis)). what we call a "function (value)" he calls "course-of-values (of a function)", basically being the extension of the former)
2021-02-25 20:03:23 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-25 20:03:56 +0100 <EvanR> i read that part, and was wondering, how is his idea different from a lambda
2021-02-25 20:04:19 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2021-02-25 20:04:26 +0100 <EvanR> other than being earlier in history than lambda calculus
2021-02-25 20:04:35 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 20:05:17 +0100 <ski> "From Frege to Gödel: A Source Book in Mathematical Logic" edited by J. van Heijenoort in 1967 contains key original articles/papers (when appropriate, translated into english) of early logicians and writers on logic
2021-02-25 20:05:21 +0100ezzieyguywuf(~Unknown@unaffiliated/ezzieyguywuf) (Ping timeout: 264 seconds)
2021-02-25 20:06:16 +0100 <ski> i don't think he has anything like the lambda notation for function values
2021-02-25 20:06:37 +0100 <EvanR> no... not really. But is notation the only significant difference?
2021-02-25 20:06:53 +0100 <ski> i'm not talking about concrete syntax, i'm talking about abstract syntax
2021-02-25 20:07:01 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-25 20:07:04 +0100 <ski> he has no notation for it
2021-02-25 20:07:09 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 20:07:38 +0100 <EvanR> yes in begriffschrift he has a funky notation for this sentence with a hole in it, that you can fill in
2021-02-25 20:07:52 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 276 seconds)
2021-02-25 20:07:52 +0100 <ski> (he talks about courses-of-values by using words, and by writing down formulae for their bodies. but no notation corresponding to the lambda notation, as i said)
2021-02-25 20:08:04 +0100 <ski> yes, that's the meta-function i mentioned
2021-02-25 20:08:10 +0100 <EvanR> kind of a square root looking thing
2021-02-25 20:08:55 +0100 <EvanR> ok, meta-function
2021-02-25 20:09:40 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-25 20:10:37 +0100 <ski> (if you're familiar with staged computation, it's a function operating on code expressions. specifically a (only) synthesizing one (not analysing, not pattern-matching on input expressions))
2021-02-25 20:11:29 +0100 <ski> hm, looking at <https://gallica.bnf.fr/ark:/12148/bpt6k65658c/f37.item> -- would you know in which section, or on which page, the notation you mentioned is at ?
2021-02-25 20:13:01 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 20:13:15 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 20:14:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 20:14:14 +0100 <EvanR> ok, go back to page 19 and he's doing this https://i.imgur.com/vOOTd00.png
2021-02-25 20:14:35 +0100 <EvanR> basically reserving a letter to be used in place of a whole in a formula
2021-02-25 20:14:48 +0100 <EvanR> seems pretty lambda like
2021-02-25 20:15:17 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-02-25 20:15:47 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-25 20:16:03 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 20:16:10 +0100 <ski> oh, that's a universal quantifier
2021-02-25 20:16:23 +0100 <EvanR> drat
2021-02-25 20:16:30 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 20:16:41 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-02-25 20:16:44 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 20:18:09 +0100 <ski> people later linearized that into ⌜(a) Φ(a)⌝, also adding ⌜(∃a) Φ(a)⌝ for the existential version. then, at some point people started using ⌜(∀a) Φ(a)⌝ for the former, and then also ⌜∀a Φ(a)⌝ and ⌜∃a Φ(a)⌝
2021-02-25 20:18:21 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
2021-02-25 20:18:30 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 20:18:40 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 20:21:12 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-25 20:22:49 +0100_d0t(void@gateway/vpn/mullvad/d0t/x-89419360) (Ping timeout: 260 seconds)
2021-02-25 20:24:27 +0100borne(~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de)
2021-02-25 20:26:40 +0100chisui(59f77ca6@i59F77CA6.versanet.de) (Quit: Connection closed)
2021-02-25 20:26:41 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 20:27:22 +0100motherfsck(~motherfsc@unaffiliated/motherfsck)
2021-02-25 20:27:40 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 20:27:55 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-25 20:29:44 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 265 seconds)
2021-02-25 20:32:09 +0100yahb(xsbot@haskell/bot/yahb) (Ping timeout: 260 seconds)
2021-02-25 20:32:19 +0100yahb(xsbot@178.219.36.155)
2021-02-25 20:32:19 +0100yahb(xsbot@178.219.36.155) (Changing host)
2021-02-25 20:32:19 +0100yahb(xsbot@haskell/bot/yahb)
2021-02-25 20:34:31 +0100o1lo01ol_(~o1lo01ol1@95.69.63.87)
2021-02-25 20:34:49 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-02-25 20:36:39 +0100o1lo01o__(~o1lo01ol1@95.69.63.87)
2021-02-25 20:37:04 +0100gioyik_(~gioyik@gateway/tor-sasl/gioyik) (Remote host closed the connection)
2021-02-25 20:37:28 +0100o1lo01ol1o(~o1lo01ol1@89.214.192.84) (Ping timeout: 260 seconds)
2021-02-25 20:37:30 +0100gioyik_(~gioyik@gateway/tor-sasl/gioyik)
2021-02-25 20:37:53 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) (Ping timeout: 272 seconds)
2021-02-25 20:37:57 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-25 20:38:14 +0100Tario(~Tario@201.192.165.173)
2021-02-25 20:39:09 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 260 seconds)
2021-02-25 20:40:05 +0100o1lo01ol_(~o1lo01ol1@95.69.63.87) (Ping timeout: 260 seconds)
2021-02-25 20:40:21 +0100joecordingley(~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) ()
2021-02-25 20:41:18 +0100deviantfero(~deviantfe@190.150.27.58) (Quit: WeeChat 3.0)
2021-02-25 20:41:31 +0100 <rednaZ[m]> lyxia: Thanks.
2021-02-25 20:41:54 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-02-25 20:43:32 +0100chisui(59f77ca6@i59F77CA6.versanet.de)
2021-02-25 20:49:17 +0100ddellacosta(~ddellacos@86.106.143.202)
2021-02-25 20:49:30 +0100 <mananamenos> Why is it possible to derive a functor but not a monad? I've started reading a bit about free monads and as I understand they are used to turn a functor to a monad.
2021-02-25 20:49:53 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 260 seconds)
2021-02-25 20:50:17 +0100 <EvanR> you can derive a free monad
2021-02-25 20:50:32 +0100 <EvanR> since it's unique
2021-02-25 20:52:06 +0100 <tomsmeding> mananamenos: many types don't have a unique valid monad instance; I'm not sure whether it's feasible to automatically detect for a given type whether there is only one
2021-02-25 20:52:33 +0100 <tomsmeding> and picking one while there are more would be risky and not really useful
2021-02-25 20:53:44 +0100 <EvanR> even if you could detect that... i boggle at how you would find the specialized monads for all the types
2021-02-25 20:55:11 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 20:56:32 +0100 <shapr> silly question, can I use hoogle to search for instances?
2021-02-25 20:57:32 +0100 <chisui> you can derive Monad for newtypes. If you want something more interesting you will have to write your own instance anyway.
2021-02-25 20:58:53 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net)
2021-02-25 20:59:32 +0100 <monochrom> I don't think monads can be derived at all.
2021-02-25 21:00:30 +0100 <ski> for `newtype's, you're just inheriting the instance from the representation
2021-02-25 21:00:38 +0100 <davean> mananamenos: theres no opptions in what a Functor is. Its very simple. Theres one type parameter, and it behaves exactly one way
2021-02-25 21:00:53 +0100 <davean> Not true with a Monad.
2021-02-25 21:01:36 +0100ski. o O ( `newtype Foo a = MkFoo (MyMonadTransformer Foo a) deriving (Functor,Applicative,Monad)' )
2021-02-25 21:02:36 +0100supercoven(~Supercove@194.34.133.92) (Ping timeout: 240 seconds)
2021-02-25 21:02:38 +0100 <monochrom> For free monads, the monad you end with looks nothing like the functor you start with at all.
2021-02-25 21:02:57 +0100 <mananamenos> davean, im looking at fmap and bind signatures and cannot see why one would be possible to derive and not the other. For example bind is `f a -> (a -> f b) -> f b`, unwrap from the context the first param and call the function passed by second param.
2021-02-25 21:03:18 +0100ddellacosta(~ddellacos@86.106.143.202) (Remote host closed the connection)
2021-02-25 21:03:35 +0100 <ski> "unwrap" is ambiguous
2021-02-25 21:03:36 +0100 <mananamenos> just want to understand better, because there is something fundamental i dont get it seems.
2021-02-25 21:03:36 +0100 <davean> mananamenos: incorrect.
2021-02-25 21:03:40 +0100 <monochrom> OK, apply what you said to "data S a = C a (S a)", see how far you get.
2021-02-25 21:03:45 +0100 <davean> mananamenos: Theres nothing forcing the "f" part to be the same
2021-02-25 21:04:07 +0100 <davean> In functor it specificly *is* forced to not change
2021-02-25 21:04:18 +0100 <monochrom> IMO it's counterproductive to keep claiming "I don't see why not" without writing down your algorithm.
2021-02-25 21:04:21 +0100 <davean> Only the target may change in functor, anything may change in monad
2021-02-25 21:04:23 +0100 <monochrom> So where is your algorithm?
2021-02-25 21:04:55 +0100 <monochrom> IMO no one is obliged to answer "why not".
2021-02-25 21:05:05 +0100 <ski> why not ?
2021-02-25 21:05:11 +0100 <davean> His algorithm can't exist because Monad is insufficiently defined to allow a decision
2021-02-25 21:05:15 +0100 <monochrom> Instead, show your algorithm to justify "why it can be done".
2021-02-25 21:05:22 +0100 <mananamenos> monochrom, relax dude, i've just started reading about this stuff :) did not want to offend or something
2021-02-25 21:05:52 +0100 <mananamenos> just looking for high level advices from people here
2021-02-25 21:06:02 +0100 <Ferdirand> mananamenos: you can start with: newtype Compose f g a = f (g a)
2021-02-25 21:06:11 +0100 <monochrom> Sure, if you're just starting, you're also not ready for a proof of impossbility.
2021-02-25 21:06:14 +0100 <Ferdirand> then try to write (Functor f, Functor g) => Functor (Compose f g)
2021-02-25 21:06:23 +0100 <ski> well, advice is what you got :)
2021-02-25 21:06:28 +0100 <Ferdirand> then do it for Applicative, then try to do it for Monad
2021-02-25 21:06:28 +0100nopolitica(~zul@46.39.255.115)
2021-02-25 21:06:44 +0100 <monochrom> See this is what I keep saying. People play the "I'm beginner" card only when it's convenient.
2021-02-25 21:07:02 +0100zargoertzel(~zar@fw1.ciirc.cvut.cz) (Ping timeout: 256 seconds)
2021-02-25 21:07:18 +0100ddellacosta(~ddellacos@86.106.143.189)
2021-02-25 21:07:27 +0100 <davean> I'm confused by this claim a proof of impossability isn't super useful for a beginner
2021-02-25 21:07:34 +0100 <chisui> In this case I find it more intuitive to think of a Monad as something that supports join :: f (f a) -> f a
2021-02-25 21:07:38 +0100 <davean> I find them lovely learning tools
2021-02-25 21:07:47 +0100petersen(~petersen@redhat/juhp)
2021-02-25 21:07:57 +0100 <monochrom> What I'm against is not asking "why not". It's insisting "I don't see why not, just do the following" for the 2nd time.
2021-02-25 21:08:23 +0100 <monochrom> davean, I said "not ready", not "not valuable".
2021-02-25 21:08:27 +0100Wuzzy(~Wuzzy@p5b0df8ea.dip0.t-ipconnect.de)
2021-02-25 21:08:27 +0100skinods to chisui
2021-02-25 21:08:41 +0100 <monochrom> You ever showed the halting problem proof to 1st-year CS students?
2021-02-25 21:08:42 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
2021-02-25 21:08:54 +0100 <davean> monochrom: yes! It is what opened CS to me!
2021-02-25 21:09:08 +0100 <davean> and the FLP impossability opened distributed systems to me!
2021-02-25 21:09:21 +0100 <ski> "FLP" ?
2021-02-25 21:09:31 +0100 <davean> a good impossability proof has been more than anything else a way for me to jump into and deeply understand a subjest almost instantly
2021-02-25 21:10:12 +0100 <davean> ski: the "big" proof of impossabiltiy that made Distributed Systems its own subject - You can't have concenssus
2021-02-25 21:10:36 +0100 <monochrom> Why argue with me? Go ahead show the proof you want to show. I can't stop you.
2021-02-25 21:10:39 +0100 <davean> Its the *only* thing I had to see to udnerstand other distributed systems things
2021-02-25 21:10:51 +0100 <davean> I sketched it above
2021-02-25 21:11:09 +0100 <monochrom> OK, how much have you convinced the asker?
2021-02-25 21:11:24 +0100 <ski> does the letters stand for anything ?
2021-02-25 21:11:27 +0100 <davean> monochrom: frankly I don't know
2021-02-25 21:11:33 +0100 <davean> ski: Fischer, Lynch and Patterson
2021-02-25 21:11:37 +0100 <ski> okay, ty
2021-02-25 21:11:53 +0100 <davean> monochrom: you spent the entire time shutting them down
2021-02-25 21:11:54 +0100 <swarmcollective> I've learned a lot by taking suggestions here and putting them in a repl to see what works and what doesn't.
2021-02-25 21:11:55 +0100 <mananamenos> davean, could you expand of this `Theres nothing forcing the "f" part to be the same`?
2021-02-25 21:12:03 +0100 <monochrom> My guess is that the asker thinks your argument is irrelevant because they think they've found a way around it. So, failure.
2021-02-25 21:12:37 +0100 <shapr> I kinda miss the old days when Haskell code didn't have much in the way of type signatures. I used to use Haskell as compile time Python. But now I'm starting to use coerce and it's about the same thing, so yay?
2021-02-25 21:12:40 +0100 <davean> mananamenos: ok, so you have `f a -> (a -> f b) -> f b`, whats the relationship between the 3 'f's?
2021-02-25 21:13:09 +0100 <ski> shapr : i think Hughes mostly codes without signatures ?
2021-02-25 21:13:39 +0100 <davean> functor says the 'f' part must be unchanged, but in Monad each 'f' changes (doesn't have to mind you but theres nothing relating them other than that the monad laws hold)
2021-02-25 21:14:07 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-25 21:14:26 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-25 21:14:31 +0100 <mananamenos> davean, that `f` is the same thing throughout the whole signature (if you pik f=IO, then it's IO throughout the whole signturare)
2021-02-25 21:14:48 +0100 <davean> mananamenos: Thats a type, not a value
2021-02-25 21:15:19 +0100 <mananamenos> aaaa
2021-02-25 21:15:31 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 21:15:39 +0100 <mananamenos> i start seeing the light davean xD
2021-02-25 21:15:51 +0100fendor(~fendor@91.141.0.220.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-02-25 21:15:51 +0100 <davean> YOu are correct about them being equal type - they're all 'f', but you have no idea whats in it
2021-02-25 21:16:01 +0100 <ski> monochrom : with `f a' and `a -> f b' as input types, you can get to `f (f b)' (assuming `f' is a `Functor'). the trouble then is (as chisui hinted at) how you get from `f (f b)' to a plain `f b'. it's this part that isn't unique (and can "change the `f'" as davean put it)
2021-02-25 21:16:04 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-25 21:16:05 +0100 <ski> er, sigh
2021-02-25 21:16:08 +0100 <ski> mananamenos ^
2021-02-25 21:16:24 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 21:16:27 +0100 <monochrom> I don't understand this "change f" wording.
2021-02-25 21:17:23 +0100 <ski> they mean : change the "structure" represented by the `f' part of the value of type `f a', as opposed to just changing the "elements" part represented by `a'
2021-02-25 21:17:26 +0100 <shapr> ski: any idea if Hoogle can search for instances?
2021-02-25 21:17:51 +0100 <ski> maybe the website version ?
2021-02-25 21:18:51 +0100 <tomsmeding> geekosaur: at some point you asked for https://paste.tomsmeding.com to support paste expiration; how does this look? :) (the options thing)
2021-02-25 21:19:06 +0100 <tomsmeding> noooo wrong mention
2021-02-25 21:19:21 +0100 <geekosaur> hm, I don't recall requesting that, I asked for line numbers which you granted :)
2021-02-25 21:19:39 +0100 <tomsmeding> gentauro: it was you who requested that
2021-02-25 21:19:45 +0100crobbins(~crobbins@c-73-76-34-113.hsd1.tx.comcast.net) (Ping timeout: 264 seconds)
2021-02-25 21:19:45 +0100 <tomsmeding> damn first letters of nicks :p
2021-02-25 21:19:58 +0100 <koz> Did quick look impredicativity make it into GHC 9?
2021-02-25 21:19:58 +0100 <monochrom> Presumably with "deriving Whatever" the deriver has access to the definition of the particular f, so if your argument is "you don't know what's f", that pretty weak. Cf. "deriving Functor" also has to work for many wildly differeent f's.
2021-02-25 21:20:11 +0100 <tomsmeding> geekosaur: sorry :p
2021-02-25 21:20:13 +0100kozkoz_
2021-02-25 21:20:21 +0100 <davean> monochrom: I specificly covered that
2021-02-25 21:20:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-02-25 21:21:17 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 21:21:19 +0100fendor(~fendor@178.115.128.24.wireless.dyn.drei.com)
2021-02-25 21:21:34 +0100 <davean> ski: FLP is a really great paper if you want to understand what to think about and what can and can't be done without a shared time basis
2021-02-25 21:21:47 +0100 <ski> tomsmeding : hm, while we're mentioning "nice to have", i suppose i should say that <lpaste.net> had the feature that someone could annotate an existing paste with another paste chunk (e.g. an answer, elaboration, or fix). (it was also possible to replace a version of a chunk with a new one, correcting some information. iirc, there was links available to see the previous versions, if you wanted to, but i
2021-02-25 21:21:47 +0100 <davean> ski: after FLP and Common Knowlege pretty much everything else is just a toolkit IMO
2021-02-25 21:21:51 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-25 21:21:53 +0100 <ski> might misremember that)
2021-02-25 21:21:55 +0100 <chisui> you could also just use `DeriveAnyClass` that's how that works, right?
2021-02-25 21:22:11 +0100 <davean> (Common Knowlege gives you the framework for what is a workable exception to FLP)
2021-02-25 21:22:26 +0100 <davean> (Like a shared time basis)
2021-02-25 21:22:40 +0100zargoertzel(~zar@fw1.ciirc.cvut.cz)
2021-02-25 21:22:41 +0100 <geekosaur> ski, you remember correctly
2021-02-25 21:23:01 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-25 21:23:08 +0100 <tomsmeding> ski: interesting! my time is up for tonight, but maybe next time I'm looking to do something :)
2021-02-25 21:23:26 +0100 <geekosaur> diffs between versions of a paste was helpful
2021-02-25 21:23:38 +0100 <ski> (the point of annotations would be that they appeared on the same page, rather a completely different paste that can be hard to find, e.g. later. and you don't have to switch pages to compare the original paste with the annotation)
2021-02-25 21:24:09 +0100 <ski> tomsmeding : yea, no worry. i just thought i'd mention it, in case you hadn't thought of or considered the idea
2021-02-25 21:24:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-25 21:24:28 +0100 <ski> (annotation and updating versions were different features, to be clear)
2021-02-25 21:24:32 +0100 <tomsmeding> I hadn't :)
2021-02-25 21:25:40 +0100 <mananamenos> davean, ski, chisui thank you!
2021-02-25 21:25:52 +0100 <ski> yw
2021-02-25 21:26:09 +0100 <davean> mananamenos: no problem
2021-02-25 21:26:10 +0100skithinks monochrom also helped, fwiw
2021-02-25 21:27:05 +0100 <chisui> any time
2021-02-25 21:27:06 +0100 <ski> (negative help can be just as important as positive help. knowing what not to do vs. knowing what to do)
2021-02-25 21:28:26 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 240 seconds)
2021-02-25 21:29:12 +0100 <monochrom> I'm cranky because the world is devaluing due diligence and I'm fighting it.
2021-02-25 21:29:30 +0100 <ski> keep fighting the good fight
2021-02-25 21:29:48 +0100 <monochrom> Due diligence means if you think you have an idea how to do something, you actually carry it out for a couple of examples before you invite people to discuss it.
2021-02-25 21:30:59 +0100 <monochrom> Last week I thought I saw how to make ZipList a monad.
2021-02-25 21:30:59 +0100 <davean> monochrom: I don't think you're being honest with yourself here. I think you're demanding everyone learn and think the way you do
2021-02-25 21:34:13 +0100ircbrowse_tom(~ircbrowse@64.225.78.177) (ZNC 1.7.5+deb4 - https://znc.in)
2021-02-25 21:39:30 +0100ircbrowse_tom_(~ircbrowse@64.225.78.177)
2021-02-25 21:39:31 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-02-25 21:39:31 +0100Server+CLnt
2021-02-25 21:39:33 +0100retlo1(~retlo@172.245.134.89)
2021-02-25 21:39:33 +0100srid(sridmatrix@gateway/shell/matrix.org/x-asyxkxzqnxcrpgqz) (Ping timeout: 265 seconds)
2021-02-25 21:39:34 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-gkeygehzefulhcqy) (Ping timeout: 265 seconds)
2021-02-25 21:39:37 +0100nrdmn9(~nrdmn@95.129.53.118)
2021-02-25 21:39:37 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-02-25 21:39:43 +0100jamestmartin(~james@jtmar.me)
2021-02-25 21:39:47 +0100cheers-(~user@unaffiliated/cheers)
2021-02-25 21:39:54 +0100parseval(sid239098@gateway/web/irccloud.com/x-xtgzvtrnthigcynq)
2021-02-25 21:39:56 +0100buggymcbugfix_(sid432603@gateway/web/irccloud.com/x-naqvoueakkcopuie)
2021-02-25 21:39:56 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-bgzcpqodewfewacu) (Ping timeout: 240 seconds)
2021-02-25 21:40:00 +0100MrMuffles[m](mrmufflesm@gateway/shell/matrix.org/x-mrblnlwbznzgfknm) (Ping timeout: 268 seconds)
2021-02-25 21:40:00 +0100betrion[m](betrionmat@gateway/shell/matrix.org/x-olmvksmarryfhawb) (Ping timeout: 268 seconds)
2021-02-25 21:40:00 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-smqfejcgpvfgbkxf) (Ping timeout: 268 seconds)
2021-02-25 21:40:00 +0100tomsen[m](tfbiomatri@gateway/shell/matrix.org/x-srxhwciroichajqn) (Ping timeout: 268 seconds)
2021-02-25 21:40:00 +0100CrabMan(phi-matrix@gateway/shell/matrix.org/x-inxxpawmmofshkii) (Ping timeout: 268 seconds)
2021-02-25 21:40:00 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-wuxiqkhdynxpuvsj) (Ping timeout: 268 seconds)
2021-02-25 21:40:02 +0100monokrome|stole(~monokrome@23-24-202-21-static.hfc.comcastbusiness.net)
2021-02-25 21:40:05 +0100hsiktas[m](hsiktasmat@gateway/shell/matrix.org/x-uybiusisumxitdaa) (Ping timeout: 240 seconds)
2021-02-25 21:40:08 +0100mursu_(~ngWalrus@2a03:b0c0:3:d0::5ebd:2001)
2021-02-25 21:40:12 +0100mht(~mht@mht.wtf)
2021-02-25 21:40:13 +0100bram[m]1(bramvdbnet@gateway/shell/matrix.org/x-pynuwbnylnthgwie) (Ping timeout: 260 seconds)
2021-02-25 21:40:16 +0100suzu(~scaleuser@2001:bc8:1824:43f::1)
2021-02-25 21:40:18 +0100mud(kadobanemp@gateway/shell/matrix.org/x-hsvwcnlpdlaahtsv) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100meff[m]1(meffsunado@gateway/shell/matrix.org/x-xlarclvljsmhctte) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100a3f_(~a3f@chimeria.ext.pengutronix.de)
2021-02-25 21:40:18 +0100Lurkki[m](lurkkipriv@gateway/shell/matrix.org/x-vlaovxmnmfvldkrr) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100Robin[m]2(robinrobin@gateway/shell/matrix.org/x-qphxaxtkmuztcpcw) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100utdemir[m](utdemirmat@gateway/shell/matrix.org/x-ooablpupuwhzomuh) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100sigmacool[m](sigmacoolm@gateway/shell/matrix.org/x-rymnviobwcpxiozr) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100ManofLetters[m](manoflette@gateway/shell/matrix.org/x-piojuxwadmoobdzz) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100enya[m](enyaismatr@gateway/shell/matrix.org/x-zbzyfyeroxeyoocq) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100mentaal[m](mentaalmat@gateway/shell/matrix.org/x-ukiqzdxfkqtlhpke) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100maerwald[m](maerwaldma@gateway/shell/matrix.org/x-vwszhcqtafaewwod) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100simara[m](simaramatr@gateway/shell/matrix.org/x-sojjxmanrmrsekzv) (Ping timeout: 246 seconds)
2021-02-25 21:40:18 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-atfrdwrnsadyxibx) (Ping timeout: 246 seconds)
2021-02-25 21:40:20 +0100fii(~Dykomii@kyoto.mii.moe)
2021-02-25 21:40:24 +0100amatecha___(sid10006@gateway/web/irccloud.com/x-hfdlvklywzlniuqc)
2021-02-25 21:40:25 +0100a-tsioh[m](a-tsiohmat@gateway/shell/matrix.org/x-lkrwfyxpsvcpqlyf) (Ping timeout: 240 seconds)
2021-02-25 21:40:25 +0100CaptainYukinoshi(captain-yu@gateway/shell/matrix.org/x-oqlacnjkofwdfnvx) (Ping timeout: 240 seconds)
2021-02-25 21:40:25 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-aliilzvfpxrienry) (Ping timeout: 240 seconds)
2021-02-25 21:40:25 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-wkjrelmxcbmcuyyo) (Ping timeout: 240 seconds)
2021-02-25 21:40:25 +0100jchia[m](jchiamatri@gateway/shell/matrix.org/x-aipijicvixxymjoa) (Ping timeout: 240 seconds)
2021-02-25 21:40:25 +0100JaakkoLuttinen[m(jluttinema@gateway/shell/matrix.org/x-ijlspogsmepgzkug) (Ping timeout: 240 seconds)
2021-02-25 21:40:25 +0100darkcodi[m](darkcodima@gateway/shell/matrix.org/x-xorowkamjqelpcvb) (Ping timeout: 240 seconds)
2021-02-25 21:40:25 +0100Sarievo[m](sarievoale@gateway/shell/matrix.org/x-pngyxqiqrgpejknf) (Ping timeout: 240 seconds)
2021-02-25 21:40:25 +0100pineapples[m](pineapples@gateway/shell/matrix.org/x-scagahmjxdbvohux) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-cnkeaceuhrekegnv) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100Hanma[m](hanmamatri@gateway/shell/matrix.org/x-xfhxcxjspfcwzhbu) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100mly[m](mlydisenco@gateway/shell/matrix.org/x-sgyelsuopxjzxkpo) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100DamienCassou(damiencass@gateway/shell/matrix.org/x-cdrscbrrnlsyfxmv) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-noykicrlbsabjwyy) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100oreoking[m](oreokingma@gateway/shell/matrix.org/x-lucqvxavjvzfztwz) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-tcvgzzwiurupwthv) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100lambdaclan(lambdaclan@gateway/shell/matrix.org/x-qbmkzkvrcxynlyna) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-etwznkqlpnyibdkq) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100Liyang[m](liyangmatr@gateway/shell/matrix.org/x-wtvmjvwxnbfzrmey) (Ping timeout: 240 seconds)
2021-02-25 21:40:26 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-tivqiqvkdyqnowzk) (Ping timeout: 240 seconds)
2021-02-25 21:40:27 +0100buggymcbugfix(sid432603@gateway/web/irccloud.com/x-isytpynjaeamwtwv) (Ping timeout: 246 seconds)
2021-02-25 21:40:27 +0100jbetz(sid283648@gateway/web/irccloud.com/x-rkzjfvmopzejiyvu) (Ping timeout: 246 seconds)
2021-02-25 21:40:28 +0100mcfilib(sid302703@gateway/web/irccloud.com/x-rcdetrygsxetslsb) (Ping timeout: 246 seconds)
2021-02-25 21:40:28 +0100buggymcbugfix_buggymcbugfix
2021-02-25 21:40:28 +0100ba(bandali@fsf/emeritus/bandali)
2021-02-25 21:40:33 +0100gienah(~mwright@gentoo/developer/gienah) (Write error: Broken pipe)
2021-02-25 21:40:34 +0100vqrs_(~vqrs@learnprogramming/regular/vqrs)
2021-02-25 21:40:37 +0100phittacus(bklmatrixo@gateway/shell/matrix.org/x-ytpsxehmufedpsxo) (Ping timeout: 268 seconds)
2021-02-25 21:40:37 +0100alecs[m](malumorema@gateway/shell/matrix.org/x-nmaaktphkqttrbsd) (Ping timeout: 268 seconds)
2021-02-25 21:40:38 +0100berberman[T](berberma4@gateway/shell/matrix.org/x-httmllauhaglunmz) (Ping timeout: 268 seconds)
2021-02-25 21:40:39 +0100retlo(~retlo@172.245.134.89) (Write error: Broken pipe)
2021-02-25 21:40:39 +0100saurik_(saurik@carrier.saurik.com) (Write error: Broken pipe)
2021-02-25 21:40:40 +0100charukiewicz_(~quassel@irouteince04.i.subnet.rcn.com) (Write error: Broken pipe)
2021-02-25 21:40:40 +0100tumdedum(~tumdedum@unaffiliated/espiral) (Write error: Broken pipe)
2021-02-25 21:40:40 +0100reeiiko(~reeiiko@185.163.110.108) (Excess Flood)
2021-02-25 21:40:40 +0100incertia(~incertia@d4-50-26-103.nap.wideopenwest.com) (Excess Flood)
2021-02-25 21:40:40 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-yvaanjasasuignrs) (Quit: Ping timeout (120 seconds))
2021-02-25 21:40:40 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-sibskqvbqdhvosvq) (Quit: Ping timeout (120 seconds))
2021-02-25 21:40:40 +0100TMA(tma@twin.jikos.cz) (Remote host closed the connection)
2021-02-25 21:40:40 +0100clynamen(~clynamen@net-2-34-3-193.cust.vodafonedsl.it) (Quit: ZNC 1.7.5 - https://znc.in)
2021-02-25 21:40:40 +0100fre(~freusque@104.238.190.229) (Quit: fre: znc bye)
2021-02-25 21:40:40 +0100tomsmeding(~tomsmedin@tomsmeding.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-25 21:40:40 +0100sim590(~sim590@modemcable090.207-203-24.mc.videotron.ca) (Quit: ZNC - http://znc.in)
2021-02-25 21:40:40 +0100Cerise(~jerry@unaffiliated/cerise) (Quit: :qa!)
2021-02-25 21:40:40 +0100Anthaas_(~Anthaas@unaffiliated/anthaas) (Quit: ZNC 1.7.1 - https://znc.in)
2021-02-25 21:40:40 +0100noecho(~noecho@static.143.42.203.116.clients.your-server.de) (Quit: ZNC - https://znc.in)
2021-02-25 21:40:40 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2021-02-25 21:40:40 +0100filwisher(~filwisher@78.141.201.45) (Quit: ZNC 1.7.1 - https://znc.in)
2021-02-25 21:40:40 +0100cgfbee(~bot@oc1.itim-cj.ro) (Excess Flood)
2021-02-25 21:40:40 +0100spoonm(~spoonm@tokyo.spoonm.org) (Quit: Don't look behind you!)
2021-02-25 21:40:40 +0100NieDzejkob_(~quassel@195.149.98.3) (Quit: No Ping reply in 180 seconds.)
2021-02-25 21:40:40 +0100Kneiva(kneiva@raah.fi) (Remote host closed the connection)
2021-02-25 21:40:40 +0100gawen(~gawen@movzbl.root.sx) (Quit: cya)
2021-02-25 21:40:42 +0100vicfred(~vicfred@unaffiliated/vicfred) (Remote host closed the connection)
2021-02-25 21:40:43 +0100hugo-hugo
2021-02-25 21:40:43 +0100my_name_is_not_j(mynameisno@gateway/shell/matrix.org/x-sulamkpowiaizxta) (Ping timeout: 244 seconds)
2021-02-25 21:40:46 +0100jlamothe(~jlamothe@198.251.55.207) (Remote host closed the connection)
2021-02-25 21:40:46 +0100wayne(~wayne@unaffiliated/wayne) (Remote host closed the connection)
2021-02-25 21:40:46 +0100cjay(cjay@nerdbox.nerd2nerd.org) (Remote host closed the connection)
2021-02-25 21:40:46 +0100mmaruseacph2(~mihai@198.199.100.72) (Remote host closed the connection)
2021-02-25 21:40:46 +0100TommyC7(~TommyC@unaffiliated/sepulchralbloom) (Remote host closed the connection)
2021-02-25 21:40:46 +0100monokrome(~monokrome@23-24-202-21-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2021-02-25 21:40:46 +0100bendo(~bendo@130.61.122.121) (Remote host closed the connection)
2021-02-25 21:40:46 +0100Tesseraction(~Tesseract@unaffiliated/tesseraction) (Remote host closed the connection)
2021-02-25 21:40:47 +0100liyang(~liyang@cpc80675-stap13-2-0-cust362.12-2.cable.virginm.net) (Remote host closed the connection)
2021-02-25 21:40:47 +0100Forlorn(~Forlorn@unaffiliated/forlorn) (Remote host closed the connection)
2021-02-25 21:40:47 +0100mrd(~mrd@debian/developer/mrd) (Remote host closed the connection)
2021-02-25 21:40:47 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2021-02-25 21:40:47 +0100hrdl(~ef24a0e6@unaffiliated/hrdl) (Remote host closed the connection)
2021-02-25 21:40:47 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-02-25 21:40:48 +0100statusfailed(~statusfai@statusfailed.com) (Remote host closed the connection)
2021-02-25 21:40:48 +0100EvanR(~evan@unaffiliated/evanr) (Remote host closed the connection)
2021-02-25 21:40:48 +0100dmwit(~dmwit@pool-173-66-86-32.washdc.fios.verizon.net) (Remote host closed the connection)
2021-02-25 21:40:48 +0100akasha(~user@unaffiliated/akasha) (Remote host closed the connection)
2021-02-25 21:40:48 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 246 seconds)
2021-02-25 21:40:50 +0100_Adluc_(~Adluc@83.167.228.130)
2021-02-25 21:40:52 +0100pjb(~t@2a01cb04063ec5009154a4e157e0cbac.ipv6.abo.wanadoo.fr)
2021-02-25 21:40:52 +0100tumdedum_tumdedum
2021-02-25 21:40:54 +0100dcoutts_(~dcoutts@unaffiliated/dcoutts)
2021-02-25 21:41:07 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 21:41:09 +0100SegFaultAX_(SegFaultAX@unaffiliated/segfaultax)
2021-02-25 21:41:12 +0100TommyC(~TommyC@unaffiliated/sepulchralbloom)
2021-02-25 21:41:14 +0100edwardk(sid47016@haskell/developer/edwardk)
2021-02-25 21:41:15 +0100 <maerwald> failure being a good teacher has been debunked already
2021-02-25 21:41:15 +0100dcoutts_(~dcoutts@unaffiliated/dcoutts) (Read error: Connection reset by peer)
2021-02-25 21:41:20 +0100BIG_JIMMY_D(~jim@108.61.185.76)
2021-02-25 21:41:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-02-25 21:41:21 +0100amatecha__(sid10006@gateway/web/irccloud.com/x-edfnackjmngohzei) (Ping timeout: 264 seconds)
2021-02-25 21:41:25 +0100mrd(~mrd@45.61.147.211)
2021-02-25 21:41:26 +0100TMA(tma@twin.jikos.cz)
2021-02-25 21:41:26 +0100acdsystemliorg[m(acdsysteml@gateway/shell/matrix.org/x-tymmizrslavaomkn) (Ping timeout: 264 seconds)
2021-02-25 21:41:28 +0100 <maerwald> I linked the research before, I can dig it up again if you like
2021-02-25 21:41:29 +0100esoteric1lgo(~matt@uncertain.win)
2021-02-25 21:41:29 +0100Igloo(~igloo@matrix.chaos.earth.li)
2021-02-25 21:41:31 +0100bwe(~bwe@unaffiliated/bwe)
2021-02-25 21:41:33 +0100dcoutts_(~dcoutts@unaffiliated/dcoutts)
2021-02-25 21:41:34 +0100brkscnce(~obaum@37.120.14.42)
2021-02-25 21:41:35 +0100Forlorn(~Forlorn@unaffiliated/forlorn)
2021-02-25 21:41:36 +0100jbetz(sid283648@gateway/web/irccloud.com/x-mbznlfwgozuyecdk)
2021-02-25 21:41:39 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-mvogdeasxxfzjncw)
2021-02-25 21:41:41 +0100grumble(~Thunderbi@freenode/staff/grumble) (Remote host closed the connection)
2021-02-25 21:41:42 +0100xerox_(~xerox@unaffiliated/xerox)
2021-02-25 21:41:43 +0100stilgart(~Christoph@chezlefab.net)
2021-02-25 21:41:44 +0100juri_(~juri@178.63.35.222)
2021-02-25 21:41:46 +0100hendursa1(~weechat@gateway/tor-sasl/hendursaga) (Client Quit)
2021-02-25 21:41:48 +0100mrdGuest12880
2021-02-25 21:41:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-25 21:41:50 +0100cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de)
2021-02-25 21:41:56 +0100ubert(~Thunderbi@p200300ecdf25d946a0d2e31ed48a2cf4.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-02-25 21:41:58 +0100alar[m](alarmxalat@gateway/shell/matrix.org/x-ufoythqyyzicqreb) (Ping timeout: 265 seconds)
2021-02-25 21:41:58 +0100the_1_[m](the1matrix@gateway/shell/matrix.org/x-fmeoaycdouocsfqi) (Ping timeout: 265 seconds)
2021-02-25 21:41:58 +0100mjlbach(atriusmatr@gateway/shell/matrix.org/x-uxvvkbdauabmbien) (Ping timeout: 265 seconds)
2021-02-25 21:41:58 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-hrqxpfotuofobdbj) (Ping timeout: 265 seconds)
2021-02-25 21:42:04 +0100theDon_(~td@muedsl-82-207-238-098.citykom.de)
2021-02-25 21:42:06 +0100stilgartGuest3557
2021-02-25 21:42:07 +0100aidecoe(~aidecoe@unaffiliated/aidecoe)
2021-02-25 21:42:11 +0100grumble(~Thunderbi@freenode/staff/grumble)
2021-02-25 21:42:21 +0100hendursaga(~weechat@gateway/tor-sasl/hendursaga)
2021-02-25 21:42:22 +0100zfnmxt(~zfnmxt@unaffiliated/zfnmxt)
2021-02-25 21:42:23 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net)
2021-02-25 21:42:30 +0100cgfbee(~bot@oc1.itim-cj.ro)
2021-02-25 21:42:34 +0100MichaelHoffmannb(brisadmozi@gateway/shell/matrix.org/x-hyjjcdilatzwtwgu) (Ping timeout: 258 seconds)
2021-02-25 21:42:34 +0100bitonic(bitonicmat@gateway/shell/matrix.org/x-lqhowavprqkgavmy) (Ping timeout: 258 seconds)
2021-02-25 21:42:34 +0100sramsay64[m](sramsay64p@gateway/shell/matrix.org/x-inungnqziynynwaa) (Ping timeout: 258 seconds)
2021-02-25 21:42:35 +0100adziahel[m](adziahelma@gateway/shell/matrix.org/x-rakjpsddecdrrang) (Ping timeout: 258 seconds)
2021-02-25 21:42:35 +0100plumenator[m](plumenator@gateway/shell/matrix.org/x-wucngvemjowoitrb) (Ping timeout: 258 seconds)
2021-02-25 21:42:43 +0100ircbrowse_tom(~ircbrowse@64.225.78.177) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-02-25 21:42:43 +0100feuerbach(~feuerbach@unaffiliated/feuerbach) (Quit: ZNC 1.8.1 - https://znc.in)
2021-02-25 21:42:43 +0100dequbed(~dequbed@2001:bc8:3f24:100::1) (Quit: Bye o/)
2021-02-25 21:42:43 +0100uwap(~uwap@mail.uwap.name) (Quit: ZNC 1.8.1 - https://znc.in)
2021-02-25 21:42:43 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
2021-02-25 21:42:43 +0100swater(bouhier200@perso.iiens.net) (Remote host closed the connection)
2021-02-25 21:42:44 +0100sqrt2(~ben@unaffiliated/sqrt2) (Remote host closed the connection)
2021-02-25 21:42:44 +0100Guest73254(~tristan@luna.whatbox.ca) (Quit: -= A click to real life biatches!!! =-)
2021-02-25 21:42:44 +0100Klumben(Nsaiswatch@gateway/shell/panicbnc/x-fknfgxuqgasbqquy) (Quit: Bye for now)
2021-02-25 21:42:44 +0100Adluc(~Adluc@2a01:430:17:1::ffff:328) (Remote host closed the connection)
2021-02-25 21:42:44 +0100lisq(~quassel@lis.moe) (Remote host closed the connection)
2021-02-25 21:42:44 +0100xff0x(~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff) (Remote host closed the connection)
2021-02-25 21:42:44 +0100cheers(user@unaffiliated/cheers) (Remote host closed the connection)
2021-02-25 21:42:44 +0100mht-technology(~mht@2a03:b0c0:3:e0::1e2:c001) (Remote host closed the connection)
2021-02-25 21:42:45 +0100leifm_(~leifm@dawn.whatbox.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-25 21:42:45 +0100sphalerite(~sphalerit@NixOS/user/lheckemann) (Remote host closed the connection)
2021-02-25 21:42:45 +0100peutri(~peutri@ns317027.ip-94-23-46.eu) (Remote host closed the connection)
2021-02-25 21:42:45 +0100farn__(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Remote host closed the connection)
2021-02-25 21:42:45 +0100swarmcollective(~joseph@cpe-65-31-18-174.insight.res.rr.com) (Remote host closed the connection)
2021-02-25 21:42:45 +0100a3f(~a3f@chimeria.ext.pengutronix.de) (Excess Flood)
2021-02-25 21:42:45 +0100vqrs(~vqrs@learnprogramming/regular/vqrs) (Remote host closed the connection)
2021-02-25 21:42:45 +0100kozkoz_
2021-02-25 21:42:46 +0100spamlessj(~spamlessj@2a01:4f8:141:1329::2) (Write error: Broken pipe)
2021-02-25 21:42:46 +0100Faye(~holo@nikky.moe) (Write error: Broken pipe)
2021-02-25 21:42:46 +0100noCheese(~nocheese@unaffiliated/nocheese) (Write error: Broken pipe)
2021-02-25 21:42:46 +0100madog(~madog@163.ip-51-254-203.eu) (Write error: Broken pipe)
2021-02-25 21:42:46 +0100martin02(silas@hund.fs.lmu.de) (Excess Flood)
2021-02-25 21:42:48 +0100mcfilib(sid302703@gateway/web/irccloud.com/x-hnldclqivbijvpbm)
2021-02-25 21:42:56 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-pkbyatoowiwuqtjg)
2021-02-25 21:42:59 +0100Guest58072(~zmv@191.255.89.231)
2021-02-25 21:43:02 +0100SegFaultAX(SegFaultAX@unaffiliated/segfaultax) (Excess Flood)
2021-02-25 21:43:03 +0100SegFaultAX_SegFaultAX
2021-02-25 21:43:03 +0100dexterlb(~dexterlb@2a01:9e40:2:2::2) (Quit: No Ping reply in 180 seconds.)
2021-02-25 21:43:03 +0100Blkt(~Blkt@2a01:4f8:200:2425::adda) (Quit: No Ping reply in 180 seconds.)
2021-02-25 21:43:03 +0100bandali(bandali@fsf/emeritus/bandali) (Quit: ZNC - https://znc.in)
2021-02-25 21:43:03 +0100mursu(~ngWalrus@2a03:b0c0:3:d0::5ebd:2001) (Quit: bye)
2021-02-25 21:43:03 +0100Iroha(~Dykomii@2607:5300:60:336a::1) (Quit: !)
2021-02-25 21:43:03 +0100oats(~hurr@durr/im/a/sheep) (Quit: until later, my friends)
2021-02-25 21:43:03 +0100chrpape``(~user@2a01:4f9:c010:632d::1)
2021-02-25 21:43:03 +0100spamlessj(~spamlessj@2a01:4f8:141:1329::2)
2021-02-25 21:43:03 +0100PtxDK(~quassel@2a01:7c8:aac3:591:5054:ff:fe3d:cac6)
2021-02-25 21:43:04 +0100chrpape``(~user@2a01:4f9:c010:632d::1) (Remote host closed the connection)
2021-02-25 21:43:04 +0100esotericalgo(~matt@uncertain.win) (Remote host closed the connection)
2021-02-25 21:43:04 +0100wlritchi(wlritchi@2600:3c03::f03c:91ff:fe60:8ddc) (Remote host closed the connection)
2021-02-25 21:43:04 +0100quicksilver(~jules@roobarb.crazydogs.org) (Remote host closed the connection)
2021-02-25 21:43:04 +0100suzu_(~scaleuser@2001:bc8:1824:43f::1) (Remote host closed the connection)
2021-02-25 21:43:05 +0100noCheese(~nocheese@gw2.aibor.de)
2021-02-25 21:43:05 +0100noCheese(~nocheese@gw2.aibor.de) (Changing host)
2021-02-25 21:43:05 +0100noCheese(~nocheese@unaffiliated/nocheese)
2021-02-25 21:43:12 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus) (Ping timeout: 265 seconds)
2021-02-25 21:43:15 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 246 seconds)
2021-02-25 21:43:17 +0100Blkt(~Blkt@2a01:4f8:200:2425::adda)
2021-02-25 21:43:23 +0100SolarAquarion(SolarAquar@gateway/shell/panicbnc/x-xrdswepzyygrznne)
2021-02-25 21:43:25 +0100 <dminuoso> ski: It was a text that started out with the history of terms like “proposition”, “conclusion”, “judgement”, etc
2021-02-25 21:43:26 +0100freeman42x[m](freeman42x@gateway/shell/matrix.org/x-afnclhgosytqlfre) (Ping timeout: 240 seconds)
2021-02-25 21:43:26 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-lzikgiqihcummixk) (Ping timeout: 240 seconds)
2021-02-25 21:43:33 +0100martin02(silas@hund.fs.lmu.de)
2021-02-25 21:43:36 +0100liyang(~liyang@cpc80675-stap13-2-0-cust362.12-2.cable.virginm.net)
2021-02-25 21:43:38 +0100swater(bouhier200@perso.iiens.net)
2021-02-25 21:43:38 +0100icebreaker(michalc@freeshell.de)
2021-02-25 21:43:39 +0100icebreaker(michalc@freeshell.de) (Changing host)
2021-02-25 21:43:39 +0100icebreaker(michalc@unaffiliated/icebreaker)
2021-02-25 21:43:42 +0100ThaEwat(thaewraptm@gateway/shell/matrix.org/x-juqefpfkcsldkkqx) (Ping timeout: 268 seconds)
2021-02-25 21:43:56 +0100themsay[m](themsaymat@gateway/shell/matrix.org/x-dfuiiqncmxkegsdu) (Ping timeout: 240 seconds)
2021-02-25 21:44:03 +0100 <maerwald> https://journals.sagepub.com/doi/abs/10.1177/0956797619881133
2021-02-25 21:44:06 +0100Kneiva(kneiva@raah.fi)
2021-02-25 21:44:09 +0100son0p(~son0p@181.136.122.143)
2021-02-25 21:44:11 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net) (Client Quit)
2021-02-25 21:44:18 +0100ario(~ario@178.62.234.211)
2021-02-25 21:44:18 +0100Guest42442(~joseph@cpe-65-31-18-174.insight.res.rr.com) ("WeeChat 2.8")
2021-02-25 21:44:19 +0100immae(immaematri@gateway/shell/matrix.org/x-biobeyvyakzvnryf) (Ping timeout: 268 seconds)
2021-02-25 21:44:30 +0100Chousuke(oranenj@coffee.modeemi.fi)
2021-02-25 21:44:30 +0100infinisi1infinisil
2021-02-25 21:44:36 +0100darjeeling_(~darjeelin@122.245.218.150) (Ping timeout: 240 seconds)
2021-02-25 21:44:36 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
2021-02-25 21:44:36 +0100theDon(~td@muedsl-82-207-238-098.citykom.de) (Ping timeout: 240 seconds)
2021-02-25 21:44:37 +0100kmein(~weechat@static.173.83.99.88.clients.your-server.de) (Ping timeout: 240 seconds)
2021-02-25 21:44:45 +0100oats_oats
2021-02-25 21:44:51 +0100dftxbs3e_dftxbs3e
2021-02-25 21:44:51 +0100sim590(~sim590@modemcable090.207-203-24.mc.videotron.ca)
2021-02-25 21:44:52 +0100metamod[m](metamodmat@gateway/shell/matrix.org/x-cvyozbpcigwxoqqt) (Ping timeout: 265 seconds)
2021-02-25 21:44:56 +0100VarikValefor[m](varikvalef@gateway/shell/matrix.org/x-zpbsrsatgvyjyyda) (Ping timeout: 268 seconds)
2021-02-25 21:44:56 +0100boistordu(boistordum@gateway/shell/matrix.org/x-ovupdgassmbmcysg) (Ping timeout: 268 seconds)
2021-02-25 21:44:56 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-osefrsecjodoijxp) (Ping timeout: 268 seconds)
2021-02-25 21:45:11 +0100saurik(saurik@carrier.saurik.com)
2021-02-25 21:45:28 +0100`slikts(~nelabs@wikipedia/reinis)
2021-02-25 21:45:33 +0100swarmcollective(~joseph@cpe-65-31-18-174.insight.res.rr.com)
2021-02-25 21:45:45 +0100thebnq(~bnq@herrokitty.com)
2021-02-25 21:45:54 +0100 <dminuoso> It was written in English, for what its worth.
2021-02-25 21:46:43 +0100 <ski> dminuoso : oh, i think i know what you're talking about. it wasn't Frege
2021-02-25 21:47:14 +0100raid(macbookpro@irc-1.coding4.coffee)
2021-02-25 21:47:33 +0100speakerspivakeem(speakerdea@gateway/shell/matrix.org/x-onzkzcntdcmbputf) (Ping timeout: 272 seconds)
2021-02-25 21:47:33 +0100nikola3(~nikola@2a03:b0c0:2:d0::dc2:c001) (Ping timeout: 272 seconds)
2021-02-25 21:47:53 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-25 21:48:24 +0100 <monochrom> ski: Remember I challenged with infinite streams "data S a = C s (S a)"? That one works out, and it takes a bit of cleverness to even see possible candidates. So ZipList fails for its differeence from infinite streams in terms of ending a list at any time it feels like to.
2021-02-25 21:48:24 +0100 <maerwald> If failure causes a higher dopamine effect in your brain, then you're likely better at learning from failure (unlike most other people). The effect of dopamine on learning is well studied.
2021-02-25 21:48:33 +0100 <ski> dminuoso : "On the Meanings of the Logical Constants and the Justifications of the Logical Laws" by Per Martin-Löf in 1996 at <https://www.ae-info.org/attach/User/Martin-L%C3%B6f_Per/OtherInformation/article.pdf>,<https://intuitionistic.wordpress.com/works-on-martin-lofs-type-theory/>
2021-02-25 21:48:40 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-25 21:48:47 +0100tomsmeding_tomsmeding
2021-02-25 21:49:07 +0100 <monochrom> maerwald, I was not even going for "failure teaches". I was going for "failure pre-teaches".
2021-02-25 21:49:34 +0100 <maerwald> Depends, it can cause engagement, but also disaengagement
2021-02-25 21:49:40 +0100 <ski> monochrom : i remember i was playing around with an idea of intentionally making `join'/`(>>=)' more partial than possible, in order to try to ensure associativity
2021-02-25 21:49:59 +0100crobbins(~crobbins@2600:1700:48eb:8490:f085:4e3f:f643:338d)
2021-02-25 21:50:18 +0100lazyshrk(~lazyshrk@128.199.58.13) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-25 21:50:30 +0100 <monochrom> I think I tried a version of that too, it didn't help.
2021-02-25 21:51:07 +0100ktp28(459d4473@bras-base-toroon6126w-grc-07-69-157-68-115.dsl.bell.ca)
2021-02-25 21:51:21 +0100 <ski> ok
2021-02-25 21:51:39 +0100mceier(~mceier@89-68-132-187.dynamic.chello.pl) (Quit: leaving)
2021-02-25 21:51:47 +0100 <monochrom> maerwald, you must have not been reading me. I was not claiming that either.
2021-02-25 21:51:55 +0100forgottenone(~forgotten@176.88.28.250) (Quit: Konversation terminated!)
2021-02-25 21:52:03 +0100 <maerwald> that's well possible in my state of mind :p
2021-02-25 21:52:30 +0100 <maerwald> I'm looking for someone with armv7 or aarch64 machine
2021-02-25 21:52:47 +0100mceier(~mceier@89-68-132-187.dynamic.chello.pl)
2021-02-25 21:52:49 +0100Pickchea(~private@unaffiliated/pickchea)
2021-02-25 21:53:10 +0100zargoertzel(~zar@fw1.ciirc.cvut.cz) (Ping timeout: 276 seconds)
2021-02-25 21:53:18 +0100kfmkmein
2021-02-25 21:53:35 +0100slack1256(~slack1256@45.4.2.52)
2021-02-25 21:54:11 +0100redcherri(bab7259d@186.183.37.157)
2021-02-25 21:54:41 +0100Klumben(Nsaiswatch@gateway/shell/panicbnc/x-ajlfhlioatjzzbsr)
2021-02-25 21:55:07 +0100srid(sridmatrix@gateway/shell/matrix.org/x-sjihgudtvzpwpord)
2021-02-25 21:55:11 +0100 <ski> (i wonder whether there's been any follow-up studies, about what effect personal detachment may have in the situation)
2021-02-25 21:55:28 +0100atriqTaneb
2021-02-25 21:55:46 +0100 <dminuoso> Ahh
2021-02-25 21:55:46 +0100 <monochrom> ski: https://paste.tomsmeding.com/SZunWHSK is what I did. The counterexample is at the end. In join_z, if I replace "ewj" by "render", that would be my way of allowing partiality, but then this doesn't help my counterexample either, it only improves [1] to 1 : bottom.
2021-02-25 21:55:49 +0100 <dminuoso> 21:48:33 ski | dminuoso : "On the Meanings of the Logical Constants and the Justifications of the Logical Laws" by Per Martin-Löf in 1996 at <https://www.ae-info.org/attach/User/Martin-L%C3%B6f_Per/OtherInformation/article.pdf>,<https://intuitionistic.wordpress.com/works-on-martin-lofs-type-theory/>
2021-02-25 21:55:54 +0100 <dminuoso> You're spot on. That's it, cheers!
2021-02-25 21:56:19 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-25 21:56:38 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-nqquprpkcjqwwhao)
2021-02-25 21:56:56 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-25 21:57:19 +0100coddinkn(~coddinkn@octayn.net)
2021-02-25 21:57:50 +0100AbtractSingleton(rasurumatr@gateway/shell/matrix.org/x-cptnkbgcmbcsygri)
2021-02-25 21:57:52 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-taasofpihtwizvlh)
2021-02-25 21:58:11 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-qaosueuqeqkwbwhe)
2021-02-25 21:58:21 +0100toasty_avocado[m(toastyavoc@gateway/shell/matrix.org/x-juhwyrkxyxnxfauu)
2021-02-25 21:58:24 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-apivwpznfnnlclpi)
2021-02-25 21:58:31 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar)
2021-02-25 21:58:39 +0100jerin(jerinmatri@gateway/shell/matrix.org/x-tmtfndsdvjlsjrsi)
2021-02-25 21:58:51 +0100 <monochrom> maerwald: My position is pro hands-on, against armchair. I'm sure you're sympathetic to it.
2021-02-25 21:59:02 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net) (Quit: Connection closed)
2021-02-25 21:59:03 +0100chisui(59f77ca6@i59F77CA6.versanet.de) (Ping timeout: 240 seconds)
2021-02-25 21:59:06 +0100 <monochrom> Failure is just a side effect of being hands-on.
2021-02-25 21:59:08 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 21:59:14 +0100 <maerwald> it surely is
2021-02-25 21:59:18 +0100 <monochrom> In an armchair, you always suceeds.
2021-02-25 21:59:20 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-02-25 21:59:26 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-25 21:59:37 +0100 <ski> dminuoso, yw :)
2021-02-25 22:00:09 +0100 <maerwald> But there has to be frustration management. Otherwise we're filtering for the ppl with high frustration tolerance, not talent.
2021-02-25 22:00:21 +0100maralorn(maralornma@gateway/shell/matrix.org/x-yxejhfyxkpgpcjvz)
2021-02-25 22:00:30 +0100Lurkki[m]1(lurkkifene@gateway/shell/matrix.org/x-nxoeksmofthnqmyh)
2021-02-25 22:00:32 +0100shutendoji[m](shutendoji@gateway/shell/matrix.org/x-ugeduntrngcqbunt)
2021-02-25 22:00:35 +0100brightly-salty[m(brightly-s@gateway/shell/matrix.org/x-prtibkvrqqntdkpm)
2021-02-25 22:00:35 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-02-25 22:00:41 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-rihddaeggjdzhxqs)
2021-02-25 22:00:49 +0100darkcodi[m](darkcodima@gateway/shell/matrix.org/x-yuxcrrjvakxjaoby)
2021-02-25 22:00:51 +0100 <maerwald> why is it so hard to find a way to test arm binaries -_-
2021-02-25 22:00:52 +0100 <ski> monochrom : yes, i recall considering a similar example to your `example_zz'. i think what i ended up wanting was to ensure that when finding an element on the diagonal, that the full square that element is the corner of is present
2021-02-25 22:01:36 +0100 <monochrom> So for the associative law, you basically need the full cube.
2021-02-25 22:01:42 +0100 <ski> yep
2021-02-25 22:01:48 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 22:02:06 +0100 <mouseghost> in ghci, can i see which constructor was used to construct a variable of some type? eg. data Meow = Cat | Dog; a = Cat; is it possible to check if `a' is Cat, or if it is a Dog?
2021-02-25 22:02:16 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 276 seconds)
2021-02-25 22:02:27 +0100 <ski> (i guess what i did wasn't making it partial, but to terminate the list earlier than one might imagine)
2021-02-25 22:02:29 +0100 <monochrom> This scheme works for a subset of ZipLists but alas it's probably an impractical restriction.
2021-02-25 22:02:43 +0100 <monochrom> Oh! Heh.
2021-02-25 22:02:51 +0100pera(~pera@unaffiliated/pera)
2021-02-25 22:02:52 +0100 <ski> yea .. it's up for debate how useful this would be
2021-02-25 22:03:46 +0100 <ski> mouseghost : you can use pattern-matching. also, you could add `deriving Show' after your `data' declaration to be able to display values of that type
2021-02-25 22:03:54 +0100 <mouseghost> thanks
2021-02-25 22:04:09 +0100 <ski> mouseghost : if you use `deriving Eq', you can check with `a == Cat'
2021-02-25 22:04:40 +0100 <mouseghost> i see; but i suppose there isnt a dirty trick with some kind of :whatis a ?
2021-02-25 22:05:07 +0100 <monochrom> But the positive thing I learned is that the two identity laws force you to go some kind of diagonal. So at least you get to conclude "if even diagonal doesn't work, nothing does".
2021-02-25 22:05:10 +0100 <geekosaur> not via ghci as such
2021-02-25 22:05:11 +0100 <ski> mouseghost : but if you're looking for checking programmatically, i suggest using pattern-matching rather than `==' or `/='
2021-02-25 22:05:39 +0100 <mouseghost> thanks
2021-02-25 22:05:53 +0100 <mouseghost> thats what id do, but i am purely about ghci rn :P
2021-02-25 22:05:54 +0100 <ski> mouseghost : if you have `Show', you can simply type `a' into the interactor, and it'll display either `Cat' or `Dog' (assuming there's no error)
2021-02-25 22:06:06 +0100 <mouseghost> yep i have just checked and works as advertised, so thanks uwu
2021-02-25 22:06:20 +0100ktp28(459d4473@bras-base-toroon6126w-grc-07-69-157-68-115.dsl.bell.ca) (Quit: Connection closed)
2021-02-25 22:06:24 +0100 <ski> (perhaps your actual example is more complicated and there might be more relevant stuff one could say about it)
2021-02-25 22:06:40 +0100 <mouseghost> naw
2021-02-25 22:06:55 +0100 <dminuoso> % :t toConstr -- mouseghost
2021-02-25 22:06:56 +0100 <yahb> dminuoso: Data a => a -> Constr
2021-02-25 22:07:00 +0100babandali
2021-02-25 22:07:05 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 22:07:06 +0100 <dminuoso> If, for some reason, you really wanted this.
2021-02-25 22:07:10 +0100 <ski> @let data Meow = Cat | Dog
2021-02-25 22:07:11 +0100 <lambdabot> Defined.
2021-02-25 22:07:35 +0100 <ski> > let mouseghost_a = Dog
2021-02-25 22:07:37 +0100 <lambdabot> <no location info>: error:
2021-02-25 22:07:37 +0100 <lambdabot> not an expression: ‘let mouseghost_a = Dog’
2021-02-25 22:07:43 +0100 <ski> @let mouseghost_a = Dog
2021-02-25 22:07:44 +0100 <lambdabot> Defined.
2021-02-25 22:08:02 +0100 <ski> > case mouseghost_a of Cat -> "yes"; Dog -> "no"
2021-02-25 22:08:04 +0100 <lambdabot> "no"
2021-02-25 22:08:10 +0100 <ski> > case mouseghost_a of Cat -> ()
2021-02-25 22:08:12 +0100 <lambdabot> *Exception: <interactive>:(3,1)-(4,22): Non-exhaustive patterns in case
2021-02-25 22:08:20 +0100 <mouseghost> thats nice, thanks
2021-02-25 22:08:25 +0100 <dminuoso> % data Meow = Cat Int | Dog String deriving (Data, Typeable)
2021-02-25 22:08:25 +0100 <yahb> dminuoso:
2021-02-25 22:08:31 +0100 <dminuoso> % toConstr (Cat 10)
2021-02-25 22:08:32 +0100 <yahb> dminuoso: Cat
2021-02-25 22:08:35 +0100 <dminuoso> mouseghost: ^-
2021-02-25 22:08:40 +0100 <mouseghost> i see, thanks :3
2021-02-25 22:09:00 +0100 <mouseghost> though its still not ghci based ;p
2021-02-25 22:09:14 +0100 <dminuoso> mouseghost: Id keep in mind, Data/Typeable are probably not for every day use. If this is for debugging or exploration only, those are fine. If you want this to solve a problem, pattern matching is your better bet.
2021-02-25 22:09:14 +0100 <mouseghost> but i guess wanting to do that solely with the ghci fancy things is not the good approach hah
2021-02-25 22:09:28 +0100 <dminuoso> mouseghost: This is better, toConstr is just plain Haskell! :)
2021-02-25 22:09:35 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-25 22:09:36 +0100 <dminuoso> Dont even need GHCi
2021-02-25 22:09:52 +0100 <ski> % let !Cat = mouseghost_a
2021-02-25 22:09:52 +0100 <yahb> ski: *** Exception: <interactive>:45:5-23: Non-exhaustive patterns in Cat
2021-02-25 22:09:55 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 22:10:09 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 22:10:15 +0100 <mouseghost> the point would be to find the type without adding anything
2021-02-25 22:10:23 +0100 <mouseghost> and that, as well as deriving Show, adds something ;v
2021-02-25 22:10:30 +0100 <ski> ok
2021-02-25 22:10:39 +0100 <mouseghost> meow
2021-02-25 22:10:46 +0100mouseghostmeows
2021-02-25 22:10:56 +0100skimews
2021-02-25 22:11:08 +0100chisui(59f77ca6@i59F77CA6.versanet.de)
2021-02-25 22:11:29 +0100mouseghosteyes
2021-02-25 22:11:34 +0100 <dminuoso> mouseghost: Mmm. You probably can hack something together akin to toConstr with TemplateHaskell
2021-02-25 22:11:39 +0100farn(~farn@46.38.243.131) (Read error: Connection reset by peer)
2021-02-25 22:11:46 +0100 <dminuoso> That doesnt need Data/Typeable instances
2021-02-25 22:11:55 +0100 <mouseghost> my knowledge of haskell be liek
2021-02-25 22:11:58 +0100 <mouseghost> @ 1+2
2021-02-25 22:12:01 +0100 <ski> monochrom : "the two identity laws force you to go some kind of diagonal" -- interesting. you mean, if you want zipping behaviour ?
2021-02-25 22:12:21 +0100usr25(~J@45.red-88-1-79.dynamicip.rima-tde.net)
2021-02-25 22:12:51 +0100MrMuffles[m](mrmufflesm@gateway/shell/matrix.org/x-cbeqjcjrdmhenexl)
2021-02-25 22:13:01 +0100freeman42x[m](freeman42x@gateway/shell/matrix.org/x-ytrisqdmzrzpisst)
2021-02-25 22:13:58 +0100farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
2021-02-25 22:14:38 +0100mly[m](mlydisenco@gateway/shell/matrix.org/x-shgeeswzywjapwlt)
2021-02-25 22:14:41 +0100 <dminuoso> mouseghost: Presumably this kind of information is hard to recover, because most gets erased during compilation. While GHCi compiles code to bytecode (which is executed by the runtime), Im not sure whether constructor information is preserved meaningfully
2021-02-25 22:14:48 +0100phittacus(bklmatrixo@gateway/shell/matrix.org/x-dbjtrcksijverjxv)
2021-02-25 22:14:50 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-jgcuajimrxmycwph)
2021-02-25 22:14:51 +0100tomsen[m](tfbiomatri@gateway/shell/matrix.org/x-junoizbhiuyanlfn)
2021-02-25 22:14:51 +0100betrion[m](betrionmat@gateway/shell/matrix.org/x-ffgdptepxqzbfrzi)
2021-02-25 22:14:51 +0100CrabMan(phi-matrix@gateway/shell/matrix.org/x-qnflepxzbgoiepgi)
2021-02-25 22:14:52 +0100bram[m]1(bramvdbnet@gateway/shell/matrix.org/x-smrpthqlcycbdvqg)
2021-02-25 22:14:52 +0100alecs[m](malumorema@gateway/shell/matrix.org/x-gkhumeppsvrovowp)
2021-02-25 22:14:52 +0100mjlbach(atriusmatr@gateway/shell/matrix.org/x-jbujsgkzleiuowmd)
2021-02-25 22:14:55 +0100my_name_is_not_j(mynameisno@gateway/shell/matrix.org/x-lnbatcivvyyktlgd)
2021-02-25 22:14:56 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-olgzldwdbozcvmla)
2021-02-25 22:14:56 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-ehmcpjxutoidauup)
2021-02-25 22:15:00 +0100DamienCassou(damiencass@gateway/shell/matrix.org/x-eprxxdwijffydrdi)
2021-02-25 22:15:00 +0100berberman[T](berberma4@gateway/shell/matrix.org/x-xacrdmjnxhrqsrnd)
2021-02-25 22:15:22 +0100maerwald[m](maerwaldma@gateway/shell/matrix.org/x-bjunztlamgbiqsmk)
2021-02-25 22:15:37 +0100 <dminuoso> Data/Typeable give you these facilities as first-class haskell functions back (the compiler will just generate them, so roughly what ski suggested would be automatically generated by the compiler and more)
2021-02-25 22:15:40 +0100Liyang[m](liyangmatr@gateway/shell/matrix.org/x-pppuhernsulwjyww)
2021-02-25 22:15:41 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-mpucxcqvuxckqpcu)
2021-02-25 22:15:42 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-buxbodhkddveoaqd)
2021-02-25 22:15:53 +0100 <mouseghost> yeah i understand
2021-02-25 22:16:12 +0100 <mouseghost> kinda like with c unions :D
2021-02-25 22:16:15 +0100 <mouseghost> maybe
2021-02-25 22:16:22 +0100sigmacool[m](sigmacoolm@gateway/shell/matrix.org/x-agbisjcyekothkzz)
2021-02-25 22:16:23 +0100utdemir[m](utdemirmat@gateway/shell/matrix.org/x-pmladlzouojlwrsx)
2021-02-25 22:16:23 +0100Robin[m]2(robinrobin@gateway/shell/matrix.org/x-qitylqaxjgpvphgf)
2021-02-25 22:16:23 +0100enya[m](enyaismatr@gateway/shell/matrix.org/x-qrvidzgjkxctjdul)
2021-02-25 22:16:23 +0100mentaal[m](mentaalmat@gateway/shell/matrix.org/x-cldzerqnoqwflcto)
2021-02-25 22:16:23 +0100 <dminuoso> In the sense that they are erased you mean?
2021-02-25 22:16:24 +0100Lurkki[m](lurkkipriv@gateway/shell/matrix.org/x-psmnesknsmvebscb)
2021-02-25 22:16:24 +0100simara[m](simaramatr@gateway/shell/matrix.org/x-yieaikiuesgqpxtf)
2021-02-25 22:16:25 +0100ManofLetters[m](manoflette@gateway/shell/matrix.org/x-sdtdldljvtpokfgv)
2021-02-25 22:16:26 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-lucppnoruohzhaik)
2021-02-25 22:16:31 +0100 <mouseghost> dminuoso, more like not defined
2021-02-25 22:16:32 +0100pineapples[m](pineapples@gateway/shell/matrix.org/x-rjnrgqpwuytdhsrb)
2021-02-25 22:16:32 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-qjriisacmnwggisj)
2021-02-25 22:16:33 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-cdnoacaikcqweptz)
2021-02-25 22:16:33 +0100JaakkoLuttinen[m(jluttinema@gateway/shell/matrix.org/x-jxffrgesqwkjiyek)
2021-02-25 22:16:34 +0100CaptainYukinoshi(captain-yu@gateway/shell/matrix.org/x-wsmoytiqpsczqgmt)
2021-02-25 22:16:34 +0100oreoking[m](oreokingma@gateway/shell/matrix.org/x-thhdqxzqtsmuurkl)
2021-02-25 22:16:36 +0100a-tsioh[m](a-tsiohmat@gateway/shell/matrix.org/x-vxvzeinnodmgkchc)
2021-02-25 22:16:36 +0100Sarievo[m](sarievoale@gateway/shell/matrix.org/x-pwulriigshezukrd)
2021-02-25 22:16:39 +0100jchia[m](jchiamatri@gateway/shell/matrix.org/x-mkoiivxvcbjgzwnc)
2021-02-25 22:16:53 +0100 <dminuoso> No we actually do have some information artifacts behind, which is why we can do case-of.
2021-02-25 22:16:57 +0100 <mouseghost> oh
2021-02-25 22:17:01 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-uzqgiiovyutwaadq)
2021-02-25 22:17:45 +0100 <mouseghost> also, regarding datatypes, can i somehow namespace `data' declaration or something? say i wanted to like... data Sign = + | -
2021-02-25 22:17:54 +0100 <mouseghost> i guess also () would need to go there huh
2021-02-25 22:17:55 +0100speakerspivakeem(speakerdea@gateway/shell/matrix.org/x-turkzvpwerbcobxw)
2021-02-25 22:17:58 +0100 <dminuoso> Yes and no.
2021-02-25 22:18:07 +0100borne(~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-02-25 22:18:27 +0100alar[m](alarmxalat@gateway/shell/matrix.org/x-ijjeysxxnkrgutme)
2021-02-25 22:18:28 +0100the_1_[m](the1matrix@gateway/shell/matrix.org/x-jjrqmrcdxkntsvvj)
2021-02-25 22:18:30 +0100themsay[m](themsaymat@gateway/shell/matrix.org/x-ljaenuxzhfzsbgci)
2021-02-25 22:18:36 +0100 <mouseghost> hm maybe types need to actually be alphanum..
2021-02-25 22:18:43 +0100immae(immaematri@gateway/shell/matrix.org/x-mtnokboauunjkgre)
2021-02-25 22:18:57 +0100sm2n(~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca)
2021-02-25 22:18:59 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-altyhdajrdgkwiga)
2021-02-25 22:19:02 +0100boistordu(boistordum@gateway/shell/matrix.org/x-zehlrpuclgbsmcgb)
2021-02-25 22:19:04 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-gwwwaooyqtgnnprg)
2021-02-25 22:19:05 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-ofqfbyaxrzohrkzu)
2021-02-25 22:19:10 +0100 <dminuoso> mouseghost: You can just create types constructors, data constructors or just values, shadowing names of existing identifiers, in a module.
2021-02-25 22:19:13 +0100 <geekosaur> alphanumeric and initial uppercase, or symbol and initial colon (and infix)
2021-02-25 22:19:17 +0100darjeeling_(~darjeelin@122.245.218.150)
2021-02-25 22:19:21 +0100hsiktas[m](hsiktasmat@gateway/shell/matrix.org/x-lkcvikipshxfqrsl)
2021-02-25 22:19:48 +0100ThaEwat(thaewraptm@gateway/shell/matrix.org/x-pcdsttlbmkuhuhxo)
2021-02-25 22:19:57 +0100 <koz_> With cabal test, how do I pass a '-with-rtsopts' to the executable it runs?
2021-02-25 22:20:02 +0100 <dminuoso> mouseghost: So modules (or more generally any declaration group) can shadow identifiers.
2021-02-25 22:20:03 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-25 22:20:35 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds)
2021-02-25 22:20:36 +0100 <mouseghost> allright..
2021-02-25 22:20:39 +0100 <dminuoso> `module Foo where id x = go x where go x = x` Here we shadow things two times.
2021-02-25 22:20:42 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-25 22:20:51 +0100MichaelHoffmannb(brisadmozi@gateway/shell/matrix.org/x-semsqtjqhulgolab)
2021-02-25 22:20:51 +0100sramsay64[m](sramsay64p@gateway/shell/matrix.org/x-nofjuyisaelgsjpz)
2021-02-25 22:20:54 +0100adziahel[m](adziahelma@gateway/shell/matrix.org/x-gzxprvasiinkibkp)
2021-02-25 22:21:11 +0100 <dminuoso> First, we shadow the `id` binding from the Prelude module (which is always implicitly imported), and inside the definition of `id`, the nested `go` binding shadows the outer `x` binder
2021-02-25 22:22:07 +0100redcherri(bab7259d@186.183.37.157) ()
2021-02-25 22:22:10 +0100 <mouseghost> i see, thanks
2021-02-25 22:23:24 +0100kjak_kjak
2021-02-25 22:24:09 +0100bitonic(bitonicmat@gateway/shell/matrix.org/x-plynbbjxllctgqmg)
2021-02-25 22:25:04 +0100borne(~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de)
2021-02-25 22:26:41 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
2021-02-25 22:27:02 +0100acdsystemliorg[m(acdsysteml@gateway/shell/matrix.org/x-yldclcynujkdrkug)
2021-02-25 22:28:17 +0100mud(kadobanemp@gateway/shell/matrix.org/x-ivqsxeohuglvlsqy)
2021-02-25 22:28:50 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr)
2021-02-25 22:28:54 +0100Hanma[m](hanmamatri@gateway/shell/matrix.org/x-uvqceisbsyumooad)
2021-02-25 22:29:01 +0100aarvar(~foewfoiew@2601:602:a080:fa0:49bc:1f9e:3510:3fc5)
2021-02-25 22:29:07 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
2021-02-25 22:29:30 +0100lambdaclan(lambdaclan@gateway/shell/matrix.org/x-ipvngrvyhnqhbylj)
2021-02-25 22:29:32 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-tqwhdmxbxpfopxbc)
2021-02-25 22:29:39 +0100VarikValefor[m](varikvalef@gateway/shell/matrix.org/x-kxjsrbtdhgrazfgo)
2021-02-25 22:30:57 +0100ddellacosta(~ddellacos@86.106.143.189) (Remote host closed the connection)
2021-02-25 22:31:00 +0100dcoutts__(~duncan@85.186.125.91.dyn.plus.net)
2021-02-25 22:36:06 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-25 22:36:06 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-25 22:36:28 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-25 22:36:43 +0100chisui(59f77ca6@i59F77CA6.versanet.de) (Ping timeout: 240 seconds)
2021-02-25 22:38:17 +0100geekosaur(82650c7a@130.101.12.122) (Quit: Connection closed)
2021-02-25 22:39:35 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 272 seconds)
2021-02-25 22:40:52 +0100hackagetidal 1.7.2 - Pattern language for improvised music https://hackage.haskell.org/package/tidal-1.7.2 (AlexMcLean)
2021-02-25 22:41:51 +0100flocks(~user@lfbn-idf2-1-666-131.w86-247.abo.wanadoo.fr)
2021-02-25 22:42:02 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-02-25 22:42:29 +0100rankispanki(59bbbb70@gateway/web/cgi-irc/kiwiirc.com/ip.89.187.187.112)
2021-02-25 22:42:35 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-02-25 22:42:49 +0100flocks(~user@lfbn-idf2-1-666-131.w86-247.abo.wanadoo.fr) ()
2021-02-25 22:43:01 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-25 22:44:25 +0100kam1(~kam1@5.125.126.175)
2021-02-25 22:45:41 +0100egp_(~egp_@2.95.74.168) (Quit: EXIT)
2021-02-25 22:46:02 +0100egp_(~egp_@2.95.74.168)
2021-02-25 22:46:08 +0100xff0x_(~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff) (Ping timeout: 260 seconds)
2021-02-25 22:46:22 +0100adam34(a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net)
2021-02-25 22:47:07 +0100adam34(a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) (Client Quit)
2021-02-25 22:47:42 +0100xff0x_(~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff)
2021-02-25 22:48:00 +0100adam10(a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net)
2021-02-25 22:48:27 +0100 <adam10> Would it be smart (if at all possible) to rice together xmonad and Plasma, similar to how you do it with i3?
2021-02-25 22:48:40 +0100rankispanki(59bbbb70@gateway/web/cgi-irc/kiwiirc.com/ip.89.187.187.112) (Quit: Connection closed)
2021-02-25 22:49:19 +0100chisui(59f77ca6@i59F77CA6.versanet.de)
2021-02-25 22:49:33 +0100 <dminuoso> adam10: Sure its possible
2021-02-25 22:50:17 +0100 <adam10> Would it be smart? Also I’m wondering how well xmonad handles two monitors, cause when I tried i3+KDE it was awful
2021-02-25 22:52:14 +0100 <dminuoso> two monitors, it depends
2021-02-25 22:52:26 +0100 <adam10> How so?
2021-02-25 22:52:42 +0100 <dminuoso> There's two modes of operation. One is IndependentScreens (which is a pile of hacks that badly interfaces with half of xmonad-contrib)
2021-02-25 22:52:51 +0100 <dminuoso> And the other is just plain xmonad
2021-02-25 22:53:32 +0100 <adam10> I mean as long as it doesn’t register one monitor as two so I cant see anything I’m fine lmao
2021-02-25 22:53:50 +0100 <dminuoso> Well, the thing is xmonad has a single StackSet
2021-02-25 22:54:24 +0100 <adam10> I’m sorry I’m new to tiling WMs, what does that mean
2021-02-25 22:54:28 +0100 <chisui> adam10 what are your issues with i3s multimonitor setup?
2021-02-25 22:54:39 +0100 <dminuoso> adam10: https://hackage.haskell.org/package/xmonad-0.15/docs/XMonad-StackSet.html
2021-02-25 22:54:45 +0100acidjnk_new(~acidjnk@p200300d0c73909037c8935151300e6fb.dip0.t-ipconnect.de)
2021-02-25 22:55:18 +0100 <dminuoso> adam10: (So roughly, for each workspace we keep a stack of windows, in which one window is in focus). And we then keep a focus marker for which workspace is active.
2021-02-25 22:55:48 +0100 <adam10> chisui it would register one monitor as two so like certain things would be on one side of the monitor that i cant reach because its in a sort of “limbo.” I dont know exactly how to describe it, but think of it when you drag a window almost off screen, except its fully offscreen in this case
2021-02-25 22:56:01 +0100 <dminuoso> adam10: Note that "workspace" is meant in a virtual sense!
2021-02-25 22:56:13 +0100 <dminuoso> And that's where it gets slightly messy
2021-02-25 22:56:24 +0100 <dminuoso> Workspaces can shift between your monitors around, depending on your operation
2021-02-25 22:56:46 +0100 <adam10> Yea i know that, i just hope it doesn’t pull an i3 lol
2021-02-25 22:56:59 +0100 <dminuoso> IndependentScreens tries to "virtualize workspaces", such that each physical screen has its own set of workspaces.
2021-02-25 22:57:23 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-02-25 22:57:30 +0100 <adam10> But you said it doesn’t play nice with xmonad?
2021-02-25 22:57:37 +0100 <dminuoso> With many xmonad-contrib stuff
2021-02-25 22:57:58 +0100 <adam10> But with just xmonad?
2021-02-25 22:58:05 +0100 <dminuoso> If you dont use those, then its fine. Or maybe you *want* the default xmonad behavior with sharing these workspaces on all physical screens
2021-02-25 22:58:09 +0100 <dminuoso> Oh it works just fine
2021-02-25 22:58:25 +0100 <adam10> i mean it would be nice both way
2021-02-25 22:58:33 +0100 <adam10> ways*
2021-02-25 22:58:46 +0100 <dminuoso> Personally I found, if you have a single center/main monitor that you stare at, then the xmonad behavior is great.
2021-02-25 22:59:03 +0100 <dminuoso> If you have a setup where you have one monitor to the left and one to the right, IndependentScreen seems like a better fit
2021-02-25 22:59:28 +0100 <adam10> I mean its kinda like that, i want a setup where I have one single panel on my “main” monitor and then 4-ish panels on my second
2021-02-25 22:59:43 +0100 <adam10> it kinda swaps tho as i constantly look back and forth
2021-02-25 23:00:50 +0100 <adam10> But thanks for your time!
2021-02-25 23:01:04 +0100 <adam10> is there a starting configuration file it generates that i could play around with and such?
2021-02-25 23:03:03 +0100chisui(59f77ca6@i59F77CA6.versanet.de) (Ping timeout: 240 seconds)
2021-02-25 23:04:28 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net)
2021-02-25 23:04:49 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Ping timeout: 272 seconds)
2021-02-25 23:06:46 +0100bencark(~cark@91.110.54.64)
2021-02-25 23:06:49 +0100cgfbee(~bot@oc1.itim-cj.ro) (Ping timeout: 265 seconds)
2021-02-25 23:07:02 +0100darjeeling_(~darjeelin@122.245.218.150) (Ping timeout: 265 seconds)
2021-02-25 23:07:08 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-25 23:07:58 +0100avn(~avn@78-56-108-78.static.zebra.lt) (Read error: Connection reset by peer)
2021-02-25 23:08:37 +0100ddere(uid110888@gateway/web/irccloud.com/x-mbygtejiccludvmt)
2021-02-25 23:08:55 +0100 <monochrom> ski: Yes. More weakly, if you want "return a = repeat a", which is of course a prerequsite for zipping behaviour but probably isn't enough to imply zipping.
2021-02-25 23:09:34 +0100darjeeling_(~darjeelin@122.245.218.150)
2021-02-25 23:09:43 +0100theelous3(~theelous3@unaffiliated/theelous3)
2021-02-25 23:10:34 +0100pavonia^\_^\(~user@unaffiliated/siracusa)
2021-02-25 23:11:53 +0100 <monochrom> There is a related finding about homogeneous 2-tuples "data Pair a = MkPair a a". Most people quickly see that it's the same as Bool->a so you can just translate the well-known (->)Bool monad. What interests me is whether there are other choices and why or why not.
2021-02-25 23:12:12 +0100 <monochrom> Turns out again the identity laws rule out all other choices.
2021-02-25 23:12:23 +0100adam10(a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) (Ping timeout: 240 seconds)
2021-02-25 23:12:57 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 23:13:41 +0100cgfbee(~bot@oc1.itim-cj.ro)
2021-02-25 23:14:17 +0100mp___(~mp@hell.cx) (Remote host closed the connection)
2021-02-25 23:17:08 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2021-02-25 23:17:17 +0100 <monochrom> Heh, if return a = [a], then the identity laws strongly suggest join = concat. I am not sure if it is forced, but it is very limiting either way.
2021-02-25 23:18:39 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 246 seconds)
2021-02-25 23:18:45 +0100 <monochrom> Now let me try this on State too...
2021-02-25 23:18:51 +0100 <monochrom> (wish me luck)
2021-02-25 23:19:07 +0100 <monochrom> (or "good luck with that" if you know it's doomed)
2021-02-25 23:20:09 +0100 <ski> i guess i'm not really following why the identity laws rule out the other choices, there
2021-02-25 23:20:15 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-25 23:21:15 +0100adam28(a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net)
2021-02-25 23:21:17 +0100 <monochrom> For Pair: return x = MkPair x x is pretty much forced by parametricity plus totality.
2021-02-25 23:21:21 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Client Quit)
2021-02-25 23:21:50 +0100adam28(a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) (Client Quit)
2021-02-25 23:21:50 +0100 <monochrom> With that, you want join . return = id, join . fmap return = id.
2021-02-25 23:22:12 +0100 <ski> hm, i see
2021-02-25 23:22:23 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-25 23:23:26 +0100 <monochrom> So suppose join (MkPair (MkPair a00 a01) (MkPair a10 a11)) = MkPair b0 b1, where b0 and b1 each has to choose one of the aij's, and we're trying to find what they choose.
2021-02-25 23:24:33 +0100adam10(a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net)
2021-02-25 23:24:36 +0100ddellaco_(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 23:24:51 +0100 <monochrom> join (return (MkPair 0 1)) = join (MkPair (MkPair 0 1) (MkPair 0 1)), we want that to = MkPair 0 1. The 0 has to "come from the 1st column", the 1 has to "come from the 2nd column", so b0 can only choose from a00 or a10, b1 from a01 or a11.
2021-02-25 23:25:13 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-02-25 23:25:19 +0100 <ski> so apply `join . return' and `join . fmap return' to two pairs
2021-02-25 23:25:21 +0100Pickchea(~private@unaffiliated/pickchea) (Quit: Leaving)
2021-02-25 23:25:34 +0100 <ski> er, one pair of two values
2021-02-25 23:25:45 +0100 <monochrom> join (fmap return (MkPair 0 1)) basically does the transpose after the dust settles. So join is diagonal once again.
2021-02-25 23:25:46 +0100 <ski> yes
2021-02-25 23:26:04 +0100 <monochrom> (And cite "parametricity" to finish the rigour :) )
2021-02-25 23:26:11 +0100 <monochrom> (or "naturality")
2021-02-25 23:26:14 +0100 <ski> forcing it to pick indices `i' and `j' that are equal to each other
2021-02-25 23:26:16 +0100frozenErebus(~frozenEre@94.128.219.166) (Quit: leaving)
2021-02-25 23:27:36 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds)
2021-02-25 23:29:10 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-02-25 23:29:13 +0100Jd007(~Jd007@162.156.11.151)
2021-02-25 23:30:44 +0100kadobanana(~mud@unaffiliated/kadoban)
2021-02-25 23:32:16 +0100 <nshepperd> since it's equivalent to Bool -> a, you could also do the parametricity argument in that representation, which might be simpler
2021-02-25 23:33:00 +0100 <monochrom> I am skeptical with that. Bool->a is parametric on a only.
2021-02-25 23:33:15 +0100catt(~r@31.127.31.99) (Ping timeout: 256 seconds)
2021-02-25 23:33:42 +0100 <monochrom> I need a reason for "why I can't fiddle with the Bool"
2021-02-25 23:34:29 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2021-02-25 23:34:30 +0100 <monochrom> General e->a with "you have to do something that works for all e" would benefit much from parametricity in e.
2021-02-25 23:34:43 +0100adam10(a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) (Ping timeout: 240 seconds)
2021-02-25 23:35:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-02-25 23:35:25 +0100hiroaki__(~hiroaki@2a02:8108:8c40:2bb8:cedc:3317:ccec:602b)
2021-02-25 23:35:36 +0100 <monochrom> Likewise, "instance Monad ((,) w)" is very different from "instance Monad Pair" even though Pair a = (,) a a
2021-02-25 23:36:32 +0100slack1256(~slack1256@45.4.2.52) (Remote host closed the connection)
2021-02-25 23:36:39 +0100xelxebar_(~xelxebar@gateway/tor-sasl/xelxebar)
2021-02-25 23:37:14 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2021-02-25 23:37:28 +0100hiroaki_(~hiroaki@2a02:8108:8c40:2bb8:d62a:148b:cd1:9dfb) (Ping timeout: 260 seconds)
2021-02-25 23:38:00 +0100 <monochrom> Hrm, maybe I misread you.
2021-02-25 23:38:49 +0100 <dolio> Parametricity would limit the functions you have to consider.
2021-02-25 23:38:52 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-25 23:38:54 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-25 23:39:01 +0100 <nshepperd> join (return f) = join (\i j -> f j) = f
2021-02-25 23:39:07 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
2021-02-25 23:39:32 +0100 <nshepperd> join (return <$> f) = join (\i j -> f i) = f
2021-02-25 23:40:15 +0100 <nshepperd> therefore join (\i j -> f i j) k = f k k
2021-02-25 23:40:58 +0100 <nshepperd> something like that
2021-02-25 23:41:18 +0100 <dolio> There are only finitely many permutations of booleans to feed into the `Bool -> Bool -> a`.
2021-02-25 23:41:20 +0100 <monochrom> Yeah I misread you, you meant that, it works. Thanks.
2021-02-25 23:41:54 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 246 seconds)
2021-02-25 23:42:56 +0100ransom(~c4264035@8.48.134.49)
2021-02-25 23:43:08 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-02-25 23:45:13 +0100__minoru__shirae(~shiraeesh@109.166.59.137)
2021-02-25 23:45:38 +0100augnun(~augnun@2804:14c:658b:41bb:bd15:cb53:9582:4622) (Ping timeout: 264 seconds)
2021-02-25 23:46:19 +0100fendor_(~fendor@178.115.128.24.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-02-25 23:48:09 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-02-25 23:50:49 +0100 <dolio> I don't think it's significantly different in function from the version with pairs. You're given 4 a values and you need to return 2, and parametricity tells you the function must just select the outputs from the inputs.
2021-02-25 23:51:12 +0100 <dolio> And must make the same selections regardless of the exact values of the inputs.
2021-02-25 23:51:43 +0100ddellaco_(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-02-25 23:51:51 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-25 23:53:17 +0100acidjnk_new(~acidjnk@p200300d0c73909037c8935151300e6fb.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-02-25 23:53:26 +0100borne(~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 265 seconds)
2021-02-25 23:54:10 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-25 23:54:21 +0100 <nshepperd> knowing that the input is Bool doesn't help you, because the equations still have to hold for every possible input
2021-02-25 23:54:42 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-25 23:57:08 +0100pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…)
2021-02-25 23:58:27 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)