2021/12/18

2021-12-18 00:01:31 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-18 00:02:37 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-12-18 00:05:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-18 00:06:32 +0100slack1256(~slack1256@191.125.99.206) (Ping timeout: 240 seconds)
2021-12-18 00:09:02 +0100rond_(~rond_@100.42.200.146.dyn.plus.net)
2021-12-18 00:09:29 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-18 00:11:12 +0100wroathe(~wroathe@user/wroathe)
2021-12-18 00:12:00 +0100pfurla-matrix(~pedrofurl@2001:470:69fc:105::1:51d7)
2021-12-18 00:14:42 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-18 00:16:42 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-18 00:16:42 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 00:17:16 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-12-18 00:18:07 +0100aeka`(~aeka@2606:9580:100:c:8757:8ee:ec9c:991c) (Ping timeout: 250 seconds)
2021-12-18 00:19:47 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-12-18 00:22:51 +0100aeka(~aeka@pool-100-4-208-71.albyny.fios.verizon.net)
2021-12-18 00:23:22 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-18 00:29:58 +0100AlexNoo_(~AlexNoo@178.34.163.82)
2021-12-18 00:31:57 +0100rond_(~rond_@100.42.200.146.dyn.plus.net) (Quit: Client closed)
2021-12-18 00:32:07 +0100AlexZenon(~alzenon@178.34.151.66) (Ping timeout: 268 seconds)
2021-12-18 00:32:47 +0100Sofia1000(~Sofia1000@122-59-18-247-adsl.sparkbb.co.nz) (Quit: Client closed)
2021-12-18 00:33:01 +0100Alex_test(~al_test@178.34.151.66) (Ping timeout: 240 seconds)
2021-12-18 00:33:11 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.3)
2021-12-18 00:33:59 +0100AlexNoo(~AlexNoo@178.34.151.66) (Ping timeout: 268 seconds)
2021-12-18 00:34:42 +0100alx741(~alx741@157.100.93.160)
2021-12-18 00:35:34 +0100AlexZenon(~alzenon@178.34.163.82)
2021-12-18 00:37:02 +0100Alex_test(~al_test@178.34.163.82)
2021-12-18 00:39:02 +0100jijimofo(~cmo@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 240 seconds)
2021-12-18 00:40:30 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2021-12-18 00:40:33 +0100Sofia1000(~Sofia1000@122-59-18-247-adsl.sparkbb.co.nz)
2021-12-18 00:43:17 +0100machinedgod(~machinedg@173.231.123.211) (Ping timeout: 240 seconds)
2021-12-18 00:43:58 +0100 <Sofia1000> Thanks jackdk
2021-12-18 00:46:17 +0100jijimofo(~cmo@S010610561191f5d6.lb.shawcable.net)
2021-12-18 00:46:25 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 00:47:01 +0100Jing(~hedgehog@2604:a840:3::103e) (Remote host closed the connection)
2021-12-18 00:47:45 +0100Jing(~hedgehog@2604:a840:3::103e)
2021-12-18 00:48:22 +0100michalz(~michalz@185.246.204.104) (Remote host closed the connection)
2021-12-18 00:48:50 +0100emf(~emf@2600:1700:841:cc20:184c:c9e0:41bd:a50)
2021-12-18 00:52:30 +0100emf_(~emf@2620:10d:c091:480::1:2a01)
2021-12-18 00:52:57 +0100emf(~emf@2600:1700:841:cc20:184c:c9e0:41bd:a50) (Ping timeout: 240 seconds)
2021-12-18 00:54:46 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-18 00:58:35 +0100max22-(~maxime@2a01cb08833598007b9c3a2aa19d2728.ipv6.abo.wanadoo.fr)
2021-12-18 01:03:03 +0100Sofia1000(~Sofia1000@122-59-18-247-adsl.sparkbb.co.nz) (Quit: Client closed)
2021-12-18 01:04:17 +0100alx741(~alx741@157.100.93.160)
2021-12-18 01:06:57 +0100emf_(~emf@2620:10d:c091:480::1:2a01) (Ping timeout: 240 seconds)
2021-12-18 01:07:01 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 245 seconds)
2021-12-18 01:07:33 +0100OscarZ(~oscarz@5d.57.36a9.ip4.static.sl-reverse.com)
2021-12-18 01:07:41 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds)
2021-12-18 01:09:06 +0100emf(~emf@2620:10d:c091:480::1:2a01)
2021-12-18 01:10:39 +0100falafel(~falafel@2603-8000-d800-688c-c489-b1e0-39de-1e29.res6.spectrum.com)
2021-12-18 01:12:58 +0100max22-(~maxime@2a01cb08833598007b9c3a2aa19d2728.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-12-18 01:14:21 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-12-18 01:15:02 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2021-12-18 01:16:11 +0100martin02(~silas@141.84.69.76) (Ping timeout: 250 seconds)
2021-12-18 01:18:19 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-12-18 01:19:17 +0100jkaye(~jkaye@2601:281:8300:7530:e699:4743:67a2:216e) (Ping timeout: 240 seconds)
2021-12-18 01:23:44 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 01:28:38 +0100martin02(~silas@141.84.69.76)
2021-12-18 01:30:20 +0100cf2m(~cf2m@2804:14c:5bd7:8a9c::1001)
2021-12-18 01:31:45 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2021-12-18 01:31:57 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2021-12-18 01:32:26 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 245 seconds)
2021-12-18 01:34:24 +0100cf2m(~cf2m@2804:14c:5bd7:8a9c::1001) (Good Bye)
2021-12-18 01:37:22 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-18 01:40:52 +0100deadmarshal(~deadmarsh@95.38.118.228)
2021-12-18 01:41:50 +0100alx741(~alx741@157.100.93.160)
2021-12-18 01:41:57 +0100falafel(~falafel@2603-8000-d800-688c-c489-b1e0-39de-1e29.res6.spectrum.com) (Ping timeout: 240 seconds)
2021-12-18 01:43:34 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-12-18 01:44:41 +0100mvk(~mvk@2607:fea8:5cdd:f000::745c)
2021-12-18 01:45:30 +0100deadmarshal(~deadmarsh@95.38.118.228) (Ping timeout: 268 seconds)
2021-12-18 01:53:03 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 01:54:34 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-18 01:56:01 +0100emf_(~emf@2620:10d:c091:480::1:2a01)
2021-12-18 01:57:28 +0100zebrag(~chris@user/zebrag)
2021-12-18 01:58:37 +0100emf(~emf@2620:10d:c091:480::1:2a01) (Ping timeout: 240 seconds)
2021-12-18 02:02:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 02:02:17 +0100emf_(~emf@2620:10d:c091:480::1:2a01) (Ping timeout: 240 seconds)
2021-12-18 02:03:55 +0100emf(~emf@2620:10d:c091:480::1:2a01)
2021-12-18 02:03:57 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-12-18 02:06:05 +0100machinedgod(~machinedg@24.105.81.50) (Remote host closed the connection)
2021-12-18 02:06:43 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-12-18 02:06:58 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-18 02:07:32 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2021-12-18 02:11:25 +0100alx741(~alx741@181.199.42.79)
2021-12-18 02:19:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-18 02:19:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-18 02:19:28 +0100wroathe(~wroathe@user/wroathe)
2021-12-18 02:20:41 +0100wroathe(~wroathe@user/wroathe) (Client Quit)
2021-12-18 02:29:37 +0100emf(~emf@2620:10d:c091:480::1:2a01) (Ping timeout: 240 seconds)
2021-12-18 02:30:31 +0100acidjnk(~acidjnk@p200300d0c7271e65d42c28944a29f404.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-12-18 02:31:53 +0100burnsidesLlama(~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-18 02:32:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-18 02:32:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-18 02:32:04 +0100wroathe(~wroathe@user/wroathe)
2021-12-18 02:35:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-18 02:42:35 +0100hololeap(~hololeap@user/hololeap) (Quit: Bye)
2021-12-18 02:44:01 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-12-18 02:44:34 +0100 <lechner> Hi, when parsing JSON with optional fields, am I better off using Maybe or should I create separate types? Thanks!
2021-12-18 02:45:33 +0100 <hpc> depends on what you want to express
2021-12-18 02:45:43 +0100 <hpc> maybe when a field is missing it just means to use some default value
2021-12-18 02:47:33 +0100cheater(~Username@user/cheater)
2021-12-18 02:48:17 +0100alx741(~alx741@181.199.42.79) (Read error: Connection reset by peer)
2021-12-18 02:48:54 +0100alx741(~alx741@157.100.93.160)
2021-12-18 02:51:06 +0100emf(~emf@2620:10d:c091:480::1:2a01)
2021-12-18 02:52:43 +0100cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-12-18 02:53:16 +0100cheater(~Username@user/cheater)
2021-12-18 02:57:17 +0100emf(~emf@2620:10d:c091:480::1:2a01) (Ping timeout: 240 seconds)
2021-12-18 02:59:35 +0100OscarZ(~oscarz@5d.57.36a9.ip4.static.sl-reverse.com) (Quit: Leaving)
2021-12-18 03:00:39 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 03:15:12 +0100Tuplanolla(~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) (Quit: Leaving.)
2021-12-18 03:15:46 +0100jijimofo(~cmo@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 245 seconds)
2021-12-18 03:15:57 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
2021-12-18 03:16:53 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-12-18 03:17:02 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-18 03:18:27 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-12-18 03:18:33 +0100alx741(~alx741@157.100.93.160)
2021-12-18 03:21:06 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2021-12-18 03:26:37 +0100mmhat(~mmh@55d47b0f.access.ecotel.net) (Ping timeout: 240 seconds)
2021-12-18 03:31:37 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2021-12-18 03:31:48 +0100emf(~emf@2620:10d:c091:480::1:2e5a)
2021-12-18 03:32:21 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-12-18 03:32:32 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-12-18 03:32:40 +0100ub(~Thunderbi@p200300ecdf0a5d68805dbf0fab6de770.dip0.t-ipconnect.de)
2021-12-18 03:34:02 +0100ubert(~Thunderbi@p200300ecdf0a5db5805dbf0fab6de770.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-12-18 03:34:02 +0100ububert
2021-12-18 03:37:17 +0100evocatus(~evocatus@62.182.78.42) (Ping timeout: 256 seconds)
2021-12-18 03:37:26 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 245 seconds)
2021-12-18 03:37:57 +0100emf(~emf@2620:10d:c091:480::1:2e5a) (Ping timeout: 240 seconds)
2021-12-18 03:38:41 +0100 <dsal> You can have other default values than Nothing as well.
2021-12-18 03:39:01 +0100SummerSonw(~The_viole@203.77.49.232)
2021-12-18 03:41:07 +0100mmhat(~mmh@55d47734.access.ecotel.net)
2021-12-18 03:42:51 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-12-18 03:48:17 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-12-18 03:53:13 +0100mmhat(~mmh@55d47734.access.ecotel.net) (Quit: WeeChat 3.3)
2021-12-18 03:57:17 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-12-18 03:59:13 +0100pfurla(~pfurla@172.58.27.44) (Read error: Connection reset by peer)
2021-12-18 03:59:17 +0100xff0x(~xff0x@port-92-193-238-190.dynamic.as20676.net) (Ping timeout: 240 seconds)
2021-12-18 03:59:19 +0100pfurla_(~pfurla@2804:18:5822:b7a4:5d55:ee0c:b89:ab0a)
2021-12-18 04:01:33 +0100xff0x(~xff0x@2001:1a81:5394:f900:dd60:fd82:cbed:c232)
2021-12-18 04:06:03 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-12-18 04:06:03 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-12-18 04:06:03 +0100finn_elijaFinnElija
2021-12-18 04:07:59 +0100x_kuru(xkuru@user/xkuru)
2021-12-18 04:09:01 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 04:11:17 +0100xkuru(~xkuru@user/xkuru) (Ping timeout: 256 seconds)
2021-12-18 04:11:46 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-12-18 04:22:02 +0100td_(~td@94.134.91.242) (Ping timeout: 240 seconds)
2021-12-18 04:23:58 +0100td_(~td@94.134.91.199)
2021-12-18 04:24:43 +0100x_kuru_(~xkuru@user/xkuru)
2021-12-18 04:27:02 +0100alx741(~alx741@157.100.93.160)
2021-12-18 04:27:09 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-12-18 04:28:55 +0100x_kuru(xkuru@user/xkuru) (Ping timeout: 268 seconds)
2021-12-18 04:31:31 +0100hololeap(~hololeap@user/hololeap)
2021-12-18 04:32:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 04:35:52 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 04:41:53 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-18 04:44:04 +0100hololeap(~hololeap@user/hololeap) (Quit: Bye)
2021-12-18 04:45:45 +0100hololeap(~hololeap@user/hololeap)
2021-12-18 04:48:06 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-12-18 04:48:52 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2021-12-18 04:49:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-18 04:49:57 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-18 04:49:57 +0100wroathe(~wroathe@user/wroathe)
2021-12-18 04:50:57 +0100sourcemage(~sourcemag@c-24-14-124-168.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-12-18 04:51:06 +0100rembo10(~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-18 04:51:17 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2021-12-18 04:52:09 +0100rembo10(~rembo10@remulis.com)
2021-12-18 04:53:40 +0100alx741(~alx741@157.100.93.160)
2021-12-18 04:59:33 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-18 05:07:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-18 05:09:06 +0100 <glguy> I imagine things just aren't there yet, but I wanted to check that this is what's expected and not just that my installation is messed up. I tried using ghc on arm mac and couldn't install ghcid, doctest fell over on a file that used UTF-8, and hls only reported supporting up to 8.10
2021-12-18 05:09:13 +0100 <glguy> anyone had more luck with arm mac ghc?
2021-12-18 05:10:54 +0100 <xerox> I don't have arm specific problems nowadays anymore
2021-12-18 05:11:33 +0100 <glguy> Are you able to install ghcid on it, then?
2021-12-18 05:12:04 +0100 <xerox> there is one of its dependencies that is lagging behind because the maintainer is not to be found
2021-12-18 05:12:27 +0100 <xerox> so I had to build it manually with a vendored version, with the small fix
2021-12-18 05:13:02 +0100 <glguy> HLS?
2021-12-18 05:13:15 +0100 <xerox> HLS I don't use sorry
2021-12-18 05:13:46 +0100 <glguy> I lean more on ghcid than HLS, so if that one's fixable I might be ok
2021-12-18 05:14:02 +0100 <glguy> gotta figure out which computer I can use for AoC this weekend :)
2021-12-18 05:14:45 +0100 <xerox> I ended up compiling master a month ago with the calling convention fix for ioctl to have ghci work, sticking with that for now :D
2021-12-18 05:15:05 +0100 <xerox> there it is: https://github.com/biegunka/terminal-size/pull/16
2021-12-18 05:18:14 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-18 05:19:26 +0100 <glguy> Which ghc version does that work with?
2021-12-18 05:19:26 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 05:19:58 +0100 <xerox> mine reports 9.3.20211020
2021-12-18 05:20:30 +0100 <xerox> ah but did I compile it with this, or with another... maybe I can figure that out
2021-12-18 05:20:49 +0100 <xerox> I compiled it with ghc-8.10.7 from ghcup
2021-12-18 05:20:49 +0100 <glguy> 9.0.1 and 9.2.1 generate different errors each for me :)
2021-12-18 05:21:19 +0100 <glguy> OK, 8.10.7 is working better, thanks
2021-12-18 05:21:26 +0100 <xerox> excellent
2021-12-18 05:22:18 +0100 <glguy> Are you using 9.3 because 9.2.1 is broken in an interesting way or just because 9.3 is newer?
2021-12-18 05:23:05 +0100 <xerox> it was the first branch that I was able to compile successfully, with the ioctl fix, so I just stuck with it, I had some problems compiling the release branch/tags that I can't remember right now
2021-12-18 05:23:32 +0100 <glguy> What's the ioctl fix?
2021-12-18 05:23:35 +0100 <xerox> so I guess the former, the situation might have changed tho
2021-12-18 05:23:58 +0100 <glguy> I see that this PR mentions ioctl, but is that also related to picking a GHC in general?
2021-12-18 05:24:10 +0100 <xerox> ghci had broken line editing, because a ioctl inside ghc was done incompatibly just like the terminal-size issue above
2021-12-18 05:27:13 +0100lavaman(~lavaman@98.38.249.169)
2021-12-18 05:28:26 +0100 <xerox> it was libraries/haskeline/System/Console/Haskeline/Backend/Posix.hsc 66:foreign import capi "sys/ioctl.h ioctl" ioctl
2021-12-18 05:28:40 +0100 <xerox> so any ghc with this fix ("capi") will not have broken ghci line editing
2021-12-18 05:29:06 +0100 <xerox> there is also a workaround for it if you can't get such a ghc, if I can find it again...
2021-12-18 05:30:44 +0100 <xerox> here https://gitlab.haskell.org/ghc/ghc/-/issues/20079#note_364118
2021-12-18 05:33:13 +0100notzmv(~zmv@user/notzmv)
2021-12-18 05:33:24 +0100 <xerox> https://www.haskell.org/ghc/blog/20210709-capi-usage.html
2021-12-18 05:34:17 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 240 seconds)
2021-12-18 05:34:46 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
2021-12-18 05:37:08 +0100alx741(~alx741@157.100.93.160)
2021-12-18 05:38:25 +0100 <dsal> glguy: I've been running an M1 for a while. nix+stack. It's a bit of a balancing act, but mostly works.
2021-12-18 05:38:41 +0100 <dsal> My mac's in the shop right now, though. Wife dropped a spoon on the screen which is apparently enough to completely disable it.
2021-12-18 05:41:45 +0100 <hololeap> spwned
2021-12-18 05:42:24 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 05:43:56 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-12-18 05:44:56 +0100 <dsal> haha. :(
2021-12-18 05:47:03 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 256 seconds)
2021-12-18 05:48:20 +0100 <hololeap> :(
2021-12-18 05:48:21 +0100off^(~off@64.253.22.77)
2021-12-18 05:50:25 +0100 <EvanR> There Is No Spoon *myth busted*
2021-12-18 05:50:59 +0100shapr(~user@12.5.211.156)
2021-12-18 05:52:07 +0100 <sm> woah. Noted, keep spouse and cutlery away from mac
2021-12-18 05:52:31 +0100 <int-e> @pl \((a,b),(c,d)) -> ((a,c),(b,d))
2021-12-18 05:52:32 +0100 <lambdabot> uncurry (uncurry (flip flip snd . (ap .) . flip flip fst . ((.) .) . (. (,)) . flip . (((.) . (,)) .) . (,)))
2021-12-18 05:53:07 +0100 <dsal> I was sitting by the fire. She was standing over making (me) a drink. Spoon fell and hit just the edge of my screen. Doesn't take much to make expensive worthless. Only $99 to get it fixed. But also a lot of time.
2021-12-18 05:54:06 +0100 <monochrom> You are trying to ship your spouse, a spoon, and an M1 Mac across the river. The boat can only hold two passengers...
2021-12-18 05:55:28 +0100 <int-e> Can I throw the spoon all the way across?
2021-12-18 05:58:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-18 05:59:17 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 05:59:36 +0100 <monochrom> Not if the M1 Mac is also on the other side, bearing the risk of getting hit by the spoon.
2021-12-18 06:03:43 +0100 <hololeap> lol
2021-12-18 06:06:57 +0100dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-12-18 06:08:58 +0100 <hololeap> if I have (a -> Logic b) and [a], and I want to search each problem space enumerated by [a], is asum from Data.Foldable what I need?
2021-12-18 06:09:16 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-18 06:09:20 +0100 <hololeap> assuming I want a depth-first search
2021-12-18 06:09:34 +0100dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-12-18 06:12:37 +0100 <hololeap> e.g. (\f xs -> asum (f <$> xs)) :: (a -> Logic b) -> [a] -> Logic b
2021-12-18 06:14:51 +0100 <hololeap> I suppose that only makes sense if I'm looking for a single result, otherwise it shouldn't stop on the first successful branch, but keep gathering results instead
2021-12-18 06:15:39 +0100 <hololeap> then again a depth-first search implies a single result
2021-12-18 06:16:29 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 06:17:38 +0100alx741(~alx741@157.100.93.160)
2021-12-18 06:18:55 +0100selkirk(~selkirk@182.69.202.102)
2021-12-18 06:24:14 +0100shapr(~user@12.5.211.156) (Ping timeout: 268 seconds)
2021-12-18 06:25:45 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 06:27:13 +0100x_kuru_(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-12-18 06:39:08 +0100 <hololeap> >>> observeAll ((pure 'a' `interleave` pure 'b' `interleave` pure 'c') `interleave` (pure 'd' `interleave` pure 'e') `interleave` pure 'f')
2021-12-18 06:39:15 +0100 <hololeap> "afdceb"
2021-12-18 06:39:42 +0100 <hololeap> so it starts with the front, then goes to the back and works to the left?
2021-12-18 06:42:16 +0100samebchase(~samebchas@51.15.68.182)
2021-12-18 06:44:15 +0100alx741(~alx741@157.100.93.160)
2021-12-18 06:52:54 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection)
2021-12-18 06:52:54 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 06:54:54 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2021-12-18 06:55:10 +0100 <hololeap> >>> observeAll $ foldl interleave mzero (pure <$> "abcdefg")
2021-12-18 06:55:11 +0100 <hololeap> "agfedcb"
2021-12-18 06:55:14 +0100 <hololeap> seems like it
2021-12-18 06:55:33 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
2021-12-18 07:03:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 07:07:51 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan)
2021-12-18 07:10:52 +0100alx741(~alx741@157.100.93.160)
2021-12-18 07:13:02 +0100monochrom(trebla@216.138.220.146)
2021-12-18 07:13:45 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-12-18 07:14:08 +0100Sgeo(~Sgeo@user/sgeo)
2021-12-18 07:14:26 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-12-18 07:18:57 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 240 seconds)
2021-12-18 07:21:59 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-18 07:23:41 +0100 <hololeap> if you use foldr instead, it comes out as "abcdefg" ... weird
2021-12-18 07:23:41 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 07:26:26 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
2021-12-18 07:28:07 +0100EvanR(~evan@user/evanr) (Remote host closed the connection)
2021-12-18 07:31:03 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-18 07:33:45 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-18 07:36:32 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 07:37:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-18 07:41:22 +0100alx741(~alx741@157.100.93.160)
2021-12-18 07:47:22 +0100int-esighs
2021-12-18 07:47:29 +0100 <int-e> ...reading is so hard...
2021-12-18 07:48:52 +0100wehttam(~wehttam@159.196.24.74)
2021-12-18 07:57:27 +0100EvanR(~evan@user/evanr)
2021-12-18 08:00:21 +0100 <EvanR> i/o sync errors causing my linux to freeze and crash in the middle of my almost getting tonights answer did not help
2021-12-18 08:04:16 +0100lavaman(~lavaman@98.38.249.169)
2021-12-18 08:05:57 +0100mvk(~mvk@2607:fea8:5cdd:f000::745c) (Ping timeout: 240 seconds)
2021-12-18 08:08:37 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-18 08:15:13 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-18 08:15:13 +0100EvanR(~evan@user/evanr) (Remote host closed the connection)
2021-12-18 08:15:30 +0100img(~img@user/img)
2021-12-18 08:16:34 +0100wehttam(~wehttam@159.196.24.74) ()
2021-12-18 08:16:48 +0100EvanR(~evan@user/evanr)
2021-12-18 08:20:37 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 240 seconds)
2021-12-18 08:26:02 +0100Sobhan(~Sobhan@modemcable039.128-131-66.mc.videotron.ca)
2021-12-18 08:26:18 +0100 <Sobhan> Hi
2021-12-18 08:26:37 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2021-12-18 08:27:59 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 256 seconds)
2021-12-18 08:28:24 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 08:29:00 +0100 <Sobhan> i'm trying to short circuit a calculation in ST monad (STUArray), i want my function to run until it hits a certain condition, right now i use https://dpaste.com/E6CRB8LKR the trace shows that it reaches the solution but it doesn't stop. it's like it's stop in a 1 : goto 1 type of loop (no allocations)
2021-12-18 08:29:24 +0100 <Sobhan> (yes it's for advent of code)
2021-12-18 08:29:45 +0100natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
2021-12-18 08:29:49 +0100 <Sobhan> also `it :: STUArray s (Int, Int) Int -> ST s Int`
2021-12-18 08:30:21 +0100 <dsal> Sobhan: It's not clear why you think that should stop.
2021-12-18 08:30:21 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 08:31:00 +0100 <Sobhan> i think i'm not getting the state monad but in the state less version that would short circuit
2021-12-18 08:31:09 +0100 <Sobhan> dsal
2021-12-18 08:31:16 +0100gdd1(~gdd@129.199.146.230) (Ping timeout: 268 seconds)
2021-12-18 08:31:48 +0100 <Sobhan> i'm clearly not "getting" the ST monad
2021-12-18 08:32:19 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-12-18 08:32:20 +0100 <Sobhan> `dd _ _ b a = return b` doesn't short as i had hopped it would
2021-12-18 08:32:23 +0100 <dsal> It's not the ST, it's the fold over an infinite list.
2021-12-18 08:32:32 +0100 <dsal> `return` is a confusing term.
2021-12-18 08:32:37 +0100 <dsal> I'd just never use it.
2021-12-18 08:32:46 +0100 <Sobhan> but fold can short, right?
2021-12-18 08:33:17 +0100 <dsal> foldr can in lists if it doesn't use the accumulator.
2021-12-18 08:33:44 +0100puke(~puke@user/puke) (Quit: puke)
2021-12-18 08:34:06 +0100 <EvanR> foldl can't short circuit, foldlM even less likely
2021-12-18 08:34:34 +0100 <Sobhan> huh, what would be a good way to short then?
2021-12-18 08:34:44 +0100 <EvanR> in this case, it can't run the ST action until it knows what you want to do with every element
2021-12-18 08:35:24 +0100 <Sobhan> that makes sense
2021-12-18 08:36:02 +0100 <Sobhan> i think i got it. i have to move the ST inside my iteration
2021-12-18 08:36:13 +0100 <EvanR> there's takeWhileM ...
2021-12-18 08:36:45 +0100 <Sobhan> would that work with ST?
2021-12-18 08:36:52 +0100 <EvanR> :t takeWhileM
2021-12-18 08:36:53 +0100 <lambdabot> error:
2021-12-18 08:36:53 +0100 <lambdabot> • Variable not in scope: takeWhileM
2021-12-18 08:36:53 +0100 <lambdabot> • Perhaps you meant one of these:
2021-12-18 08:37:08 +0100 <Sobhan> the one from monad-loops Control.Monad.Loops
2021-12-18 08:37:10 +0100 <Sobhan> right?
2021-12-18 08:37:55 +0100lavaman(~lavaman@98.38.249.169)
2021-12-18 08:38:12 +0100 <EvanR> to short circuit to a solution before delving into anything else, I'd probably start with a explicit recursive ST action
2021-12-18 08:38:31 +0100 <EvanR> so you decide to recurse or quit at any step
2021-12-18 08:41:45 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 268 seconds)
2021-12-18 08:41:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-18 08:41:57 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-18 08:42:43 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-12-18 08:43:03 +0100 <Square> This may be stupid question. But are both Data.ByteString and Data.Text needed? Add a Lazy variant to both. Do both fill meaningful purposes? I find one often tries to adopt strings between packages. Oh, then we have String too.
2021-12-18 08:43:15 +0100 <dsal> They don't do the same thing.
2021-12-18 08:43:41 +0100sofviic[m](~sofviicma@2001:470:69fc:105::1:51fd)
2021-12-18 08:43:43 +0100 <EvanR> bytestring is pretty straight forward, it's packed vectors of Word8
2021-12-18 08:44:10 +0100 <EvanR> unlike String and Text which deal with unicode
2021-12-18 08:44:24 +0100 <Square> Gotcha.
2021-12-18 08:44:45 +0100 <EvanR> many languages get things mixed up
2021-12-18 08:45:12 +0100 <EvanR> like, presume a string encoding, ... or supposedly did then change their mind and add encodings
2021-12-18 08:45:52 +0100 <Square> Ok, that makes sense.
2021-12-18 08:45:58 +0100 <EvanR> in the end string and array of word8 should be separate
2021-12-18 08:47:14 +0100 <Square> Thanks for the leason, i never took the time to really understand their differences. Hard to get hyped over strings. =D
2021-12-18 08:48:58 +0100alx741(~alx741@157.100.93.160)
2021-12-18 08:49:35 +0100 <EvanR> picking the right types is bread and butter in haskell... and then turns out that's necessary in every language
2021-12-18 08:50:01 +0100 <EvanR> you just don't always get any help with it lol
2021-12-18 08:50:39 +0100Feuermagier_(~Feuermagi@138.199.36.133)
2021-12-18 08:53:28 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 268 seconds)
2021-12-18 08:53:52 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-18 08:56:15 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 09:00:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 09:02:14 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Ping timeout: 260 seconds)
2021-12-18 09:08:18 +0100selkirk(~selkirk@182.69.202.102) (Quit: leaving)
2021-12-18 09:13:06 +0100alx741(~alx741@157.100.93.160)
2021-12-18 09:15:14 +0100 <Sobhan> how can i have a function that returns both an STArray and a value that it depends on Array. i can't figure out how to use runST and run STUArray at the same time (either on a ST s (a, b) or (ST s a, STUArray ...))
2021-12-18 09:16:25 +0100 <Sobhan> type A s a = STUArray s (Int, Int) a
2021-12-18 09:16:25 +0100 <Sobhan> it__ :: UArray (Int, Int) Int -> (Int, A s Int)
2021-12-18 09:16:26 +0100 <Sobhan> it__ a1 = bimap runST runSTUArray $ do {arr <- (thaw a1 :: ST s (A s Int)); i <- readArray arr (1, 1); (i, arr)}
2021-12-18 09:16:29 +0100 <Sobhan> so like something like this
2021-12-18 09:21:03 +0100 <EvanR> I'm guessing you have to use runST and do what runSTUArray does yourself in the process of returning
2021-12-18 09:21:31 +0100 <EvanR> i.e. unsafeFreeze
2021-12-18 09:23:31 +0100jespada(~jespada@87.74.33.157) (Ping timeout: 256 seconds)
2021-12-18 09:23:32 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 09:24:17 +0100sprout(~quassel@2a02:a467:ccd6:1:21ba:a382:6b6:54c4)
2021-12-18 09:24:18 +0100 <Sobhan> i did actually try that but i get `• Couldn't match type ‘a1’ with ‘(Int, A s Int)’
2021-12-18 09:24:19 +0100 <Sobhan>     because type variable ‘s’ would escape its scope`
2021-12-18 09:25:04 +0100 <Sobhan> it__ a1 = runST $ do {arr <- (thaw a1 :: ST s (A s Int)); i <- readArray arr (1, 1); return (i, arr)}
2021-12-18 09:25:28 +0100 <EvanR> thaw?
2021-12-18 09:25:43 +0100 <Sobhan> thaw :: forall i (a :: * -> * -> *) e (b :: * -> * -> *) (m :: * -> *). (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)
2021-12-18 09:25:50 +0100 <Sobhan> ugh
2021-12-18 09:25:56 +0100 <Sobhan> it converts an UArray to a STUArray
2021-12-18 09:25:58 +0100 <EvanR> I must be thinking backwards what you want
2021-12-18 09:26:16 +0100jespada(~jespada@87.74.33.157)
2021-12-18 09:26:45 +0100 <EvanR> in ST the mutable arrays you use are supposed to contained within that ST action
2021-12-18 09:27:33 +0100 <EvanR> I thought you wanted to return one frozen... instead it seems like you want to get a mutable array from elsewhere?
2021-12-18 09:27:57 +0100 <Sobhan> i want the 1,1 index (or something like that & the array (frozen)
2021-12-18 09:28:03 +0100jtomas(~jtomas@153.red-83-53-252.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-12-18 09:28:14 +0100 <Sobhan> i'm returning the number of operations on the array
2021-12-18 09:28:18 +0100 <Sobhan> plus the new array
2021-12-18 09:28:24 +0100 <EvanR> I... don't see the point of ST here
2021-12-18 09:28:55 +0100 <EvanR> you're messing with outside arrays within ST, and that's it
2021-12-18 09:30:03 +0100 <Sobhan> this is sample code, i want to take a an IArray, modify it and report the number of edits and the results. i kinda need an implementation of a MArray. i was thinking of not using IO
2021-12-18 09:30:10 +0100 <Sobhan> so i ended up with ST
2021-12-18 09:30:17 +0100 <EvanR> make a new array, operating on it, maybe read some immutable outside data, return the new array, that would make sense
2021-12-18 09:30:48 +0100 <Sobhan> well i'm doing operations on it, just not in the sample code
2021-12-18 09:31:43 +0100 <Sobhan> i have to choose between Data.Array.IO, Data.Array.ST, and Data.Array.Storable.
2021-12-18 09:31:45 +0100 <Sobhan> right?
2021-12-18 09:32:02 +0100 <EvanR> I mainly use Data.Vector
2021-12-18 09:32:08 +0100 <Sobhan> assuming i *NEED* mutable arrays
2021-12-18 09:33:02 +0100euandreh(~euandreh@2804:14c:33:9fe5:1e71:dc8c:d2fa:3d7e) (Ping timeout: 252 seconds)
2021-12-18 09:33:07 +0100 <Sobhan> i need 2d arrays
2021-12-18 09:33:14 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-18 09:34:47 +0100euandreh(~euandreh@2804:14c:33:9fe5:995c:e86e:470c:8a37)
2021-12-18 09:35:53 +0100 <EvanR> yeah I also use vector for that xD
2021-12-18 09:37:26 +0100 <dsal> a 2D array is just a 1D array with Ix.
2021-12-18 09:37:38 +0100 <dsal> You can have arbitrary dimensions where some aren't even numerical if you want.
2021-12-18 09:37:52 +0100 <dsal> (that's all you're doing with Arrays)
2021-12-18 09:38:58 +0100 <EvanR> my other array uses real number indexes
2021-12-18 09:40:08 +0100 <dsal> Numbers aren't real.
2021-12-18 09:40:20 +0100 <Sobhan> but i'll be back to using ST, right?
2021-12-18 09:40:25 +0100alx741(~alx741@157.100.93.160)
2021-12-18 09:40:26 +0100 <Sobhan> modify :: (forall s. MVector s a -> ST s ()) -> Vector a -> Vector a
2021-12-18 09:40:51 +0100Jing(~hedgehog@2604:a840:3::103e) (Remote host closed the connection)
2021-12-18 09:41:10 +0100 <Sobhan> i'll still be at point zero until i figure out how to return multiple things from ST
2021-12-18 09:41:21 +0100 <Sobhan> oops, sorry for the ping
2021-12-18 09:41:28 +0100Jing(~hedgehog@125.105.142.62)
2021-12-18 09:42:07 +0100 <EvanR> I'm just not sure what you're gaining from ST here
2021-12-18 09:42:16 +0100 <Sobhan> over IO?
2021-12-18 09:42:34 +0100 <Sobhan> i want to put my function in a pure context
2021-12-18 09:42:46 +0100 <dsal> Do you have something working that's not mutalbe?
2021-12-18 09:43:09 +0100 <Sobhan> ?
2021-12-18 09:43:19 +0100 <int-e> Sobhan: you have to manually freeze arrays if you want to return more than one
2021-12-18 09:43:45 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-18 09:44:00 +0100 <int-e> @src runSTArray
2021-12-18 09:44:00 +0100 <lambdabot> Source not found. :(
2021-12-18 09:44:05 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758) (Remote host closed the connection)
2021-12-18 09:44:09 +0100 <int-e> pity... runSTArray st = runST (st >>= unsafeFreezeSTArray)
2021-12-18 09:44:27 +0100 <EvanR> yes... like I said xD
2021-12-18 09:44:38 +0100 <int-e> I don't know how that works for vectors, do they have a freeze operation as well?
2021-12-18 09:44:42 +0100 <EvanR> you'll need to freeze, you only have a thaw there
2021-12-18 09:44:51 +0100 <EvanR> yeah they have freeze and thaw too
2021-12-18 09:45:18 +0100 <int-e> (I have used `vector` a little, but apparently never with explicit ST.)
2021-12-18 09:47:33 +0100acidjnk(~acidjnk@p200300d0c7271e65d42c28944a29f404.dip0.t-ipconnect.de)
2021-12-18 09:48:46 +0100 <EvanR> actually embedding an array mutating program within a pure function with ST is really cool, I just never ran into a case where it would be worth it
2021-12-18 09:48:57 +0100 <Sobhan> int-e thanks, i finally figured it out `it__ ::  UArray (Int, Int) Int -> (Int,  UArray (Int, Int) Int)
2021-12-18 09:48:58 +0100 <Sobhan> it__ a1 = runST $ do {arr <- (thaw a1 :: ST s (STUArray s (Int, Int) Int)); i <- readArray arr (1, 1); farr <- freeze arr; return (i, farr)}`
2021-12-18 09:51:02 +0100 <int-e> Sobhan: yep. (you /can/ use unsafeFreeze there and avoid a copy; the promise you're making is that you don't touch the array afterwards)
2021-12-18 09:51:12 +0100SummerSonw(~The_viole@203.77.49.232)
2021-12-18 09:51:35 +0100 <Sobhan> i don't think i can keep a promise XD
2021-12-18 09:51:56 +0100 <int-e> Sobhan: Oh, sorry. "afterwards" is scoped by the ST action
2021-12-18 09:52:06 +0100 <EvanR> since you're returning from the ST action... I don't see how you could touch it after
2021-12-18 09:52:10 +0100 <Sobhan> i got that...
2021-12-18 09:52:19 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 09:52:35 +0100 <Sobhan> by forgetting what unsafeFreeze tomorrow morning...
2021-12-18 09:53:11 +0100 <EvanR> don't touch it between freeze and returning?
2021-12-18 09:53:25 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-18 09:53:25 +0100 <EvanR> unsafeFreeze
2021-12-18 09:54:35 +0100 <Sobhan> it was a joke...
2021-12-18 09:54:43 +0100 <int-e> Sobhan: I mainly bring it up because unlike most `unsafe` functions, the promise here is completely local in scope, so it's a pretty sane optimization.
2021-12-18 09:55:39 +0100 <Sobhan> i'm guessing that the unsafe thawt isn't going to work tho
2021-12-18 09:55:42 +0100 <int-e> (In contrast, `unsafeThaw` requires you to keep the constraint in mind for the rest of the program.)
2021-12-18 09:57:06 +0100 <int-e> (The constraint being that the immutable array you're thawing is not used elsewhere.)
2021-12-18 10:00:21 +0100 <nshepperd2> Sobhan: fun fact, vector actually has a function for doing that sort of thing that I added!
2021-12-18 10:01:14 +0100 <nshepperd2> V.createT (do mut <- V.thaw xs; a <- M.read mut 0; return (a, mut))
2021-12-18 10:02:17 +0100 <nshepperd2> (createT does 'traverse unsafeFreeze' over any traversable container of mutable vectors that you return)
2021-12-18 10:03:39 +0100Sobhan(~Sobhan@modemcable039.128-131-66.mc.videotron.ca) (Ping timeout: 256 seconds)
2021-12-18 10:03:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-18 10:08:37 +0100xff0x(~xff0x@2001:1a81:5394:f900:dd60:fd82:cbed:c232) (Ping timeout: 240 seconds)
2021-12-18 10:08:37 +0100alx741(~alx741@181.199.42.79)
2021-12-18 10:09:44 +0100xff0x(~xff0x@2001:1a81:5394:f900:9067:7a5d:460c:e4bd)
2021-12-18 10:11:49 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-18 10:16:19 +0100gehmehgeh(~user@user/gehmehgeh)
2021-12-18 10:17:20 +0100 <c_wraith> oh, only traversables? And here I was thinking you were playing fancy tricks with Data
2021-12-18 10:17:36 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-12-18 10:17:36 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-12-18 10:17:39 +0100allbery_bgeekosaur
2021-12-18 10:24:02 +0100xff0x(~xff0x@2001:1a81:5394:f900:9067:7a5d:460c:e4bd) (Ping timeout: 240 seconds)
2021-12-18 10:24:54 +0100xff0x(~xff0x@port-92-195-110-215.dynamic.as20676.net)
2021-12-18 10:25:05 +0100PVPANTHONY(~The_viole@203.77.49.232)
2021-12-18 10:26:09 +0100Jing_(~hedgehog@2604:a840:3::103e)
2021-12-18 10:26:20 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-12-18 10:27:17 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 240 seconds)
2021-12-18 10:27:32 +0100Jing(~hedgehog@125.105.142.62) (Read error: Connection reset by peer)
2021-12-18 10:27:57 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 240 seconds)
2021-12-18 10:28:05 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-18 10:28:34 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-12-18 10:28:34 +0100cyphase(~cyphase@user/cyphase)
2021-12-18 10:30:31 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-18 10:32:24 +0100alx741(~alx741@181.199.42.79) (Read error: Connection reset by peer)
2021-12-18 10:32:46 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-18 10:33:07 +0100alx741(~alx741@157.100.93.160)
2021-12-18 10:44:36 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-12-18 10:48:37 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-12-18 10:52:24 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan)
2021-12-18 11:06:01 +0100deadmarshal_(~deadmarsh@95.38.113.39)
2021-12-18 11:06:37 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 240 seconds)
2021-12-18 11:08:48 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-12-18 11:09:27 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2021-12-18 11:14:49 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 11:17:12 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-12-18 11:17:37 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2021-12-18 11:18:29 +0100Lord_of_Life_Lord_of_Life
2021-12-18 11:23:37 +0100pfurla_(~pfurla@2804:18:5822:b7a4:5d55:ee0c:b89:ab0a) (Ping timeout: 240 seconds)
2021-12-18 11:24:01 +0100pfurla(~pfurla@2804:18:5822:b7a4:6913:9198:2dcc:b6a5)
2021-12-18 11:24:06 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-12-18 11:25:38 +0100Tuplanolla(~Tuplanoll@91-159-68-169.elisa-laajakaista.fi)
2021-12-18 11:29:28 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-18 11:31:30 +0100niemand(~niemand@p2e52fab3.dip0.t-ipconnect.de)
2021-12-18 11:32:22 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-18 11:32:36 +0100alx741(~alx741@157.100.93.160)
2021-12-18 11:33:33 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2021-12-18 11:41:48 +0100deadmarshal_(~deadmarsh@95.38.113.39) (Ping timeout: 256 seconds)
2021-12-18 11:41:48 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds)
2021-12-18 11:44:06 +0100Digit(~user@user/digit)
2021-12-18 11:47:21 +0100niemand(~niemand@p2e52fab3.dip0.t-ipconnect.de) (Quit: Connection closed)
2021-12-18 11:49:36 +0100 <nshepperd> hehe no
2021-12-18 11:52:33 +0100PVPANTHONY(~The_viole@203.77.49.232) (Ping timeout: 256 seconds)
2021-12-18 11:53:16 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 245 seconds)
2021-12-18 11:55:48 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 11:57:59 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-18 12:00:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 12:06:59 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-18 12:06:59 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 12:07:11 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-18 12:09:17 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 240 seconds)
2021-12-18 12:17:43 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.3)
2021-12-18 12:17:44 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fbfb-173.dhcp.inet.fi)
2021-12-18 12:21:07 +0100hugo(znc@verdigris.lysator.liu.se) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-18 12:23:04 +0100hugo(znc@verdigris.lysator.liu.se)
2021-12-18 12:23:15 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 12:25:09 +0100alx741(~alx741@157.100.93.160)
2021-12-18 12:25:52 +0100mikoto-chan(~mikoto-ch@2a00:1d50:3:0:d35c:a450:4ccc:94ac)
2021-12-18 12:28:27 +0100off^(~off@64.253.22.77) (Remote host closed the connection)
2021-12-18 12:28:49 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-18 12:31:09 +0100cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-12-18 12:34:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-12-18 12:37:27 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 12:39:01 +0100AlexNoo_AlexNoo
2021-12-18 12:39:40 +0100lavaman(~lavaman@98.38.249.169)
2021-12-18 12:45:16 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-18 12:45:21 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-12-18 12:46:33 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758)
2021-12-18 12:48:25 +0100__monty__(~toonn@user/toonn)
2021-12-18 12:50:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758) (Ping timeout: 240 seconds)
2021-12-18 12:53:17 +0100PVPANTHONY(~The_viole@203.77.49.232)
2021-12-18 12:55:39 +0100alx741(~alx741@157.100.93.160)
2021-12-18 12:58:10 +0100 <Digit> hi. nyxt has me inspired to ask along the lines of... what's "the" web browser written/configured in haskell?
2021-12-18 12:59:43 +0100deadmarshal_(~deadmarsh@95.38.113.39)
2021-12-18 13:00:57 +0100deadmarshal(~deadmarsh@95.38.113.39) (Read error: Connection reset by peer)
2021-12-18 13:10:39 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2021-12-18 13:10:47 +0100tom__(~tom@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2021-12-18 13:10:47 +0100tom_(~tom@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2021-12-18 13:10:54 +0100tom__(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2021-12-18 13:14:44 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 13:15:37 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-12-18 13:15:58 +0100rito_(~rito_gh@45.112.243.172)
2021-12-18 13:16:56 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-18 13:17:30 +0100phma(phma@2001:5b0:210b:d6b8:694b:ba82:ab88:1eae) (Read error: Connection reset by peer)
2021-12-18 13:19:06 +0100phma(phma@2001:5b0:210f:398:45c4:2d78:79ea:d21b)
2021-12-18 13:23:08 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-12-18 13:29:56 +0100jeetelongname(~jeet@88-111-159-26.dynamic.dsl.as9105.com)
2021-12-18 13:30:37 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Ping timeout: 240 seconds)
2021-12-18 13:31:05 +0100_ht(~quassel@37.120.218.165)
2021-12-18 13:31:51 +0100alx741(~alx741@157.100.93.160)
2021-12-18 13:37:42 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-12-18 13:41:08 +0100MoC(~moc@user/moc)
2021-12-18 13:42:54 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 13:43:18 +0100 <sm> I can't think of one offhand. that's a colossal project
2021-12-18 13:45:35 +0100mmhat(~mmh@55d47734.access.ecotel.net)
2021-12-18 13:45:57 +0100deadmarshal_(~deadmarsh@95.38.113.39) (Ping timeout: 240 seconds)
2021-12-18 13:46:00 +0100robbert-vdh(~robbert@robbertvanderhelm.nl) (Remote host closed the connection)
2021-12-18 13:46:25 +0100robbert-vdh(~robbert@robbertvanderhelm.nl)
2021-12-18 13:46:26 +0100 <geekosaur> manatee had a web browser component, but it's long dead
2021-12-18 13:46:27 +0100 <sm> a few experiments on hackage, like hbro
2021-12-18 13:46:55 +0100lagash(lagash@lagash.shelltalk.net) (Ping timeout: 250 seconds)
2021-12-18 13:52:04 +0100mikoto-chan(~mikoto-ch@2a00:1d50:3:0:d35c:a450:4ccc:94ac) (Quit: mikoto-chan)
2021-12-18 13:55:55 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 13:56:15 +0100Megant(megant@user/megant) (Ping timeout: 250 seconds)
2021-12-18 13:57:54 +0100Megant(megant@user/megant)
2021-12-18 13:59:59 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-18 14:00:01 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-18 14:00:03 +0100alx741(~alx741@157.100.93.160)
2021-12-18 14:00:28 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-18 14:00:33 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-18 14:00:40 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-18 14:01:37 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-18 14:01:44 +0100son0p(~ff@2800:484:1d81:b700:d40b:900:b387:320) (Remote host closed the connection)
2021-12-18 14:02:00 +0100gensyst(gensyst@user/gensyst)
2021-12-18 14:03:16 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 245 seconds)
2021-12-18 14:04:55 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-18 14:05:58 +0100gensyst(gensyst@user/gensyst) (Client Quit)
2021-12-18 14:08:59 +0100pfurla_(~pfurla@2804:18:5813:43a7:2d02:6b96:1847:d254)
2021-12-18 14:11:05 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-12-18 14:11:57 +0100pfurla(~pfurla@2804:18:5822:b7a4:6913:9198:2dcc:b6a5) (Ping timeout: 240 seconds)
2021-12-18 14:11:58 +0100cheater(~Username@user/cheater)
2021-12-18 14:14:50 +0100 <opqdonut> what's the cool way to write `f <$> x <*> pure y` ?
2021-12-18 14:15:12 +0100 <opqdonut> there must be some <**$ operator somewhere I can use
2021-12-18 14:15:48 +0100MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-12-18 14:18:13 +0100toastloop(toastloop@user/toastloop)
2021-12-18 14:18:13 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 14:29:02 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 240 seconds)
2021-12-18 14:29:59 +0100Guest7(~Guest7@145.107.126.224)
2021-12-18 14:31:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 14:31:54 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-18 14:35:06 +0100acidjnk(~acidjnk@p200300d0c7271e65d42c28944a29f404.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-12-18 14:36:41 +0100alx741(~alx741@157.100.93.160)
2021-12-18 14:40:36 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-18 14:41:30 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 14:41:33 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-12-18 14:43:09 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-18 14:43:32 +0100Guest7(~Guest7@145.107.126.224) (Quit: Connection closed)
2021-12-18 14:45:39 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-18 14:46:37 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-12-18 14:48:07 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758)
2021-12-18 14:48:11 +0100mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
2021-12-18 14:48:23 +0100mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es)
2021-12-18 14:50:05 +0100jeetelongname(~jeet@88-111-159-26.dynamic.dsl.as9105.com) (Read error: Connection reset by peer)
2021-12-18 14:52:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758) (Ping timeout: 240 seconds)
2021-12-18 14:55:00 +0100max22-(~maxime@2a01cb088335980036297c973223bba4.ipv6.abo.wanadoo.fr)
2021-12-18 14:59:12 +0100alx741(~alx741@157.100.93.160)
2021-12-18 14:59:52 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-12-18 15:03:11 +0100pfurla(~pfurla@2804:d41:4331:4800:510d:e80b:d7e8:54bf)
2021-12-18 15:03:57 +0100_73(~user@pool-108-49-252-36.bstnma.fios.verizon.net)
2021-12-18 15:03:57 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 15:04:31 +0100 <_73> does this combinator have a name? `foo f g = \x y -> f (g x) (g y)`
2021-12-18 15:04:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-18 15:05:14 +0100rembo10(~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-18 15:05:37 +0100rembo10(~rembo10@remulis.com)
2021-12-18 15:05:57 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 240 seconds)
2021-12-18 15:06:02 +0100cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2021-12-18 15:06:23 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 15:06:25 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-18 15:06:45 +0100xsperry(~xs@user/xsperry) (Remote host closed the connection)
2021-12-18 15:07:10 +0100pfurla_(~pfurla@2804:18:5813:43a7:2d02:6b96:1847:d254) (Ping timeout: 260 seconds)
2021-12-18 15:07:16 +0100xsperry(~xs@user/xsperry)
2021-12-18 15:08:12 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-18 15:08:33 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-12-18 15:08:45 +0100 <yushyin> on?
2021-12-18 15:09:36 +0100pfurla_(~pfurla@2804:18:5813:43a7:5d3e:bc70:a654:ea1e)
2021-12-18 15:09:36 +0100rembo10(~rembo10@remulis.com) (Client Quit)
2021-12-18 15:09:54 +0100rembo10(~rembo10@remulis.com)
2021-12-18 15:10:11 +0100max22-(~maxime@2a01cb088335980036297c973223bba4.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
2021-12-18 15:11:30 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 268 seconds)
2021-12-18 15:11:34 +0100pfurla__(~pfurla@2804:d41:4331:4800:b8e7:6926:586a:39fa)
2021-12-18 15:11:35 +0100 <_73> yushyin: yes `on` appears the same thanks. It would be helpful to me if somebody knew a mathematical name for this function.
2021-12-18 15:13:01 +0100pfurla(~pfurla@2804:d41:4331:4800:510d:e80b:d7e8:54bf) (Ping timeout: 240 seconds)
2021-12-18 15:13:53 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-18 15:14:13 +0100pfurla_(~pfurla@2804:18:5813:43a7:5d3e:bc70:a654:ea1e) (Ping timeout: 240 seconds)
2021-12-18 15:16:21 +0100 <Rembane> _73: It's called the psi combinator according to https://hackage.haskell.org/package/data-aviary-0.4.0/docs/Data-Aviary-Birds.html but I can't find any more sources than that.
2021-12-18 15:16:57 +0100 <_73> awesome. Thanks
2021-12-18 15:17:52 +0100 <Rembane> No worries. :)
2021-12-18 15:20:22 +0100alx741(~alx741@157.100.93.160)
2021-12-18 15:20:47 +0100rembo10(~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-18 15:21:04 +0100rembo10(~rembo10@remulis.com)
2021-12-18 15:23:25 +0100rembo10(~rembo10@remulis.com) (Client Quit)
2021-12-18 15:23:41 +0100rembo10(~rembo10@remulis.com)
2021-12-18 15:24:42 +0100sleblanc(~sleblanc@user/sleblanc)
2021-12-18 15:25:12 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-18 15:26:27 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-18 15:26:31 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-18 15:28:56 +0100jeetelongname(~jeet@88-111-159-26.dynamic.dsl.as9105.com)
2021-12-18 15:28:56 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 15:29:17 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 240 seconds)
2021-12-18 15:29:40 +0100rembo10(~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-18 15:29:58 +0100rembo10(~rembo10@remulis.com)
2021-12-18 15:35:04 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-18 15:35:35 +0100 <yushyin> it's the first time i heard of psi or 'combinator birds'. Why birds? Seems like a reference to a book. 'In his delightful book To mock a mockingbird, Smullyan (1985) chooses birds for his combinators, in memory of Haskell Curry, an early pioneer in the theory of combinators (1958) and an avid bird-watcher.'
2021-12-18 15:37:39 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Remote host closed the connection)
2021-12-18 15:37:39 +0100tom__(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Read error: Connection reset by peer)
2021-12-18 15:41:55 +0100 <juhp> This has been bothering me quite a while - maybe a good one for r/haskell monthly AMA, but isn't there a nice function to say "filter a list by a list of prefixes" for example? Well I dare say it is probably in some package, but I wish a not too obscure one
2021-12-18 15:42:20 +0100 <juhp> I mean a generic function of course
2021-12-18 15:43:43 +0100cheater(~Username@user/cheater)
2021-12-18 15:43:53 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-18 15:47:00 +0100alx741(~alx741@157.100.93.160)
2021-12-18 15:47:28 +0100sourcemage(~sourcemag@c-24-14-124-168.hsd1.il.comcast.net)
2021-12-18 15:47:29 +0100juhp[m](~juhpmatri@2001:470:69fc:105::6e9)
2021-12-18 15:50:32 +0100sourcemage(~sourcemag@c-24-14-124-168.hsd1.il.comcast.net) ()
2021-12-18 15:50:42 +0100jkaye(~jkaye@2601:281:8300:7530:c697:c75:764c:d1a0)
2021-12-18 15:53:51 +0100zebrag(~chris@user/zebrag)
2021-12-18 15:59:17 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 16:03:41 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 245 seconds)
2021-12-18 16:07:11 +0100 <juhp> Maybe it is too easy to define case-by-case...
2021-12-18 16:08:32 +0100PVPANTHONY(~The_viole@203.77.49.232) (Ping timeout: 240 seconds)
2021-12-18 16:11:07 +0100max22-(~maxime@2a01cb08833598005bdb830adfc4642c.ipv6.abo.wanadoo.fr)
2021-12-18 16:11:27 +0100lechner(~lechner@debian/lechner) (Ping timeout: 250 seconds)
2021-12-18 16:11:58 +0100evocatus(~evocatus@62.182.78.42)
2021-12-18 16:13:49 +0100_ht(~quassel@37.120.218.165) (Ping timeout: 240 seconds)
2021-12-18 16:14:21 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-18 16:15:15 +0100evocatus(~evocatus@62.182.78.42) (Client Quit)
2021-12-18 16:16:21 +0100alx741(~alx741@157.100.93.160)
2021-12-18 16:16:48 +0100 <_73> I actually have a copy of "To Mock a Mockingbird" that was gifted to me and I never got around to reading. I didn't realize that it was about combinatory logic.
2021-12-18 16:17:16 +0100selkirk(~selkirk@182.69.202.102)
2021-12-18 16:17:25 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-18 16:17:46 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Remote host closed the connection)
2021-12-18 16:19:36 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 16:23:40 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 16:25:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-18 16:25:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-18 16:25:37 +0100wroathe(~wroathe@user/wroathe)
2021-12-18 16:31:17 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-18 16:34:57 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer)
2021-12-18 16:37:22 +0100cosimone(~user@93-34-133-159.ip49.fastwebnet.it)
2021-12-18 16:40:00 +0100noex(~null@2600:8804:1280:aa0:5857:94a:25de:c513) (Quit: :q!)
2021-12-18 16:40:42 +0100alx741(~alx741@157.100.93.160)
2021-12-18 16:44:21 +0100cosimone(~user@93-34-133-159.ip49.fastwebnet.it) (Remote host closed the connection)
2021-12-18 16:45:11 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-12-18 16:45:32 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 16:49:36 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758)
2021-12-18 16:50:59 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-18 16:51:00 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-12-18 16:52:45 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2021-12-18 16:53:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758) (Ping timeout: 240 seconds)
2021-12-18 17:02:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 17:03:15 +0100alx741(~alx741@157.100.93.160)
2021-12-18 17:04:05 +0100toastloop(toastloop@user/toastloop) (Remote host closed the connection)
2021-12-18 17:05:46 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-18 17:08:42 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-12-18 17:09:51 +0100xkuru(~xkuru@user/xkuru)
2021-12-18 17:10:50 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 260 seconds)
2021-12-18 17:12:00 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-12-18 17:13:04 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 17:13:54 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 17:14:09 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-18 17:15:38 +0100selkirk(~selkirk@182.69.202.102) (Quit: leaving)
2021-12-18 17:16:27 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-18 17:25:08 +0100earendel(uid498179@user/earendel)
2021-12-18 17:28:06 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-12-18 17:31:42 +0100CyberTailor(~cyber@gateway/tor-sasl/cybertailor)
2021-12-18 17:31:50 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 260 seconds)
2021-12-18 17:31:53 +0100alx741(~alx741@157.100.93.160)
2021-12-18 17:32:06 +0100jeetelongname(~jeet@88-111-159-26.dynamic.dsl.as9105.com) (Ping timeout: 268 seconds)
2021-12-18 17:32:10 +0100 <CyberTailor> i have too little RAM to compile haskell packages, what to do?
2021-12-18 17:35:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-18 17:35:37 +0100lagash(lagash@lagash.shelltalk.net)
2021-12-18 17:36:37 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-18 17:36:38 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 17:36:57 +0100pfurla__(~pfurla@2804:d41:4331:4800:b8e7:6926:586a:39fa) (Ping timeout: 240 seconds)
2021-12-18 17:39:55 +0100pfurla(~pfurla@2804:d41:4331:4800:8490:5949:caf8:c808)
2021-12-18 17:42:54 +0100 <pragma-> download more
2021-12-18 17:44:28 +0100 <geekosaur> generally you add swap somehow. of course that'll be slow.
2021-12-18 17:46:07 +0100 <geekosaur> if this is something like a vps or droplet, you build on another machine and copy the artifacts over. if it's something like an rpi and you can't easily add swap, you may have to look into an arm vps
2021-12-18 17:46:48 +0100Vajb(~Vajb@2001:999:62:f3d1:4390:fbed:1f9b:9d03)
2021-12-18 17:52:46 +0100 <sm> how much too little ?
2021-12-18 17:54:25 +0100alx741(~alx741@157.100.93.160)
2021-12-18 17:59:44 +0100 <CyberTailor> sm: 4GB and zram
2021-12-18 18:00:08 +0100 <geekosaur> ow
2021-12-18 18:00:39 +0100 <geekosaur> might suggest using qemu on an x86 box for builds
2021-12-18 18:00:57 +0100 <geekosaur> it'll be slow, but not as slow as swapping on 4gb
2021-12-18 18:00:57 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 18:01:06 +0100 <sm> I don't know ram, but many (most ?) packages can build in 4G, some tweaks to your command can help
2021-12-18 18:01:26 +0100 <sm> @where lowmem
2021-12-18 18:01:26 +0100 <lambdabot> stack build ONEPKG -j1 --ghc-options='+RTS -M1G -RTS'
2021-12-18 18:02:04 +0100 <sm> @where lowmemcabal
2021-12-18 18:02:04 +0100 <lambdabot> I know nothing about lowmemcabal.
2021-12-18 18:02:55 +0100 <sm> but you're probably building pandoc or something
2021-12-18 18:02:58 +0100 <monochrom> cabal's is still -j1 and --ghc-options
2021-12-18 18:03:10 +0100 <sm> +1
2021-12-18 18:03:58 +0100 <sm> @where+ lowmem cabal/stack build ONEPKG -j1 --ghc-options='+RTS -M2G -RTS'
2021-12-18 18:03:58 +0100 <lambdabot> Done.
2021-12-18 18:04:38 +0100slack1256(~slack1256@191.126.99.206)
2021-12-18 18:05:04 +0100 <CyberTailor> gentoo builds with +RTS -A256M -qb0 -RTS
2021-12-18 18:05:06 +0100 <monochrom> GHC these days autotune its allocator based on physical RAM size. It may be unnecessary to dictate that ghc-options.
2021-12-18 18:05:41 +0100 <sm> interesting.. well, worth testing CyberTailor
2021-12-18 18:05:52 +0100shailangsa(~shailangs@host86-186-127-224.range86-186.btcentralplus.com) (Remote host closed the connection)
2021-12-18 18:06:24 +0100 <c_wraith> most build memory problems come from either the linker or packages like vector-algorithms that do recursive inlining up to some ridiculous depth such that they generate huge amounts of code.
2021-12-18 18:08:36 +0100 <c_wraith> it can help to know what situation you're in
2021-12-18 18:09:58 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-18 18:09:58 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-18 18:09:58 +0100wroathe(~wroathe@user/wroathe)
2021-12-18 18:10:52 +0100 <sm> poor, grim, or dire ?
2021-12-18 18:11:15 +0100 <CyberTailor> building e.g. shellcheck or gentoo's hackport
2021-12-18 18:12:16 +0100 <sm> is the above command helping ?
2021-12-18 18:15:17 +0100 <CyberTailor> i'm just going to put off haskell until i get more ram
2021-12-18 18:18:53 +0100mrus(~mrus@2001:19f0:5:1535:5400:3ff:fe7d:10ae) (Quit: Surfing the great wave off Kanagawa)
2021-12-18 18:19:00 +0100alx741(~alx741@157.100.93.160)
2021-12-18 18:19:11 +0100mrus(~mrus@2001:19f0:5:1535:5400:3ff:fe7d:10ae)
2021-12-18 18:22:01 +0100 <hololeap> this is an example of a what gentoo outputs when configuring. I know that things were optimized at one point to favor speed over RAM economy: http://sprunge.us/oXtTK7
2021-12-18 18:24:09 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 18:24:23 +0100 <sm> aww... too sensible :)
2021-12-18 18:26:52 +0100 <hololeap> does anyone spot any options that are obviously memory-hungry in that?
2021-12-18 18:28:27 +0100 <hololeap> or know of changes that would allow us to have a low-memory profile for building?
2021-12-18 18:28:41 +0100 <monochrom> -j4
2021-12-18 18:29:15 +0100 <hololeap> sure, they tried with -j1 I'm pretty sure
2021-12-18 18:30:24 +0100 <monochrom> I guess I don't understand your question.
2021-12-18 18:31:45 +0100 <hololeap> there are a bunch of other options that I'm not familiar with, such as --ghc-option=-optl-Wl,-O1, and I'm wondering if any (besides -j4) stand out as culprits for increasing RAM consumption during compilation
2021-12-18 18:38:47 +0100delYsid(~user@84-115-55-45.cable.dynamic.surfer.at)
2021-12-18 18:39:57 +0100 <delYsid> I think I need ExistentialQuantification, but the concept is totally new to me.
2021-12-18 18:41:01 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-18 18:41:04 +0100alx741(~alx741@157.100.93.160)
2021-12-18 18:41:07 +0100 <delYsid> I get that it would be better to expand every possible operation to a record and keep that in a list, but I think I can not do that since I want the body of my datatype to be extensible, if that wording makes any sense.
2021-12-18 18:42:59 +0100 <delYsid> I am trying to create programmable views in a brick app using dyre. The idea is to have a generic View type which the user can create which holds data and functions which specify how to draw and handle events.
2021-12-18 18:44:06 +0100 <delYsid> Are there any other patterns then ExistentialQuantification to do this, or should I happily proceed with Typeable and cast?
2021-12-18 18:44:17 +0100slack1256(~slack1256@191.126.99.206) (Ping timeout: 240 seconds)
2021-12-18 18:45:50 +0100shailangsa(~shailangs@host86-186-127-224.range86-186.btcentralplus.com)
2021-12-18 18:45:51 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 18:46:46 +0100regr(~regr@2a02:a466:cf4f:1:5446:667c:b4:12f6)
2021-12-18 18:46:47 +0100 <hololeap> delYsid: you only need ExistentialQuantification if you are trying to "hide" some aspect of the type
2021-12-18 18:48:01 +0100 <hololeap> for instance, if you had the type (Thing t) and constructors for (Thing String) and (Thing Bool), you would not be able to stick both of those in [Thing t], because lists are homogeneous
2021-12-18 18:49:08 +0100 <hololeap> so you could use ExistentialQuantification to make a SomeThing type which hides `t', allowing you to stick it into containers, but you lose the type-level information of what `t' was
2021-12-18 18:49:38 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 256 seconds)
2021-12-18 18:51:34 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758)
2021-12-18 18:52:56 +0100_73(~user@pool-108-49-252-36.bstnma.fios.verizon.net) (Remote host closed the connection)
2021-12-18 18:53:55 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-18 18:54:29 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758) (Remote host closed the connection)
2021-12-18 18:54:45 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-12-18 19:00:05 +0100benin(~benin@183.82.27.121) (Ping timeout: 252 seconds)
2021-12-18 19:00:34 +0100benin(~benin@183.82.27.121)
2021-12-18 19:02:14 +0100alx741(~alx741@157.100.93.160)
2021-12-18 19:02:33 +0100CyberTailor(~cyber@gateway/tor-sasl/cybertailor) (Konversation terminated!)
2021-12-18 19:03:01 +0100 <delYsid> hololeap: Thats pretty much it. I dont want to hide anything in particular, but I need a way to add an aribtrary number of custom types of a container. I am hoping to be able to recover t with a Typeable constraint and cast?
2021-12-18 19:03:17 +0100 <delYsid> s/of/to/
2021-12-18 19:05:12 +0100 <hololeap> I don't think that's necessary. you can shove as much info as you want into the `s' variable for brick's App
2021-12-18 19:05:20 +0100 <monochrom> "Hiding" is true, but is true of all parametric polymorphism. If I code up "f :: forall a. a -> a" and you are the user of f, you are hiding the actual type from me, too. Changing "forall" to "exist" just turns the table around.
2021-12-18 19:06:14 +0100 <monochrom> Instead, "forall" is a product type that is an infinite product, "exists" is a sum type that is an infinite sum.
2021-12-18 19:06:19 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-12-18 19:06:58 +0100 <monochrom> That infinitness is also the driving force of why some people say "open".
2021-12-18 19:09:40 +0100 <hololeap> Q: where did you put my keys? A: There exists a location in the universe where your keys are present -- sounds a bit like "hiding" to me ;)
2021-12-18 19:12:47 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 19:13:13 +0100 <hololeap> delYsid: you might want to model a widget off of brick's App, where the user just needs to give you (s -> [Widget n]) and (s -> Event n e -> EventM n (Next s)) functions in order to have a View
2021-12-18 19:13:40 +0100 <hololeap> _how_ they implement the functions is their business and outside the scope of your library
2021-12-18 19:15:49 +0100 <monochrom> Observe that: 1. It uses "forall". 2. It is saying that now the user can hide their s from you. Which is what I said.
2021-12-18 19:16:25 +0100 <monochrom> Generally and formally, "(exists s. ...) -> t" is equivalent to "forall s. ... -> t".
2021-12-18 19:16:31 +0100 <delYsid> hololeap: Yes. Maybe I am stuck in some sort of confusion, but what I want to achieve is the ability to add an aribtrary amount of these to the brick state. I want some sort of function addView :: View -> State -> State -- which adds the given view (with its own state) to the global brick state.
2021-12-18 19:16:53 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-18 19:17:09 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-18 19:18:11 +0100econo(uid147250@user/econo)
2021-12-18 19:19:11 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-12-18 19:20:28 +0100dsrt^(~dsrt@64.253.22.77)
2021-12-18 19:20:37 +0100Feuermagier_(~Feuermagi@138.199.36.133) (Quit: Leaving)
2021-12-18 19:20:48 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-18 19:21:27 +0100 <monochrom> If you find that View is conceptually an open sum type, you can define it to be an existential type, as said.
2021-12-18 19:22:41 +0100 <delYsid> ah, that sounds about right then
2021-12-18 19:23:53 +0100 <monochrom> A finite and closed sum type is for example "data F = C1 Int | C2 Bool | C3 Char". If you receive x::F, you say "I know, it can only be Int, Bool, or Char".
2021-12-18 19:25:16 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-18 19:25:29 +0100 <monochrom> An infinite and open sum type is for example "data O = forall s. O s (s -> String)". If you receive x::O, it may be any type, you don't know which, but you know it supports an "s -> String" operations.
2021-12-18 19:25:29 +0100 <EvanR> you may be able to do it if you can find a uniform interface to your view
2021-12-18 19:25:36 +0100 <EvanR> without fancy types
2021-12-18 19:26:07 +0100 <monochrom> Note that "O -> Foo" is the same as "forall s. (s, s->String) -> Foo".
2021-12-18 19:26:53 +0100 <monochrom> In a language without built-in existential typing, you use that encoding.
2021-12-18 19:27:27 +0100 <hololeap> ok, but if we're getting into theory here, what about the yoneda lemma, where a ~ (a -> r) -> r is saying "if you can give me an `r' from your huge open sum type `a', I really don't care what `a' is. just give me the `r'" -- doesn't this also provide a mechanism for dealing with open sum types without getting into ExistentialQuantification?
2021-12-18 19:28:42 +0100 <monochrom> But so is F. "F -> Foo" is the same as "(Int -> Foo, Bool -> Foo, Char -> Foo)" --- a finite "forall".
2021-12-18 19:29:02 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 19:29:28 +0100 <EvanR> delYsid, does the ultimate use of your dynamic view end up being something like a map reduce
2021-12-18 19:29:50 +0100 <EvanR> and foldmap... like map all your weird values to a uniform value and mush them together
2021-12-18 19:29:52 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-12-18 19:30:01 +0100natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-12-18 19:30:24 +0100 <monochrom> You are missing a "forall" there. a ~ forall r. (a -> r) -> r
2021-12-18 19:30:42 +0100 <monochrom> In category theory terms, "natural in r".
2021-12-18 19:30:52 +0100 <EvanR> is that version of yoneda lemma at all related to scott encoding (or what's it called encoding) of data types
2021-12-18 19:30:56 +0100alx741(~alx741@157.100.93.160)
2021-12-18 19:31:00 +0100 <monochrom> Naturality in category theory becomes parametricity in programming.
2021-12-18 19:31:43 +0100 <monochrom> There is also an outer "forall a." over the whole thing. The Yoneda correspondence is natural in a, too.
2021-12-18 19:32:09 +0100 <monochrom> THIS IS WHY HASKELL SHOULD HAVE MADE YOU WRITE "forall" EXPLICITLY.
2021-12-18 19:32:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 19:32:36 +0100 <EvanR> that would get annoying
2021-12-18 19:32:51 +0100 <hololeap> I don't know enough about the theory to actually use it to make a point :) but my point is that the user can just give you back a [Widget] and you don't need to know all the steps they took (or types they used) to do so
2021-12-18 19:32:54 +0100 <EvanR> category theory is full of omitted important stuff like that
2021-12-18 19:33:03 +0100 <EvanR> the student is just supposed to know it's there
2021-12-18 19:33:16 +0100 <EvanR> it's even worse in physics
2021-12-18 19:33:27 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-18 19:34:10 +0100 <EvanR> yes, what hololeap said
2021-12-18 19:34:26 +0100thevishy(~Nishant@2405:201:f005:c007:4c69:b93c:3bc3:9ff2) (Quit: Leaving)
2021-12-18 19:34:29 +0100 <delYsid> Well, the draw part of the view is simple, since it is pure. I have that worked out. But event handling is different, since it can mutate state, and I need a way for the view to know where its data is located in the big state.
2021-12-18 19:34:50 +0100 <EvanR> [BigData -> Widget]
2021-12-18 19:35:26 +0100 <monochrom> We can talk non-theory. I started without theory, I didn't bring up Yoneda. I started with basic Haskell code.
2021-12-18 19:35:31 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 19:35:55 +0100 <monochrom> You can work with my O->Foo example to see what I mean. No Yoda required.
2021-12-18 19:36:25 +0100 <EvanR> Yoda Nelemma
2021-12-18 19:37:01 +0100 <monochrom> And you can see that it is the same technique you described. I was connecting forall with exist.
2021-12-18 19:37:36 +0100 <monochrom> My hidden agenda is, though, to de-FUD existential types.
2021-12-18 19:38:27 +0100 <monochrom> Existential types are not an anti-pattern.
2021-12-18 19:38:46 +0100 <EvanR> existential types hide stuff... simply applying a function hides stuff xD
2021-12-18 19:38:51 +0100 <EvanR> what's the problem
2021-12-18 19:39:13 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-18 19:39:22 +0100gustik(~gustik@2a01:c844:242f:ba20:72e:7030:46bf:1353) (Quit: Leaving)
2021-12-18 19:39:41 +0100 <monochrom> Well yeah that's another of my point, too. Existential types do not have a monopoly on hiding.
2021-12-18 19:40:14 +0100 <monochrom> In fact to the point that the hiding should be attributed to something else unrelated.
2021-12-18 19:41:14 +0100 <monochrom> In Java, you have instanceOf, you have a whole java.reflection machinery. They break parametricity in a very strong way. They also break all the fabled "hiding" promised by OOP.
2021-12-18 19:41:43 +0100 <monochrom> The conclusion is that hiding should be attributed to parametricity.
2021-12-18 19:42:34 +0100 <hololeap> delYsid: here's my thinking: you can write: (local -> BrickEvent n e -> EventM n (Next local)) -> ((s,local) -> BrickEvent n e -> EventM n (Next (s,local)))
2021-12-18 19:42:43 +0100 <monochrom> Just that the OOP people boast "hiding" more often, and they use existential types more often, so you get a distorted impression.
2021-12-18 19:42:49 +0100 <earendel> i think you misunderstand it as a kind of security feature.
2021-12-18 19:43:22 +0100 <monochrom> Uh no. Look at academic explanations of "parametricity" and "type case".
2021-12-18 19:43:25 +0100 <earendel> in case you mean private and internal types.
2021-12-18 19:43:47 +0100 <hololeap> delYsid: this will allow you to take a state function that focuses on your local View state and apply it to your appHandleEvent from Brick.Main
2021-12-18 19:43:53 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-18 19:43:57 +0100 <delYsid> I think my problem boils down to a this "pointer". If I were to write this in C++, I would have base class, some virtual methods, and hide all the private state in the various view subclasses. To add a view, I'd push it to a vector of base pointers. If I call my virtual handle event method, I get a this pointer and can mutate my state. I am looking for something that lets me do this with Brick, where the State is actually a global
2021-12-18 19:43:58 +0100 <delYsid> big nested record, and I have to figure out where my private state lives.
2021-12-18 19:44:06 +0100 <monochrom> In particular "type case implies losing parametricity"
2021-12-18 19:44:50 +0100 <EvanR> delYsid, you can do exactly this by passing a this pointer as an argument
2021-12-18 19:45:03 +0100 <EvanR> and using IO or STM to use it
2021-12-18 19:45:11 +0100 <monochrom> Haskell is not very good at subclassing though, even after you use existential types.
2021-12-18 19:45:38 +0100 <monochrom> But a virtual class (ignoring subclassing), that we can do.
2021-12-18 19:47:09 +0100regr(~regr@2a02:a466:cf4f:1:5446:667c:b4:12f6) (Ping timeout: 268 seconds)
2021-12-18 19:47:26 +0100 <EvanR> virtual class = record of functions? xD
2021-12-18 19:47:31 +0100 <monochrom> Yeah!
2021-12-18 19:47:40 +0100 <EvanR> cute
2021-12-18 19:48:16 +0100 <monochrom> Or even better, record of a few value fields and a few function fields that use those value fields.
2021-12-18 19:48:32 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 240 seconds)
2021-12-18 19:48:41 +0100 <monochrom> For example, "data O = forall s. O s (s -> String)" as said.
2021-12-18 19:49:19 +0100 <EvanR> that screams "String" to me
2021-12-18 19:49:33 +0100 <monochrom> Or you can recgonize that "s -> String looks like a Show method" so you compress it to "data O' = forall s. Show s => O' s"
2021-12-18 19:51:33 +0100 <monochrom> It is a basic but dumb and useless example.
2021-12-18 19:51:37 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 240 seconds)
2021-12-18 19:51:48 +0100 <monochrom> As usual, all useful OOP examples take up at least 10 lines.
2021-12-18 19:51:51 +0100regr(~regr@2a02:a466:cf4f:1:cb36:2141:856f:f900)
2021-12-18 19:52:11 +0100mc47(~mc47@xmonad/TheMC47)
2021-12-18 19:53:11 +0100 <delYsid> EvanR: I have never worked with pointers in Haskell. I was hoping I could get what I want with Lens, but I am sort of stuck here.
2021-12-18 19:53:23 +0100 <monochrom> delYsid: There is a chance "pointer" translates to "lens"...
2021-12-18 19:53:25 +0100 <EvanR> not called a pointer, it's IORef or TVar
2021-12-18 19:53:41 +0100alx741(~alx741@157.100.93.160)
2021-12-18 19:53:50 +0100 <geekosaur> well, one could claim you work with nothing but pointers
2021-12-18 19:54:24 +0100 <monochrom> But yeah maybe IORef or TVar is more idiomatic.
2021-12-18 19:54:40 +0100 <monochrom> Unless you don't want IO or STM.
2021-12-18 19:55:41 +0100 <EvanR> accessing (potentially modifying?) that external "big" "state" ?
2021-12-18 19:56:10 +0100 <EvanR> from your OOP subcomponents?
2021-12-18 19:56:22 +0100 <monochrom> But if it is strictly a pure function View -> State -> State, different values of View address different slices of State, and there are too many possibilities to write a finite sum type for View...
2021-12-18 19:56:28 +0100 <EvanR> seems awkward to do it entirely pure
2021-12-18 19:56:33 +0100 <monochrom> then that's straight to the definition of "lens".
2021-12-18 19:56:50 +0100 <delYsid> EvanR: Yes. Its a bit like having two states. The private state of the view which lives somewhere in a NonEmpty in the global state. The handler should be able to modify both.
2021-12-18 19:57:30 +0100 <EvanR> if you figure out how to do that without IO, you still have the original problem of unmanagable spooky action at a distance
2021-12-18 19:57:38 +0100 <EvanR> that happens immediately with lots of globals
2021-12-18 19:58:31 +0100 <EvanR> in my current code, I don't have global state and restrict access to what's relevant
2021-12-18 19:58:44 +0100 <delYsid> But without access to the global state, the handler is pretty limited in reusing any (global) functionality...
2021-12-18 19:59:45 +0100 <delYsid> imagine a clipboard. How would a view copy stuff to it?
2021-12-18 20:00:07 +0100 <EvanR> sounds like a single TVar, the clipboard
2021-12-18 20:00:30 +0100 <EvanR> and whatever can use it, has it
2021-12-18 20:00:46 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 20:01:01 +0100 <EvanR> (also, a "view" that modifies the clipboard? xD)
2021-12-18 20:01:02 +0100 <delYsid> hmm, thats something to think about.
2021-12-18 20:01:19 +0100 <EvanR> not your dads MVC pattern
2021-12-18 20:01:20 +0100max22-(~maxime@2a01cb08833598005bdb830adfc4642c.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-12-18 20:01:31 +0100 <delYsid> nah
2021-12-18 20:01:56 +0100 <delYsid> Lets call it DisplayableObject then :-)
2021-12-18 20:02:08 +0100 <EvanR> it can do anything as well as display
2021-12-18 20:02:20 +0100 <EvanR> redundant? xD
2021-12-18 20:02:48 +0100 <monochrom> "Object" is redundant :)
2021-12-18 20:03:53 +0100cocreature(~moritz@2a03:b0c0:3:d0::c8:f001) (Quit: WeeChat 3.0.1)
2021-12-18 20:05:24 +0100cocreature(~moritz@2a03:b0c0:3:d0::c8:f001)
2021-12-18 20:05:34 +0100paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds)
2021-12-18 20:06:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-18 20:06:52 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-18 20:07:05 +0100 <delYsid> OK, I get the message, I think. Dont open everything up because that makes code unpredictable. So a displayable should only have access to its own state. And if it needs to do stuff to the global state, make these operations explicit as fields and feed them at creation time.
2021-12-18 20:08:05 +0100 <EvanR> something like that is a classic OOP strategy, though the background assumes everything in IO
2021-12-18 20:09:10 +0100 <delYsid> Its not even that I am after OOP. I dont have any sort of inheritance or anything like that. All I want is a polymorhpic container of things with private state!
2021-12-18 20:09:25 +0100 <EvanR> bah inheritance
2021-12-18 20:09:56 +0100 <EvanR> haskell has other ways to reuse code
2021-12-18 20:10:32 +0100 <delYsid> inheritance is not relevant anyway. polymorphism is.
2021-12-18 20:11:05 +0100 <EvanR> the "polymorphic container of things" with private state has an issue in haskell because it doesn't describe what the things or the container are supposed to be able to do
2021-12-18 20:11:29 +0100 <EvanR> even implementing it as [IO ()] is too specific, depending on what the point is
2021-12-18 20:12:03 +0100 <EvanR> in other languages you have a default background of things all objects can do, but in haskell you don't
2021-12-18 20:12:06 +0100regr(~regr@2a02:a466:cf4f:1:cb36:2141:856f:f900) (WeeChat 2.8)
2021-12-18 20:12:18 +0100 <EvanR> i.e. [forall a . a] can't do anything
2021-12-18 20:13:16 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2021-12-18 20:13:32 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-18 20:14:07 +0100 <delYsid> Well, Things is a typeclass in my case I guess... The point is more about what signature its methods should exactly have. as said, the pure draw is simple and done, but the stateful handleEvent probably needs Lens somehow to writ the mutation back to the global state.
2021-12-18 20:15:23 +0100 <EvanR> if the big global state has type S then it sounds like your just want a S -> S
2021-12-18 20:15:41 +0100 <EvanR> lenses can help you build those, if you want
2021-12-18 20:16:37 +0100 <EvanR> your interface could involve (S -> S) or it could take IORef S
2021-12-18 20:17:10 +0100 <EvanR> but yeah that there needs to be some interface was my point
2021-12-18 20:17:24 +0100 <EvanR> polymorphic or not
2021-12-18 20:18:01 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807)
2021-12-18 20:19:23 +0100alx741(~alx741@157.100.93.160)
2021-12-18 20:19:39 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-12-18 20:20:15 +0100 <Raito_Bezarius> is it possible to open a named shared memory location with stm library in Haskell?
2021-12-18 20:20:34 +0100 <monochrom> I think no.
2021-12-18 20:20:38 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection)
2021-12-18 20:22:25 +0100 <Raito_Bezarius> Is there a way to open named shared memory locations in Haskell, monochrom ?
2021-12-18 20:24:49 +0100 <geekosaur> I don't think there's an interface to the shmget() etc. functions currently. There is one to mmap() but I'm not sure how up to date it is
2021-12-18 20:25:24 +0100 <geekosaur> STM only operates in-process; there is no way to synchronize across processes using a shared memory segment, either with STM or with MVars
2021-12-18 20:25:55 +0100 <Raito_Bezarius> Thanks geekosaur!
2021-12-18 20:25:57 +0100 <hololeap> delYsid: this is my idea: http://sprunge.us/uIMjhF?haskell
2021-12-18 20:26:04 +0100Sgeo(~Sgeo@user/sgeo)
2021-12-18 20:29:35 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 20:29:38 +0100 <sm> looks interesting
2021-12-18 20:30:34 +0100lavaman(~lavaman@98.38.249.169)
2021-12-18 20:31:21 +0100 <hololeap> oops, there's a typo at the end. fixed: http://sprunge.us/7F3zYK?haskell
2021-12-18 20:32:43 +0100 <EvanR> what is the n type in bricks Widget
2021-12-18 20:32:49 +0100max22-(~maxime@2a01cb088335980062ccec88c4c3abad.ipv6.abo.wanadoo.fr)
2021-12-18 20:33:12 +0100 <hololeap> you might notice that viewHandleEvent returns `EventM n (Maybe (Next v))` instead of `EventM n (Next v)` -- this is so that you can choose to pass the event on to the parent handler
2021-12-18 20:33:16 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-18 20:33:35 +0100 <hololeap> EvanR: it's essentially a sum type that lets you identify your widgets, or at least the important ones
2021-12-18 20:33:54 +0100 <EvanR> oh, a naming system
2021-12-18 20:33:59 +0100 <hololeap> yeah
2021-12-18 20:34:22 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer)
2021-12-18 20:34:52 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 20:36:03 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 20:36:04 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 20:36:48 +0100rito_(~rito_gh@45.112.243.172) (Quit: Leaving)
2021-12-18 20:38:28 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2021-12-18 20:40:04 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 20:40:04 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 20:40:17 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2021-12-18 20:40:48 +0100 <delYsid> n is for name, actually.
2021-12-18 20:41:33 +0100 <delYsid> hololeap: Hmm, I am too slow to digest this immediately, but it looks promising. Thanks for writing it up!
2021-12-18 20:41:50 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 20:41:50 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 20:43:06 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-18 20:45:15 +0100 <hololeap> delYsid: np. you might also want to add this http://sprunge.us/txnro4 ... not sure how it will all shake out in real code, but this could probably accommodate nested Views as well
2021-12-18 20:45:31 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 20:45:32 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 20:46:19 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-18 20:46:43 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 20:46:44 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 20:47:35 +0100 <hololeap> where you would end up with `ViewState (ViewState v2 v1) s` or something, where v1 is the state for the outer View and v2 is the state for the inner View
2021-12-18 20:47:50 +0100alx741(~alx741@157.100.93.160)
2021-12-18 20:48:36 +0100 <hololeap> I've actually thought about this exact problem before so I had some ideas already :)
2021-12-18 20:49:55 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2021-12-18 20:50:13 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-12-18 20:51:11 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-12-18 20:52:20 +0100 <delYsid> Oh, so the plan is to launch an App for a view? Thats interesting
2021-12-18 20:52:58 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2021-12-18 20:56:54 +0100zebrag(~chris@user/zebrag)
2021-12-18 20:57:00 +0100 <hololeap> the idea is that a View is an independent system, sort of like an App, and this means you need to hijack appHandleEvent so that the View can handle events independently and pass on any "leftovers" to the main App
2021-12-18 20:58:15 +0100 <hololeap> again, I've only ever thought about this in theory. I haven't tried implementing it or using it so I don't know if it will end up being annoying to use in the end for some reason
2021-12-18 20:59:27 +0100 <Athas> ...is there really no convenience function in aeson for decoding from String or Text?
2021-12-18 20:59:28 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 20:59:54 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 20:59:55 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:00:05 +0100 <hololeap> there should probably be a mechanism so that a View can both handle event _and_ pass it on to its parent, instead of "consuming" it being the only choice
2021-12-18 21:01:01 +0100jumper149(~jumper149@static.6.71.203.116.clients.your-server.de)
2021-12-18 21:01:03 +0100 <jumper149> Can I use a literate Haskell file with cabal?
2021-12-18 21:01:19 +0100 <geekosaur> cabal knows the .lhs extension is Haskell source, yes
2021-12-18 21:03:12 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-18 21:03:46 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-18 21:03:55 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:03:55 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:04:21 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:04:21 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:04:37 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 240 seconds)
2021-12-18 21:04:45 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:04:46 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:07:37 +0100juhp(~juhp@128.106.188.82)
2021-12-18 21:09:46 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-18 21:10:21 +0100 <delYsid> hololeap: I way planning to do the "passing on of event" by actually suing some sort of Keymap. Right now, I have a global appHandleEvent which picks the current view and call its handler, doing any global stuff hardcoded. Your idea looks neat, but I dont see how I'd add views to a container, same problem I guess.
2021-12-18 21:11:21 +0100 <delYsid> hololeap: As said initially, I'd like to combine Brick and Dyre, which means I'll have a config file which launches the resulting app. the plan is to be able to add views in that config file, hence the open sum type thing...
2021-12-18 21:11:45 +0100 <delYsid> damn, I cant type.
2021-12-18 21:15:20 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-18 21:17:24 +0100alx741(~alx741@157.100.93.160)
2021-12-18 21:17:25 +0100jonathanx(~jonathan@94.234.53.6)
2021-12-18 21:20:37 +0100jkaye(~jkaye@2601:281:8300:7530:c697:c75:764c:d1a0) (Ping timeout: 240 seconds)
2021-12-18 21:20:40 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-18 21:22:06 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2021-12-18 21:22:09 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:22:10 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:22:38 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-12-18 21:24:43 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Remote host closed the connection)
2021-12-18 21:29:44 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:29:44 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:32:09 +0100notzmv(~zmv@user/notzmv)
2021-12-18 21:33:07 +0100 <EvanR> so if I had, let's say, a big Data.Map which will not change. Then use Data.Compact to get the compact version of it. Then I want to union in additional smaller maps that don't overlap with the big map... can I just do it and it will utilize the compact region?
2021-12-18 21:33:35 +0100 <EvanR> or would it be better to hold two maps, the small dynamic ones and the large compact one and manually check both
2021-12-18 21:33:37 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-18 21:36:02 +0100 <EvanR> I'm thinking merging a compact map and a non compact map may begin to copy stuff out of the compact region and defeat the purpose
2021-12-18 21:37:21 +0100 <geekosaur> I think that'd only copy the spine out, keys and values would stay put as long as there's no overlap?
2021-12-18 21:37:36 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-12-18 21:38:58 +0100 <EvanR> if keys and values are small, wouldn't the spine constitute a big % of the space
2021-12-18 21:39:38 +0100 <geekosaur> yes, but they'd both have to be pretty small
2021-12-18 21:40:01 +0100 <geekosaur> bad idea for Map Int Int, less so for Map String String
2021-12-18 21:40:04 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2021-12-18 21:40:35 +0100 <EvanR> or IntMap BasicADTWithAFewInts
2021-12-18 21:40:41 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-12-18 21:41:24 +0100 <EvanR> that the keys and values stay in the compact region is good
2021-12-18 21:41:46 +0100 <geekosaur> IntMap probably breaks that since it'd be possible to UNPACK the keys into the spine
2021-12-18 21:41:49 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-18 21:41:52 +0100 <EvanR> oof
2021-12-18 21:42:24 +0100ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection)
2021-12-18 21:42:57 +0100EvanRhmms
2021-12-18 21:43:47 +0100 <EvanR> i will stop premature optimizing for now
2021-12-18 21:43:51 +0100cosimone(~user@93-34-133-159.ip49.fastwebnet.it)
2021-12-18 21:44:31 +0100ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com)
2021-12-18 21:47:15 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-18 21:51:12 +0100pavonia(~user@user/siracusa)
2021-12-18 21:52:32 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-18 21:52:32 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-18 21:52:32 +0100wroathe(~wroathe@user/wroathe)
2021-12-18 21:52:57 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2021-12-18 21:54:02 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:54:02 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:55:40 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:55:41 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:58:20 +0100xb0o2(~xb0o2@user/xb0o2)
2021-12-18 21:58:48 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:58:49 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:59:26 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 21:59:26 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 21:59:41 +0100coot(~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb)
2021-12-18 22:00:09 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 22:00:10 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 22:00:25 +0100 <__monty__> Hmm, I use Criterion to benchmark my Advent of Code solutions and yesterday's assignement is throwing me for a loop. The benchmark errors out on me with "Too many open files." What's the usual fix for this? Am I accidentally using lazy IO and the file's not clos... Yep, that was it (file not closing not sure it's actually lazy IO), wasn't parsing until eof >.<
2021-12-18 22:00:37 +0100 <__monty__> Thanks for rubber ducking! <3
2021-12-18 22:01:17 +0100jonathanx(~jonathan@94.234.53.6) (Ping timeout: 240 seconds)
2021-12-18 22:01:40 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-18 22:02:18 +0100Alex_test(~al_test@178.34.163.82) (Ping timeout: 256 seconds)
2021-12-18 22:02:47 +0100 <xb0o2> You're welcome... to where do we send the invoice?
2021-12-18 22:02:51 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 22:02:52 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 22:03:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-18 22:03:08 +0100 <c_wraith> __monty__: benchmarking is better when it doesn't include the file IO anyway. You'd probably get more actionable results if you read the input first and then passed it to all the test cases
2021-12-18 22:03:36 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-18 22:03:37 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 22:03:37 +0100AlexZenon(~alzenon@178.34.163.82) (Ping timeout: 240 seconds)
2021-12-18 22:04:31 +0100 <__monty__> c_wraith: I know these numbers aren't very meaningful. (I don't even bother making sure the load on my machine isn't already high before running them.) It's just the number I want to know : )
2021-12-18 22:04:47 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-18 22:06:17 +0100Alex_test(~al_test@178.34.163.82)
2021-12-18 22:06:54 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: closed)
2021-12-18 22:07:05 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-18 22:07:08 +0100neurocyte0132889(~neurocyte@94.46.66.157)
2021-12-18 22:07:08 +0100neurocyte0132889(~neurocyte@94.46.66.157) (Changing host)
2021-12-18 22:07:08 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-18 22:09:03 +0100AlexZenon(~alzenon@178.34.163.82)
2021-12-18 22:10:56 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Read error: Connection reset by peer)
2021-12-18 22:11:30 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-12-18 22:11:36 +0100sprout(~quassel@2a02:a467:ccd6:1:21ba:a382:6b6:54c4) (Ping timeout: 245 seconds)
2021-12-18 22:17:20 +0100acidjnk(~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de)
2021-12-18 22:17:45 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Read error: Connection reset by peer)
2021-12-18 22:18:07 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-12-18 22:18:59 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-18 22:19:09 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-18 22:19:39 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807)
2021-12-18 22:19:57 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-12-18 22:23:30 +0100cosimone(~user@93-34-133-159.ip49.fastwebnet.it) (Remote host closed the connection)
2021-12-18 22:24:24 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2021-12-18 22:27:26 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2021-12-18 22:34:36 +0100benin(~benin@183.82.27.121) (Ping timeout: 256 seconds)
2021-12-18 22:37:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-18 22:40:56 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2021-12-18 22:41:07 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-18 22:43:57 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-18 22:43:57 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-18 22:43:57 +0100wroathe(~wroathe@user/wroathe)
2021-12-18 22:44:20 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-18 22:46:41 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection)
2021-12-18 22:48:56 +0100deadmarshal(~deadmarsh@95.38.113.39)
2021-12-18 22:49:03 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-18 22:53:18 +0100deadmarshal(~deadmarsh@95.38.113.39) (Ping timeout: 256 seconds)
2021-12-18 22:56:06 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-18 22:58:10 +0100benin(~benin@183.82.27.121)
2021-12-18 23:12:30 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 260 seconds)
2021-12-18 23:14:50 +0100xsperry(~xs@user/xsperry) (Ping timeout: 256 seconds)
2021-12-18 23:15:38 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-12-18 23:17:09 +0100xsperry(~xs@user/xsperry)
2021-12-18 23:18:10 +0100son0p(~ff@181.136.122.143)
2021-12-18 23:18:27 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2021-12-18 23:19:19 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:178:131c:7a0c:e758)
2021-12-18 23:24:31 +0100 <dmj`> xb0o2: lol
2021-12-18 23:29:57 +0100dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-12-18 23:32:09 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-12-18 23:32:52 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2021-12-18 23:34:12 +0100coot(~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) (Quit: coot)
2021-12-18 23:35:48 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fbfb-173.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-18 23:38:23 +0100dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-12-18 23:46:57 +0100lavaman(~lavaman@98.38.249.169)
2021-12-18 23:47:44 +0100jpds1(~jpds@gateway/tor-sasl/jpds)
2021-12-18 23:48:16 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-18 23:48:25 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-12-18 23:48:26 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-12-18 23:48:38 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-12-18 23:51:40 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)