2022/02/22

2022-02-22 00:00:02 +0100 <dvdrw> is GHC2021 the delayed Haskell2020?
2022-02-22 00:00:36 +0100 <dvdrw> or was a new report never in the works, but a set of extensions (to Haskell98?) first, and then whatever comes of it
2022-02-22 00:00:50 +0100 <geekosaur> sort of. the standards process is stuck anmd has been for years, so ghc is kinda taking over and proposing its own.
2022-02-22 00:01:37 +0100jespada(~jespada@148.252.132.52)
2022-02-22 00:01:48 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-02-22 00:02:05 +0100 <dvdrw> oic
2022-02-22 00:03:07 +0100 <geekosaur> and part of why the standards process is stuck is nobody wants to formally document things like the exact behavior of type families
2022-02-22 00:03:39 +0100 <geekosaur> r going on between the type families camp and the functional dependencies camp
2022-02-22 00:03:57 +0100 <geekosaur> which means MultiParamTypeClasses can't be standardized because it needs one or the other
2022-02-22 00:04:16 +0100 <dvdrw> I can imagine, I think I heard someone from the committee once say Haskell2010 was a nightmare to formalise
2022-02-22 00:04:41 +0100 <dvdrw> C++ can probably afford it with the manpower they can acquire
2022-02-22 00:04:55 +0100 <dolio> I think I once saw someone say that FlexibleContexts were bad, but I don't recall the reason being very compelling.
2022-02-22 00:05:16 +0100 <Zemyla> Even C++ couldn't get concepts in.
2022-02-22 00:06:26 +0100 <dvdrw> Zemyla: C++ has been trying to get concepts ever since templates and C++11
2022-02-22 00:07:06 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
2022-02-22 00:08:04 +0100jespada(~jespada@148.252.132.52) (Read error: Connection reset by peer)
2022-02-22 00:08:36 +0100Ariakenom_(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: Leaving)
2022-02-22 00:09:45 +0100alx741(~alx741@157.100.197.240)
2022-02-22 00:09:49 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net)
2022-02-22 00:11:29 +0100 <geekosaur> hm, whoops, that line earlier got mangled
2022-02-22 00:11:30 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 00:11:41 +0100 <geekosaur> "andthen there's the tug of war…"
2022-02-22 00:13:50 +0100 <janus> dvdrw: don't they have concepts in C++20? or do they not qualify because features have been cut?
2022-02-22 00:14:53 +0100 <dvdrw> janus: They've implemented concepts in C++20, but it's a smaller featureset than the people pushing it wanted. It's basically syntactic sugar (and slightly better errors) for what was possible with C++17 templates
2022-02-22 00:15:14 +0100 <dvdrw> I couldn't list the limitations off the top of my head, but they're a bit lackluster
2022-02-22 00:15:38 +0100 <dvdrw> Also, last time I checked, GCC didn't check concept constraints on template variables lol
2022-02-22 00:17:01 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 00:18:10 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
2022-02-22 00:20:03 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 00:20:42 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 250 seconds)
2022-02-22 00:21:17 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-02-22 00:27:49 +0100alx741(~alx741@157.100.197.240)
2022-02-22 00:28:06 +0100ChanServ+o litharge
2022-02-22 00:28:07 +0100litharge-bo *!*@98.38.249.169 litharge
2022-02-22 00:29:05 +0100 <zzz> what happened to data Scientific?
2022-02-22 00:29:25 +0100 <dsal> What do you mean?
2022-02-22 00:30:18 +0100 <zzz> nevermind, I misunderstood something I just read
2022-02-22 00:30:35 +0100 <dsal> Science can be confusing.
2022-02-22 00:30:44 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 252 seconds)
2022-02-22 00:33:53 +0100cosimone(~user@93-34-132-33.ip49.fastwebnet.it) (Ping timeout: 250 seconds)
2022-02-22 00:34:43 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 00:34:54 +0100acidjnk(~acidjnk@p200300d0c7363f76650908051e62c7e6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-02-22 00:34:57 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 00:35:18 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-02-22 00:35:18 +0100alx741(~alx741@157.100.197.240)
2022-02-22 00:38:47 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 00:44:31 +0100spacenautx(~spacenaut@user/spacenautx) (Quit: WeeChat 3.4)
2022-02-22 00:45:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Remote host closed the connection)
2022-02-22 00:45:17 +0100spacenautx(~spacenaut@user/spacenautx)
2022-02-22 00:50:01 +0100spacenautx(~spacenaut@user/spacenautx) (Client Quit)
2022-02-22 00:50:57 +0100 <zzz> "It does not matter how slowly you go so long as you do not stop."
2022-02-22 00:52:58 +0100spacenautx(~spacenaut@user/spacenautx)
2022-02-22 00:53:59 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-02-22 00:56:56 +0100alx741(~alx741@181.199.42.143)
2022-02-22 01:00:55 +0100sonny(~sonny@bras-base-london1483w-grc-30-74-12-157-79.dsl.bell.ca) (Quit: Going offline, see ya! (www.adiirc.com))
2022-02-22 01:00:59 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-22 01:01:20 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 01:03:03 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-22 01:03:19 +0100spacenautx(~spacenaut@user/spacenautx) (Quit: WeeChat 3.4)
2022-02-22 01:07:40 +0100yrlnry(~mjd@pool-74-109-20-19.phlapa.fios.verizon.net)
2022-02-22 01:18:20 +0100alx741(~alx741@181.199.42.143)
2022-02-22 01:19:56 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 01:23:05 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-22 01:23:07 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 01:23:49 +0100alx741(~alx741@181.199.42.143)
2022-02-22 01:24:17 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 01:30:42 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
2022-02-22 01:31:15 +0100jlamothe(~jlamothe@198.251.61.229) (Ping timeout: 252 seconds)
2022-02-22 01:32:48 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 01:34:20 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-22 01:34:20 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-22 01:34:20 +0100wroathe(~wroathe@user/wroathe)
2022-02-22 01:36:57 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-22 01:39:43 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-22 01:42:23 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
2022-02-22 01:45:49 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-22 01:45:57 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 01:46:42 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-22 01:50:11 +0100alx741(~alx741@181.199.42.143)
2022-02-22 01:51:15 +0100mason0(~bc8147f2@cerf.good1.com)
2022-02-22 01:51:59 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-22 01:52:15 +0100emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net)
2022-02-22 01:53:28 +0100mvk(~mvk@2607:fea8:5cdc:bf00::99e7)
2022-02-22 01:53:50 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 01:54:57 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-22 01:55:00 +0100emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit)
2022-02-22 01:55:00 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
2022-02-22 01:55:16 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-22 01:56:36 +0100mason0(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Ping timeout))
2022-02-22 01:59:17 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
2022-02-22 02:01:10 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-22 02:02:31 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 02:04:29 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 02:06:14 +0100andreas303(andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
2022-02-22 02:06:46 +0100andreas303(andreas303@ip227.orange.bnc4free.com)
2022-02-22 02:07:34 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-22 02:07:45 +0100 <chronon> Wow, from a quick glance through the scrollback I can see this is where the clever people hang out. My brain melted.
2022-02-22 02:10:43 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-22 02:13:17 +0100dvdrw(~dvdrw@user/dvdrw) (Ping timeout: 240 seconds)
2022-02-22 02:13:56 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 02:16:12 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-02-22 02:16:38 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 02:16:49 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-22 02:21:35 +0100alx741(~alx741@157.100.197.240)
2022-02-22 02:21:57 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-22 02:25:51 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 02:26:18 +0100ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-02-22 02:29:09 +0100acidsys(~LSD@2a03:4000:55:d20::3) (Excess Flood)
2022-02-22 02:31:57 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 02:33:17 +0100mason0(~bc8147f2@cerf.good1.com)
2022-02-22 02:37:08 +0100acidsys(~LSD@2a03:4000:55:d20::3)
2022-02-22 02:37:58 +0100 <pavonia> One of our mottos is: Haskell – the c stands for "clever"
2022-02-22 02:40:16 +0100cjb(~cjb@user/cjb) (Ping timeout: 260 seconds)
2022-02-22 02:41:39 +0100joo-_(~joo-_@fsf/member/joo--) (Ping timeout: 272 seconds)
2022-02-22 02:43:17 +0100joo-_(~joo-_@80-62-116-157-mobile.dk.customer.tdc.net)
2022-02-22 02:43:18 +0100joo-_(~joo-_@80-62-116-157-mobile.dk.customer.tdc.net) (Changing host)
2022-02-22 02:43:18 +0100joo-_(~joo-_@fsf/member/joo--)
2022-02-22 02:44:07 +0100alx741(~alx741@157.100.197.240)
2022-02-22 02:45:19 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 02:46:40 +0100BrokenClutch(~pioneer@2804:d41:c291:0:6129:66a9:49aa:83e7)
2022-02-22 02:46:58 +0100 <BrokenClutch> Yeaay, three months doing haskell \o/
2022-02-22 02:48:40 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 02:54:51 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 02:59:37 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
2022-02-22 03:02:36 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 03:04:14 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-22 03:04:25 +0100vysn(~vysn@user/vysn)
2022-02-22 03:06:20 +0100 <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
2022-02-22 03:06:39 +0100alx741(~alx741@157.100.197.240)
2022-02-22 03:07:09 +0100 <BrokenClutch> :FernandoChu Type constructors?
2022-02-22 03:07:09 +0100 <ski> what about `Either Int' ?
2022-02-22 03:07:41 +0100 <ski> (or `Either e', if you prefer)
2022-02-22 03:07:49 +0100 <FernandoChu[m]> ski: isn't that a concrete type?
2022-02-22 03:08:12 +0100 <FernandoChu[m]> yeah Either e would be one of those things I'm looking to name
2022-02-22 03:08:16 +0100 <FernandoChu[m]> oh wait no
2022-02-22 03:08:17 +0100ridcully_(~ridcully@p508acc81.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-02-22 03:08:31 +0100 <FernandoChu[m]> it's a partiall applied "thing idk it's name"
2022-02-22 03:08:39 +0100 <FernandoChu[m]> s/partiall/partially/
2022-02-22 03:08:46 +0100 <ski> i tend to call type expressions, having kind `*' (or `Type', if you prefer), "concrete types"
2022-02-22 03:09:16 +0100 <FernandoChu[m]> me too, my earlier comment was a mistake
2022-02-22 03:09:16 +0100lavaman(~lavaman@98.38.249.169) (Read error: Connection reset by peer)
2022-02-22 03:09:36 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 03:09:58 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 03:11:35 +0100 <FernandoChu[m]> my question arises because this is what FlexibleContent/Instances seems to apply and I was writing my notes
2022-02-22 03:12:01 +0100 <FernandoChu[m]> the wiki calls them "arbitrary types" https://gitlab.haskell.org/haskell/prime/-/wikis/FlexibleContexts
2022-02-22 03:12:25 +0100 <FernandoChu[m]> which I'm not sure I like
2022-02-22 03:12:40 +0100 <ski> i think "arbitrary" there just means "no restriction"
2022-02-22 03:13:14 +0100 <ski> (or, maybe just with some few specific restrictions)
2022-02-22 03:13:25 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-22 03:14:41 +0100 <FernandoChu[m]> so many technical terms I forgot about the natural language interpretation haha
2022-02-22 03:14:46 +0100 <FernandoChu[m]> yeah that seems to be the case
2022-02-22 03:15:02 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-22 03:16:07 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 03:17:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-22 03:18:47 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-22 03:21:14 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-22 03:22:37 +0100mvk(~mvk@2607:fea8:5cdc:bf00::99e7) (Ping timeout: 240 seconds)
2022-02-22 03:24:21 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-22 03:28:02 +0100alx741(~alx741@157.100.197.240)
2022-02-22 03:29:27 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-22 03:31:10 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 03:31:41 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-22 03:35:37 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 03:36:12 +0100justAstache(~justache@user/justache) (Remote host closed the connection)
2022-02-22 03:36:48 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 03:37:08 +0100justAstache(~justache@user/justache)
2022-02-22 03:37:57 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-22 03:37:58 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-22 03:37:58 +0100wroathe(~wroathe@user/wroathe)
2022-02-22 03:47:38 +0100xff0x(~xff0x@2001:1a81:5339:f000:1ec4:ce6f:8558:a9e8) (Ping timeout: 260 seconds)
2022-02-22 03:49:09 +0100xff0x(~xff0x@2001:1a81:5372:9200:5fc7:2f1:341d:525f)
2022-02-22 03:51:53 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-02-22 03:54:40 +0100alx741(~alx741@157.100.197.240)
2022-02-22 03:56:56 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-22 03:58:37 +0100neurocyte0917090(~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
2022-02-22 04:02:21 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 04:04:35 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 04:07:56 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-22 04:08:57 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 04:10:37 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2022-02-22 04:12:03 +0100ridcully_(~ridcully@p508ace91.dip0.t-ipconnect.de)
2022-02-22 04:15:06 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-22 04:20:10 +0100alx741(~alx741@181.199.42.143)
2022-02-22 04:21:44 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
2022-02-22 04:22:43 +0100td_(~td@muedsl-82-207-238-047.citykom.de) (Ping timeout: 256 seconds)
2022-02-22 04:24:41 +0100td_(~td@muedsl-82-207-238-240.citykom.de)
2022-02-22 04:24:41 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 04:26:29 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 04:28:59 +0100Nahra(~user@static.161.95.99.88.clients.your-server.de)
2022-02-22 04:31:51 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-02-22 04:35:23 +0100BrokenClutch(~pioneer@2804:d41:c291:0:6129:66a9:49aa:83e7) ()
2022-02-22 04:36:08 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-02-22 04:37:03 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-22 04:39:30 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 04:41:32 +0100alx741(~alx741@157.100.197.240)
2022-02-22 04:41:42 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2022-02-22 04:42:32 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 04:43:14 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-02-22 04:44:15 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-22 04:44:27 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-02-22 04:45:11 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 04:45:48 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 04:48:42 +0100acidsys(~LSD@2a03:4000:55:d20::3) (Excess Flood)
2022-02-22 05:00:24 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Remote host closed the connection)
2022-02-22 05:00:24 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-02-22 05:01:12 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 05:01:18 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 05:01:34 +0100alx741(~alx741@157.100.197.240)
2022-02-22 05:05:50 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 250 seconds)
2022-02-22 05:05:50 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 05:09:32 +0100joegard(~joegard@179.33.119.167)
2022-02-22 05:10:38 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-02-22 05:11:20 +0100joegard(~joegard@179.33.119.167) (Quit: Client closed)
2022-02-22 05:13:15 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-02-22 05:16:09 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 05:18:35 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 05:20:12 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-02-22 05:24:05 +0100alx741(~alx741@181.199.42.143)
2022-02-22 05:24:54 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2022-02-22 05:25:01 +0100mbuf(~Shakthi@223.178.77.186)
2022-02-22 05:25:22 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 05:25:23 +0100acidsys(~LSD@2a03:4000:55:d20::3)
2022-02-22 05:26:12 +0100nehsou^(~nehsou@50.233.120.162) (Ping timeout: 240 seconds)
2022-02-22 05:26:49 +0100MochizukisLastTh(~Mochizuki@121-83-4-20f1.osk2.eonet.ne.jp)
2022-02-22 05:29:25 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 05:31:18 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-22 05:31:18 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-22 05:31:18 +0100wroathe(~wroathe@user/wroathe)
2022-02-22 05:36:27 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 272 seconds)
2022-02-22 05:36:36 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 05:36:38 +0100deadmarshal(~deadmarsh@95.38.117.172)
2022-02-22 05:45:42 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-02-22 05:46:23 +0100alx741(~alx741@181.199.42.143)
2022-02-22 05:51:09 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 05:51:51 +0100alx741(~alx741@157.100.197.240)
2022-02-22 05:54:12 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-22 05:56:10 +0100benin(~benin@59.88.179.150) (Quit: Ping timeout (120 seconds))
2022-02-22 05:56:32 +0100benin(~benin@59.88.179.150)
2022-02-22 05:57:06 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 06:03:54 +0100little_mac(~little_ma@2601:410:4300:3ce0:475:42ee:cbdc:5ced)
2022-02-22 06:05:47 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-22 06:10:36 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2022-02-22 06:15:17 +0100alx741(~alx741@157.100.197.240)
2022-02-22 06:15:40 +0100komikat(~komikat@183.82.154.44)
2022-02-22 06:17:38 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-22 06:17:38 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-22 06:17:38 +0100wroathe(~wroathe@user/wroathe)
2022-02-22 06:19:48 +0100komikat(~komikat@183.82.154.44) (Ping timeout: 240 seconds)
2022-02-22 06:20:25 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 06:21:52 +0100komikat_(~komikat@183.82.154.44)
2022-02-22 06:22:41 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 272 seconds)
2022-02-22 06:31:49 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-22 06:32:36 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-02-22 06:37:22 +0100alx741(~alx741@157.100.197.240)
2022-02-22 06:51:21 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving)
2022-02-22 06:54:38 +0100komikat_(~komikat@183.82.154.44) (Remote host closed the connection)
2022-02-22 06:54:50 +0100komikat(~komikat@183.82.154.44)
2022-02-22 06:59:13 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 06:59:51 +0100alx741(~alx741@157.100.197.240)
2022-02-22 07:00:37 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-02-22 07:00:40 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 272 seconds)
2022-02-22 07:01:45 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-02-22 07:02:33 +0100komikat(~komikat@183.82.154.44) (Remote host closed the connection)
2022-02-22 07:03:08 +0100komikat_(~komikat@183.82.154.44)
2022-02-22 07:07:47 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
2022-02-22 07:08:17 +0100komikat_(~komikat@183.82.154.44) (Ping timeout: 272 seconds)
2022-02-22 07:09:00 +0100benin(~benin@59.88.179.150) (Ping timeout: 240 seconds)
2022-02-22 07:09:18 +0100komikat(~komikat@183.82.154.44)
2022-02-22 07:09:36 +0100whound(~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202)
2022-02-22 07:10:12 +0100whounddust__
2022-02-22 07:10:37 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 07:10:41 +0100benin(~benin@59.88.179.150)
2022-02-22 07:12:42 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
2022-02-22 07:13:17 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-22 07:13:48 +0100komikat(~komikat@183.82.154.44) (Ping timeout: 240 seconds)
2022-02-22 07:15:31 +0100komikat_(~komikat@183.82.154.44)
2022-02-22 07:15:50 +0100komikat_(~komikat@183.82.154.44) (Remote host closed the connection)
2022-02-22 07:16:03 +0100komikat(~komikat@183.82.154.44)
2022-02-22 07:16:07 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-22 07:20:22 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-02-22 07:20:41 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 07:23:04 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-02-22 07:23:31 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-02-22 07:24:03 +0100benin(~benin@59.88.179.150) (Ping timeout: 256 seconds)
2022-02-22 07:25:22 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2022-02-22 07:26:58 +0100alx741(~alx741@157.100.197.240)
2022-02-22 07:29:00 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
2022-02-22 07:29:07 +0100coot(~coot@213.134.190.95)
2022-02-22 07:33:16 +0100xff0x(~xff0x@2001:1a81:5372:9200:5fc7:2f1:341d:525f) (Ping timeout: 245 seconds)
2022-02-22 07:34:20 +0100xff0x(~xff0x@2001:1a81:5372:9200:8a1a:331:2fa:81ab)
2022-02-22 07:48:02 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 07:50:01 +0100mjrosenb(~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net) (Ping timeout: 268 seconds)
2022-02-22 07:50:39 +0100xff0x(~xff0x@2001:1a81:5372:9200:8a1a:331:2fa:81ab) (Quit: xff0x)
2022-02-22 07:51:09 +0100dust__(~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202) (Quit: Konversation terminated!)
2022-02-22 07:51:56 +0100dust_(~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202)
2022-02-22 07:52:45 +0100dust_dust__
2022-02-22 07:57:09 +0100yauhsienhuangtw(~Yau-Hsien@61-231-19-150.dynamic-ip.hinet.net) (Quit: Leaving)
2022-02-22 07:58:15 +0100xff0x(~xff0x@2001:1a81:5372:9200:8a1a:331:2fa:81ab)
2022-02-22 07:59:02 +0100sander(~sander@user/sander) (Ping timeout: 240 seconds)
2022-02-22 07:59:18 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
2022-02-22 08:04:02 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
2022-02-22 08:04:58 +0100alx741(~alx741@157.100.197.240)
2022-02-22 08:05:19 +0100coot(~coot@213.134.190.95) (Quit: coot)
2022-02-22 08:06:12 +0100mjrosenb(~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net)
2022-02-22 08:09:17 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 08:09:43 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
2022-02-22 08:10:17 +0100gehmehgeh(~user@user/gehmehgeh)
2022-02-22 08:11:13 +0100coot(~coot@213.134.190.95)
2022-02-22 08:12:41 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 08:15:01 +0100vysn(~vysn@user/vysn)
2022-02-22 08:16:58 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
2022-02-22 08:17:10 +0100mc47(~mc47@xmonad/TheMC47)
2022-02-22 08:18:10 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-22 08:21:40 +0100komikat(~komikat@183.82.154.44) (Remote host closed the connection)
2022-02-22 08:23:53 +0100acidjnk(~acidjnk@p200300d0c71a321635f6942ae4ff7a88.dip0.t-ipconnect.de)
2022-02-22 08:26:11 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-02-22 08:27:30 +0100alx741(~alx741@157.100.197.240)
2022-02-22 08:32:01 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 08:33:08 +0100benin(~benin@59.88.179.150)
2022-02-22 08:33:51 +0100dust__(~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202) (Quit: Konversation terminated!)
2022-02-22 08:34:08 +0100benin(~benin@59.88.179.150) (Client Quit)
2022-02-22 08:35:19 +0100benin(~benin@59.88.179.150)
2022-02-22 08:35:34 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 260 seconds)
2022-02-22 08:37:07 +0100dextaa_(~dextaa@user/dextaa) (Read error: Connection reset by peer)
2022-02-22 08:37:36 +0100ss4(~wootehfoo@user/wootehfoot)
2022-02-22 08:38:59 +0100mason0(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2022-02-22 08:40:25 +0100dextaa_(~dextaa@user/dextaa)
2022-02-22 08:40:53 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
2022-02-22 08:42:56 +0100cosimone(~user@93-34-132-33.ip49.fastwebnet.it)
2022-02-22 08:45:11 +0100benin(~benin@59.88.179.150) (Ping timeout: 272 seconds)
2022-02-22 08:46:28 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:1947:6ff5:3916:a376)
2022-02-22 08:47:43 +0100Ariakenom(~Ariakenom@2001:9b1:efe:9d00:a0f2:d28e:55b:1ed5)
2022-02-22 08:47:51 +0100fendor(~fendor@178.115.60.54.wireless.dyn.drei.com)
2022-02-22 08:48:41 +0100alx741(~alx741@181.199.42.143)
2022-02-22 08:48:48 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 08:51:51 +0100little_mac(~little_ma@2601:410:4300:3ce0:475:42ee:cbdc:5ced) (Remote host closed the connection)
2022-02-22 08:53:21 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 08:53:35 +0100yauhsien(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-22 08:53:42 +0100Ariakenom_(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se)
2022-02-22 08:53:48 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 240 seconds)
2022-02-22 08:53:52 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 256 seconds)
2022-02-22 08:55:02 +0100Midjak(~Midjak@82.66.147.146) (Quit: Leaving)
2022-02-22 08:56:09 +0100MajorBiscuit(~MajorBisc@c-001-029-040.client.tudelft.eduvpn.nl)
2022-02-22 08:57:02 +0100Ariakenom(~Ariakenom@2001:9b1:efe:9d00:a0f2:d28e:55b:1ed5) (Ping timeout: 240 seconds)
2022-02-22 08:58:02 +0100komikat(~komikat@183.82.154.239)
2022-02-22 09:00:03 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-02-22 09:02:06 +0100kristjansson(sid126207@id-126207.tinside.irccloud.com) (Excess Flood)
2022-02-22 09:02:23 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-22 09:02:27 +0100kristjansson(sid126207@id-126207.tinside.irccloud.com)
2022-02-22 09:04:00 +0100neurocyte0917090(~neurocyte@IP-213157011045.dynamic.medianet-world.de)
2022-02-22 09:04:00 +0100neurocyte0917090(~neurocyte@IP-213157011045.dynamic.medianet-world.de) (Changing host)
2022-02-22 09:04:00 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-02-22 09:06:52 +0100benin(~benin@59.92.239.104)
2022-02-22 09:09:06 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 09:10:03 +0100alx741(~alx741@181.199.42.143)
2022-02-22 09:13:03 +0100kuribas(~user@ptr-25vy0iagvdrvz4nz7gs.18120a2.ip6.access.telenet.be)
2022-02-22 09:17:27 +0100chele(~chele@user/chele)
2022-02-22 09:18:31 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Remote host closed the connection)
2022-02-22 09:18:46 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 09:18:47 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 09:22:23 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-02-22 09:23:31 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-02-22 09:24:37 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-02-22 09:25:37 +0100img(~img@user/img)
2022-02-22 09:27:31 +0100img(~img@user/img) (Client Quit)
2022-02-22 09:27:55 +0100ccntrq(~Thunderbi@imx92-1-78-204-187-6.fbx.proxad.net)
2022-02-22 09:28:32 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Remote host closed the connection)
2022-02-22 09:28:54 +0100img(~img@user/img)
2022-02-22 09:29:35 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 09:35:19 +0100alx741(~alx741@157.100.197.240)
2022-02-22 09:37:45 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 09:39:43 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 09:40:22 +0100cynomys(~cynomys@user/cynomys)
2022-02-22 09:40:24 +0100mastarija(~mastarija@2a05:4f46:e04:6000:d8c:f8d:c71e:751e)
2022-02-22 09:40:43 +0100fendor(~fendor@178.115.60.54.wireless.dyn.drei.com) (Remote host closed the connection)
2022-02-22 09:41:01 +0100fendor(~fendor@178.115.60.54.wireless.dyn.drei.com)
2022-02-22 09:42:18 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-02-22 09:42:34 +0100max22-(~maxime@2a01cb08833598000dbf298a01dd3327.ipv6.abo.wanadoo.fr)
2022-02-22 09:43:24 +0100dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-02-22 09:44:36 +0100vorpuni(~pvorp@2001:861:3881:c690:d322:f659:136d:eef6)
2022-02-22 09:44:59 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 09:49:02 +0100wonko(~wjc@user/wonko)
2022-02-22 09:49:24 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 09:49:35 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-22 09:51:12 +0100komikat(~komikat@183.82.154.239) (Remote host closed the connection)
2022-02-22 09:51:53 +0100komikat(~komikat@183.82.154.239)
2022-02-22 09:52:26 +0100yauhsien(~Yau-Hsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 09:55:47 +0100cfricke(~cfricke@user/cfricke)
2022-02-22 09:56:15 +0100alx741(~alx741@157.100.197.240)
2022-02-22 09:59:42 +0100jespada(~jespada@85.255.234.190)
2022-02-22 10:00:09 +0100alex[m]12345(~alexchete@2001:470:69fc:105::1:1001) (Quit: You have been kicked for being idle)
2022-02-22 10:10:10 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 10:11:07 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 10:11:26 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-22 10:12:41 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-02-22 10:12:59 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-02-22 10:14:18 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-22 10:15:06 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-02-22 10:17:48 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 240 seconds)
2022-02-22 10:19:22 +0100 <merijn> :O
2022-02-22 10:19:28 +0100 <merijn> https://twitter.com/GabriellaG439/status/1495957520459915266
2022-02-22 10:19:32 +0100 <merijn> That's genius
2022-02-22 10:19:45 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 10:20:14 +0100arievw(~arievw@85.148.234.95)
2022-02-22 10:21:05 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
2022-02-22 10:21:33 +0100komikat(~komikat@183.82.154.239) (Remote host closed the connection)
2022-02-22 10:26:35 +0100 <[exa]> that's wunderbar
2022-02-22 10:27:07 +0100arievw(~arievw@85.148.234.95) (Quit: Nettalk6 - www.ntalk.de)
2022-02-22 10:27:12 +0100alx741(~alx741@157.100.197.240)
2022-02-22 10:28:53 +0100AlexNoo_(~AlexNoo@178.34.160.240)
2022-02-22 10:29:25 +0100shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-02-22 10:29:29 +0100Alex_test_(~al_test@178.34.160.240)
2022-02-22 10:29:32 +0100AlexZenon_2(~alzenon@178.34.160.240)
2022-02-22 10:31:08 +0100AlexNoo__(~AlexNoo@178.34.160.240)
2022-02-22 10:31:54 +0100AlexZenon(~alzenon@178.34.160.240) (Ping timeout: 256 seconds)
2022-02-22 10:32:04 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 10:32:08 +0100AlexZenon(~alzenon@178.34.160.240)
2022-02-22 10:32:35 +0100jespada_(~jespada@85.255.234.190)
2022-02-22 10:32:37 +0100AlexNoo(~AlexNoo@178.34.160.240) (Ping timeout: 240 seconds)
2022-02-22 10:32:45 +0100jespada(~jespada@85.255.234.190) (Ping timeout: 256 seconds)
2022-02-22 10:33:24 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-22 10:33:29 +0100Alex_test(~al_test@178.34.160.240) (Ping timeout: 272 seconds)
2022-02-22 10:33:41 +0100AlexNoo(~AlexNoo@178.34.160.240)
2022-02-22 10:34:06 +0100AlexZenon_2(~alzenon@178.34.160.240) (Ping timeout: 260 seconds)
2022-02-22 10:34:10 +0100Alex_test_(~al_test@178.34.160.240) (Ping timeout: 256 seconds)
2022-02-22 10:34:11 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 10:34:26 +0100Alex_test(~al_test@178.34.160.240)
2022-02-22 10:34:37 +0100AlexNoo_(~AlexNoo@178.34.160.240) (Ping timeout: 240 seconds)
2022-02-22 10:35:36 +0100vorpuni(~pvorp@2001:861:3881:c690:d322:f659:136d:eef6) (Ping timeout: 250 seconds)
2022-02-22 10:35:45 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-02-22 10:36:09 +0100AlexNoo__(~AlexNoo@178.34.160.240) (Ping timeout: 256 seconds)
2022-02-22 10:36:17 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 252 seconds)
2022-02-22 10:36:36 +0100acidjnk(~acidjnk@p200300d0c71a321635f6942ae4ff7a88.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2022-02-22 10:36:45 +0100alp(~alp@user/alp)
2022-02-22 10:37:18 +0100komikat(~komikat@183.82.154.239)
2022-02-22 10:39:16 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-22 10:39:45 +0100AlexZenon(~alzenon@178.34.160.240) (Quit: ;-)
2022-02-22 10:40:21 +0100Alex_test(~al_test@178.34.160.240) (Quit: ;-)
2022-02-22 10:41:05 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-02-22 10:41:21 +0100AlexNoo(~AlexNoo@178.34.160.240) (Quit: Leaving)
2022-02-22 10:45:11 +0100jstolarek(~jstolarek@staticline-31-183-182-85.toya.net.pl)
2022-02-22 10:48:28 +0100ss4(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2022-02-22 10:48:48 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-02-22 10:49:04 +0100dvdrw(~dvdrw@user/dvdrw)
2022-02-22 10:49:43 +0100alx741(~alx741@157.100.197.240)
2022-02-22 10:51:47 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Remote host closed the connection)
2022-02-22 10:52:41 +0100__monty__(~toonn@user/toonn)
2022-02-22 10:53:45 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-02-22 10:53:50 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 10:55:58 +0100polyphem(~rod@2a02:810d:840:8754:2123:9506:671d:c7f0) (Ping timeout: 250 seconds)
2022-02-22 10:56:31 +0100AlexZenon(~alzenon@178.34.160.240)
2022-02-22 10:57:03 +0100polyphem(~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
2022-02-22 10:57:26 +0100Alex_test(~al_test@178.34.160.240)
2022-02-22 10:57:35 +0100vorpuni(~pvorp@2001:861:3881:c690:d322:f659:136d:eef6)
2022-02-22 10:59:02 +0100polyphem(~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Client Quit)
2022-02-22 11:01:17 +0100mastarija(~mastarija@2a05:4f46:e04:6000:d8c:f8d:c71e:751e) (Ping timeout: 240 seconds)
2022-02-22 11:01:47 +0100polyphem(~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
2022-02-22 11:04:00 +0100 <tomsmeding> neat
2022-02-22 11:04:16 +0100 <dminuoso> Hah that's really something
2022-02-22 11:05:10 +0100 <tomsmeding> I wonder how well that scales beyond nice examples though
2022-02-22 11:06:22 +0100 <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
2022-02-22 11:06:38 +0100 <tomsmeding> (not saying it's bad: certainly nice to have)
2022-02-22 11:07:03 +0100m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 272 seconds)
2022-02-22 11:07:23 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net)
2022-02-22 11:07:26 +0100alp(~alp@user/alp) (Remote host closed the connection)
2022-02-22 11:07:45 +0100alp(~alp@user/alp)
2022-02-22 11:08:09 +0100 <[exa]> I guess it could work for vectors right? "broadcasting" ops over vectors is super useful
2022-02-22 11:08:15 +0100m5zs7k(aquares@web10.mydevil.net)
2022-02-22 11:12:15 +0100alx741(~alx741@157.100.197.240)
2022-02-22 11:12:37 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 250 seconds)
2022-02-22 11:12:46 +0100 <merijn> tomsmeding: That's not what it's doing, though
2022-02-22 11:12:59 +0100 <merijn> tomsmeding: It's much more efficient than liftA2 too
2022-02-22 11:13:25 +0100 <merijn> the liftA2 blows up memory on big, lazy things
2022-02-22 11:14:48 +0100 <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
2022-02-22 11:14:53 +0100 <merijn> the fold example is incremental
2022-02-22 11:18:03 +0100 <tomsmeding> merijn: note that I wrote lift2, not liftA2
2022-02-22 11:18:04 +0100ubert1(~Thunderbi@2a02:8109:9880:303c:b499:2e2d:5a8b:934e)
2022-02-22 11:18:13 +0100 <tomsmeding> I know that you'd need a special combinator for folds
2022-02-22 11:20:53 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 11:23:12 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 11:27:37 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 11:27:46 +0100AlexNoo(~AlexNoo@178.34.160.240)
2022-02-22 11:32:10 +0100 <tomsmeding> merijn: https://hackage.haskell.org/package/foldl-1.4.12/docs/src/Control.Foldl.html#line-291
2022-02-22 11:32:13 +0100 <tomsmeding> it's literally liftA2
2022-02-22 11:32:34 +0100 <tomsmeding> (with a well-chosen Applicative instance)
2022-02-22 11:34:05 +0100 <kuribas> liftA2 is constant for folds.
2022-02-22 11:34:13 +0100 <kuribas> it just operates on the end result.
2022-02-22 11:34:13 +0100 <tomsmeding> indeed
2022-02-22 11:34:30 +0100 <tomsmeding> I realised that after looking at the Num instance and going "wait, what? Oh, of course"
2022-02-22 11:35:23 +0100 <tomsmeding> [exa]: vectors are usually instances of Num precisely for that reason I think
2022-02-22 11:35:56 +0100 <tomsmeding> except if intended as linear algebra vectors I guess, then (*) is a bit dodgy perhaps
2022-02-22 11:36:26 +0100 <dvdrw> `signum' and `abs' are a bit dubious to pick an implementation for, too
2022-02-22 11:36:59 +0100 <tomsmeding> they are for all non-scalar stuff
2022-02-22 11:37:07 +0100vorpuni(~pvorp@2001:861:3881:c690:d322:f659:136d:eef6) (Ping timeout: 256 seconds)
2022-02-22 11:37:18 +0100alx741(~alx741@181.199.42.143)
2022-02-22 11:37:26 +0100 <tomsmeding> matrices, polynomials
2022-02-22 11:38:16 +0100 <tomsmeding> hindsight says that perhaps it should have been Ring { (+), (*), (-), negate }, Ring => Num { abs, signum }
2022-02-22 11:38:43 +0100 <tomsmeding> though that has the downside of more verbose instance declarations
2022-02-22 11:38:55 +0100 <geekosaur> yet another attempt to redesign Num…
2022-02-22 11:38:59 +0100 <tomsmeding> :D
2022-02-22 11:39:06 +0100 <geekosaur> hackage has several failed attempts already
2022-02-22 11:39:29 +0100 <tomsmeding> you know what would be nice? the ability to give instances for a whole tree of type classes compactly in a single clause
2022-02-22 11:39:41 +0100 <dvdrw> https://xkcd.com/927/ :)
2022-02-22 11:40:01 +0100 <tomsmeding> like, instance Monad Thing where fmap = ... ; pure = ... ; (<*>) = ... ; return = ... ; (>>=) = ...
2022-02-22 11:40:09 +0100 <tomsmeding> bad example because this has lots of redundancy as well
2022-02-22 11:40:15 +0100 <geekosaur> at some point one has to accept that Num exists for programmer convenience
2022-02-22 11:40:33 +0100 <tomsmeding> then you could split up Num in lots of fine-grained classes, without the downside of making instance declarations much more verbose
2022-02-22 11:40:38 +0100 <dvdrw> tomsmeding: maybe allow for lower typeclasses to use higher typeclass functions for default implementations?
2022-02-22 11:40:45 +0100 <tomsmeding> and less people would have complained about FAM I guess
2022-02-22 11:40:47 +0100 <geekosaur> already can
2022-02-22 11:41:01 +0100 <dminuoso> dvdrw: that's already perfectly possible.
2022-02-22 11:41:05 +0100 <geekosaur> many people backform Applicative instances with <*> = `ap`
2022-02-22 11:41:09 +0100 <[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
2022-02-22 11:41:15 +0100 <dminuoso> dvdrw: Look how default Generic implementations usually work.
2022-02-22 11:41:28 +0100 <dminuoso> (They dont even have to be subclasses, they can be arbitrary classes)
2022-02-22 11:41:35 +0100 <tomsmeding> dvdrw: key thing is DefaultSignatures
2022-02-22 11:41:46 +0100 <tomsmeding> though of course Functor/Applicative don't do it because legacy
2022-02-22 11:41:52 +0100 <dvdrw> huh, didn't know that
2022-02-22 11:41:57 +0100 <tomsmeding> [exa]: what's "it" you're referring to?
2022-02-22 11:42:10 +0100 <dminuoso> tomsmeding: Honestly I'd find it detesting if `rg "instance Functor Foo"` wouldn't be fruitful.
2022-02-22 11:42:12 +0100 <[exa]> tomsmeding: Num instance for vectors
2022-02-22 11:42:20 +0100 <tomsmeding> dminuoso: very good point
2022-02-22 11:42:32 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2022-02-22 11:42:34 +0100 <tomsmeding> [exa]: ah, but fusion is a whole separate problem from operators like these
2022-02-22 11:42:48 +0100 <merijn> dvdrw: You can use DefaultSignatures extension for that
2022-02-22 11:42:56 +0100 <[exa]> yeah, it looked to me that the fold there could give a nice hint
2022-02-22 11:42:58 +0100 <tomsmeding> if a user writes `map (*2) (map (+3) v)`, you probably want fusion as well
2022-02-22 11:43:26 +0100 <tomsmeding> so not having easy broadcasting Num operators for your vectors doesn't allow you to ignore fusion :p
2022-02-22 11:43:45 +0100 <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
2022-02-22 11:44:16 +0100 <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
2022-02-22 11:44:28 +0100 <dminuoso> Or just insert it right into your haskell editor buffer
2022-02-22 11:44:35 +0100 <dminuoso> With HLS that should be doable
2022-02-22 11:44:56 +0100 <tomsmeding> dminuoso: maybe that does most of the job indeed
2022-02-22 11:45:59 +0100 <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
2022-02-22 11:46:31 +0100 <tomsmeding> making a new type an instance of the right stuff will be awfully verbose
2022-02-22 11:46:58 +0100 <dvdrw> merijn: that's a pretty cool feature
2022-02-22 11:47:21 +0100 <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"
2022-02-22 11:47:28 +0100 <dminuoso> Btw, I wish we had some way to attach metadata to constructors outside the type system.
2022-02-22 11:47:35 +0100 <tomsmeding> I'm not saying my multi-instance declaration is the nicest solution either though
2022-02-22 11:48:56 +0100 <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" ~}`
2022-02-22 11:49:13 +0100 <dminuoso> With that meta data being accessible in say generics or TH...
2022-02-22 11:49:29 +0100 <lortabac> clojure has something similar IIRC
2022-02-22 11:50:27 +0100 <turlando> Is there a way to import a data constructor without the record accessor functions?
2022-02-22 11:50:41 +0100 <dminuoso> turlando: import Foo (Foo(Foo))
2022-02-22 11:50:54 +0100 <dminuoso> Okay, perhaps a bit confusing with the overloaded usage of Foo here..
2022-02-22 11:51:05 +0100 <dminuoso> import Mod (TypeCon(DataCon))
2022-02-22 11:51:06 +0100 <geekosaur> actually I think no
2022-02-22 11:51:15 +0100 <turlando> Yeah, it's confusing and I've tried it but with no luck, let me try harder
2022-02-22 11:51:37 +0100 <dminuoso> geekosaur: Mmm, would that give me record accessors regardless?
2022-02-22 11:51:37 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 11:51:42 +0100 <geekosaur> yes
2022-02-22 11:51:47 +0100 <dminuoso> Uh that's surprising
2022-02-22 11:51:59 +0100 <geekosaur> this is why 9.2 has an extension to not generate them
2022-02-22 11:52:01 +0100 <turlando> nope: Not in scope: data constructor ‘Frame’
2022-02-22 11:52:12 +0100 <turlando> with: import Simulator.Frame (Frame(Frame))
2022-02-22 11:52:12 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
2022-02-22 11:52:31 +0100 <geekosaur> hm, that should importboth type and data constructor
2022-02-22 11:52:46 +0100komikat(~komikat@183.82.154.239) (Remote host closed the connection)
2022-02-22 11:52:49 +0100 <geekosaur> (but no control over fields)
2022-02-22 11:53:21 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-22 11:53:35 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2022-02-22 11:53:45 +0100 <geekosaur> actually, I wonder if you could export a bidirectional pattern synonym and not export the datacon itself
2022-02-22 11:54:01 +0100komikat(~komikat@183.82.154.239)
2022-02-22 11:54:16 +0100 <geekosaur> you'd need to turn on the extension that lets you say `pattern Foo` in the export list
2022-02-22 11:54:36 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-22 11:54:45 +0100 <geekosaur> ExplicitNamespaces
2022-02-22 11:54:48 +0100 <turlando> True that, but seems to me a bit of overkill since I need this in a module only so far
2022-02-22 11:56:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Ping timeout: 240 seconds)
2022-02-22 11:58:36 +0100foul_owl(~kerry@23.82.193.88) (Ping timeout: 256 seconds)
2022-02-22 12:00:03 +0100komikat(~komikat@183.82.154.239) (Remote host closed the connection)
2022-02-22 12:00:06 +0100 <turlando> stack clean && stack build did the trick :\
2022-02-22 12:02:08 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-02-22 12:02:37 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-02-22 12:06:21 +0100notzmv(~zmv@user/notzmv)
2022-02-22 12:06:21 +0100komikat(~komikat@183.82.154.239)
2022-02-22 12:08:21 +0100tomsmedingis happy to not have had build caching issues yet, neither stack nor cabal
2022-02-22 12:08:41 +0100alx741(~alx741@157.100.197.240)
2022-02-22 12:11:20 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 12:13:50 +0100foul_owl(~kerry@23.82.193.89)
2022-02-22 12:15:48 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 12:17:32 +0100fendor_(~fendor@178.165.167.221.wireless.dyn.drei.com)
2022-02-22 12:20:02 +0100fendor(~fendor@178.115.60.54.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
2022-02-22 12:21:03 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2022-02-22 12:21:18 +0100ccntrq1(~Thunderbi@2a01:e34:eccb:b060:8793:de70:3992:9c12)
2022-02-22 12:23:03 +0100ccntrq(~Thunderbi@imx92-1-78-204-187-6.fbx.proxad.net) (Ping timeout: 272 seconds)
2022-02-22 12:23:03 +0100ccntrq1ccntrq
2022-02-22 12:23:47 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-02-22 12:24:16 +0100DNH(~DNH@2a02:8109:b740:2c4:e0aa:430d:d615:45f4)
2022-02-22 12:29:10 +0100alx741(~alx741@157.100.197.240)
2022-02-22 12:31:48 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 12:31:49 +0100alphabeta(~kilolympu@31.205.200.235)
2022-02-22 12:32:36 +0100kilolympus(~kilolympu@vpn-fn-229.net.ed.ac.uk) (Ping timeout: 256 seconds)
2022-02-22 12:33:03 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 12:33:39 +0100alx741(~alx741@157.100.197.240)
2022-02-22 12:37:14 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 12:38:50 +0100raym(~raym@user/raym) (Ping timeout: 256 seconds)
2022-02-22 12:39:40 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-22 12:41:03 +0100pokhu(~rishi@103.206.114.112)
2022-02-22 12:45:22 +0100raym(~raym@user/raym)
2022-02-22 12:48:37 +0100 <dvdrw> ski: awpr: Church-encoded constrained existential did it :) (Pretty similar to your ForSome)
2022-02-22 12:52:51 +0100 <ski> dvdrw : hm ?
2022-02-22 12:53:44 +0100alx741(~alx741@157.100.197.240)
2022-02-22 12:53:53 +0100jm_jj(~jmjj@mobile-user-c3a5cc-243.dhcp.inet.fi)
2022-02-22 12:54:44 +0100 <dvdrw> ski: `(foldl1 (>>) $ map ftog) :: [exists a. Show a => F a] -> (exists a. Show a => G a)'
2022-02-22 12:55:04 +0100 <dvdrw> ...that should be a `(.)'
2022-02-22 12:55:48 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-22 12:56:41 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 12:56:54 +0100 <ski> s/=>/*>/
2022-02-22 12:57:03 +0100coot(~coot@213.134.190.95) (Quit: coot)
2022-02-22 12:57:39 +0100 <dvdrw> that's because of the existential quantifier?
2022-02-22 12:57:47 +0100 <ski> (yes and) no
2022-02-22 12:58:38 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 12:58:51 +0100 <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'
2022-02-22 12:58:57 +0100MochizukisLastTh(~Mochizuki@121-83-4-20f1.osk2.eonet.ne.jp) (Ping timeout: 256 seconds)
2022-02-22 12:59:28 +0100 <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'
2022-02-22 13:00:01 +0100 <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'
2022-02-22 13:01:15 +0100 <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
2022-02-22 13:01:52 +0100 <dvdrw> ah, I see
2022-02-22 13:01:53 +0100 <ski> `Cxt *> T' is to `Cxt => T' what `(U,V) ' is to `U -> V'
2022-02-22 13:02:23 +0100 <ski> `*>' is most commonly used directly inside `exists', just like `=>' is most commonly used directly inside `forall'
2022-02-22 13:02:36 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (K-Lined)
2022-02-22 13:02:36 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-22 13:02:47 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2022-02-22 13:02:47 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 13:03:10 +0100 <dvdrw> Do these arrows have a name?
2022-02-22 13:03:59 +0100 <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'
2022-02-22 13:05:06 +0100 <ski> (another way to simulate `Cxt *> T' is `forall o. (Cxt => T -> o) -> o'. this is the CPS / Church/Scott encoding)
2022-02-22 13:05:57 +0100 <dvdrw> Indeed that's how I've written it for my `ForSome ctx f' type
2022-02-22 13:06:41 +0100 <dvdrw> `forall r. (forall a. c a => tag a -> r) -> r'
2022-02-22 13:07:35 +0100 <dvdrw> er, ...ctx a...
2022-02-22 13:07:49 +0100 <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
2022-02-22 13:08:36 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-22 13:08:49 +0100 <ski> although, it seems that the word "provide" may be useful to talk about it
2022-02-22 13:08:57 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 13:09:30 +0100 <ski> @hoogle Dict
2022-02-22 13:09:30 +0100 <lambdabot> Data.Constraint data Dict
2022-02-22 13:09:30 +0100 <lambdabot> Data.Constraint Dict :: a => Dict a
2022-02-22 13:09:30 +0100 <lambdabot> Data.Vinyl.Core data Dict c a
2022-02-22 13:10:27 +0100 <ski> that is `data Dict c = c => Dict', expressing `c *> ()'. which is itself one example of using `*>', not directly nested inside `exists'
2022-02-22 13:11:36 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 250 seconds)
2022-02-22 13:12:23 +0100acidjnk(~acidjnk@p200300d0c71a3216f19af2eb8990af00.dip0.t-ipconnect.de)
2022-02-22 13:13:31 +0100ski. o O ( <https://hackage.haskell.org/package/constraints-0.13.3/docs/Data-Constraint.html> )
2022-02-22 13:16:16 +0100alx741(~alx741@157.100.197.240)
2022-02-22 13:17:11 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 13:22:53 +0100spacenautx(~spacenaut@user/spacenautx)
2022-02-22 13:23:42 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 13:29:43 +0100mastarija(~mastarija@2a05:4f46:e04:6000:d8cc:eac0:596a:75bb)
2022-02-22 13:30:30 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-02-22 13:31:36 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 13:32:05 +0100coot(~coot@213.134.190.95)
2022-02-22 13:33:27 +0100 <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 (?)
2022-02-22 13:34:22 +0100deadmarshal(~deadmarsh@95.38.117.172) (Ping timeout: 256 seconds)
2022-02-22 13:34:37 +0100 <ehammarstrom> Shoot, forgot to include `f :: Int -> Bool` and `g :: Bool -> Char` in the paste
2022-02-22 13:34:56 +0100notabled1notableduck
2022-02-22 13:35:17 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 13:35:42 +0100 <ski> was just going to ask about those
2022-02-22 13:37:07 +0100 <ski> what does `(g . hb) . (f . ha)' have to do with `(g .) . (f .)' ?
2022-02-22 13:38:20 +0100 <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
2022-02-22 13:38:21 +0100 <ehammarstrom> ski: I thought of them as "hole a" and "hole b", filling in the missing args
2022-02-22 13:38:24 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-22 13:38:42 +0100 <ski> (g .) . (f .)
2022-02-22 13:38:51 +0100 <ski> = \h -> ((g .) . (f .)) h
2022-02-22 13:38:59 +0100 <ski> = \h -> (g .) ((f .) h)
2022-02-22 13:39:07 +0100 <ski> = \h -> g . (f . h)
2022-02-22 13:39:40 +0100 <ski> this doesn't seem too related to your `\ha hb -> (g . hb) . (f . ha)'
2022-02-22 13:39:55 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 13:41:32 +0100 <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)
2022-02-22 13:41:38 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-02-22 13:41:59 +0100alx741(~alx741@157.100.197.240)
2022-02-22 13:42:41 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 13:44:17 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-22 13:44:20 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-02-22 13:45:24 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 13:45:51 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 13:47:18 +0100 <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
2022-02-22 13:47:24 +0100 <ski> . f) .) = (g .) . (f .)' above
2022-02-22 13:49:02 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-02-22 13:52:07 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-22 13:52:12 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 13:52:31 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-22 13:53:25 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 13:54:24 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
2022-02-22 13:54:35 +0100deadmarshal(~deadmarsh@95.38.117.172)
2022-02-22 13:54:50 +0100andreabedini(~andreabed@8s8kj68c1m9cwyq773h2.ip6.superloop.com)
2022-02-22 13:56:33 +0100alphabeta(~kilolympu@31.205.200.235) (Quit: Quitting IRC :()
2022-02-22 13:56:45 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-22 13:56:52 +0100kilolympus(~kilolympu@31.205.200.235)
2022-02-22 13:58:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Ping timeout: 240 seconds)
2022-02-22 14:02:14 +0100alx741(~alx741@157.100.197.240)
2022-02-22 14:03:41 +0100xff0x(~xff0x@2001:1a81:5372:9200:8a1a:331:2fa:81ab) (Ping timeout: 245 seconds)
2022-02-22 14:03:50 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-22 14:04:31 +0100xff0x(~xff0x@2001:1a81:5372:9200:6a39:7582:9b2d:4f3d)
2022-02-22 14:06:06 +0100chenqisu1(~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds)
2022-02-22 14:06:06 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 14:07:39 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 14:11:34 +0100jespada_(~jespada@85.255.234.190) (Ping timeout: 260 seconds)
2022-02-22 14:14:34 +0100AlexNoo(~AlexNoo@178.34.160.240) (Quit: Leaving)
2022-02-22 14:14:46 +0100Alex_test(~al_test@178.34.160.240) (Quit: ;-)
2022-02-22 14:14:56 +0100DNH(~DNH@2a02:8109:b740:2c4:e0aa:430d:d615:45f4) (Ping timeout: 245 seconds)
2022-02-22 14:15:04 +0100AlexZenon(~alzenon@178.34.160.240) (Quit: ;-)
2022-02-22 14:18:05 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2022-02-22 14:20:32 +0100AlexZenon(~alzenon@178.34.160.240)
2022-02-22 14:20:41 +0100AlexNoo(~AlexNoo@178.34.160.240)
2022-02-22 14:22:16 +0100alx741(~alx741@157.100.197.240)
2022-02-22 14:22:21 +0100Alex_test(~al_test@178.34.160.240)
2022-02-22 14:24:18 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-22 14:25:01 +0100nil(~user@134.209.106.31)
2022-02-22 14:25:37 +0100xff0x(~xff0x@2001:1a81:5372:9200:6a39:7582:9b2d:4f3d) (Ping timeout: 240 seconds)
2022-02-22 14:25:49 +0100 <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); } ?
2022-02-22 14:26:43 +0100xff0x(~xff0x@2001:1a81:5372:9200:4da8:4717:4e75:17ef)
2022-02-22 14:27:03 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 14:28:04 +0100 <nil> HashMap's constructors (empty and fromList) require the return types to be `Ur a`, so no `IO`. :-/
2022-02-22 14:29:12 +0100o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-02-22 14:30:52 +0100nil(~user@134.209.106.31) (Remote host closed the connection)
2022-02-22 14:32:18 +0100 <merijn> possibly? seems needlesly complicated for something trivially achieved by a fold seems overkill...
2022-02-22 14:32:41 +0100andreabedini(~andreabed@8s8kj68c1m9cwyq773h2.ip6.superloop.com) (Quit: WeeChat 3.3)
2022-02-22 14:33:02 +0100max22-(~maxime@2a01cb08833598000dbf298a01dd3327.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2022-02-22 14:39:12 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 14:41:49 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 14:42:05 +0100deadmarshal(~deadmarsh@95.38.117.172) (Ping timeout: 256 seconds)
2022-02-22 14:43:21 +0100benin(~benin@59.92.239.104) (Quit: The Lounge - https://thelounge.chat)
2022-02-22 14:43:43 +0100benin(~benin@59.92.239.104)
2022-02-22 14:44:47 +0100alx741(~alx741@157.100.197.240)
2022-02-22 14:48:18 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 14:49:17 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-02-22 14:49:20 +0100komikat(~komikat@183.82.154.239) (Read error: Connection reset by peer)
2022-02-22 14:49:23 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-22 14:49:35 +0100komikat(~komikat@183.82.154.239)
2022-02-22 14:49:38 +0100fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
2022-02-22 14:50:51 +0100mastarija(~mastarija@2a05:4f46:e04:6000:d8cc:eac0:596a:75bb) (Quit: Leaving)
2022-02-22 14:53:34 +0100acidjnk(~acidjnk@p200300d0c71a3216f19af2eb8990af00.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-02-22 14:56:09 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 14:56:11 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-02-22 14:56:41 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-02-22 14:56:52 +0100hololeap(~hololeap@user/hololeap) (Excess Flood)
2022-02-22 14:57:20 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2022-02-22 14:57:48 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 14:59:08 +0100hololeap(~hololeap@user/hololeap)
2022-02-22 15:01:23 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-02-22 15:02:36 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2022-02-22 15:05:39 +0100bahamas(~lucian@84.232.140.52)
2022-02-22 15:06:24 +0100alx741(~alx741@157.100.197.240)
2022-02-22 15:10:15 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
2022-02-22 15:10:42 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 15:15:30 +0100deadmarshal(~deadmarsh@95.38.117.172)
2022-02-22 15:18:23 +0100max22-(~maxime@2a01cb088335980021dd241f5bb447ef.ipv6.abo.wanadoo.fr)
2022-02-22 15:19:04 +0100AlexNoo_(~AlexNoo@178.34.160.252)
2022-02-22 15:19:32 +0100deadmarshal(~deadmarsh@95.38.117.172) (Ping timeout: 240 seconds)
2022-02-22 15:21:28 +0100Alex_test(~al_test@178.34.160.240) (Ping timeout: 256 seconds)
2022-02-22 15:22:02 +0100AlexZenon(~alzenon@178.34.160.240) (Ping timeout: 256 seconds)
2022-02-22 15:22:19 +0100AlexNoo(~AlexNoo@178.34.160.240) (Ping timeout: 256 seconds)
2022-02-22 15:23:56 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-22 15:23:56 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-22 15:23:56 +0100wroathe(~wroathe@user/wroathe)
2022-02-22 15:24:11 +0100benin(~benin@59.92.239.104) (Ping timeout: 272 seconds)
2022-02-22 15:24:52 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-22 15:25:11 +0100Alex_test(~al_test@178.34.160.252)
2022-02-22 15:25:49 +0100Alex_test_(~al_test@178.34.160.252)
2022-02-22 15:25:56 +0100benin(~benin@59.92.239.104)
2022-02-22 15:25:57 +0100AlexZenon(~alzenon@178.34.160.252)
2022-02-22 15:26:14 +0100AlexZenon_2(~alzenon@178.34.160.252)
2022-02-22 15:26:21 +0100shriekingnoise(~shrieking@201.231.16.156)
2022-02-22 15:28:45 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-22 15:28:56 +0100alx741(~alx741@181.199.42.143)
2022-02-22 15:29:37 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-02-22 15:31:46 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 15:32:25 +0100alx741(~alx741@181.199.42.143)
2022-02-22 15:33:41 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2022-02-22 15:34:08 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-02-22 15:34:25 +0100AlexZenon_2(~alzenon@178.34.160.252) (Quit: ;-)
2022-02-22 15:34:59 +0100Alex_test_(~al_test@178.34.160.252) (Quit: ;-)
2022-02-22 15:35:53 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 15:36:18 +0100AlexNoo_AlexNoo
2022-02-22 15:36:47 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2022-02-22 15:36:59 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-02-22 15:40:39 +0100bahamas(~lucian@84.232.140.52) (Ping timeout: 272 seconds)
2022-02-22 15:41:19 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-22 15:42:09 +0100gawen(~gawen@user/gawen) (Quit: cya)
2022-02-22 15:42:32 +0100rtsn(~nstr@user/rtsn)
2022-02-22 15:45:05 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2022-02-22 15:47:36 +0100gawen(~gawen@user/gawen)
2022-02-22 15:52:50 +0100alx741(~alx741@157.100.197.240)
2022-02-22 15:53:23 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-22 15:54:56 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-22 15:54:59 +0100rembo10(~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-02-22 15:55:56 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 15:55:58 +0100rembo10(~rembo10@remulis.com)
2022-02-22 15:56:13 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
2022-02-22 15:57:49 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-02-22 15:58:26 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-02-22 16:00:26 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:1947:6ff5:3916:a376) (Quit: WeeChat 2.8)
2022-02-22 16:00:36 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Ping timeout: 250 seconds)
2022-02-22 16:01:28 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
2022-02-22 16:02:29 +0100arjun(~arjun@user/arjun)
2022-02-22 16:04:05 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2022-02-22 16:04:22 +0100arjun(~arjun@user/arjun) (Remote host closed the connection)
2022-02-22 16:04:31 +0100wonko(~wjc@user/wonko) (Ping timeout: 245 seconds)
2022-02-22 16:06:12 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
2022-02-22 16:07:44 +0100komikat(~komikat@183.82.154.239) (Remote host closed the connection)
2022-02-22 16:07:53 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:1947:6ff5:3916:a376)
2022-02-22 16:09:56 +0100bahamas(~lucian@84.232.140.52)
2022-02-22 16:13:05 +0100alx741(~alx741@157.100.197.240)
2022-02-22 16:14:45 +0100hololeap_(~hololeap@user/hololeap)
2022-02-22 16:15:24 +0100mbuf(~Shakthi@223.178.77.186) (Quit: Leaving)
2022-02-22 16:16:22 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-02-22 16:16:23 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 16:16:26 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
2022-02-22 16:17:56 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-02-22 16:18:39 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 272 seconds)
2022-02-22 16:19:35 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-02-22 16:23:46 +0100komikat(~komikat@183.82.154.239)
2022-02-22 16:23:58 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-02-22 16:26:21 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds)
2022-02-22 16:29:19 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2022-02-22 16:29:19 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2022-02-22 16:29:19 +0100dibblego(~dibblego@haskell/developer/dibblego)
2022-02-22 16:29:22 +0100 <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...
2022-02-22 16:29:28 +0100Sgeo(~Sgeo@user/sgeo)
2022-02-22 16:32:50 +0100coot(~coot@213.134.190.95) (Quit: coot)
2022-02-22 16:34:04 +0100komikat(~komikat@183.82.154.239) (Remote host closed the connection)
2022-02-22 16:34:28 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 272 seconds)
2022-02-22 16:34:42 +0100alx741(~alx741@157.100.197.240)
2022-02-22 16:34:43 +0100komikat(~komikat@183.82.154.239)
2022-02-22 16:34:47 +0100komikat(~komikat@183.82.154.239) (Remote host closed the connection)
2022-02-22 16:34:59 +0100komikat(~komikat@183.82.154.239)
2022-02-22 16:37:56 +0100spacenautx(~spacenaut@user/spacenautx) (Quit: WeeChat 3.4)
2022-02-22 16:39:33 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 16:50:34 +0100max22-(~maxime@2a01cb088335980021dd241f5bb447ef.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2022-02-22 16:51:14 +0100max22-(~maxime@2a01cb088335980027fe609829d061d7.ipv6.abo.wanadoo.fr)
2022-02-22 16:57:13 +0100alx741(~alx741@157.100.197.240)
2022-02-22 16:57:27 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2022-02-22 16:58:56 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-02-22 16:59:21 +0100xkuru(~xkuru@user/xkuru)
2022-02-22 16:59:21 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-22 16:59:29 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-22 17:00:12 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-02-22 17:00:24 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 17:01:10 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:1947:6ff5:3916:a376) (Quit: WeeChat 2.8)
2022-02-22 17:02:07 +0100joegard(~joegard@179.33.119.167)
2022-02-22 17:03:00 +0100zebrag(~chris@user/zebrag)
2022-02-22 17:04:52 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2022-02-22 17:07:09 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
2022-02-22 17:09:00 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 240 seconds)
2022-02-22 17:09:19 +0100jespada(~jespada@85.255.234.190)
2022-02-22 17:10:38 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2022-02-22 17:12:31 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2022-02-22 17:12:31 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2022-02-22 17:12:31 +0100dibblego(~dibblego@haskell/developer/dibblego)
2022-02-22 17:13:28 +0100joegard(~joegard@179.33.119.167) (Quit: Client closed)
2022-02-22 17:17:29 +0100alx741(~alx741@157.100.197.240)
2022-02-22 17:21:21 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 17:21:54 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2022-02-22 17:22:36 +0100bahamas(~lucian@84.232.140.52) (Ping timeout: 240 seconds)
2022-02-22 17:32:03 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2022-02-22 17:32:18 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2022-02-22 17:37:30 +0100alx741(~alx741@157.100.197.240)
2022-02-22 17:38:57 +0100dust_(~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202)
2022-02-22 17:40:42 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 17:43:00 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-22 17:44:01 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-22 17:45:12 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
2022-02-22 17:47:07 +0100komikat(~komikat@183.82.154.239) (Read error: Connection reset by peer)
2022-02-22 17:47:24 +0100komikat(~komikat@183.82.154.239)
2022-02-22 17:47:57 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-22 17:48:37 +0100Benzi-Junior(~BenziJuni@dsl-149-66-61.hive.is) (Ping timeout: 240 seconds)
2022-02-22 17:50:26 +0100vysn(~vysn@user/vysn) (Ping timeout: 260 seconds)
2022-02-22 17:50:37 +0100ph88(~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Quit: Leaving)
2022-02-22 17:54:12 +0100Vajb(~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e)
2022-02-22 17:54:23 +0100 <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?
2022-02-22 17:54:23 +0100 <fendor[m]> I forgot, does dropping support for a ghc version require a major version bump?
2022-02-22 17:54:54 +0100 <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
2022-02-22 17:57:01 +0100 <ski> (s/polymorphic/parametric/)
2022-02-22 17:57:21 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-02-22 17:57:43 +0100 <kronicma1> oops thanks ski
2022-02-22 17:58:52 +0100 <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)
2022-02-22 17:59:08 +0100alx741(~alx741@181.199.42.143)
2022-02-22 17:59:17 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 256 seconds)
2022-02-22 17:59:22 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-02-22 18:01:19 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2022-02-22 18:01:32 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 18:02:27 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 18:03:18 +0100 <ski> kronicma1 : "deep embedding" of eDSL might be slightly relevant
2022-02-22 18:03:35 +0100Vajb(~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e) (Ping timeout: 256 seconds)
2022-02-22 18:04:07 +0100 <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))
2022-02-22 18:05:08 +0100 <ski> (an alternative is to fuse `Bind' with the primitive operations. or possibly to go CPS, which is close)
2022-02-22 18:06:28 +0100 <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
2022-02-22 18:06:28 +0100 <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?
2022-02-22 18:07:14 +0100 <lyxia> kronicma1: isn't that Fix (for example in data-fix)
2022-02-22 18:07:38 +0100 <ski> i think kronicma1 also wanted the recursion baked in
2022-02-22 18:09:18 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Remote host closed the connection)
2022-02-22 18:11:25 +0100CATS(~apic@brezn2.muc.ccc.de)
2022-02-22 18:11:47 +0100 <kronicma1> lyxia, I don't think that's it
2022-02-22 18:11:56 +0100 <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
2022-02-22 18:12:09 +0100 <c_wraith> turlando: from the point of view of your interface, isn't that all just a state?
2022-02-22 18:12:34 +0100 <c_wraith> turlando: like, why does it need to change at all to accommodate that use pattern?
2022-02-22 18:12:36 +0100 <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
2022-02-22 18:13:17 +0100 <lyxia> I see, yeah Fix still keeps the "Bind" separate.
2022-02-22 18:13:40 +0100 <ski> BindTryCreateFile :: String -> String -> Simulator a -> Simulator a -- &c.
2022-02-22 18:14:16 +0100 <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)
2022-02-22 18:15:22 +0100 <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.
2022-02-22 18:15:25 +0100 <ski> BindTryCreateFile f s c >>= k = BindTryCreateFile f s (c >>= k)
2022-02-22 18:15:49 +0100 <ski> tryCreateFile f s = BindTryCreateFile f s (Return ())
2022-02-22 18:16:21 +0100 <ski> (s/Return/Pure/, i suppose)
2022-02-22 18:16:36 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 18:17:42 +0100 <ski> but you could also go `newtype Simulator a = MkSimulator ((a -> Action) -> Action)', where `data Action = TryCreateFile String String Action | ...', which is the CPS
2022-02-22 18:17:59 +0100 <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
2022-02-22 18:18:25 +0100 <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)
2022-02-22 18:18:46 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-22 18:19:22 +0100alx741(~alx741@157.100.197.240)
2022-02-22 18:20:05 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-02-22 18:21:48 +0100 <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
2022-02-22 18:22:16 +0100turlandois ski is talking to me
2022-02-22 18:22:26 +0100 <turlando> s/is/is not sure/
2022-02-22 18:23:06 +0100ajb_(~ajb@cupid.whatbox.ca) (Remote host closed the connection)
2022-02-22 18:23:35 +0100 <ski> turlando : i was in the kronicma1 conversation
2022-02-22 18:23:49 +0100skicalls the `/me' police
2022-02-22 18:24:22 +0100 <turlando> Sorry, the 'Simulator a' caught my attention
2022-02-22 18:24:42 +0100 <ski> nw. it was in the example kronicma1 linked to
2022-02-22 18:25:01 +0100 <ski> (also, i'm not sure what you mean by "unschedule events")
2022-02-22 18:25:01 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 18:25:45 +0100ubert1(~Thunderbi@2a02:8109:9880:303c:b499:2e2d:5a8b:934e) (Remote host closed the connection)
2022-02-22 18:26:36 +0100 <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
2022-02-22 18:26:50 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
2022-02-22 18:27:22 +0100 <c_wraith> I think you're making things too complicated by thinking of it as something outside of the state
2022-02-22 18:27:34 +0100 <c_wraith> It is quite literally part of the state
2022-02-22 18:28:02 +0100 <ski> at least it could be
2022-02-22 18:28:30 +0100 <turlando> So you suggest to make it part of non-user-defined state, right?
2022-02-22 18:28:45 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-22 18:28:58 +0100 <c_wraith> Well, make part of the state user-defined
2022-02-22 18:30:04 +0100 <c_wraith> But really, this whole thing needs code - at least type signatures. That would make the conversation a lot more useful.
2022-02-22 18:30:28 +0100 <c_wraith> Maybe you want a data type like Mealy which closes over local state.
2022-02-22 18:30:50 +0100 <c_wraith> Maybe you want the global state augmented
2022-02-22 18:31:20 +0100 <c_wraith> There are just too many degrees of freedom in text.
2022-02-22 18:31:57 +0100econo(uid147250@user/econo)
2022-02-22 18:33:51 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-22 18:33:55 +0100 <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
2022-02-22 18:35:31 +0100bahamas(~lucian@84.232.140.52)
2022-02-22 18:35:39 +0100 <ski> oh, you also had something called `Simulator' there :)
2022-02-22 18:35:47 +0100 <ski> (er, `Simulation')
2022-02-22 18:35:50 +0100 <turlando> :)
2022-02-22 18:36:01 +0100ec(~ec@gateway/tor-sasl/ec)
2022-02-22 18:36:06 +0100 <turlando> Here is an example "client" https://github.com/turlando/discrete-event-simulator/blob/master/src/Simulator/Example/Server.hs
2022-02-22 18:36:30 +0100 <turlando> (just simulating a single threaded server, again, confusing naming)
2022-02-22 18:37:56 +0100 <ski> oh, `CalendarEvent event' is a type synonym
2022-02-22 18:38:10 +0100 <ski> (or family, i guess ?)
2022-02-22 18:38:39 +0100 <ski> incorrect `Show' instances detected
2022-02-22 18:38:46 +0100 <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
2022-02-22 18:38:51 +0100Vajb(~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e)
2022-02-22 18:39:09 +0100 <turlando> (the calendar is the future event list I mentioned above)
2022-02-22 18:39:58 +0100 <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
2022-02-22 18:40:42 +0100 <c_wraith> ok, so after reviewing most of the code there - why is Simulation a class at all?
2022-02-22 18:41:39 +0100 <ski> turlando : do you have multiple instances of `Simulator' ? do you have any operations which are polymorphic over `Simulator' instances ?
2022-02-22 18:41:40 +0100alx741(~alx741@157.100.197.240)
2022-02-22 18:42:01 +0100 <c_wraith> yeah, the same question ski has. :)
2022-02-22 18:42:10 +0100 <ski> turlando : anyway, please don't abuse `Show' for custom pretty-printing
2022-02-22 18:42:17 +0100 <turlando> The run function in the Simulator module is polymorphic over Simulation
2022-02-22 18:43:03 +0100 <c_wraith> But why is it a class?
2022-02-22 18:43:15 +0100 <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
2022-02-22 18:43:15 +0100Vajb(~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e) (Ping timeout: 256 seconds)
2022-02-22 18:43:25 +0100 <ski> could `Simulation' be a record ?
2022-02-22 18:44:15 +0100 <turlando> Why do you suggest to change it to a record?
2022-02-22 18:44:19 +0100 <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)
2022-02-22 18:44:54 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 18:45:06 +0100 <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.
2022-02-22 18:45:39 +0100 <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))
2022-02-22 18:46:03 +0100 <c_wraith> If you keep going in that direction, you eventually end up with a type kind of like Mealy. Or maybe Fold.
2022-02-22 18:46:06 +0100 <ski> what c_wraith just said can be a pro, as well as a con, depending on what you're after
2022-02-22 18:46:24 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 18:48:18 +0100 <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?
2022-02-22 18:48:46 +0100dust_(~dust@2409:4071:4e8b:a664:ed93:7b31:fb42:6202) (Quit: Konversation terminated!)
2022-02-22 18:50:05 +0100 <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
2022-02-22 18:50:19 +0100 <turlando> s/I also/I also can/
2022-02-22 18:50:28 +0100 <turlando> s/handling/handle/
2022-02-22 18:50:35 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt)
2022-02-22 18:50:57 +0100MajorBiscuit(~MajorBisc@c-001-029-040.client.tudelft.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-22 18:51:11 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-22 18:51:24 +0100 <romesrf> hello, I'm running quickcheck with tasty but I don't get the falsifiable counter example
2022-02-22 18:51:35 +0100 <romesrf> *** Failed! Falsified (after 1 test):
2022-02-22 18:51:37 +0100 <romesrf> Use --quickcheck-replay=805757 to reproduce.
2022-02-22 18:52:04 +0100 <romesrf> I'm using cabal, how would I run the tests and output the counter example?
2022-02-22 18:52:44 +0100 <romesrf> I've also seen --quickcheck-verbose mentioned online -- but I don't know where to pass the flags
2022-02-22 18:52:46 +0100 <sclv> you can run the test executable directly.
2022-02-22 18:52:59 +0100 <sclv> its under dist-newstyle and the "list-bin" command will find it
2022-02-22 18:53:58 +0100polyphem(~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Quit: WeeChat 3.4)
2022-02-22 18:54:06 +0100 <romesrf> Just did, but unfortunately I still get no counter example
2022-02-22 18:54:49 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
2022-02-22 18:54:51 +0100 <romesrf> the test is Gen Bool, and I'm using Test.Tasty.Quickcheck.testProperty
2022-02-22 18:55:38 +0100 <sclv> running it directly lets you pass the flags more easily, is why i suggested
2022-02-22 18:55:57 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-22 18:56:09 +0100 <romesrf> oh!
2022-02-22 18:56:20 +0100 <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
2022-02-22 18:56:23 +0100 <romesrf> thank you :)
2022-02-22 18:56:28 +0100 <sclv> you can even run it with --help to get a pretty good listing of what the options are
2022-02-22 18:56:35 +0100jao(~jao@68.235.43.174)
2022-02-22 18:56:40 +0100 <romesrf> sclv: that did it, ty
2022-02-22 18:56:51 +0100 <ProfSimm> Why have both do notation and >>
2022-02-22 18:57:15 +0100 <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,
2022-02-22 18:57:21 +0100 <ski> event, or result types
2022-02-22 18:57:31 +0100 <c_wraith> ProfSimm: sometimes it's easier to not have a lot have a lot of nested infix applications
2022-02-22 18:57:55 +0100jlamothe(~jlamothe@198.251.61.229)
2022-02-22 18:58:04 +0100 <ski> (whether that would be desirable or not is a different question)
2022-02-22 18:58:04 +0100 <ProfSimm> c_wraith: if we wrap do {} around >> application and replace >> with ; it's the same source
2022-02-22 18:58:14 +0100 <c_wraith> ProfSimm: also, do notation adds sugar for more than (>>)
2022-02-22 18:58:30 +0100 <ProfSimm> Does it
2022-02-22 18:58:33 +0100arcadiancomp(~anon626@96-91-245-193-static.hfc.comcastbusiness.net) (Quit: Leaving)
2022-02-22 18:59:06 +0100 <c_wraith> :t \f mx my -> do { x <- mx ; y <- my ; f x y } -- ProfSimm
2022-02-22 18:59:07 +0100 <lambdabot> Monad m => (t1 -> t2 -> m b) -> m t1 -> m t2 -> m b
2022-02-22 18:59:11 +0100dalek_caan(~Thunderbi@109.252.124.86)
2022-02-22 18:59:27 +0100 <dolio> @undo do { x ; y ; z }
2022-02-22 18:59:27 +0100 <lambdabot> x >> y >> z
2022-02-22 18:59:44 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-02-22 18:59:44 +0100 <ski> @undo do { x <- mx ; y <- my ; f x y }
2022-02-22 18:59:44 +0100 <lambdabot> mx >>= \ x -> my >>= \ y -> f x y
2022-02-22 18:59:54 +0100 <ProfSimm> Thanks
2022-02-22 19:00:06 +0100 <c_wraith> ProfSimm: also, that assertion isn't true the instant any of your statements involve infix operators with lower precedence than (>>)
2022-02-22 19:00:38 +0100 <ski> @undo do {x <- mx; let {y = ey}; Just z <- mz; f x y z}
2022-02-22 19:00:39 +0100 <lambdabot> mx >>= \ x -> let { y = ey} in mz >>= \ a -> case a of { Just z -> f x y z; _ -> fail ""}
2022-02-22 19:01:05 +0100 <turlando> c_wraith: no, but I might need to run the simulation with different conditions (e.g. terminate at a given Instant)
2022-02-22 19:01:38 +0100 <ski> @undo [f x y z | x <- xs,let y = e,Just z <- mzs,p x y z]
2022-02-22 19:01:38 +0100 <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
2022-02-22 19:01:47 +0100 <turlando> ski: I'm tryinf to figure out the implications of that
2022-02-22 19:01:54 +0100alx741(~alx741@157.100.197.240)
2022-02-22 19:02:14 +0100 <ski> turlando : well, you lose the "unique-implementation-per-type", and also the ability to have FDs
2022-02-22 19:03:35 +0100 <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
2022-02-22 19:03:47 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 19:04:26 +0100emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net)
2022-02-22 19:05:00 +0100alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-02-22 19:05:52 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 19:07:04 +0100 <ski> i guess we're still also wondering if you have multiple instances of `Simulation' in mind at all
2022-02-22 19:08:32 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-22 19:09:26 +0100 <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
2022-02-22 19:09:33 +0100 <turlando> Not sure if it answers the question though
2022-02-22 19:10:35 +0100 <ski> and you'd want to share code (more than `run') that's polymorphic over that ?
2022-02-22 19:11:35 +0100bahamas(~lucian@84.232.140.52) (Ping timeout: 256 seconds)
2022-02-22 19:14:04 +0100dalek_caan(~Thunderbi@109.252.124.86) ()
2022-02-22 19:14:33 +0100 <turlando> Right now as an example I can definitely think of another function: runUntil that takes an upper bound Instant
2022-02-22 19:14:40 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
2022-02-22 19:15:25 +0100 <turlando> (I'm not trying to justify my design choises, I'm trying to understand what is wrong and why)
2022-02-22 19:17:59 +0100Akiva(~Akiva@user/Akiva)
2022-02-22 19:18:51 +0100 <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
2022-02-22 19:19:24 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-02-22 19:19:48 +0100 <ski> @where existential-antipattern
2022-02-22 19:19:49 +0100 <lambdabot> "Haskell Antipattern: Existential Typeclass" by Luke Palmer at <http://lukepalmer.wordpress.com/2010/01/24/haskell-antipattern-existential-typeclass/>
2022-02-22 19:20:07 +0100 <ski> is somewhat related (though a more advanced example of misuse/overuse)
2022-02-22 19:20:18 +0100 <ski> (not that there's anything wrong with existentials, per se)
2022-02-22 19:21:28 +0100analognoise(~analognoi@185.202.221.26)
2022-02-22 19:23:21 +0100 <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?
2022-02-22 19:24:27 +0100alx741(~alx741@157.100.197.240)
2022-02-22 19:24:45 +0100 <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.
2022-02-22 19:25:43 +0100cfricke(~cfricke@user/cfricke)
2022-02-22 19:26:56 +0100 <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
2022-02-22 19:27:21 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 19:27:57 +0100alx741(~alx741@157.100.197.240)
2022-02-22 19:30:41 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-02-22 19:31:02 +0100deadmarshal(~deadmarsh@95.38.119.78)
2022-02-22 19:32:04 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 19:32:22 +0100Guest85(~Guest85@134.101.5.46)
2022-02-22 19:32:25 +0100Guest85(~Guest85@134.101.5.46) (Write error: Broken pipe)
2022-02-22 19:33:23 +0100Midjak(~Midjak@82.66.147.146)
2022-02-22 19:34:04 +0100 <ski> turlando : the existential thing was mostly an aside. you're not doing anything existential, that i can see
2022-02-22 19:34:45 +0100 <ski> turlando : it's still unclear to me what you want from this new event scheduling, how you want to structure it
2022-02-22 19:35:15 +0100Guest68(~Guest68@134.101.5.46)
2022-02-22 19:35:37 +0100deadmarshal(~deadmarsh@95.38.119.78) (Ping timeout: 256 seconds)
2022-02-22 19:36:15 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 272 seconds)
2022-02-22 19:37:00 +0100alp(~alp@user/alp)
2022-02-22 19:37:11 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 19:37:25 +0100 <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)
2022-02-22 19:39:10 +0100 <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)
2022-02-22 19:41:48 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-22 19:42:40 +0100vysn(~vysn@user/vysn)
2022-02-22 19:43:18 +0100 <ski> where do these "future events" come from ?
2022-02-22 19:43:22 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-22 19:44:23 +0100 <turlando> ski: either from a user defined list or from a randomly generated one, in both cases they end up in the Calendar type
2022-02-22 19:45:30 +0100 <ski> but they could also come from transitions on earlier events scheduling more events ?
2022-02-22 19:46:11 +0100nek0(~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat)
2022-02-22 19:46:11 +0100deadmarshal(~deadmarsh@95.38.119.78)
2022-02-22 19:46:12 +0100 <ski> do you want the transition for an event to be able to see other (presumably only future ?) events ? change (e.g. remove) them ?
2022-02-22 19:46:57 +0100little_mac(~little_ma@2601:410:4300:3ce0:283e:efa7:e0c6:e848)
2022-02-22 19:47:33 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-02-22 19:48:06 +0100jao(~jao@68.235.43.174) (Remote host closed the connection)
2022-02-22 19:48:45 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-22 19:49:00 +0100jao(~jao@68.235.43.174)
2022-02-22 19:49:02 +0100alx741(~alx741@157.100.197.240)
2022-02-22 19:49:17 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
2022-02-22 19:51:35 +0100 <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
2022-02-22 19:51:35 +0100 <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
2022-02-22 19:51:51 +0100norg[m](~norgmatri@2001:470:69fc:105::1:c809)
2022-02-22 19:52:17 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 19:54:51 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-22 19:57:31 +0100 <maerwald> anyone ever used Database.PostgreSQL.Simple.Notification successfully?
2022-02-22 19:57:47 +0100 <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
2022-02-22 19:58:02 +0100euandreh(~euandreh@2804:14c:33:9fe5:436f:e6b2:c8c4:a5a1) (Ping timeout: 240 seconds)
2022-02-22 19:58:24 +0100 <ski> (just because you can add doesn't mean it would have to make sense to remove, imho)
2022-02-22 19:58:36 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-22 19:58:48 +0100skiwas reminded of simulators for VHDL
2022-02-22 19:59:25 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 256 seconds)
2022-02-22 19:59:27 +0100 <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
2022-02-22 20:00:04 +0100jespada(~jespada@85.255.234.190) (Read error: Connection reset by peer)
2022-02-22 20:00:34 +0100dextaa_(~dextaa@user/dextaa)
2022-02-22 20:01:31 +0100euandreh(~euandreh@2804:14c:33:9fe5:fb55:f4b:9349:d06d)
2022-02-22 20:01:35 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
2022-02-22 20:06:47 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 256 seconds)
2022-02-22 20:06:50 +0100 <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)
2022-02-22 20:07:27 +0100 <ski> .. so, i'm still not sure what you intend by "dependent event"
2022-02-22 20:07:41 +0100polyphem(~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
2022-02-22 20:08:28 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-22 20:09:03 +0100alx741(~alx741@157.100.197.240)
2022-02-22 20:09:29 +0100nek0(~nek0@nek0.eu)
2022-02-22 20:11:10 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 20:15:05 +0100Ranhir(~Ranhir@157.97.53.139) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
2022-02-22 20:16:04 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 20:16:09 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-02-22 20:17:30 +0100vicfred(~vicfred@user/vicfred)
2022-02-22 20:18:34 +0100Codaraxis(~Codaraxis@user/codaraxis)
2022-02-22 20:20:39 +0100pokhu(~rishi@103.206.114.112) ()
2022-02-22 20:21:48 +0100deadmarshal(~deadmarsh@95.38.119.78) (Ping timeout: 240 seconds)
2022-02-22 20:24:38 +0100bahamas(~lucian@84.232.140.52)
2022-02-22 20:27:44 +0100 <turlando> As you said ski: "depending in the sense of another event scheduling it"
2022-02-22 20:28:00 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-02-22 20:29:02 +0100coot(~coot@213.134.190.95)
2022-02-22 20:29:27 +0100bahamas(~lucian@84.232.140.52) (Ping timeout: 272 seconds)
2022-02-22 20:29:48 +0100 <Zemyla> turlando: Can you use the IO monad and a RandomGen IOVar?
2022-02-22 20:31:22 +0100 <turlando> Zemyla why an IOVar?
2022-02-22 20:34:27 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-02-22 20:34:32 +0100alx741(~alx741@181.199.42.143)
2022-02-22 20:34:42 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-02-22 20:35:26 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-22 20:35:26 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-22 20:35:26 +0100wroathe(~wroathe@user/wroathe)
2022-02-22 20:40:18 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2022-02-22 20:41:11 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 20:42:51 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 245 seconds)
2022-02-22 20:45:14 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-02-22 20:46:27 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-02-22 20:46:31 +0100Lord_of_Life_Lord_of_Life
2022-02-22 20:47:42 +0100fendor_(~fendor@178.165.167.221.wireless.dyn.drei.com) (Remote host closed the connection)
2022-02-22 20:50:14 +0100jm_jj(~jmjj@mobile-user-c3a5cc-243.dhcp.inet.fi) (Quit: Leaving)
2022-02-22 20:53:56 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
2022-02-22 20:56:05 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 256 seconds)
2022-02-22 20:56:37 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-02-22 20:57:59 +0100alx741(~alx741@157.100.197.240)
2022-02-22 21:01:01 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 21:03:24 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-22 21:04:07 +0100 <ProfSimm> Isn't it a flaw to allow a Map to be converted toList, when it's not a list
2022-02-22 21:04:24 +0100 <ProfSimm> Makes all types kinda blurry in terms of semantics
2022-02-22 21:04:27 +0100 <dolio> Why?
2022-02-22 21:04:30 +0100bahamas(~lucian@84.232.140.52)
2022-02-22 21:04:42 +0100 <ProfSimm> dolio: well what's the order of items in a map
2022-02-22 21:05:06 +0100 <dolio> For Data.Map, it's the ordering on the keys.
2022-02-22 21:05:26 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-22 21:05:33 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 272 seconds)
2022-02-22 21:05:51 +0100 <ProfSimm> dolio: what is that ordering
2022-02-22 21:05:55 +0100 <monochrom> Is it also a flaw to convert Maybe to list?
2022-02-22 21:06:15 +0100 <ProfSimm> monochrom: well it is a list
2022-02-22 21:06:18 +0100 <dolio> It's what's defined in the Ord type class that most Data.Map functions depend on.
2022-02-22 21:07:13 +0100juhp(~juhp@128.106.188.82)
2022-02-22 21:07:35 +0100 <byorgey> ProfSimm: Data.Map is an ordered map, just like e.g. TreeMap in Java, if you're familiar with that
2022-02-22 21:07:42 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-22 21:08:05 +0100 <ProfSimm> So what is an unordered map
2022-02-22 21:08:28 +0100 <ProfSimm> I mean OMap is ordered, I thought.
2022-02-22 21:08:31 +0100 <ProfSimm> Data.Map.Ordered
2022-02-22 21:08:35 +0100 <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"
2022-02-22 21:09:03 +0100 <ProfSimm> byorgey: "you should not rely on [feature that exists]" famous last words :P
2022-02-22 21:09:11 +0100 <byorgey> ProfSimm: I know =)
2022-02-22 21:09:21 +0100bahamas(~lucian@84.232.140.52) (Ping timeout: 272 seconds)
2022-02-22 21:09:23 +0100 <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*
2022-02-22 21:09:35 +0100 <ProfSimm> byorgey: yes, well it's some order I guess
2022-02-22 21:09:40 +0100 <monochrom> I haven't seen anyone relying on HashMap's toList order.
2022-02-22 21:09:50 +0100 <ProfSimm> monochrom: it's not always intentional
2022-02-22 21:10:24 +0100 <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
2022-02-22 21:10:25 +0100 <monochrom> No, I haven't seen anyone doing that accidentally either.
2022-02-22 21:10:37 +0100 <ProfSimm> Well I just provided an example
2022-02-22 21:11:07 +0100 <ProfSimm> monochrom: in JS, object iteration had no specific order.
2022-02-22 21:11:21 +0100 <ProfSimm> monochrom: no one therefore relied on it and all was fine.
2022-02-22 21:11:40 +0100 <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
2022-02-22 21:12:09 +0100 <monochrom> I'm talking about the Haskell community, not the JS community.
2022-02-22 21:12:39 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net)
2022-02-22 21:12:56 +0100 <dolio> What does the example even mean?
2022-02-22 21:12:58 +0100 <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"
2022-02-22 21:13:10 +0100 <maerwald> people rely on bugs. All the time
2022-02-22 21:13:21 +0100 <ProfSimm> Also.
2022-02-22 21:13:37 +0100 <maerwald> Software doesn't easily allow to distinguish bugs and features
2022-02-22 21:13:40 +0100 <ProfSimm> monochrom: if there was no specific order in toList, it'd mean it's not deterministic
2022-02-22 21:13:51 +0100 <ProfSimm> maerwald: absolutely
2022-02-22 21:14:03 +0100 <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) ?
2022-02-22 21:14:19 +0100 <maerwald> and in Haskell we have this odd notion of API that relates mainly to *types* and not *behavior* (or even *laws*)
2022-02-22 21:14:52 +0100 <maerwald> so your bugfix is PVP compliant, but you still cause a backend on the other end of the world to crash
2022-02-22 21:16:30 +0100x88x88x(~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb)
2022-02-22 21:17:07 +0100 <geekosaur> https://xkcd.com/1172/
2022-02-22 21:18:14 +0100alx741(~alx741@157.100.197.240)
2022-02-22 21:19:06 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 250 seconds)
2022-02-22 21:19:08 +0100 <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)
2022-02-22 21:19:20 +0100 <byorgey> polyphem: I don't know what your second question means though
2022-02-22 21:19:32 +0100kenran(~kenran@200116b82b49e8006646f20137f4ed5b.dip.versatel-1u1.de)
2022-02-22 21:20:51 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-02-22 21:21:41 +0100 <monochrom> I think the second question is answered by "Map k -> ([] . (k,))" too.
2022-02-22 21:21:42 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 21:22:37 +0100 <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,)
2022-02-22 21:23:10 +0100 <polyphem> s/natural composition/natural transformation/
2022-02-22 21:25:52 +0100 <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.
2022-02-22 21:26:42 +0100 <monochrom> Then a few days ago I was learning monad morphisms. Naturally, a natural transformation that furthermore "preserves return" and "preserves join".
2022-02-22 21:27:14 +0100coot(~coot@213.134.190.95) (Quit: coot)
2022-02-22 21:27:35 +0100 <monochrom> I finally realized that just to state "preserves join" I need the horizontal composition of join and join. :)
2022-02-22 21:27:45 +0100 <byorgey> =D
2022-02-22 21:29:19 +0100 <polyphem> monochrom: the tongue keeps playing where the tooth hurts :)
2022-02-22 21:29:43 +0100 <ski> @type \fk fv -> M.mapKeysMonotonic fk . M.map fv
2022-02-22 21:29:44 +0100 <lambdabot> (k1 -> k2) -> (a1 -> a2) -> M.Map k1 a1 -> M.Map k2 a2
2022-02-22 21:29:48 +0100yauhsien_(~yauhsien@61-231-19-150.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-02-22 21:29:48 +0100 <ski> @type \fk fv -> M.mapKeysWith (<>) fk . M.map fv
2022-02-22 21:29:50 +0100 <lambdabot> (Ord k2, Semigroup a1) => (k1 -> k2) -> (a2 -> a1) -> M.Map k1 a2 -> M.Map k2 a1
2022-02-22 21:29:53 +0100 <ski> @type \ks fk fv m -> M.fromList [(k,fv v) | k <- ks,Just v <- [m M.!? (fk k)]]
2022-02-22 21:29:54 +0100 <lambdabot> (Ord k1, Ord k2) => [k1] -> (k1 -> k2) -> (t -> a) -> M.Map k2 t -> M.Map k1 a
2022-02-22 21:30:02 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt) (Ping timeout: 240 seconds)
2022-02-22 21:30:17 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
2022-02-22 21:30:41 +0100 <polyphem> ski: barely not flooding :)
2022-02-22 21:30:47 +0100Pickchea(~private@user/pickchea)
2022-02-22 21:31:01 +0100skiglances around nervously
2022-02-22 21:31:50 +0100skistill can never recall which is the horizontal and which is the vertical one
2022-02-22 21:32:13 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535)
2022-02-22 21:33:32 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-22 21:34:11 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909)
2022-02-22 21:35:19 +0100 <monochrom> Heh a lot of "left, right", "horizontal, vertical" namings in category theory were very accidental and arbitrary.
2022-02-22 21:35:54 +0100 <monochrom> Comparing to particle physics. The "top" quark is much heavier than the "bottom" quark. Ah, no wonder why they are so unstable. >:)
2022-02-22 21:36:03 +0100 <monochrom> s/Comparing/Comparable/
2022-02-22 21:36:49 +0100 <ski> ok, "vertical composition" is "composition", and "horizontal composition" is "lifted composition" (i'm sure i'll quickly forget this again)
2022-02-22 21:36:49 +0100kuribas(~user@ptr-25vy0iagvdrvz4nz7gs.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-02-22 21:37:04 +0100 <ski> (yea, i don't like the "left adjoint","right adjoint" naming, either)
2022-02-22 21:37:55 +0100 <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.
2022-02-22 21:38:05 +0100 <byorgey> Of course that's yet another thing to remember, but somehow I find it easier
2022-02-22 21:38:22 +0100 <monochrom> Left adjoint is at least mnemonicable by "Hom(F x, y)" ooohhh F is on the left.
2022-02-22 21:38:29 +0100alx741(~alx741@157.100.197.240)
2022-02-22 21:38:37 +0100 <monochrom> Now, left and right Kan extensions, I still haven't figured out how.
2022-02-22 21:38:58 +0100 <ski> except if you get into the habit of writing `A <---< F B'
2022-02-22 21:39:11 +0100 <monochrom> Yikes haha.
2022-02-22 21:39:17 +0100 <ski> (i do that, fairly often)
2022-02-22 21:39:27 +0100gdd(~gdd@129.199.146.230) (Quit: WeeChat 3.3)
2022-02-22 21:39:42 +0100 <monochrom> How would you like "source adjoint" and "target adjoint"?
2022-02-22 21:39:58 +0100 <ski> might work
2022-02-22 21:40:21 +0100 <ski> (i'm already using "pre-inverse" and "post-inverse", rather that "left-inverse" and "right-inverse")
2022-02-22 21:40:24 +0100 <polyphem> ski: isn't your third function Profunctor dimap
2022-02-22 21:40:35 +0100 <ski> polyphem : something like that
2022-02-22 21:40:50 +0100spacenautx(~spacenaut@user/spacenautx)
2022-02-22 21:41:10 +0100 <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 ?"
2022-02-22 21:41:17 +0100Null_A(~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds)
2022-02-22 21:41:26 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 21:42:11 +0100Batzy(~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-02-22 21:42:35 +0100Batzy(~quassel@user/batzy)
2022-02-22 21:42:36 +0100ccntrq(~Thunderbi@2a01:e34:eccb:b060:8793:de70:3992:9c12) (Ping timeout: 240 seconds)
2022-02-22 21:42:58 +0100 <ski> ("are the key types ordered ?" implicitly suggests "are the key mappings order morphisms ?")
2022-02-22 21:43:01 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt)
2022-02-22 21:47:03 +0100 <ProfSimm> Can I make a map which is NOT iterable by design
2022-02-22 21:47:40 +0100gdd(~gdd@129.199.146.230)
2022-02-22 21:47:51 +0100 <monochrom> Sure.
2022-02-22 21:48:00 +0100 <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)
2022-02-22 21:49:23 +0100 <monochrom> Ah, yeah, I need to spend more time on that connection.
2022-02-22 21:49:40 +0100 <ski> (or with more traditional notation, `Ran_F H' resp. `Lan_F H')
2022-02-22 21:49:41 +0100pavonia(~user@user/siracusa)
2022-02-22 21:53:03 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 272 seconds)
2022-02-22 21:55:00 +0100Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 252 seconds)
2022-02-22 21:57:20 +0100 <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'
2022-02-22 21:58:07 +0100 <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)'
2022-02-22 21:58:30 +0100alx741(~alx741@181.199.42.143)
2022-02-22 22:00:47 +0100Ariakenom_(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: Leaving)
2022-02-22 22:02:16 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 22:02:19 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
2022-02-22 22:02:46 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2022-02-22 22:02:59 +0100alx741(~alx741@181.199.42.143)
2022-02-22 22:04:07 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-02-22 22:04:50 +0100Flonk8(~Flonk@vps-zap441517-1.zap-srv.com)
2022-02-22 22:06:20 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-22 22:06:21 +0100Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 272 seconds)
2022-02-22 22:06:21 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com) (Ping timeout: 256 seconds)
2022-02-22 22:06:57 +0100Maxdamantus(~Maxdamant@user/maxdamantus)
2022-02-22 22:07:14 +0100vorpuni(~pvorp@2001:861:3881:c690:d322:f659:136d:eef6)
2022-02-22 22:07:27 +0100Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2022-02-22 22:07:29 +0100Flonk8Flonk
2022-02-22 22:10:51 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-02-22 22:12:53 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-02-22 22:13:09 +0100 <EvanR> ProfSimm, I assume by design means implementation rather than interface. Since you can present whatever interface to your ADT
2022-02-22 22:13:09 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-22 22:13:45 +0100 <EvanR> to construct something intentionally omitting a feature seems unusual though xD
2022-02-22 22:19:24 +0100acidjnk(~acidjnk@p200300d0c71f74276499fb418a282b02.dip0.t-ipconnect.de)
2022-02-22 22:20:49 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 22:23:19 +0100alx741(~alx741@157.100.197.240)
2022-02-22 22:24:24 +0100natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2022-02-22 22:24:25 +0100v0rpun1(~pvorp@2001:861:3881:c690:f6b3:6910:f82d:9617)
2022-02-22 22:25:24 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 22:26:06 +0100Slerba(~Slerba@85-76-49-165-nat.elisa-mobile.fi)
2022-02-22 22:26:08 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net)
2022-02-22 22:26:12 +0100natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2022-02-22 22:26:25 +0100Slerba(~Slerba@85-76-49-165-nat.elisa-mobile.fi) ()
2022-02-22 22:26:28 +0100Batzy(~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-02-22 22:26:30 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-22 22:26:30 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-22 22:26:30 +0100wroathe(~wroathe@user/wroathe)
2022-02-22 22:27:35 +0100Batzy(~quassel@user/batzy)
2022-02-22 22:27:45 +0100lottaquestions_(~nick@2607:fa49:5041:a200:11a4:6cdd:1796:d5ed) (Quit: Konversation terminated!)
2022-02-22 22:28:02 +0100lottaquestions_(~nick@2607:fa49:5041:a200:77ff:49ec:2b9c:10c4)
2022-02-22 22:29:02 +0100ajb(~ajb@cupid.whatbox.ca)
2022-02-22 22:29:35 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-02-22 22:29:48 +0100alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-02-22 22:30:54 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 22:35:49 +0100benin(~benin@59.92.239.104) (Quit: Ping timeout (120 seconds))
2022-02-22 22:35:50 +0100 <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
2022-02-22 22:36:09 +0100benin(~benin@59.92.239.104)
2022-02-22 22:40:08 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-22 22:40:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-02-22 22:46:47 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-22 22:46:47 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-22 22:46:47 +0100wroathe(~wroathe@user/wroathe)
2022-02-22 22:46:52 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-22 22:47:59 +0100 <dolio> Can't the appropriate optics be generated? Lens for x, traversal for y.
2022-02-22 22:48:48 +0100alx741(~alx741@157.100.197.240)
2022-02-22 22:49:48 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
2022-02-22 22:50:58 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2022-02-22 22:53:20 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 22:55:07 +0100 <ski> newtype Map k v = MkMap (k -> Maybe v) -- not iterable
2022-02-22 22:55:45 +0100 <ski> (cue covariant vs. contravariant powerset functor)
2022-02-22 22:57:39 +0100Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Ping timeout: 250 seconds)
2022-02-22 22:58:12 +0100jstolarek(~jstolarek@staticline-31-183-182-85.toya.net.pl) (Ping timeout: 256 seconds)
2022-02-22 22:58:26 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-02-22 23:00:11 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net) (Remote host closed the connection)
2022-02-22 23:00:49 +0100lavaman(~lavaman@98.38.249.169)
2022-02-22 23:04:10 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-02-22 23:04:51 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-22 23:05:51 +0100Megant(megant@user/megant) (Ping timeout: 256 seconds)
2022-02-22 23:07:17 +0100Megant(megant@user/megant)
2022-02-22 23:07:54 +0100 <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
2022-02-22 23:08:15 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net)
2022-02-22 23:09:58 +0100alx741(~alx741@157.100.197.240)
2022-02-22 23:10:17 +0100kenran(~kenran@200116b82b49e8006646f20137f4ed5b.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2022-02-22 23:13:32 +0100 <dolio> Turn off the field accessors and use the optics.
2022-02-22 23:13:55 +0100alp(~alp@user/alp)
2022-02-22 23:14:17 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 23:16:02 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-22 23:18:58 +0100jespada(~jespada@85.255.234.190)
2022-02-22 23:19:34 +0100 <freeman42x[m]> <dolio> "Turn off the field accessors and..." <- how do you achieve that?
2022-02-22 23:21:52 +0100 <dolio> NoFieldSelectors language setting, I think.
2022-02-22 23:23:25 +0100cynomys(~cynomys@user/cynomys)
2022-02-22 23:26:08 +0100Guest|86(~Guest|86@136.228.217.112)
2022-02-22 23:26:41 +0100Guest|86(~Guest|86@136.228.217.112) (Client Quit)
2022-02-22 23:28:32 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-02-22 23:30:52 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-22 23:31:57 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-22 23:32:29 +0100alx741(~alx741@157.100.197.240)
2022-02-22 23:33:20 +0100komikat(~komikat@183.82.154.239) (Remote host closed the connection)
2022-02-22 23:34:01 +0100komikat(~komikat@183.82.154.239)
2022-02-22 23:35:01 +0100spacenautx(~spacenaut@user/spacenautx) (Ping timeout: 272 seconds)
2022-02-22 23:36:35 +0100spacenautx(~spacenaut@user/spacenautx)
2022-02-22 23:36:46 +0100Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
2022-02-22 23:37:50 +0100v0rpun1(~pvorp@2001:861:3881:c690:f6b3:6910:f82d:9617) (Remote host closed the connection)
2022-02-22 23:38:17 +0100 <gentauro> how can I refactor this? `((\foo -> concat <$> foo) . mergeValues . concat)`. The `foo` part …
2022-02-22 23:38:23 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
2022-02-22 23:38:46 +0100 <dolio> fmap concat . mergeValues . concat
2022-02-22 23:38:56 +0100 <ski> dang, beat me to it :)
2022-02-22 23:39:14 +0100 <monochrom> I was dense and thought of section syntax only.
2022-02-22 23:39:43 +0100 <ski> gentauro> :t mergeValues
2022-02-22 23:40:02 +0100 <gentauro> dolio: thx
2022-02-22 23:40:18 +0100cynomys(~cynomys@user/cynomys) (Quit: Lost terminal)
2022-02-22 23:40:43 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-22 23:41:07 +0100cynomys(~cynomys@user/cynomys)
2022-02-22 23:41:38 +0100alt-romes(~romes@44.190.189.46.rev.vodafone.pt)
2022-02-22 23:42:37 +0100komikat(~komikat@183.82.154.239) (Ping timeout: 272 seconds)
2022-02-22 23:42:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:106a:7188:c314:3535) (Remote host closed the connection)
2022-02-22 23:42:41 +0100spacenautx(~spacenaut@user/spacenautx) (Ping timeout: 256 seconds)
2022-02-22 23:44:06 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt) (Ping timeout: 256 seconds)
2022-02-22 23:44:28 +0100spacenautx(~spacenaut@user/spacenautx)
2022-02-22 23:44:36 +0100dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-02-22 23:45:03 +0100spacenautx(~spacenaut@user/spacenautx) (Max SendQ exceeded)
2022-02-22 23:45:16 +0100 <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?
2022-02-22 23:45:43 +0100 <dolio> Dunno.
2022-02-22 23:47:29 +0100 <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.
2022-02-22 23:47:42 +0100 <dvdrw> it sounds like it'll lift your code into undefined behaviour :)
2022-02-22 23:47:45 +0100komikat(~komikat@183.82.154.239)
2022-02-22 23:48:00 +0100 <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)
2022-02-22 23:48:03 +0100 <gentauro> :)
2022-02-22 23:48:10 +0100 <geekosaur> doesn't that extension go along with others that mroe or less replace generating accessors via TH?
2022-02-22 23:48:19 +0100jespada(~jespada@85.255.234.190) (Read error: Connection reset by peer)
2022-02-22 23:48:20 +0100rtsn(~nstr@user/rtsn) (Quit: Lost terminal)
2022-02-22 23:49:10 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Read error: Connection reset by peer)
2022-02-22 23:49:13 +0100 <ski> gentauro : just wondering if one or both of those `concat's could be elided
2022-02-22 23:49:14 +0100bontaq`(~user@ool-45779fe5.dyn.optonline.net)
2022-02-22 23:50:54 +0100spacenautx(~spacenaut@user/spacenautx)
2022-02-22 23:53:18 +0100 <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`?
2022-02-22 23:58:08 +0100burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-22 23:58:36 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-22 23:59:07 +0100alx741(~alx741@157.100.197.240)
2022-02-22 23:59:29 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-02-22 23:59:51 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)