2021/02/26

2021-02-26 00:02:20 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-02-26 00:02:55 +0100adam10(6b4dedab@mobile-107-77-237-171.mobile.att.net)
2021-02-26 00:03:12 +0100adam10(6b4dedab@mobile-107-77-237-171.mobile.att.net) (Client Quit)
2021-02-26 00:05:58 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2021-02-26 00:06:58 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-26 00:07:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 00:09:51 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-26 00:10:02 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
2021-02-26 00:10:55 +0100vimto(~vimto@unaffiliated/vimto) (Ping timeout: 258 seconds)
2021-02-26 00:11:01 +0100drewolson(~drewolson@64.227.24.16)
2021-02-26 00:11:45 +0100mp___(mp@hell.cx)
2021-02-26 00:12:13 +0100gr33nbits(~gr33nbits@a109-49-87-64.cpe.netcabo.pt) (Quit: Konversation terminated!)
2021-02-26 00:13:31 +0100Alleria(~textual@zrcout.mskcc.org)
2021-02-26 00:13:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-02-26 00:13:54 +0100AlleriaGuest77245
2021-02-26 00:15:11 +0100Guest30451(~textual@zrcout.mskcc.org) (Ping timeout: 256 seconds)
2021-02-26 00:18:07 +0100 <tomsmeding> maerwald: if you have an android device, you can run it there (I have an android phone, can try to test -- though I'll be sleeping for a while)
2021-02-26 00:18:17 +0100conal(~conal@64.71.133.70)
2021-02-26 00:18:18 +0100xsperry(~as@unaffiliated/xsperry) (Remote host closed the connection)
2021-02-26 00:19:22 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-02-26 00:23:09 +0100o1lo01o__(~o1lo01ol1@95.69.63.87) (Remote host closed the connection)
2021-02-26 00:23:31 +0100ezzieyguywuf(~Unknown@unaffiliated/ezzieyguywuf)
2021-02-26 00:23:48 +0100o1lo01ol1o(~o1lo01ol1@95.69.63.87)
2021-02-26 00:25:29 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-02-26 00:27:38 +0100zar(~zar@fw1.ciirc.cvut.cz)
2021-02-26 00:28:50 +0100xsperry(~as@unaffiliated/xsperry)
2021-02-26 00:29:10 +0100o1lo01ol1o(~o1lo01ol1@95.69.63.87) (Ping timeout: 276 seconds)
2021-02-26 00:29:57 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 264 seconds)
2021-02-26 00:30:05 +0100crobbins(~crobbins@2600:1700:48eb:8490:f085:4e3f:f643:338d) (Ping timeout: 240 seconds)
2021-02-26 00:30:43 +0100crobbins(~crobbins@2600:1700:48eb:8490:f085:4e3f:f643:338d)
2021-02-26 00:33:39 +0100c-rog(~c-rog@traffic.simst.im)
2021-02-26 00:34:02 +0100c-rog(~c-rog@traffic.simst.im) (Quit: quitin)
2021-02-26 00:34:02 +0100c-rog(~c-rog@traffic.simst.im)
2021-02-26 00:34:43 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Remote host closed the connection)
2021-02-26 00:34:43 +0100bencark(~cark@91.110.54.64) (Remote host closed the connection)
2021-02-26 00:34:47 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-26 00:35:04 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-26 00:35:24 +0100aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net)
2021-02-26 00:35:30 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-26 00:37:01 +0100Riviera(Riviera@2a03:b0c0:1:d0::10:b001)
2021-02-26 00:37:33 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
2021-02-26 00:38:03 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-26 00:38:38 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-26 00:39:58 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-26 00:42:35 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 00:43:28 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 276 seconds)
2021-02-26 00:43:29 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Ping timeout: 265 seconds)
2021-02-26 00:44:03 +0100skregas_(~skregas_@201.89-10-150.nextgentel.com) (Quit: skregas_)
2021-02-26 00:44:59 +0100dmwit_dmwit
2021-02-26 00:46:31 +0100ransom(~c4264035@8.48.134.49) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 00:48:24 +0100buttbutter(5ec62a96@unaffiliated/buttbutter)
2021-02-26 00:48:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 00:50:28 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-26 00:51:33 +0100 <boxscape> % type Bar :: (forall s . s) -> *; type family Bar x where Bar y = Int
2021-02-26 00:51:33 +0100 <yahb> boxscape: ; <interactive>:50:62: error:; * Expected kind `forall s. s', but `y' has kind `k0'; Cannot instantiate unification variable `k0'; with a kind involving polytypes: forall s. s; * In the first argument of `Bar', namely `y'; In the type family declaration for `Bar'
2021-02-26 00:51:43 +0100buttbutter(5ec62a96@unaffiliated/buttbutter) (Client Quit)
2021-02-26 00:51:52 +0100 <boxscape> is there a way to make this work or do type families just not support rank n types
2021-02-26 00:53:08 +0100Guest58072notzmv
2021-02-26 00:53:15 +0100notzmv(~zmv@191.255.89.231) (Changing host)
2021-02-26 00:53:15 +0100notzmv(~zmv@unaffiliated/zmv)
2021-02-26 00:53:18 +0100EvanR_EvanR
2021-02-26 00:53:37 +0100EvanR(~evan@mail.evanr.info) (Changing host)
2021-02-26 00:53:37 +0100EvanR(~evan@unaffiliated/evanr)
2021-02-26 00:57:27 +0100remexre_remexre
2021-02-26 00:58:09 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2021-02-26 00:58:21 +0100hexo-(~hexo@83.167.228.130)
2021-02-26 00:58:25 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 276 seconds)
2021-02-26 00:58:37 +0100_Adluc_(~Adluc@83.167.228.130) (Ping timeout: 260 seconds)
2021-02-26 00:58:57 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 265 seconds)
2021-02-26 00:58:59 +0100Adluc(~Adluc@2a01:430:17:1::ffff:328)
2021-02-26 00:59:05 +0100hexo|(~hexo@83.167.228.130) (Ping timeout: 260 seconds)
2021-02-26 01:00:08 +0100finn_elija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection)
2021-02-26 01:00:30 +0100Rudd0(~Rudd0@185.189.115.108)
2021-02-26 01:00:31 +0100finn_elija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-02-26 01:01:58 +0100seneca(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-26 01:05:21 +0100epicte7us(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 264 seconds)
2021-02-26 01:05:30 +0100Tario(~Tario@200.119.184.113)
2021-02-26 01:06:15 +0100aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Quit: Leaving)
2021-02-26 01:06:58 +0100Guest70386(~micro@a9.lence.net) (Quit: leaving)
2021-02-26 01:08:19 +0100__minoru__shirae(~shiraeesh@109.166.59.137) (Ping timeout: 272 seconds)
2021-02-26 01:08:23 +0100micro(~micro@unaffiliated/micro)
2021-02-26 01:12:05 +0100mmarusea1ph2mmaruseacph2
2021-02-26 01:19:45 +0100Tario(~Tario@200.119.184.113) (Read error: Connection reset by peer)
2021-02-26 01:20:00 +0100Tario(~Tario@201.192.165.173)
2021-02-26 01:22:10 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-02-26 01:23:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-02-26 01:23:33 +0100conal(~conal@64.71.133.70)
2021-02-26 01:23:53 +0100skewerr(~spoonm@2602:ffd5:1:119::1) (Quit: Don't look behind you!)
2021-02-26 01:24:13 +0100spoonm(~spoonm@2602:ffd5:1:119::1)
2021-02-26 01:25:55 +0100sablib(~sablib@59.173.152.160) (Read error: Connection reset by peer)
2021-02-26 01:25:57 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-02-26 01:26:23 +0100magnuscake(~magnuscak@87.121.92.61)
2021-02-26 01:26:29 +0100sablib(~sablib@59.173.155.233)
2021-02-26 01:27:23 +0100spoonm(~spoonm@2602:ffd5:1:119::1) (Client Quit)
2021-02-26 01:27:26 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-02-26 01:27:47 +0100conal(~conal@64.71.133.70)
2021-02-26 01:27:48 +0100spoonm(~spoonm@2602:ffd5:1:119::1)
2021-02-26 01:29:45 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-02-26 01:30:15 +0100kadobananakadoban_
2021-02-26 01:30:29 +0100cocytus_(~cocytus@cpe-76-95-48-109.socal.res.rr.com) (Quit: Leaving)
2021-02-26 01:30:35 +0100kadobankadobanana
2021-02-26 01:30:56 +0100mudkadoban
2021-02-26 01:31:11 +0100kadobananamud
2021-02-26 01:32:13 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2021-02-26 01:33:43 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a)
2021-02-26 01:36:41 +0100usr25(~J@45.red-88-1-79.dynamicip.rima-tde.net) (Quit: Bye)
2021-02-26 01:37:57 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6)
2021-02-26 01:38:29 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) (Remote host closed the connection)
2021-02-26 01:38:50 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 01:38:56 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a)
2021-02-26 01:39:13 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 01:40:37 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-26 01:41:08 +0100polyrain(~polyrain@2001:8003:e4d8:4101:11d5:eb2a:5a3d:13dc)
2021-02-26 01:42:04 +0100crobbins(~crobbins@2600:1700:48eb:8490:f085:4e3f:f643:338d) (Remote host closed the connection)
2021-02-26 01:44:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2021-02-26 01:44:48 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-26 01:47:37 +0100Benzi-Junior(~BenziJuni@88-149-67-143.du.xdsl.is) (Quit: gone)
2021-02-26 01:50:35 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-26 01:51:00 +0100Benzi-Junior(~BenziJuni@88-149-67-143.du.xdsl.is)
2021-02-26 01:53:40 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 276 seconds)
2021-02-26 01:55:08 +0100magnuscake(~magnuscak@87.121.92.61) (Quit: Leaving)
2021-02-26 01:55:34 +0100conal(~conal@64.71.133.70)
2021-02-26 01:57:42 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-02-26 01:57:56 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds)
2021-02-26 01:58:24 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2021-02-26 02:00:28 +0100 <c_wraith> I'm not sure anything supports rank-n kinds
2021-02-26 02:00:31 +0100srk(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2021-02-26 02:00:31 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
2021-02-26 02:00:48 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-02-26 02:00:51 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-02-26 02:02:04 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 02:02:25 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 02:03:11 +0100carlomagno(~cararell@148.87.23.9) (Quit: Leaving.)
2021-02-26 02:04:41 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) (Ping timeout: 272 seconds)
2021-02-26 02:04:46 +0100ezrakilt_(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 02:05:40 +0100 <Feuermagier> how does one do a pairwise list comprehension (first element of xs with first element of ys and so on)?
2021-02-26 02:07:06 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-02-26 02:07:11 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 02:07:19 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 276 seconds)
2021-02-26 02:07:30 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-26 02:07:34 +0100 <edwardk> > [ (x, y) | x <- [1..10] | y <- [21..30] ]
2021-02-26 02:07:35 +0100 <lambdabot> [(1,21),(2,22),(3,23),(4,24),(5,25),(6,26),(7,27),(8,28),(9,29),(10,30)]
2021-02-26 02:07:54 +0100 <edwardk> use a | not a , to separate and turn on the extension it hollers at you about
2021-02-26 02:08:43 +0100 <swarmcollective> :t zip
2021-02-26 02:08:45 +0100 <lambdabot> [a] -> [b] -> [(a, b)]
2021-02-26 02:09:30 +0100 <Feuermagier> ah, thx!
2021-02-26 02:09:33 +0100 <edwardk> zip/zipWith is generally more idiomatic, but if you really want comprehension syntax the above works
2021-02-26 02:11:33 +0100 <swarmcollective> The comprehension syntax is very powerful. If I remember correctly, it allows you to do a cross join of the source lists, if needed.
2021-02-26 02:12:38 +0100 <Feuermagier> edwardk, my predicate variables appear to go out of scope if i do that
2021-02-26 02:13:31 +0100polyrain(~polyrain@2001:8003:e4d8:4101:11d5:eb2a:5a3d:13dc) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 02:13:31 +0100 <swarmcollective> (aka: cartesian join, cartesian product)
2021-02-26 02:15:09 +0100 <Feuermagier> essentially I want "halfEven3 xs ys = map (`div` 2) $ filter even $ zipWith (+) xs ys" - but as a list comprehension
2021-02-26 02:15:15 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-26 02:17:55 +0100 <edwardk> Feuermagier: pretty sure you need to use two nested comprehensions for that
2021-02-26 02:18:57 +0100 <edwardk> something like [ z `div` 2 | z <- [ x + y | x <- xs | y <- ys ], even z ]
2021-02-26 02:19:51 +0100hackageyahoo-prices 0.1.0.2 - A wrapper around Yahoo API for downloading market data. https://hackage.haskell.org/package/yahoo-prices-0.1.0.2 (alojzyleszcz)
2021-02-26 02:20:26 +0100shatriff(~vitaliish@protective.remission.volia.net) (Remote host closed the connection)
2021-02-26 02:20:59 +0100shatriff(~vitaliish@protective.remission.volia.net)
2021-02-26 02:21:56 +0100 <swarmcollective> I ended up rebuilding the lambdabot stock lookup plugin to pull from a different provider. Didn't the yahoo API go away? Maybe it is just not free anymore?
2021-02-26 02:22:57 +0100lemmih_(~lemmih@2406:3003:2072:44:5428:f0dd:ed19:b4df) (Remote host closed the connection)
2021-02-26 02:24:18 +0100totoro2022(~t@unaffiliated/totoro2021) (Quit: WeeChat 2.7.1)
2021-02-26 02:24:40 +0100totoro2021(~t@unaffiliated/totoro2021)
2021-02-26 02:28:13 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-02-26 02:29:10 +0100theelous3(~theelous3@unaffiliated/theelous3) (Read error: Connection reset by peer)
2021-02-26 02:30:47 +0100da39a3ee5e6b4b0d(~da39a3ee5@184.22.157.95)
2021-02-26 02:31:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 02:35:07 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 02:39:58 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds)
2021-02-26 02:41:07 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2021-02-26 02:42:57 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-26 02:43:18 +0100petersen(~petersen@redhat/juhp) (Remote host closed the connection)
2021-02-26 02:43:37 +0100ransom(~c4264035@2a09:bac0:21::81a:b438)
2021-02-26 02:43:45 +0100ransom(~c4264035@2a09:bac0:21::81a:b438) (Client Quit)
2021-02-26 02:44:34 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-26 02:46:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 02:46:47 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-26 02:49:38 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-02-26 02:50:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-02-26 02:53:26 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 264 seconds)
2021-02-26 02:57:09 +0100 <ski> `[z `div` 2 | (x <- xs | y <- ys),let z = x + y,even z]' ought to work .. :(
2021-02-26 02:59:15 +0100 <ski> > [z | [x,y] <- transpose [[0 .. 9],[10 .. 19]],z <- [x,y]]
2021-02-26 02:59:16 +0100 <lambdabot> [0,10,1,11,2,12,3,13,4,14,5,15,6,16,7,17,8,18,9,19]
2021-02-26 02:59:29 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-02-26 03:00:09 +0100 <ski> > [z | (x,y) <- [(x,y) | x <- [0 .. 9] | y <- [10 .. 19]],z <- [x,y]]
2021-02-26 03:00:11 +0100 <lambdabot> [0,10,1,11,2,12,3,13,4,14,5,15,6,16,7,17,8,18,9,19]
2021-02-26 03:01:47 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-02-26 03:02:09 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-02-26 03:04:05 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 03:04:26 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 03:04:26 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 03:06:45 +0100xff0x_(~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff) (Ping timeout: 272 seconds)
2021-02-26 03:07:56 +0100xff0x_(~xff0x@2001:1a81:52d0:d300:24a8:fbee:5e92:3e0)
2021-02-26 03:08:52 +0100rajivr(uid269651@gateway/web/irccloud.com/x-lipeedvqihpcwewl)
2021-02-26 03:08:54 +0100 <Feuermagier> whats the difference between || and "or" ?
2021-02-26 03:09:08 +0100 <edwardk> :t or
2021-02-26 03:09:09 +0100 <lambdabot> Foldable t => t Bool -> Bool
2021-02-26 03:09:11 +0100 <edwardk> :t (||)
2021-02-26 03:09:12 +0100 <lambdabot> Bool -> Bool -> Bool
2021-02-26 03:09:27 +0100 <edwardk> a || b = or [a,b]
2021-02-26 03:09:36 +0100 <Feuermagier> ah, so "or" is like "list stuff"?
2021-02-26 03:09:41 +0100 <edwardk> yeah
2021-02-26 03:09:50 +0100 <Feuermagier> thx
2021-02-26 03:09:59 +0100 <edwardk> nowadays generalized to arbitrary Foldable containers
2021-02-26 03:10:15 +0100 <edwardk> :t any
2021-02-26 03:10:17 +0100 <lambdabot> Foldable t => (a -> Bool) -> t a -> Bool
2021-02-26 03:10:26 +0100 <edwardk> any is 'or' with a built in 'map' applied
2021-02-26 03:10:30 +0100 <edwardk> > any even [1,2,3]
2021-02-26 03:10:32 +0100 <lambdabot> True
2021-02-26 03:10:44 +0100 <edwardk> or = any id
2021-02-26 03:11:57 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 264 seconds)
2021-02-26 03:13:50 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-02-26 03:14:35 +0100koz_. o O (any = orMap)
2021-02-26 03:14:43 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds)
2021-02-26 03:14:48 +0100 <koz_> And all = andMap.
2021-02-26 03:15:05 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2021-02-26 03:15:21 +0100 <koz_> Speaking of which, edwardk - is there any reason why Predicate's Divisible instance combines with &&, as opposed to ||?
2021-02-26 03:15:44 +0100 <koz_> As far as I can tell, Predicate is just a special case of (Monoid b) => Op b, right?
2021-02-26 03:15:47 +0100esoteric1lgo(~matt@uncertain.win) (Remote host closed the connection)
2021-02-26 03:16:52 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net)
2021-02-26 03:16:52 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:f4d9:46b5:acd5:46aa)
2021-02-26 03:17:00 +0100 <ski> @type (`withCoyoneda` any)
2021-02-26 03:17:01 +0100 <edwardk> koz_: because it is almost always the version you seem to want?
2021-02-26 03:17:01 +0100 <lambdabot> Foldable f => Coyoneda f Bool -> Bool
2021-02-26 03:17:10 +0100 <koz_> edwardk: Fair.
2021-02-26 03:17:18 +0100 <edwardk> koz_: but yes, its just a special case of Op
2021-02-26 03:17:39 +0100 <edwardk> it also makes the relationship between it and Equivalence clear
2021-02-26 03:18:34 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 03:18:57 +0100 <ski> @type (`withCoyoneda` foldMap)
2021-02-26 03:18:58 +0100 <lambdabot> (Foldable f, Monoid o) => Coyoneda f o -> o
2021-02-26 03:19:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 03:21:09 +0100 <koz_> Also, edwardk - Strong allows you to 'pass through' (c,), Choice allows the same for Either c. Is it possible to have something analogous for These c, and how would that relate to those other two?
2021-02-26 03:22:04 +0100ezrakilt_(~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
2021-02-26 03:23:47 +0100 <edwardk> IIRC These works as a valid tensor for a monoidal category, so it should exist
2021-02-26 03:24:02 +0100 <edwardk> i don't actually think it relates to the other two. you can force a relationship but its artificial
2021-02-26 03:24:05 +0100conal(~conal@64.71.133.70)
2021-02-26 03:24:51 +0100 <koz_> So basically we have Profunctor, and then each of Strong, Choice and [whatever the These-based one is called] are their own thing on top of it?
2021-02-26 03:25:00 +0100 <koz_> What _would_ you call the These-based one?
2021-02-26 03:25:02 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr)
2021-02-26 03:25:17 +0100 <MarcelineVQ> ChoiceChoiceStrong
2021-02-26 03:25:23 +0100 <edwardk> its all 'Strong' really
2021-02-26 03:25:32 +0100 <koz_> Just differently Strong.
2021-02-26 03:25:35 +0100 <edwardk> but Choice was named to match ArrowChoice
2021-02-26 03:26:11 +0100 <nshepperd2> Stronk
2021-02-26 03:26:19 +0100 <edwardk> i went with separate classes because inference works better and it doesn't need flexible instances, mptcs, etc. for user code
2021-02-26 03:26:21 +0100 <koz_> nshepperd2: LegDay.
2021-02-26 03:26:52 +0100 <edwardk> Stroice or Chong
2021-02-26 03:27:09 +0100 <koz_> edwardk: I guess in an ideal world, you'd have Strong parameterized over the tensor?
2021-02-26 03:27:21 +0100 <edwardk> koz_: tried it, but the thing is it sucks to use
2021-02-26 03:27:38 +0100 <koz_> Yeah, I can imagine that.
2021-02-26 03:27:40 +0100 <edwardk> you get the same combinator names too many manual type applications are required
2021-02-26 03:28:13 +0100 <koz_> Also, can we Co- out of Stroice like with Costrong and Cochoice?
2021-02-26 03:28:19 +0100 <edwardk> i don;t like the fact that linear-base decided to pun the two, makes the lenses they offer even more awkward
2021-02-26 03:28:26 +0100 <koz_> (I still don't fully get how Cochoice's method doesn't infinitely loop)
2021-02-26 03:28:29 +0100 <edwardk> yes
2021-02-26 03:28:29 +0100 <koz_> (for ->)
2021-02-26 03:29:02 +0100travisbtabemann
2021-02-26 03:29:21 +0100Lowl3v3l(~Lowl3v3l@dslb-002-207-103-026.002.207.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2021-02-26 03:30:13 +0100 <ski> @type (`withCoyoneda` traverse)
2021-02-26 03:30:14 +0100 <lambdabot> (Traversable f1, Applicative f2) => Coyoneda f1 (f2 b) -> f2 (f1 b)
2021-02-26 03:30:14 +0100 <MarcelineVQ> what does pun the two mean here?
2021-02-26 03:30:17 +0100 <ski> @type \xs -> MkYoneda (`traverse` xs)
2021-02-26 03:30:18 +0100 <lambdabot> error:
2021-02-26 03:30:18 +0100 <lambdabot> • Couldn't match type ‘b’ with ‘f b0’
2021-02-26 03:30:19 +0100 <lambdabot> ‘b’ is a rigid type variable bound by
2021-02-26 03:30:26 +0100 <ski> @type \xs -> MkYoneda (`map` xs)
2021-02-26 03:30:27 +0100 <lambdabot> [a] -> Yoneda [] a
2021-02-26 03:30:33 +0100conal(~conal@64.71.133.70) (Ping timeout: 264 seconds)
2021-02-26 03:30:59 +0100Maxdaman1usMaxdamantus
2021-02-26 03:31:24 +0100 <edwardk> consider the Maybe instance for MonadFix and then it looks better
2021-02-26 03:31:33 +0100 <koz_> Fair.
2021-02-26 03:33:45 +0100 <koz_> I wonder what you could get if you thought 'I want Arrow = Strong + Category, but replace Strong with Stroice'.
2021-02-26 03:34:01 +0100 <koz_> DecoherentArrow
2021-02-26 03:34:29 +0100seneca(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-02-26 03:36:20 +0100 <ski> `Stroice' being ?
2021-02-26 03:36:21 +0100conal_(~conal@64.71.133.70)
2021-02-26 03:37:09 +0100 <koz_> ski: Strong, but with These instead of (,) as the tensor.
2021-02-26 03:37:50 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-02-26 03:38:28 +0100 <ski> `forall a b. These a (f b) -> f (These a b?
2021-02-26 03:38:30 +0100 <ski> )'
2021-02-26 03:39:07 +0100 <koz_> ski: Strong has a method 'first' :: p a b -> p (c, a) (c, b)'
2021-02-26 03:39:22 +0100 <koz_> Stroice would have 'this' :: p a b -> p (These c a) (These c b)'.
2021-02-26 03:39:37 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds)
2021-02-26 03:39:37 +0100Lord_of_Life_Lord_of_Life
2021-02-26 03:39:43 +0100conal_(~conal@64.71.133.70) (Read error: Connection reset by peer)
2021-02-26 03:39:46 +0100 <ski> oh, strong difunctor i guess
2021-02-26 03:39:58 +0100 <ski> ok
2021-02-26 03:40:17 +0100 <koz_> ski: Profunctor.
2021-02-26 03:40:21 +0100 <koz_> Sorry if I wasn't clear there.
2021-02-26 03:40:36 +0100 <koz_> Should have mentioned 'Strong from profunctors' or something.
2021-02-26 03:41:08 +0100 <ski> yah
2021-02-26 03:41:54 +0100 <ski> (i think you may have mixed up the ordering to the tensor, there ?)
2021-02-26 03:42:01 +0100conal(~conal@64.71.133.70)
2021-02-26 03:42:14 +0100cr3_(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-02-26 03:42:41 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2021-02-26 03:42:43 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-02-26 03:42:56 +0100 <koz_> Yes: https://hackage.haskell.org/package/profunctors-5.6.2/docs/Data-Profunctor.html#t:Strong
2021-02-26 03:43:02 +0100 <koz_> I can never remember which way around it goes.
2021-02-26 03:43:23 +0100 <ski> edwardk : hm, just wondering if you maybe had an idea for my earlier question
2021-02-26 03:43:43 +0100 <ski> <ski> is there a particular name for when a monoid action acts on a monoid, or a group action acts on a group, (in a compatible way), or the like ?
2021-02-26 03:43:57 +0100 <ski> <ski> for vector spaces, this would be a case of bilinear transformation/map (where one of the two domains is the same as the codomain). can one say "bimonoidal transformation" or something like that ?
2021-02-26 03:44:17 +0100 <ski> <ski> well, it would correspond to an ordinary homomorphism (monoid or group) from a tensor product .. in case the relevant tensor product exists (i'm not sure when it does. in the group case, i think the domain groups have to be abelian. maybe it can sometimes exist even when not ?)
2021-02-26 03:45:05 +0100 <ski> koz_ : well, `first' applies to / modifies the first parameter, and `second' the second
2021-02-26 03:45:11 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
2021-02-26 03:45:18 +0100 <koz_> ski: Yeah, I guess that makes mnemonic sense.
2021-02-26 03:45:26 +0100 <ski> and, airi, `this' is the first one for `These', while `that' is the second
2021-02-26 03:45:43 +0100 <ski> @type first ord
2021-02-26 03:45:43 +0100 <koz_> Yeah, it is.
2021-02-26 03:45:44 +0100 <lambdabot> (Char, d) -> (Int, d)
2021-02-26 03:45:55 +0100conal_(~conal@64.71.133.70)
2021-02-26 03:47:38 +0100 <koz_> I guess I'm wondering if the statement 'Arrow = Strong + Category' means 'any Arrow method can be implemented with Strong and/or Category method(s)'.
2021-02-26 03:48:07 +0100 <edwardk> ski: sorry, distracted irl
2021-02-26 03:48:12 +0100 <ski> no worry
2021-02-26 03:49:02 +0100alx741(~alx741@181.196.69.27) (Quit: alx741)
2021-02-26 03:49:05 +0100 <edwardk> monoids acting on monoids come up when dealing with semidirect products, because you need a monoid that acts on a monoid "in a compatible way"
2021-02-26 03:49:57 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2021-02-26 03:51:40 +0100 <ski> someone mentioned a paper <https://repository.upenn.edu/cgi/viewcontent.cgi?article=1773&context=cis_papers> about monoids, specifically mentioned "monoid-on-monoid action" (page ten), and i was wondering whether it was mapping monoid elements to monoid homomorphisms
2021-02-26 03:52:21 +0100ddellacosta(~ddellacos@86.106.143.100)
2021-02-26 03:52:48 +0100 <ski> hm, yea i think i vaguely remember you mentioning something like that in a recorded presentation you made, where you talked about monoidal parsing
2021-02-26 03:52:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-26 03:53:46 +0100 <koz_> ski: That was me.
2021-02-26 03:53:53 +0100 <ski> ah, ok
2021-02-26 03:53:54 +0100 <koz_> (the monoid-on-monoid action thing)
2021-02-26 03:54:00 +0100 <koz_> (because I have a very mature imagination)
2021-02-26 03:54:09 +0100skialready forgot who mentioned what :)
2021-02-26 03:55:53 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-26 03:57:36 +0100toorevitimirp(~tooreviti@117.182.182.60)
2021-02-26 03:57:49 +0100ddellacosta(~ddellacos@86.106.143.100) (Ping timeout: 276 seconds)
2021-02-26 03:59:05 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 04:07:29 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-02-26 04:07:35 +0100viluon(uid453725@gateway/web/irccloud.com/x-amxewsahyzvflymf) (Quit: Connection closed for inactivity)
2021-02-26 04:10:07 +0100gzj(~gzj@unaffiliated/gzj) (Read error: Connection reset by peer)
2021-02-26 04:10:26 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 04:11:07 +0100gzj(~gzj@unaffiliated/gzj) (Read error: Connection reset by peer)
2021-02-26 04:11:29 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 04:12:08 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 04:12:30 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 04:14:36 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-02-26 04:17:12 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-02-26 04:18:38 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2021-02-26 04:19:58 +0100FinnElija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-02-26 04:19:58 +0100finn_elijaGuest45799
2021-02-26 04:19:58 +0100FinnElijafinn_elija
2021-02-26 04:21:08 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 04:21:11 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-xtlevgyyzcpkswkn) (Quit: Connection closed for inactivity)
2021-02-26 04:21:28 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 04:21:29 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 272 seconds)
2021-02-26 04:23:28 +0100Guest45799(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
2021-02-26 04:24:52 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-26 04:25:21 +0100 <edwardk> ski: re monoid on monoid action i give laws for that in coda
2021-02-26 04:25:56 +0100 <edwardk> ah i remember now
2021-02-26 04:26:04 +0100 <edwardk> you're looking for a 'unital distributive monoid action'
2021-02-26 04:26:36 +0100 <edwardk> distributive monoid action doesn't imply the taking of units to units per se
2021-02-26 04:27:50 +0100 <ski> hm, okay
2021-02-26 04:27:56 +0100 <ski> a bit of a mouthful :/
2021-02-26 04:28:11 +0100 <edwardk> it is the only way you'll find the original literaturte
2021-02-26 04:28:13 +0100 <edwardk> er literature
2021-02-26 04:28:19 +0100 <ski> ok
2021-02-26 04:28:29 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 04:30:33 +0100 <edwardk> in 'coda' i wind up using a class 'Relative' rather than 'MonoidAction' because i can use backpack to make it a 1 parameter typeclass
2021-02-26 04:30:44 +0100 <edwardk> then i wind up with RelativeSemigroup and RelativeMonoid
2021-02-26 04:30:50 +0100 <edwardk> but its made up vocabulary
2021-02-26 04:31:00 +0100tv(~tv@unaffiliated/tv) (Ping timeout: 246 seconds)
2021-02-26 04:31:06 +0100 <edwardk> i should split this out into a hackage package
2021-02-26 04:31:28 +0100 <edwardk> and provide relative:group-relative and relative:monoid-relative libraries users can extend
2021-02-26 04:31:36 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2021-02-26 04:31:47 +0100 <edwardk> which can then offer the catenable lists, sets, maps, etc.
2021-02-26 04:31:59 +0100 <edwardk> with the optimizations i support to make O(1) relocatable maps and the like
2021-02-26 04:32:12 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-02-26 04:32:16 +0100 <ski> hm, right. i was wondering whether it was a good idea to have a class `MonoidAction' .. that is, how common would it be to want to talk about multiple parallel actions ?
2021-02-26 04:32:33 +0100 <edwardk> Relative works better than MonoidAction for two reasons
2021-02-26 04:32:40 +0100 <edwardk> one is single parameter typeclasses
2021-02-26 04:32:53 +0100 <edwardk> the other is i can unpack the monoid in data types parameterized on it
2021-02-26 04:33:04 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds)
2021-02-26 04:33:16 +0100tv(~tv@unaffiliated/tv)
2021-02-26 04:33:24 +0100 <edwardk> e.g. data List a = Nil | Cons {-# UNPACK #-} !Delta a (List a)
2021-02-26 04:33:34 +0100 <edwardk> or into the maps or fingertrees
2021-02-26 04:34:08 +0100 <ski> not seeing how the OPTC is related to unpacking
2021-02-26 04:34:24 +0100 <edwardk> the backpack solution is parameterized on the monoid.
2021-02-26 04:34:27 +0100 <edwardk> Delta is that monoid
2021-02-26 04:34:40 +0100 <edwardk> so its concrete for any instantiation of the package
2021-02-26 04:34:45 +0100 <edwardk> meaning unpack can fire on it
2021-02-26 04:35:12 +0100 <edwardk> if it was data List m a = Nil | Cons !m a (List a) -- for some Monoid m that acts on a that wouldn't work
2021-02-26 04:35:26 +0100 <edwardk> the m would still be, say a pointer to a box holding an Int#
2021-02-26 04:35:27 +0100Rob7(49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net)
2021-02-26 04:35:39 +0100 <ski> ah, ok
2021-02-26 04:35:43 +0100 <edwardk> and inference would suck on top of that
2021-02-26 04:35:53 +0100mstksg(~mstksg@unaffiliated/mstksg) (Quit: WeeChat 2.7)
2021-02-26 04:36:13 +0100jle`(~mstksg@cpe-23-240-75-236.socal.res.rr.com)
2021-02-26 04:36:13 +0100jle`(~mstksg@cpe-23-240-75-236.socal.res.rr.com) (Changing host)
2021-02-26 04:36:13 +0100jle`(~mstksg@unaffiliated/mstksg)
2021-02-26 04:37:03 +0100 <edwardk> this lets me cleanly deal with multiple actions because each class is a separate class, each function is a separate function, each type of catenable list that supports group or monoid actions in O(1) is a separate type that gets to monomorphize away the representation of the monoid
2021-02-26 04:37:34 +0100 <edwardk> now when you go to replicate this for the `mtl` life starts to suck
2021-02-26 04:37:42 +0100 <edwardk> but for basic stuff? easy
2021-02-26 04:38:04 +0100 <ski> aren't the classes effectively specialized partially applied versions of the MPTC ?
2021-02-26 04:38:14 +0100 <edwardk> the problem with the MTL is there's a common idiom of StateT (MyState s) (ST s) ...
2021-02-26 04:38:38 +0100 <edwardk> so you need to parameterize the modules over monads with parameters, not just monads you need the ability to smuggle that 's' down
2021-02-26 04:38:46 +0100 <edwardk> and into all the states even if you may not need it
2021-02-26 04:39:02 +0100 <edwardk> but then when we look at the MPTC classes we get another issue
2021-02-26 04:39:17 +0100 <ski> hmm
2021-02-26 04:39:40 +0100 <edwardk> which is that you wind up needing to make modules for each 'instance' you'd write. but then can't even benefit from default signatures on anything.
2021-02-26 04:39:46 +0100 <edwardk> so its just a worse typeclass mechanism
2021-02-26 04:39:50 +0100 <ski> would (uniformly) parameterizing modules over tyvars help, there ?
2021-02-26 04:39:56 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
2021-02-26 04:39:56 +0100 <edwardk> and the user is writing a mixin line in their cabal file for every instantiation
2021-02-26 04:39:58 +0100 <ski> (if that was a thing, i mean)
2021-02-26 04:40:11 +0100 <edwardk> yes
2021-02-26 04:40:30 +0100 <edwardk> also we could reduce pressure by parameterizing on runtime reps or something
2021-02-26 04:40:34 +0100 <edwardk> instead of concrete types
2021-02-26 04:40:35 +0100 <edwardk> perhaps
2021-02-26 04:41:13 +0100 <edwardk> I don't care if you are State Word# a or State Char# a as they are both the same runtime kind (TYPE 'WordRep)
2021-02-26 04:41:29 +0100desophos(~desophos@2601:249:1680:a570:1ceb:ae8f:9938:9938)
2021-02-26 04:41:31 +0100 <ski> mhm, i see
2021-02-26 04:41:46 +0100 <ski> (not following the bit with default signatures)
2021-02-26 04:42:45 +0100 <edwardk> consider making a library which has a signature that you depend on some data M s a such that there is Monad (M s), etc. and the module the lib supplies offers get, put, modify
2021-02-26 04:43:11 +0100 <edwardk> you can't fill in the 'default' for get/put in terms of modify in anything for the result library
2021-02-26 04:43:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 04:43:52 +0100 <edwardk> so anyone who goes to write an equivalent of what was instance MonadState s m => MonadState s (ReaderT e m) -- has to write all 3 defs out longhand
2021-02-26 04:44:30 +0100 <edwardk> and you also need to explicitly mixin all these little baby backpack modules to make your fully unboxed mtl go
2021-02-26 04:44:36 +0100Rob7(49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) (Quit: Connection closed)
2021-02-26 04:44:38 +0100Lowl3v3l(~Lowl3v3l@dslb-002-207-103-026.002.207.pools.vodafone-ip.de)
2021-02-26 04:44:51 +0100 <ski> hm .. so this is a current issue/limitation with backpack ?
2021-02-26 04:46:06 +0100 <ski> well, it's cool that people are starting to play around with backpack, finding out where pain points are, and where there might be room for improvement. and seeing how it interacts with tyoe classes, what the trade-offs are
2021-02-26 04:46:09 +0100 <edwardk> i mean, sure. backpack doesn't 'mixin' the signature code with the module you supply it in any way. it isn't clear how it would. its just an hs-boot parser
2021-02-26 04:46:54 +0100 <edwardk> i pointed out a while back that in theory one could have a backpack like feature in a language that let you merge signatures into larger signatures, specify defaults/partial definitions, etc. doesn't feel like haskell but there's a language there
2021-02-26 04:47:15 +0100 <edwardk> has some cute benefits it can offer to the expression problem and the like if you can supply individual cases in the definitions even
2021-02-26 04:47:56 +0100 <ski> coming from different modules that you mix, you mean ?
2021-02-26 04:48:41 +0100 <edwardk> e.g. in "Shangri-La-skel" pretend you can make a signature for a module that looks like data Expr a; eval :: Expr a -> a
2021-02-26 04:48:52 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2021-02-26 04:49:15 +0100 <edwardk> then one could envision defining a module that said data Expr a where Lit :: Int -> Expr Int; Plus :: Int -> Int -> Expr Int; obvious eval.
2021-02-26 04:49:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-02-26 04:49:23 +0100 <edwardk> and another that offers Lam/Abs and the obvious eval
2021-02-26 04:49:59 +0100theDon_(~td@muedsl-82-207-238-098.citykom.de) (Ping timeout: 265 seconds)
2021-02-26 04:50:00 +0100 <edwardk> and a desire to merge the two definitions into a composite module with all the data constructors and all the top level cases for eval merged.
2021-02-26 04:50:04 +0100 <ski> being able to combine two modules which each depend on a parameter module with a signature matching the other one could be useful sometimes. so one module can use some operations given by the other, and vice versa. so a mutually recursive instantiation, if you think of it as two module functors
2021-02-26 04:50:51 +0100 <ski> hm, yea. that's what i was thinking you had in mind more or less
2021-02-26 04:50:53 +0100theDon(~td@94.134.91.130)
2021-02-26 04:51:01 +0100 <edwardk> (you'd need something like jesper cockx's definitional equality for all: https://link.springer.com/chapter/10.1007%2F978-3-642-54833-8_6
2021-02-26 04:51:02 +0100 <ski> binary operations is a problem, i guess
2021-02-26 04:51:22 +0100 <edwardk> its not a haskell-like language feature
2021-02-26 04:51:30 +0100 <edwardk> but in another language you can come up with ways to play with it
2021-02-26 04:52:13 +0100 <edwardk> to do binary you wind up needing module signatures for how the two types interoperate and then to inherit from that multiple times, messy, but doable
2021-02-26 04:52:35 +0100 <edwardk> e.g. a package parameterized on two others
2021-02-26 04:53:10 +0100 <edwardk> its a thing i played with for coda because it offers up interesting code reuse patterns we don't currently have
2021-02-26 04:53:17 +0100 <edwardk> but its also its own brand of crazy
2021-02-26 04:53:39 +0100 <ski> and then one can wonder what if one fragment would like one kind of effect in `eval', and another would like another fragment, how to combine
2021-02-26 04:53:49 +0100 <edwardk> anyways, the status quo is to define a fully backpacked mtl i'd have to suffer some serious pain.
2021-02-26 04:54:31 +0100 <edwardk> ski: thats handlable. you push the effect into another module signature. define combinators for interacting with it. then merge the signatures for what has to be fed you.
2021-02-26 04:55:20 +0100 <ski> hm, i think i see
2021-02-26 04:55:44 +0100 <edwardk> the pain point i have here is that my usual dodge for work effects now is to stop thinking in mtl terms and start using implicit parameters, but with all the representation polymorphic stuff i'm doing, i can't push unlifted or linear things onto the left of the =>
2021-02-26 04:55:56 +0100 <edwardk> er for working with
2021-02-26 04:56:15 +0100 <edwardk> i think we talked about this trick before
2021-02-26 04:56:27 +0100 <ski> `(?foo :: Lev T) => ..' ?
2021-02-26 04:56:50 +0100rkrishnan(~rkrishnan@rkrishnan.org)
2021-02-26 04:56:51 +0100 <edwardk> lev makes that by name, which is super dangerous from a recomputation perspective
2021-02-26 04:57:59 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
2021-02-26 04:58:58 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-cdhhieietudbtkyo)
2021-02-26 05:00:01 +0100alexelcu(~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-26 05:00:02 +0100haasn(~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-02-26 05:00:52 +0100alexelcu(~alexelcu@142.93.180.198)
2021-02-26 05:00:52 +0100 <ski> hm. so need thunked version of `() => T' ?
2021-02-26 05:01:22 +0100 <ski> although, how would the caching work ?
2021-02-26 05:02:58 +0100 <edwardk> basically i'm just observing that with current haskell i can't quite maintain the unboxing tricks i have and the effect system tricks i've been using at the same time
2021-02-26 05:03:20 +0100 <edwardk> in my perfect world i'd use reflection to pass my argument as a CONSTRAINT 'IntRep or something
2021-02-26 05:06:00 +0100 <ski> mm
2021-02-26 05:06:23 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-02-26 05:07:02 +0100Rob30(49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net)
2021-02-26 05:10:37 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 276 seconds)
2021-02-26 05:10:55 +0100Tordek(tordek@gateway/shell/blinkenshell.org/x-igtnswqonmwtslsx) ()
2021-02-26 05:14:19 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-26 05:17:02 +0100Rob30(49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) (Quit: Connection closed)
2021-02-26 05:19:13 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 272 seconds)
2021-02-26 05:19:15 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 05:19:20 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.0.1)
2021-02-26 05:19:30 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-02-26 05:20:06 +0100haasn(~nand@mpv/developer/haasn)
2021-02-26 05:22:10 +0100forgottenone(~forgotten@176.88.28.250)
2021-02-26 05:23:44 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 240 seconds)
2021-02-26 05:31:00 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-02-26 05:31:46 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:750e:d23:b28:17e4) (Ping timeout: 258 seconds)
2021-02-26 05:32:32 +0100tomku|two(~tomku@unaffiliated/tomku) (Ping timeout: 272 seconds)
2021-02-26 05:37:31 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:9922:cfc5:8f27:49f4)
2021-02-26 05:38:49 +0100tomku(~tomku@unaffiliated/tomku)
2021-02-26 05:41:18 +0100psutcliffe(~psutcliff@2a00:801:44b:5fb3:b852:cfd3:ade7:f24f)
2021-02-26 05:41:57 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 05:42:22 +0100Tops2(~Tobias@dyndsl-095-033-019-043.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-02-26 05:44:36 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-26 05:45:03 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds)
2021-02-26 05:45:29 +0100Tario(~Tario@201.192.165.173)
2021-02-26 05:46:59 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
2021-02-26 05:51:27 +0100conal_(~conal@64.71.133.70) (Read error: Connection reset by peer)
2021-02-26 05:52:08 +0100da39a3ee5e6b4b0d(~da39a3ee5@184.22.157.95) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 05:52:39 +0100gienah_(~mwright@119-18-2-241.771202.syd.nbn.aussiebb.net) (Quit: leaving)
2021-02-26 05:57:46 +0100conal(~conal@64.71.133.70)
2021-02-26 06:01:38 +0100blissfulboomsayer
2021-02-26 06:01:47 +0100boomsayerblissful
2021-02-26 06:03:07 +0100 <zzz> hey. why are circular imports not allowed?
2021-02-26 06:03:44 +0100 <glguy> They are allowed, but you have to help GHC along with a boot file
2021-02-26 06:04:22 +0100 <zzz> oh ok! where can i learn more about it?
2021-02-26 06:05:25 +0100 <glguy> generally if you need them it means your program structure isn't great, https://downloads.haskell.org/ghc/latest/docs/html/users_guide/separate_compilation.html#how-to-co…
2021-02-26 06:06:19 +0100drbean_(~drbean@TC210-63-209-156.static.apol.com.tw)
2021-02-26 06:08:21 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 264 seconds)
2021-02-26 06:10:59 +0100zerokz0k
2021-02-26 06:15:34 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-02-26 06:16:33 +0100 <zzz> yeah i'm feeling it's not great. I'm having trouble with types. is having a module with basically just all my custom types a healthy thing to do?
2021-02-26 06:17:36 +0100 <zzz> something like import Project.Types on all modules?
2021-02-26 06:18:01 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2021-02-26 06:20:02 +0100 <EvanR> that works, and simplifies types that form a loop
2021-02-26 06:20:41 +0100 <EvanR> ah that's what you were talking about
2021-02-26 06:21:38 +0100 <zzz> it kind of weirds me out but ill try
2021-02-26 06:23:13 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-26 06:24:45 +0100_d0t(void@gateway/vpn/mullvad/d0t/x-89419360)
2021-02-26 06:26:23 +0100 <hyiltiz-M> @monochrome What’s an MSc cert.? Is it gonna have a stamp on it ;P
2021-02-26 06:26:23 +0100 <lambdabot> Unknown command, try @list
2021-02-26 06:27:09 +0100 <hyiltiz-M> monochrome: What’s an MSc cert.? Is it gonna have a stamp on it with fancy old English font? ;P
2021-02-26 06:28:13 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-26 06:28:17 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Client Quit)
2021-02-26 06:28:37 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 276 seconds)
2021-02-26 06:29:00 +0100 <pjb> MicroSoft Consultant Certification.
2021-02-26 06:29:53 +0100 <hyiltiz-M> Do I get extra credit for making data Pair a=MkPair a a into a Hilbert space too?
2021-02-26 06:30:35 +0100 <hyiltiz-M> Is MSc a joke or a cert that is recognized by anyone else?
2021-02-26 06:31:08 +0100 <hyiltiz-M> I thought it was a joke when monochrome put out the challenge
2021-02-26 06:32:08 +0100 <Feuermagier> don't all big tech-companies think they have authority to hand out certs nowdays?
2021-02-26 06:33:06 +0100 <MarcelineVQ> msc https://en.wikipedia.org/wiki/Master_of_Science
2021-02-26 06:33:31 +0100 <hyiltiz-M> Yeah I was thinking MSc meant MS degree too and hence a joke
2021-02-26 06:35:37 +0100 <hyiltiz__> Anyway, I am intrigued and I'll bite next time I need a reason to procrastinate (and claim that MSc since monoschrome is not known to make false promises :D) And while I am on it, I'll make it an Hilbert space 'cuz why not.
2021-02-26 06:36:53 +0100 <MarcelineVQ> he promised me a rose garden once
2021-02-26 06:44:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 06:47:46 +0100Wuzzy(~Wuzzy@p5b0df8ea.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-02-26 06:48:04 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 06:48:15 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-26 06:52:57 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-26 06:53:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-02-26 06:53:21 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Ping timeout: 264 seconds)
2021-02-26 06:53:44 +0100da39a3ee5e6b4b0d(~da39a3ee5@190-2-138-17.hosted-by-worldstream.net)
2021-02-26 06:55:33 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-02-26 06:55:57 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 06:56:22 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-02-26 06:56:25 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-26 06:57:34 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-02-26 06:57:37 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-02-26 06:58:31 +0100da39a3ee5e6b4b0d(~da39a3ee5@190-2-138-17.hosted-by-worldstream.net) (Ping timeout: 276 seconds)
2021-02-26 07:00:58 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds)
2021-02-26 07:01:26 +0100aqd(~aqd@84.20.147.33)
2021-02-26 07:02:45 +0100dave_uy3(~david@108.61.193.26) (Quit: The Lounge - https://thelounge.chat)
2021-02-26 07:03:46 +0100forgottenone(~forgotten@176.88.28.250) (Quit: Konversation terminated!)
2021-02-26 07:05:03 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-02-26 07:05:29 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-26 07:05:40 +0100dave_uy3(~david@108.61.193.26)
2021-02-26 07:09:12 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:f4d9:46b5:acd5:46aa) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 07:13:07 +0100proteusguy(~proteusgu@cm-58-10-208-13.revip7.asianet.co.th)
2021-02-26 07:13:36 +0100mp___(mp@hell.cx) (Ping timeout: 240 seconds)
2021-02-26 07:13:49 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-02-26 07:15:03 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-02-26 07:15:26 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-26 07:17:24 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 265 seconds)
2021-02-26 07:18:36 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-cdhhieietudbtkyo) (Quit: Connection closed for inactivity)
2021-02-26 07:19:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-02-26 07:20:33 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-02-26 07:23:18 +0100xff0x_(~xff0x@2001:1a81:52d0:d300:24a8:fbee:5e92:3e0) (Quit: xff0x_)
2021-02-26 07:23:26 +0100xff0x(~xff0x@2001:1a81:52d0:d300:24a8:fbee:5e92:3e0)
2021-02-26 07:24:21 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
2021-02-26 07:28:26 +0100geyaeb_(~geyaeb@gateway/tor-sasl/geyaeb)
2021-02-26 07:29:05 +0100geyaeb(~geyaeb@gateway/tor-sasl/geyaeb) (Ping timeout: 268 seconds)
2021-02-26 07:29:36 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-02-26 07:32:52 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2021-02-26 07:33:23 +0100 <hyiltiz__> oh that sounds like the beginning of a sad love story... Does it have a bottom?
2021-02-26 07:34:39 +0100 <MarcelineVQ> a cobottom
2021-02-26 07:35:07 +0100howdoi(uid224@gateway/web/irccloud.com/x-csqlidmiacqyvucp) (Quit: Connection closed for inactivity)
2021-02-26 07:37:10 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-02-26 07:43:38 +0100echoreply(~echoreply@unaffiliated/echoreply) (Quit: WeeChat 1.9.1)
2021-02-26 07:44:07 +0100echoreply(~echoreply@unaffiliated/echoreply)
2021-02-26 07:45:13 +0100hyiltiz__(~quassel@31.220.5.250) (Quit: hyiltiz__)
2021-02-26 07:45:27 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-02-26 07:48:41 +0100Varis(~Tadas@unaffiliated/varis)
2021-02-26 07:49:57 +0100 <koz_> MarcelineVQ: So, a top?
2021-02-26 07:53:54 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-02-26 07:55:18 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-umknbygenttiqgds)
2021-02-26 07:55:38 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 07:56:31 +0100werneta_(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2021-02-26 07:56:41 +0100 <Feuermagier> how do i convert a normal boolean into an IO-Bool?
2021-02-26 07:58:44 +0100 <Feuermagier> nvmnd, just a missing bracket
2021-02-26 07:59:56 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 240 seconds)
2021-02-26 08:00:35 +0100redmp(~redmp@172.58.38.168)
2021-02-26 08:00:53 +0100 <redmp> where does the "PostNoContent" in here come from? https://github.com/haskell-servant/servant/blob/master/servant/src/Servant/Test/ComprehensiveAPI.hs
2021-02-26 08:01:24 +0100 <redmp> when I ask for the :kind! of "PostNoContent" in ghci I get ... PostNoContent :: [*] -> * -> *
2021-02-26 08:01:33 +0100gioyik_(~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.0)
2021-02-26 08:01:37 +0100 <redmp> but in the above it seems to be used without type-arguments
2021-02-26 08:01:55 +0100 <redmp> as it seems was decided in https://github.com/haskell-servant/servant/issues/828
2021-02-26 08:02:26 +0100 <redmp> ah, nevermind.. i'm on and old version.. rubber duck etc, thank you
2021-02-26 08:05:44 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-02-26 08:06:04 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 08:10:24 +0100Rudd0(~Rudd0@185.189.115.108) (Read error: Connection reset by peer)
2021-02-26 08:10:45 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
2021-02-26 08:11:10 +0100Cthalupa-(~cthulhu@47.186.47.75) (Read error: Connection reset by peer)
2021-02-26 08:11:28 +0100Cthalupa(~cthulhu@47.186.47.75)
2021-02-26 08:11:45 +0100mp___(mp@hell.cx)
2021-02-26 08:12:44 +0100spoonm(~spoonm@2602:ffd5:1:119::1) (Ping timeout: 240 seconds)
2021-02-26 08:16:52 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-02-26 08:19:57 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
2021-02-26 08:21:07 +0100quinn(~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Quit: ZNC 1.8.1 - https://znc.in)
2021-02-26 08:21:19 +0100 <zfnmxt> I have a type like `Compose :: Func b c -> Func a b -> Fun a c`. Then, any function which takes a Func a c with some constraints: foo :: (C a, C c) => Fun a c -> ... can't determine if C holds for b. Is there a nice way to deal with this issue aside from doing something like `Comp :: (C1 b, C2 b, ...) => f b c -> f a b -> f a c` (which is super gross and might not even work)?
2021-02-26 08:21:56 +0100o1lo01ol1o(~o1lo01ol1@188.140.102.232)
2021-02-26 08:23:21 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
2021-02-26 08:26:31 +0100o1lo01ol1o(~o1lo01ol1@188.140.102.232) (Ping timeout: 265 seconds)
2021-02-26 08:26:52 +0100quinn(~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
2021-02-26 08:29:03 +0100 <c_wraith> the problem is that you've made the type b existential, so GHC can't auto-populate the instance
2021-02-26 08:29:57 +0100 <c_wraith> None of the methods of dealing with that are very pleasant
2021-02-26 08:30:11 +0100 <zfnmxt> c_wraith: So is the best fix doing the somewhat artifical thing of changing `Func a b` to `Func a b c`?
2021-02-26 08:30:49 +0100 <c_wraith> or replacing the class with a function (or record of them) such that the type isn't being used to determine anything
2021-02-26 08:30:59 +0100redmp(~redmp@172.58.38.168) (Quit: leaving)
2021-02-26 08:31:57 +0100 <zfnmxt> Seems less than ideal, since then I can take advantage of libraries which define classes. (This issue just came up trying to make Func an instance of Pretty).
2021-02-26 08:32:35 +0100forgottenone(~forgotten@176.42.27.254)
2021-02-26 08:32:51 +0100 <zfnmxt> s/can/can't
2021-02-26 08:33:00 +0100 <c_wraith> Well, there are tools like the constraints package for moving classes to values
2021-02-26 08:33:23 +0100 <zfnmxt> I keep seeing that pop-up but haven't looked into it. Maybe now's the time!
2021-02-26 08:33:37 +0100 <c_wraith> but in the end the solution has to be some form of "reify the class" or "don't throw away the type information"
2021-02-26 08:34:11 +0100 <zfnmxt> But I think something like `type Func a b = Func' a b ()` and then having `data Func' a b c where...` isn't so ugly.
2021-02-26 08:34:21 +0100 <c_wraith> if it stops at 2....
2021-02-26 08:34:47 +0100 <zfnmxt> 2 being the number of arguments to data constructors which are Funcs?
2021-02-26 08:34:56 +0100 <c_wraith> 2 functions being composed
2021-02-26 08:35:19 +0100 <zfnmxt> Oh. Yikes.
2021-02-26 08:38:22 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 256 seconds)
2021-02-26 08:39:29 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh)
2021-02-26 08:41:13 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-26 08:46:24 +0100ddere(uid110888@gateway/web/irccloud.com/x-mbygtejiccludvmt) (Quit: Connection closed for inactivity)
2021-02-26 08:49:17 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 08:51:21 +0100polyrain(~polyrain@2001:8003:e4d8:4101:11d5:eb2a:5a3d:13dc)
2021-02-26 08:53:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-02-26 08:55:33 +0100 <desophos> i have a list of records that i want to generate length-n combinations of (game theory player matchups). i profiled my program and my function that generates these combinations was by far my largest bottleneck. i ended up memoizing a list of indexes for Data.Vector.! to massively improve the performance and now i have two questions: 1. is `V.fromList . sort . nub` faster than `V.fromList . S.toAscList . S.fromList`? i don't
2021-02-26 08:55:33 +0100 <desophos> know the complexity of `sort`. 2. is there a more sensible way to go about this? my approach feels inelegant!
2021-02-26 08:55:34 +0100 <desophos> https://paste.tomsmeding.com/RtEveHds
2021-02-26 08:56:24 +0100 <koz_> desophos: sort is n log(n).
2021-02-26 08:56:31 +0100 <koz_> (because in general you can't do better)
2021-02-26 08:56:41 +0100 <koz_> nub is horrendous and best not used - it's quadratic.
2021-02-26 08:57:11 +0100 <desophos> alright thanks, yeah i figured the Set conversion would be better because nub is O(n^2)
2021-02-26 08:57:18 +0100 <koz_> Do you need to generate _every_ length-n combination?
2021-02-26 08:58:04 +0100 <desophos> well... ideally, yes
2021-02-26 08:58:25 +0100 <desophos> i'd like to match each element against each other element
2021-02-26 08:58:35 +0100 <koz_> So is your 'n' fixed?
2021-02-26 08:58:38 +0100 <desophos> excluding duplicates and self-matches
2021-02-26 08:58:40 +0100ephemera_(~E@122.34.1.187) (Quit: ephemera_)
2021-02-26 08:59:03 +0100 <desophos> `n` and `k` should be fixed during program execution
2021-02-26 08:59:32 +0100 <koz_> OK, so if you're excluding dupes, you can already do one thing and have your input be a HashSet, or a Set, as opposed to a list.
2021-02-26 08:59:33 +0100 <desophos> hence the memoization
2021-02-26 08:59:35 +0100 <koz_> That means no dupes.
2021-02-26 09:00:03 +0100 <koz_> In terms of combination generation, I'm trying to find a publically available reference for one of the loopfree generator algorithms.
2021-02-26 09:00:08 +0100 <koz_> Since they're basically the best you can do.
2021-02-26 09:00:43 +0100ephemera_(~E@122.34.1.187)
2021-02-26 09:01:49 +0100__minoru__shirae(~shiraeesh@109.166.56.143)
2021-02-26 09:02:27 +0100 <koz_> https://dl.acm.org/doi/pdf/10.1145/321765.321781?casa_token=mqEhkgUN4eIAAAAA:j0ZM3Vmwt5eBKlJJx20e1…
2021-02-26 09:02:31 +0100 <koz_> Algorithm 7 is what you seek.
2021-02-26 09:02:33 +0100 <desophos> taking a Set would be a good idea but that would require the caller to import Data.Set and perform the conversion anyway, right?
2021-02-26 09:02:39 +0100 <koz_> And?
2021-02-26 09:02:48 +0100 <koz_> You might as well burn out the dupes immediately.
2021-02-26 09:02:51 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-02-26 09:02:52 +0100 <koz_> Or demand your user do it.
2021-02-26 09:02:57 +0100Varis(~Tadas@unaffiliated/varis)
2021-02-26 09:03:33 +0100 <desophos> right, there shouldn't actually be any dupes in the first place -- that would be a logic error
2021-02-26 09:03:44 +0100 <koz_> Then you lose nothing by asking for a Set.
2021-02-26 09:03:58 +0100 <koz_> And in fact you gain a lot, because now you have some guarantees no dork will feed you inappropriate input _ever_.
2021-02-26 09:04:06 +0100 <desophos> that's true
2021-02-26 09:04:24 +0100 <koz_> But yeah, read the link I gave you; algorithms 7 and 8 are _the_ best way to do what you want.
2021-02-26 09:04:32 +0100 <koz_> Since they're loopless.
2021-02-26 09:04:50 +0100 <desophos> hmm, it looks like this article is purchase-required?
2021-02-26 09:04:57 +0100 <koz_> My link worked?
2021-02-26 09:05:06 +0100 <koz_> I can access it fine.
2021-02-26 09:05:15 +0100 <koz_> (and I know I don't have ACM credentials)
2021-02-26 09:05:27 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:2f12:f782:a87b:e2ae)
2021-02-26 09:05:42 +0100 <koz_> Can you not access it?
2021-02-26 09:05:54 +0100 <desophos> no, only the abstract and references
2021-02-26 09:05:58 +0100 <koz_> Huh, weird.
2021-02-26 09:06:01 +0100 <koz_> One moment.
2021-02-26 09:06:11 +0100polyrain(~polyrain@2001:8003:e4d8:4101:11d5:eb2a:5a3d:13dc) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 09:06:18 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-02-26 09:07:09 +0100 <desophos> the great thing about memoization here is that the speed of the combination algorithm doesn't actually matter that much, since it'll only happen once per program execution
2021-02-26 09:07:10 +0100 <koz_> https://transfer.sh/urUNU/enjoy-reading.pdf
2021-02-26 09:07:15 +0100 <desophos> thank you!
2021-02-26 09:07:23 +0100 <koz_> I would say 'don't even worry about memoization at this stage'.
2021-02-26 09:07:30 +0100 <koz_> Use a proper loopfree combination generator.
2021-02-26 09:07:34 +0100 <koz_> You probably won't even need it.
2021-02-26 09:08:02 +0100 <desophos> wow alright, i'll see if i can implement it
2021-02-26 09:08:05 +0100 <koz_> To do this efficiently you might wanna make use of the vector library, because you'll need some arrays.
2021-02-26 09:08:10 +0100 <koz_> Again, algorithm 7 and 8 are what you want.
2021-02-26 09:08:21 +0100 <koz_> You can skip the others, although they're good background knowledge in any case.
2021-02-26 09:08:34 +0100__minoru__shirae(~shiraeesh@109.166.56.143) (Ping timeout: 265 seconds)
2021-02-26 09:08:35 +0100 <koz_> (Johnson-Steinhaus-Trotter is still what I reach for whenever I need permutation enumeration for example)
2021-02-26 09:09:28 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 09:09:53 +0100vilpan(~0@212.117.1.172)
2021-02-26 09:10:00 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 09:15:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 09:16:01 +0100xff0x(~xff0x@2001:1a81:52d0:d300:24a8:fbee:5e92:3e0) (Ping timeout: 258 seconds)
2021-02-26 09:16:40 +0100xff0x(~xff0x@port-92-195-110-249.dynamic.as20676.net)
2021-02-26 09:16:49 +0100__minoru__shirae(~shiraeesh@109.166.56.143)
2021-02-26 09:18:13 +0100ddellacosta(~ddellacos@86.106.143.201)
2021-02-26 09:19:52 +0100mawk(mawk@serveur.io)
2021-02-26 09:20:25 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2021-02-26 09:21:14 +0100 <tomsmeding> koz_: you're not by any chance on a university network? that acm link is inaccessible to me too unless I connect to my university's proxy
2021-02-26 09:21:22 +0100 <koz_> tomsmeding: Nope.
2021-02-26 09:21:29 +0100 <koz_> Unless my house is magically a university now.
2021-02-26 09:21:44 +0100 <koz_> But it's fine - it got where it needed to go.
2021-02-26 09:21:59 +0100 <tomsmeding> interesting
2021-02-26 09:22:01 +0100sphalerite_sphalerite
2021-02-26 09:22:23 +0100 <koz_> Meanwhile, here I am trying to find an ELI5 of l0 regularization.
2021-02-26 09:22:49 +0100ddellacosta(~ddellacos@86.106.143.201) (Ping timeout: 276 seconds)
2021-02-26 09:23:26 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-26 09:26:39 +0100 <koz_> Oh lol, number of nonzero elements.
2021-02-26 09:27:07 +0100mawk(mawk@serveur.io) (Ping timeout: 256 seconds)
2021-02-26 09:28:34 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-02-26 09:31:04 +0100toorevitimirp(~tooreviti@117.182.182.60) (Remote host closed the connection)
2021-02-26 09:31:35 +0100toorevitimirp(~tooreviti@117.182.182.60)
2021-02-26 09:36:40 +0100fendor(~fendor@178.115.128.24.wireless.dyn.drei.com)
2021-02-26 09:38:03 +0100mawk(mawk@serveur.io)
2021-02-26 09:39:17 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2021-02-26 09:43:04 +0100o1lo01ol1o(~o1lo01ol1@188.140.102.232)
2021-02-26 09:44:21 +0100__minoru__shirae(~shiraeesh@109.166.56.143) (Ping timeout: 264 seconds)
2021-02-26 09:45:23 +0100fendor(~fendor@178.115.128.24.wireless.dyn.drei.com) (Remote host closed the connection)
2021-02-26 09:48:17 +0100drbean_(~drbean@TC210-63-209-156.static.apol.com.tw) (Ping timeout: 272 seconds)
2021-02-26 09:50:22 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 09:50:53 +0100shad0w_(a0ca2456@160.202.36.86)
2021-02-26 09:51:38 +0100borne(~fritjof@200116b864cbc80010f2d07664396fd4.dip.versatel-1u1.de)
2021-02-26 09:52:04 +0100terrorjack(~terrorjac@ec2-52-47-143-92.eu-west-3.compute.amazonaws.com) (Quit: The Lounge - https://thelounge.chat)
2021-02-26 09:52:17 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-02-26 09:53:01 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-26 09:53:42 +0100terrorjack(~terrorjac@ec2-52-47-143-92.eu-west-3.compute.amazonaws.com)
2021-02-26 09:54:38 +0100desophos(~desophos@2601:249:1680:a570:1ceb:ae8f:9938:9938) (Ping timeout: 264 seconds)
2021-02-26 09:54:52 +0100desophos(~desophos@c-24-14-63-128.hsd1.il.comcast.net)
2021-02-26 09:55:15 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
2021-02-26 09:55:26 +0100vchlup_(~vchlup@nat.brnet.cz) (Ping timeout: 256 seconds)
2021-02-26 09:56:37 +0100ubert(~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de)
2021-02-26 09:57:17 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a)
2021-02-26 10:00:11 +0100Sarievo[m](sarievoale@gateway/shell/matrix.org/x-pwulriigshezukrd) (Quit: Idle for 30+ days)
2021-02-26 10:02:20 +0100peutri_peutri
2021-02-26 10:04:43 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-02-26 10:06:06 +0100kuribas(~user@ptr-25vy0i6y5ai1dlzwgol.18120a2.ip6.access.telenet.be)
2021-02-26 10:06:45 +0100shad0w_(a0ca2456@160.202.36.86) (Quit: Connection closed)
2021-02-26 10:08:32 +0100CatWithMoustache(~CatWithMo@gateway/tor-sasl/catwithmoustache)
2021-02-26 10:09:05 +0100CatWithMoustache(~CatWithMo@gateway/tor-sasl/catwithmoustache) (Client Quit)
2021-02-26 10:09:08 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 10:09:28 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 10:09:48 +0100hendursa1(~weechat@gateway/tor-sasl/hendursaga)
2021-02-26 10:10:57 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-02-26 10:11:16 +0100hendursaga(~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 268 seconds)
2021-02-26 10:11:32 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-02-26 10:11:38 +0100guest222(~user@49.5.6.87) (Remote host closed the connection)
2021-02-26 10:11:44 +0100chisui(5882391e@mue-88-130-57-030.dsl.tropolys.de)
2021-02-26 10:12:59 +0100aarvar(~foewfoiew@2601:602:a080:fa0:49bc:1f9e:3510:3fc5) (Ping timeout: 272 seconds)
2021-02-26 10:18:53 +0100michalz(~user@185.246.204.61)
2021-02-26 10:19:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-26 10:21:36 +0100kam1(~kam1@5.125.126.175) (Ping timeout: 240 seconds)
2021-02-26 10:21:50 +0100pera(~pera@unaffiliated/pera)
2021-02-26 10:21:52 +0100Codaraxis(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-02-26 10:25:17 +0100pera_(~pera@unaffiliated/pera)
2021-02-26 10:27:36 +0100o1lo01ol1o(~o1lo01ol1@188.140.102.232) (Remote host closed the connection)
2021-02-26 10:28:42 +0100ddellacosta(~ddellacos@86.106.143.84)
2021-02-26 10:28:57 +0100pera_(~pera@unaffiliated/pera) (Client Quit)
2021-02-26 10:28:57 +0100pera(~pera@unaffiliated/pera) (Quit: leaving)
2021-02-26 10:29:07 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 10:29:18 +0100pera(~pera@unaffiliated/pera)
2021-02-26 10:30:10 +0100spoonm(~spoonm@tokyo.spoonm.org)
2021-02-26 10:30:15 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 265 seconds)
2021-02-26 10:30:36 +0100_noblegas(uid91066@gateway/web/irccloud.com/x-koxpwnnitfybavxb)
2021-02-26 10:32:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 10:33:38 +0100ddellacosta(~ddellacos@86.106.143.84) (Ping timeout: 265 seconds)
2021-02-26 10:34:26 +0100AWizzArd(~code@unaffiliated/awizzard) (Ping timeout: 240 seconds)
2021-02-26 10:34:33 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
2021-02-26 10:36:56 +0100runeks(sid21167@gateway/web/irccloud.com/x-knlehmbevkamnxoa) (Ping timeout: 240 seconds)
2021-02-26 10:37:17 +0100jbetz(sid283648@gateway/web/irccloud.com/x-mbznlfwgozuyecdk) (Ping timeout: 260 seconds)
2021-02-26 10:37:30 +0100topos(sid467876@gateway/web/irccloud.com/x-jjuaerngijjjrgfb) (Ping timeout: 265 seconds)
2021-02-26 10:37:35 +0100moobar(sid171730@gateway/web/irccloud.com/x-frdbmxzesbedehug) (Read error: Connection reset by peer)
2021-02-26 10:37:45 +0100runeks(sid21167@gateway/web/irccloud.com/x-rckbkalawmplrynn)
2021-02-26 10:37:45 +0100jbetz(sid283648@gateway/web/irccloud.com/x-xrbchakxhwrqcwzv)
2021-02-26 10:37:48 +0100moobar(sid171730@gateway/web/irccloud.com/x-lxdmnqustlyookkh)
2021-02-26 10:37:52 +0100topos(sid467876@gateway/web/irccloud.com/x-zlylmlnixcvrclez)
2021-02-26 10:38:36 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-umknbygenttiqgds) (Quit: Connection closed for inactivity)
2021-02-26 10:41:46 +0100zaquest_(~notzaques@5.128.210.178) (Quit: Leaving)
2021-02-26 10:42:27 +0100 <siers> is it possible to make parser from invertible functions? say, a json parser
2021-02-26 10:43:06 +0100zaquest(~notzaques@5.128.210.178)
2021-02-26 10:43:30 +0100 <koz_> siers: jle` wrote a whole article on this!
2021-02-26 10:44:03 +0100 <koz_> https://blog.jle.im/entry/enhancing-functor-structures-step-by-step-1.html
2021-02-26 10:44:50 +0100catt(~r@31.127.31.99)
2021-02-26 10:45:18 +0100 <siers> sounds cool, I'll take a look!
2021-02-26 10:49:28 +0100 <siers> can the functor-combinators do the same thing as the invertible library?
2021-02-26 10:50:23 +0100 <koz_> siers: They're separate concerns.
2021-02-26 10:50:29 +0100 <koz_> You wanna read both parts all the way through.
2021-02-26 10:50:39 +0100viluon(uid453725@gateway/web/irccloud.com/x-dqymabneifveqvzq)
2021-02-26 10:51:11 +0100 <siers> I have to work now, I can't dig into it, but that's just something I wanted to ask off the top of my head :)
2021-02-26 10:53:25 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 10:53:31 +0100hiroaki__(~hiroaki@2a02:8108:8c40:2bb8:cedc:3317:ccec:602b) (Ping timeout: 272 seconds)
2021-02-26 10:53:52 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2021-02-26 10:54:03 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-02-26 10:55:04 +0100cods_cods
2021-02-26 10:55:14 +0100cods(~fred@82-65-232-44.subs.proxad.net) (Changing host)
2021-02-26 10:55:14 +0100cods(~fred@unaffiliated/cods)
2021-02-26 10:57:13 +0100datajerk_(~datajerk@sense.net) (Ping timeout: 256 seconds)
2021-02-26 10:58:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
2021-02-26 10:59:36 +0100grumble(~Thunderbi@freenode/staff/grumble) (Quit: K-Lined)
2021-02-26 11:01:25 +0100Rudd0(~Rudd0@185.189.115.108)
2021-02-26 11:02:36 +0100datajerk(~datajerk@sense.net)
2021-02-26 11:03:11 +0100Pickchea(~private@unaffiliated/pickchea)
2021-02-26 11:03:41 +0100grumble(~Thunderbi@freenode/staff/grumble)
2021-02-26 11:04:17 +0100hiroaki__(~hiroaki@2a02:8108:8c40:2bb8:8fe4:ef1e:34cd:b814)
2021-02-26 11:04:40 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-kzbgzpokvgnzruvp) (Quit: Connection closed for inactivity)
2021-02-26 11:06:11 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-26 11:07:23 +0100 <kuribas> I wonder, if parsing is done with a monad, then would generating be done with a comonad?
2021-02-26 11:08:01 +0100__monty__(~toonn@unaffiliated/toonn)
2021-02-26 11:08:01 +0100 <kuribas> since generating is the oposite of parsing
2021-02-26 11:08:04 +0100thc202(~thc202@unaffiliated/thc202)
2021-02-26 11:08:25 +0100DavidEichmann(~david@234.109.45.217.dyn.plus.net)
2021-02-26 11:08:34 +0100 <jle`> generating would be a contravariant functor
2021-02-26 11:08:44 +0100 <jle`> which is the opposite of the covariant functor (monad)
2021-02-26 11:08:58 +0100 <jle`> i guess maybe not "the", but "a" :)
2021-02-26 11:09:43 +0100 <jle`> *an opposite
2021-02-26 11:10:37 +0100 <dminuoso> kuribas: Duality does not mean "opposite" in that sense.
2021-02-26 11:10:58 +0100 <dminuoso> Consider how Either is a categorical dual of (,)
2021-02-26 11:11:20 +0100 <dminuoso> (which is why sum types are sometimes called coproducts)
2021-02-26 11:11:48 +0100 <shachaf> But the dual of a covariant functor is also not a contravariant functor.
2021-02-26 11:13:36 +0100mp___(mp@hell.cx) (Ping timeout: 240 seconds)
2021-02-26 11:17:33 +0100 <kuribas> It does seem to work: (\a -> myParserOfB) >=> (b -> (myParserOfC)
2021-02-26 11:19:10 +0100 <ski> i guess there's "abstract duals" and "concrete duals". the former you apply not to some particular thing, but to a concept. so, strictly speaking, `Either' is not dual to `(,)', but the concept of sum/coproduct is dual to the concept of product. the latter typically involves, given a thing, considering all functions/homomorphisms/arrows from it to some specific other thing, or considering a similar
2021-02-26 11:19:16 +0100 <ski> exponential object, or the corresponding thing in monoidal closed or compact closed categories. an example is that the dual of a vector space is the vector space of all linear transformations/maps from it to the vector space of scalars
2021-02-26 11:20:48 +0100cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-02-26 11:21:08 +0100AWizzArd(~code@gehrels.uberspace.de)
2021-02-26 11:21:41 +0100AWizzArd(~code@gehrels.uberspace.de) (Changing host)
2021-02-26 11:21:41 +0100AWizzArd(~code@unaffiliated/awizzard)
2021-02-26 11:24:26 +0100_d0t(void@gateway/vpn/mullvad/d0t/x-89419360) (Quit: Konversation terminated!)
2021-02-26 11:26:45 +0100siers(~ij@raitis.veinbahs.lv) (Changing host)
2021-02-26 11:26:45 +0100siers(~ij@NixOS/user/siers)
2021-02-26 11:27:06 +0100siersij
2021-02-26 11:27:49 +0100Guest3557stilgart
2021-02-26 11:28:19 +0100stilgartGuest10121
2021-02-26 11:29:02 +0100Guest10121stilgart
2021-02-26 11:31:16 +0100aqd(~aqd@84.20.147.33) (Quit: Textual IRC Client: www.textualapp.com)
2021-02-26 11:32:04 +0100 <kuribas> to generate: (\GeneratorOfa -> b) =>= (\GeneratorOfB -> c)
2021-02-26 11:32:29 +0100 <dminuoso> kuribas: comonads dont "generate" - at least not the way Id think about them
2021-02-26 11:33:22 +0100 <kuribas> Well, I am thinking about filling in a form for example.
2021-02-26 11:34:02 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 11:34:06 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 11:34:26 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 11:35:05 +0100 <kuribas> So the comonad represents some field of the form...
2021-02-26 11:35:17 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) (Remote host closed the connection)
2021-02-26 11:36:00 +0100errst(~errst@unaffiliated/tirej)
2021-02-26 11:37:49 +0100psutcliffe(~psutcliff@2a00:801:44b:5fb3:b852:cfd3:ade7:f24f) (Quit: Leaving)
2021-02-26 11:38:16 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
2021-02-26 11:39:01 +0100todda7(~torstein@athedsl-258913.home.otenet.gr)
2021-02-26 11:40:23 +0100 <kuribas> what's the dual of applicative?
2021-02-26 11:41:09 +0100 <kuribas> ah wait, that's the contravariant functor jle` mentioned...
2021-02-26 11:43:17 +0100 <kuribas> https://hackage.haskell.org/package/contravariant-1.5.3/docs/Data-Functor-Contravariant-Divisible.…
2021-02-26 11:43:20 +0100 <merijn> Logically the dual of applicative would have to take a single 'c' and turn it into an arbitrary tuple?
2021-02-26 11:43:26 +0100 <dminuoso> If we think of monads as efffectful computations, then comonads might be closer to context sensitive comptuations
2021-02-26 11:44:08 +0100 <dminuoso> One of the very few comonadic examples we have, is something like cellular automatons.
2021-02-26 11:44:16 +0100 <kuribas> so a monad "adds" context to a computation, while a comonad "removes" it.
2021-02-26 11:44:19 +0100 <dminuoso> (Where computing the next cell state depends on surrounding state)
2021-02-26 11:44:26 +0100 <dminuoso> Not quite "removes it" but "depends on it"
2021-02-26 11:45:16 +0100 <dminuoso> In the common instances you usually have some concept of "focus" and "neighborhood" that you can inspect
2021-02-26 11:45:25 +0100 <kuribas> doesn't "w a -> b " remove the context?
2021-02-26 11:45:35 +0100 <dminuoso> I'd rather say it can "read" the context.
2021-02-26 11:45:42 +0100 <dminuoso> So the resulting value depends on it
2021-02-26 11:45:47 +0100 <dminuoso> Consider something like a blur filter
2021-02-26 11:45:56 +0100 <dminuoso> Where the computed value depends on the neighborhood
2021-02-26 11:46:29 +0100son0p(~son0p@181.58.39.182)
2021-02-26 11:47:22 +0100desophos(~desophos@c-24-14-63-128.hsd1.il.comcast.net) (Quit: Leaving)
2021-02-26 11:52:02 +0100 <kuribas> merijn: yes, that's the type of Divisble
2021-02-26 11:55:52 +0100davros1(~davros@host86-183-29-83.range86-183.btcentralplus.com)
2021-02-26 11:56:53 +0100bitmagie(~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de)
2021-02-26 11:58:21 +0100davros_(~davros@host86-184-190-159.range86-184.btcentralplus.com) (Ping timeout: 256 seconds)
2021-02-26 12:05:08 +0100jippiedoe(4dab983e@77-171-152-62.fixed.kpn.net)
2021-02-26 12:05:09 +0100_Alleria(~AllahuAkb@2603-7000-3040-0000-6cee-2fa2-b3ba-fa1a.res6.spectrum.com)
2021-02-26 12:07:21 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-02-26 12:07:46 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
2021-02-26 12:08:12 +0100Alleria_(~AllahuAkb@2603-7000-3040-0000-18b0-cfa2-5ed5-49de.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-02-26 12:10:56 +0100danso(~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 240 seconds)
2021-02-26 12:11:45 +0100mp___(mp@hell.cx)
2021-02-26 12:14:46 +0100danso(~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-02-26 12:17:00 +0100bitmagie(~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de) (Quit: bitmagie)
2021-02-26 12:19:47 +0100__minoru__shirae(~shiraeesh@109.166.56.143)
2021-02-26 12:24:21 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-26 12:25:43 +0100Graf_Blutwurst(~grafblutw@2001:171b:226e:adc0:e40c:bc1a:ac08:b43b)
2021-02-26 12:30:29 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-02-26 12:31:34 +0100 <kuribas> hmm, it seems easier to have Form' a b, which is a Profunctor, meaning a form that returns something of type "b", and can be populated with something of type "a".
2021-02-26 12:31:53 +0100 <kuribas> then Form a = Form' a a
2021-02-26 12:33:00 +0100 <kuribas> Then I can do Person <$> (personAge >$< intField) <*> (personName >$< stringField)
2021-02-26 12:34:24 +0100 <kuribas> with intField :: Form Int, stringFIeld :: Form String
2021-02-26 12:34:56 +0100danso(~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 240 seconds)
2021-02-26 12:35:23 +0100danso(~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-02-26 12:36:03 +0100 <kuribas> But you'll need a selective functor for choice...
2021-02-26 12:36:06 +0100aqd(~aqd@84.20.147.33)
2021-02-26 12:36:48 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 268 seconds)
2021-02-26 12:38:34 +0100statusfa1ledstatusfailed
2021-02-26 12:39:04 +0100statusfailedGuest334
2021-02-26 12:39:47 +0100todda7(~torstein@athedsl-258913.home.otenet.gr) (Quit: Konversation terminated!)
2021-02-26 12:39:56 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-02-26 12:39:57 +0100Guest334(~statusfai@statusfailed.com) (Quit: leaving)
2021-02-26 12:40:02 +0100todda7(~torstein@athedsl-258913.home.otenet.gr)
2021-02-26 12:40:15 +0100statusfa1led(~statusfai@statusfailed.com)
2021-02-26 12:40:59 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 12:44:20 +0100statusfa1ledstatusfailed
2021-02-26 12:44:21 +0100 <ski> kuribas> :t (>$<)
2021-02-26 12:45:20 +0100 <kuribas> ski: right, it's lmap
2021-02-26 12:45:26 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
2021-02-26 12:45:36 +0100 <kuribas> :t (>$<)
2021-02-26 12:45:37 +0100 <lambdabot> error:
2021-02-26 12:45:37 +0100 <lambdabot> • Variable not in scope: >$<
2021-02-26 12:45:37 +0100 <lambdabot> • Perhaps you meant one of these:
2021-02-26 12:45:37 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds)
2021-02-26 12:45:42 +0100 <kuribas> :t lmap
2021-02-26 12:45:43 +0100 <lambdabot> Profunctor p => (a -> b) -> p b c -> p a c
2021-02-26 12:45:53 +0100thc202(~thc202@unaffiliated/thc202)
2021-02-26 12:48:00 +0100ubert(~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-02-26 12:48:07 +0100 <Feuermagier> following function: "f xs [] = False" ; "f [] xs = True" --- function: xxl = xxl ---- call: f [] xll --- question: why does this not evaluate to "True"?
2021-02-26 12:48:32 +0100 <ski> ok
2021-02-26 12:49:01 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 12:49:31 +0100 <infinisil> Feuermagier: What's xll?
2021-02-26 12:49:38 +0100 <Feuermagier> xll = xll
2021-02-26 12:49:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 12:49:47 +0100 <Feuermagier> recursive infinite definition
2021-02-26 12:50:01 +0100 <ski> `xll' is not a function here (it's a list)
2021-02-26 12:50:19 +0100pavonia^\_^\(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-02-26 12:50:19 +0100 <ski> specificlly, it's a bottom value
2021-02-26 12:50:27 +0100 <Feuermagier> xll :: a ; xll = xll
2021-02-26 12:50:28 +0100 <Taneb> Feuermagier: the runtime has no idea if xll is an empty list or not
2021-02-26 12:50:30 +0100deja(~deja@212095008174.public.telering.at)
2021-02-26 12:50:36 +0100 <Feuermagier> *ah*
2021-02-26 12:50:48 +0100 <Feuermagier> it tries to evaluate it; thx!
2021-02-26 12:50:57 +0100 <ski> matching on `[]' in the second argument of `f' means that `f' becomes strict in that argument. meaning that if you pass a bottom value, the result will be bottom
2021-02-26 12:51:04 +0100 <ski> f xs _|_ = _|_
2021-02-26 12:51:12 +0100 <Taneb> It has to evaluate it at least as far to see if it's empty or not
2021-02-26 12:54:17 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-02-26 12:54:55 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 12:56:57 +0100 <Feuermagier> do you have a good guide on how to make a function tail-recursive?
2021-02-26 12:57:54 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9)
2021-02-26 12:59:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-02-26 13:00:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
2021-02-26 13:00:28 +0100 <ski> you can try to introduce an accumulator. (one way of doing that is doing CPS, but that doesn't necessarily help)
2021-02-26 13:00:55 +0100 <ski> also, you should ask yourself *if* you want to make the definition tail-recursive
2021-02-26 13:01:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 13:01:52 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
2021-02-26 13:01:58 +0100 <ski> it can be better to refrain from doing so, depending. if the function can be incremental, it's commonly better to refrain, since making it tail-recursive will make it bulky, i.e. non-incremental
2021-02-26 13:02:56 +0100 <ski> also, if you introduce an accumulator, then usually you'll want to force that accumulator to some extent at least, while you're iterating
2021-02-26 13:06:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-26 13:06:36 +0100bitmagie(~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de)
2021-02-26 13:06:37 +0100usr25(~usr25@unaffiliated/usr25)
2021-02-26 13:06:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 13:09:49 +0100bitmagie(~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de) (Client Quit)
2021-02-26 13:12:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-02-26 13:12:44 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-pcguwrpjphfcmwqk)
2021-02-26 13:12:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 13:14:43 +0100thc202(~thc202@unaffiliated/thc202)
2021-02-26 13:15:03 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 13:15:27 +0100fendor(~fendor@178.115.128.24.wireless.dyn.drei.com)
2021-02-26 13:19:45 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
2021-02-26 13:19:52 +0100bitmagie(~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de)
2021-02-26 13:21:04 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 13:23:07 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 13:23:28 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-26 13:23:41 +0100bitmagie(~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de) (Client Quit)
2021-02-26 13:28:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-26 13:29:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 13:34:26 +0100Pickchea(~private@unaffiliated/pickchea) (Quit: Leaving)
2021-02-26 13:34:54 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 13:37:09 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 264 seconds)
2021-02-26 13:39:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-02-26 13:39:50 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-02-26 13:40:33 +0100drbean_(~drbean@TC210-63-209-12.static.apol.com.tw)
2021-02-26 13:40:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 13:41:41 +0100 <Feuermagier> I'm in an IO - function and I want to call another IO-function with an initial value- how do i do that?
2021-02-26 13:41:53 +0100 <Feuermagier> i have f :: Integer -> IO ()
2021-02-26 13:42:03 +0100 <Feuermagier> and start :: IO
2021-02-26 13:42:20 +0100 <Feuermagier> I want to call "f 0"
2021-02-26 13:43:36 +0100 <lortabac> Feuermagier: start = f 0
2021-02-26 13:43:48 +0100 <lortabac> or did I misunderstand the question?
2021-02-26 13:43:59 +0100 <Feuermagier> Couldn't match expected type `Integer -> IO ()'
2021-02-26 13:43:59 +0100 <Feuermagier> with actual type `IO ()'
2021-02-26 13:44:06 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-02-26 13:44:06 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-02-26 13:44:06 +0100mouseghost(~draco@wikipedia/desperek)
2021-02-26 13:44:18 +0100 <Feuermagier> I tried that, but it dislikes the type
2021-02-26 13:44:45 +0100 <lortabac> can you paste your actual code somewhere?
2021-02-26 13:45:05 +0100dirediresalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-02-26 13:45:18 +0100 <Feuermagier> https://pastebin.com/rVSrUWZT
2021-02-26 13:45:26 +0100dirediresalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-02-26 13:46:06 +0100 <lortabac> there is a typo, vokalZaehler is calling itself instead of calling vokalZaehlerLoop
2021-02-26 13:46:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-02-26 13:46:16 +0100 <Feuermagier> omg
2021-02-26 13:46:18 +0100 <Feuermagier> thx
2021-02-26 13:46:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 13:46:46 +0100 <lortabac> when the errors are too strange, it's generally a silly typo :)
2021-02-26 13:49:58 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 276 seconds)
2021-02-26 13:50:20 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:b557:d49b:efe9:c5b5)
2021-02-26 13:51:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-26 13:52:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 13:53:00 +0100kam1(~kam1@5.125.126.175)
2021-02-26 13:53:18 +0100ddellacosta(~ddellacos@86.106.143.32)
2021-02-26 13:55:03 +0100ubert(~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de)
2021-02-26 13:55:39 +0100kam1(~kam1@5.125.126.175) (Remote host closed the connection)
2021-02-26 13:55:49 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
2021-02-26 13:56:21 +0100kam1(~kam1@5.125.126.175)
2021-02-26 13:57:31 +0100peutetre(~peutetre@185.163.110.108)
2021-02-26 13:58:25 +0100ddellacosta(~ddellacos@86.106.143.32) (Ping timeout: 276 seconds)
2021-02-26 14:00:11 +0100mananamenos(~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2021-02-26 14:01:21 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi)
2021-02-26 14:01:22 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Max SendQ exceeded)
2021-02-26 14:01:28 +0100emmanuel_erc(~user@cpe-74-71-106-64.nyc.res.rr.com)
2021-02-26 14:01:31 +0100 <ski> Feuermagier : needs more brackets in `countChar', and less in `count'
2021-02-26 14:01:36 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi)
2021-02-26 14:01:37 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Max SendQ exceeded)
2021-02-26 14:01:46 +0100 <Feuermagier> ski, yeah, fixed it already
2021-02-26 14:01:51 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi)
2021-02-26 14:01:57 +0100 <ski> also, what about `y' ?
2021-02-26 14:02:26 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 264 seconds)
2021-02-26 14:02:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-26 14:02:49 +0100 <ski> i guess it's sometimes considered a vowel, sometimes a consonant, in english. but in german, it's a vowel, right ?
2021-02-26 14:03:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 14:04:04 +0100 <boxscape> ski that's typically how it's used, but only a, e, i, o, u are commonly called vowels in German
2021-02-26 14:04:31 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:b557:d49b:efe9:c5b5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 14:04:35 +0100urodna(~urodna@unaffiliated/urodna)
2021-02-26 14:04:58 +0100 <Feuermagier> exactly
2021-02-26 14:05:11 +0100 <ski> hm, i suppose `ä',`ö',`ü' are considered as versions of `a',`o',`u'
2021-02-26 14:05:13 +0100thc202(~thc202@unaffiliated/thc202)
2021-02-26 14:05:26 +0100 <boxscape> (looking it up, the more precise statement is that the sound usually represented by y is a vowel but only a e i o u are "vowel letters")
2021-02-26 14:05:57 +0100 <ski> (that's not the case in swedish, though)
2021-02-26 14:06:03 +0100 <boxscape> interesting
2021-02-26 14:06:33 +0100 <ski> `å',`ä',`ö' are considered separate letters from `a' and `o'
2021-02-26 14:06:54 +0100 <Feuermagier> ä ö ü are as well
2021-02-26 14:06:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 14:07:02 +0100 <ski> (sorted separately (at the end of the alphabet), in dictionaries)
2021-02-26 14:07:07 +0100 <brkscnce> hey, does anyone know why all(inRange (0,7)) (1,9) is False, but all(inRange (0,7) (9,1) resolves to True?
2021-02-26 14:07:13 +0100 <Feuermagier> they are not in the alphabet here at all
2021-02-26 14:07:20 +0100 <boxscape> yeah in German a and ä are interspersed in the dictionary
2021-02-26 14:07:25 +0100 <ski> right
2021-02-26 14:07:47 +0100thorsten`(~Thorsten@ananke.uberspace.de) ("WeeChat 2.7.1")
2021-02-26 14:08:19 +0100 <Feuermagier> often they are seen as equivalent to ae, oe, ue - often they get written that way as well. especially handy when you want to avoid localised font
2021-02-26 14:08:20 +0100 <ski> brkscnce : because `Foldable' for tuples only considers the last component as an "element"
2021-02-26 14:08:20 +0100totoro2021(~t@unaffiliated/totoro2021) (Quit: WeeChat 2.7.1)
2021-02-26 14:08:50 +0100 <brkscnce> ah, that explains it
2021-02-26 14:09:22 +0100 <ski> > length (1,9)
2021-02-26 14:09:24 +0100 <lambdabot> 1
2021-02-26 14:09:31 +0100 <ski> > sum (1,9)
2021-02-26 14:09:33 +0100 <lambdabot> 9
2021-02-26 14:09:47 +0100 <merijn> ski: Also language dependendent
2021-02-26 14:10:03 +0100 <ski> merijn : yes, goes without saying ?
2021-02-26 14:10:08 +0100 <merijn> (the effect of diaeresis on vowels)
2021-02-26 14:10:09 +0100 <brkscnce> interesting
2021-02-26 14:10:45 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 14:10:47 +0100 <merijn> brkscnce: It makes sense when you consider "Foldable :: (* -> *) -> Constraint" i.e. foldable types take one argument
2021-02-26 14:11:13 +0100 <merijn> brkscnce: So if we rewrite (a, b) into prefix style "(,) a b", then only "(,) a" could be Foldable
2021-02-26 14:11:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-02-26 14:11:49 +0100 <brkscnce> haskell tuples are weird
2021-02-26 14:12:00 +0100 <merijn> How so?
2021-02-26 14:12:01 +0100 <ski> brkscnce : it's because of different components of tuples can have different types. and these types are parameters of the type constructor for the tuple type. only the last type parameter can effectively be subject to `Foldable' (and `Traversable'), by partially applying the tuple type constructor to the previous type parameters
2021-02-26 14:12:01 +0100 <brkscnce> they probably make a lot of sense, just not used to them yet
2021-02-26 14:12:32 +0100 <merijn> brkscnce: It makes sense when you stop considering them as "sequences of things" as they are in, for example, python
2021-02-26 14:12:42 +0100 <brkscnce> yup
2021-02-26 14:12:43 +0100 <ski> so, you have `Foldable ((,) a)' which means that in a value of type `(,) a b', only the component of type `b' will be folded
2021-02-26 14:13:09 +0100 <ski> for triples, it'd be `Foldable ((,,) a b)' folding over `c' in `(,,) a b c'
2021-02-26 14:13:53 +0100 <brkscnce> i mean i started writing haskell 2 days ago, probably going to take a bit until I get it down
2021-02-26 14:14:51 +0100 <ski> yea, tuples are heterogenous "aggregates" of some definite number of values (that therefore can have differing types. for a give tuple type, the value at the same position always has the same type)
2021-02-26 14:15:08 +0100 <brkscnce> makes sense
2021-02-26 14:15:08 +0100 <ski> while lists are homogenous collections of varying length
2021-02-26 14:15:28 +0100 <ski> (homogenous meaning that every element has the same type)
2021-02-26 14:15:38 +0100hpc_hpc
2021-02-26 14:15:55 +0100 <brkscnce> took me a second, but i was able to parse that sentence still
2021-02-26 14:15:58 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 276 seconds)
2021-02-26 14:16:00 +0100 <ski> conceptually, these two cases are rather different. you'd handle them differently, in code
2021-02-26 14:16:02 +0100 <merijn> ski: something, something, Dynamic ;) *ducks*
2021-02-26 14:16:18 +0100 <brkscnce> haskell talk does seem a lot more mathy than python talk
2021-02-26 14:16:37 +0100gienah(~mwright@gentoo/developer/gienah)
2021-02-26 14:17:04 +0100 <ski> for a varying-length thing, normally you want to "do the same thing to every element" (that might be something slightly complex, like "if it's at an even index, do this; otherwise (odd index), do that")
2021-02-26 14:17:05 +0100 <merijn> That's because there's lots of good maths to steal ;)
2021-02-26 14:17:12 +0100berberman_(~berberman@unaffiliated/berberman)
2021-02-26 14:17:14 +0100pera(~pera@unaffiliated/pera) (Quit: leaving)
2021-02-26 14:17:15 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2021-02-26 14:17:26 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 240 seconds)
2021-02-26 14:17:33 +0100Deide(~Deide@217.155.19.23)
2021-02-26 14:17:37 +0100 <brkscnce> yeah, I mean I'm really just using them for array indexing
2021-02-26 14:17:59 +0100 <brkscnce> so I need to generate series of them
2021-02-26 14:18:06 +0100 <ski> there are cases where one wants a varying-length sequence of elements not all of the same type. but this is comparatively rare. and normally, there's some definite pattern between the types, even in this cases
2021-02-26 14:18:40 +0100 <merijn> > (,) <$> [0..5] <*> [0..5] -- something like that? :p
2021-02-26 14:18:41 +0100 <lambdabot> [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(2,...
2021-02-26 14:18:42 +0100mayleesia(4dbf5b8f@x4dbf5b8f.dyn.telefonica.de)
2021-02-26 14:18:48 +0100 <ski> e.g. you might want a sequence, where the first element contains one object, the next contains two objects, the next contains three objects, and so on
2021-02-26 14:18:57 +0100 <brkscnce> yup
2021-02-26 14:19:12 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee)
2021-02-26 14:19:19 +0100 <ski> or perhaps the first contains one, next one contains two, next one contains four, next eight .. doubling every time
2021-02-26 14:19:21 +0100 <brkscnce> actually that's quite neat, did not see the <> operators before
2021-02-26 14:19:32 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-26 14:19:36 +0100 <brkscnce> have to check out what those do
2021-02-26 14:19:38 +0100 <merijn> brkscnce: <$> is just fmap as operator
2021-02-26 14:19:45 +0100 <boxscape> brkscnce you'll learn about them once you learn about the Applicative class
2021-02-26 14:19:53 +0100 <ski> you can do these in Haskell, too, if you want to. but you'd have to make a custom sequence type for that particular use-case, can't use the regular homogenous lists
2021-02-26 14:20:09 +0100 <merijn> brkscnce: <*> is from Applicative, which, for lists, does cartesian product (speaking of mathy >.>)
2021-02-26 14:20:28 +0100 <ski> > liftA2 (,) [0 .. 3] [0 .. 2]
2021-02-26 14:20:29 +0100 <lambdabot> [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2)]
2021-02-26 14:20:46 +0100 <ski> > [(x,y) | x <- [0 .. 3],y <- [0 .. 2]]
2021-02-26 14:20:48 +0100 <lambdabot> [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2)]
2021-02-26 14:20:49 +0100 <brkscnce> I mean I'm honestly enjoying haskell so far
2021-02-26 14:20:56 +0100deja(~deja@212095008174.public.telering.at) (Quit: requested)
2021-02-26 14:21:04 +0100 <ski> > [(x,y) | x <- [0 .. 3],y <- [0 .. x]]
2021-02-26 14:21:05 +0100 <lambdabot> [(0,0),(1,0),(1,1),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2),(3,3)]
2021-02-26 14:21:23 +0100deja(~deja@212095008174.public.telering.at)
2021-02-26 14:21:25 +0100 <merijn> brkscnce: Occasional sensation of brains melting out of ears is considered expected behaviour ;)
2021-02-26 14:21:40 +0100 <ski> > do x <- [0 .. 3]; y <- [0 .. x]; return (x,y)
2021-02-26 14:21:41 +0100 <lambdabot> [(0,0),(1,0),(1,1),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2),(3,3)]
2021-02-26 14:21:56 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-26 14:21:58 +0100 <ski> @quote is.the.solution
2021-02-26 14:21:58 +0100 <lambdabot> quicksilver says: head-explosion is the solution, not the problem.
2021-02-26 14:22:04 +0100 <merijn> Not sure 50 variations of tupling lists will add much ;)
2021-02-26 14:22:10 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee) (Client Quit)
2021-02-26 14:22:12 +0100 <brkscnce> I feel like it's just been constantly broiling since I've started
2021-02-26 14:22:57 +0100lemmih(~lemmih@2406:3003:2072:44:d8ed:96e9:a19d:e53b)
2021-02-26 14:23:16 +0100 <swarmcollective> Once you get used to the predictability of pure functions, it will balance out (at least in my experience). And that is wonderful.
2021-02-26 14:23:44 +0100 <brkscnce> there's also like so many ways to skin a cat here
2021-02-26 14:24:07 +0100 <ski> different approaches can be good in differing circumstances
2021-02-26 14:24:10 +0100 <dminuoso> brkscnce: That's programming. In Haskell we just have a larger plethora of tools and combinators. :)
2021-02-26 14:24:12 +0100 <brkscnce> i mean I mostly write python, which is very "this is the way you skin these cats"
2021-02-26 14:24:17 +0100 <ski> and there's room for variation, and for style and taste
2021-02-26 14:25:19 +0100 <ski> part of the point here is that it's usually relatively easy (at least compared to many other languages) to refactor some piece of code, step by step, by reformulating things successively
2021-02-26 14:26:01 +0100 <ski> without "multiple (slightly different, with different pros and cons) ways to do the same thing", that would presumably be harder
2021-02-26 14:26:07 +0100 <brkscnce> yeah, it does feel a lot more fluid
2021-02-26 14:26:15 +0100 <boxscape> yeah python has "there's only one obvious way to do things" as one of its mantras, doesn't it
2021-02-26 14:26:29 +0100 <brkscnce> indeed, it's part of the Zen of Python
2021-02-26 14:26:47 +0100 <ski> if the alternatives are more or less completely functionally equivalent, then there's not much point, agreed
2021-02-26 14:26:49 +0100 <merijn> brkscnce: Ironically, over time they are breaking their Zen more and more ;)
2021-02-26 14:26:57 +0100deja(~deja@212095008174.public.telering.at) (Quit: requested)
2021-02-26 14:27:04 +0100 <merijn> *Especially* "explicit is better than implicit"
2021-02-26 14:27:07 +0100 <ski> merijn : probably for good reason
2021-02-26 14:27:23 +0100 <merijn> ski: tbh, the Zen of Python has some sensible stuff
2021-02-26 14:27:41 +0100 <xsperry> > zip [0..3] [0..2] -- the most obvious (and boring) version
2021-02-26 14:27:43 +0100 <lambdabot> [(0,0),(1,1),(2,2)]
2021-02-26 14:27:45 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2021-02-26 14:27:53 +0100 <merijn> xsperry: That does something different
2021-02-26 14:27:57 +0100 <ski> "explicit is better than implicit" sounds like a thing that one ought to say "it depends" to
2021-02-26 14:27:58 +0100 <__minoru__shirae> brkscnce: why would a beginner use tuples as foldables though?
2021-02-26 14:28:01 +0100xff0x(~xff0x@port-92-195-110-249.dynamic.as20676.net) (Ping timeout: 256 seconds)
2021-02-26 14:28:15 +0100 <xsperry> uh, yeah I wasn't paying attention
2021-02-26 14:28:32 +0100 <brkscnce> trying to write a chess move generator, so I'm storing the board as an array
2021-02-26 14:28:35 +0100 <boxscape> __minoru__shirae because a lot of methods that encode very straightforward concepts require Foldable
2021-02-26 14:28:45 +0100 <brkscnce> which seemed fine to me, since I'm not mutating it, and i'm checking all over
2021-02-26 14:29:00 +0100 <brkscnce> so having nested lists seemed icky to me?
2021-02-26 14:29:15 +0100 <merijn> brkscnce: Also, slow :p
2021-02-26 14:29:23 +0100 <ski> beginners can easily conflate the "heterogenous, definite size" with the "homogenous, indefinite size" aggregates, coming from a language that doesn't that clearly emphasize the distinction
2021-02-26 14:29:24 +0100 <brkscnce> yup, O(n) over and over
2021-02-26 14:29:30 +0100 <merijn> brkscnce: Nested lists are a mess. They're slow, might have inconsistent dimensions, etc.
2021-02-26 14:29:38 +0100 <merijn> Array is much better
2021-02-26 14:29:47 +0100 <boxscape> tbf it's actually O(8) in both dimensions making it O(1) :P
2021-02-26 14:29:48 +0100 <brkscnce> hence the (0,0)(7,7) array
2021-02-26 14:29:53 +0100_noblegas(uid91066@gateway/web/irccloud.com/x-koxpwnnitfybavxb) (Quit: Connection closed for inactivity)
2021-02-26 14:29:54 +0100 <ski> brkscnce : two-dimensional array ?
2021-02-26 14:29:55 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-26 14:30:03 +0100 <brkscnce> for the board, yeah
2021-02-26 14:30:07 +0100 <__minoru__shirae> boxscape: I mean there should be an alternative, more beginner-friendly way of doing things than using tuples as foldables
2021-02-26 14:30:07 +0100 <merijn> brkscnce: Alternatively, you could have gone for "Map (Int, Int) Square", but for something as tiny as a chessboard it doesn't matter much
2021-02-26 14:30:46 +0100 <merijn> brkscnce: FYI, Array isn't limited to either 0 indexing nor integral indexing
2021-02-26 14:31:15 +0100 <merijn> brkscnce: You could, hypothetically, use an array that's indexed via, say (H, 5) :p
2021-02-26 14:31:23 +0100 <ski> you could make an enumeration type for the chess rows, and one for the chess columns, and index with those
2021-02-26 14:31:31 +0100 <ski> yea
2021-02-26 14:31:34 +0100 <brkscnce> right, because tuple indexes
2021-02-26 14:31:43 +0100 <brkscnce> and tuples being heterogenous
2021-02-26 14:31:47 +0100 <ski> (more specifically, the index types needs to be instances of `Ix')
2021-02-26 14:31:50 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-ozhkekfvbfssrzmb)
2021-02-26 14:31:54 +0100 <merijn> brkscnce: Well, the real trick is that it indexes via Ix
2021-02-26 14:32:03 +0100 <merijn> brkscnce: And you can provide custom instances for that
2021-02-26 14:32:13 +0100 <merijn> (Which tuples have)
2021-02-26 14:32:34 +0100 <boxscape> hm does [Int] have an Ix instance
2021-02-26 14:32:48 +0100deja(~deja@212095008174.public.telering.at)
2021-02-26 14:32:48 +0100 <brkscnce> should have, right?
2021-02-26 14:32:53 +0100 <merijn> Specifically "instance (Ix a, Ix b) => Ix (a, b)" (i.e. tuples are indexable if their components are)
2021-02-26 14:32:56 +0100 <boxscape> % range ([1,2], [3,4])
2021-02-26 14:32:57 +0100 <yahb> boxscape: ; <interactive>:55:1: error:; * No instance for (Ix [Integer]) arising from a use of `it'; * In the first argument of `print', namely `it'; In a stmt of an interactive GHCi command: print it
2021-02-26 14:32:59 +0100 <ski> @let data Column = A | B | C | D | E | F | G | H deriving (Show,Read,Eq,Ord,Bounded,Enum,Ix)
2021-02-26 14:32:59 +0100 <boxscape> nope
2021-02-26 14:33:01 +0100 <lambdabot> Defined.
2021-02-26 14:33:11 +0100 <boxscape> (well, that was [Integer] not [Int], but close enough)
2021-02-26 14:33:29 +0100 <merijn> ski: Should have a bounded newtype with smart constructor for the column ;)
2021-02-26 14:33:31 +0100usr25(~usr25@unaffiliated/usr25) (Ping timeout: 276 seconds)
2021-02-26 14:33:55 +0100skiforgets whether it's columns or rows that are lettered
2021-02-26 14:34:04 +0100 <boxscape> you mean ranks or files :P
2021-02-26 14:34:15 +0100 <ski> ty, that's better :)
2021-02-26 14:35:06 +0100dyeplexer(~lol@unaffiliated/terpin)
2021-02-26 14:35:11 +0100 <merijn> So far today's "lets overcomplicate things" session ;)
2021-02-26 14:35:21 +0100skigrins
2021-02-26 14:35:28 +0100 <brkscnce> hrm, that looks very clean, but at the same time, I think I'd probably need to define something to add a number to a rank, which seems like extra work
2021-02-26 14:35:56 +0100 <brkscnce> like A + 2 or B - 1
2021-02-26 14:36:18 +0100 <merijn> "offsetRank :: Rank -> Int -> Maybe Rank" ;)
2021-02-26 14:36:38 +0100 <merijn> (or file, whatever)
2021-02-26 14:36:55 +0100 <merijn> brkscnce: You can go quite far with that, but whether it's worth the effort right now is...debatable :)
2021-02-26 14:37:12 +0100 <ski> > (toEnum . pred . fromEnum :: Column -> Column) C
2021-02-26 14:37:14 +0100 <lambdabot> B
2021-02-26 14:37:22 +0100 <boxscape> > (toEnum . pred . fromEnum :: Column -> Column) A
2021-02-26 14:37:24 +0100 <lambdabot> *Exception: toEnum{Column}: tag (-1) is outside of enumeration's range (0,7)
2021-02-26 14:37:28 +0100 <boxscape> partial :(
2021-02-26 14:37:29 +0100 <merijn> ski: You...probably don't want wrap around for a chess board :p
2021-02-26 14:37:31 +0100 <brkscnce> I mean the letter representations really only come back up when I'm converting the position tuples back to string moves
2021-02-26 14:37:46 +0100 <brkscnce> only if you're playing moebius chess
2021-02-26 14:37:53 +0100 <ski> no wrap
2021-02-26 14:37:58 +0100 <boxscape> ooh or klein bottle chess
2021-02-26 14:37:58 +0100encod3(~encod3@45-154-157-94.ftth.glasoperator.nl)
2021-02-26 14:38:56 +0100 <brkscnce> right now I'm just doing posToString (x,y) = ['a'..'h'] !! x .. ['1'..'8'] !! y
2021-02-26 14:39:05 +0100totoro2021(~t@unaffiliated/totoro2021)
2021-02-26 14:39:06 +0100 <brkscnce> which seems sufficient
2021-02-26 14:39:26 +0100 <boxscape> brkscnce the nice thing about the letter representation is that you're guaranteed to only have valid indices, since you can't even generate an index like (4,9)
2021-02-26 14:39:39 +0100encod3(~encod3@45-154-157-94.ftth.glasoperator.nl) (Client Quit)
2021-02-26 14:39:40 +0100 <brkscnce> hrm, yeah
2021-02-26 14:39:45 +0100 <boxscape> though as merijn said "whether it's worth it is debateable"
2021-02-26 14:39:48 +0100 <merijn> boxscape: Supporting the numbered index is awkward, though
2021-02-26 14:39:49 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-26 14:39:52 +0100 <boxscape> yes
2021-02-26 14:40:01 +0100z0k(~user@115-186-141-91.nayatel.pk) (Ping timeout: 276 seconds)
2021-02-26 14:40:05 +0100 <merijn> You'd have to newtype + smart constructor and before you know it you're in funky town ;)
2021-02-26 14:40:07 +0100 <brkscnce> right now I'm using a filter function to try to restrict the generated ranges
2021-02-26 14:40:18 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 14:40:48 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-26 14:40:49 +0100 <brkscnce> which is where that fold problem popped up, since I was trying to do takeBounded = takeWhile $ all $ inRange (0,7)
2021-02-26 14:40:49 +0100 <boxscape> merijn could also go directly to funkytown with Fin (S (S (S (S (S (S (S (S Z)))))))) :)
2021-02-26 14:40:59 +0100Tario(~Tario@201.192.165.173)
2021-02-26 14:41:05 +0100 <boxscape> (actually 7 Ss, not 8)
2021-02-26 14:41:13 +0100 <boxscape> no, 8
2021-02-26 14:41:30 +0100 <ski> off-by-one, here we come ! :)
2021-02-26 14:42:51 +0100 <ski> brkscnce : i'd use brackets there
2021-02-26 14:43:13 +0100 <brkscnce> for style reasons, or danger reasons?
2021-02-26 14:43:45 +0100sm2n(~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca) (Ping timeout: 264 seconds)
2021-02-26 14:43:46 +0100 <ski> style. `$' is ugly, i generally try to use it as little as possible .. with only a few exceptions
2021-02-26 14:43:49 +0100 <boxscape> how much $ is being used differs from code base to code base
2021-02-26 14:44:43 +0100 <brkscnce> I did read a page saying it was controversial
2021-02-26 14:44:50 +0100 <ski> at least `takeWhile . all . inRange $ (0,7)' would probably look nicer (and, imho, `(takeWhile . all . inRange) (0,7)', moreso). but there's nothing wrong with `takeWhile (all (inRange (0,7)))', either
2021-02-26 14:45:23 +0100 <brkscnce> right, the . for function composition, might change it to that
2021-02-26 14:45:40 +0100 <brkscnce> because that's more what I'm trying to say there
2021-02-26 14:45:42 +0100 <merijn> boxscape: Chess in typeclasses on the type level :p
2021-02-26 14:45:47 +0100 <merijn> I'm sure Oleg has done that
2021-02-26 14:45:52 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 276 seconds)
2021-02-26 14:46:10 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-26 14:46:11 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2021-02-26 14:46:14 +0100 <boxscape> merijn hm reminds me of the blog post about the 8 queens problem in classes
2021-02-26 14:46:15 +0100 <merijn> You want "inRange ((0,0), (7,7))", no?
2021-02-26 14:46:29 +0100 <ski> it's generally a good habit to replace `foo $ bar $ baz $ quux $ blah' by `foo . bar . baz . quux $ blah' (or `(foo . bar . baz . quux) blah' or `foo (bar (baz (quux blah)))')
2021-02-26 14:46:30 +0100 <merijn> > inRange ((0,0),(7,7) (0,9)
2021-02-26 14:46:32 +0100 <lambdabot> <hint>:1:27: error:
2021-02-26 14:46:32 +0100 <lambdabot> <hint>:1:27: error:
2021-02-26 14:46:32 +0100 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2021-02-26 14:46:37 +0100 <merijn> > inRange ((0,0),(7,7)) (0,9)
2021-02-26 14:46:38 +0100 <lambdabot> False
2021-02-26 14:46:44 +0100 <merijn> > inRange ((0,0),(7,7)) (3,5)
2021-02-26 14:46:46 +0100 <lambdabot> True
2021-02-26 14:46:48 +0100 <brkscnce> oh, I can do that?
2021-02-26 14:46:52 +0100 <ski> sure
2021-02-26 14:46:55 +0100 <merijn> :t inRange
2021-02-26 14:46:56 +0100 <lambdabot> Ix a => (a, a) -> a -> Bool
2021-02-26 14:47:01 +0100 <boxscape> (i.e. https://aphyr.com/posts/342-typing-the-technical-interview )
2021-02-26 14:47:16 +0100 <merijn> brkscnce: tuples are Ix instances, so yes :)
2021-02-26 14:47:24 +0100 <ski> `a' there is the index type. in this case, it's type of pairs of rank and file indices
2021-02-26 14:47:25 +0100 <brkscnce> well, that makes my function redundant, that's great
2021-02-26 14:48:25 +0100drbean_(~drbean@TC210-63-209-12.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-02-26 14:49:03 +0100 <brkscnce> oh, also, i guess a style question, if I'm taking an input string, and doing things to it until its in the form I'd like it to be, and I do not care about intermediary results, would I pack all of that processing into a where?
2021-02-26 14:49:09 +0100 <ski> brkscnce : in `foo . bar . baz . quux', you could break/factor out any composition subsequence into its own definition, and vice versa. not so with the `$' version
2021-02-26 14:49:42 +0100 <ski> brkscnce : you could use `<$>', possibly
2021-02-26 14:50:13 +0100 <brkscnce> for composition or string processing?
2021-02-26 14:50:17 +0100 <ski> `where' can not access your local variable inside `do', unless the `where' is inside the `do' as well (which is usually not what happens. you'll know if you do this)
2021-02-26 14:50:33 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 14:50:51 +0100 <merijn> brkscnce: "It Depends (TM)" ;)
2021-02-26 14:50:58 +0100 <ski> myResult <- (finalProcess . moreProcess . initialProcess) <$> readLn
2021-02-26 14:51:09 +0100gzj(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-26 14:51:18 +0100 <ski> however, if you want to catch parse errors and the like, you may want to break that up
2021-02-26 14:52:25 +0100 <brkscnce> I think catching fire on malformed input is fine and preferred for this script
2021-02-26 14:52:44 +0100 <ski> (i guess those brackets are redundant)
2021-02-26 14:53:15 +0100 <brkscnce> you'd use those if you're doing (f . g . h) (x), right?
2021-02-26 14:53:40 +0100 <xsperry> (f . g . h) x works too
2021-02-26 14:53:43 +0100skiwould
2021-02-26 14:54:00 +0100 <merijn> xsperry: Depends on if 'x' is a variable or a meta-variable ;)
2021-02-26 14:54:02 +0100 <ski> in general, `x' might be a non-atomic expression
2021-02-26 14:54:23 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
2021-02-26 14:54:36 +0100ski. o O ( meta all the variables ! )
2021-02-26 14:55:11 +0100sm2n(~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca)
2021-02-26 14:55:17 +0100 <brkscnce> also, another thing I have yet to find a good example for, how would you split one value into several variables cleanly?
2021-02-26 14:55:28 +0100 <brkscnce> if the calculation of those variables shares processing
2021-02-26 14:55:47 +0100 <ski> return a tuple (or a list) is a common choice
2021-02-26 14:56:05 +0100 <brkscnce> so (x,y) = expression is fine?
2021-02-26 14:56:15 +0100 <ski> > let (front,back) = splitAt 2 "fubar" in back ++ front
2021-02-26 14:56:16 +0100 <lambdabot> "barfu"
2021-02-26 14:56:18 +0100 <ski> yes
2021-02-26 14:56:53 +0100 <brkscnce> right, just seemed like the kind of thing where it's either totally fine or I'm committing a grave sin, and I will be shamed for it
2021-02-26 14:57:22 +0100 <Taneb> This one's at the "totally find" end
2021-02-26 14:57:28 +0100 <ski> sometimes you'll want to pass on those two parts directly to some other function, without having to name them
2021-02-26 14:57:37 +0100 <__minoru__shirae> boxscape, hey, I searched aphyr! I heard that nickname in another language and didn't know how to spell it in english
2021-02-26 14:57:47 +0100hendursa1(~weechat@gateway/tor-sasl/hendursaga) (Quit: hendursa1)
2021-02-26 14:57:50 +0100 <ski> if that function accepts them curriedly, you could use `uncurry' on the function to be able to do this
2021-02-26 14:58:15 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-02-26 14:58:15 +0100 <ski> > (uncurry . flip) (++) (splitAt 2 "fubar")
2021-02-26 14:58:17 +0100 <lambdabot> "barfu"
2021-02-26 14:58:19 +0100hendursaga(~weechat@gateway/tor-sasl/hendursaga)
2021-02-26 14:58:55 +0100 <brkscnce> right, that's the one where you modify a function to take a tuple or reverse it
2021-02-26 14:59:06 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-26 14:59:09 +0100 <brkscnce> which, honestly, very neat
2021-02-26 14:59:20 +0100 <ski> yea, `uncurry' makes it take a pair, and then feeds the two components of that pair to the original function
2021-02-26 14:59:27 +0100 <ski> `curry' does the opposite thing
2021-02-26 14:59:31 +0100 <merijn> brkscnce: It also depends how complex your splitting is :p
2021-02-26 14:59:41 +0100 <boxscape> __minoru__shirae judging by your nickname, did you hear it in Japanese?
2021-02-26 14:59:44 +0100 <merijn> brkscnce: At some point the answer just becomes "write a proper parser" :p
2021-02-26 15:00:00 +0100 <ski> for more complicated cases, it's probably a better idea to name things, rather than attempting to juggle them, unnamed
2021-02-26 15:00:15 +0100 <__minoru__shirae> boxscape, no I heard it in a podcast in russian
2021-02-26 15:00:22 +0100 <boxscape> ah, got it
2021-02-26 15:02:34 +0100 <brkscnce> https://paste.tomsmeding.com/cAOk5jxp I mean this is roughly my two attempts at it so far
2021-02-26 15:04:28 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9)
2021-02-26 15:04:31 +0100 <brkscnce> in the first I'm taking the string through various intermediary values, In the second I try to compose things a bit more, tuck away some of the intermediary functions
2021-02-26 15:04:35 +0100 <ski> [boardRaw,player2] = words testString -- ?
2021-02-26 15:04:37 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 15:05:27 +0100 <brkscnce> right, that works
2021-02-26 15:05:52 +0100petersen(~petersen@redhat/juhp)
2021-02-26 15:06:05 +0100 <brkscnce> didn't even think of that, i can pattern match lists, right
2021-02-26 15:06:13 +0100 <ski> numToSpc n = replicate ' '
2021-02-26 15:06:31 +0100 <ski> @src replicate
2021-02-26 15:06:32 +0100 <lambdabot> replicate n x = take n (repeat x)
2021-02-26 15:06:46 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 15:07:10 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 15:07:33 +0100 <ski> `read [cha]' could be `digitToInt cha'
2021-02-26 15:07:38 +0100jacks2(~bc8134e3@217.29.117.252)
2021-02-26 15:08:24 +0100 <jacks2> you can pattern match many things, including data of types you created
2021-02-26 15:08:51 +0100 <ski> concatMap f xs = concat (map f xs)
2021-02-26 15:08:53 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee)
2021-02-26 15:08:57 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
2021-02-26 15:08:58 +0100 <brkscnce> yeah, I keep thinking about it too much like pythons tuple unpacking
2021-02-26 15:10:00 +0100 <ski> why `init' in `boardSpc' ?
2021-02-26 15:11:04 +0100usr25(~usr25@unaffiliated/usr25)
2021-02-26 15:11:44 +0100 <brkscnce> it's a chess variation with a depot marked down as a 9th rank, so the last element needs to be removed
2021-02-26 15:11:49 +0100 <ski> boardArr = array ((0,0),(7,7)) [((x,y),val) | (y,row) <- zip [0 ..] boardSpc,(x,val) <- zip [0 ..] row]
2021-02-26 15:11:53 +0100 <ski> if you define
2021-02-26 15:12:16 +0100 <ski> tabulate ix f = listArray ix [f i | i <- range ix]
2021-02-26 15:12:17 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-26 15:12:26 +0100 <ski> then you could say
2021-02-26 15:13:15 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 15:13:52 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-26 15:13:53 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Read error: Connection reset by peer)
2021-02-26 15:14:28 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 276 seconds)
2021-02-26 15:14:39 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 15:15:00 +0100 <ski> well, i guess it doesn't make much sense in this case to us `tabulate ((0,0),(7,7)) (\(x,y) -> ..x..y..)'
2021-02-26 15:15:19 +0100 <ski> boardArr = listArray ((0,0),(7,7)) boardSpc -- i think
2021-02-26 15:15:26 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
2021-02-26 15:15:46 +0100 <ski> > range ((0,0),(2,1))
2021-02-26 15:15:48 +0100 <lambdabot> [(0,0),(0,1),(1,0),(1,1),(2,0),(2,1)]
2021-02-26 15:16:29 +0100 <ski> ah, so it'd be `(y,x)', not `(x,y)', when indexing, if you use the standard ordering
2021-02-26 15:16:51 +0100thc202(~thc202@unaffiliated/thc202)
2021-02-26 15:16:57 +0100carlomagno(~cararell@148.87.23.6)
2021-02-26 15:16:58 +0100 <brkscnce> so curses indexing
2021-02-26 15:17:18 +0100 <ski> (oh, guess you also need `(concat boardSpc)', not just `boardSpc')
2021-02-26 15:17:24 +0100ezrakilt_(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 15:17:31 +0100 <ski> yea .. so might not be worth it
2021-02-26 15:17:37 +0100 <brkscnce> but that might actually work out, since the elements in the outer list are ranks
2021-02-26 15:17:50 +0100 <zmagii> When aphyr said he has a Mastodon for leather, I kind of thought for leather craft... eh.
2021-02-26 15:17:52 +0100 <brkscnce> so y is ranks, x is files
2021-02-26 15:18:16 +0100 <ski> (that tells me nothing, not being familiar with the terms "rank" and "file")
2021-02-26 15:19:17 +0100 <brkscnce> ah, chess ranks are the rows of the board, and files are the columns
2021-02-26 15:19:27 +0100 <ski> i'd definitely avoid the `concat' on the list comprehension, though
2021-02-26 15:19:53 +0100 <ski> ok
2021-02-26 15:21:30 +0100 <brkscnce> hrm, so I could do array ((0,0), (7,7)) (zip (range((0,0), (7,7))) (concat boardSpc))
2021-02-26 15:21:36 +0100ezrakilt_(~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 240 seconds)
2021-02-26 15:22:02 +0100 <ski> or just use `listArray' ?
2021-02-26 15:22:28 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 15:22:28 +0100 <ski> (it uses the `Ix' ordering of the elements)
2021-02-26 15:22:37 +0100Chai-T-Rex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
2021-02-26 15:22:51 +0100 <ski> > listArray ((0,0),(2,1)) "abcdef"
2021-02-26 15:22:53 +0100 <lambdabot> array ((0,0),(2,1)) [((0,0),'a'),((0,1),'b'),((1,0),'c'),((1,1),'d'),((2,0),...
2021-02-26 15:23:06 +0100 <brkscnce> ah, right, didn't initally get what that function did
2021-02-26 15:23:26 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Read error: No route to host)
2021-02-26 15:23:50 +0100 <ski> listArray ix es = array ix (zip (range ix) es) -- basically
2021-02-26 15:24:16 +0100 <brkscnce> alright, that does look a lot cleaner
2021-02-26 15:24:47 +0100 <ski> as long as you're ok with the standard `Ix' ordering, that should be less cluttered
2021-02-26 15:25:09 +0100 <ski> `array', though, allowes the elements to come in any order, since their indices are attached
2021-02-26 15:25:13 +0100Chai-T-Rex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2021-02-26 15:25:29 +0100 <ski> (last one wins, if there's duplicates, iirc)
2021-02-26 15:25:50 +0100 <brkscnce> right, but if they're already correctly ordered, it isn't necessairy
2021-02-26 15:26:10 +0100 <ski> > array ((),()) (zip (repeat ()) [False,True])
2021-02-26 15:26:12 +0100 <lambdabot> array ((),()) [((),True)]
2021-02-26 15:26:21 +0100 <ski> right
2021-02-26 15:26:31 +0100terzievk(~user@78.90.139.65)
2021-02-26 15:26:35 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 15:27:17 +0100 <brkscnce> thanks, that actually does simplify a number of spots where I was like "huh, there probably is a better way here" when I wrote them
2021-02-26 15:27:22 +0100hackagelifted-async 0.10.1.3 - Run lifted IO operations asynchronously and wait for their results https://hackage.haskell.org/package/lifted-async-0.10.1.3 (MitsutoshiAoe)
2021-02-26 15:27:56 +0100kupi(uid212005@gateway/web/irccloud.com/x-ueszxmgrjupzjwnp)
2021-02-26 15:29:46 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 15:29:55 +0100 <terzievk> Does anybody know happen to know how to tell emacs to use dynamic linking with haskell related stuff? Or maybe it's supposed to work with static linking only? Which one is preferred?
2021-02-26 15:30:21 +0100 <Unhammer> I'm having some weird issues with tempfiles disappearing in windows – I'm using System.Process.Typed and UnliftIO.Temporary, with something like
2021-02-26 15:30:22 +0100 <Unhammer> withSystemTempFile name $\f h ->withSystemTempFile name $\fe he -> runProcess (setStdout (useHandleOpen h) $ setStdErr (useHandleOpen he) $ proc prog args) >>= readOnFail f fe
2021-02-26 15:31:08 +0100 <Unhammer> shouldn't withSystemTempFile ensure the file exists as long as the path and handle are in scope?
2021-02-26 15:31:22 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 276 seconds)
2021-02-26 15:31:31 +0100kuribas(~user@ptr-25vy0i6y5ai1dlzwgol.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-02-26 15:31:54 +0100 <merijn> Unhammer: No
2021-02-26 15:32:00 +0100 <geekosaur> terzievk, static linking for Haskell libs is preferred, add --dynamic if you really want dynamic linking
2021-02-26 15:32:28 +0100gr33nbits(~gr33nbits@a109-49-87-64.cpe.netcabo.pt)
2021-02-26 15:32:36 +0100 <merijn> Unhammer: Well, wait, maybe I dunno, I don't understand how that code associates
2021-02-26 15:32:36 +0100 <Unhammer> assuming I'm not actively deleting it of course
2021-02-26 15:34:04 +0100 <merijn> Unhammer: Why are you using temp files to access the output of the child process anyway?
2021-02-26 15:34:18 +0100 <merijn> Unhammer: Why not just use pipes?
2021-02-26 15:34:42 +0100 <Unhammer> I want to attach the output to an email if it's smaller than x bytes
2021-02-26 15:34:59 +0100 <merijn> That seems unrelated to the question?
2021-02-26 15:35:22 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-26 15:35:26 +0100 <merijn> You can read the data from the pipe and then do whatever you want, same as you appear to do now
2021-02-26 15:35:28 +0100 <Unhammer> I have to check the size of the output, and I don't want to keep it in memory (in case it's huge)
2021-02-26 15:35:32 +0100Tario(~Tario@201.192.165.173)
2021-02-26 15:35:54 +0100Graf_Blutwurst(~grafblutw@2001:171b:226e:adc0:e40c:bc1a:ac08:b43b) (Quit: WeeChat 3.0)
2021-02-26 15:35:56 +0100 <Unhammer> but I want the file to disappear when my whole program is done
2021-02-26 15:36:11 +0100 <terzievk> geekosaur: yes, compiling with ghc -dynamic does the job, but I was wondering if somebody knows how to tell emacs `haskell-mode` to use dynamic linking
2021-02-26 15:36:40 +0100 <geekosaur> I don't know the mode variable name offhand
2021-02-26 15:37:11 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee)
2021-02-26 15:39:50 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-26 15:40:05 +0100 <geekosaur> in any case it is probably easier to specify it as part of a cabal or stack project, as opposed to hardcoding in your config or using a local vars section in specific source files
2021-02-26 15:40:12 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-26 15:40:17 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-26 15:40:34 +0100Tario(~Tario@201.192.165.173)
2021-02-26 15:41:21 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9)
2021-02-26 15:41:48 +0100 <terzievk> geekosaur: thanks
2021-02-26 15:42:01 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-02-26 15:42:33 +0100son0p(~son0p@181.58.39.182) (Quit: leaving)
2021-02-26 15:43:15 +0100ubert(~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de) (Quit: ubert)
2021-02-26 15:43:45 +0100ubert(~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de)
2021-02-26 15:47:23 +0100borne(~fritjof@200116b864cbc80010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2021-02-26 15:51:02 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-02-26 15:52:18 +0100z0k(~user@115-186-141-91.nayatel.pk)
2021-02-26 15:53:25 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 15:54:01 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-26 15:54:20 +0100son0p(~son0p@181.136.122.143)
2021-02-26 15:56:51 +0100hackagetoo-many-cells 2.1.0.1 - Cluster single cells and analyze cell clade relationships. https://hackage.haskell.org/package/too-many-cells-2.1.0.1 (GregorySchwartz)
2021-02-26 15:57:17 +0100jacks2(~bc8134e3@217.29.117.252) (Quit: quit)
2021-02-26 15:57:51 +0100hackageghc-trace-events 0.1.2.2 - Faster traceEvent and traceMarker, and binary object logging foreventlog https://hackage.haskell.org/package/ghc-trace-events-0.1.2.2 (MitsutoshiAoe)
2021-02-26 16:01:18 +0100nek0(~nek0@mail.nek0.eu) (Quit: The Lounge - https://thelounge.chat)
2021-02-26 16:06:44 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr)
2021-02-26 16:08:41 +0100nhs(~nhs@ip68-2-235-160.ph.ph.cox.net)
2021-02-26 16:11:33 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Remote host closed the connection)
2021-02-26 16:11:47 +0100cartwright(~chatting@gateway/tor-sasl/cantstanya)
2021-02-26 16:12:44 +0100avn(~avn@78-56-108-78.static.zebra.lt)
2021-02-26 16:16:01 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-02-26 16:21:25 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds)
2021-02-26 16:22:04 +0100knupfer(~Thunderbi@i577BCEAC.versanet.de)
2021-02-26 16:23:01 +0100knupfer(~Thunderbi@i577BCEAC.versanet.de) (Client Quit)
2021-02-26 16:23:13 +0100knupfer(~Thunderbi@200116b824ff4800ec20a5b5814c5563.dip.versatel-1u1.de)
2021-02-26 16:25:04 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 16:25:10 +0100_noblegas(uid91066@gateway/web/irccloud.com/x-ifvgvksedlldsfmy)
2021-02-26 16:25:21 +0100Jd007(~Jd007@162.156.11.151)
2021-02-26 16:27:31 +0100z0k(~user@115-186-141-91.nayatel.pk) (Read error: Connection reset by peer)
2021-02-26 16:27:56 +0100Pickchea(~private@unaffiliated/pickchea)
2021-02-26 16:28:09 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 264 seconds)
2021-02-26 16:28:38 +0100z0k(~user@115-186-141-91.nayatel.pk)
2021-02-26 16:28:44 +0100crobbins(~crobbins@2600:380:b821:1504:174:cc11:b263:1220)
2021-02-26 16:30:58 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-02-26 16:31:30 +0100hiroaki__(~hiroaki@2a02:8108:8c40:2bb8:8fe4:ef1e:34cd:b814) (Remote host closed the connection)
2021-02-26 16:32:55 +0100CatWithMoustache(~CatWithMo@gateway/tor-sasl/catwithmoustache)
2021-02-26 16:33:30 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2021-02-26 16:37:22 +0100alx741(~alx741@181.196.69.27)
2021-02-26 16:38:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 16:38:03 +0100Feuermagier(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Quit: Leaving)
2021-02-26 16:38:27 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 16:39:54 +0100thunderrd(~thunderrd@183.182.115.128) (Ping timeout: 272 seconds)
2021-02-26 16:43:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2021-02-26 16:47:16 +0100xff0x(~xff0x@2001:1a81:52d0:d300:e069:1246:9742:b9dd)
2021-02-26 16:49:31 +0100ozataman(~textual@pool-100-37-221-69.phlapa.fios.verizon.net)
2021-02-26 16:52:14 +0100crobbins(~crobbins@2600:380:b821:1504:174:cc11:b263:1220) (Ping timeout: 264 seconds)
2021-02-26 16:52:45 +0100thunderrd(~thunderrd@183.182.112.145)
2021-02-26 16:56:26 +0100ddellacosta(~ddellacos@86.106.143.10)
2021-02-26 16:56:47 +0100kam1(~kam1@5.125.126.175) (Read error: Connection reset by peer)
2021-02-26 16:57:20 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net)
2021-02-26 16:57:28 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net) (Changing host)
2021-02-26 16:57:28 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2021-02-26 16:58:40 +0100 <bitmapper> is there a way to use indexed lenses with iovector?
2021-02-26 16:58:58 +0100Wuzzy(~Wuzzy@p5b0df8ea.dip0.t-ipconnect.de)
2021-02-26 16:59:31 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-26 17:00:28 +0100deviantfero(~deviantfe@190.150.27.58) (Quit: WeeChat 3.0)
2021-02-26 17:02:21 +0100aqd(~aqd@84.20.147.33) (Quit: Textual IRC Client: www.textualapp.com)
2021-02-26 17:02:24 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-26 17:02:30 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-26 17:04:26 +0100 <zebrag> When nat-transform horizontally composing `beta . alpha`, it is "beta after lifted alpha", or, "(the other)-lifted alpha after beta". I'm pretty sure I'm not mistaken there. The fact that alpha might be after beta, or equivalently, before, is mind-boggling.
2021-02-26 17:06:04 +0100 <zebrag> I'm pretty sure it's true, I've been doing the diagram chasing, but nevertheless I can't believe it.
2021-02-26 17:06:12 +0100hrdl_hrdl
2021-02-26 17:06:27 +0100 <zebrag> It just doesn't stick.
2021-02-26 17:06:39 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2021-02-26 17:07:03 +0100chisui(5882391e@mue-88-130-57-030.dsl.tropolys.de) (Ping timeout: 240 seconds)
2021-02-26 17:07:11 +0100 <infinisil> :t void . pure
2021-02-26 17:07:12 +0100 <lambdabot> Applicative f => a -> f ()
2021-02-26 17:07:42 +0100 <infinisil> Saw this in a codebase, seems entirely useless!
2021-02-26 17:08:22 +0100 <shapr> ah, the purity of the void
2021-02-26 17:08:39 +0100 <c_wraith> bitmapper: see the lens-action package
2021-02-26 17:08:46 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net)
2021-02-26 17:09:29 +0100juri_(~juri@178.63.35.222) (Ping timeout: 265 seconds)
2021-02-26 17:09:43 +0100 <bitmapper> thanks!
2021-02-26 17:10:59 +0100 <infinisil> % void . pure $ undefined
2021-02-26 17:10:59 +0100 <yahb> infinisil:
2021-02-26 17:11:10 +0100 <infinisil> Doesn't even evaluate the argument
2021-02-26 17:11:12 +0100ski. o O ( insert standard complaint about that `void' name being exported from non-FFI modules )
2021-02-26 17:11:13 +0100 <hololeap> nothing is useless
2021-02-26 17:12:23 +0100 <ski> Nothing seems pretty useful, to me
2021-02-26 17:12:36 +0100 <hololeap> although, arguably `pure ()` is butter
2021-02-26 17:12:53 +0100 <hololeap> and bread
2021-02-26 17:13:02 +0100 <hololeap> wow, good morning folks
2021-02-26 17:13:36 +0100ski. o O ( butter cake )
2021-02-26 17:13:56 +0100skiwaves
2021-02-26 17:14:22 +0100Rudd0(~Rudd0@185.189.115.103)
2021-02-26 17:14:24 +0100smitop(uid328768@gateway/web/irccloud.com/x-fvijgodnvjoivvsf)
2021-02-26 17:14:35 +0100 <remexre> is there a good way to have multiple runnable-as-main lhs files which can import things from each other?
2021-02-26 17:14:55 +0100 <remexre> would I wanna make each one a cabal executable?
2021-02-26 17:16:39 +0100 <c_wraith> that's a bit of an unexpected use case. You'd want to make each an executable no matter what, but importing from each other seems weird.
2021-02-26 17:17:28 +0100nek0(~nek0@mail.nek0.eu)
2021-02-26 17:17:35 +0100 <remexre> yeah; I've got a blog post that has an algorithm and a main function (to do some demo)
2021-02-26 17:17:53 +0100 <remexre> then a followup one that depends on it, and some misc tooling that depends on it too
2021-02-26 17:18:03 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-02-26 17:18:08 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 17:18:37 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0)
2021-02-26 17:19:56 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-02-26 17:19:57 +0100 <hololeap> does cabal let you "overlap" dirs? can a lib and an executable stanza both point to the same dir?
2021-02-26 17:20:08 +0100 <hololeap> remexre: you may have to experiment with this yourself
2021-02-26 17:20:10 +0100 <c_wraith> hololeap: yes, but it doesn't work the way you'd hope.
2021-02-26 17:20:25 +0100 <c_wraith> hololeap: it recompiles modules instead of getting them from the lib
2021-02-26 17:21:01 +0100 <c_wraith> remexre: it should all just work. the problem is just that it would recompile stuff a lot.
2021-02-26 17:21:17 +0100 <remexre> okay, I'll try that; would this be like,
2021-02-26 17:21:28 +0100 <remexre> library exposed-modules: Foo, Bar
2021-02-26 17:21:33 +0100 <remexre> executable Foo main-is: Foo.hs
2021-02-26 17:21:36 +0100 <remexre> ?
2021-02-26 17:21:46 +0100 <c_wraith> I wouldn't have a library stanze. just the executables
2021-02-26 17:21:51 +0100 <c_wraith> *stanza
2021-02-26 17:22:11 +0100 <bitmapper> c_wraith: i don't really understand how to use it tbh
2021-02-26 17:22:17 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-02-26 17:22:17 +0100jippiedoe(4dab983e@77-171-152-62.fixed.kpn.net) (Quit: Connection closed)
2021-02-26 17:22:35 +0100 <remexre> oh, sweet, that works; thanks to both y'all!
2021-02-26 17:23:01 +0100 <c_wraith> bitmapper: well, it only works for Getters and Folds. If you want to update, it doesn't do the job.
2021-02-26 17:23:40 +0100 <hololeap> what about just sticking them all in the same dir, then just using ghc directly? `module Foo where ... main = ...` ; `module Bar where ... import Foo ... main = ...`
2021-02-26 17:23:59 +0100 <hololeap> then compile Foo.hs and Bar.hs directly with ghc
2021-02-26 17:24:16 +0100 <remexre> I tried this with ghci and it was unhappy
2021-02-26 17:24:26 +0100 <remexre> er, runghc*
2021-02-26 17:25:34 +0100crobbins(~crobbins@2601:2c1:200:ec50:6092:acc2:26a1:f490)
2021-02-26 17:26:17 +0100 <hololeap> remexre: are you going to be presenting this?
2021-02-26 17:26:27 +0100 <hololeap> (just curious)
2021-02-26 17:26:38 +0100 <remexre> uh like I'm not gonna be recommending my setup to anyone else :P
2021-02-26 17:26:56 +0100 <hololeap> you said it was for some kind of demo
2021-02-26 17:28:46 +0100 <remexre> More like, I'm demoing some language's semantics in a blogpost; the haskell implementation is... relevant, but not the "cool part"
2021-02-26 17:31:44 +0100 <hololeap> oh ok. i was just wondering.
2021-02-26 17:31:58 +0100syd(~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net)
2021-02-26 17:32:58 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-02-26 17:33:37 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-02-26 17:34:50 +0100chisui(5882391e@mue-88-130-57-030.dsl.tropolys.de)
2021-02-26 17:35:26 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-26 17:36:05 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 17:36:34 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 17:37:58 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e9e3:841b:e645:b35e)
2021-02-26 17:38:00 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 265 seconds)
2021-02-26 17:38:13 +0100 <ij> I need to draw pixels on a canvas and export it as a png – juicypixels or hip?
2021-02-26 17:38:14 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-26 17:39:08 +0100 <ij> ah, I read the readmes, nvm
2021-02-26 17:42:58 +0100carlomagno(~cararell@148.87.23.6) (Quit: Leaving.)
2021-02-26 17:44:09 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-02-26 17:46:14 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Quit: Leaving)
2021-02-26 17:49:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-02-26 17:49:52 +0100knupfer(~Thunderbi@200116b824ff4800ec20a5b5814c5563.dip.versatel-1u1.de) (Read error: Connection reset by peer)
2021-02-26 17:50:06 +0100knupfer(~Thunderbi@200116b824ff48009d25b45d13597f3f.dip.versatel-1u1.de)
2021-02-26 17:50:15 +0100mayleesia(4dbf5b8f@x4dbf5b8f.dyn.telefonica.de) (Quit: Connection closed)
2021-02-26 17:50:37 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e9e3:841b:e645:b35e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 17:51:13 +0100juri_(~juri@178.63.35.222)
2021-02-26 17:53:08 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 17:53:23 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e9e3:841b:e645:b35e)
2021-02-26 17:53:48 +0100bergey(~user@107.181.19.30)
2021-02-26 17:56:07 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-26 17:56:47 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e9e3:841b:e645:b35e) (Client Quit)
2021-02-26 17:57:12 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-02-26 17:57:22 +0100 <shapr> ij: what was the answer?
2021-02-26 18:02:22 +0100bennofs_(~quassel@dslb-094-222-093-100.094.222.pools.vodafone-ip.de)
2021-02-26 18:03:17 +0100sMuNiX(~sMuNiX@lnsm2-montreal02-142-118-236-120.internet.virginmobile.ca) (Ping timeout: 256 seconds)
2021-02-26 18:03:28 +0100 <tomsmeding> for those who have set their browser (or perhaps their OS) to prefer dark mode, what do you think of my colour choices? https://paste.tomsmeding.com/ | https://paste.tomsmeding.com/FbLBhrVM
2021-02-26 18:03:54 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
2021-02-26 18:03:54 +0100srk(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2021-02-26 18:04:05 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-02-26 18:04:16 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-02-26 18:04:17 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-02-26 18:04:33 +0100carlomagno(~cararell@148.87.23.4)
2021-02-26 18:04:42 +0100darjeeling_(~darjeelin@122.245.218.150) (Ping timeout: 268 seconds)
2021-02-26 18:04:45 +0100sMuNiX(~sMuNiX@lnsm2-montreal02-142-118-236-120.internet.virginmobile.ca)
2021-02-26 18:05:37 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-26 18:05:46 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-xgujbhvivyzipvnb)
2021-02-26 18:07:01 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f)
2021-02-26 18:07:15 +0100kupi(uid212005@gateway/web/irccloud.com/x-ueszxmgrjupzjwnp) (Quit: Connection closed for inactivity)
2021-02-26 18:08:29 +0100 <swarmcollective> tomsmeding: Dark mode looks good, colour choices make the text quite readable. Thumbsup from me.
2021-02-26 18:08:48 +0100 <maerwald> is the dark mode based on the system theme?
2021-02-26 18:09:50 +0100 <NieDzejkob> yeah, it's a CSS feature known as prefers-color-scheme
2021-02-26 18:10:34 +0100 <NieDzejkob> see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme for how to enable it for firefox
2021-02-26 18:11:56 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds)
2021-02-26 18:12:32 +0100 <tomsmeding> swarmcollective: thanks! Good to hear :)
2021-02-26 18:13:50 +0100 <tomsmeding> maerwald: I don't have a manual mode toggle yet; due to the way prefers-color-scheme works that would give some duplication of css rules, and I was lazy :)
2021-02-26 18:18:23 +0100dmwit(~dmwit@pool-173-66-86-32.washdc.fios.verizon.net) (Remote host closed the connection)
2021-02-26 18:19:33 +0100 <sm[m]> looks pretty good tomsmeding
2021-02-26 18:20:21 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 264 seconds)
2021-02-26 18:20:42 +0100Tario(~Tario@201.192.165.173)
2021-02-26 18:20:57 +0100darjeeling_(~darjeelin@122.245.218.150)
2021-02-26 18:21:56 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2021-02-26 18:22:04 +0100 <tomsmeding> sm[m]: cool!
2021-02-26 18:22:42 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
2021-02-26 18:23:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 18:24:14 +0100 <brkscnce> how would you flip the arguments of a function?
2021-02-26 18:24:25 +0100 <boxscape> tomsmeding not bad, personally I'd prefer the neon green to be a little less neon green, and comments to be a bit more visible
2021-02-26 18:24:29 +0100 <koz_> :t flip
2021-02-26 18:24:31 +0100 <lambdabot> (a -> b -> c) -> b -> a -> c
2021-02-26 18:24:35 +0100 <brkscnce> neat :D
2021-02-26 18:27:10 +0100 <tomsmeding> boxscape: I'm using the monokai theme from highlightjs; I can change the colour values though, of course. Do you have a different theme you would suggest, or some changes to this one?
2021-02-26 18:27:34 +0100 <tomsmeding> If not I'll have a look after dinner
2021-02-26 18:28:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-02-26 18:28:22 +0100 <boxscape> tomsmeding hm I've just always used solarized but that's maybe a bit overdone. With the colors as is, I'd be happy if the green is a little darker and the grey used for comments a little lighter
2021-02-26 18:29:26 +0100 <CatWithMoustache> I have a list of (intA, intB) - how do i map it to a list of the larger int of the two pairs with a list comprehension?
2021-02-26 18:29:45 +0100 <CatWithMoustache> of the pair*
2021-02-26 18:30:55 +0100 <koz_> CatWithMoustache: [ max x y | (x, y) <- myList ]
2021-02-26 18:31:26 +0100 <koz_> Although I think a comprehension is unnecessary here.
2021-02-26 18:31:37 +0100 <koz_> You can just as well do something like 'uncurry max <$> myList'
2021-02-26 18:32:14 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-26 18:33:57 +0100wpcarro(sid397589@gateway/web/irccloud.com/x-cuzogimzlccgtoqb) (Ping timeout: 272 seconds)
2021-02-26 18:34:14 +0100totbwf(sid402332@gateway/web/irccloud.com/x-zjkfuwgfajmvzezn) (Ping timeout: 264 seconds)
2021-02-26 18:34:35 +0100jared-w(uid405292@gateway/web/irccloud.com/x-nwbhkmbdnnaxykxk) (Ping timeout: 272 seconds)
2021-02-26 18:34:47 +0100jared-w(uid405292@gateway/web/irccloud.com/x-izhpuwmltgyrnquq)
2021-02-26 18:34:52 +0100wpcarro(sid397589@gateway/web/irccloud.com/x-kqymfcxonhkyygxg)
2021-02-26 18:35:26 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-pvdimpwkxzjbymuk) (Ping timeout: 264 seconds)
2021-02-26 18:36:26 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-tqrynpyipoxrnkjn)
2021-02-26 18:36:41 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Ping timeout (120 seconds))
2021-02-26 18:36:57 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-26 18:37:11 +0100totbwf(sid402332@gateway/web/irccloud.com/x-wekjmtigqhueuhzk)
2021-02-26 18:40:19 +0100 <ntjns> ls
2021-02-26 18:40:27 +0100vicfred(~vicfred@unaffiliated/vicfred)
2021-02-26 18:40:35 +0100 <CatWithMoustache> koz_, can I still use max if i have a tuple of ((String, int), (String, int)) and want to keep the string int pairs together?
2021-02-26 18:40:52 +0100 <koz_> :t maximumBy
2021-02-26 18:40:54 +0100 <lambdabot> Foldable t => (a -> a -> Ordering) -> t a -> a
2021-02-26 18:40:58 +0100 <koz_> :t maxBy
2021-02-26 18:40:59 +0100 <lambdabot> error: Variable not in scope: maxBy
2021-02-26 18:41:07 +0100psutcliffe(~psutcliff@2a00:801:44b:5fb3:b852:cfd3:ade7:f24f)
2021-02-26 18:41:32 +0100 <koz_> No, that'd require some more effort.
2021-02-26 18:41:58 +0100 <koz_> Easiest would be to first define 'maxBy :: (Ord b) => (a -> b) -> a -> a -> a'
2021-02-26 18:42:06 +0100 <koz_> Then use that to write the rest.
2021-02-26 18:42:33 +0100 <koz_> Using 'maxBy snd'.
2021-02-26 18:43:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 18:44:20 +0100ADG1089__(~aditya@122.163.247.232)
2021-02-26 18:44:34 +0100terzievk(~user@78.90.139.65) (Remote host closed the connection)
2021-02-26 18:44:53 +0100nineonine(~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3)
2021-02-26 18:45:21 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 18:45:48 +0100Natch(~Natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) (Read error: Connection reset by peer)
2021-02-26 18:46:47 +0100ADG1089__(~aditya@122.163.247.232) (Client Quit)
2021-02-26 18:47:34 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-02-26 18:50:10 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
2021-02-26 18:53:18 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0)
2021-02-26 18:53:23 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f)
2021-02-26 18:54:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 18:54:40 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 18:55:28 +0100zaquest(~notzaques@5.128.210.178) (Ping timeout: 276 seconds)
2021-02-26 18:57:03 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-26 18:57:11 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f) (Client Quit)
2021-02-26 18:57:53 +0100zaquest(~notzaques@5.128.210.178)
2021-02-26 18:59:06 +0100Pickchea(~private@unaffiliated/pickchea) (Quit: Leaving)
2021-02-26 19:00:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Ping timeout (120 seconds))
2021-02-26 19:00:21 +0100hackagelinux-capabilities 0.1.0.0 - Linux capabilities Haskell data type https://hackage.haskell.org/package/linux-capabilities-0.1.0.0 (TristanCacqueray)
2021-02-26 19:00:24 +0100conal(~conal@64.71.133.70)
2021-02-26 19:00:37 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 19:01:30 +0100 <__minoru__shirae> @src Control.Monad.when
2021-02-26 19:01:30 +0100 <lambdabot> Source not found. Take a stress pill and think things over.
2021-02-26 19:02:57 +0100 <geekosaur> "@src" is a fraud
2021-02-26 19:03:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-26 19:03:22 +0100 <geekosaur> @src when
2021-02-26 19:03:23 +0100 <lambdabot> when p s = if p then s else return ()
2021-02-26 19:03:41 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 19:03:57 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2021-02-26 19:04:20 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 19:05:04 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-02-26 19:06:31 +0100__minoru__shirae(~shiraeesh@109.166.56.143) (Ping timeout: 276 seconds)
2021-02-26 19:07:24 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2021-02-26 19:08:13 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 260 seconds)
2021-02-26 19:08:36 +0100Wuzzy(~Wuzzy@p5b0df8ea.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-02-26 19:09:13 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-02-26 19:09:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-02-26 19:09:25 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2021-02-26 19:09:51 +0100esph(~weechat@unaffiliated/esph) (Ping timeout: 246 seconds)
2021-02-26 19:10:38 +0100vilpan(~0@212.117.1.172) (Quit: Leaving.)
2021-02-26 19:11:10 +0100fr33domlover(~fr33domlo@fsf/member/fr33domlover) (Quit: fr33domlover)
2021-02-26 19:12:09 +0100tzlil(~tzlil@unaffiliated/tzlil)
2021-02-26 19:13:39 +0100alx741(~alx741@181.196.69.27) (Quit: alx741)
2021-02-26 19:14:52 +0100rajivr(uid269651@gateway/web/irccloud.com/x-lipeedvqihpcwewl) (Quit: Connection closed for inactivity)
2021-02-26 19:15:16 +0100esph(~weechat@unaffiliated/esph)
2021-02-26 19:16:26 +0100 <swarmcollective> @src foldl'
2021-02-26 19:16:27 +0100 <lambdabot> foldl' f a [] = a
2021-02-26 19:16:27 +0100 <lambdabot> foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs
2021-02-26 19:18:25 +0100raym(~ray@45.64.220.3)
2021-02-26 19:20:27 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-02-26 19:20:27 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2021-02-26 19:20:27 +0100neiluj(~jco@unaffiliated/neiluj)
2021-02-26 19:21:47 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f)
2021-02-26 19:21:50 +0100fr33domlover(~fr33domlo@fsf/member/fr33domlover)
2021-02-26 19:22:24 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-02-26 19:22:39 +0100ADG1089__(~aditya@122.163.247.232)
2021-02-26 19:22:50 +0100Natch(~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se)
2021-02-26 19:23:38 +0100minoru_shiraeesh(592a3c0a@gateway/web/cgi-irc/kiwiirc.com/ip.89.42.60.10)
2021-02-26 19:24:03 +0100 <koz_> If I enable ApplicativeDo and MonadComprehensions, can I potentially get Applicative-based comprehensions?
2021-02-26 19:24:40 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 19:24:57 +0100toorevitimirp(~tooreviti@117.182.182.60) (Remote host closed the connection)
2021-02-26 19:25:20 +0100Rob60(268ce492@38.140.228.146)
2021-02-26 19:25:21 +0100 <monochrom> I think no. It is not ApplicativeComprehensions afterall.
2021-02-26 19:25:51 +0100 <geekosaur> I think the rewrite uses >>=
2021-02-26 19:26:04 +0100 <geekosaur> so it can't be Applicative
2021-02-26 19:26:10 +0100 <koz_> monochrom: My reasoning is this - MonadComprehensions desugars to do-notation, and ApplicativeDo can make (some) do-blocks only need Applicative.
2021-02-26 19:26:25 +0100 <koz_> Or am I misreading MonadComprehensions?
2021-02-26 19:26:33 +0100 <geekosaur> (specifically <- translates to >>=)
2021-02-26 19:26:39 +0100 <koz_> "Bindings are translated with the (>>=) and return functions to the usual do-notation:"
2021-02-26 19:26:41 +0100CatWithMoustache(~CatWithMo@gateway/tor-sasl/catwithmoustache) (Quit: Leaving)
2021-02-26 19:27:04 +0100 <koz_> Or does it actually mean to say 'Bindings are translated with the (>>=) and return functions to (the equivalent of) this do-notation:"?
2021-02-26 19:27:14 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 265 seconds)
2021-02-26 19:27:36 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-02-26 19:27:36 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-02-26 19:27:36 +0100mouseghost(~draco@wikipedia/desperek)
2021-02-26 19:31:14 +0100 <minoru_shiraeesh> This is weird: I typed @src Control.Monad.when, got an answer from the lambdabot and then the electricity cut off
2021-02-26 19:32:13 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2021-02-26 19:32:22 +0100 <minoru_shiraeesh> As if my actions caused it
2021-02-26 19:33:53 +0100 <geekosaur> unlikely, especially since it actually rejected yours and took mine
2021-02-26 19:34:03 +0100 <geekosaur> (because @src is a fraud)
2021-02-26 19:34:24 +0100 <koz_> geekosaur: Drat, you're right.
2021-02-26 19:34:24 +0100 <tomsmeding> minoru_shiraeesh: lambdabot not only didn't like your input, it then proceeded to take revenge
2021-02-26 19:34:32 +0100 <koz_> The docs should probably be a bit clearer on this point.
2021-02-26 19:34:33 +0100 <minoru_shiraeesh> Some weird side-effect
2021-02-26 19:34:47 +0100ADG1089__(~aditya@122.163.247.232) (Quit: Konversation terminated!)
2021-02-26 19:34:48 +0100 <monochrom> koz_: I tested and conclude that the user guide wording is poor. <- is really translated to >>= directly, not going though a do-notation intermediate.
2021-02-26 19:34:58 +0100 <koz_> (and ApplicativeComprehensions would be lovely)
2021-02-26 19:35:00 +0100redmp(~redmp@172.58.35.77)
2021-02-26 19:35:08 +0100 <monochrom> I think the time is ripe for a "do considered harmful".
2021-02-26 19:35:27 +0100 <koz_> In this case? It's 'bad documentation considered harmful' more than anything.
2021-02-26 19:35:55 +0100 <koz_> Maybe I might write a GHC proposal...
2021-02-26 19:36:04 +0100 <redmp> hello! anyone here familiar with how to use Servant.API.Generic to combine two record-apis into a single server?
2021-02-26 19:36:24 +0100 <tomsmeding> boxscape: right-hand side better? https://tomsmeding.com/ss/get/tomsmeding/lPoDSF (different theme)
2021-02-26 19:36:50 +0100 <monochrom> As usual, it is more like "<getting too used to do> considered harmful".
2021-02-26 19:36:56 +0100 <minoru_shiraeesh> Which suggests that maybe the matrix is not written in haskell, or not
2021-02-26 19:37:12 +0100 <koz_> Also, does anyone know where I can find the descriptions of the n^2 and n^3 algorithms for ApplicativeDo desugaring?
2021-02-26 19:37:20 +0100 <tomsmeding> minoru_shiraeesh: the matrix is currently written in python
2021-02-26 19:37:22 +0100 <geekosaur> tomsmeding, I prefer the right hand side, for what it's worth
2021-02-26 19:37:31 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-02-26 19:37:32 +0100 <koz_> I also prefer the right-hand side.
2021-02-26 19:37:33 +0100 <monochrom> So the confusing part is that the example in the user guide uses do-notation instead of >>=. When do-notation is completely irrelevant in the context.
2021-02-26 19:37:40 +0100 <koz_> The left one looks too electric.
2021-02-26 19:37:50 +0100 <tomsmeding> I agree
2021-02-26 19:37:52 +0100 <koz_> monochrom: Indeed.
2021-02-26 19:38:06 +0100 <tomsmeding> okay 'tomorrow night' is is :)
2021-02-26 19:38:09 +0100 <monochrom> And of course the sentence "... >>= ... do ..." simply fails to make up its mind.
2021-02-26 19:38:10 +0100 <tomsmeding> *it is
2021-02-26 19:38:13 +0100nineonine(~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection)
2021-02-26 19:38:28 +0100 <koz_> monochrom: The 'les deux' of monad-oriented syntax. :P
2021-02-26 19:38:38 +0100 <geekosaur> tomsmeding, cue https://xkcd.com/224/
2021-02-26 19:38:56 +0100nineonine(~nineonine@50.216.62.2)
2021-02-26 19:39:04 +0100 <tomsmeding> geekosaur: thanks for the due diligence
2021-02-26 19:39:45 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-02-26 19:39:49 +0100esph(~weechat@unaffiliated/esph) (Ping timeout: 272 seconds)
2021-02-26 19:40:45 +0100DataComp_(~lumeng@50.43.26.251) (Ping timeout: 256 seconds)
2021-02-26 19:41:52 +0100 <minoru_shiraeesh> tomsmeding: by matrix you mean the messenger? I was making a joke about Matrix.
2021-02-26 19:41:52 +0100 <tomsmeding> instance has been updated with new theme: https://paste.tomsmeding.com/rT6TJbdr
2021-02-26 19:42:14 +0100 <minoru_shiraeesh> Neo, Morpheus, etc
2021-02-26 19:42:35 +0100 <tomsmeding> minoru_shiraeesh: and I was deliberately misinterpreting your reference :)
2021-02-26 19:42:45 +0100 <tomsmeding> in the style of the xkcd that geekosaur linked
2021-02-26 19:43:15 +0100 <minoru_shiraeesh> Oh, multi-layer jokes
2021-02-26 19:43:17 +0100mirrorb2rd(~psutcliff@2a00:801:3f2:4b56:e93e:1663:ff0c:6c42)
2021-02-26 19:43:56 +0100DataComputist(~lumeng@50.43.26.251)
2021-02-26 19:44:44 +0100knupfer(~Thunderbi@200116b824ff48009d25b45d13597f3f.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
2021-02-26 19:45:09 +0100 <redmp> Here's what I mean record-apis: https://termbin.com/3rqc
2021-02-26 19:45:24 +0100 <redmp> I define a "parent" record API and have it contain a "child" record API
2021-02-26 19:45:27 +0100carlomagno1(~cararell@148.87.23.4)
2021-02-26 19:45:49 +0100 <redmp> But `genericServe` seems unhappy with that, even though the type of the input is correct, and the `routes AsServer` gives no error..
2021-02-26 19:45:50 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-02-26 19:46:09 +0100psutcliffe(~psutcliff@2a00:801:44b:5fb3:b852:cfd3:ade7:f24f) (Ping timeout: 272 seconds)
2021-02-26 19:46:23 +0100 <redmp> (ParentRoutes AsServer types correctly, with one field populated by ChildRoutes AsServer)
2021-02-26 19:46:56 +0100carlomagno(~cararell@148.87.23.4) (Ping timeout: 240 seconds)
2021-02-26 19:48:23 +0100minoru_shiraeesh(592a3c0a@gateway/web/cgi-irc/kiwiirc.com/ip.89.42.60.10) (Quit: Connection closed)
2021-02-26 19:48:30 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 265 seconds)
2021-02-26 19:50:21 +0100ADG1089__(~aditya@122.163.247.232)
2021-02-26 19:50:34 +0100myShoggoth(~myShoggot@75.164.81.55)
2021-02-26 19:50:52 +0100__minoru__shirae(~shiraeesh@46.34.207.247)
2021-02-26 19:51:16 +0100DataComputist(~lumeng@50.43.26.251) (Quit: Leaving...)
2021-02-26 19:51:23 +0100 <redmp> Thanks in advance, if anybody can take a look at that example :)
2021-02-26 19:51:50 +0100 <koz_> Also, does anyone know where I can find the descriptions of the n^2 and n^3 algorithms for ApplicativeDo desugaring? <-- anyone?
2021-02-26 19:52:07 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 19:52:12 +0100carlomagno(~cararell@148.87.23.4)
2021-02-26 19:52:34 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 19:53:45 +0100 <__minoru__shirae> koz_, if I'm not misunderstanding a question, you just substitute a specific applicative's bind implementation after desugaring the do notation into binds, no?
2021-02-26 19:53:57 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 19:54:08 +0100 <__minoru__shirae> wait, applicative's don't have biind
2021-02-26 19:54:10 +0100 <tomsmeding> __minoru__shirae: applicative != monad
2021-02-26 19:54:22 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236)
2021-02-26 19:54:23 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 19:54:27 +0100 <koz_> __minoru__shirae: There are, according to the GHC docs, two desugaring algorithms. One is n^2, the other, more thorough, one, n^3.
2021-02-26 19:54:32 +0100 <koz_> I wanted to know what those are.
2021-02-26 19:54:36 +0100 <tomsmeding> koz_: I assume you've already looked at https://simonmar.github.io/bib/papers/applicativedo.pdf ?
2021-02-26 19:54:48 +0100 <tomsmeding> no saying the algorithms are in there (haven't read it)
2021-02-26 19:54:53 +0100 <tomsmeding> s/^no/not/
2021-02-26 19:55:01 +0100carlomagno1(~cararell@148.87.23.4) (Ping timeout: 272 seconds)
2021-02-26 19:55:07 +0100 <koz_> tomsmeding: I have not, but that lineup is amazing.
2021-02-26 19:55:18 +0100 <tomsmeding> it is, isn't it?
2021-02-26 19:55:21 +0100 <koz_> Two Simons, an Edward and the Selective guy?
2021-02-26 19:55:25 +0100 <koz_> Sign me up.
2021-02-26 19:55:45 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 264 seconds)
2021-02-26 19:56:22 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-02-26 19:56:41 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-26 19:58:28 +0100ADG1089__(~aditya@122.163.247.232) (Remote host closed the connection)
2021-02-26 19:58:46 +0100 <tomsmeding> note the sudden appearance of game theory in the second bullet point of section 8
2021-02-26 19:59:07 +0100 <swarmcollective> tomsmeding: Yeah, the colour theme looks good.
2021-02-26 19:59:23 +0100 <swarmcollective> And, now I know I can have two files. :D
2021-02-26 19:59:45 +0100 <tomsmeding> swarmcollective: :D
2021-02-26 19:59:57 +0100 <tomsmeding> did you miss the big button? :p
2021-02-26 20:00:28 +0100emmanuel_erc(~user@cpe-74-71-106-64.nyc.res.rr.com) (Ping timeout: 276 seconds)
2021-02-26 20:02:13 +0100 <Rob60> I'm looking for haskell stars in the SF Bay Area - if you're in the market, please drop me a note at rob@banyaninfrastructure.com.
2021-02-26 20:02:19 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-26 20:02:50 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 20:02:51 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 256 seconds)
2021-02-26 20:02:52 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-26 20:02:54 +0100 <koz_> Rob60: Do you accept remote?
2021-02-26 20:02:56 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
2021-02-26 20:03:28 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-26 20:03:29 +0100 <Rob60> We're all remote now, but we're a small company and want people that can not be remote in the hopeful days ahead when Covid isn't such a thing.
2021-02-26 20:03:46 +0100 <maerwald> in 2022 :)
2021-02-26 20:03:56 +0100smitop(uid328768@gateway/web/irccloud.com/x-fvijgodnvjoivvsf) (Quit: Connection closed for inactivity)
2021-02-26 20:03:58 +0100esph(~weechat@unaffiliated/esph)
2021-02-26 20:04:05 +0100 <koz_> Rob60: Would you be good with someone who wanted to _stay_ remote?
2021-02-26 20:04:37 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 258 seconds)
2021-02-26 20:04:38 +0100 <Rob60> it wouldn't be our first choice, but I have some flexibility for the right person, of course
2021-02-26 20:04:48 +0100 <koz_> Rob60: What's the job?
2021-02-26 20:05:44 +0100 <__minoru__shirae> what do you as a company do with haskell in production, did you start with haskell, or did you move to it from another language?
2021-02-26 20:05:56 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-26 20:06:27 +0100 <Rob60> senior dev - our code started in haskell
2021-02-26 20:06:37 +0100 <Rob60> https://angel.co/company/banyan-infrastructure/jobs/1157302-senior-developer-haskell-java
2021-02-26 20:08:43 +0100chisui(5882391e@mue-88-130-57-030.dsl.tropolys.de) (Ping timeout: 240 seconds)
2021-02-26 20:08:43 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-02-26 20:10:20 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 20:10:44 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 20:11:00 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236)
2021-02-26 20:13:46 +0100geekosaur(82650c7a@130.101.12.122)
2021-02-26 20:14:18 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2021-02-26 20:14:40 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 20:18:13 +0100DataComputist(~lumeng@50.43.26.251)
2021-02-26 20:18:25 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 20:18:54 +0100 <boxscape> tomsmeding yes, thanks, right hand side is quite a bit better
2021-02-26 20:19:04 +0100 <tomsmeding> it's live :)
2021-02-26 20:19:14 +0100 <boxscape> nice
2021-02-26 20:20:16 +0100redmp(~redmp@172.58.35.77) (Ping timeout: 240 seconds)
2021-02-26 20:21:59 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-02-26 20:22:20 +0100redmp(~redmp@172.58.35.77)
2021-02-26 20:22:23 +0100hyiltiz(~quassel@unaffiliated/hyiltiz)
2021-02-26 20:24:16 +0100 <infinisil> :t foldr (<|>) empty
2021-02-26 20:24:17 +0100 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
2021-02-26 20:24:27 +0100 <infinisil> Is there some function which does that already ^?
2021-02-26 20:26:05 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-02-26 20:28:40 +0100 <tomsmeding> :t asum
2021-02-26 20:28:41 +0100 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
2021-02-26 20:28:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-26 20:28:49 +0100 <tomsmeding> infinisil: ^
2021-02-26 20:29:21 +0100 <infinisil> Oh nice
2021-02-26 20:29:41 +0100 <infinisil> Wasn't there a type signature search in lambdabot
2021-02-26 20:30:26 +0100 <swarmcollective> @hoogle t (f a) -> f a
2021-02-26 20:30:27 +0100 <lambdabot> No results found
2021-02-26 20:31:28 +0100 <__minoru__shirae> @hoogle (Foldable t, Alternative f) => t (f a) -> f a
2021-02-26 20:31:29 +0100 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
2021-02-26 20:31:29 +0100 <lambdabot> Protolude asum :: (Foldable t, Alternative f) => t (f a) -> f a
2021-02-26 20:31:29 +0100 <lambdabot> BasePrelude asum :: (Foldable t, Alternative f) => t (f a) -> f a
2021-02-26 20:31:55 +0100 <tomsmeding> infinisil: which also exists as a web service: https://hoogle.haskell.org/
2021-02-26 20:32:21 +0100hackagebitwise-enum 1.0.1.0 - Bitwise operations on bounded enumerations https://hackage.haskell.org/package/bitwise-enum-1.0.1.0 (jnbooth)
2021-02-26 20:32:28 +0100 <infinisil> Ohh I have been using hoogle for a while but never used that
2021-02-26 20:33:31 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 20:33:35 +0100 <__minoru__shirae> a question regarding "when" function: how does it short-circuit? I'm trying to desugar a do block with "when" inside, and I don't see how.
2021-02-26 20:34:01 +0100 <tomsmeding> @src when
2021-02-26 20:34:02 +0100 <lambdabot> when p s = if p then s else return ()
2021-02-26 20:34:12 +0100kam1(~kam1@5.125.126.175)
2021-02-26 20:34:12 +0100 <__minoru__shirae> do when p (return "a"); return "b"
2021-02-26 20:34:30 +0100 <tomsmeding> = when p (return "a") >> return "b"
2021-02-26 20:34:36 +0100 <geekosaur> it doesn't really short-circuit, were you thinking of guard?
2021-02-26 20:34:44 +0100 <tomsmeding> = (if p then return "a" else return ()) >> return "b"
2021-02-26 20:34:48 +0100 <redmp> i found a solution to the problem i was having before
2021-02-26 20:35:13 +0100 <__minoru__shirae> (if p then return "a" else return ()) >>= \_ -> return "b"
2021-02-26 20:35:16 +0100 <__minoru__shirae> right?
2021-02-26 20:35:36 +0100 <redmp> the solution is to convert the record-apis types to normal api types and then combine them as siblings (not through composition) same as how you would combine normal apis q
2021-02-26 20:35:39 +0100 <redmp> https://termbin.com/0t72
2021-02-26 20:35:49 +0100 <redmp> hope that helps if anybody has the same question; cheers
2021-02-26 20:36:08 +0100 <tomsmeding> __minoru__shirae: true, that means the same thing
2021-02-26 20:36:18 +0100 <geekosaur> __minoru__shirae, you already have a type error there (unless you have some funky extensions and instances in scope)
2021-02-26 20:36:23 +0100ozataman(~textual@pool-100-37-221-69.phlapa.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-02-26 20:36:43 +0100 <monochrom> Again, it doesn't short-circuit, not in my sense of the word.
2021-02-26 20:37:17 +0100 <__minoru__shirae> how does it ignore the rest of the do-block when the condition is met?
2021-02-26 20:37:22 +0100 <geekosaur> it doesn't
2021-02-26 20:37:24 +0100 <monochrom> It doesn't.
2021-02-26 20:38:08 +0100 <geekosaur> I'll ask again: are you thinking of guard?
2021-02-26 20:38:27 +0100 <__minoru__shirae> hmm, but it won't run IO actions if they are after when and the condition is met, right?
2021-02-26 20:38:41 +0100 <monochrom> Have you tested?
2021-02-26 20:38:48 +0100 <__minoru__shirae> I'm reading about continuations and callCC
2021-02-26 20:38:56 +0100 <geekosaur> hoo boy
2021-02-26 20:38:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 20:39:06 +0100 <monochrom> That's not IO.
2021-02-26 20:39:21 +0100 <__minoru__shirae> and "when" is used in the examples
2021-02-26 20:39:23 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 20:39:59 +0100mirrorb2rd(~psutcliff@2a00:801:3f2:4b56:e93e:1663:ff0c:6c42) (Ping timeout: 272 seconds)
2021-02-26 20:40:08 +0100 <monochrom> Has it occurred to you that maybe it's callCC that does the skipping?
2021-02-26 20:40:15 +0100 <tomsmeding> % do when True (putStrLn "abc") ; putStrLn "def"
2021-02-26 20:40:16 +0100 <yahb> tomsmeding: abc; def
2021-02-26 20:40:40 +0100 <__minoru__shirae> oh, I midunderstood the logic of when, then
2021-02-26 20:40:46 +0100alx741(~alx741@181.196.69.27)
2021-02-26 20:41:31 +0100 <monochrom> It's every 1st-year STEM student's common sense that if you have two moving parts, you can't just pick one of them and blame everything on it.
2021-02-26 20:42:56 +0100 <tomsmeding> monochrom: do you mean that it _should be_ every 1st-year stem studen's common sense, or that is _is_?
2021-02-26 20:43:14 +0100geekosauris always wary of "common sense"
2021-02-26 20:43:22 +0100 <monochrom> hehe
2021-02-26 20:43:44 +0100 <tomsmeding> because the former, sure, but the latter, no way :p
2021-02-26 20:46:44 +0100cntrl(~cntrl@p200300ea6f413600978678b2fc08a449.dip0.t-ipconnect.de)
2021-02-26 20:47:51 +0100hackagexlsx 0.8.3 - Simple and incomplete Excel file parser/writer https://hackage.haskell.org/package/xlsx-0.8.3 (KirillZaborsky)
2021-02-26 20:48:06 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-02-26 20:49:24 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 265 seconds)
2021-02-26 20:50:32 +0100 <redmp> I created an issue (for documentation) about the above servant question that I had. If you want to chime in, here's the link: https://github.com/haskell-servant/servant/issues/1394
2021-02-26 20:51:18 +0100cntrl(~cntrl@p200300ea6f413600978678b2fc08a449.dip0.t-ipconnect.de) (Client Quit)
2021-02-26 20:53:41 +0100xff0x(~xff0x@2001:1a81:52d0:d300:e069:1246:9742:b9dd) (Ping timeout: 258 seconds)
2021-02-26 20:53:41 +0100cntrl(~cntrl@p200300ea6f413600978678b2fc08a449.dip0.t-ipconnect.de)
2021-02-26 20:54:30 +0100xff0x(~xff0x@2001:1a81:52d0:d300:4228:6d0f:7477:ec73)
2021-02-26 20:54:38 +0100cntrl(~cntrl@p200300ea6f413600978678b2fc08a449.dip0.t-ipconnect.de) (Client Quit)
2021-02-26 20:55:56 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 21:00:21 +0100hackagezip-stream 0.2.1.0 - ZIP archive streaming using conduits https://hackage.haskell.org/package/zip-stream-0.2.1.0 (DylanSimon)
2021-02-26 21:00:57 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236)
2021-02-26 21:01:21 +0100hackagetasty-bench 0.2.2 - Featherlight benchmark framework https://hackage.haskell.org/package/tasty-bench-0.2.2 (Bodigrim)
2021-02-26 21:01:36 +0100syd(~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-02-26 21:03:52 +0100Rob60(268ce492@38.140.228.146) (Quit: Connection closed)
2021-02-26 21:05:03 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-26 21:05:28 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 276 seconds)
2021-02-26 21:06:55 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-02-26 21:07:15 +0100petersen(~petersen@redhat/juhp)
2021-02-26 21:09:58 +0100kipras(~Kipras@78-56-235-39.static.zebra.lt)
2021-02-26 21:10:31 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-26 21:11:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-02-26 21:11:56 +0100juri_(~juri@178.63.35.222) (Ping timeout: 240 seconds)
2021-02-26 21:12:40 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 21:13:06 +0100Wuzzy(~Wuzzy@p5790e341.dip0.t-ipconnect.de)
2021-02-26 21:15:13 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr)
2021-02-26 21:15:27 +0100lolololppppp(68ab32ea@104.171.50.234)
2021-02-26 21:16:17 +0100 <lolololppppp> how would you write foldL using foldR in haskell? I have tried for many hours but i do not know
2021-02-26 21:17:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-26 21:18:06 +0100lolololppppp(68ab32ea@104.171.50.234) (Client Quit)
2021-02-26 21:18:11 +0100 <davean> lolololppppp: ok, so whats the relation between foldL and foldR?
2021-02-26 21:18:50 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e)
2021-02-26 21:21:06 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-02-26 21:21:29 +0100fendor_(~fendor@91.141.0.74.wireless.dyn.drei.com)
2021-02-26 21:23:01 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds)
2021-02-26 21:23:52 +0100terzievk(~user@78.90.139.65)
2021-02-26 21:24:58 +0100fendor(~fendor@178.115.128.24.wireless.dyn.drei.com) (Ping timeout: 276 seconds)
2021-02-26 21:25:18 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Quit: ...zzzZZZ)
2021-02-26 21:25:58 +0100jneira(501e6551@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.101.81) (Ping timeout: 260 seconds)
2021-02-26 21:26:10 +0100averell(~averell@unaffiliated/averell) (Remote host closed the connection)
2021-02-26 21:27:45 +0100 <terzievk> `ghcup install ghc` finished with `GHC installation successful`, but i get `bash: ghc: command not found`. However installing cabal the same way works fine. What am I missing?
2021-02-26 21:29:10 +0100averell(~averell@unaffiliated/averell)
2021-02-26 21:29:24 +0100averell(~averell@unaffiliated/averell) (Remote host closed the connection)
2021-02-26 21:29:37 +0100 <maerwald[m]> terzievk: ghcup set ghc 8.10.4
2021-02-26 21:29:55 +0100averell(~averell@unaffiliated/averell)
2021-02-26 21:30:17 +0100 <maerwald[m]> Also see `ghcup tui`
2021-02-26 21:30:45 +0100kipras(~Kipras@78-56-235-39.static.zebra.lt) (Read error: Connection reset by peer)
2021-02-26 21:31:27 +0100 <Uniaika> the TUI is <3
2021-02-26 21:31:39 +0100 <terzievk> well, 8.10.4 is installed, but ghcup set does nothing. Should I add something to my bash_profile?
2021-02-26 21:32:44 +0100 <Uniaika> terzievk: yes, I prepend this to my PATH
2021-02-26 21:32:45 +0100 <Uniaika> GHCUP_PATH="${HOME}/.ghcup/bin"
2021-02-26 21:33:23 +0100emmanuel_erc(~user@2603-7000-9600-01c9-c589-d024-9ed2-1840.res6.spectrum.com)
2021-02-26 21:33:29 +0100hiroaki_(~hiroaki@2a02:908:4b18:8c40:417b:587b:f9ad:a890)
2021-02-26 21:33:52 +0100juri_(~juri@178.63.35.222)
2021-02-26 21:34:27 +0100 <maerwald[m]> terzievk: `source ~/.ghcup/env`
2021-02-26 21:35:07 +0100 <maerwald[m]> Did you install the binary manually?
2021-02-26 21:35:28 +0100 <maerwald[m]> Usually the installation explains those steps
2021-02-26 21:35:36 +0100ukari(~ukari@unaffiliated/ukari) (Ping timeout: 240 seconds)
2021-02-26 21:37:03 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds)
2021-02-26 21:37:08 +0100vchlup_(~vchlup@115.128.broadband17.iol.cz)
2021-02-26 21:37:47 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 21:37:47 +0100 <terzievk> I have no .ghcup/env directory; I got ghcup-hs-bin from AUR, which links to here https://gitlab.haskell.org/haskell/ghcup-hs
2021-02-26 21:38:10 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 21:39:23 +0100 <maerwald[m]> terzievk: https://aur.archlinux.org/cgit/aur.git/tree/ghcup-hs-bin.install?h=ghcup-hs-bin
2021-02-26 21:39:37 +0100 <maerwald[m]> There is a post install message explaining it
2021-02-26 21:39:39 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 246 seconds)
2021-02-26 21:39:53 +0100_noblegas(uid91066@gateway/web/irccloud.com/x-ifvgvksedlldsfmy) (Quit: Connection closed for inactivity)
2021-02-26 21:40:28 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 21:41:23 +0100orion(~orion@c-76-19-236-20.hsd1.ct.comcast.net)
2021-02-26 21:41:23 +0100orion(~orion@c-76-19-236-20.hsd1.ct.comcast.net) (Changing host)
2021-02-26 21:41:23 +0100orion(~orion@unaffiliated/orion)
2021-02-26 21:43:03 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-02-26 21:43:25 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-26 21:43:43 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-26 21:43:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-26 21:44:09 +0100hexagenic(~mattias@81-224-116-201-no71.tbcn.telia.com)
2021-02-26 21:44:17 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-02-26 21:44:31 +0100 <terzievk> maerwald[m]: how did you find this
2021-02-26 21:44:45 +0100 <maerwald[m]> terzievk: magic
2021-02-26 21:45:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 21:45:54 +0100 <maerwald[m]> The XDG option might be more popular for arch users
2021-02-26 21:46:12 +0100 <maerwald[m]> I remember they're into that
2021-02-26 21:46:51 +0100 <hexagenic> We're into what now?
2021-02-26 21:47:26 +0100 <maerwald[m]> :D
2021-02-26 21:47:36 +0100 <terzievk> maerwald[m]: thanks :)
2021-02-26 21:48:12 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-26 21:48:23 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 272 seconds)
2021-02-26 21:48:27 +0100 <maerwald[m]> hexagenic: https://wiki.archlinux.org/index.php/XDG_Base_Directory
2021-02-26 21:48:40 +0100 <hexagenic> Yes, we're into that
2021-02-26 21:49:15 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-26 21:49:36 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-26 21:50:53 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Client Quit)
2021-02-26 21:51:16 +0100zebrag(~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
2021-02-26 21:51:42 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-02-26 21:53:04 +0100 <hexagenic> But who isn't into a wellstrcutured home directory?
2021-02-26 21:53:58 +0100 <terzievk> and now I have to learn what XDG is :d
2021-02-26 21:55:00 +0100 <geekosaur> it's a specification for unixlike desktop machines. in this case specifically it's the base directory specification, which says where applications should put their files
2021-02-26 21:55:06 +0100sujeet(sujeet@unaffiliated/freeboson) (Quit: bye)
2021-02-26 21:55:15 +0100 <geekosaur> https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
2021-02-26 21:55:17 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 21:55:41 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 21:56:02 +0100 <geekosaur> ("XDG" is "X11 Desktop Group" which was the forerunner of the current standards group)
2021-02-26 21:56:36 +0100 <davean> Weird, here I thought GNOME was ;)
2021-02-26 21:56:49 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 276 seconds)
2021-02-26 21:57:09 +0100geekosaurrefuses to go there
2021-02-26 21:58:31 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-02-26 21:59:03 +0100 <hexagenic> To Gnome?
2021-02-26 21:59:48 +0100 <geekosaur> I have Opinions about RH more or less becoming the Linux world's Microsoft
2021-02-26 22:00:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-02-26 22:00:50 +0100forgottenone(~forgotten@176.42.27.254) (Quit: Konversation terminated!)
2021-02-26 22:01:35 +0100 <maerwald[m]> Well, in his early days Lennart tried with standards. But at one point he gave up on them
2021-02-26 22:02:52 +0100soft-warm(44695313@ip68-105-83-19.sd.sd.cox.net)
2021-02-26 22:04:00 +0100knupfer(~Thunderbi@200116b824ff48008ca8ba96c8c7f12e.dip.versatel-1u1.de)
2021-02-26 22:04:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-26 22:05:58 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-02-26 22:06:05 +0100jyp(~user@155.4.127.210)
2021-02-26 22:06:18 +0100emmanuel_erc(~user@2603-7000-9600-01c9-c589-d024-9ed2-1840.res6.spectrum.com) (Read error: Connection reset by peer)
2021-02-26 22:06:28 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-02-26 22:07:18 +0100 <merijn> I know you meant formal standards, but I'm going to pretend you meant engineering standards ;)
2021-02-26 22:09:03 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-02-26 22:10:36 +0100conal(~conal@64.71.133.70)
2021-02-26 22:12:38 +0100chrpape(~user@2a01:4f9:c010:632d::1)
2021-02-26 22:13:09 +0100 <maerwald[m]> Whatever works for bashing Lennart :p
2021-02-26 22:15:53 +0100nineonine(~nineonine@50.216.62.2)
2021-02-26 22:17:49 +0100nineonin_(~nineonine@50.216.62.2)
2021-02-26 22:19:56 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 240 seconds)
2021-02-26 22:23:53 +0100 <terzievk> came for advice, stayed for the jokes
2021-02-26 22:23:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 22:24:50 +0100sujeet(sujeet@unaffiliated/freeboson)
2021-02-26 22:27:52 +0100Rob38(268ce492@38.140.228.146)
2021-02-26 22:30:20 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:d121:eb35:d957:d1dd)
2021-02-26 22:32:06 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-26 22:32:32 +0100geekosaur(82650c7a@130.101.12.122) (Quit: Connection closed)
2021-02-26 22:32:45 +0100tafa(~tafa@vps-83a5c612.vps.ovh.net)
2021-02-26 22:33:59 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
2021-02-26 22:34:53 +0100son0p(~son0p@181.136.122.143)
2021-02-26 22:35:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-02-26 22:36:13 +0100hexagenic(~mattias@81-224-116-201-no71.tbcn.telia.com) (Quit: WeeChat 1.9.1)
2021-02-26 22:37:38 +0100akasha(~user@unaffiliated/akasha)
2021-02-26 22:38:14 +0100dmwit(~dmwit@pool-173-66-86-32.washdc.fios.verizon.net)
2021-02-26 22:38:57 +0100ixlun(~user@213.205.241.237)
2021-02-26 22:40:37 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-26 22:40:48 +0100kam1(~kam1@5.125.126.175) (Remote host closed the connection)
2021-02-26 22:41:21 +0100errst(~errst@unaffiliated/tirej) (Ping timeout: 264 seconds)
2021-02-26 22:41:29 +0100 <ixlun> Hi all, quick question. I've got data EvalM = StateT (Map String Obj) IO, and I'm trying to do: 'doEval obj = eval obj >>= lift print'
2021-02-26 22:41:42 +0100 <ixlun> However, for some reason lift print doesn't typecheck
2021-02-26 22:42:05 +0100 <ixlun> where doEval :: Eval ()
2021-02-26 22:42:12 +0100kam1(~kam1@5.125.126.175)
2021-02-26 22:42:45 +0100 <ixlun> oops, doEval :: EvalM ()
2021-02-26 22:44:31 +0100Rob38(268ce492@38.140.228.146) (Quit: Connection closed)
2021-02-26 22:45:01 +0100banyanRob(268ce492@38.140.228.146)
2021-02-26 22:45:42 +0100geyaeb(~geyaeb@gateway/tor-sasl/geyaeb)
2021-02-26 22:46:04 +0100 <ixlun> I'm guessing that '>>=' doesn't do what I think it does on a transformed monad
2021-02-26 22:46:10 +0100geyaeb_(~geyaeb@gateway/tor-sasl/geyaeb) (Remote host closed the connection)
2021-02-26 22:46:52 +0100frozenErebus(~frozenEre@94.128.219.166) (Ping timeout: 276 seconds)
2021-02-26 22:46:56 +0100alx741(~alx741@181.196.69.27) (Ping timeout: 240 seconds)
2021-02-26 22:47:10 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 22:47:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 22:47:37 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-26 22:48:36 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-02-26 22:51:43 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2021-02-26 22:52:23 +0100Tops2(~Tobias@dyndsl-095-033-090-206.ewe-ip-backbone.de)
2021-02-26 22:53:12 +0100dirediresalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-02-26 22:56:06 +0100heatsink(~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
2021-02-26 22:56:31 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 265 seconds)
2021-02-26 22:56:33 +0100 <monochrom> lift . print
2021-02-26 22:57:04 +0100 <monochrom> For beginners it is best to not write pointfreely. Then everything makes sense.
2021-02-26 22:57:16 +0100 <monochrom> eval obj >>= \x -> lift (print x)
2021-02-26 22:57:35 +0100lawid(~quassel@dslb-090-186-099-002.090.186.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-02-26 22:58:14 +0100ubert(~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-02-26 22:58:41 +0100lawid(~quassel@dslb-090-186-099-002.090.186.pools.vodafone-ip.de)
2021-02-26 22:59:49 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 23:00:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 23:00:16 +0100alx741(~alx741@186.178.108.37)
2021-02-26 23:02:16 +0100 <ixlun> Ah, yeah that makes sense. Thanks monochrom
2021-02-26 23:04:44 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 265 seconds)
2021-02-26 23:05:35 +0100rndnoise(~rndnoise@136.32.107.152)
2021-02-26 23:06:36 +0100 <rndnoise> /query NickServ
2021-02-26 23:06:51 +0100hackageyesod-markdown 0.12.6.4 - Tools for using markdown in a yesod application https://hackage.haskell.org/package/yesod-markdown-0.12.6.4 (PatrickBrisbin)
2021-02-26 23:06:56 +0100sm2n(~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca) (Ping timeout: 240 seconds)
2021-02-26 23:07:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-26 23:07:06 +0100banyanRob(268ce492@38.140.228.146) (Quit: Connection closed)
2021-02-26 23:08:09 +0100rndnoise(~rndnoise@136.32.107.152) ()
2021-02-26 23:09:06 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 246 seconds)
2021-02-26 23:12:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-02-26 23:13:16 +0100frozenErebus(~frozenEre@94.128.219.166)
2021-02-26 23:13:23 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-26 23:14:15 +0100kam1(~kam1@5.125.126.175) (Remote host closed the connection)
2021-02-26 23:14:20 +0100apache8080(~rishi@wsip-70-168-153-252.oc.oc.cox.net)
2021-02-26 23:14:48 +0100kam1(~kam1@5.125.126.175)
2021-02-26 23:16:28 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-26 23:16:49 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
2021-02-26 23:18:41 +0100mp___(mp@hell.cx) (Remote host closed the connection)
2021-02-26 23:18:58 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net)
2021-02-26 23:21:50 +0100kam1(~kam1@5.125.126.175) (Remote host closed the connection)
2021-02-26 23:22:15 +0100kam1(~kam1@5.125.126.175)
2021-02-26 23:23:07 +0100 <ij> shapr, well, since hip uses juicypixels and juicypixels says it's a serialization library, it seems like hip has more power and is more general and probably also more convenient
2021-02-26 23:23:35 +0100fendor_(~fendor@91.141.0.74.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-02-26 23:24:32 +0100mp___(mp@hell.cx)
2021-02-26 23:24:50 +0100michalz(~user@185.246.204.61) (Remote host closed the connection)
2021-02-26 23:27:45 +0100terzievk(~user@78.90.139.65) (Remote host closed the connection)
2021-02-26 23:27:50 +0100rndnoise(~rndnoise@136.32.107.152)
2021-02-26 23:28:28 +0100ixlun(~user@213.205.241.237) (Ping timeout: 276 seconds)
2021-02-26 23:29:05 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr)
2021-02-26 23:29:48 +0100merelyme(~merelyme@192.154.196.18)
2021-02-26 23:30:21 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
2021-02-26 23:31:52 +0100theelous3(~theelous3@unaffiliated/theelous3)
2021-02-26 23:32:04 +0100conal(~conal@64.71.133.70)
2021-02-26 23:32:27 +0100neiluj(~jco@unaffiliated/neiluj) (Quit: leaving)
2021-02-26 23:34:40 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-02-26 23:38:13 +0100jyp(~user@155.4.127.210) (Ping timeout: 276 seconds)
2021-02-26 23:39:20 +0100ezrakilty(~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
2021-02-26 23:39:28 +0100knupfer(~Thunderbi@200116b824ff48008ca8ba96c8c7f12e.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-02-26 23:39:51 +0100merelyme(~merelyme@192.154.196.18) (Ping timeout: 272 seconds)
2021-02-26 23:41:57 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
2021-02-26 23:43:10 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2021-02-26 23:43:31 +0100catt(~r@31.127.31.99) (Remote host closed the connection)
2021-02-26 23:43:47 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:d121:eb35:d957:d1dd) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-26 23:48:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-26 23:48:38 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-26 23:49:27 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-02-26 23:53:49 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 276 seconds)
2021-02-26 23:57:50 +0100Narinas(~Narinas@187.250.25.111.dsl.dyn.telnor.net)
2021-02-26 23:58:12 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-02-26 23:58:36 +0100conal(~conal@64.71.133.70)
2021-02-26 23:59:01 +0100myShoggoth(~myShoggot@75.164.81.55) (Ping timeout: 276 seconds)
2021-02-26 23:59:37 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)