Home liberachat/#haskell: Logs Calendar

Logs on 2022-02-22 (liberachat/#haskell)

00:00:55 × sonny quits (~sonny@bras-base-london1483w-grc-30-74-12-157-79.dsl.bell.ca) (Quit: Going offline, see ya! (www.adiirc.com))
00:00:59 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
00:01:20 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
00:03:03 chenqisu1 joins (~chenqisu1@183.217.200.249)
00:03:19 × spacenautx quits (~spacenaut@user/spacenautx) (Quit: WeeChat 3.4)
00:07:40 yrlnry joins (~mjd@pool-74-109-20-19.phlapa.fios.verizon.net)
00:18:20 alx741 joins (~alx741@181.199.42.143)
00:19:56 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
00:23:05 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
00:23:07 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
00:23:49 alx741 joins (~alx741@181.199.42.143)
00:24:17 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
00:30:42 × Tuplanolla quits (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
00:31:15 × jlamothe quits (~jlamothe@198.251.61.229) (Ping timeout: 252 seconds)
00:32:48 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
00:34:20 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:34:20 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:34:20 wroathe joins (~wroathe@user/wroathe)
00:36:57 machinedgod joins (~machinedg@24.105.81.50)
00:39:43 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
00:42:23 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
00:45:49 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
00:45:57 lavaman joins (~lavaman@98.38.249.169)
00:46:42 Erutuon joins (~Erutuon@user/erutuon)
00:50:11 alx741 joins (~alx741@181.199.42.143)
00:51:15 mason0 joins (~bc8147f2@cerf.good1.com)
00:51:59 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
00:52:15 emf joins (~emf@c-73-97-137-43.hsd1.wa.comcast.net)
00:53:28 mvk joins (~mvk@2607:fea8:5cdc:bf00::99e7)
00:53:50 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
00:54:57 Erutuon joins (~Erutuon@user/erutuon)
00:55:00 × emf quits (~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit)
00:55:00 Null_A joins (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
00:55:16 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
00:56:36 × mason0 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Ping timeout))
00:59:17 × Null_A quits (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
01:01:10 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Remote host closed the connection)
01:02:31 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
01:04:29 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
01:06:14 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
01:06:46 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
01:07:34 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
01:07:45 <chronon> Wow, from a quick glance through the scrollback I can see this is where the clever people hang out. My brain melted.
01:10:43 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:17 × dvdrw quits (~dvdrw@user/dvdrw) (Ping timeout: 240 seconds)
01:13:56 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
01:16:12 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
01:16:38 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
01:16:49 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:21:35 alx741 joins (~alx741@157.100.197.240)
01:21:57 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
01:25:51 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
01:26:18 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
01:29:09 × acidsys quits (~LSD@2a03:4000:55:d20::3) (Excess Flood)
01:31:57 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
01:33:17 mason0 joins (~bc8147f2@cerf.good1.com)
01:37:08 acidsys joins (~LSD@2a03:4000:55:d20::3)
01:37:58 <pavonia> One of our mottos is: Haskell – the c stands for "clever"
01:40:16 × cjb quits (~cjb@user/cjb) (Ping timeout: 260 seconds)
01:41:39 × joo-_ quits (~joo-_@fsf/member/joo--) (Ping timeout: 272 seconds)
01:43:17 joo-_ joins (~joo-_@80-62-116-157-mobile.dk.customer.tdc.net)
01:43:18 × joo-_ quits (~joo-_@80-62-116-157-mobile.dk.customer.tdc.net) (Changing host)
01:43:18 joo-_ joins (~joo-_@fsf/member/joo--)
01:44:07 alx741 joins (~alx741@157.100.197.240)
01:45:19 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
01:46:40 BrokenClutch joins (~pioneer@2804:d41:c291:0:6129:66a9:49aa:83e7)
01:46:58 <BrokenClutch> Yeaay, three months doing haskell \o/
01:48:40 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
01:54:51 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
01:59:37 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
02:02:36 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
02:04:14 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
02:04:25 vysn joins (~vysn@user/vysn)
02:06:20 <FernandoChu[m]> silly question, is there a name for constructors that have been applied to a type variable? like `[a]`, `Maybe b`, etc. Would be nice if that name also included those that have been applied to concrete types as well like `State [a] Int`, `Foo (Maybe b) [String]` etc
02:06:39 alx741 joins (~alx741@157.100.197.240)
02:07:09 <BrokenClutch> :FernandoChu Type constructors?
02:07:09 <ski> what about `Either Int' ?
02:07:41 <ski> (or `Either e', if you prefer)
02:07:49 <FernandoChu[m]> ski: isn't that a concrete type?
02:08:12 <FernandoChu[m]> yeah Either e would be one of those things I'm looking to name
02:08:16 <FernandoChu[m]> oh wait no
02:08:17 × ridcully_ quits (~ridcully@p508acc81.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
02:08:31 <FernandoChu[m]> it's a partiall applied "thing idk it's name"
02:08:39 <FernandoChu[m]> s/partiall/partially/
02:08:46 <ski> i tend to call type expressions, having kind `*' (or `Type', if you prefer), "concrete types"
02:09:16 <FernandoChu[m]> me too, my earlier comment was a mistake
02:09:16 × lavaman quits (~lavaman@98.38.249.169) (Read error: Connection reset by peer)
02:09:36 lavaman joins (~lavaman@98.38.249.169)
02:09:58 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
02:11:35 <FernandoChu[m]> my question arises because this is what FlexibleContent/Instances seems to apply and I was writing my notes
02:12:01 <FernandoChu[m]> the wiki calls them "arbitrary types" https://gitlab.haskell.org/haskell/prime/-/wikis/FlexibleContexts
02:12:25 <FernandoChu[m]> which I'm not sure I like
02:12:40 <ski> i think "arbitrary" there just means "no restriction"
02:13:14 <ski> (or, maybe just with some few specific restrictions)
02:13:25 justsomeguy joins (~justsomeg@user/justsomeguy)
02:14:41 <FernandoChu[m]> so many technical terms I forgot about the natural language interpretation haha
02:14:46 <FernandoChu[m]> yeah that seems to be the case
02:15:02 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Remote host closed the connection)
02:16:07 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
02:17:28 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:18:47 × DNH quits (~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:21:14 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
02:22:37 × mvk quits (~mvk@2607:fea8:5cdc:bf00::99e7) (Ping timeout: 240 seconds)
02:24:21 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
02:28:02 alx741 joins (~alx741@157.100.197.240)
02:29:27 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
02:31:10 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
02:31:41 Erutuon joins (~Erutuon@user/erutuon)
02:35:37 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
02:36:12 × justAstache quits (~justache@user/justache) (Remote host closed the connection)
02:36:48 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
02:37:08 justAstache joins (~justache@user/justache)
02:37:57 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
02:37:58 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
02:37:58 wroathe joins (~wroathe@user/wroathe)
02:47:38 × xff0x quits (~xff0x@2001:1a81:5339:f000:1ec4:ce6f:8558:a9e8) (Ping timeout: 260 seconds)
02:49:09 xff0x joins (~xff0x@2001:1a81:5372:9200:5fc7:2f1:341d:525f)
02:51:53 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
02:54:40 alx741 joins (~alx741@157.100.197.240)
02:56:56 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
02:58:37 × neurocyte0917090 quits (~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
03:02:21 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
03:04:35 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
03:07:56 Erutuon joins (~Erutuon@user/erutuon)
03:08:57 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
03:10:37 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
03:12:03 ridcully_ joins (~ridcully@p508ace91.dip0.t-ipconnect.de)
03:15:06 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
03:20:10 alx741 joins (~alx741@181.199.42.143)
03:21:44 × waleee quits (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
03:22:43 × td_ quits (~td@muedsl-82-207-238-047.citykom.de) (Ping timeout: 256 seconds)
03:24:41 td_ joins (~td@muedsl-82-207-238-240.citykom.de)
03:24:41 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
03:26:29 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
03:28:59 Nahra joins (~user@static.161.95.99.88.clients.your-server.de)
03:31:51 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
03:35:23 BrokenClutch parts (~pioneer@2804:d41:c291:0:6129:66a9:49aa:83e7) ()
03:36:08 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
03:37:03 Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
03:39:30 lavaman joins (~lavaman@98.38.249.169)
03:41:32 alx741 joins (~alx741@157.100.197.240)
03:41:42 × Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
03:42:32 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
03:43:14 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
03:44:15 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
03:44:27 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
03:45:11 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
03:45:48 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
03:48:42 × acidsys quits (~LSD@2a03:4000:55:d20::3) (Excess Flood)
04:00:24 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Remote host closed the connection)
04:00:24 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
04:01:12 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
04:01:18 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
04:01:34 alx741 joins (~alx741@157.100.197.240)
04:05:50 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 250 seconds)
04:05:50 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
04:09:32 joegard joins (~joegard@179.33.119.167)
04:10:38 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:11:20 × joegard quits (~joegard@179.33.119.167) (Quit: Client closed)
04:13:15 dyeplexer joins (~dyeplexer@user/dyeplexer)
04:16:09 lavaman joins (~lavaman@98.38.249.169)
04:18:35 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
04:20:12 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
04:24:05 alx741 joins (~alx741@181.199.42.143)
04:24:54 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
04:25:01 mbuf joins (~Shakthi@223.178.77.186)
04:25:22 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
04:25:23 acidsys joins (~LSD@2a03:4000:55:d20::3)
04:26:12 × nehsou^ quits (~nehsou@50.233.120.162) (Ping timeout: 240 seconds)
04:26:49 MochizukisLastTh joins (~Mochizuki@121-83-4-20f1.osk2.eonet.ne.jp)
04:29:25 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
04:31:18 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
04:31:18 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
04:31:18 wroathe joins (~wroathe@user/wroathe)
04:36:27 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
04:36:36 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
04:36:38 deadmarshal joins (~deadmarsh@95.38.117.172)
04:45:42 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
04:46:23 alx741 joins (~alx741@181.199.42.143)
04:51:09 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
04:51:51 alx741 joins (~alx741@157.100.197.240)
04:54:12 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
04:56:10 × benin quits (~benin@59.88.179.150) (Quit: Ping timeout (120 seconds))
04:56:32 benin joins (~benin@59.88.179.150)
04:57:06 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
05:03:54 little_mac joins (~little_ma@2601:410:4300:3ce0:475:42ee:cbdc:5ced)
05:05:47 Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
05:10:36 × Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
05:15:17 alx741 joins (~alx741@157.100.197.240)
05:15:40 komikat joins (~komikat@183.82.154.44)
05:17:38 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
05:17:38 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
05:17:38 wroathe joins (~wroathe@user/wroathe)
05:19:48 × komikat quits (~komikat@183.82.154.44) (Ping timeout: 240 seconds)
05:20:25 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
05:21:52 komikat_ joins (~komikat@183.82.154.44)
05:22:41 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
05:31:49 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
05:32:36 × vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds)
05:37:22 alx741 joins (~alx741@157.100.197.240)
05:51:21 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving)
05:54:38 × komikat_ quits (~komikat@183.82.154.44) (Remote host closed the connection)
05:54:50 komikat joins (~komikat@183.82.154.44)
05:59:13 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
05:59:51 alx741 joins (~alx741@157.100.197.240)
06:00:37 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
06:00:40 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 272 seconds)
06:01:45 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
06:02:33 × komikat quits (~komikat@183.82.154.44) (Remote host closed the connection)
06:03:08 komikat_ joins (~komikat@183.82.154.44)
06:07:47 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
06:08:17 × komikat_ quits (~komikat@183.82.154.44) (Ping timeout: 272 seconds)
06:09:00 × benin quits (~benin@59.88.179.150) (Ping timeout: 240 seconds)
06:09:18 komikat joins (~komikat@183.82.154.44)
06:09:36 whound joins (~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202)
06:10:12 whound is now known as dust__
06:10:37 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
06:10:41 benin joins (~benin@59.88.179.150)
06:12:42 Null_A joins (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
06:13:17 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
06:13:48 × komikat quits (~komikat@183.82.154.44) (Ping timeout: 240 seconds)
06:15:31 komikat_ joins (~komikat@183.82.154.44)
06:15:50 × komikat_ quits (~komikat@183.82.154.44) (Remote host closed the connection)
06:16:03 komikat joins (~komikat@183.82.154.44)
06:16:07 Erutuon joins (~Erutuon@user/erutuon)
06:20:22 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:20:41 lavaman joins (~lavaman@98.38.249.169)
06:23:04 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
06:23:31 azimut joins (~azimut@gateway/tor-sasl/azimut)
06:24:03 × benin quits (~benin@59.88.179.150) (Ping timeout: 256 seconds)
06:25:22 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
06:26:58 alx741 joins (~alx741@157.100.197.240)
06:29:00 × Null_A quits (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
06:29:07 coot joins (~coot@213.134.190.95)
06:33:16 × xff0x quits (~xff0x@2001:1a81:5372:9200:5fc7:2f1:341d:525f) (Ping timeout: 245 seconds)
06:34:20 xff0x joins (~xff0x@2001:1a81:5372:9200:8a1a:331:2fa:81ab)
06:48:02 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
06:50:01 × mjrosenb quits (~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net) (Ping timeout: 268 seconds)
06:50:39 × xff0x quits (~xff0x@2001:1a81:5372:9200:8a1a:331:2fa:81ab) (Quit: xff0x)
06:51:09 × dust__ quits (~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202) (Quit: Konversation terminated!)
06:51:09 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
06:51:56 dust_ joins (~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202)
06:52:45 dust_ is now known as dust__
06:57:09 × yauhsienhuangtw quits (~Yau-Hsien@61-231-19-150.dynamic-ip.hinet.net) (Quit: Leaving)
06:58:15 xff0x joins (~xff0x@2001:1a81:5372:9200:8a1a:331:2fa:81ab)
06:59:02 × sander quits (~sander@user/sander) (Ping timeout: 240 seconds)
06:59:18 Null_A joins (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
07:04:02 × Null_A quits (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
07:04:58 alx741 joins (~alx741@157.100.197.240)
07:05:19 × coot quits (~coot@213.134.190.95) (Quit: coot)
07:06:12 mjrosenb joins (~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net)
07:09:17 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
07:09:43 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
07:10:17 gehmehgeh joins (~user@user/gehmehgeh)
07:11:13 coot joins (~coot@213.134.190.95)
07:12:41 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
07:15:01 vysn joins (~vysn@user/vysn)
07:16:58 Null_A joins (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
07:17:10 mc47 joins (~mc47@xmonad/TheMC47)
07:18:10 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
07:21:40 × komikat quits (~komikat@183.82.154.44) (Remote host closed the connection)
07:23:53 acidjnk joins (~acidjnk@p200300d0c71a321635f6942ae4ff7a88.dip0.t-ipconnect.de)
07:26:11 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
07:27:30 alx741 joins (~alx741@157.100.197.240)
07:32:01 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
07:33:08 benin joins (~benin@59.88.179.150)
07:33:51 × dust__ quits (~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202) (Quit: Konversation terminated!)
07:34:08 × benin quits (~benin@59.88.179.150) (Client Quit)
07:35:19 benin joins (~benin@59.88.179.150)
07:35:34 × Null_A quits (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 260 seconds)
07:37:07 × dextaa_ quits (~dextaa@user/dextaa) (Read error: Connection reset by peer)
07:37:36 ss4 joins (~wootehfoo@user/wootehfoot)
07:38:59 × mason0 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
07:40:25 dextaa_ joins (~dextaa@user/dextaa)
07:40:53 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
07:42:56 cosimone joins (~user@93-34-132-33.ip49.fastwebnet.it)
07:45:11 × benin quits (~benin@59.88.179.150) (Ping timeout: 272 seconds)
07:46:28 lortabac joins (~lortabac@2a01:e0a:541:b8f0:1947:6ff5:3916:a376)
07:47:43 Ariakenom joins (~Ariakenom@2001:9b1:efe:9d00:a0f2:d28e:55b:1ed5)
07:47:51 fendor joins (~fendor@178.115.60.54.wireless.dyn.drei.com)
07:48:41 alx741 joins (~alx741@181.199.42.143)
07:48:48 yauhsien joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
07:51:51 × little_mac quits (~little_ma@2601:410:4300:3ce0:475:42ee:cbdc:5ced) (Remote host closed the connection)
07:53:21 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
07:53:35 × yauhsien quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
07:53:42 Ariakenom_ joins (~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se)
07:53:48 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 240 seconds)
07:53:52 × cynomys quits (~cynomys@user/cynomys) (Ping timeout: 256 seconds)
07:55:02 × Midjak quits (~Midjak@82.66.147.146) (Quit: Leaving)
07:56:09 MajorBiscuit joins (~MajorBisc@c-001-029-040.client.tudelft.eduvpn.nl)
07:57:02 × Ariakenom quits (~Ariakenom@2001:9b1:efe:9d00:a0f2:d28e:55b:1ed5) (Ping timeout: 240 seconds)
07:58:02 komikat joins (~komikat@183.82.154.239)
08:00:03 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
08:02:06 × kristjansson quits (sid126207@id-126207.tinside.irccloud.com) (Excess Flood)
08:02:23 zeenk joins (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
08:02:27 kristjansson joins (sid126207@id-126207.tinside.irccloud.com)
08:04:00 neurocyte0917090 joins (~neurocyte@IP-213157011045.dynamic.medianet-world.de)
08:04:00 × neurocyte0917090 quits (~neurocyte@IP-213157011045.dynamic.medianet-world.de) (Changing host)
08:04:00 neurocyte0917090 joins (~neurocyte@user/neurocyte)
08:06:52 benin joins (~benin@59.92.239.104)
08:09:06 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
08:10:03 alx741 joins (~alx741@181.199.42.143)
08:13:03 kuribas joins (~user@ptr-25vy0iagvdrvz4nz7gs.18120a2.ip6.access.telenet.be)
08:17:27 chele joins (~chele@user/chele)
08:18:31 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Remote host closed the connection)
08:18:46 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
08:18:47 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
08:22:23 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:23:31 × alMalsamo quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
08:24:37 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
08:25:37 img joins (~img@user/img)
08:27:31 × img quits (~img@user/img) (Client Quit)
08:27:55 ccntrq joins (~Thunderbi@imx92-1-78-204-187-6.fbx.proxad.net)
08:28:32 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Remote host closed the connection)
08:28:54 img joins (~img@user/img)
08:29:35 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
08:35:19 alx741 joins (~alx741@157.100.197.240)
08:37:45 lavaman joins (~lavaman@98.38.249.169)
08:39:43 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
08:40:22 cynomys joins (~cynomys@user/cynomys)
08:40:24 mastarija joins (~mastarija@2a05:4f46:e04:6000:d8c:f8d:c71e:751e)
08:40:43 × fendor quits (~fendor@178.115.60.54.wireless.dyn.drei.com) (Remote host closed the connection)
08:41:01 fendor joins (~fendor@178.115.60.54.wireless.dyn.drei.com)
08:42:18 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
08:42:34 max22- joins (~maxime@2a01cb08833598000dbf298a01dd3327.ipv6.abo.wanadoo.fr)
08:43:24 × dextaa_ quits (~dextaa@user/dextaa) (Remote host closed the connection)
08:44:36 vorpuni joins (~pvorp@2001:861:3881:c690:d322:f659:136d:eef6)
08:44:59 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
08:49:02 wonko joins (~wjc@user/wonko)
08:49:24 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
08:49:35 machinedgod joins (~machinedg@24.105.81.50)
08:51:12 × komikat quits (~komikat@183.82.154.239) (Remote host closed the connection)
08:51:53 komikat joins (~komikat@183.82.154.239)
08:52:26 yauhsien joins (~Yau-Hsien@61-231-19-150.dynamic-ip.hinet.net)
08:55:47 cfricke joins (~cfricke@user/cfricke)
08:56:15 alx741 joins (~alx741@157.100.197.240)
08:59:42 jespada joins (~jespada@85.255.234.190)
09:00:09 × alex[m]12345 quits (~alexchete@2001:470:69fc:105::1:1001) (Quit: You have been kicked for being idle)
09:10:10 yauhsien_ joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
09:11:07 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
09:11:26 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
09:12:41 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
09:12:59 chexum joins (~quassel@gateway/tor-sasl/chexum)
09:14:18 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:15:06 × yauhsien_ quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
09:17:48 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 240 seconds)
09:19:22 <merijn> :O
09:19:28 <merijn> https://twitter.com/GabriellaG439/status/1495957520459915266
09:19:32 <merijn> That's genius
09:19:45 yauhsien_ joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
09:20:14 arievw joins (~arievw@85.148.234.95)
09:21:05 Null_A joins (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
09:21:33 × komikat quits (~komikat@183.82.154.239) (Remote host closed the connection)
09:26:35 <[exa]> that's wunderbar
09:27:07 × arievw quits (~arievw@85.148.234.95) (Quit: Nettalk6 - www.ntalk.de)
09:27:12 alx741 joins (~alx741@157.100.197.240)
09:28:53 AlexNoo_ joins (~AlexNoo@178.34.160.240)
09:29:25 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
09:29:29 Alex_test_ joins (~al_test@178.34.160.240)
09:29:32 AlexZenon_2 joins (~alzenon@178.34.160.240)
09:31:08 AlexNoo__ joins (~AlexNoo@178.34.160.240)
09:31:54 × AlexZenon quits (~alzenon@178.34.160.240) (Ping timeout: 256 seconds)
09:32:04 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
09:32:08 AlexZenon joins (~alzenon@178.34.160.240)
09:32:35 jespada_ joins (~jespada@85.255.234.190)
09:32:37 × AlexNoo quits (~AlexNoo@178.34.160.240) (Ping timeout: 240 seconds)
09:32:45 × jespada quits (~jespada@85.255.234.190) (Ping timeout: 256 seconds)
09:33:24 × yauhsien_ quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Remote host closed the connection)
09:33:29 × Alex_test quits (~al_test@178.34.160.240) (Ping timeout: 272 seconds)
09:33:41 AlexNoo joins (~AlexNoo@178.34.160.240)
09:34:06 × AlexZenon_2 quits (~alzenon@178.34.160.240) (Ping timeout: 260 seconds)
09:34:10 × Alex_test_ quits (~al_test@178.34.160.240) (Ping timeout: 256 seconds)
09:34:11 yauhsien_ joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
09:34:26 Alex_test joins (~al_test@178.34.160.240)
09:34:37 × AlexNoo_ quits (~AlexNoo@178.34.160.240) (Ping timeout: 240 seconds)
09:35:36 × vorpuni quits (~pvorp@2001:861:3881:c690:d322:f659:136d:eef6) (Ping timeout: 250 seconds)
09:35:45 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:36:09 × AlexNoo__ quits (~AlexNoo@178.34.160.240) (Ping timeout: 256 seconds)
09:36:17 × Null_A quits (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 252 seconds)
09:36:36 × acidjnk quits (~acidjnk@p200300d0c71a321635f6942ae4ff7a88.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
09:36:45 alp joins (~alp@user/alp)
09:37:18 komikat joins (~komikat@183.82.154.239)
09:39:16 × yauhsien_ quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
09:39:45 × AlexZenon quits (~alzenon@178.34.160.240) (Quit: ;-)
09:40:21 × Alex_test quits (~al_test@178.34.160.240) (Quit: ;-)
09:41:05 dyeplexer joins (~dyeplexer@user/dyeplexer)
09:41:21 × AlexNoo quits (~AlexNoo@178.34.160.240) (Quit: Leaving)
09:45:11 jstolarek joins (~jstolarek@staticline-31-183-182-85.toya.net.pl)
09:48:28 × ss4 quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
09:48:48 wootehfoot joins (~wootehfoo@user/wootehfoot)
09:49:04 dvdrw joins (~dvdrw@user/dvdrw)
09:49:43 alx741 joins (~alx741@157.100.197.240)
09:51:47 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Remote host closed the connection)
09:52:41 __monty__ joins (~toonn@user/toonn)
09:53:45 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
09:53:50 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
09:55:58 × polyphem quits (~rod@2a02:810d:840:8754:2123:9506:671d:c7f0) (Ping timeout: 250 seconds)
09:56:31 AlexZenon joins (~alzenon@178.34.160.240)
09:57:03 polyphem joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
09:57:26 Alex_test joins (~al_test@178.34.160.240)
09:57:35 vorpuni joins (~pvorp@2001:861:3881:c690:d322:f659:136d:eef6)
09:59:02 × polyphem quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Client Quit)
10:01:17 × mastarija quits (~mastarija@2a05:4f46:e04:6000:d8c:f8d:c71e:751e) (Ping timeout: 240 seconds)
10:01:47 polyphem joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
10:04:00 <tomsmeding> neat
10:04:16 <dminuoso> Hah that's really something
10:05:10 <tomsmeding> I wonder how well that scales beyond nice examples though
10:06:22 <tomsmeding> It's nice to be able to write `sum / length` instead of `lift2 (/) sum length`, but I'd guess that you'd have <20 occurrences of this in an actual codebase
10:06:38 <tomsmeding> (not saying it's bad: certainly nice to have)
10:07:03 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 272 seconds)
10:07:23 jgeerds joins (~jgeerds@55d4b9df.access.ecotel.net)
10:07:26 × alp quits (~alp@user/alp) (Remote host closed the connection)
10:07:45 alp joins (~alp@user/alp)
10:08:09 <[exa]> I guess it could work for vectors right? "broadcasting" ops over vectors is super useful
10:08:15 m5zs7k joins (aquares@web10.mydevil.net)
10:12:15 alx741 joins (~alx741@157.100.197.240)
10:12:37 × jgeerds quits (~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 250 seconds)
10:12:46 <merijn> tomsmeding: That's not what it's doing, though
10:12:59 <merijn> tomsmeding: It's much more efficient than liftA2 too
10:13:25 <merijn> the liftA2 blows up memory on big, lazy things
10:14:48 <merijn> sum (or length, whichever is forced first) will materialise the entire thing, then it will stay alive until the other finishes evaluating and *then* can things be GCed
10:14:53 <merijn> the fold example is incremental
10:18:03 <tomsmeding> merijn: note that I wrote lift2, not liftA2
10:18:04 ubert1 joins (~Thunderbi@2a02:8109:9880:303c:b499:2e2d:5a8b:934e)
10:18:13 <tomsmeding> I know that you'd need a special combinator for folds
10:20:53 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
10:23:12 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
10:27:37 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
10:27:46 AlexNoo joins (~AlexNoo@178.34.160.240)
10:32:10 <tomsmeding> merijn: https://hackage.haskell.org/package/foldl-1.4.12/docs/src/Control.Foldl.html#line-291
10:32:13 <tomsmeding> it's literally liftA2
10:32:34 <tomsmeding> (with a well-chosen Applicative instance)
10:34:05 <kuribas> liftA2 is constant for folds.
10:34:13 <kuribas> it just operates on the end result.
10:34:13 <tomsmeding> indeed
10:34:30 <tomsmeding> I realised that after looking at the Num instance and going "wait, what? Oh, of course"
10:35:23 <tomsmeding> [exa]: vectors are usually instances of Num precisely for that reason I think
10:35:56 <tomsmeding> except if intended as linear algebra vectors I guess, then (*) is a bit dodgy perhaps
10:36:26 <dvdrw> `signum' and `abs' are a bit dubious to pick an implementation for, too
10:36:59 <tomsmeding> they are for all non-scalar stuff
10:37:07 × vorpuni quits (~pvorp@2001:861:3881:c690:d322:f659:136d:eef6) (Ping timeout: 256 seconds)
10:37:18 alx741 joins (~alx741@181.199.42.143)
10:37:26 <tomsmeding> matrices, polynomials
10:38:16 <tomsmeding> hindsight says that perhaps it should have been Ring { (+), (*), (-), negate }, Ring => Num { abs, signum }
10:38:43 <tomsmeding> though that has the downside of more verbose instance declarations
10:38:55 <geekosaur> yet another attempt to redesign Num…
10:38:59 <tomsmeding> :D
10:39:06 <geekosaur> hackage has several failed attempts already
10:39:29 <tomsmeding> you know what would be nice? the ability to give instances for a whole tree of type classes compactly in a single clause
10:39:41 <dvdrw> https://xkcd.com/927/ :)
10:40:01 <tomsmeding> like, instance Monad Thing where fmap = ... ; pure = ... ; (<*>) = ... ; return = ... ; (>>=) = ...
10:40:09 <tomsmeding> bad example because this has lots of redundancy as well
10:40:15 <geekosaur> at some point one has to accept that Num exists for programmer convenience
10:40:33 <tomsmeding> then you could split up Num in lots of fine-grained classes, without the downside of making instance declarations much more verbose
10:40:38 <dvdrw> tomsmeding: maybe allow for lower typeclasses to use higher typeclass functions for default implementations?
10:40:45 <tomsmeding> and less people would have complained about FAM I guess
10:40:47 <geekosaur> already can
10:41:01 <dminuoso> dvdrw: that's already perfectly possible.
10:41:05 <geekosaur> many people backform Applicative instances with <*> = `ap`
10:41:09 <[exa]> tomsmeding: does it do the fusion though, to avoid making the intermediate vectors? for me the explicit fold there kinda materializes the efficiency expectation there
10:41:15 <dminuoso> dvdrw: Look how default Generic implementations usually work.
10:41:28 <dminuoso> (They dont even have to be subclasses, they can be arbitrary classes)
10:41:35 <tomsmeding> dvdrw: key thing is DefaultSignatures
10:41:46 <tomsmeding> though of course Functor/Applicative don't do it because legacy
10:41:52 <dvdrw> huh, didn't know that
10:41:57 <tomsmeding> [exa]: what's "it" you're referring to?
10:42:10 <dminuoso> tomsmeding: Honestly I'd find it detesting if `rg "instance Functor Foo"` wouldn't be fruitful.
10:42:12 <[exa]> tomsmeding: Num instance for vectors
10:42:20 <tomsmeding> dminuoso: very good point
10:42:32 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
10:42:34 <tomsmeding> [exa]: ah, but fusion is a whole separate problem from operators like these
10:42:48 <merijn> dvdrw: You can use DefaultSignatures extension for that
10:42:56 <[exa]> yeah, it looked to me that the fold there could give a nice hint
10:42:58 <tomsmeding> if a user writes `map (*2) (map (+3) v)`, you probably want fusion as well
10:43:26 <tomsmeding> so not having easy broadcasting Num operators for your vectors doesn't allow you to ignore fusion :p
10:43:45 <merijn> dvdrw: basically lets you have a signature and default implementation that is "less general" that the normal type, see: https://github.com/merijn/validated-literals/blob/master/ValidLiterals.hs#L87-L89
10:44:16 <dminuoso> tomsmeding: perhaps what you really want is some editor guidance. Say you let the editor know you want to write `instance Foo Monad`, and it will create a special buffer with `instance Functor where fmap = liftM; instance Applicative where pure = return; (<*>) = liftAP; instance Monad where return = ...; (>>=) = ...;`, and put your cursor directly to the definition of return
10:44:28 <dminuoso> Or just insert it right into your haskell editor buffer
10:44:35 <dminuoso> With HLS that should be doable
10:44:56 <tomsmeding> dminuoso: maybe that does most of the job indeed
10:45:59 <tomsmeding> dminuoso: I was thinking of a fragmentation of Num along the lines of this (linearity being irrelevant to the point) https://hackage.haskell.org/package/linear-base-0.1.0/docs/Data-Num-Linear.html
10:46:31 <tomsmeding> making a new type an instance of the right stuff will be awfully verbose
10:46:58 <dvdrw> merijn: that's a pretty cool feature
10:47:21 <tomsmeding> editor support would be nice, but then you slowly degenerate to java-like "let's generate all the code, then it's not bad that everything is hugely boilerplaty"
10:47:28 <dminuoso> Btw, I wish we had some way to attach metadata to constructors outside the type system.
10:47:35 <tomsmeding> I'm not saying my multi-instance declaration is the nicest solution either though
10:48:56 <dminuoso> It would be so neat if I could do something like `data Meta = Meta Int String; data State = Loaded {~ Meta 10 "loaded" ~} | Fixed {~ Meta 20 "fixed" ~}`
10:49:13 <dminuoso> With that meta data being accessible in say generics or TH...
10:49:29 <lortabac> clojure has something similar IIRC
10:50:27 <turlando> Is there a way to import a data constructor without the record accessor functions?
10:50:41 <dminuoso> turlando: import Foo (Foo(Foo))
10:50:54 <dminuoso> Okay, perhaps a bit confusing with the overloaded usage of Foo here..
10:51:05 <dminuoso> import Mod (TypeCon(DataCon))
10:51:06 <geekosaur> actually I think no
10:51:15 <turlando> Yeah, it's confusing and I've tried it but with no luck, let me try harder
10:51:37 <dminuoso> geekosaur: Mmm, would that give me record accessors regardless?
10:51:37 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
10:51:42 <geekosaur> yes
10:51:47 <dminuoso> Uh that's surprising
10:51:59 <geekosaur> this is why 9.2 has an extension to not generate them
10:52:01 <turlando> nope: Not in scope: data constructor ‘Frame’
10:52:12 <turlando> with: import Simulator.Frame (Frame(Frame))
10:52:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
10:52:31 <geekosaur> hm, that should importboth type and data constructor
10:52:46 × komikat quits (~komikat@183.82.154.239) (Remote host closed the connection)
10:52:49 <geekosaur> (but no control over fields)
10:53:21 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
10:53:35 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
10:53:45 <geekosaur> actually, I wonder if you could export a bidirectional pattern synonym and not export the datacon itself
10:54:01 komikat joins (~komikat@183.82.154.239)
10:54:16 <geekosaur> you'd need to turn on the extension that lets you say `pattern Foo` in the export list
10:54:36 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
10:54:45 <geekosaur> ExplicitNamespaces
10:54:48 <turlando> True that, but seems to me a bit of overkill since I need this in a module only so far
10:56:17 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Ping timeout: 240 seconds)
10:58:36 × foul_owl quits (~kerry@23.82.193.88) (Ping timeout: 256 seconds)
11:00:03 × komikat quits (~komikat@183.82.154.239) (Remote host closed the connection)
11:00:06 <turlando> stack clean && stack build did the trick :\
11:02:08 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
11:02:37 azimut joins (~azimut@gateway/tor-sasl/azimut)
11:06:21 notzmv joins (~zmv@user/notzmv)
11:06:21 komikat joins (~komikat@183.82.154.239)
11:08:21 tomsmeding is happy to not have had build caching issues yet, neither stack nor cabal
11:08:41 alx741 joins (~alx741@157.100.197.240)
11:11:20 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
11:13:50 foul_owl joins (~kerry@23.82.193.89)
11:15:48 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
11:17:32 fendor_ joins (~fendor@178.165.167.221.wireless.dyn.drei.com)
11:20:02 × fendor quits (~fendor@178.115.60.54.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
11:21:03 kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
11:21:18 ccntrq1 joins (~Thunderbi@2a01:e34:eccb:b060:8793:de70:3992:9c12)
11:23:03 × ccntrq quits (~Thunderbi@imx92-1-78-204-187-6.fbx.proxad.net) (Ping timeout: 272 seconds)
11:23:03 ccntrq1 is now known as ccntrq
11:23:47 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
11:24:16 DNH joins (~DNH@2a02:8109:b740:2c4:e0aa:430d:d615:45f4)
11:29:10 alx741 joins (~alx741@157.100.197.240)
11:31:48 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
11:31:49 alphabeta joins (~kilolympu@31.205.200.235)
11:32:36 × kilolympus quits (~kilolympu@vpn-fn-229.net.ed.ac.uk) (Ping timeout: 256 seconds)
11:33:03 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
11:33:39 alx741 joins (~alx741@157.100.197.240)
11:37:14 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
11:38:50 × raym quits (~raym@user/raym) (Ping timeout: 256 seconds)
11:39:40 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:41:03 pokhu joins (~rishi@103.206.114.112)
11:45:22 raym joins (~raym@user/raym)
11:48:37 <dvdrw> ski: awpr: Church-encoded constrained existential did it :) (Pretty similar to your ForSome)
11:52:51 <ski> dvdrw : hm ?
11:53:44 alx741 joins (~alx741@157.100.197.240)
11:53:53 jm_jj joins (~jmjj@mobile-user-c3a5cc-243.dhcp.inet.fi)
11:54:44 <dvdrw> ski: `(foldl1 (>>) $ map ftog) :: [exists a. Show a => F a] -> (exists a. Show a => G a)'
11:55:04 <dvdrw> ...that should be a `(.)'
11:55:48 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
11:56:41 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
11:56:54 <ski> s/=>/*>/
11:57:03 × coot quits (~coot@213.134.190.95) (Quit: coot)
11:57:39 <dvdrw> that's because of the existential quantifier?
11:57:47 <ski> (yes and) no
11:58:38 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
11:58:51 <ski> to consume a value of type `Cxt => T', you have to provide evidence for the constraint `Cxt', and then you can consume the resulting value of type `T'
11:58:57 × MochizukisLastTh quits (~Mochizuki@121-83-4-20f1.osk2.eonet.ne.jp) (Ping timeout: 256 seconds)
11:59:28 <ski> to produce a value of type `Cxt => T', you get to assume (you will be handed) evidence for the constraint `Cxt', and then you have to produce a value of type `T'
12:00:01 <ski> to produce a value of type `Cxt *> T', you have to provide evidence for the constraint `Cxt', and then you also have to produce a value of type `T'
12:01:15 <ski> to consume a value of type `Cxt *> T', you will be provided/handed (you can assume) evidence for the constraint `Cxt', and then you will also be given a value of type `T' to consume
12:01:52 <dvdrw> ah, I see
12:01:53 <ski> `Cxt *> T' is to `Cxt => T' what `(U,V) ' is to `U -> V'
12:02:23 <ski> `*>' is most commonly used directly inside `exists', just like `=>' is most commonly used directly inside `forall'
12:02:36 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (K-Lined)
12:02:36 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
12:02:47 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
12:02:47 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
12:03:10 <dvdrw> Do these arrows have a name?
12:03:59 <ski> here's one way you can simulate `Cxt *> T' : `data CxtWithT = Cxt => WrapCxtWithT T'. or, using `GADTs' syntax, `data CxtWithT where WrapCxtWithT :: Cxt => T -> CxtWithT'
12:05:06 <ski> (another way to simulate `Cxt *> T' is `forall o. (Cxt => T -> o) -> o'. this is the CPS / Church/Scott encoding)
12:05:57 <dvdrw> Indeed that's how I've written it for my `ForSome ctx f' type
12:06:41 <dvdrw> `forall r. (forall a. c a => tag a -> r) -> r'
12:07:35 <dvdrw> er, ...ctx a...
12:07:49 <ski> "Do these arrows have a name?" -- not really. the notation `*>' is something i've used for years, in here, to explain this distinction, and to be able to talk about this stuff
12:08:36 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
12:08:49 <ski> although, it seems that the word "provide" may be useful to talk about it
12:08:57 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
12:09:30 <ski> @hoogle Dict
12:09:30 <lambdabot> Data.Constraint data Dict
12:09:30 <lambdabot> Data.Constraint Dict :: a => Dict a
12:09:30 <lambdabot> Data.Vinyl.Core data Dict c a
12:10:27 <ski> that is `data Dict c = c => Dict', expressing `c *> ()'. which is itself one example of using `*>', not directly nested inside `exists'
12:11:36 × cynomys quits (~cynomys@user/cynomys) (Ping timeout: 250 seconds)
12:12:23 acidjnk joins (~acidjnk@p200300d0c71a3216f19af2eb8990af00.dip0.t-ipconnect.de)
12:13:31 ski . o O ( <https://hackage.haskell.org/package/constraints-0.13.3/docs/Data-Constraint.html> )
12:16:16 alx741 joins (~alx741@157.100.197.240)
12:17:11 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
12:22:53 spacenautx joins (~spacenaut@user/spacenautx)
12:23:42 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
12:29:43 mastarija joins (~mastarija@2a05:4f46:e04:6000:d8cc:eac0:596a:75bb)
12:30:30 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
12:31:36 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
12:32:05 coot joins (~coot@213.134.190.95)
12:33:27 <ehammarstrom> Since this compiles https://paste.tomsmeding.com/3IYPsd1g would this be considered a "proof" that ((g . f) .) = (g .) . (f .)? I guess given that I trust GHC (?)
12:34:22 × deadmarshal quits (~deadmarsh@95.38.117.172) (Ping timeout: 256 seconds)
12:34:37 <ehammarstrom> Shoot, forgot to include `f :: Int -> Bool` and `g :: Bool -> Char` in the paste
12:34:56 notabled1 is now known as notableduck
12:35:17 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
12:35:42 <ski> was just going to ask about those
12:37:07 <ski> what does `(g . hb) . (f . ha)' have to do with `(g .) . (f .)' ?
12:38:20 <ski> and you haven't really provided any argument or check that two things are equal, you've just showed that some (separate) stuff type-checks
12:38:21 <ehammarstrom> ski: I thought of them as "hole a" and "hole b", filling in the missing args
12:38:24 alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo)
12:38:42 <ski> (g .) . (f .)
12:38:51 <ski> = \h -> ((g .) . (f .)) h
12:38:59 <ski> = \h -> (g .) ((f .) h)
12:39:07 <ski> = \h -> g . (f . h)
12:39:40 <ski> this doesn't seem too related to your `\ha hb -> (g . hb) . (f . ha)'
12:39:55 lavaman joins (~lavaman@98.38.249.169)
12:41:32 <ski> (anyway, what `forall g f. ((g . f) .) = (g .) . (f .)' is really about is associativity. perhaps one could prove his as a consequence of a free theorem, hmm)
12:41:38 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
12:41:59 alx741 joins (~alx741@157.100.197.240)
12:42:41 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
12:44:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
12:44:20 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:45:24 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
12:45:51 lavaman joins (~lavaman@98.38.249.169)
12:47:18 <ski> oh, just noticed your comment in the paste said `((g . f) . _) = (g . _) . (f . _)'. it's not too clear what you mean by that (although, you seem to have interpreted `(g . _) . (f . _)' as `(g . hb) . (f . ha)', but then what does those `hb' and `ha' have to do with the `h' that you get when you similarly interpret `((g . f) . _)' as `(g . f) . h' ?) in any case, it would seem to be different from your `((g
12:47:24 <ski> . f) .) = (g .) . (f .)' above
12:49:02 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
12:52:07 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:52:12 yauhsien_ joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
12:52:31 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
12:53:25 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
12:54:24 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
12:54:35 deadmarshal joins (~deadmarsh@95.38.117.172)
12:54:50 andreabedini joins (~andreabed@8s8kj68c1m9cwyq773h2.ip6.superloop.com)
12:56:33 × alphabeta quits (~kilolympu@31.205.200.235) (Quit: Quitting IRC :()
12:56:45 × yauhsien_ quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
12:56:52 kilolympus joins (~kilolympu@31.205.200.235)
12:58:37 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Ping timeout: 240 seconds)
13:02:14 alx741 joins (~alx741@157.100.197.240)
13:03:41 × xff0x quits (~xff0x@2001:1a81:5372:9200:8a1a:331:2fa:81ab) (Ping timeout: 245 seconds)
13:03:50 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
13:04:31 xff0x joins (~xff0x@2001:1a81:5372:9200:6a39:7582:9b2d:4f3d)
13:06:06 × chenqisu1 quits (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds)
13:06:06 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
13:07:39 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
13:11:34 × jespada_ quits (~jespada@85.255.234.190) (Ping timeout: 260 seconds)
13:14:34 × AlexNoo quits (~AlexNoo@178.34.160.240) (Quit: Leaving)
13:14:46 × Alex_test quits (~al_test@178.34.160.240) (Quit: ;-)
13:14:56 × DNH quits (~DNH@2a02:8109:b740:2c4:e0aa:430d:d615:45f4) (Ping timeout: 245 seconds)
13:15:04 × AlexZenon quits (~alzenon@178.34.160.240) (Quit: ;-)
13:18:05 o-90 joins (~o-90@gateway/tor-sasl/o-90)
13:20:32 AlexZenon joins (~alzenon@178.34.160.240)
13:20:41 AlexNoo joins (~AlexNoo@178.34.160.240)
13:22:16 alx741 joins (~alx741@157.100.197.240)
13:22:21 Alex_test joins (~al_test@178.34.160.240)
13:24:18 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
13:25:01 nil joins (~user@134.209.106.31)
13:25:37 × xff0x quits (~xff0x@2001:1a81:5372:9200:6a39:7582:9b2d:4f3d) (Ping timeout: 240 seconds)
13:25:49 <nil> It is possible to use linear-base's mutable hash map to do something like: for (i in [1..100]) { hm.insert(i, i); print(i); } ?
13:26:43 xff0x joins (~xff0x@2001:1a81:5372:9200:4da8:4717:4e75:17ef)
13:27:03 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
13:28:04 <nil> HashMap's constructors (empty and fromList) require the return types to be `Ur a`, so no `IO`. :-/
13:29:12 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
13:30:52 × nil quits (~user@134.209.106.31) (Remote host closed the connection)
13:32:18 <merijn> possibly? seems needlesly complicated for something trivially achieved by a fold seems overkill...
13:32:41 × andreabedini quits (~andreabed@8s8kj68c1m9cwyq773h2.ip6.superloop.com) (Quit: WeeChat 3.3)
13:33:02 × max22- quits (~maxime@2a01cb08833598000dbf298a01dd3327.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
13:39:12 yauhsien_ joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
13:41:49 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
13:42:05 × deadmarshal quits (~deadmarsh@95.38.117.172) (Ping timeout: 256 seconds)
13:43:21 × benin quits (~benin@59.92.239.104) (Quit: The Lounge - https://thelounge.chat)
13:43:43 benin joins (~benin@59.92.239.104)
13:44:47 alx741 joins (~alx741@157.100.197.240)
13:48:18 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
13:49:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
13:49:20 × komikat quits (~komikat@183.82.154.239) (Read error: Connection reset by peer)
13:49:23 × yauhsien_ quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Remote host closed the connection)
13:49:35 komikat joins (~komikat@183.82.154.239)
13:49:38 fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
13:50:51 × mastarija quits (~mastarija@2a05:4f46:e04:6000:d8cc:eac0:596a:75bb) (Quit: Leaving)
13:53:34 × acidjnk quits (~acidjnk@p200300d0c71a3216f19af2eb8990af00.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
13:56:09 yauhsien_ joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
13:56:11 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
13:56:41 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
13:56:52 × hololeap quits (~hololeap@user/hololeap) (Excess Flood)
13:57:20 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
13:57:48 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
13:59:08 hololeap joins (~hololeap@user/hololeap)
14:01:23 × yauhsien_ quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
14:02:36 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
14:05:39 bahamas joins (~lucian@84.232.140.52)
14:06:24 alx741 joins (~alx741@157.100.197.240)
14:10:15 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
14:10:42 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
14:15:30 deadmarshal joins (~deadmarsh@95.38.117.172)
14:18:23 max22- joins (~maxime@2a01cb088335980021dd241f5bb447ef.ipv6.abo.wanadoo.fr)
14:19:04 AlexNoo_ joins (~AlexNoo@178.34.160.252)
14:19:32 × deadmarshal quits (~deadmarsh@95.38.117.172) (Ping timeout: 240 seconds)
14:21:28 × Alex_test quits (~al_test@178.34.160.240) (Ping timeout: 256 seconds)
14:22:02 × AlexZenon quits (~alzenon@178.34.160.240) (Ping timeout: 256 seconds)
14:22:19 × AlexNoo quits (~AlexNoo@178.34.160.240) (Ping timeout: 256 seconds)
14:23:56 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
14:23:56 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
14:23:56 wroathe joins (~wroathe@user/wroathe)
14:24:11 × benin quits (~benin@59.92.239.104) (Ping timeout: 272 seconds)
14:24:52 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
14:25:11 Alex_test joins (~al_test@178.34.160.252)
14:25:49 Alex_test_ joins (~al_test@178.34.160.252)
14:25:56 benin joins (~benin@59.92.239.104)
14:25:57 AlexZenon joins (~alzenon@178.34.160.252)
14:26:14 AlexZenon_2 joins (~alzenon@178.34.160.252)
14:26:21 shriekingnoise joins (~shrieking@201.231.16.156)
14:28:45 Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
14:28:56 alx741 joins (~alx741@181.199.42.143)
14:29:37 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
14:31:46 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
14:32:25 alx741 joins (~alx741@181.199.42.143)
14:33:41 × Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
14:34:08 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
14:34:25 × AlexZenon_2 quits (~alzenon@178.34.160.252) (Quit: ;-)
14:34:59 × Alex_test_ quits (~al_test@178.34.160.252) (Quit: ;-)
14:35:53 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
14:36:18 AlexNoo_ is now known as AlexNoo
14:36:47 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
14:36:59 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
14:40:39 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 272 seconds)
14:41:19 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
14:42:09 × gawen quits (~gawen@user/gawen) (Quit: cya)
14:42:32 rtsn joins (~nstr@user/rtsn)
14:45:05 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
14:47:36 gawen joins (~gawen@user/gawen)
14:52:50 alx741 joins (~alx741@157.100.197.240)
14:53:23 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
14:54:56 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
14:54:59 × rembo10 quits (~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
14:55:56 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
14:55:58 rembo10 joins (~rembo10@remulis.com)
14:56:13 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
14:57:49 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
14:58:26 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
15:00:26 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:1947:6ff5:3916:a376) (Quit: WeeChat 2.8)
15:00:36 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Ping timeout: 250 seconds)
15:01:28 Null_A joins (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
15:02:29 arjun joins (~arjun@user/arjun)
15:04:05 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
15:04:22 × arjun quits (~arjun@user/arjun) (Remote host closed the connection)
15:04:31 × wonko quits (~wjc@user/wonko) (Ping timeout: 245 seconds)
15:06:12 × Null_A quits (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
15:07:44 × komikat quits (~komikat@183.82.154.239) (Remote host closed the connection)
15:07:53 lortabac joins (~lortabac@2a01:e0a:541:b8f0:1947:6ff5:3916:a376)
15:09:56 bahamas joins (~lucian@84.232.140.52)
15:13:05 alx741 joins (~alx741@157.100.197.240)
15:14:45 hololeap_ joins (~hololeap@user/hololeap)
15:15:24 × mbuf quits (~Shakthi@223.178.77.186) (Quit: Leaving)
15:16:22 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
15:16:23 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
15:16:26 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
15:17:56 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
15:18:39 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 272 seconds)
15:19:35 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
15:23:46 komikat joins (~komikat@183.82.154.239)
15:23:58 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:26:21 × dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds)
15:29:19 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
15:29:19 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
15:29:19 dibblego joins (~dibblego@haskell/developer/dibblego)
15:29:22 <fendor[m]> did someone else notice that cabal's test-show-detail is ignored/missing in github actions? I thought `--test-show-details=direct` should always show the output of the test-stream...
15:29:28 Sgeo joins (~Sgeo@user/sgeo)
15:32:50 × coot quits (~coot@213.134.190.95) (Quit: coot)
15:34:04 × komikat quits (~komikat@183.82.154.239) (Remote host closed the connection)
15:34:28 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 272 seconds)
15:34:42 alx741 joins (~alx741@157.100.197.240)
15:34:43 komikat joins (~komikat@183.82.154.239)
15:34:47 × komikat quits (~komikat@183.82.154.239) (Remote host closed the connection)
15:34:59 komikat joins (~komikat@183.82.154.239)
15:37:56 × spacenautx quits (~spacenaut@user/spacenautx) (Quit: WeeChat 3.4)
15:39:33 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
15:50:34 × max22- quits (~maxime@2a01cb088335980021dd241f5bb447ef.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
15:51:14 max22- joins (~maxime@2a01cb088335980027fe609829d061d7.ipv6.abo.wanadoo.fr)
15:57:13 alx741 joins (~alx741@157.100.197.240)
15:57:27 × shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer)
15:58:56 shapr joins (~user@pool-173-73-44-186.washdc.fios.verizon.net)
15:59:21 xkuru joins (~xkuru@user/xkuru)
15:59:21 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
15:59:29 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
16:00:12 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
16:00:24 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
16:01:10 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:1947:6ff5:3916:a376) (Quit: WeeChat 2.8)
16:02:07 joegard joins (~joegard@179.33.119.167)
16:03:00 zebrag joins (~chris@user/zebrag)
16:04:52 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
16:07:09 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
16:09:00 × dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 240 seconds)
16:09:19 jespada joins (~jespada@85.255.234.190)
16:10:38 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
16:12:31 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
16:12:31 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
16:12:31 dibblego joins (~dibblego@haskell/developer/dibblego)
16:13:28 × joegard quits (~joegard@179.33.119.167) (Quit: Client closed)
16:17:29 alx741 joins (~alx741@157.100.197.240)
16:21:21 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
16:21:54 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
16:22:36 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 240 seconds)
16:32:03 × LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
16:32:18 LiaoTao joins (~LiaoTao@gateway/tor-sasl/liaotao)
16:37:30 alx741 joins (~alx741@157.100.197.240)
16:38:57 dust_ joins (~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202)
16:40:42 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
16:43:00 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
16:44:01 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
16:45:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
16:47:07 × komikat quits (~komikat@183.82.154.239) (Read error: Connection reset by peer)
16:47:24 komikat joins (~komikat@183.82.154.239)
16:47:57 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
16:48:37 × Benzi-Junior quits (~BenziJuni@dsl-149-66-61.hive.is) (Ping timeout: 240 seconds)
16:50:26 × vysn quits (~vysn@user/vysn) (Ping timeout: 260 seconds)
16:50:37 × ph88 quits (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Quit: Leaving)
16:54:12 Vajb joins (~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e)
16:54:23 <kronicma1> hey folks, does anyone know what the proper term is for a freer/operational monad where all Return/Pure and Bind/Impure are defined in the same gadt as the instructions?
16:54:23 <fendor[m]> I forgot, does dropping support for a ghc version require a major version bump?
16:54:54 <kronicma1> rather than defining the instructions in a functor and having FFree/Operationl be polymorphic over functors and having Return:: a -> FFree f a and such
16:57:01 <ski> (s/polymorphic/parametric/)
16:57:21 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
16:57:43 <kronicma1> oops thanks ski
16:58:52 <kronicma1> i've seen the technique a lot in various haskell and ocaml libraries but not sure if it has it's own name besides freer/operational monads (which are slightly different cause of the separation)
16:59:08 alx741 joins (~alx741@181.199.42.143)
16:59:17 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 256 seconds)
16:59:22 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:01:19 lbseale joins (~ep1ctetus@user/ep1ctetus)
17:01:32 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
17:02:27 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
17:03:18 <ski> kronicma1 : "deep embedding" of eDSL might be slightly relevant
17:03:35 × Vajb quits (~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e) (Ping timeout: 256 seconds)
17:04:07 <ski> (note that if you want it to be a monad, then it really should be an abstract data type (so that you can simulate the appropriate quotient of the representation data structure))
17:05:08 <ski> (an alternative is to fuse `Bind' with the primitive operations. or possibly to go CPS, which is close)
17:06:28 <turlando> I've a question about style/architecture. I'm implementing a discrete event simulator. Right now I ask the user to implement a function that takes the current state, an incoming event to produce the resulting state. I have a function that folds over the events with the state transition function to produce the final result. So far so good. Now I want the user to be able to schedule or unschedule events from within the state transition function and I'm
17:06:28 <turlando> not sure what's the cleanest approach. I'm thinking of changing the state transition function so that it gets an "environment" (state + future events) and produces an "environment", coupling it with functions to manipulate it to schedule events and updating the state. What do you think?
17:07:14 <lyxia> kronicma1: isn't that Fix (for example in data-fix)
17:07:38 <ski> i think kronicma1 also wanted the recursion baked in
17:09:18 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Remote host closed the connection)
17:11:25 CATS joins (~apic@brezn2.muc.ccc.de)
17:11:47 <kronicma1> lyxia, I don't think that's it
17:11:56 <kronicma1> Here's an example of what I'm talking about: https://github.com/s-zeng/haskell-monads-showcase/blob/master/app/DiskFS.hs#L223
17:12:09 <c_wraith> turlando: from the point of view of your interface, isn't that all just a state?
17:12:34 <c_wraith> turlando: like, why does it need to change at all to accommodate that use pattern?
17:12:36 <kronicma1> You can see how it has the bind and pure baked in rather than the normal operational/ffree way of separating those two off into a different gadt
17:13:17 <lyxia> I see, yeah Fix still keeps the "Bind" separate.
17:13:40 <ski> BindTryCreateFile :: String -> String -> Simulator a -> Simulator a -- &c.
17:14:16 <turlando> c_wraith because the "client" right now has no notion of the event list (which is an opaque type being a priority lists of client-defined events)
17:15:22 <lyxia> I don't think it has a dedicated name, IMO it's still the free/operational monad approach even if you don't get a standalone type to give it the same name.
17:15:25 <ski> BindTryCreateFile f s c >>= k = BindTryCreateFile f s (c >>= k)
17:15:49 <ski> tryCreateFile f s = BindTryCreateFile f s (Return ())
17:16:21 <ski> (s/Return/Pure/, i suppose)
17:16:36 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
17:17:42 <ski> but you could also go `newtype Simulator a = MkSimulator ((a -> Action) -> Action)', where `data Action = TryCreateFile String String Action | ...', which is the CPS
17:17:59 <c_wraith> turlando: ah. I think I'd need to see a much more detailed breakdown to really understand. But I can think of a few different directions you could go, like using a sort of Has-pattern for the state, or registering clients with an update function that lets them operate only on portions of the total state. There are a lot of other options available as well, depending on details
17:18:25 <ski> (you could include a `Result r' alternative in `Action r', and do `forall r. (a -> Action r) -> Action r', if you wanted to be able to export a final result)
17:18:46 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
17:19:22 alx741 joins (~alx741@157.100.197.240)
17:20:05 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:21:48 <turlando> c_wraith thank you, but there might be a misunderstanding: I call "clients" what is using the interface, namely just a typeclass as of now. So I'm not sure about the registering thing
17:22:16 turlando is ski is talking to me
17:22:26 <turlando> s/is/is not sure/
17:23:06 × ajb_ quits (~ajb@cupid.whatbox.ca) (Remote host closed the connection)
17:23:35 <ski> turlando : i was in the kronicma1 conversation
17:23:49 ski calls the `/me' police
17:24:22 <turlando> Sorry, the 'Simulator a' caught my attention
17:24:42 <ski> nw. it was in the example kronicma1 linked to
17:25:01 <ski> (also, i'm not sure what you mean by "unschedule events")
17:25:01 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
17:25:45 × ubert1 quits (~Thunderbi@2a02:8109:9880:303c:b499:2e2d:5a8b:934e) (Remote host closed the connection)
17:26:36 <turlando> Just removing an event from the future event list, actually I'm not even sure it has an use case, I'm more interested in the scheduling part
17:26:50 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
17:27:22 <c_wraith> I think you're making things too complicated by thinking of it as something outside of the state
17:27:34 <c_wraith> It is quite literally part of the state
17:28:02 <ski> at least it could be
17:28:30 <turlando> So you suggest to make it part of non-user-defined state, right?
17:28:45 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
17:28:58 <c_wraith> Well, make part of the state user-defined
17:30:04 <c_wraith> But really, this whole thing needs code - at least type signatures. That would make the conversation a lot more useful.
17:30:28 <c_wraith> Maybe you want a data type like Mealy which closes over local state.
17:30:50 <c_wraith> Maybe you want the global state augmented
17:31:20 <c_wraith> There are just too many degrees of freedom in text.
17:31:57 econo joins (uid147250@user/econo)
17:33:51 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
17:33:55 <turlando> I can show you part of the thing. For instance the simulation interface https://github.com/turlando/discrete-event-simulator/blob/master/src/Simulator.hs#L12-L17
17:35:31 bahamas joins (~lucian@84.232.140.52)
17:35:39 <ski> oh, you also had something called `Simulator' there :)
17:35:47 <ski> (er, `Simulation')
17:35:50 <turlando> :)
17:36:01 ec joins (~ec@gateway/tor-sasl/ec)
17:36:06 <turlando> Here is an example "client" https://github.com/turlando/discrete-event-simulator/blob/master/src/Simulator/Example/Server.hs
17:36:30 <turlando> (just simulating a single threaded server, again, confusing naming)
17:37:56 <ski> oh, `CalendarEvent event' is a type synonym
17:38:10 <ski> (or family, i guess ?)
17:38:39 <ski> incorrect `Show' instances detected
17:38:46 <turlando> Yes, consisting of the discrete time instant and the user-defined event. And they're collected into a Calendar type, which is basically a priority list
17:38:51 Vajb joins (~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e)
17:39:09 <turlando> (the calendar is the future event list I mentioned above)
17:39:58 <turlando> So yeah, I'm not sure what's the most idiomatic way to implement adding new events from within the transition function or if it's a good idea at all
17:40:42 <c_wraith> ok, so after reviewing most of the code there - why is Simulation a class at all?
17:41:39 <ski> turlando : do you have multiple instances of `Simulator' ? do you have any operations which are polymorphic over `Simulator' instances ?
17:41:40 alx741 joins (~alx741@157.100.197.240)
17:42:01 <c_wraith> yeah, the same question ski has. :)
17:42:10 <ski> turlando : anyway, please don't abuse `Show' for custom pretty-printing
17:42:17 <turlando> The run function in the Simulator module is polymorphic over Simulation
17:43:03 <c_wraith> But why is it a class?
17:43:15 <turlando> ski sorry, as you can see it's a quick and dirty thing as of now, I want to fix it when I get the Simulator design right, it just use that show to print the result in a eye-scanning-friendly manner
17:43:15 × Vajb quits (~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e) (Ping timeout: 256 seconds)
17:43:25 <ski> could `Simulation' be a record ?
17:44:15 <turlando> Why do you suggest to change it to a record?
17:44:19 <ski> turlando : well, from that response, hopefully you're at least aware that you're not supposed to use `Show' like that (although perhaps not aware of why)
17:44:54 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
17:45:06 <c_wraith> because classes tie behavior to types. You can't change behavior without changing types. With a record of functions, you can change behavior without changing types.
17:45:39 <ski> (or, if you don't really need multiple instances at all, you could directly use the implementation (or maybe use something like Backpack, which would give another way to swap out different implementations, although at compile-time))
17:46:03 <c_wraith> If you keep going in that direction, you eventually end up with a type kind of like Mealy. Or maybe Fold.
17:46:06 <ski> what c_wraith just said can be a pro, as well as a con, depending on what you're after
17:46:24 lavaman joins (~lavaman@98.38.249.169)
17:48:18 <turlando> First of all, thank you a lot for the effort you're putting into this. Secondly, I'm not sure I'm understanding everything. Could you elaborate a bit more the "change behavior without changing types" thing please?
17:48:46 × dust_ quits (~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202) (Quit: Konversation terminated!)
17:50:05 <turlando> The Server's State and Event are supposed to have a single behavior over the simulation, so I thought a class would be a good fit so that I also handling the "running" bits externally, but I think I'm missing the point
17:50:19 <turlando> s/I also/I also can/
17:50:28 <turlando> s/handling/handle/
17:50:35 romesrf joins (~romes@44.190.189.46.rev.vodafone.pt)
17:50:57 × MajorBiscuit quits (~MajorBisc@c-001-029-040.client.tudelft.eduvpn.nl) (Ping timeout: 240 seconds)
17:51:11 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
17:51:24 <romesrf> hello, I'm running quickcheck with tasty but I don't get the falsifiable counter example
17:51:35 <romesrf> *** Failed! Falsified (after 1 test):
17:51:37 <romesrf> Use --quickcheck-replay=805757 to reproduce.
17:52:04 <romesrf> I'm using cabal, how would I run the tests and output the counter example?
17:52:44 <romesrf> I've also seen --quickcheck-verbose mentioned online -- but I don't know where to pass the flags
17:52:46 <sclv> you can run the test executable directly.
17:52:59 <sclv> its under dist-newstyle and the "list-bin" command will find it
17:53:58 × polyphem quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Quit: WeeChat 3.4)
17:54:06 <romesrf> Just did, but unfortunately I still get no counter example
17:54:49 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
17:54:51 <romesrf> the test is Gen Bool, and I'm using Test.Tasty.Quickcheck.testProperty
17:55:38 <sclv> running it directly lets you pass the flags more easily, is why i suggested
17:55:57 ProfSimm joins (~ProfSimm@87.227.196.109)
17:56:09 <romesrf> oh!
17:56:20 <c_wraith> turlando: can you imagine ever wanting to transform an existing Simulation? like say... filterEvents :: (event -> Bool) -> Simulation state event result -> Simulation state event result
17:56:23 <romesrf> thank you :)
17:56:28 <sclv> you can even run it with --help to get a pretty good listing of what the options are
17:56:35 jao joins (~jao@68.235.43.174)
17:56:40 <romesrf> sclv: that did it, ty
17:56:51 <ProfSimm> Why have both do notation and >>
17:57:15 <ski> turlando : if you have `run :: Simulation state event result -> state -> Calendar event -> (result,[Frame state event])', using `data Simulation state event result = MkSimulation {transition :: state -> CalendarEvent event -> state,result :: [Frame state event] -> result}', then you can pass different records of type `Simulation State Event Result' to `run', without having to change to different state,
17:57:21 <ski> event, or result types
17:57:31 <c_wraith> ProfSimm: sometimes it's easier to not have a lot have a lot of nested infix applications
17:57:55 jlamothe joins (~jlamothe@198.251.61.229)
17:58:04 <ski> (whether that would be desirable or not is a different question)
17:58:04 <ProfSimm> c_wraith: if we wrap do {} around >> application and replace >> with ; it's the same source
17:58:14 <c_wraith> ProfSimm: also, do notation adds sugar for more than (>>)
17:58:30 <ProfSimm> Does it
17:58:33 × arcadiancomp quits (~anon626@96-91-245-193-static.hfc.comcastbusiness.net) (Quit: Leaving)
17:59:06 <c_wraith> :t \f mx my -> do { x <- mx ; y <- my ; f x y } -- ProfSimm
17:59:07 <lambdabot> Monad m => (t1 -> t2 -> m b) -> m t1 -> m t2 -> m b
17:59:11 dalek_caan joins (~Thunderbi@109.252.124.86)
17:59:27 <dolio> @undo do { x ; y ; z }
17:59:27 <lambdabot> x >> y >> z
17:59:44 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:59:44 <ski> @undo do { x <- mx ; y <- my ; f x y }
17:59:44 <lambdabot> mx >>= \ x -> my >>= \ y -> f x y
17:59:54 <ProfSimm> Thanks
18:00:06 <c_wraith> ProfSimm: also, that assertion isn't true the instant any of your statements involve infix operators with lower precedence than (>>)
18:00:38 <ski> @undo do {x <- mx; let {y = ey}; Just z <- mz; f x y z}
18:00:39 <lambdabot> mx >>= \ x -> let { y = ey} in mz >>= \ a -> case a of { Just z -> f x y z; _ -> fail ""}
18:01:05 <turlando> c_wraith: no, but I might need to run the simulation with different conditions (e.g. terminate at a given Instant)
18:01:38 <ski> @undo [f x y z | x <- xs,let y = e,Just z <- mzs,p x y z]
18:01:38 <lambdabot> concatMap (\ x -> let { y = e} in concatMap (\ a -> case a of { Just z -> if p x y z then [f x y z] else []; _ -> []}) mzs) xs
18:01:47 <turlando> ski: I'm tryinf to figure out the implications of that
18:01:54 alx741 joins (~alx741@157.100.197.240)
18:02:14 <ski> turlando : well, you lose the "unique-implementation-per-type", and also the ability to have FDs
18:03:35 <turlando> I'm not sure it's a great loss, but from what I imagine, it makes sense to only have a single implementation per (State, Event, Result) triplet. I'm trying to imagine when it might not be the case
18:03:47 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
18:04:26 emf joins (~emf@c-73-97-137-43.hsd1.wa.comcast.net)
18:05:00 × alp quits (~alp@user/alp) (Ping timeout: 240 seconds)
18:05:52 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
18:07:04 <ski> i guess we're still also wondering if you have multiple instances of `Simulation' in mind at all
18:08:32 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
18:09:26 <turlando> ski: yes in the sense that in the same codebase I might implement different simulations and no in the sense that usually you're using a single simulation at any given moment
18:09:33 <turlando> Not sure if it answers the question though
18:10:35 <ski> and you'd want to share code (more than `run') that's polymorphic over that ?
18:11:35 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 256 seconds)
18:14:04 dalek_caan parts (~Thunderbi@109.252.124.86) ()
18:14:33 <turlando> Right now as an example I can definitely think of another function: runUntil that takes an upper bound Instant
18:14:40 × zeenk quits (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
18:15:25 <turlando> (I'm not trying to justify my design choises, I'm trying to understand what is wrong and why)
18:17:59 Akiva joins (~Akiva@user/Akiva)
18:18:51 <ski> well .. i'm not sure there needs to be something wrong with your design. however, newbies to type classes (expecially if they have prior exposure to OO) tend to often misuse (and overuse) them
18:19:24 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
18:19:48 <ski> @where existential-antipattern
18:19:49 <lambdabot> "Haskell Antipattern: Existential Typeclass" by Luke Palmer at <http://lukepalmer.wordpress.com/2010/01/24/haskell-antipattern-existential-typeclass/>
18:20:07 <ski> is somewhat related (though a more advanced example of misuse/overuse)
18:20:18 <ski> (not that there's anything wrong with existentials, per se)
18:21:28 analognoise joins (~analognoi@185.202.221.26)
18:23:21 <turlando> Thank you a lot ski, I will read it now. Do you think that choosing typelcasses over records can have implications on how I can implement the missing feature I was talking about before, namely scheduling new events from within the simulation?
18:24:27 alx741 joins (~alx741@157.100.197.240)
18:24:45 <dolio> Personally, I think that article is over-cited. But I haven't been paying close attention to what's being done in this case.
18:25:43 cfricke joins (~cfricke@user/cfricke)
18:26:56 <ehammarstrom> ski: Regarding the ((g . f) . _) = (g . _) . (f . _) earlier, a haskell program that reduces both of them to the same type (without executing it) isn't that a proof of some equality? Or would I have to explicitly have an "equality"-check in the type level? Here's the paste for reference: https://paste.tomsmeding.com/Fa1LgtV7
18:27:21 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
18:27:57 alx741 joins (~alx741@157.100.197.240)
18:30:41 mikoto-chan joins (~mikoto-ch@213.177.151.239)
18:31:02 deadmarshal joins (~deadmarsh@95.38.119.78)
18:32:04 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
18:32:22 Guest85 joins (~Guest85@134.101.5.46)
18:32:25 × Guest85 quits (~Guest85@134.101.5.46) (Write error: Broken pipe)
18:33:23 Midjak joins (~Midjak@82.66.147.146)
18:34:04 <ski> turlando : the existential thing was mostly an aside. you're not doing anything existential, that i can see
18:34:45 <ski> turlando : it's still unclear to me what you want from this new event scheduling, how you want to structure it
18:35:15 Guest68 joins (~Guest68@134.101.5.46)
18:35:37 × deadmarshal quits (~deadmarsh@95.38.119.78) (Ping timeout: 256 seconds)
18:36:15 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 272 seconds)
18:37:00 alp joins (~alp@user/alp)
18:37:11 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
18:37:25 <ski> ehammarstrom : `False' and `True' have the same type, but are not equal. perhaps you could argue something from free theorems / parametricity, though. however, your `hb' is irrelevant (a misunderstanding)
18:39:10 <turlando> ski: honestly, I have no idea other than what I proposed before (changing the state transition function so that it gets an "environment" (state + future events) and produces an "environment", coupling it with functions to manipulate it to schedule events and updating the state) or changing the state transition function adding another parameter (the calendar) and making it return (newstate, newcalendar)
18:41:48 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
18:42:40 vysn joins (~vysn@user/vysn)
18:43:18 <ski> where do these "future events" come from ?
18:43:22 justsomeguy joins (~justsomeg@user/justsomeguy)
18:44:23 <turlando> ski: either from a user defined list or from a randomly generated one, in both cases they end up in the Calendar type
18:45:30 <ski> but they could also come from transitions on earlier events scheduling more events ?
18:46:11 × nek0 quits (~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat)
18:46:11 deadmarshal joins (~deadmarsh@95.38.119.78)
18:46:12 <ski> do you want the transition for an event to be able to see other (presumably only future ?) events ? change (e.g. remove) them ?
18:46:57 little_mac joins (~little_ma@2601:410:4300:3ce0:283e:efa7:e0c6:e848)
18:47:33 wootehfoot joins (~wootehfoo@user/wootehfoot)
18:48:06 × jao quits (~jao@68.235.43.174) (Remote host closed the connection)
18:48:45 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
18:49:00 jao joins (~jao@68.235.43.174)
18:49:02 alx741 joins (~alx741@157.100.197.240)
18:49:17 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
18:51:35 <turlando> ski: Sorry for not mentioning it in my previous message, I was just referring to the current state of the code. Yes, an event might be depending on another event, and specifically the happening of a certain event might cause the scheduling of another event in the future. E.g. a system detects a failing component and schedules the replacement of it in the future. Regarding your last question: I'm not sure if I want the transition to be able to see future
18:51:35 <turlando> events; it might be handy but I don't have an use case for it right now. Regarding removing events: initially I didn't want to permit it, but since I allow to add new events, it might make sense to allow the removal too
18:51:51 norg[m] joins (~norgmatri@2001:470:69fc:105::1:c809)
18:52:17 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
18:54:51 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
18:57:31 <maerwald> anyone ever used Database.PostgreSQL.Simple.Notification successfully?
18:57:47 <ski> it seems to me it's probably be easier to reason about the event scheduling, if they can't see (or even change/retract) other scheduled events
18:58:02 × euandreh quits (~euandreh@2804:14c:33:9fe5:436f:e6b2:c8c4:a5a1) (Ping timeout: 240 seconds)
18:58:24 <ski> (just because you can add doesn't mean it would have to make sense to remove, imho)
18:58:36 justsomeguy joins (~justsomeg@user/justsomeguy)
18:58:48 ski was reminded of simulators for VHDL
18:59:25 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Ping timeout: 256 seconds)
18:59:27 <turlando> ski: I just noticed another problem: if the scheduling of a dependent event is randomic, as in I might need to sample from a random distribution, the transition function might depend on the Random monad (?), and my signature no longer works
19:00:04 × jespada quits (~jespada@85.255.234.190) (Read error: Connection reset by peer)
19:00:34 dextaa_ joins (~dextaa@user/dextaa)
19:01:31 euandreh joins (~euandreh@2804:14c:33:9fe5:fb55:f4b:9349:d06d)
19:01:35 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
19:06:47 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 256 seconds)
19:06:50 <ski> (i guess i was thinking, "an event might be depending on another event", depending in the sense of another event scheduling it, or in the sense of the transition of the first event depending on whether it can see the other event being scheduled)
19:07:27 <ski> .. so, i'm still not sure what you intend by "dependent event"
19:07:41 polyphem joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
19:08:28 Erutuon joins (~Erutuon@user/erutuon)
19:09:03 alx741 joins (~alx741@157.100.197.240)
19:09:29 nek0 joins (~nek0@nek0.eu)
19:11:10 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
19:15:05 × Ranhir quits (~Ranhir@157.97.53.139) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
19:16:04 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
19:16:09 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
19:17:30 vicfred joins (~vicfred@user/vicfred)
19:18:34 Codaraxis joins (~Codaraxis@user/codaraxis)
19:20:39 pokhu parts (~rishi@103.206.114.112) ()
19:21:48 × deadmarshal quits (~deadmarsh@95.38.119.78) (Ping timeout: 240 seconds)
19:24:38 bahamas joins (~lucian@84.232.140.52)
19:27:44 <turlando> As you said ski: "depending in the sense of another event scheduling it"
19:28:00 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
19:29:02 coot joins (~coot@213.134.190.95)
19:29:27 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 272 seconds)
19:29:48 <Zemyla> turlando: Can you use the IO monad and a RandomGen IOVar?
19:31:22 <turlando> Zemyla why an IOVar?
19:34:27 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
19:34:32 alx741 joins (~alx741@181.199.42.143)
19:34:42 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
19:35:26 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
19:35:26 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
19:35:26 wroathe joins (~wroathe@user/wroathe)
19:40:18 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
19:41:11 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
19:42:51 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 245 seconds)
19:45:14 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
19:46:27 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
19:46:31 Lord_of_Life_ is now known as Lord_of_Life
19:47:42 × fendor_ quits (~fendor@178.165.167.221.wireless.dyn.drei.com) (Remote host closed the connection)
19:50:14 × jm_jj quits (~jmjj@mobile-user-c3a5cc-243.dhcp.inet.fi) (Quit: Leaving)
19:53:56 Null_A joins (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
19:56:05 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 256 seconds)
19:56:37 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
19:57:59 alx741 joins (~alx741@157.100.197.240)
20:01:01 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
20:03:24 justsomeguy joins (~justsomeg@user/justsomeguy)
20:04:07 <ProfSimm> Isn't it a flaw to allow a Map to be converted toList, when it's not a list
20:04:24 <ProfSimm> Makes all types kinda blurry in terms of semantics
20:04:27 <dolio> Why?
20:04:30 bahamas joins (~lucian@84.232.140.52)
20:04:42 <ProfSimm> dolio: well what's the order of items in a map
20:05:06 <dolio> For Data.Map, it's the ordering on the keys.
20:05:26 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
20:05:33 × juhp quits (~juhp@128.106.188.82) (Ping timeout: 272 seconds)
20:05:51 <ProfSimm> dolio: what is that ordering
20:05:55 <monochrom> Is it also a flaw to convert Maybe to list?
20:06:15 <ProfSimm> monochrom: well it is a list
20:06:18 <dolio> It's what's defined in the Ord type class that most Data.Map functions depend on.
20:07:13 juhp joins (~juhp@128.106.188.82)
20:07:35 <byorgey> ProfSimm: Data.Map is an ordered map, just like e.g. TreeMap in Java, if you're familiar with that
20:07:42 geekosaur joins (~geekosaur@xmonad/geekosaur)
20:08:05 <ProfSimm> So what is an unordered map
20:08:28 <ProfSimm> I mean OMap is ordered, I thought.
20:08:31 <ProfSimm> Data.Map.Ordered
20:08:35 <byorgey> I would have some sympathy for the argument that you should not be able to convert e.g. a HashMap to a list, though in practice I think it is fine as long as the documentation says "you cannot rely on the order of the elements in the resulting list"
20:09:03 <ProfSimm> byorgey: "you should not rely on [feature that exists]" famous last words :P
20:09:11 <byorgey> ProfSimm: I know =)
20:09:21 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 272 seconds)
20:09:23 <byorgey> I hadn't heard of Data.Map.Ordered before, but it looks like it's keeping track of the order *in which things were inserted*
20:09:35 <ProfSimm> byorgey: yes, well it's some order I guess
20:09:40 <monochrom> I haven't seen anyone relying on HashMap's toList order.
20:09:50 <ProfSimm> monochrom: it's not always intentional
20:10:24 <ProfSimm> monochrom: imagine you map the keys to something that creates duplicates and you overwrite on name collision. So now you accidentally depend on the order of toList
20:10:25 <monochrom> No, I haven't seen anyone doing that accidentally either.
20:10:37 <ProfSimm> Well I just provided an example
20:11:07 <ProfSimm> monochrom: in JS, object iteration had no specific order.
20:11:21 <ProfSimm> monochrom: no one therefore relied on it and all was fine.
20:11:40 <ProfSimm> monochrom: Just kidding, it caused bunch of hard to debug issues in bunch of software, so the spec was updated to maintain specific order
20:12:09 <monochrom> I'm talking about the Haskell community, not the JS community.
20:12:39 yauhsien_ joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
20:12:56 <dolio> What does the example even mean?
20:12:58 <ProfSimm> Sure, but let's not pretend Haskellers are some kind of infallible beings who at every step of their program think "wait, this came from a map like 10 000 lines ago, so I must ensure this code is order invariant"
20:13:10 <maerwald> people rely on bugs. All the time
20:13:21 <ProfSimm> Also.
20:13:37 <maerwald> Software doesn't easily allow to distinguish bugs and features
20:13:40 <ProfSimm> monochrom: if there was no specific order in toList, it'd mean it's not deterministic
20:13:51 <ProfSimm> maerwald: absolutely
20:14:03 <polyphem> is Maps toList a natural transformation as a mapping between Functors Map k v -> [(k,v)] ? It also not only transforms the Functor (Map v) to [] but also the contents v to (k,v) ?
20:14:19 <maerwald> and in Haskell we have this odd notion of API that relates mainly to *types* and not *behavior* (or even *laws*)
20:14:52 <maerwald> so your bugfix is PVP compliant, but you still cause a backend on the other end of the world to crash
20:16:30 x88x88x joins (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb)
20:17:07 <geekosaur> https://xkcd.com/1172/
20:18:14 alx741 joins (~alx741@157.100.197.240)
20:19:06 × Null_A quits (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 250 seconds)
20:19:08 <byorgey> polyphem: Data.Map.toList is a natural transformation from Map k -> ([] . (k,)), yes (I know '.' is not actually legal syntax for composition of type constructors)
20:19:20 <byorgey> polyphem: I don't know what your second question means though
20:19:32 kenran joins (~kenran@200116b82b49e8006646f20137f4ed5b.dip.versatel-1u1.de)
20:20:51 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:21:41 <monochrom> I think the second question is answered by "Map k -> ([] . (k,))" too.
20:21:42 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
20:22:37 <polyphem> byorgey: ok , nvm , i was wondering if its still a natural composition if it also modifies the type inside the functor , but you restated it as : Compose [] (k,)
20:23:10 <polyphem> s/natural composition/natural transformation/
20:25:52 <monochrom> BTW I had been procrastinating learning horizontal composition of two natural transformations until a few days ago. I had not felt like I needed to know.
20:26:42 <monochrom> Then a few days ago I was learning monad morphisms. Naturally, a natural transformation that furthermore "preserves return" and "preserves join".
20:27:14 × coot quits (~coot@213.134.190.95) (Quit: coot)
20:27:35 <monochrom> I finally realized that just to state "preserves join" I need the horizontal composition of join and join. :)
20:27:45 <byorgey> =D
20:29:19 <polyphem> monochrom: the tongue keeps playing where the tooth hurts :)
20:29:43 <ski> @type \fk fv -> M.mapKeysMonotonic fk . M.map fv
20:29:44 <lambdabot> (k1 -> k2) -> (a1 -> a2) -> M.Map k1 a1 -> M.Map k2 a2
20:29:48 × yauhsien_ quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
20:29:48 <ski> @type \fk fv -> M.mapKeysWith (<>) fk . M.map fv
20:29:50 <lambdabot> (Ord k2, Semigroup a1) => (k1 -> k2) -> (a2 -> a1) -> M.Map k1 a2 -> M.Map k2 a1
20:29:53 <ski> @type \ks fk fv m -> M.fromList [(k,fv v) | k <- ks,Just v <- [m M.!? (fk k)]]
20:29:54 <lambdabot> (Ord k1, Ord k2) => [k1] -> (k1 -> k2) -> (t -> a) -> M.Map k2 t -> M.Map k1 a
20:30:02 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Ping timeout: 240 seconds)
20:30:17 Tuplanolla joins (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
20:30:41 <polyphem> ski: barely not flooding :)
20:30:47 Pickchea joins (~private@user/pickchea)
20:31:01 ski glances around nervously
20:31:50 ski still can never recall which is the horizontal and which is the vertical one
20:32:13 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
20:33:32 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
20:34:11 Null_A joins (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
20:35:19 <monochrom> Heh a lot of "left, right", "horizontal, vertical" namings in category theory were very accidental and arbitrary.
20:35:54 <monochrom> Comparing to particle physics. The "top" quark is much heavier than the "bottom" quark. Ah, no wonder why they are so unstable. >:)
20:36:03 <monochrom> s/Comparing/Comparable/
20:36:49 <ski> ok, "vertical composition" is "composition", and "horizontal composition" is "lifted composition" (i'm sure i'll quickly forget this again)
20:36:49 × kuribas quits (~user@ptr-25vy0iagvdrvz4nz7gs.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
20:37:04 <ski> (yea, i don't like the "left adjoint","right adjoint" naming, either)
20:37:55 <byorgey> I just remember the picture with two parallel morphisms going from left to right, and a natural transformation as an arrow going from the top morphism to the bottom. Then vertical and horizontal composition correspond to putting those cells next to each other vertically or horizontally.
20:38:05 <byorgey> Of course that's yet another thing to remember, but somehow I find it easier
20:38:22 <monochrom> Left adjoint is at least mnemonicable by "Hom(F x, y)" ooohhh F is on the left.
20:38:29 alx741 joins (~alx741@157.100.197.240)
20:38:37 <monochrom> Now, left and right Kan extensions, I still haven't figured out how.
20:38:58 <ski> except if you get into the habit of writing `A <---< F B'
20:39:11 <monochrom> Yikes haha.
20:39:17 <ski> (i do that, fairly often)
20:39:27 × gdd quits (~gdd@129.199.146.230) (Quit: WeeChat 3.3)
20:39:42 <monochrom> How would you like "source adjoint" and "target adjoint"?
20:39:58 <ski> might work
20:40:21 <ski> (i'm already using "pre-inverse" and "post-inverse", rather that "left-inverse" and "right-inverse")
20:40:24 <polyphem> ski: isn't your third function Profunctor dimap
20:40:35 <ski> polyphem : something like that
20:40:50 spacenautx joins (~spacenaut@user/spacenautx)
20:41:10 <ski> polyphem : my lambdabot queries were basically questions "do you want co- or contra- variance in the keys ? are the key types ordered ? are the value types semigroups ?"
20:41:17 × Null_A quits (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
20:41:26 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
20:42:11 × Batzy quits (~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
20:42:35 Batzy joins (~quassel@user/batzy)
20:42:36 × ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:8793:de70:3992:9c12) (Ping timeout: 240 seconds)
20:42:58 <ski> ("are the key types ordered ?" implicitly suggests "are the key mappings order morphisms ?")
20:43:01 romesrf joins (~romes@44.190.189.46.rev.vodafone.pt)
20:47:03 <ProfSimm> Can I make a map which is NOT iterable by design
20:47:40 gdd joins (~gdd@129.199.146.230)
20:47:51 <monochrom> Sure.
20:48:00 <ski> monochrom : right Kan extension is `G . F >---> H' iff `G >---> H <- F' (or `H / F'). left Kan extension is `H >---> G . F' iff `H /| F >---> G'. so, they're right and left adjoints of `(. F)' (precomposition)
20:49:23 <monochrom> Ah, yeah, I need to spend more time on that connection.
20:49:40 <ski> (or with more traditional notation, `Ran_F H' resp. `Lan_F H')
20:49:41 pavonia joins (~user@user/siracusa)
20:53:03 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 272 seconds)
20:55:00 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 252 seconds)
20:57:20 <ski> given `phi :: forall a. G (F a) -> H a', we (via CoYoneda) get `stage phi :: forall b. G b -> Ran F H b', where `Ran F H b' is `forall a. (b -> F a) -> H a'
20:58:07 <ski> similarly, given `psi :: forall a. H a -> G (F a)', we (via Yoneda) get `costage psi :: forall b. Lan F H b -> G b', where `Lan F H b' is `exists a. (H a,F a -> b)'
20:58:30 alx741 joins (~alx741@181.199.42.143)
21:00:47 × Ariakenom_ quits (~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: Leaving)
21:02:16 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
21:02:19 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
21:02:46 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
21:02:59 alx741 joins (~alx741@181.199.42.143)
21:04:07 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
21:04:50 Flonk8 joins (~Flonk@vps-zap441517-1.zap-srv.com)
21:06:20 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
21:06:21 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 272 seconds)
21:06:21 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Ping timeout: 256 seconds)
21:06:57 Maxdamantus joins (~Maxdamant@user/maxdamantus)
21:07:14 vorpuni joins (~pvorp@2001:861:3881:c690:d322:f659:136d:eef6)
21:07:27 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
21:07:29 Flonk8 is now known as Flonk
21:10:51 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
21:12:53 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
21:13:09 <EvanR> ProfSimm, I assume by design means implementation rather than interface. Since you can present whatever interface to your ADT
21:13:09 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
21:13:45 <EvanR> to construct something intentionally omitting a feature seems unusual though xD
21:19:24 acidjnk joins (~acidjnk@p200300d0c71f74276499fb418a282b02.dip0.t-ipconnect.de)
21:20:49 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
21:23:19 alx741 joins (~alx741@157.100.197.240)
21:24:24 × natechan quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
21:24:25 v0rpun1 joins (~pvorp@2001:861:3881:c690:f6b3:6910:f82d:9617)
21:25:24 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
21:26:06 Slerba joins (~Slerba@85-76-49-165-nat.elisa-mobile.fi)
21:26:08 jgeerds joins (~jgeerds@55d4b9df.access.ecotel.net)
21:26:12 natechan joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
21:26:25 Slerba parts (~Slerba@85-76-49-165-nat.elisa-mobile.fi) ()
21:26:28 × Batzy quits (~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
21:26:30 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
21:26:30 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
21:26:30 wroathe joins (~wroathe@user/wroathe)
21:27:35 Batzy joins (~quassel@user/batzy)
21:27:45 × lottaquestions_ quits (~nick@2607:fa49:5041:a200:11a4:6cdd:1796:d5ed) (Quit: Konversation terminated!)
21:28:02 lottaquestions_ joins (~nick@2607:fa49:5041:a200:77ff:49ec:2b9c:10c4)
21:29:02 ajb joins (~ajb@cupid.whatbox.ca)
21:29:35 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
21:29:48 × alp quits (~alp@user/alp) (Ping timeout: 240 seconds)
21:30:54 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
21:35:49 × benin quits (~benin@59.92.239.104) (Quit: Ping timeout (120 seconds))
21:35:50 <freeman42x[m]> any good solution for `data X = A { x :: Int } | B { x :: Int, y :: Char }` and running `y (A 3)` compiling but throwing at runtime? I was told to avoid using records at all and write manual lenses for them but that seems a bad compromise
21:36:09 benin joins (~benin@59.92.239.104)
21:40:08 zeenk joins (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
21:40:57 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
21:46:47 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
21:46:47 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
21:46:47 wroathe joins (~wroathe@user/wroathe)
21:46:52 × merijn quits (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
21:47:59 <dolio> Can't the appropriate optics be generated? Lens for x, traversal for y.
21:48:48 alx741 joins (~alx741@157.100.197.240)
21:49:48 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
21:50:58 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
21:53:20 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
21:55:07 <ski> newtype Map k v = MkMap (k -> Maybe v) -- not iterable
21:55:45 <ski> (cue covariant vs. contravariant powerset functor)
21:57:39 × Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Ping timeout: 250 seconds)
21:58:12 × jstolarek quits (~jstolarek@staticline-31-183-182-85.toya.net.pl) (Ping timeout: 256 seconds)
21:58:26 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:00:11 × jgeerds quits (~jgeerds@55d4b9df.access.ecotel.net) (Remote host closed the connection)
22:00:49 lavaman joins (~lavaman@98.38.249.169)
22:04:10 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:04:51 machinedgod joins (~machinedg@24.105.81.50)
22:05:51 × Megant quits (megant@user/megant) (Ping timeout: 256 seconds)
22:07:17 Megant joins (megant@user/megant)
22:07:54 <freeman42x[m]> <dolio> "Can't the appropriate optics..." <- to generate them you need to keep the records, doesn't it? and keeping the records allows others to misuse them in the way mentioned
22:08:15 jgeerds joins (~jgeerds@55d4b9df.access.ecotel.net)
22:09:58 alx741 joins (~alx741@157.100.197.240)
22:10:17 × kenran quits (~kenran@200116b82b49e8006646f20137f4ed5b.dip.versatel-1u1.de) (Quit: WeeChat info:version)
22:13:32 <dolio> Turn off the field accessors and use the optics.
22:13:55 alp joins (~alp@user/alp)
22:14:17 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
22:16:02 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
22:18:58 jespada joins (~jespada@85.255.234.190)
22:19:34 <freeman42x[m]> <dolio> "Turn off the field accessors and..." <- how do you achieve that?
22:21:52 <dolio> NoFieldSelectors language setting, I think.
22:23:25 cynomys joins (~cynomys@user/cynomys)
22:26:08 Guest|86 joins (~Guest|86@136.228.217.112)
22:26:41 × Guest|86 quits (~Guest|86@136.228.217.112) (Client Quit)
22:28:32 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:30:52 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
22:31:57 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
22:32:29 alx741 joins (~alx741@157.100.197.240)
22:33:20 × komikat quits (~komikat@183.82.154.239) (Remote host closed the connection)
22:34:01 komikat joins (~komikat@183.82.154.239)
22:35:01 × spacenautx quits (~spacenaut@user/spacenautx) (Ping timeout: 272 seconds)
22:36:35 spacenautx joins (~spacenaut@user/spacenautx)
22:36:46 Katarushisu joins (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
22:37:50 × v0rpun1 quits (~pvorp@2001:861:3881:c690:f6b3:6910:f82d:9617) (Remote host closed the connection)
22:38:17 <gentauro> how can I refactor this? `((\foo -> concat <$> foo) . mergeValues . concat)`. The `foo` part …
22:38:23 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
22:38:46 <dolio> fmap concat . mergeValues . concat
22:38:56 <ski> dang, beat me to it :)
22:39:14 <monochrom> I was dense and thought of section syntax only.
22:39:43 <ski> gentauro> :t mergeValues
22:40:02 <gentauro> dolio: thx
22:40:18 × cynomys quits (~cynomys@user/cynomys) (Quit: Lost terminal)
22:40:43 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
22:41:07 cynomys joins (~cynomys@user/cynomys)
22:41:38 alt-romes joins (~romes@44.190.189.46.rev.vodafone.pt)
22:42:37 × komikat quits (~komikat@183.82.154.239) (Ping timeout: 272 seconds)
22:42:38 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Remote host closed the connection)
22:42:41 × spacenautx quits (~spacenaut@user/spacenautx) (Ping timeout: 256 seconds)
22:44:06 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Ping timeout: 256 seconds)
22:44:28 spacenautx joins (~spacenaut@user/spacenautx)
22:44:36 × dextaa_ quits (~dextaa@user/dextaa) (Remote host closed the connection)
22:45:03 × spacenautx quits (~spacenaut@user/spacenautx) (Max SendQ exceeded)
22:45:16 <freeman42x[m]> <dolio> "NoFieldSelectors language..." <- that extension seems to have been merged but in the proposal it says: "Enabling this extension will beak Template Haskell which assumes the presence of a field selector." won't that prevent generating lenses via TH?
22:45:43 <dolio> Dunno.
22:47:29 <dolio> In the past, when you generate lenses, the field names would be like `_field`. And then the fact that someone might be able to write something that throws an exception by using the weird field accessors isn't really worth worrying about.
22:47:42 <dvdrw> it sounds like it'll lift your code into undefined behaviour :)
22:47:45 komikat joins (~komikat@183.82.154.239)
22:48:00 <gentauro> ski: I will soon release the code as "open source" so you will have plenty of time to "review it" (which will be very much appreciated)
22:48:03 <gentauro> :)
22:48:10 <geekosaur> doesn't that extension go along with others that mroe or less replace generating accessors via TH?
22:48:19 × jespada quits (~jespada@85.255.234.190) (Read error: Connection reset by peer)
22:48:20 × rtsn quits (~nstr@user/rtsn) (Quit: Lost terminal)
22:49:10 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Read error: Connection reset by peer)
22:49:13 <ski> gentauro : just wondering if one or both of those `concat's could be elided
22:49:14 bontaq` joins (~user@ool-45779fe5.dyn.optonline.net)
22:50:54 spacenautx joins (~spacenaut@user/spacenautx)
22:53:18 <gentauro> ski: the complete line is: `fmap concat . mergeValues . concat <$> mapM (mapConcurrently aux) (chunksOf chk mids)`. I was guessing that I perhaps could use some `concatMap`?
22:58:08 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
22:58:36 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
22:59:07 alx741 joins (~alx741@157.100.197.240)
22:59:29 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
22:59:51 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
23:00:21 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
23:02:53 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
23:03:23 <ski> well, there is some
23:03:25 <ski> @hoogle concatMapM
23:03:26 <lambdabot> Data.Vector.Fusion.Bundle.Monadic concatMapM :: Monad m => (a -> m (Bundle m v b)) -> Bundle m v a -> Bundle m v b
23:03:26 <lambdabot> Data.Vector.Fusion.Stream.Monadic concatMapM :: Monad m => (a -> m (Stream m b)) -> Stream m a -> Stream m b
23:03:26 <lambdabot> Data.Conduit.Combinators concatMapM :: (Monad m, MonoFoldable mono) => (a -> m mono) -> ConduitT a (Element mono) m ()
23:03:31 <ski> @hoogle+
23:03:31 <lambdabot> Data.Conduit.List concatMapM :: Monad m => (a -> m [b]) -> ConduitT a b m ()
23:03:32 <lambdabot> Control.Monad.Extra concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b]
23:03:32 <lambdabot> Extra concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b]
23:03:46 <ski> (apparently also `GHC.Utils.Monad')
23:04:30 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
23:06:01 <ski> (and apparently the one in `Control.Monad.Extra' is not simply `(liftM concat .) . mapM', but is a `foldr' that checks if the current list (to prepend) is empty, avoiding the `liftM' in that case)
23:06:17 <ski> but i was wondering if you could fuse the other `concat' with `mergeValues', possibly
23:14:45 yauhsien_ joins (~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
23:15:07 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:16:49 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
23:17:34 Null_A joins (~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
23:17:42 dons joins (~dons@user/dons)
23:19:14 × yauhsien_ quits (~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
23:20:44 alx741 joins (~alx741@181.199.42.143)
23:27:28 × alx741 quits (~alx741@181.199.42.143) (Read error: Connection reset by peer)
23:28:13 alx741 joins (~alx741@157.100.197.240)
23:28:16 × acidjnk quits (~acidjnk@p200300d0c71f74276499fb418a282b02.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
23:30:41 <dons> moin moin
23:30:51 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
23:31:10 <Zemyla> I wish IntSet had a complement command.
23:33:02 <byorgey> hey dons
23:33:18 <dsal> Zemyla: You want a set of all integers?
23:33:25 <byorgey> Zemyla: you mean e.g. if it stored a Bool saying whether it was complemented or not?
23:33:42 <byorgey> I assume you would not want to literally store an IntSet of all Int values not in the original set
23:33:46 <Zemyla> No, I was thinking about storing the members of the set as a list of intervals.
23:34:03 <byorgey> Oh, a list of intervals, I see
23:34:46 <byorgey> That would be nifty. Getting the details right re: union, intersection, etc. would be the tricky part I assume. But you should write it. =)
23:35:46 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)
23:35:46 × Null_A quits (~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 245 seconds)
23:36:31 × cynomys quits (~cynomys@user/cynomys) (Ping timeout: 256 seconds)
23:37:09 <Zemyla> Also, I should make Text.Parser.Permutation.Permutation an Applicative.
23:38:57 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Remote host closed the connection)
23:39:00 × Tuplanolla quits (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Ping timeout: 240 seconds)
23:39:42 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:42:20 × juhp quits (~juhp@128.106.188.82) (Quit: juhp)
23:42:34 juhp joins (~juhp@128.106.188.82)
23:43:01 merijn joins (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
23:43:51 × spacenautx quits (~spacenaut@user/spacenautx) (Quit: WeeChat 3.4)
23:44:22 × jgeerds quits (~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 260 seconds)
23:45:36 jgeerds joins (~jgeerds@d53600c5.access.ecotel.net)
23:47:51 × alt-romes quits (~romes@44.190.189.46.rev.vodafone.pt) (Ping timeout: 256 seconds)
23:48:42 alt-romes joins (~romes@44.190.189.46.rev.vodafone.pt)
23:49:20 × cosimone quits (~user@93-34-132-33.ip49.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1))
23:53:16 × alMalsamo quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
23:53:44 alx741 joins (~alx741@157.100.197.240)
23:57:26 × zeenk quits (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
23:58:17 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 240 seconds)
23:58:38 × alx741 quits (~alx741@157.100.197.240) (Read error: Connection reset by peer)

All times are in UTC on 2022-02-22.