2021/06/29

2021-06-29 00:01:11 +0200neurocyte3(~neurocyte@45.136.170.15)
2021-06-29 00:01:11 +0200neurocyte3(~neurocyte@45.136.170.15) (Changing host)
2021-06-29 00:01:11 +0200neurocyte3(~neurocyte@user/neurocyte)
2021-06-29 00:02:12 +0200neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 272 seconds)
2021-06-29 00:02:12 +0200neurocyte3neurocyte
2021-06-29 00:04:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Remote host closed the connection)
2021-06-29 00:04:56 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-29 00:05:17 +0200michalz(~michalz@185.246.204.125) (Remote host closed the connection)
2021-06-29 00:05:57 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-29 00:06:28 +0200ukari(~ukari@user/ukari)
2021-06-29 00:08:12 +0200aerona(~aerona@2600:6c54:4600:f300:1ad6:7928:ce15:e184) (Quit: Leaving)
2021-06-29 00:08:43 +0200neo(~neo3@cpe-292712.ip.primehome.com) (Remote host closed the connection)
2021-06-29 00:08:50 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-06-29 00:13:11 +0200myShoggoth(~myShoggot@75.164.51.64)
2021-06-29 00:17:15 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-06-29 00:17:23 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 00:20:23 +0200MidAutumnMoon(~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
2021-06-29 00:20:25 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at)
2021-06-29 00:20:58 +0200MidAutumnMoon(~MidAutumn@user/midautumnmoon)
2021-06-29 00:26:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-29 00:29:57 +0200guest61(~xxx@47.245.54.240) (Remote host closed the connection)
2021-06-29 00:30:09 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-06-29 00:31:03 +0200guest61(~xxx@47.245.54.240)
2021-06-29 00:31:16 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-06-29 00:31:57 +0200guest61(~xxx@47.245.54.240) (Read error: Connection reset by peer)
2021-06-29 00:32:09 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
2021-06-29 00:32:48 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2021-06-29 00:33:04 +0200guest61(~xxx@47.245.54.240)
2021-06-29 00:33:17 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-06-29 00:34:57 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-06-29 00:38:36 +0200meltedbrain_y2k(~tekserf@31.4.247.86)
2021-06-29 00:39:12 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-06-29 00:39:22 +0200 <lbseale> I'd like to wrap a plain Map type in a newtype (for safety), but does that mean I have to re-implement any the general functions for Maps for it?
2021-06-29 00:39:44 +0200 <dminuoso> Depends. You can also coerce your way through.
2021-06-29 00:39:57 +0200 <dminuoso> But that sort of breaks the encapsulation you're hoping for.
2021-06-29 00:39:57 +0200 <lbseale> is this even a good idea?
2021-06-29 00:40:06 +0200 <dminuoso> Hard to say without knowing your reasoning.
2021-06-29 00:40:11 +0200 <lbseale> lol right, that's what I was wondering
2021-06-29 00:40:50 +0200 <lbseale> my reasoning is that I want to have many types that are, fundamentally, Map String Double
2021-06-29 00:41:17 +0200 <dminuoso> lbseale: Relatedly, this might be a worthy read https://lexi-lambda.github.io/blog/2020/11/01/names-are-not-type-safety/
2021-06-29 00:41:20 +0200 <lbseale> and I wouldn't want to mix them up, which would be possible if I just used type synonyms
2021-06-29 00:41:42 +0200 <dminuoso> That being said, you can also just pattern match/deconstruct upon map usage.
2021-06-29 00:42:02 +0200 <lbseale> dminuoso: thanks I'll read this
2021-06-29 00:42:06 +0200 <dminuoso> Say `f (ThingMap m) = M.lookup "foo" m`
2021-06-29 00:42:29 +0200 <dminuoso> Together with as-patterns, this can work nicely. At least it will provide some small barrier against mistakingly passing in the wrong map
2021-06-29 00:42:56 +0200 <geekosaur> there's also e.g. newtype-ing the String which might work better than with the Map
2021-06-29 00:43:43 +0200 <lbseale> geekosaur: that's a good idea, I'll consider that
2021-06-29 00:44:02 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
2021-06-29 00:44:50 +0200 <lbseale> thanks guys, this channel is always so helpful
2021-06-29 00:46:28 +0200chris_(~chris@81.96.113.213)
2021-06-29 00:46:40 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-06-29 00:46:47 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 268 seconds)
2021-06-29 00:46:48 +0200 <monochrom> Hrm, is this correlated to someone's recent blog post promoting using dictionaries for record types?
2021-06-29 00:46:50 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-06-29 00:48:26 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 272 seconds)
2021-06-29 00:49:14 +0200 <lbseale> monochrom: I'm curious about that, do you have a link to it?
2021-06-29 00:49:27 +0200 <monochrom> No, I just overheard conversations.
2021-06-29 00:49:58 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-06-29 00:51:42 +0200ormaaj(~ormaaj@2001:470:69fc:105::35ca)
2021-06-29 00:52:41 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 00:54:11 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-06-29 00:54:30 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection)
2021-06-29 00:54:47 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-06-29 00:59:22 +0200Sgeo_(~Sgeo@ool-18b9875e.dyn.optonline.net) (Quit: Leaving)
2021-06-29 00:59:38 +0200Sgeo(~Sgeo@user/sgeo)
2021-06-29 01:00:24 +0200bilegeek(~bilegeek@2600:1008:b015:3e96:6f34:1a42:6ac5:3b86) (Quit: Leaving)
2021-06-29 01:00:54 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 252 seconds)
2021-06-29 01:05:25 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-29 01:05:42 +0200parzema(~parzema@124.188.206.3) (Quit: Client closed)
2021-06-29 01:07:57 +0200ham(~ham4@user/ham) (Ping timeout: 265 seconds)
2021-06-29 01:09:20 +0200jneira_(~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) (Ping timeout: 272 seconds)
2021-06-29 01:12:52 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-06-29 01:13:26 +0200cjb(~cjb@user/cjb)
2021-06-29 01:15:29 +0200ormaaj(~ormaaj@2001:470:69fc:105::35ca) (Changing host)
2021-06-29 01:15:29 +0200ormaaj(~ormaaj@user/ormaaj)
2021-06-29 01:16:34 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-29 01:16:50 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-29 01:19:01 +0200P1RATEZ(piratez@user/p1ratez) ()
2021-06-29 01:19:23 +0200ormaaj(~ormaaj@user/ormaaj) (Quit: Reconnecting)
2021-06-29 01:21:22 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2021-06-29 01:21:41 +0200brian_da_mageBrianmancer
2021-06-29 01:21:44 +0200jao(jao@gateway/vpn/protonvpn/jao)
2021-06-29 01:27:17 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-29 01:28:38 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
2021-06-29 01:29:23 +0200meltedbrain_y2k(~tekserf@31.4.247.86) ()
2021-06-29 01:31:48 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-06-29 01:34:30 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds)
2021-06-29 01:37:16 +0200ham(~ham4@user/ham)
2021-06-29 01:37:25 +0200benin0369(~benin@183.82.205.231)
2021-06-29 01:38:44 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-06-29 01:42:05 +0200ham2(~ham4@d8D8627D5.access.telenet.be)
2021-06-29 01:42:54 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 268 seconds)
2021-06-29 01:43:34 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-29 01:43:43 +0200ham(~ham4@user/ham) (Ping timeout: 265 seconds)
2021-06-29 01:43:58 +0200TheRAt(~TheRAt@user/therat) (Read error: Connection reset by peer)
2021-06-29 01:45:26 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 272 seconds)
2021-06-29 01:46:24 +0200zaquest(~notzaques@5.128.210.178)
2021-06-29 01:49:18 +0200biberu(~biberu@user/biberu) (Quit: ZNC - https://znc.in)
2021-06-29 01:50:16 +0200TheRAt(~TheRAt@user/therat)
2021-06-29 01:51:39 +0200biberu(~biberu@user/biberu)
2021-06-29 01:52:29 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds)
2021-06-29 01:53:44 +0200TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-06-29 01:54:55 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 01:55:55 +0200ellie2(~ellie@user/ellie)
2021-06-29 01:55:57 +0200emergence9(~emergence@vm0.max-p.me)
2021-06-29 01:56:14 +0200dustinm(~dustinm@static.38.6.217.95.clients.your-server.de) (Ping timeout: 244 seconds)
2021-06-29 01:56:45 +0200davean(~davean@davean.sciesnet.net) (Ping timeout: 244 seconds)
2021-06-29 01:57:16 +0200Natch(~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 244 seconds)
2021-06-29 01:57:16 +0200pippijn(~pippijn@ra.xinutec.org) (Ping timeout: 244 seconds)
2021-06-29 01:57:43 +0200pippijn(~pippijn@ra.xinutec.org)
2021-06-29 01:57:47 +0200ellie(~ellie@user/ellie) (Ping timeout: 244 seconds)
2021-06-29 01:57:47 +0200sshine(~simon@hubris.eta.solutions) (Ping timeout: 244 seconds)
2021-06-29 01:57:47 +0200emergence(~emergence@vm0.max-p.me) (Ping timeout: 244 seconds)
2021-06-29 01:57:48 +0200emergence9emergence
2021-06-29 01:57:48 +0200ellie2ellie
2021-06-29 01:58:36 +0200davean(~davean@davean.sciesnet.net)
2021-06-29 01:58:47 +0200sshine(~simon@hubris.eta.solutions)
2021-06-29 01:59:03 +0200dustinm(~dustinm@static.38.6.217.95.clients.your-server.de)
2021-06-29 01:59:38 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
2021-06-29 02:01:02 +0200juhp(~juhp@bb116-14-48-29.singnet.com.sg) (Ping timeout: 252 seconds)
2021-06-29 02:01:25 +0200Natch(~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
2021-06-29 02:01:45 +0200wagle(~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2021-06-29 02:02:15 +0200wagle(~wagle@quassel.wagle.io)
2021-06-29 02:04:33 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-29 02:04:51 +0200pottsy(~pottsy@2400:4050:b560:3700:3771:db3b:d61e:48f1) (Quit: Leaving)
2021-06-29 02:08:39 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-06-29 02:09:42 +0200myShoggoth(~myShoggot@75.164.51.64) (Ping timeout: 268 seconds)
2021-06-29 02:10:52 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-29 02:11:47 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-29 02:12:40 +0200killsushi(~killsushi@user/killsushi) (Ping timeout: 272 seconds)
2021-06-29 02:13:36 +0200ormaaj(~ormaaj@user/ormaaj)
2021-06-29 02:16:45 +0200sekun_(~sekun@180.190.223.119)
2021-06-29 02:22:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 02:30:56 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-06-29 02:34:43 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 02:36:09 +0200dka(~code-is-a@ns3059207.ip-193-70-33.eu) (Ping timeout: 250 seconds)
2021-06-29 02:37:42 +0200dka(~code-is-a@ns3059207.ip-193-70-33.eu)
2021-06-29 02:39:11 +0200derelict(~derelict@user/derelict) (Ping timeout: 250 seconds)
2021-06-29 02:39:25 +0200srid[m]sridonhiatus[m]
2021-06-29 02:47:23 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-06-29 02:47:27 +0200renzhi(~xp@2607:fa49:655f:a700::3902) (Quit: WeeChat 2.3)
2021-06-29 02:49:36 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 02:55:49 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 02:56:12 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f)
2021-06-29 02:56:53 +0200derelict(~derelict@user/derelict)
2021-06-29 02:57:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-29 02:57:00 +0200td_(~td@muedsl-82-207-238-133.citykom.de) (Ping timeout: 272 seconds)
2021-06-29 03:00:00 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 03:00:12 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 03:05:08 +0200berberman(~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-29 03:05:13 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-06-29 03:05:38 +0200DNH(~DNH@8.43.122.6)
2021-06-29 03:05:56 +0200berberman(~berberman@user/berberman)
2021-06-29 03:06:22 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 03:06:40 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 03:06:47 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 03:07:40 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-06-29 03:08:20 +0200td_(~td@muedsl-82-207-238-108.citykom.de)
2021-06-29 03:17:02 +0200bgamari(~bgamari@2001:470:e438::1) (Ping timeout: 272 seconds)
2021-06-29 03:17:19 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
2021-06-29 03:20:50 +0200xff0x(~xff0x@2001:1a81:537a:a200:e696:8622:74d:d095) (Ping timeout: 272 seconds)
2021-06-29 03:22:11 +0200xff0x(~xff0x@2001:1a81:53b8:a100:fc31:6f5c:5a37:95a)
2021-06-29 03:22:20 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 272 seconds)
2021-06-29 03:24:22 +0200acidjnk(~acidjnk@p200300d0c72b9537492df79c17753059.dip0.t-ipconnect.de)
2021-06-29 03:25:37 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 03:28:48 +0200bgamari(~bgamari@72.65.101.148)
2021-06-29 03:30:15 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-06-29 03:35:03 +0200wei2912(~wei2912@112.199.250.21)
2021-06-29 03:42:49 +0200DNH(~DNH@8.43.122.6) (Quit: Textual IRC Client: www.textualapp.com)
2021-06-29 03:43:39 +0200sm2n_(~sm2n@user/sm2n)
2021-06-29 03:44:23 +0200mpt(~tom@2a02:908:1862:49e0::5)
2021-06-29 03:45:06 +0200sekun_(~sekun@180.190.223.119) (Remote host closed the connection)
2021-06-29 03:46:16 +0200sm2n(~sm2n@user/sm2n) (Ping timeout: 252 seconds)
2021-06-29 03:50:50 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 03:50:58 +0200neurocyte4(~neurocyte@212.232.83.109)
2021-06-29 03:50:58 +0200neurocyte4(~neurocyte@212.232.83.109) (Changing host)
2021-06-29 03:50:58 +0200neurocyte4(~neurocyte@user/neurocyte)
2021-06-29 03:51:31 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-06-29 03:52:31 +0200juhp(~juhp@128.106.188.66)
2021-06-29 03:54:47 +0200neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 258 seconds)
2021-06-29 03:54:47 +0200neurocyte4neurocyte
2021-06-29 03:55:40 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 272 seconds)
2021-06-29 03:59:21 +0200acidjnk(~acidjnk@p200300d0c72b9537492df79c17753059.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-06-29 04:01:08 +0200bgamari(~bgamari@72.65.101.148) (Read error: Connection reset by peer)
2021-06-29 04:01:49 +0200bgamari(~bgamari@72.65.101.148)
2021-06-29 04:02:16 +0200mpt(~tom@2a02:908:1862:49e0::5) (Ping timeout: 268 seconds)
2021-06-29 04:08:18 +0200elf_fortrez(~elf_fortr@adsl-72-50-4-48.prtc.net)
2021-06-29 04:16:38 +0200m7zs3gzw(~m7zs3gzw@178.155.4.15)
2021-06-29 04:17:03 +0200m7zs3gzw(~m7zs3gzw@178.155.4.15) (Remote host closed the connection)
2021-06-29 04:21:17 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 04:23:45 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 04:23:59 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 04:24:07 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 04:24:15 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-06-29 04:25:03 +0200killsushi(~killsushi@2607:fea8:3d40:767:85b5:8a20:d1dc:7eb1)
2021-06-29 04:25:03 +0200killsushi(~killsushi@2607:fea8:3d40:767:85b5:8a20:d1dc:7eb1) (Changing host)
2021-06-29 04:25:03 +0200killsushi(~killsushi@user/killsushi)
2021-06-29 04:30:01 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 04:30:21 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-06-29 04:30:21 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (copper.libera.chat (Nickname regained by services)))
2021-06-29 04:30:21 +0200finn_elijaFinnElija
2021-06-29 04:30:51 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Remote host closed the connection)
2021-06-29 04:33:06 +0200td_(~td@muedsl-82-207-238-108.citykom.de) (Ping timeout: 268 seconds)
2021-06-29 04:34:51 +0200td_(~td@94.134.91.158)
2021-06-29 04:35:41 +0200sheepduck(~sheepduck@user/sheepduck)
2021-06-29 04:36:17 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-06-29 04:37:26 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 04:37:40 +0200Guest33(~textual@c-107-4-204-12.hsd1.mn.comcast.net)
2021-06-29 04:38:17 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 04:38:34 +0200elf_fortrez(~elf_fortr@adsl-72-50-4-48.prtc.net) (Ping timeout: 246 seconds)
2021-06-29 04:38:46 +0200Guest33(~textual@c-107-4-204-12.hsd1.mn.comcast.net) (Client Quit)
2021-06-29 04:41:37 +0200mpt(~tom@2a02:908:1862:49e0::5)
2021-06-29 04:42:04 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 268 seconds)
2021-06-29 04:42:28 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 04:43:25 +0200Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-06-29 04:43:48 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-29 04:46:40 +0200mpt(~tom@2a02:908:1862:49e0::5) (Ping timeout: 268 seconds)
2021-06-29 04:53:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 04:54:58 +0200jao(jao@gateway/vpn/protonvpn/jao) (Ping timeout: 258 seconds)
2021-06-29 04:57:31 +0200 <Boarders> Does anyone know in the GHC api I can lookup the class name of the Eq class for instance?
2021-06-29 04:57:50 +0200 <Boarders> there is a method tcLookupClass but it requires that I pass in a Name
2021-06-29 04:58:02 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
2021-06-29 04:59:34 +0200y04nn(~y04nn@91.193.4.106) (Ping timeout: 258 seconds)
2021-06-29 05:02:46 +0200Izem(~Izem@bras-base-london1483w-grc-42-65-95-172-41.dsl.bell.ca)
2021-06-29 05:08:20 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-29 05:08:56 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 05:10:38 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 272 seconds)
2021-06-29 05:12:35 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-29 05:13:10 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-06-29 05:13:29 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-06-29 05:15:57 +0200Izem(~Izem@bras-base-london1483w-grc-42-65-95-172-41.dsl.bell.ca) (Quit: Connection closed)
2021-06-29 05:18:15 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 05:19:03 +0200myShoggoth(~myShoggot@75.164.51.64)
2021-06-29 05:21:21 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1)
2021-06-29 05:21:55 +0200sus(thelounge@user/zeromomentum)
2021-06-29 05:23:19 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 272 seconds)
2021-06-29 05:24:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 05:24:38 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-06-29 05:26:32 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-06-29 05:27:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-29 05:32:45 +0200alx741(~alx741@186.178.109.202) (Quit: alx741)
2021-06-29 05:40:36 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-06-29 05:41:02 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2021-06-29 05:41:50 +0200Lord_of_Life_Lord_of_Life
2021-06-29 05:42:33 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 05:44:39 +0200funsafe(~funsafe@2601:1c1:4200:938f:4e1e:fc56:b28f:5ac7) (Ping timeout: 250 seconds)
2021-06-29 05:47:06 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 05:50:42 +0200myShoggoth(~myShoggot@75.164.51.64) (Ping timeout: 265 seconds)
2021-06-29 05:54:10 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-06-29 05:55:14 +0200 <qrpnxz> it occured to me that you could use a right-associative fold and the list constructor to visit a non-functor like Data.Set and get the results (and effects) back out. Thanks to laziness it would be fully streaming, not actual list generated, and you could feed that stream right back into some kind of fromList constructor, linearly back into the set; then i realized this is probably like a "no-duh, that's w
2021-06-29 05:55:15 +0200 <qrpnxz> hat toList and fromList is for" from experienced haskellers hahaha, but still, it was nice to realize that. List are such a super power, they are really streams and nondeterminism. Vectors are for actual linear storage.
2021-06-29 05:57:42 +0200 <jophish> "lists are control flow"
2021-06-29 05:58:27 +0200 <qrpnxz> most important thing to know about foldr are is that it doesn't mean (from the right). I have to keep beating that into my head
2021-06-29 05:58:39 +0200cjb(~cjb@user/cjb) (Quit: brb)
2021-06-29 05:59:03 +0200 <qrpnxz> dunno why i used parens as quotes there sorry about that lol
2021-06-29 06:02:11 +0200cjb(~cjb@user/cjb)
2021-06-29 06:02:16 +0200boxscape_(~boxscape_@p4ff0ba7a.dip0.t-ipconnect.de)
2021-06-29 06:02:28 +0200 <boxscape_> well, unless you had some fusion rules that would still generate a list, no?
2021-06-29 06:02:30 +0200 <boxscape_> lazily, yes
2021-06-29 06:02:44 +0200 <boxscape_> but the runtime will allocate memory for the constructors and such
2021-06-29 06:05:15 +0200 <boxscape_> ...though being lazy does mean it probably gets away with constant memory for that list
2021-06-29 06:05:27 +0200 <qrpnxz> right
2021-06-29 06:07:59 +0200 <Axman6> depends on if the foldr/toList definition gets inlined or not - if the consuming function immediately deconstructs the list, then you'd likely get "fusion" from... the case of known constructor optimisation, IIRC
2021-06-29 06:08:31 +0200 <boxscape_> hm, I see
2021-06-29 06:09:16 +0200 <Axman6> foo [] = 0; foo (x:xs) = x + foo xs; foo (toList someSet is basically going to give you the same result as if you'd done foldr (a b -> a + b) 0 someSet (hopefully)
2021-06-29 06:17:45 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-06-29 06:18:13 +0200hendursaga(~weechat@user/hendursaga)
2021-06-29 06:18:46 +0200 <qrpnxz> just did a little test and compared to a program that builds a big set and then prints it's size, one that that builds a big set, toList, maps, fromList, and then prints it's size, the latter only used 40% more memory. Not double, amazin!
2021-06-29 06:18:53 +0200 <qrpnxz> and certainly not triple
2021-06-29 06:18:55 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-29 06:19:22 +0200 <Axman6> I'm surprised it used more actually
2021-06-29 06:19:59 +0200 <qrpnxz> i'm very impressed it didn't use double cause it can't really reasonable reuse the first set can it? That's hella impressive if that's what it is doing
2021-06-29 06:27:38 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2021-06-29 06:27:57 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-06-29 06:31:18 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 265 seconds)
2021-06-29 06:31:40 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-29 06:33:14 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-06-29 06:36:02 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
2021-06-29 06:36:13 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-06-29 06:38:33 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-06-29 06:42:12 +0200shanemikel_(~shanemike@desk.roadwar.net) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-06-29 06:43:03 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 06:43:47 +0200shanemikel(~shanemike@desk.roadwar.net)
2021-06-29 06:53:03 +0200 <Axman6> one of the many nice things you can do with pure functions - inlining them is always "safe", and when inlined you can see things like case statements being directly applied to known constructors - so code like case (x:xs) of (y:ys) -> ...; [] -> can eb simplified to never allocate that (:)
2021-06-29 06:53:22 +0200 <Axman6> that's the main reason I was surprised it even used 40% more memory
2021-06-29 06:55:22 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 06:56:35 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 06:58:17 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net)
2021-06-29 07:02:38 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-06-29 07:02:51 +0200juhp(~juhp@128.106.188.66)
2021-06-29 07:04:09 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-06-29 07:07:33 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 265 seconds)
2021-06-29 07:09:22 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.2)
2021-06-29 07:18:03 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 07:18:08 +0200 <Maxdamantus> I imagine the main determiner there would be whether they're statically resolvable, not whether their pure.
2021-06-29 07:18:37 +0200 <Maxdamantus> Impure functions can be inlined to achieve the same benefits.
2021-06-29 07:19:01 +0200 <Maxdamantus> s/\<their\>/they're/
2021-06-29 07:19:58 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 07:21:52 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-06-29 07:22:33 +0200sayola(~vekto@dslb-088-078-152-192.088.078.pools.vodafone-ip.de) (Ping timeout: 258 seconds)
2021-06-29 07:23:22 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-06-29 07:24:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 07:24:42 +0200 <qrpnxz> Axman6, well remember i built a second set with the same number of elements as the first set. If it somehow freed the first set immediately, that's impressive, if it somehow reused that set to build the second, that impressive. If i were to do toList and then do length rather than just measure the size directly, then indeed in that case it uses the exact amount of memory. And it does! I just tested it.
2021-06-29 07:26:52 +0200jneira(~jneira@212.8.115.226)
2021-06-29 07:28:11 +0200 <Axman6> right - depends on if that initial set even existed at all to begin with too
2021-06-29 07:28:42 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-29 07:30:05 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 268 seconds)
2021-06-29 07:31:14 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-06-29 07:31:26 +0200v01d4lph4(~v01d4lph4@122.160.65.250)
2021-06-29 07:31:26 +0200v01d4lph4(~v01d4lph4@122.160.65.250) (Changing host)
2021-06-29 07:31:26 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-29 07:31:27 +0200 <qrpnxz> it surely does since streaming into length allocated the memory. I reckon Data.Set is too opaque to go as far as optimizing Set.fromList [] & toList away without an explicit rewrite rule
2021-06-29 07:32:52 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-06-29 07:33:10 +0200azeem(~azeem@dynamic-adsl-94-34-9-28.clienti.tiscali.it) (Ping timeout: 268 seconds)
2021-06-29 07:36:25 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-29 07:40:01 +0200derelict(~derelict@user/derelict)
2021-06-29 07:42:01 +0200 <qrpnxz> i sometimes see little pounds signs in stdlib code that idk what it does, like in the nice implementation of foldr with foldMap, it has a place that does (Endo #. f), what's happening here?
2021-06-29 07:42:22 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-29 07:42:31 +0200 <qrpnxz> or like Int# -> Int# what is that?
2021-06-29 07:44:20 +0200Axman6(~Axman6@user/axman6) (Remote host closed the connection)
2021-06-29 07:44:29 +0200 <c_wraith> Those are different things. #. is just a normal operator named #.
2021-06-29 07:44:42 +0200Axman6(~Axman6@user/axman6)
2021-06-29 07:44:50 +0200 <c_wraith> Int# is special, though. You need an extension, -XMagicHash, to use it.
2021-06-29 07:45:27 +0200 <c_wraith> The symbol doesn't have any intrinsic meaning, but it's part of a convention that internal low-level types have names that end with #
2021-06-29 07:46:07 +0200 <c_wraith> In particular, Int# is the low-level type that's actually a binary value.
2021-06-29 07:46:09 +0200 <c_wraith> @src Int
2021-06-29 07:46:10 +0200 <lambdabot> data Int = I# Int#
2021-06-29 07:46:23 +0200 <boxscape_> (btw to be clear once you have -XMagicHash you can also have user-defined names ending in #, so it's not restricted to built-in usages)
2021-06-29 07:47:15 +0200 <qrpnxz> ah, what's (Endo #. f) mean then?
2021-06-29 07:47:29 +0200 <c_wraith> Whatever #. is defined to mean.
2021-06-29 07:47:42 +0200 <c_wraith> ... that's probably the newtype-aware composition operator
2021-06-29 07:47:56 +0200 <c_wraith> But really, you should be looking at the imports for that one
2021-06-29 07:48:15 +0200 <qrpnxz> good idea let me see
2021-06-29 07:48:50 +0200 <c_wraith> It's probably https://hackage.haskell.org/package/profunctors-5.6.2/docs/Data-Profunctor-Unsafe.html#v:-35-.
2021-06-29 07:49:09 +0200 <c_wraith> But make sure that profunctors is actually involved
2021-06-29 07:50:25 +0200 <qrpnxz> 🤨️
2021-06-29 07:50:29 +0200 <qrpnxz> absolutely galaxy brain
2021-06-29 07:50:39 +0200 <qrpnxz> everything about coerce seems inscrutable
2021-06-29 07:51:24 +0200 <qrpnxz> i've noted fmapdefault and foldmap default are coercions of traverse, kind of mind blowing
2021-06-29 07:52:21 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-06-29 07:52:27 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-06-29 07:52:48 +0200 <qrpnxz> ahhhhh (#.) ≡ \_ -> \p -> p `seq` rmap coerce p
2021-06-29 07:53:52 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it)
2021-06-29 07:54:23 +0200cjb(~cjb@user/cjb) (Quit: end of day)
2021-06-29 07:55:54 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz)
2021-06-29 07:56:36 +0200killsushi(~killsushi@user/killsushi) (Read error: Connection reset by peer)
2021-06-29 07:57:43 +0200killsushi(~killsushi@user/killsushi)
2021-06-29 07:58:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-29 08:01:00 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-29 08:01:28 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 252 seconds)
2021-06-29 08:03:18 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 08:08:02 +0200pagnol(~user@202.155.216.98)
2021-06-29 08:08:07 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-29 08:08:18 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it)
2021-06-29 08:09:03 +0200Guest6(~Guest6@106.240.249.42)
2021-06-29 08:09:39 +0200Guest6(~Guest6@106.240.249.42) (Client Quit)
2021-06-29 08:10:29 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-06-29 08:11:05 +0200michalz(~michalz@185.246.204.122)
2021-06-29 08:12:42 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-06-29 08:13:02 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-06-29 08:15:34 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-29 08:18:38 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 08:23:48 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-06-29 08:26:04 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it)
2021-06-29 08:26:20 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 272 seconds)
2021-06-29 08:29:18 +0200wei2912(~wei2912@112.199.250.21)
2021-06-29 08:33:18 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-29 08:34:32 +0200Axman6(~Axman6@user/axman6) (Remote host closed the connection)
2021-06-29 08:34:59 +0200Axman6(~Axman6@user/axman6)
2021-06-29 08:42:45 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-29 08:48:53 +0200biberu(~biberu@user/biberu) (Quit: ZNC - https://znc.in)
2021-06-29 08:54:27 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it)
2021-06-29 08:54:31 +0200biberu(~biberu@user/biberu)
2021-06-29 08:55:55 +0200 <guest61> Could not load module ‘Network.HTTP.Types’, It is a member of the hidden package ‘http-types-0.12.3’.
2021-06-29 08:56:01 +0200 <guest61> how to solve this?
2021-06-29 08:59:18 +0200 <guest61> cabal install —lib http-types, got it
2021-06-29 08:59:52 +0200 <Axman6> generally that means you need to add it as a dependency in the cabal file
2021-06-29 08:59:54 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 09:00:54 +0200 <guest61> yes, but I forget how to generate a cabal file
2021-06-29 09:01:00 +0200 <guest61> cabal init?
2021-06-29 09:01:27 +0200 <guest61> cabal v1 v2 v3, which we should use?
2021-06-29 09:01:30 +0200 <guest61> :)
2021-06-29 09:02:15 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-06-29 09:02:26 +0200 <dminuoso> guest61: Which cabal version do you have?
2021-06-29 09:03:01 +0200 <guest61> cabal-install version 3.4.0.0
2021-06-29 09:03:10 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-06-29 09:03:39 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-29 09:04:17 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-06-29 09:04:30 +0200 <dminuoso> Then all relevant commands use v2- style
2021-06-29 09:04:49 +0200 <dminuoso> For init, it was always and still is `cabal init` in the appropriate directory
2021-06-29 09:05:17 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-06-29 09:06:04 +0200 <guest61> ok
2021-06-29 09:14:55 +0200derelict(~derelict@user/derelict) (Ping timeout: 268 seconds)
2021-06-29 09:17:10 +0200pagnol(~user@202.155.216.98) (Ping timeout: 258 seconds)
2021-06-29 09:18:32 +0200sheepduck(~sheepduck@user/sheepduck) (Quit: Konversation terminated!)
2021-06-29 09:18:39 +0200acidjnk(~acidjnk@p200300d0c72b953738da50577290d8ed.dip0.t-ipconnect.de)
2021-06-29 09:23:45 +0200pagnol(~user@014198154145.ctinets.com)
2021-06-29 09:24:10 +0200chele(~chele@user/chele)
2021-06-29 09:24:19 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 09:25:14 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-06-29 09:25:24 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 268 seconds)
2021-06-29 09:26:38 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net)
2021-06-29 09:26:59 +0200kuribas(~user@ptr-25vy0i8agiojdg3pjev.18120a2.ip6.access.telenet.be)
2021-06-29 09:29:12 +0200neurocyte(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-06-29 09:29:17 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-06-29 09:30:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 09:31:06 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) (Ping timeout: 265 seconds)
2021-06-29 09:31:14 +0200 <kuribas> I have PR from a guy, removing all bounds on my cabal dependencies...
2021-06-29 09:31:21 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 258 seconds)
2021-06-29 09:31:35 +0200 <sclv> lol
2021-06-29 09:31:55 +0200 <kuribas> Aren't you supposed to have both lower and upper bounds on all dependencies?
2021-06-29 09:32:04 +0200 <sclv> yes
2021-06-29 09:32:17 +0200 <sclv> http://pvp.haskell.org
2021-06-29 09:32:24 +0200oxide(~lambda@user/oxide) (Ping timeout: 252 seconds)
2021-06-29 09:32:34 +0200neurocyte4(~neurocyte@212.232.83.109)
2021-06-29 09:32:34 +0200neurocyte4(~neurocyte@212.232.83.109) (Changing host)
2021-06-29 09:32:34 +0200neurocyte4(~neurocyte@user/neurocyte)
2021-06-29 09:32:42 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-06-29 09:33:11 +0200ec(~ec@gateway/tor-sasl/ec)
2021-06-29 09:34:28 +0200oxide(~lambda@user/oxide)
2021-06-29 09:43:20 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-29 09:45:02 +0200fendor(~fendor@77.119.197.237.wireless.dyn.drei.com)
2021-06-29 09:54:10 +0200 <maerwald[m]> kuribas: no
2021-06-29 09:54:21 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) (Ping timeout: 258 seconds)
2021-06-29 09:55:02 +0200azeem(~azeem@176.201.40.58)
2021-06-29 09:55:03 +0200 <maerwald[m]> The only restriction that hackage makes is requiring an upper bound on base
2021-06-29 09:57:23 +0200 <delYsid> What does (# ..., ... #) actually do?
2021-06-29 09:57:28 +0200azeem(~azeem@176.201.40.58) (Read error: Connection reset by peer)
2021-06-29 09:57:42 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it)
2021-06-29 09:57:56 +0200cfricke(~cfricke@user/cfricke)
2021-06-29 09:58:01 +0200 <maerwald[m]> Luckily < 9000 works too
2021-06-29 09:58:16 +0200 <delYsid> Used it in three places where I thought it might help, two didnt do much to the runtime, and one place gave me 25% speedup! So now I wonder how it actually works exactly
2021-06-29 09:59:38 +0200 <delYsid> I am guessing the tuple has no thunk, right? Whats the difference to !(..., ...)?
2021-06-29 09:59:51 +0200 <boxscape_> https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/primitives.html#unboxed-tuples "When an unboxed tuple is returned, the components are put directly into registers or on the stack; the unboxed tuple itself does not have a composite representation"
2021-06-29 10:01:00 +0200matsurago(~matsurago@p0111337-vcngn.tkyo.nt.ngn.ppp.ocn.ne.jp)
2021-06-29 10:02:37 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-06-29 10:03:01 +0200 <xerox> whereas the standard tuple has two pointers
2021-06-29 10:03:21 +0200 <delYsid> ahh, thanks
2021-06-29 10:04:00 +0200dunj3(~dunj3@p200300f61714a693595934ba002cc8b5.dip0.t-ipconnect.de)
2021-06-29 10:05:17 +0200cfricke(~cfricke@user/cfricke) (Read error: Connection reset by peer)
2021-06-29 10:05:50 +0200 <delYsid> A somewhat related question. When I last looked at the underlying type behind Word64, it looked like I need CPP to support 32bit platforms. I recently saw a commit in GHC which touched a lot of code around Data.Word. Is there a W64# in some GHC version that does not need CPP? Or did I understand things completely wrong anyway?
2021-06-29 10:05:59 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-06-29 10:06:34 +0200hendursa1(~weechat@user/hendursaga)
2021-06-29 10:07:24 +0200haskl(~haskl@user/haskl)
2021-06-29 10:08:19 +0200 <merijn> delYsid: Why do you need CPP to support 32bit platforms?
2021-06-29 10:08:25 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-06-29 10:08:30 +0200 <[exa]> delYsid: AFAIK Word64 should work on 32b platforms, it's just not going to be really fast
2021-06-29 10:08:50 +0200 <merijn> delYsid: The implementation fo Word32/64/etc. are platform dependent
2021-06-29 10:09:15 +0200Aleci[m](~alecilibr@2001:470:69fc:105::32e7) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200siraben(~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200kadoban(~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200carmysilna(~brightly-@2001:470:69fc:105::2190) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200peddie(~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200sm[m](~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:15 +0200psydroid(~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:16 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200jophish(~jophish@2001:470:69fc:105::670) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200bb010g(~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200tomferon[m](~tomferon@2001:470:69fc:105::268) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200sridonhiatus[m](~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200amesgen[m](~amesgenam@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a9c) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200unrooted(~unrooted@2001:470:69fc:105::a4a) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200gxt(~gxt@2001:470:69fc:105::3513) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:17 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:18 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:18 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:18 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:20 +0200boxscape(~boxscape@user/boxscape) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:20 +0200ormaaj(~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:20 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:21 +0200Guest4696(~sylveonma@2001:470:69fc:105::2d95) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:23 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:24 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:24 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:24 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:25 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:28 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:28 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:29 +0200Soft(~soft-matr@2001:470:69fc:105::c75) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:29 +0200ixlun(~ixlun@2001:470:69fc:105::41b3) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:29 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:29 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:29 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:29 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:29 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:29 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9) (Quit: Bridge terminating on SIGTERM)
2021-06-29 10:09:37 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-06-29 10:10:19 +0200 <kuribas> maerwald: I mean, what is recommended, not what is enforced by hackage.
2021-06-29 10:10:37 +0200 <merijn> kuribas: There's always those people
2021-06-29 10:10:53 +0200 <merijn> kuribas: "this gets in the way of what I want right now, so I'm gonna remove it"
2021-06-29 10:11:14 +0200 <merijn> kuribas: I once had a PR from someone who marked all my foreign imports as "unsafe", because he read a blog that said it was faster
2021-06-29 10:11:23 +0200 <kuribas> merijn: yeah, they could just like... move the upper bound?
2021-06-29 10:11:58 +0200 <kuribas> merijn: as if you didn't think about it...
2021-06-29 10:12:04 +0200 <merijn> kuribas: Probably a stack user who is like "but I don't wanna deal with this, so I'm gonna make *everyone else* deal with it"
2021-06-29 10:12:13 +0200 <delYsid> merijn: I'd like to use Word64# instead of Word64 to improve performance, since my Word64 really never needs to be lazy...
2021-06-29 10:12:17 +0200 <kuribas> hehe, that's *exactly* what he said :)
2021-06-29 10:12:37 +0200 <merijn> kuribas: My approach to people like that is "fuck 'em"
2021-06-29 10:12:43 +0200 <delYsid> But reading though GHC.Word, it looks like that might only work on certain platforms?
2021-06-29 10:12:55 +0200 <[exa]> delYsid: not sure you'll gain much performance by that, just like, decrease portability
2021-06-29 10:13:05 +0200 <merijn> I don't think it will
2021-06-29 10:13:12 +0200 <merijn> it should work on all platforms
2021-06-29 10:13:18 +0200 <merijn> You can't use any of the Num functions, though
2021-06-29 10:14:12 +0200 <merijn> delYsid: GHC already has optimisations to make numeric value strict of it detects them being used in tight loops
2021-06-29 10:14:15 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:cf3c:697d:723b:8aac)
2021-06-29 10:14:50 +0200 <[exa]> delYsid: that said, if you're trying to optimize this stuff, you really really should have a look at the generated code to see where the bottleneck is
2021-06-29 10:16:01 +0200 <delYsid> [exa]: Good point. that would be stg, right?
2021-06-29 10:16:05 +0200 <[exa]> from what I've seen, it's quite unlikely to be in the numbers, unless your usecase is about running 1 word64-specific instruction in a tight loop
2021-06-29 10:16:09 +0200 <merijn> delYsid: Core, probably
2021-06-29 10:16:10 +0200 <kuribas> merijn: quote "When you're using a resolver like Stackage, you already know all the packages build with each other. If your package builds too, then it probably works. I've found that this tends to be more future-proof and avoids the need to constantly bump the bounds to keep things working."
2021-06-29 10:16:31 +0200 <merijn> kuribas: Yeah, don't do that
2021-06-29 10:16:42 +0200 <delYsid> [exa]: Well, in the end, I indeed only do xor on these words...
2021-06-29 10:16:46 +0200 <[exa]> delYsid: good question. Core is pretty readable, Stg and c-- can still be "parsed" and you can see if there's some wrapping that doesn't make sense
2021-06-29 10:17:12 +0200 <merijn> kuribas: It's in fact, less future proof, because future version of *any* of your dependencies can release a breaking change in the future, retro-actively breaking all the old versions
2021-06-29 10:17:27 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-29 10:17:29 +0200 <merijn> delYsid: Also, have you heard of our lord and saviour speedscope?
2021-06-29 10:17:36 +0200 <[exa]> if it's slow, I'd guess it's doing some allocation in the tight loop, which should be avoidable
2021-06-29 10:17:38 +0200 <kuribas> merijn: didn't bytestring make breaking changes?
2021-06-29 10:17:50 +0200 <[exa]> +1 for merijn's speedscope :D
2021-06-29 10:17:51 +0200 <merijn> kuribas: Everything makes breaking changes at some point
2021-06-29 10:17:52 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-29 10:18:13 +0200 <merijn> delYsid: See https://speedscope.app/ and https://mpickering.github.io/posts/2019-11-07-hs-speedscope.html
2021-06-29 10:18:36 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2021-06-29 10:20:05 +0200 <delYsid> Gah, would love to, but this stuff is likely inaccessible. As are the other tools which make a postscript file out of the ghc profiling output... All pretty much unusable to me as a text mode person :-(
2021-06-29 10:20:17 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2021-06-29 10:20:53 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-29 10:21:19 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2021-06-29 10:21:22 +0200feliix42(~felix@gibbs.uberspace.de) (Ping timeout: 272 seconds)
2021-06-29 10:21:30 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 244 seconds)
2021-06-29 10:21:33 +0200AWizzArd(~code@user/awizzard) (Ping timeout: 250 seconds)
2021-06-29 10:21:54 +0200noctux(~noctux@user/noctux) (Ping timeout: 252 seconds)
2021-06-29 10:21:59 +0200 <delYsid> I guess I will try to figure out how to generate core and read that.
2021-06-29 10:22:28 +0200Arahael(~arahael@60-240-135-223.tpgi.com.au)
2021-06-29 10:23:23 +0200 <boxscape_> -ddump-simpl
2021-06-29 10:23:33 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-06-29 10:26:17 +0200cfricke(~cfricke@user/cfricke)
2021-06-29 10:26:38 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 10:29:44 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-29 10:30:11 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-06-29 10:31:24 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-06-29 10:34:25 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-06-29 10:35:05 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-29 10:35:53 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr)
2021-06-29 10:37:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Remote host closed the connection)
2021-06-29 10:39:06 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-06-29 10:41:49 +0200ec(~ec@gateway/tor-sasl/ec)
2021-06-29 10:42:31 +0200motte_(~weechat@82.131.74.160.cable.starman.ee) (Ping timeout: 272 seconds)
2021-06-29 10:43:45 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-29 10:49:59 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 10:52:37 +0200offpics(~offpics@89-79-56-128.dynamic.chello.pl)
2021-06-29 10:53:48 +0200neurocyte4(~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
2021-06-29 11:01:33 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 11:06:15 +0200acidjnk(~acidjnk@p200300d0c72b953738da50577290d8ed.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-06-29 11:06:32 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-06-29 11:09:16 +0200Guest21(~Guest21@mob-5-90-96-69.net.vodafone.it)
2021-06-29 11:11:37 +0200dhil(~dhil@195.213.192.47)
2021-06-29 11:14:01 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-06-29 11:16:05 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-29 11:17:22 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
2021-06-29 11:18:00 +0200oxide(~lambda@user/oxide) (Ping timeout: 252 seconds)
2021-06-29 11:19:30 +0200sayola(~vekto@dslb-088-078-152-192.088.078.pools.vodafone-ip.de)
2021-06-29 11:19:52 +0200oxide(~lambda@user/oxide)
2021-06-29 11:23:05 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version)
2021-06-29 11:23:30 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 240 seconds)
2021-06-29 11:25:23 +0200Guest21(~Guest21@mob-5-90-96-69.net.vodafone.it) (Quit: Client closed)
2021-06-29 11:27:30 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 256 seconds)
2021-06-29 11:29:43 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 11:31:19 +0200offpics(~offpics@89-79-56-128.dynamic.chello.pl) (Quit: Konversation terminated!)
2021-06-29 11:31:34 +0200offpics(~offpics@89-79-56-128.dynamic.chello.pl)
2021-06-29 11:32:44 +0200offpics(~offpics@89-79-56-128.dynamic.chello.pl) (Client Quit)
2021-06-29 11:32:58 +0200offpics(~offpics@89-79-56-128.dynamic.chello.pl)
2021-06-29 11:34:46 +0200acidjnk(~acidjnk@p200300d0c72b953738da50577290d8ed.dip0.t-ipconnect.de)
2021-06-29 11:37:42 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 11:37:59 +0200MorrowM(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 268 seconds)
2021-06-29 11:38:14 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
2021-06-29 11:39:23 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 258 seconds)
2021-06-29 11:39:33 +0200haskl(~haskl@user/haskl) (Remote host closed the connection)
2021-06-29 11:40:32 +0200haskl(~haskl@98.37.78.63)
2021-06-29 11:40:54 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-06-29 11:41:09 +0200Guest7(~Guest7@mob-5-90-96-69.net.vodafone.it)
2021-06-29 11:42:13 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Ping timeout: 256 seconds)
2021-06-29 11:45:37 +0200haskl(~haskl@98.37.78.63) (Remote host closed the connection)
2021-06-29 11:46:00 +0200acid(~acid@user/acid) (Ping timeout: 268 seconds)
2021-06-29 11:46:29 +0200benin0369(~benin@183.82.205.231) (Quit: The Lounge - https://thelounge.chat)
2021-06-29 11:48:37 +0200haskl(~haskl@98.37.78.63)
2021-06-29 11:51:15 +0200haskl(~haskl@98.37.78.63) (Changing host)
2021-06-29 11:51:16 +0200haskl(~haskl@user/haskl)
2021-06-29 11:51:54 +0200acid(~acid@user/acid)
2021-06-29 11:51:56 +0200favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-29 11:56:27 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 11:57:43 +0200acid(~acid@user/acid) (Ping timeout: 246 seconds)
2021-06-29 11:58:42 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-06-29 12:00:24 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-29 12:00:56 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 256 seconds)
2021-06-29 12:01:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-29 12:01:16 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2021-06-29 12:01:28 +0200ubert(~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33)
2021-06-29 12:01:41 +0200acid(~acid@user/acid)
2021-06-29 12:02:13 +0200neurocyte4(~neurocyte@212.232.83.109)
2021-06-29 12:02:13 +0200neurocyte4(~neurocyte@212.232.83.109) (Changing host)
2021-06-29 12:02:13 +0200neurocyte4(~neurocyte@user/neurocyte)
2021-06-29 12:03:49 +0200juhp(~juhp@128.106.188.66) (Read error: Connection reset by peer)
2021-06-29 12:06:58 +0200xsperry(~as@user/xsperry) (Ping timeout: 268 seconds)
2021-06-29 12:09:36 +0200 <guest61> I'm using scotty as a simple web server, and my browser tells me favicon.ico not foud, what this mean?
2021-06-29 12:09:45 +0200 <guest61> do I need to config it?
2021-06-29 12:10:20 +0200mc47(~mc47@xmonad/TheMC47)
2021-06-29 12:18:00 +0200 <Profpatsch> guest61: the browser looks at /favicon.ico by default
2021-06-29 12:18:12 +0200 <Profpatsch> thanks to the 90s
2021-06-29 12:18:16 +0200 <int-e> WTF, browser /complaining/ about a "missing" favicon?!
2021-06-29 12:18:20 +0200 <Profpatsch> So you’d have to put a favicon there
2021-06-29 12:18:34 +0200 <Profpatsch> guibou:
2021-06-29 12:18:36 +0200 <Profpatsch> guest61:
2021-06-29 12:18:38 +0200 <Profpatsch> <!--
2021-06-29 12:18:41 +0200 <Profpatsch> prevent favicon request, based on answers in
2021-06-29 12:18:41 +0200 <int-e> These things are commonplace but should be completely optional.
2021-06-29 12:18:43 +0200 <Profpatsch> https://stackoverflow.com/questions/1321878/how-to-prevent-favicon-ico-requests
2021-06-29 12:18:45 +0200 <Profpatsch> TODO: create favicon
2021-06-29 12:18:47 +0200 <Profpatsch> -->
2021-06-29 12:18:49 +0200 <Profpatsch> <link rel="icon" href="data:,">
2021-06-29 12:18:51 +0200 <Profpatsch> guibou: haha, sorry, but hi! :)
2021-06-29 12:19:04 +0200 <Profpatsch> int-e: the snippet i just posted makes the browser not request it
2021-06-29 12:20:05 +0200 <rawles> I use <link rel="icon" href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLz4K"/> to avoid additional requests to /favicon.ico - it's the smallest valid data URL I could find.
2021-06-29 12:20:35 +0200 <Profpatsch> rawles: empty data works as well
2021-06-29 12:20:50 +0200 <Profpatsch> maybe not in all browsers though
2021-06-29 12:21:44 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-29 12:21:48 +0200 <int-e> you can probably use https://hackage.haskell.org/package/scotty-0.12/docs/Web-Scotty-Trans.html#v:file and serve an actual image for /favicon.ico (a 32x32 or 64x64 png should work fine?)
2021-06-29 12:22:39 +0200sayola(~vekto@dslb-088-078-152-192.088.078.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-06-29 12:24:52 +0200theproffesor(~theproffe@user/theproffesor) (Ping timeout: 272 seconds)
2021-06-29 12:26:41 +0200 <guest61> yes
2021-06-29 12:26:58 +0200 <guest61> file in scotty is very easy to use
2021-06-29 12:27:16 +0200dunj4(~dunj3@p200300f61714a6027bbd4f06e8da6b8b.dip0.t-ipconnect.de)
2021-06-29 12:27:31 +0200 <guest61> https://paste.ubuntu.com/p/JR22Gcjfp6/
2021-06-29 12:27:42 +0200 <guest61> I like its simple
2021-06-29 12:28:01 +0200Torro(Torro@gateway/vpn/protonvpn/torro)
2021-06-29 12:28:03 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 12:28:04 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-29 12:29:56 +0200dunj3(~dunj3@p200300f61714a693595934ba002cc8b5.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-06-29 12:32:22 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 246 seconds)
2021-06-29 12:39:19 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 12:39:32 +0200dka(~code-is-a@ns3059207.ip-193-70-33.eu) (Quit: My Ex-Girlfriend once told me: I'm not a slut, I'm just popular)
2021-06-29 12:40:19 +0200PHO(~pho@akari.cielonegro.org)
2021-06-29 12:40:25 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-06-29 12:41:25 +0200PHOPHO`
2021-06-29 12:44:00 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Ping timeout: 256 seconds)
2021-06-29 12:45:19 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-29 12:46:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 12:57:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-06-29 12:57:33 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-06-29 12:57:35 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr)
2021-06-29 12:57:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 13:01:38 +0200xsperry(~as@user/xsperry)
2021-06-29 13:02:17 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 13:02:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-06-29 13:03:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 13:03:52 +0200Guest7(~Guest7@mob-5-90-96-69.net.vodafone.it) (Quit: Client closed)
2021-06-29 13:07:30 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-06-29 13:08:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-06-29 13:08:44 +0200cfricke(~cfricke@user/cfricke)
2021-06-29 13:09:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 13:09:29 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-29 13:10:06 +0200chris_(~chris@81.96.113.213)
2021-06-29 13:14:34 +0200PHO`(~pho@akari.cielonegro.org) (Quit: Server Configuration changed; reconnect)
2021-06-29 13:14:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-06-29 13:14:42 +0200PHO`(~pho@akari.cielonegro.org)
2021-06-29 13:14:53 +0200chris_(~chris@81.96.113.213) (Ping timeout: 265 seconds)
2021-06-29 13:15:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 13:16:12 +0200PHO`(~pho@akari.cielonegro.org) (Remote host closed the connection)
2021-06-29 13:16:27 +0200PHO`(~pho@akari.cielonegro.org)
2021-06-29 13:20:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-06-29 13:21:06 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 240 seconds)
2021-06-29 13:21:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 13:22:24 +0200 <Unhammer> Is there a way to get ghci to run a command after every :r ?
2021-06-29 13:26:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-06-29 13:27:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 13:27:13 +0200 <boxscape_> Unhammer you can use `:def` in your ghci config file to make a new command that reloads and then runs something or to overwrite the :r command
2021-06-29 13:27:27 +0200 <Unhammer> oh good idea
2021-06-29 13:28:32 +0200 <boxscape_> hm although I'm currently failing to actually figure out how to use it properly
2021-06-29 13:33:59 +0200gensyst(gensyst@user/gensyst)
2021-06-29 13:34:26 +0200fendor_(~fendor@77.119.197.237.wireless.dyn.drei.com)
2021-06-29 13:34:35 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-06-29 13:35:09 +0200 <gensyst> In this https://pastebin.com/n4s0i2Qb (pardon the ridiculous example), is there a way to use "let" (or something) to avoid duplicating "my_func i" those four times in that pattern matching?
2021-06-29 13:35:43 +0200 <gensyst> The trick is that "i" is only extracted "later on".
2021-06-29 13:35:56 +0200 <gensyst> s/trick/challenge
2021-06-29 13:36:12 +0200 <Unhammer> boxscape_,
2021-06-29 13:36:13 +0200 <Unhammer> :def g \_ -> return $ ":r\nJust d <- DevelGet.get :: IO (Maybe Data)"
2021-06-29 13:36:15 +0200 <Unhammer> worked for me :)
2021-06-29 13:36:21 +0200 <boxscape_> ah, nice
2021-06-29 13:37:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-06-29 13:38:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 13:38:53 +0200 <kuribas> gensyst: case testm of Nothing -> 2; Just i -> let mf = my_func i in (if | mf > 3 -> mf; f < -30 -> mf + 1000; otherwise -> 0);
2021-06-29 13:39:10 +0200 <kuribas> use multiwayif
2021-06-29 13:39:15 +0200 <boxscape_> gensyst or with ViewPatterns you should be able to do https://paste.tomsmeding.com/qMVAfDaa
2021-06-29 13:39:24 +0200Raito_Bezarius(~Raito@2a01:e0a:5f9:9681:bdcd:d554:1779:9a1a) (Changing host)
2021-06-29 13:39:24 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2021-06-29 13:40:48 +0200 <boxscape_> though I suppose realistically I would do it more similarly to kuribas and combine the guards https://paste.tomsmeding.com/FFFW20ej
2021-06-29 13:42:36 +0200 <kuribas> I mean: (if | mf > 3 -> mf | f < -30 -> mf + 1000 | otherwise -> 0)
2021-06-29 13:43:11 +0200 <boxscape_> for good measure, a solution that doesn't require extensions https://paste.tomsmeding.com/cYPx7PJ3
2021-06-29 13:43:53 +0200 <kuribas> boxscape_: nice
2021-06-29 13:43:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-06-29 13:44:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 13:44:42 +0200Guest33(~textual@c-107-4-204-12.hsd1.mn.comcast.net)
2021-06-29 13:45:54 +0200acidjnk(~acidjnk@p200300d0c72b953738da50577290d8ed.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-06-29 13:46:38 +0200 <merijn> kuribas: Eh, why use multiwayif? You can just use guards on the case?
2021-06-29 13:46:55 +0200 <kuribas> merijn: because there is a let in between?
2021-06-29 13:47:10 +0200 <merijn> You can use guards on the let :p
2021-06-29 13:47:16 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
2021-06-29 13:47:17 +0200alphabeta(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
2021-06-29 13:47:22 +0200dasher(~user@197.155.22.36)
2021-06-29 13:47:37 +0200 <kuribas> merijn: let mf = my_func i in | mf > 3 = mf | ... ?
2021-06-29 13:47:46 +0200alphabeta(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Client Quit)
2021-06-29 13:47:59 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Client Quit)
2021-06-29 13:48:16 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
2021-06-29 13:48:29 +0200 <merijn> kuribas: hmm, I think I'm lacking context of the original question :)
2021-06-29 13:48:39 +0200 <kuribas> well, you could do let mf = my_func i; result | mf > 3 = mf .. in result.
2021-06-29 13:49:00 +0200chris_(~chris@81.96.113.213)
2021-06-29 13:49:01 +0200 <kuribas> I think boxscape_ s last way is nicer.
2021-06-29 13:49:46 +0200 <kuribas> or case () of () | mf > 3 = mf | ...
2021-06-29 13:51:48 +0200xff0x(~xff0x@2001:1a81:53b8:a100:fc31:6f5c:5a37:95a) (Ping timeout: 268 seconds)
2021-06-29 13:52:02 +0200themc47(~mc47@xmonad/TheMC47)
2021-06-29 13:52:27 +0200xff0x(~xff0x@2001:1a81:53b8:a100:f8a8:d5fd:e910:e3c0)
2021-06-29 13:52:36 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-06-29 13:52:36 +0200themc47(~mc47@xmonad/TheMC47) (Client Quit)
2021-06-29 13:52:47 +0200 <gensyst> great suggestions!
2021-06-29 13:52:57 +0200 <merijn> eh
2021-06-29 13:53:01 +0200 <merijn> I have a much simpler one
2021-06-29 13:53:04 +0200 <gensyst> merijn, fyi In this https://pastebin.com/n4s0i2Qb (pardon the ridiculous example), is there a way to use "let" (or something) to avoid duplicating "my_func i" those four times in that pattern matching?
2021-06-29 13:53:09 +0200mc47(~mc47@xmonad/TheMC47) (Read error: Connection reset by peer)
2021-06-29 13:53:46 +0200 <merijn> How about just "case my_func <$> testm of Nothing -> 2; Just i | i < 3 -> i; ..."
2021-06-29 13:54:07 +0200 <merijn> <- galaxy brain
2021-06-29 13:54:31 +0200 <merijn> You guys overcomplicating this with bunches of extensions :p
2021-06-29 13:55:15 +0200 <kuribas> merijn: that doesn't even do the same thing
2021-06-29 13:55:32 +0200 <merijn> kuribas: It does for the example paste he gave
2021-06-29 13:55:48 +0200 <merijn> How does it not do that same thing?
2021-06-29 13:55:51 +0200 <kuribas> merijn: no it doesn't
2021-06-29 13:56:09 +0200 <merijn> Enlighten me
2021-06-29 13:56:13 +0200 <kuribas> merijn: he comparse my_func i against 3, you compare i against 3...
2021-06-29 13:56:26 +0200 <merijn> kuribas: Because I fmapped my_func in the case?
2021-06-29 13:56:34 +0200 <kuribas> ah, I see...
2021-06-29 13:56:43 +0200 <merijn> Hence, why I have a galaxy brain :p
2021-06-29 13:56:56 +0200 <kuribas> merijn: that will work for this case
2021-06-29 13:57:28 +0200 <merijn> There's corner cases where (if you need the original unaltered value) it won't work, but even that is easily fixed
2021-06-29 13:57:50 +0200 <merijn> You could just change "my_fun" to return a tuple of "original and new value" and get the same logic
2021-06-29 13:58:24 +0200 <merijn> gensyst: btw, note that you don't need to repeat the "Just i" prefix for the 2nd pattern
2021-06-29 13:58:29 +0200 <kuribas> merijn: not sure that's less complicated...
2021-06-29 13:58:53 +0200 <merijn> Well, it doesn't require any extensions :p
2021-06-29 13:58:59 +0200 <Athas> Ugh, GHC has a really charming behaviour on case-insensitive file systems: if you miscapitalise the module name in an 'import', it'll find the file alright, but complain that the module header is wrong (due to differences in capitalisation).
2021-06-29 13:59:07 +0200 <kuribas> merijn: boxscape_ 's latest didn't either.
2021-06-29 13:59:32 +0200 <merijn> kuribas: I only saw the ViewPatterns one
2021-06-29 13:59:34 +0200kspalaiologos(~kspalaiol@user/kspalaiologos)
2021-06-29 13:59:42 +0200 <Athas> This reminds of the Bad Old Days when I had students who programmed in SML on Windows, and who would import standard libraries by their un-capitalised names. At least GHC will complain.
2021-06-29 13:59:43 +0200 <boxscape_> https://paste.tomsmeding.com/cYPx7PJ3
2021-06-29 13:59:50 +0200 <boxscape_> merijn ^^
2021-06-29 14:00:16 +0200 <merijn> boxscape_: Right, but that's just my fmap solution, but uglier :p
2021-06-29 14:00:29 +0200 <tomsmeding> Athas: because case-insensitive file system? A few years back I started doing some haskell on mac with a case-insensitive file system and it accepted lowercase file names just fine
2021-06-29 14:01:09 +0200 <merijn> Technically macOS and windows are "case-preserving" not insensitive :p
2021-06-29 14:01:33 +0200 <Athas> tomsmeding: yes, because macOS. I typed 'import FOo.Bar', it found 'Foo/Bar.hs', then complained that this file declared 'module Foo.Bar' rather than 'module FOo.Bar'.
2021-06-29 14:01:51 +0200 <Athas> Fortunately I have already ordered a replacement machine that can run an OS without this bug.
2021-06-29 14:02:02 +0200 <Athas> But I'm surprised GHC doesn't catch this. Is it just not worth the bother to fix?
2021-06-29 14:02:15 +0200 <merijn> Athas: It sounds like it does catch it?
2021-06-29 14:02:28 +0200 <merijn> Else you wouldn't get the error, no?
2021-06-29 14:02:33 +0200 <Athas> merijn: the error is wrong.
2021-06-29 14:02:42 +0200 <merijn> Athas: That is up for debate
2021-06-29 14:02:57 +0200 <merijn> Athas: It's literally impossible to know that for GHC
2021-06-29 14:02:59 +0200 <tomsmeding> Athas: macos supports a case-sensitive file system too; case-insensitive is just the default
2021-06-29 14:03:07 +0200 <int-e> Athas: it opened FOo/Bar.hs and got a file back, how is it supposed to know that this is not the actual file name?
2021-06-29 14:03:10 +0200 <Athas> merijn: no, it is not. GHC could query the canonical file name after the lookup.
2021-06-29 14:03:16 +0200 <merijn> "You import X, a file for X exists, but lists a different module name"
2021-06-29 14:03:33 +0200 <Athas> int-e: by checking the name of the file after opening.
2021-06-29 14:03:57 +0200 <merijn> Athas: How, exactly?
2021-06-29 14:03:58 +0200 <int-e> And what if that is foo/bar.hs?
2021-06-29 14:04:11 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2)
2021-06-29 14:04:12 +0200 <Athas> merijn: fstat will tell you the canonical name, won't it?
2021-06-29 14:04:23 +0200 <Athas> int-e: then no module named FOo.Bar or Foo.Bar exists.
2021-06-29 14:04:32 +0200 <merijn> Athas: Seems unlikely, since there is no single canonical name for files
2021-06-29 14:04:41 +0200 <tomsmeding> merijn: Finder manages to display one :p
2021-06-29 14:04:44 +0200 <int-e> Athas: that'll break *other* case insensitive file systems
2021-06-29 14:04:50 +0200 <merijn> Athas: Multiple hard links can refer to the same inode
2021-06-29 14:05:07 +0200 <boxscape_> heh if you have a type signature with a variable `b4`, the first unification variable generated from that which GHC will show you in error messages is `b40`, but the next ones are `b1`, `b2`, etc.
2021-06-29 14:05:24 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-29 14:05:24 +0200 <tomsmeding> boxscape_: b3, b5?
2021-06-29 14:05:29 +0200 <Athas> Ah, no, not fstat. But it is definitely possible to find the display name, even on a case insensitive file system.
2021-06-29 14:05:38 +0200 <Athas> int-e: how so?
2021-06-29 14:05:45 +0200 <merijn> Athas: You can find *a* display name, probably
2021-06-29 14:05:51 +0200 <boxscape_> tomsmeding erm let me check if it skips b4 but I suppose probably, yeah
2021-06-29 14:06:13 +0200 <int-e> Athas: because they may implement case insensitivity by picking canonical file names (all lower case; all upper case)
2021-06-29 14:06:22 +0200 <tomsmeding> merijn: there cannot be two display names referring to the same inode that differ by only case, because case-sensitive file system
2021-06-29 14:06:23 +0200 <Athas> merijn: are you telling me that given a path foo/bar.hs that resolves to a file on macOS, it is a major ordeal to find the "proper" casing of the name?
2021-06-29 14:06:48 +0200favonia(~favonia@user/favonia)
2021-06-29 14:06:51 +0200 <tomsmeding> so even if there may be multiple hard links to the same inode, given a path to the thing that is correct modulo case, it should, theoretically, be possible to find the canonical version of that path :p
2021-06-29 14:06:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-29 14:07:03 +0200tomsmedinghas never tried to do that on macos
2021-06-29 14:07:07 +0200 <Athas> Worst case, look at the contents of the directory. That'll work unless the file system is both case-insensitive *and* permits different files in the same directory that differ only by case.
2021-06-29 14:07:16 +0200 <Athas> But I can't imagine any file system would permit that.
2021-06-29 14:07:21 +0200 <merijn> Athas: I'm saying that that file may be referred to from multiple paths none of which are canonical
2021-06-29 14:07:23 +0200 <tomsmeding> related story: a friend of mine always wrote 'head' instead of 'HEAD' with git and was surprised that didn't work on linux
2021-06-29 14:07:36 +0200 <Athas> merijn: but I already told GHC the path, so there would be no ambiguity.
2021-06-29 14:07:43 +0200 <merijn> Athas: After opening a file you no longer have a path, though, only a file descriptor
2021-06-29 14:07:45 +0200 <Athas> You are trying to solve a way more complex problem than necessary.
2021-06-29 14:08:05 +0200dasher(~user@197.155.22.36) (ERC (IRC client for Emacs 27.2))
2021-06-29 14:08:09 +0200 <Athas> Ignore the file descriptor mention. That was a red herring and a pointless technical detail. My point is that GHC could solve this, and I'm surprised it doesn't.
2021-06-29 14:08:19 +0200 <tomsmeding> Athas: I think ultimately, getting the behaviour you want would require additional code in ghc that does little actual useful work
2021-06-29 14:08:33 +0200 <tomsmeding> and hence it's hard to justify putting it in
2021-06-29 14:08:35 +0200 <Athas> tomsmeding: this is the case for all code that tries to provide better error messages than ed.
2021-06-29 14:08:48 +0200 <Athas> I don't care much myself, because hopefully I have little time left on macOS.
2021-06-29 14:09:26 +0200 <merijn> Athas: I mean, on windows and linux guessing the actual path is all just "best effort guesswork" too
2021-06-29 14:09:31 +0200tomsmedingthinks ed gives plenty useful error messages, '?'
2021-06-29 14:09:42 +0200 <tomsmeding> merijn: not if you have the path given :p
2021-06-29 14:09:46 +0200 <tomsmeding> as you have in this use-case
2021-06-29 14:09:47 +0200 <merijn> Athas: The only way on linux seems to be hacky operation on /proc
2021-06-29 14:09:56 +0200 <int-e> The error message isn't even that terrible... yes, it doesn't guess the right root cause, but as the programmer you should be able to connect the dots easily enough.
2021-06-29 14:10:01 +0200 <merijn> tomsmeding: How so?
2021-06-29 14:10:13 +0200 <merijn> tomsmeding: Linux supports case insensitive filesystems
2021-06-29 14:10:20 +0200 <merijn> It's not the default
2021-06-29 14:10:24 +0200 <merijn> but it can still happen
2021-06-29 14:10:25 +0200derelict(~derelict@user/derelict)
2021-06-29 14:10:25 +0200 <tomsmeding> if you're in a particular directory and you're importing module A.B.C, then that can only be at path a/b/c.hs modulo case
2021-06-29 14:10:43 +0200 <tomsmeding> on a case sensitive file system the path is unambiguous: A/B/C.hs
2021-06-29 14:11:00 +0200 <merijn> tomsmeding: Right, but you don't know if its case sensitive on linux
2021-06-29 14:11:13 +0200functor(~functor@151.51.141.57)
2021-06-29 14:11:13 +0200 <tomsmeding> on a case-insensitive file system, there is still only one possible canonical path; if there were multiple, there would be multiple directory entries that differ only by case, which is nonsensical on a case-insensitive file system
2021-06-29 14:11:15 +0200 <merijn> tomsmeding: You are just *assuming* that, because the default filesystem for your distro happens to be
2021-06-29 14:11:34 +0200 <Athas> merijn: but the problem isn't about finding the path to an arbitrary file. The problem is having a path 'foo/bar.hs' that we already know resolves to a file, and then figuring out what the name would look like if you just 'ls'ed that file (or rather, the containing directory). _Much_ simpler.
2021-06-29 14:11:37 +0200 <merijn> tomsmeding: Not true, you can have multiple paths refering to the same inode
2021-06-29 14:11:57 +0200 <tomsmeding> I know!
2021-06-29 14:12:06 +0200 <tomsmeding> but on a case-insensitive file system they cannot differ only by case
2021-06-29 14:12:08 +0200 <Athas> I think the portable (if inefficient) way of doing this is to just walk the tree and list the contents of every directory.
2021-06-29 14:12:18 +0200 <tomsmeding> and we know that the canonical path we're looking for differs from our given path only by case
2021-06-29 14:12:22 +0200 <Athas> tomsmeding: in theory they might!
2021-06-29 14:12:23 +0200 <merijn> Athas: My point was that the original error is right, but from a different viewpoint. Your viewpoint is "the import is typoed and the file should not be found"
2021-06-29 14:12:41 +0200 <merijn> Athas: GHC's viewpoint is "the import is right and the file exists, but you typoed the module name in the imported file"
2021-06-29 14:12:51 +0200 <int-e> Athas: "it can be done" is not a good argument for doing something
2021-06-29 14:13:02 +0200 <merijn> Whether you typoed the module name or the import is equally valid as error message
2021-06-29 14:13:03 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-29 14:13:04 +0200 <int-e> s/good //
2021-06-29 14:13:21 +0200 <merijn> tomsmeding: We don't actually :p
2021-06-29 14:13:36 +0200 <Athas> merijn: sure, but this means that a module might type-check, then later contain errors (according to GHC) depending on how it is imported, which seems wrong to me.
2021-06-29 14:13:45 +0200 <merijn> tomsmeding: Since .lhs extensions exist too *and* GHC accepts (accepted?) collapsed directory names
2021-06-29 14:14:02 +0200 <tomsmeding> ooooh
2021-06-29 14:14:04 +0200 <Athas> Oh, it has already been reported: https://gitlab.haskell.org/ghc/ghc/-/issues/16507
2021-06-29 14:14:10 +0200 <merijn> tomsmeding: Which means every module has at least 4 possible names that don't clash on case insensitive filesytems
2021-06-29 14:14:12 +0200 <tomsmeding> A.hs and a.lhs in the same directory
2021-06-29 14:14:24 +0200 <Athas> What happens in that case, I wonder.
2021-06-29 14:14:29 +0200 <Athas> Even A.lhs and A.hs is ambiguous.
2021-06-29 14:14:37 +0200 <merijn> You are fucked anyway
2021-06-29 14:14:42 +0200fendor_(~fendor@77.119.197.237.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2021-06-29 14:14:46 +0200 <merijn> Haskell doesn't specify how imports related to filenames
2021-06-29 14:14:52 +0200 <merijn> And GHC is handwavey about the semantics
2021-06-29 14:15:00 +0200amk(~amk@176.61.106.150) (Remote host closed the connection)
2021-06-29 14:15:06 +0200 <merijn> So it's all unspecified and a matter of "what happens to work on GHC"
2021-06-29 14:15:11 +0200 <int-e> Haskell doesn't specify how modules map to files
2021-06-29 14:15:17 +0200 <merijn> I already made a ticket complaining about this years ago
2021-06-29 14:15:29 +0200 <merijn> And saying we should have deterministic semantics
2021-06-29 14:15:37 +0200 <merijn> But I never implemented anything for it, so the status quo remains
2021-06-29 14:15:41 +0200 <int-e> I mean, you could have a single file declaring all your modules
2021-06-29 14:15:58 +0200 <int-e> and that'd be okay because it's outside the scope of Haskell's language definition
2021-06-29 14:16:01 +0200 <merijn> int-e: *That* is not allowed by the grammar
2021-06-29 14:16:14 +0200 <int-e> But the grammar is for a module?
2021-06-29 14:16:21 +0200nschoe(~quassel@178.251.84.79)
2021-06-29 14:16:22 +0200int-eshrugs
2021-06-29 14:16:32 +0200 <merijn> hmm, is it? I don't remember enough details
2021-06-29 14:16:54 +0200 <Athas> merijn: I am pretty sure it is.
2021-06-29 14:16:59 +0200 <merijn> Athas: Anyway, I'm not saying GHC is *right* I'm just saying its "definitely not wrong" :p
2021-06-29 14:17:16 +0200 <Athas> The Haskell 2010 report explicitly shows an example of a "program" with multiple consecutive module definitions.
2021-06-29 14:17:21 +0200 <Athas> No idea whether GHC accepts it.
2021-06-29 14:17:26 +0200 <merijn> It doesn't
2021-06-29 14:17:39 +0200 <merijn> GHC also doesn't accept circular imports :((
2021-06-29 14:17:46 +0200 <Rembane> Athas: In the same file?
2021-06-29 14:18:12 +0200 <Athas> Rembane: the report doesn't say anything about files.
2021-06-29 14:18:20 +0200amk(~amk@176.61.106.150)
2021-06-29 14:18:20 +0200 <tdammers> ^
2021-06-29 14:18:41 +0200 <tdammers> I've always assumed that those code samples were meant to be in the same file, but they're not. The report doesn't specify anything wrt source files at all.
2021-06-29 14:18:52 +0200 <merijn> The problem isn't that the report doesn't say anything about files
2021-06-29 14:18:53 +0200 <Athas> And strictly speaking, the grammar doesn't have a production permitting consecutive modules. The 'module' nonterminal is the top level, I think.
2021-06-29 14:19:02 +0200 <merijn> The problem is that GHC doesn't have any specified semantics either
2021-06-29 14:19:43 +0200 <Athas> Yet GHC's mapping of modules to files is still much better than many other languages. And didn't the other Haskell compilers (when they existed) behave much as GHC does now?
2021-06-29 14:19:59 +0200 <merijn> There was at least one compiler that accepted the file "Foo.Bar.Baz.hs" for module "Foo.Bar.Baz"
2021-06-29 14:20:10 +0200 <Athas> It's much better than the SML situation, which despite its much-vaunted formal specification, neglected to talk about multi-file programs at all. So every implementation does it differently.
2021-06-29 14:20:12 +0200 <merijn> Without needing directories
2021-06-29 14:20:27 +0200 <tdammers> personally, I've always hated it when compilers/interpreters couple filenames to in-language things
2021-06-29 14:20:36 +0200 <merijn> tdammers: Yes, but also no
2021-06-29 14:20:57 +0200 <int-e> merijn: I guess it depends on how much you're willing to read into "The lexical structure captures the concrete representation of Haskell programs in text files."
2021-06-29 14:21:06 +0200 <merijn> tdammers: I think file names should correspond to modules, but without requiring 1 file per module
2021-06-29 14:21:13 +0200 <Rembane> Athas, tdammers Interesting and potentially very powerful.
2021-06-29 14:21:15 +0200 <int-e> The word "file" is mostly absent from the syntax portion of the report :P
2021-06-29 14:21:30 +0200 <merijn> tdammers: So "Foo/Bar.hz" *should* contain module Foo.Bar but *might* also contain more nested submodules
2021-06-29 14:21:31 +0200kspalaiologos(~kspalaiol@user/kspalaiologos) (Quit: Leaving)
2021-06-29 14:21:31 +0200 <tdammers> merijn: I think that that should be left for the programmer to decide
2021-06-29 14:22:01 +0200 <merijn> tdammers: I've taught to many students and been surrounded by too many scientists to think that's a good idea :)
2021-06-29 14:22:20 +0200 <Athas> I like when language concepts are directly coupled to things I already know about (like the hierarchical structure of a file system). Means I have to remember fewer arbitrary details.
2021-06-29 14:22:23 +0200 <tdammers> merijn: if they can't master discipline, then they don't deserve a toolchain that tries to keep them honest
2021-06-29 14:22:29 +0200 <Athas> I have _never_ enjoyed learning about include path semantics.
2021-06-29 14:22:29 +0200 <tdammers> merijn: let them dig their own graves
2021-06-29 14:22:49 +0200d4(~d4@151.51.141.57)
2021-06-29 14:23:08 +0200functor(~functor@151.51.141.57) ()
2021-06-29 14:23:15 +0200 <int-e> .hz <- "Haskell zoo"? :-)
2021-06-29 14:23:54 +0200 <Rembane> Is there any specific reason for why GHC doesn't handle circular imports?
2021-06-29 14:24:01 +0200 <tdammers> In all seriousness, "include path semantics" are just a horrible thing to have to be dealing with. And then there's the problem that filenames are subjects to all sorts of restrictions, and identifiers / module names are subject to *other* restrictions, and so you need a translation step between the two which means that in fact module names never equal filenames, and ugh
2021-06-29 14:24:07 +0200 <int-e> personally I think the "every module is a file" convention is /healthy/ even though it's sometimes inconvenient because there's a tendency for making very small modules.
2021-06-29 14:24:26 +0200 <Athas> Rembane: it is difficult to do automatically. GHC requires hand-written "boot files" containing type signatures, which are used to break the circularity.
2021-06-29 14:24:29 +0200 <int-e> And I certainly rely on it...
2021-06-29 14:24:49 +0200 <Rembane> Athas: Got it. That sounds painful but that a solution exists which is good
2021-06-29 14:24:54 +0200 <boxscape_> Rembane the code for GHC itself has a few import loops that are resolved in that way
2021-06-29 14:24:54 +0200 <Athas> tdammers: restricting module names to some simple subset of ASCII solves that, though.
2021-06-29 14:25:24 +0200killsushi(~killsushi@user/killsushi) (Quit: Leaving)
2021-06-29 14:25:37 +0200 <boxscape_> Athas that sucks if you want to code in a language that doesn't use ASCII, though
2021-06-29 14:25:40 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 14:25:47 +0200 <Athas> I think the circularity limitation is mostly a performance thing. You could always just concatecate a multi-module program to one big module and then type-check that.
2021-06-29 14:25:56 +0200 <boxscape_> (natural language, that is)
2021-06-29 14:25:57 +0200 <int-e> (in a dumb way: locate Foo/Bar.l?hs + less --> cheap way of getting a likely source of a Foo.Bar module)
2021-06-29 14:26:46 +0200 <tdammers> Athas: not entirely. E.g., in Haskell, a source file still needs a .hs extension; and you also violate established file naming conventions (e.g., Unix-like systems tend to prefer kebab-cased filenames, but Haskell modules need to be PascalCased)
2021-06-29 14:27:07 +0200 <Athas> tdammers: you can use underscores in module names, can't you?
2021-06-29 14:27:20 +0200 <boxscape_> % module Under_Score where
2021-06-29 14:27:21 +0200 <yahb> boxscape_:
2021-06-29 14:27:23 +0200 <boxscape_> yes
2021-06-29 14:27:26 +0200 <tdammers> Athas: yes, and now you're violating both Unix filename and Haskell module name conventions
2021-06-29 14:27:45 +0200 <Athas> I wouldn't say undescores in Unix file names is much of a violation.
2021-06-29 14:28:00 +0200 <tdammers> Athas: it works, but it's not idiomatic
2021-06-29 14:28:02 +0200Pickchea(~private@user/pickchea)
2021-06-29 14:28:22 +0200 <Athas> My OpenBSD system contains thousands of system filenames with underscores.
2021-06-29 14:28:32 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 14:28:40 +0200 <tomsmeding> tdammers: in /usr/lib/modules I have a couple of linux module files that have _ in them
2021-06-29 14:28:55 +0200 <tdammers> not saying it doesn't happen a lot
2021-06-29 14:29:01 +0200 <tdammers> just that it's not idiomatic
2021-06-29 14:29:18 +0200 <tdammers> then again, unix is a mess, so there's that
2021-06-29 14:29:46 +0200 <tomsmeding> maybe is unidiomaticity (?) has declined over time?
2021-06-29 14:29:52 +0200 <tomsmeding> s/is/its/
2021-06-29 14:30:10 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-29 14:30:21 +0200 <merijn> All tech is a mess >.>
2021-06-29 14:30:27 +0200 <Athas> Looking at old Unix filesystem listings, neither underscores nor dashes seemed to be in use.
2021-06-29 14:30:32 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-06-29 14:30:43 +0200 <Athas> Dashes were used for options, which to me would discourage their use in file names.
2021-06-29 14:30:47 +0200 <tdammers> I think what's happened is that "modern unix culture" is a wild zoo of all sorts of different subcultures and imports, everyone just does whatever they're familiar with
2021-06-29 14:30:58 +0200 <tomsmeding> ^
2021-06-29 14:30:59 +0200 <int-e> Hmm. 20% of the haskell files on my disk have an _ in their name... that's a lot.
2021-06-29 14:31:06 +0200 <tdammers> *leading* dashes are for options; dashes inside filenames are fine
2021-06-29 14:31:34 +0200 <tdammers> fun fact though, you *can* make filenames that start with dashes on most *nix filesystems, but getting rid of them again can be tricky
2021-06-29 14:32:10 +0200 <int-e> . o O ( touch -- -rf )
2021-06-29 14:32:23 +0200 <[exa]> sysadmin fun: 1] touch ./-rf\ \~ 2] wait
2021-06-29 14:33:22 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-06-29 14:33:30 +0200 <int-e> [exa]: spoiler: the ~ will not expand to $HOME
2021-06-29 14:33:46 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-06-29 14:34:48 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-29 14:35:08 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-06-29 14:35:10 +0200 <[exa]> int-e: it will after the user types it
2021-06-29 14:35:33 +0200 <int-e> why would... never mind, users are stupid
2021-06-29 14:35:57 +0200 <merijn> I wish macOS and linux would copy FreeBSD's -I flag on rm
2021-06-29 14:36:04 +0200 <[exa]> yes that is precisely the design target.
2021-06-29 14:36:16 +0200 <merijn> So I can just do "alias rm = rm -I" like I have on BSD
2021-06-29 14:37:09 +0200 <merijn> -I is, like, an infinitely more useful version of -i
2021-06-29 14:37:10 +0200 <[exa]> ...my gnu rm does -I ?
2021-06-29 14:37:39 +0200 <int-e> life lesson: 'rm -rf *' and 'cd ..' are not commutative. (I've learned better since...)
2021-06-29 14:37:54 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 256 seconds)
2021-06-29 14:37:54 +0200 <merijn> Ah, looks like -I was added to GNU rm
2021-06-29 14:38:02 +0200 <merijn> Now I just need it on macOS :>
2021-06-29 14:39:00 +0200 <[exa]> int-e: that's good. :]
2021-06-29 14:40:45 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 14:41:21 +0200d4functor
2021-06-29 14:42:44 +0200Guest33(~textual@c-107-4-204-12.hsd1.mn.comcast.net) (Quit: Textual IRC Client: www.textualapp.com)
2021-06-29 14:45:16 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Ping timeout: 256 seconds)
2021-06-29 14:45:58 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 14:47:42 +0200 <gensyst> merijn, i ended up abandoning macos. too much pita.
2021-06-29 14:47:56 +0200 <gensyst> for haskell, linux "just works".
2021-06-29 14:48:15 +0200 <[exa]> but the fruity feels!
2021-06-29 14:48:27 +0200Clintshudders.
2021-06-29 14:48:29 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-06-29 14:48:33 +0200 <gensyst> after a few weeks, the ugliness of linux grows on you and you start loving the freedom
2021-06-29 14:48:57 +0200 <Athas> The GUI ugliness?
2021-06-29 14:49:15 +0200 <gensyst> yeah, relative to macos (i'm using qubes, which is uglier than most distros)
2021-06-29 14:49:21 +0200 <[exa]> ....what's ugly on plain black fullscreen console?
2021-06-29 14:49:26 +0200 <merijn> Athas: I mean, the non-GUI parts are ugly too :p
2021-06-29 14:49:38 +0200 <gensyst> my main regret now is i didn't do it years ago
2021-06-29 14:49:56 +0200 <merijn> I'd sooner go back to FreeBSD on the desktop than linux
2021-06-29 14:50:08 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-29 14:51:12 +0200 <gensyst> merijn, why?
2021-06-29 14:51:13 +0200 <Athas> [exa]: exactly! Minimalism is a pragmatic solution to lack of aesthetic ability.
2021-06-29 14:51:52 +0200noctuks(VLd78TzYRj@user/noctux)
2021-06-29 14:53:04 +0200 <merijn> gensyst: I hate linux approach to "engineering" (i.e. "we have a broken/unusable interface, rather than fix it lets us introduce a gratuitously backwards incompatible, undocumented, new interface instead of fixing it!")
2021-06-29 14:53:29 +0200 <nshepperd2> having my computer be partially owned by lennart poettering isn't ideal, but i'd say it's superior to it being fully owned by Apple or Microsoft
2021-06-29 14:53:31 +0200 <merijn> And 90% of the time that new interface "lol, parse the undocumented string output of /proc or get fucked"
2021-06-29 14:54:33 +0200 <gensyst> ok.. i haven't run into that issue yet
2021-06-29 14:54:44 +0200 <gensyst> it's only been a few months though
2021-06-29 14:55:14 +0200 <Athas> Also, remember that merijn is comparing Linux to the BSDs.
2021-06-29 14:55:31 +0200 <merijn> Athas: Yes and I will never stop being mad about epoll >.<
2021-06-29 14:55:41 +0200 <Athas> The BSDs are extremely carefully engineered (for good and bad). Doesn't mean Linux doesn't look pretty good compared to many lesser systems.
2021-06-29 14:56:10 +0200 <merijn> Hot take: Microsoft's engineering is equal or better to linux is the hill I will die on
2021-06-29 14:56:33 +0200 <merijn> It's fine to prefer linux because you're politically infatuated with FOSS
2021-06-29 14:56:38 +0200_xor(~xor@74.215.46.133) (Quit: brb)
2021-06-29 14:56:44 +0200 <nshepperd2> -++
2021-06-29 14:56:54 +0200 <merijn> But pretending linux somehow has superior engineering is just lunacy
2021-06-29 14:57:49 +0200 <merijn> And 90% of the complaints about windows here aren't even "poor engineering" but "windows engineers made different design trade-offs that don't fit your posix expectations but aren't inherently bad or inferior"
2021-06-29 14:58:13 +0200 <turlando> merijn «we have a broken/unusable interface» it's called POSIX and all Unices have it :)
2021-06-29 14:58:34 +0200 <merijn> Not to say there isn't any suckage in the design of Windows and its engineering. But it's really not more so than linux
2021-06-29 14:58:41 +0200 <merijn> turlando: Naah
2021-06-29 14:58:57 +0200 <merijn> turlando: Linux is mostly on the 2nd or 3rd post posix interface for most things >.>
2021-06-29 14:59:17 +0200 <merijn> turlando: All of which equally broken as posix, just in different ways and without the benefit of at least being portably broken
2021-06-29 14:59:51 +0200 <gensyst> Are there OSes other than Qubes (Linux) where I can have most docs in an offline qube, so if my browser/irc client get cracked they won't get to my docs?
2021-06-29 15:00:15 +0200 <gensyst> (That would be a good reason to use Linux, although only because Qubes happens to be Linux)
2021-06-29 15:01:02 +0200 <gensyst> https://www.qubes-os.org/
2021-06-29 15:01:04 +0200 <nshepperd2> but superior engineering is actually bad if it's used to take away choice from users and show them ads
2021-06-29 15:01:07 +0200 <Athas> gensyst: probably not, since I think Qubes' sandboxing depends on Linux's rather fine-grained (and complicated) isolation support.
2021-06-29 15:01:13 +0200alx741(~alx741@186.178.109.202)
2021-06-29 15:01:22 +0200 <Athas> _Maybe_ FreeBSD's jails could be used to do something similar, but they are not really built for that.
2021-06-29 15:01:22 +0200 <gensyst> Athas, yeah i think it's quite the unique beast
2021-06-29 15:01:42 +0200 <merijn> gensyst: OpenBSDs Theo de Raadt (which is about as paranoid a security person you can find) has given several presentations where he points out that linux is lagging behind windows in terms of security efforts and mitigations
2021-06-29 15:02:17 +0200 <turlando> To my knowledge most userland software are POSIX client, but a few Linux-specific exceptions. Since it's been brought up before, I'm not a systemd fan (or better, I don't care) but one of the most used argument is that "it's not POSIX compliant". Well, I would call it an advantage given that we're damned to stick to an half-assed interface from the 70s.
2021-06-29 15:02:19 +0200 <merijn> Athas: Wouldn't even be hard, you could run IRC client/browser in a jail fairly easily
2021-06-29 15:02:39 +0200 <merijn> Athas: I actually had a setup where browser would run in a jail when I was using FreeBSD as desktop
2021-06-29 15:02:51 +0200 <gensyst> interesting!
2021-06-29 15:02:57 +0200juhp(~juhp@128.106.188.66)
2021-06-29 15:03:00 +0200 <Athas> merijn: I don't think I would trust the isolation if I ran an X11 client in a jail.
2021-06-29 15:03:16 +0200 <Athas> I assume Qubes either uses multiple X servers or Wayland (but I don't know).
2021-06-29 15:05:04 +0200 <turlando> (Don't get me wrong, I'm very happy I can run most of my software on my OpenBSD box, but I think we should get past POXIS and Unix in general, which is a fractal of bad designs)
2021-06-29 15:05:09 +0200 <gensyst> so these jails are more useful than AppArmor or SELinux from this point of view?
2021-06-29 15:05:43 +0200 <Athas> What do you mean by "useful"?
2021-06-29 15:06:14 +0200 <Athas> FreeBSD jails were revolutionary because of how simple they made it to do the right thing, which originally was to create very cheap virtual servers for web hosting purposes.
2021-06-29 15:06:43 +0200 <Athas> That's generally the BSD approach: a carefully designed and somewhat specialised facility (I don't know how flexible Jails have gotten since, though).
2021-06-29 15:07:00 +0200 <Athas> The Linux approach is to provide a huge bunch of features that can eventually be combined to achieve various effects. Docker is an example.
2021-06-29 15:07:28 +0200 <Athas> Compare also OpenBSD's pledge() and Linux's seccomp.
2021-06-29 15:08:06 +0200 <Athas> pledge() is stupidly simple and inflexible, but used pervasively in the OpenBSD userland. Linux's seccomp is extremely fine-grained, but used only by very large and complex programs (like browsers, for sandboxing).
2021-06-29 15:09:23 +0200 <Athas> But perhaps this is better suited for #haskell-offtopic.
2021-06-29 15:09:27 +0200 <Athas> So how about those monoids, huh?
2021-06-29 15:10:37 +0200 <gensyst> AppArmor doesn't BY DEFAULT isolate an IRC client (which by default has access to entire home folder), making it too dangerous to use. (And even if I could write a configuration to isolate it, nobody is using AppArmor this way so it's a PITA to even try.)
2021-06-29 15:10:38 +0200 <Taneb> As an on-topic thought, is "data NonEmpty f a = a :| f a; instance Foldable1 f => Foldable (NonEmpty f)" sensible? Useful? Does it have any other instances?
2021-06-29 15:10:48 +0200 <gensyst> I don't recall now why I discarded SELinux honestly
2021-06-29 15:11:14 +0200 <maerwald> written by NSA? ;)
2021-06-29 15:11:26 +0200 <gensyst> Seems like jails have a similar issue. The default behavior is dangerous.
2021-06-29 15:11:33 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr)
2021-06-29 15:11:50 +0200 <gensyst> Qubes is cool: I simply can't use an IRC client on an offline qube. problem solved
2021-06-29 15:12:07 +0200 <maerwald> Is Qubes still developed?
2021-06-29 15:12:10 +0200 <gensyst> yeah
2021-06-29 15:12:10 +0200 <Athas> Taneb: hm. It seems to me that it makes certain assumptions about what 'f a' is.
2021-06-29 15:12:18 +0200 <Athas> Namely that the 'a's are in positive position.
2021-06-29 15:12:44 +0200 <gensyst> maerwald, https://www.qubes-os.org/news/
2021-06-29 15:12:44 +0200 <Athas> What if 'f = ((->) Int)'?
2021-06-29 15:12:59 +0200 <maerwald> Afair the biggest problem on Qubes is the GPU
2021-06-29 15:13:53 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 15:14:09 +0200 <merijn> Athas: Pledge is brilliant and everyone should copy it
2021-06-29 15:14:25 +0200 <merijn> Athas: But linux won't, because they suffer from extremely fatal doses of NIH >.>
2021-06-29 15:15:07 +0200 <Taneb> Athas: then it wouldn't have many useful instances. Invariant and Copointed don't count
2021-06-29 15:15:53 +0200 <nshepperd2> Taneb: surely you mean Foldable f => Foldable1 (NonEmpty f)
2021-06-29 15:16:03 +0200 <Taneb> nshepperd2: oh, yes indeed
2021-06-29 15:16:11 +0200 <Taneb> Good catch
2021-06-29 15:16:14 +0200 <gensyst> merijn, thanks for the raadt suggestion. will watch his stuff
2021-06-29 15:16:32 +0200 <nshepperd2> anyway that's Product Identity, so it has pretty much all these instances https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Functor-Product.html
2021-06-29 15:17:34 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 246 seconds)
2021-06-29 15:18:36 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr)
2021-06-29 15:18:45 +0200 <gensyst> maerwald, yeah that's an issue. if i need a gpu one day (e.g. machine learning), my plan is to have a separate machine for that.
2021-06-29 15:19:30 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-06-29 15:19:40 +0200 <nshepperd2> i guess some of the instances could be written different though
2021-06-29 15:20:02 +0200 <maerwald> I can also imagine that speech recognition software that hooks into X etc will be heavily broken
2021-06-29 15:20:13 +0200dhil(~dhil@195.213.192.47) (Remote host closed the connection)
2021-06-29 15:20:14 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-06-29 15:21:44 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-29 15:23:38 +0200zinc_zinc
2021-06-29 15:30:40 +0200matsurago(~matsurago@p0111337-vcngn.tkyo.nt.ngn.ppp.ocn.ne.jp) (Quit: Leaving)
2021-06-29 15:31:06 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 240 seconds)
2021-06-29 15:33:54 +0200offpics(~offpics@89-79-56-128.dynamic.chello.pl) (Read error: Connection reset by peer)
2021-06-29 15:34:49 +0200gensyst(gensyst@user/gensyst) (Quit: Leaving)
2021-06-29 15:41:22 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-06-29 15:42:49 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-06-29 15:44:24 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 15:46:57 +0200jao(jao@gateway/vpn/protonvpn/jao)
2021-06-29 15:48:43 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Ping timeout: 256 seconds)
2021-06-29 15:49:25 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 246 seconds)
2021-06-29 15:50:42 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-06-29 15:51:16 +0200hendursaga(~weechat@user/hendursaga)
2021-06-29 15:51:44 +0200laguneucl(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-06-29 15:56:06 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 256 seconds)
2021-06-29 15:56:37 +0200__monty__(~toonn@user/toonn)
2021-06-29 15:58:21 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 15:59:27 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-29 15:59:30 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 240 seconds)
2021-06-29 16:00:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-29 16:00:19 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 16:00:34 +0200_xor(~xor@74.215.46.133)
2021-06-29 16:01:06 +0200Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2021-06-29 16:01:57 +0200_xor(~xor@74.215.46.133) (Client Quit)
2021-06-29 16:02:28 +0200_xor(~xor@74.215.46.133)
2021-06-29 16:02:50 +0200_xor(~xor@74.215.46.133) (Client Quit)
2021-06-29 16:03:07 +0200_xor(~xor@74.215.46.133)
2021-06-29 16:05:06 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-06-29 16:08:30 +0200jneira_(~jneira_@217.red-81-39-172.dynamicip.rima-tde.net)
2021-06-29 16:12:13 +0200fendor_(~fendor@77.119.195.142.wireless.dyn.drei.com)
2021-06-29 16:12:52 +0200noctux(~noctux@user/noctux)
2021-06-29 16:15:10 +0200fendor(~fendor@77.119.197.237.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
2021-06-29 16:16:26 +0200motte_(~weechat@82.131.107.112.cable.starman.ee)
2021-06-29 16:17:57 +0200noctux(~noctux@user/noctux) (Ping timeout: 268 seconds)
2021-06-29 16:18:02 +0200favonia(~favonia@user/favonia)
2021-06-29 16:18:52 +0200Sgeo(~Sgeo@user/sgeo)
2021-06-29 16:19:54 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 256 seconds)
2021-06-29 16:22:44 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 16:23:47 +0200noctux(~noctux@user/noctux)
2021-06-29 16:26:25 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 16:30:35 +0200niHiggim(~niHiggim@sas08006.nat.sas.com)
2021-06-29 16:31:14 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-06-29 16:33:02 +0200niHiggim(~niHiggim@sas08006.nat.sas.com) (Client Quit)
2021-06-29 16:36:20 +0200noctux(~noctux@user/noctux) (Ping timeout: 256 seconds)
2021-06-29 16:36:28 +0200noctux(~noctux@user/noctux)
2021-06-29 16:38:08 +0200fizbin(~fizbin@162-252-228-60-static.hfc.comcastbusiness.net)
2021-06-29 16:38:58 +0200Pickchea(~private@user/pickchea)
2021-06-29 16:43:06 +0200oxide(~lambda@user/oxide) (Ping timeout: 240 seconds)
2021-06-29 16:44:26 +0200oxide(~lambda@user/oxide)
2021-06-29 16:44:46 +0200noctux(~noctux@user/noctux) (Ping timeout: 272 seconds)
2021-06-29 16:46:32 +0200fendor_fendor
2021-06-29 16:48:42 +0200noctux(~noctux@user/noctux)
2021-06-29 16:50:45 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 16:52:07 +0200deni2deni
2021-06-29 16:53:09 +0200Shaeto(~Shaeto@94.25.234.81)
2021-06-29 16:53:20 +0200noctux(~noctux@user/noctux) (Ping timeout: 256 seconds)
2021-06-29 16:53:50 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
2021-06-29 16:55:32 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-06-29 16:58:50 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-06-29 17:00:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 17:00:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-29 17:01:08 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-06-29 17:04:26 +0200theproffesor(~theproffe@2601:282:847f:8010::3a29)
2021-06-29 17:04:35 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-29 17:04:35 +0200theproffesor(~theproffe@2601:282:847f:8010::3a29) (Changing host)
2021-06-29 17:04:35 +0200theproffesor(~theproffe@user/theproffesor)
2021-06-29 17:05:06 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 240 seconds)
2021-06-29 17:05:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Ping timeout: 256 seconds)
2021-06-29 17:08:33 +0200fizbin(~fizbin@162-252-228-60-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2021-06-29 17:10:22 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-06-29 17:10:25 +0200statusbot1(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-06-29 17:10:40 +0200listofoptions(~haha@nat.syssrc.com) (Quit: Leaving)
2021-06-29 17:10:55 +0200listofoptions(~haha@nat.syssrc.com)
2021-06-29 17:10:58 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2021-06-29 17:11:41 +0200vicfred(~vicfred@user/vicfred)
2021-06-29 17:13:27 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-06-29 17:13:29 +0200cheater1__(~Username@user/cheater)
2021-06-29 17:13:31 +0200cheater1__cheater
2021-06-29 17:15:24 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-29 17:16:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 17:21:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Ping timeout: 256 seconds)
2021-06-29 17:21:49 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 246 seconds)
2021-06-29 17:21:54 +0200Morrow(~MorrowM_@147.161.8.187)
2021-06-29 17:26:45 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
2021-06-29 17:27:00 +0200mpt(~tom@2a02:908:1862:49e0::5)
2021-06-29 17:27:02 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-29 17:27:35 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com)
2021-06-29 17:29:02 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-06-29 17:30:12 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-29 17:30:25 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 17:30:50 +0200favonia(~favonia@user/favonia)
2021-06-29 17:30:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-06-29 17:35:26 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-06-29 17:35:50 +0200oxide(~lambda@user/oxide) (Ping timeout: 256 seconds)
2021-06-29 17:36:42 +0200oxide(~lambda@user/oxide)
2021-06-29 17:37:21 +0200noctux(~noctux@user/noctux)
2021-06-29 17:38:17 +0200MorrowM(~MorrowM_@147.161.8.23)
2021-06-29 17:39:42 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 252 seconds)
2021-06-29 17:40:14 +0200pagnol(~user@014198154145.ctinets.com) (Ping timeout: 265 seconds)
2021-06-29 17:40:14 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 17:40:47 +0200jlamothe(~jlamothe@198.251.57.81)
2021-06-29 17:41:12 +0200Morrow(~MorrowM_@147.161.8.187) (Ping timeout: 268 seconds)
2021-06-29 17:42:26 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-06-29 17:43:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 17:45:34 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 17:45:37 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-29 17:46:19 +0200arjun(~user@user/arjun)
2021-06-29 17:46:32 +0200 <arjun> okay, how do you do front-end in haskell?
2021-06-29 17:46:42 +0200noctux(~noctux@user/noctux) (Ping timeout: 240 seconds)
2021-06-29 17:46:47 +0200 <arjun> i really really REALLY don't want to touch javascript
2021-06-29 17:46:50 +0200noctux(~noctux@user/noctux)
2021-06-29 17:46:51 +0200 <arjun> : P
2021-06-29 17:48:01 +0200acidjnk(~acidjnk@p200300d0c72b9572bd416add378a35d9.dip0.t-ipconnect.de)
2021-06-29 17:48:17 +0200fef(~thedawn@user/thedawn)
2021-06-29 17:50:10 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2021-06-29 17:50:19 +0200 <dsal> arjun: I think ghcjs is your only choice. There are a few related technologies, though.
2021-06-29 17:51:02 +0200 <arjun> dsal: yea, few people recommended elm
2021-06-29 17:51:16 +0200 <dsal> I've used elm a bit. There are some downsides, but it's very friendly.
2021-06-29 17:51:19 +0200 <arjun> close enough i guess, but not quite
2021-06-29 17:51:32 +0200 <dsal> The lack of typeclasses can be frustrating.
2021-06-29 17:51:33 +0200 <Rembane> Purescript is also fun. Not as friendly as Elm but more Haskell-like.
2021-06-29 17:51:41 +0200noctux(~noctux@user/noctux) (Ping timeout: 268 seconds)
2021-06-29 17:51:54 +0200 <arjun> Rembane: yea!
2021-06-29 17:52:12 +0200 <arjun> but i was wondering if there's a way to do that in _just haskell_
2021-06-29 17:52:24 +0200 <dsal> ghcjs
2021-06-29 17:52:24 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 17:52:30 +0200 <arjun> but it looks its probably gonna be an uphill fight
2021-06-29 17:53:12 +0200 <monochrom> Does yesod count?
2021-06-29 17:53:43 +0200 <geekosaur> to do the frontend in actual haskell means getting the browser to run haskell somehow… glwt
2021-06-29 17:54:04 +0200 <geekosaur> ghcjs is as close as you get with actual browsers
2021-06-29 17:55:11 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-29 17:55:36 +0200 <tdammers> Elm is not friendly, it's condescending. Change my mind.
2021-06-29 17:55:39 +0200 <monochrom> XY problem: Finish the "java" calling convention of our FFI. Then write a Java applet. >:)
2021-06-29 17:55:44 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-29 17:56:15 +0200 <arjun> monochrom: might as well write a browser in haskell : P
2021-06-29 17:56:22 +0200monochromcame from the 20th century. Wrote a Java applet for visualizing the sieve of eratosthenes.
2021-06-29 17:57:00 +0200myShoggoth(~myShoggot@75.164.51.64)
2021-06-29 17:57:09 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-29 17:57:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-29 17:57:45 +0200 <monochrom> Yes I sometimes also think "easy" and "condescending" are mixed up.
2021-06-29 17:58:12 +0200 <tdammers> fwiw, people routinely mix up "easy" and "simple"
2021-06-29 17:58:14 +0200 <monochrom> Windows is condescending.
2021-06-29 17:58:42 +0200 <arjun> lol
2021-06-29 17:58:50 +0200stevenxl(~stevenlei@174.128.182.19)
2021-06-29 17:58:51 +0200 <tdammers> windows is extortionist software with a friendly-looking frosting on top
2021-06-29 17:59:01 +0200 <dsal> Nice document you've got there...
2021-06-29 17:59:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-29 17:59:13 +0200 <monochrom> "an error has occurred, but you're too stupid to even copy an error code to a web forum, so we won't even tell you that"
2021-06-29 17:59:49 +0200 <arjun> monochrom: to be fair. almost all non-technical people use windows
2021-06-29 18:00:07 +0200 <monochrom> non-technical doesn't mean stupid
2021-06-29 18:00:18 +0200 <arjun> monochrom: yes, it doesn't
2021-06-29 18:00:29 +0200 <arjun> but most people would rather just "send it to IT"
2021-06-29 18:00:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 18:00:44 +0200 <geekosaur> most people just click through and get on with life, in my experience
2021-06-29 18:01:09 +0200 <arjun> think from a OS-maker vs market-share perspective
2021-06-29 18:01:15 +0200 <geekosaur> only "send it to IT" when that doesn't work
2021-06-29 18:01:16 +0200 <monochrom> non-technical doesn't mean if an error is too hard to explain, the dev still can't print an error code and ask the user to report it to a tech person
2021-06-29 18:01:17 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-06-29 18:02:11 +0200 <monochrom> non-technical doesn't mean training users to just say "it doesn't work, no further comment" because the computer really doesn't give any information
2021-06-29 18:02:13 +0200 <dsal> I've never been able to figure out why someone would choose windows. I'm probably an outlier, but family would ask me for advice, get a machine, have it do something terribly dumb, ask me for help, and I wouldn't be able to figure it out. *shrug*
2021-06-29 18:02:25 +0200 <arjun> is windows-support packages a thing you can buy, i have no clue?
2021-06-29 18:02:59 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 18:03:02 +0200 <arjun> dsf: games? music production when you don't have / cant have a mac?
2021-06-29 18:03:11 +0200 <arjun> video editing?
2021-06-29 18:03:41 +0200 <arjun> many people are just fine with chrome and maybe word tbh
2021-06-29 18:03:48 +0200 <monochrom> Windows comes pre-installed. Right, no one would want to install Windows by hand.
2021-06-29 18:03:51 +0200 <c_wraith> these days, windows is more usable than mac os
2021-06-29 18:04:01 +0200 <c_wraith> mostly because mac os keeps getting worse
2021-06-29 18:04:20 +0200 <arjun> c_wraith: i am typing this from my macbook where i nuked macos and put Arch
2021-06-29 18:04:34 +0200 <arjun> because it became _unbearable_ to use
2021-06-29 18:04:41 +0200pagnol(~user@014198154145.ctinets.com)
2021-06-29 18:05:36 +0200 <int-e> . o O ( The requested document is no more. / No file found. / Even tried multi. / Nothing helped. / I'm really depressed about this. You see, I'm just a web server... [...] )
2021-06-29 18:05:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-06-29 18:06:28 +0200 <dsal> The only issue I've got on macos is that ghc and a few other things are slightly behind on nix for M1. So I emulate them. The emulation isn't noticeably slower than my old machine, though.
2021-06-29 18:08:42 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-06-29 18:09:33 +0200 <dsal> arjun: Why arch? Isn't that the one that's really painful to write Haskell code on?
2021-06-29 18:09:39 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 18:10:01 +0200ubert(~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Remote host closed the connection)
2021-06-29 18:10:08 +0200son0p(~ff@181.136.122.143) (Ping timeout: 252 seconds)
2021-06-29 18:10:20 +0200 <dsal> (all I've heard about Arch is people complaining about problems building haskell projects there)
2021-06-29 18:10:27 +0200boxscape_(~boxscape_@p4ff0ba7a.dip0.t-ipconnect.de) (Quit: Connection closed)
2021-06-29 18:10:40 +0200boxscape_(~boxscape_@p4ff0ba7a.dip0.t-ipconnect.de)
2021-06-29 18:10:50 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Remote host closed the connection)
2021-06-29 18:11:20 +0200 <boxscape_> dsal you don't have to use the haskell packages pacman provides, you can still use cabal/stack/nix on arch
2021-06-29 18:14:36 +0200 <dsal> I did that thing recently where I had a `type X = Text` or something and decided to `newtype` it because not all `Text` is valid `X`. I also had a `Y` that was similar, but not the same. This revealed a variety of poor choices.
2021-06-29 18:15:52 +0200 <dsal> I guess I'll just push out an incompatible version of my library. I use it a lot so I get to see how hypothetical users will suffer.
2021-06-29 18:21:58 +0200jneira_(~jneira_@217.red-81-39-172.dynamicip.rima-tde.net) (Quit: Ping timeout (120 seconds))
2021-06-29 18:25:04 +0200noctux(~noctux@user/noctux)
2021-06-29 18:25:49 +0200 <arjun> dsal: idk, works fine for me?
2021-06-29 18:26:35 +0200 <arjun> ghc, cabal, hls all installed by ghcup and would work same on all linux systems i guess?
2021-06-29 18:27:20 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-06-29 18:27:33 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-06-29 18:27:57 +0200ec(~ec@gateway/tor-sasl/ec)
2021-06-29 18:28:09 +0200functor(~d4@151.51.141.57) (Remote host closed the connection)
2021-06-29 18:28:38 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-06-29 18:30:57 +0200 <dsal> Ah, so you don't use the arch bits of arch. I mostly just use nix and stack on all the things.
2021-06-29 18:31:54 +0200 <arjun> i never install the package manager stuff on anything if i can help it lol
2021-06-29 18:32:17 +0200 <arjun> since they are almost always behind
2021-06-29 18:33:26 +0200 <__monty__> You just sound too young to be jaded enough to realize newer does not necessarily mean better.
2021-06-29 18:34:08 +0200 <arjun> __monty__: older doesn't necessarily mean better too : P
2021-06-29 18:37:16 +0200econo(uid147250@user/econo)
2021-06-29 18:38:41 +0200 <__monty__> No one said it does. But if you consider even Arch packages not bleeding edge enough you're either very young or you have a *lot* of time, maybe both. I'm not judging.
2021-06-29 18:39:15 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-29 18:40:18 +0200pagnol(~user@014198154145.ctinets.com) (Ping timeout: 240 seconds)
2021-06-29 18:41:27 +0200 <dsal> I like bloody edges on things I'm working on. nixos stays pretty bloody
2021-06-29 18:43:36 +0200 <arjun> __monty__: sounds to me like you probably are, but that's on you.
2021-06-29 18:46:23 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-06-29 18:47:55 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-06-29 18:52:03 +0200nschoe(~quassel@2a01:e0a:8e:a190:d025:e55c:9af3:6699)
2021-06-29 18:52:48 +0200mekeor(~user@2001:a61:3a15:df01:78b3:82f:476c:65cd)
2021-06-29 18:54:03 +0200 <monochrom> There is no need to generalize to "newer is better" or "newer is not better".
2021-06-29 18:54:49 +0200 <monochrom> In the very particular case of GHC, debian and ubuntu for example are widely acknowledged to be so old it really is worse.
2021-06-29 18:55:12 +0200 <monochrom> And arch, it is not old but it is still worse for a different technicality.
2021-06-29 18:55:20 +0200 <Vq> With NixOS you can have both at the same time.
2021-06-29 18:55:34 +0200 <monochrom> There is no need to argue over generalizations of these very simple facts.
2021-06-29 18:55:42 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-06-29 18:56:09 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-29 18:56:29 +0200egoist(~egoist@186.235.82.105)
2021-06-29 18:56:37 +0200sm2n(~sm2n@user/sm2n)
2021-06-29 18:56:45 +0200 <Clint> if most of hackage builds with your ghc version, you know it's too old
2021-06-29 18:56:52 +0200 <monochrom> haha
2021-06-29 18:57:32 +0200 <Vq> It's pretty sweet actually. I hit a bug with avrdude compiled with GCC 9 or later the other day. Installed the 19.09 version with a oneliner and kept going.
2021-06-29 18:58:00 +0200MorrowM(~MorrowM_@147.161.8.23) (Read error: Connection reset by peer)
2021-06-29 18:58:12 +0200pavonia(~user@user/siracusa)
2021-06-29 18:58:44 +0200 <dminuoso> I finally decided. My top one with for this year is for String to disappear, and be universally replaced with Text.
2021-06-29 18:58:54 +0200sm2n_(~sm2n@user/sm2n) (Ping timeout: 268 seconds)
2021-06-29 18:59:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-29 19:00:19 +0200Torro(Torro@gateway/vpn/protonvpn/torro) (Quit: leaving)
2021-06-29 19:00:39 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 19:02:42 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-29 19:05:01 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 250 seconds)
2021-06-29 19:05:37 +0200 <dsal> Heh. My morning has been replacing Text with a more meaningful type.
2021-06-29 19:06:20 +0200 <dsal> the amazing part is after all the refactoring pain, the tests passed the first time.
2021-06-29 19:09:54 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-06-29 19:12:06 +0200 <arjun> FilePath is also String
2021-06-29 19:12:13 +0200 <arjun> and its EVERYWHERE
2021-06-29 19:12:42 +0200 <dsal> At work, we have a filepath that's a ByteString. That's differently bad.
2021-06-29 19:13:34 +0200 <arjun> can't have emoji paths lol
2021-06-29 19:13:37 +0200 <arjun> FAIL
2021-06-29 19:13:41 +0200 <dminuoso> arjun: Sadly merijn isn't here. He could probably (?) go onto a rant about that.
2021-06-29 19:13:52 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-06-29 19:14:02 +0200L29Ah(~L29Ah@user/l29ah) (Ping timeout: 268 seconds)
2021-06-29 19:14:17 +0200favonia(~favonia@user/favonia)
2021-06-29 19:14:38 +0200 <dminuoso> For instance, is the normalized (or denormalized) form of a string an equal path?
2021-06-29 19:14:56 +0200 <dminuoso> Locking the notion of filepaths to unicode is a bizarre thing
2021-06-29 19:16:11 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru)
2021-06-29 19:16:20 +0200Morrow(~MorrowM_@147.161.8.23)
2021-06-29 19:16:41 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru) ()
2021-06-29 19:17:27 +0200 <yushyin> i have good faith in merijn that he can rant just about anything! :D
2021-06-29 19:17:55 +0200L29Ah(~L29Ah@user/l29ah)
2021-06-29 19:18:26 +0200en30(~en30@p6356230-ipngn31101marunouchi.tokyo.ocn.ne.jp)
2021-06-29 19:19:36 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 19:20:53 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Remote host closed the connection)
2021-06-29 19:21:06 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 19:24:38 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 256 seconds)
2021-06-29 19:24:40 +0200cheater(~Username@user/cheater) (Ping timeout: 246 seconds)
2021-06-29 19:25:18 +0200cheater(~Username@user/cheater)
2021-06-29 19:25:23 +0200pavonia(~user@user/siracusa)
2021-06-29 19:26:39 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-06-29 19:26:41 +0200 <arjun> he seems notorious.. i mean famous around here? : P
2021-06-29 19:27:03 +0200 <arjun> assumeing he is the right pronoun?
2021-06-29 19:29:06 +0200 <monochrom> "type FilePath = String" was invented at a time when every Haskell implementation paid lip service to "Char is unicode"
2021-06-29 19:29:33 +0200 <monochrom> i.e., their putChar and getChar were ASCII only.
2021-06-29 19:30:26 +0200AWizzArd(~code@user/awizzard)
2021-06-29 19:30:35 +0200 <dsal> ascii is the only important part of unicode
2021-06-29 19:30:49 +0200 <boxscape_> Was Haskell ever meant to be used in production when the first person wrote `type FilePath = String`
2021-06-29 19:32:19 +0200 <dminuoso> boxscape_: Well it was standardized in Haskell98, and at that time it was mostly still academic curiosity, so..
2021-06-29 19:33:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Remote host closed the connection)
2021-06-29 19:33:39 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-06-29 19:35:56 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) (Ping timeout: 252 seconds)
2021-06-29 19:36:55 +0200 <qrpnxz> i feel like sequenceA without functor could be it's own type class
2021-06-29 19:37:45 +0200azeem(~azeem@176.200.239.16)
2021-06-29 19:38:29 +0200arjun(~user@user/arjun) (ERC (IRC client for Emacs 28.0.50))
2021-06-29 19:38:37 +0200monochrom-o monochrom
2021-06-29 19:38:49 +0200 <boxscape_> qrpnxz https://hackage.haskell.org/package/semigroupoids-5.3.5/docs/Data-Semigroup-Traversable.html#v:seq…
2021-06-29 19:39:01 +0200 <boxscape_> or wait
2021-06-29 19:39:02 +0200 <qrpnxz> though to be fair, idk when you'd get such a structure full of applicatives, that you couldn't map into, that you'd want to sequence
2021-06-29 19:39:05 +0200 <boxscape_> I'm wrong
2021-06-29 19:39:11 +0200 <boxscape_> that's without pure, not without fmap
2021-06-29 19:39:19 +0200 <qrpnxz> yeah lol :)
2021-06-29 19:39:23 +0200 <qrpnxz> thanks for input tho
2021-06-29 19:39:44 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 19:39:51 +0200 <dminuoso> qrpnxz: I think it helps to think of the signature function as traverse, not sequence
2021-06-29 19:40:01 +0200 <monochrom> I don't understand "sequenceA without functor".
2021-06-29 19:40:28 +0200 <qrpnxz> simply a thing you can sequence, but you can't traverse it,
2021-06-29 19:40:42 +0200 <dsal> qrpnxz: Can you write an example?
2021-06-29 19:40:43 +0200 <qrpnxz> because to sequence you'd need fmap to do sequenceA . fmap
2021-06-29 19:40:59 +0200 <monochrom> I don't know what your definition of "sequence" is in this context.
2021-06-29 19:41:01 +0200 <qrpnxz> like i said, there might not be any real world use for it
2021-06-29 19:41:03 +0200 <qrpnxz> but it's a thing
2021-06-29 19:41:07 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 246 seconds)
2021-06-29 19:41:09 +0200 <monochrom> Even in this context. Despite this context.
2021-06-29 19:41:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-29 19:41:26 +0200 <qrpnxz> by sequence i mean the exact same sequence from traversable type class
2021-06-29 19:41:28 +0200 <dminuoso> "but it's a thing"
2021-06-29 19:41:33 +0200 <qrpnxz> just without requiring fmap
2021-06-29 19:41:37 +0200 <dminuoso> Can you give a precise definition/example?
2021-06-29 19:41:59 +0200 <qrpnxz> so i can have a structure t (f a) and turn it into f (t a)
2021-06-29 19:42:11 +0200 <dsal> Yes, but like, an example that compiles. :)
2021-06-29 19:42:33 +0200 <dminuoso> qrpnxz: So I have a vague idea of what you *might* be looking for.
2021-06-29 19:42:56 +0200 <qrpnxz> sure you can just take an Identity Identity 1 and turn it into an Identity Identity 1, there's an example lol
2021-06-29 19:43:23 +0200 <dsal> But what's the function that does that look like?
2021-06-29 19:44:02 +0200azeem(~azeem@176.200.239.16) (Read error: Connection reset by peer)
2021-06-29 19:44:09 +0200 <qrpnxz> sequence (Identity fa) = fmap Identity fa
2021-06-29 19:44:33 +0200 <monochrom> OK for starters on how you are very vague and ambiguous: The type of "sequence" is "(Traversable t, Monad m) => t (m a) -> m (t a)". There are two constraints, "Traversable t" and "Monad m". Which one are you saying you can weaken?
2021-06-29 19:44:58 +0200 <monochrom> And that's just the most immediate ambiguity.
2021-06-29 19:45:06 +0200 <qrpnxz> like i said i'm talking about sequenceA but i don't wanna type sequenceA
2021-06-29 19:45:08 +0200 <qrpnxz> cmon
2021-06-29 19:45:54 +0200 <monochrom> You can do a great service to clarity and precision by stating positively the type and constraints you want, rather than merely what you don't want.
2021-06-29 19:46:02 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it)
2021-06-29 19:46:07 +0200 <qrpnxz> in this case it would be like (Constructable t, Applicative f => t (f a) -> f (t a) where Constructable is the name of a type class that just has sequenceA and no functor requirement
2021-06-29 19:46:09 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e)
2021-06-29 19:46:36 +0200 <dminuoso> qrpnxz: I see. Unfoldable is that thing.
2021-06-29 19:46:48 +0200 <dminuoso> https://hackage.haskell.org/package/unfoldable-1.0.1/docs/Data-Unfoldable.html
2021-06-29 19:47:05 +0200 <dminuoso> unfold :: (Unfoldable t, Unfolder f) => f a -> f (t a)
2021-06-29 19:47:16 +0200 <qrpnxz> nice
2021-06-29 19:47:18 +0200 <dminuoso> In some way, we could think of Traversable as Foldable and Unfoldable.
2021-06-29 19:47:27 +0200 <qrpnxz> wait, unfolder?
2021-06-29 19:47:30 +0200 <dminuoso> (Im not sure whether this will actually hold for infinite structures, though)
2021-06-29 19:48:09 +0200 <qrpnxz> i think unfolder could just be functor but idk
2021-06-29 19:48:43 +0200 <dminuoso> qrpnxz: You need Alternative at least for the construction on f.
2021-06-29 19:48:57 +0200 <dsal> I find when I have confusion on things like this, I just try to do the thing that I think is obvious and find out either why it's not or build a thing and start using it.
2021-06-29 19:51:23 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 19:52:02 +0200 <monochrom> I guess some people's stance is "the reason I am in IRC not IDE is precisely because I want to just talk"
2021-06-29 19:52:23 +0200 <qrpnxz> yeah this type signature does not match the one i gave really
2021-06-29 19:52:41 +0200 <qrpnxz> it's unfolder to unfolder of unfoldable
2021-06-29 19:53:06 +0200 <qrpnxz> monochrom, lmao thanks for that
2021-06-29 19:54:30 +0200cheater1__(~Username@user/cheater)
2021-06-29 19:54:46 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2021-06-29 19:54:53 +0200cheater1__cheater
2021-06-29 19:55:16 +0200 <qrpnxz> if i try to look up my signature all i get is sequenceA lol, i don't think there is a package that does what i'm saying
2021-06-29 19:55:32 +0200 <qrpnxz> anyway like i said it probably has no good real world use, just a thought
2021-06-29 19:55:50 +0200 <monochrom> You can write mockup code and examples.
2021-06-29 19:56:56 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 256 seconds)
2021-06-29 19:57:49 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-06-29 19:59:58 +0200acidjnk(~acidjnk@p200300d0c72b9572bd416add378a35d9.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-06-29 20:00:07 +0200 <dsal> Most of these things aren't very big. You could build Traversable from a description of it pretty quickly.
2021-06-29 20:00:20 +0200 <dsal> For your type of thing, I tend to just write up a couple of examples and then make them work.
2021-06-29 20:01:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 20:02:22 +0200jolly(~jolly@208.180.97.158) (Ping timeout: 272 seconds)
2021-06-29 20:02:43 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-06-29 20:04:07 +0200Pickchea(~private@user/pickchea)
2021-06-29 20:04:35 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 20:05:58 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2021-06-29 20:06:13 +0200boxscape_(~boxscape_@p4ff0ba7a.dip0.t-ipconnect.de) (Quit: Connection closed)
2021-06-29 20:06:54 +0200zmt01(~zmt00@user/zmt00)
2021-06-29 20:07:01 +0200boxscape_(~boxscape_@p4ff0ba7a.dip0.t-ipconnect.de)
2021-06-29 20:07:35 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-29 20:09:06 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-06-29 20:09:23 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
2021-06-29 20:10:01 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 250 seconds)
2021-06-29 20:10:22 +0200curiousgay(~curiousgg@77-120-144-167.kha.volia.net)
2021-06-29 20:13:00 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Remote host closed the connection)
2021-06-29 20:17:28 +0200Feuermagier(~Feuermagi@user/feuermagier)
2021-06-29 20:20:40 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-29 20:22:24 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 20:25:34 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-29 20:26:51 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-29 20:27:05 +0200feliix42(~felix@gibbs.uberspace.de)
2021-06-29 20:28:34 +0200 <qrpnxz> that simple https://termbin.com/nqdo
2021-06-29 20:30:42 +0200nschoe(~quassel@2a01:e0a:8e:a190:d025:e55c:9af3:6699) (Ping timeout: 240 seconds)
2021-06-29 20:30:58 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 20:31:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-29 20:33:34 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-06-29 20:34:14 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-29 20:34:42 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-06-29 20:36:09 +0200Shaeto(~Shaeto@94.25.234.81) (Quit: WeeChat 3.1)
2021-06-29 20:36:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-06-29 20:39:37 +0200 <dsal> I thought you didn't want a functor?
2021-06-29 20:40:42 +0200 <qrpnxz> that's fmapping the applicative, not the constructable
2021-06-29 20:40:53 +0200 <qrpnxz> the applicative is of course a functor
2021-06-29 20:40:56 +0200Guest6(~Guest6@d-137-103-195-117.fl.cpe.atlanticbb.net)
2021-06-29 20:41:21 +0200 <qrpnxz> dsal,
2021-06-29 20:45:56 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Remote host closed the connection)
2021-06-29 20:46:31 +0200 <dsal> Oh, you mean you don't want the traversable itself to be a functor (or foldable). I don't use sequenceA enough to have run into something where that mattered. Fewer constraints are better, but `traverse` is mostly what I use there.
2021-06-29 20:48:26 +0200 <qrpnxz> yeah i can't think of when you'd use this class I'm describing. Even if you think of Data.Set, which is not a functor, the Constructable instance would have the same problem, that (a) in (f a) needs to have an ord constraint, so you couldn't use it there either.
2021-06-29 20:49:06 +0200 <qrpnxz> it's like if you had an applicative without functor, yeah you could make that, but like when are you gonna use it lol
2021-06-29 20:49:25 +0200 <qrpnxz> wait nvm lol
2021-06-29 20:49:30 +0200 <qrpnxz> you can implement functor with applicative
2021-06-29 20:49:34 +0200 <qrpnxz> but you get the point hopefully
2021-06-29 20:49:55 +0200 <qrpnxz> though ig some people do like Apply lol
2021-06-29 20:50:10 +0200Deide(~Deide@wire.desu.ga)
2021-06-29 20:50:10 +0200Deide(~Deide@wire.desu.ga) (Changing host)
2021-06-29 20:50:10 +0200Deide(~Deide@user/deide)
2021-06-29 20:50:34 +0200 <dsal> Finding such patterns isn't bad. I actually needed fold1 this morning. heh
2021-06-29 20:51:36 +0200 <qrpnxz> what? you didn't want to type (\(x:xs) -> foldl (\a x -> a <> x) x xs)?
2021-06-29 20:51:39 +0200 <qrpnxz> :P
2021-06-29 20:52:32 +0200 <dsal> Yeah, semigroupoids did that part for me.
2021-06-29 20:53:12 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-29 20:57:46 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 21:00:20 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Quit: Quitting IRC :()
2021-06-29 21:00:40 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
2021-06-29 21:00:55 +0200motherfsck(~motherfsc@user/motherfsck) (Remote host closed the connection)
2021-06-29 21:01:58 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2021-06-29 21:04:52 +0200Morrow(~MorrowM_@147.161.8.23) (Read error: Connection reset by peer)
2021-06-29 21:05:20 +0200Guest95(~Guest95@cpe-45-48-168-168.socal.res.rr.com)
2021-06-29 21:07:10 +0200 <Guest95> Anyone know how snap-server and/or warp handle requests which are in progress during a ctrl-c/SIGINT? Are they given time to complete?
2021-06-29 21:08:20 +0200 <Guest95> We use SIGINT to kill/restart servers whenever code is updated, would be a waste to mess up requests each time we do
2021-06-29 21:08:44 +0200Morrow(~MorrowM_@147.161.8.23)
2021-06-29 21:10:14 +0200acidjnk(~acidjnk@p200300d0c72b95720002fc1121ac54e4.dip0.t-ipconnect.de)
2021-06-29 21:12:59 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-06-29 21:13:13 +0200juhp(~juhp@128.106.188.66)
2021-06-29 21:14:21 +0200Guest6(~Guest6@d-137-103-195-117.fl.cpe.atlanticbb.net) (Quit: Client closed)
2021-06-29 21:15:07 +0200nschoe(~quassel@2a01:e0a:8e:a190:b26c:5983:773f:5c24)
2021-06-29 21:16:48 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-06-29 21:16:48 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-06-29 21:17:09 +0200allbery_bgeekosaur
2021-06-29 21:20:36 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-29 21:20:41 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 21:22:31 +0200jolly(~jolly@208.180.97.158)
2021-06-29 21:22:57 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 21:24:58 +0200nschoe(~quassel@2a01:e0a:8e:a190:b26c:5983:773f:5c24) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-06-29 21:27:35 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-06-29 21:29:51 +0200myShoggoth(~myShoggot@75.164.51.64) (Ping timeout: 256 seconds)
2021-06-29 21:32:12 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-29 21:32:44 +0200myShoggoth(~myShoggot@75.164.51.64)
2021-06-29 21:34:31 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2021-06-29 21:35:23 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 21:37:50 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-29 21:39:37 +0200 <boxscape_> hmm I'll likely benchmark if I end up doing this, but can adding a second (rarely used) constructor to a datatype make a difference performance-wise? I.e. does it prevent some optimizations?
2021-06-29 21:39:58 +0200 <ephemient> Guest95: I'm not a warp user, but the docs have https://hackage.haskell.org/package/warp/docs/Network-Wai-Handler-Warp.html#v:setGracefulShutdownT…
2021-06-29 21:40:30 +0200zincy(~tom@2a00:23c8:9700:8001:254e:b3c4:89f3:610b)
2021-06-29 21:40:39 +0200test_mmm(~test_mmm@pool-100-8-149-10.nwrknj.fios.verizon.net)
2021-06-29 21:41:49 +0200 <geekosaur> boxscape_, it'd prevent unboxing in cases where that's applicable
2021-06-29 21:41:55 +0200 <boxscape_> hm, I see
2021-06-29 21:43:16 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-06-29 21:43:37 +0200ec(~ec@gateway/tor-sasl/ec)
2021-06-29 21:47:45 +0200test_mmm(~test_mmm@pool-100-8-149-10.nwrknj.fios.verizon.net) (Quit: Client closed)
2021-06-29 21:48:34 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-06-29 21:53:37 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 21:54:38 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-29 21:58:37 +0200Guest67(~Guest67@rrcs-69-75-173-34.west.biz.rr.com)
2021-06-29 22:01:36 +0200Guest67(~Guest67@rrcs-69-75-173-34.west.biz.rr.com) (Client Quit)
2021-06-29 22:02:16 +0200Guest95(~Guest95@cpe-45-48-168-168.socal.res.rr.com) (Ping timeout: 246 seconds)
2021-06-29 22:02:44 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-06-29 22:03:01 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-06-29 22:04:10 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-29 22:04:42 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 240 seconds)
2021-06-29 22:05:22 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-29 22:06:01 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2021-06-29 22:07:16 +0200alex3(~alex3@BSN-77-82-41.static.siol.net) (Ping timeout: 268 seconds)
2021-06-29 22:08:29 +0200juhp(~juhp@128.106.188.66)
2021-06-29 22:10:29 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
2021-06-29 22:11:49 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-29 22:12:56 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 22:13:20 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-29 22:16:00 +0200TranquilEcho(~grom@user/tranquilecho)
2021-06-29 22:17:08 +0200dunkeln(~dunkeln@188.71.193.140) (Quit: leaving)
2021-06-29 22:17:16 +0200chisui(~chisui@200116b86458b700e549230632d59732.dip.versatel-1u1.de)
2021-06-29 22:18:45 +0200alex3(~alex3@BSN-77-82-41.static.siol.net)
2021-06-29 22:20:17 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-06-29 22:20:37 +0200favonia(~favonia@user/favonia)
2021-06-29 22:21:35 +0200myShoggoth(~myShoggot@75.164.51.64) (Read error: Connection reset by peer)
2021-06-29 22:21:52 +0200myShoggoth(~myShoggot@75.164.51.64)
2021-06-29 22:21:54 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-06-29 22:28:55 +0200michalz(~michalz@185.246.204.122) (Remote host closed the connection)
2021-06-29 22:29:01 +0200jneira_(~jneira_@217.red-81-39-172.dynamicip.rima-tde.net)
2021-06-29 22:29:28 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-06-29 22:29:39 +0200haykam2(~haykam@static.100.2.21.65.clients.your-server.de)
2021-06-29 22:29:49 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 246 seconds)
2021-06-29 22:30:02 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2021-06-29 22:30:21 +0200pavonia(~user@user/siracusa)
2021-06-29 22:32:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-29 22:32:28 +0200Morrow(~MorrowM_@147.161.8.23) (Ping timeout: 272 seconds)
2021-06-29 22:35:04 +0200sh9(~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 3.0.1)
2021-06-29 22:36:27 +0200Morrow(~MorrowM_@147.161.8.23)
2021-06-29 22:38:34 +0200favonia(~favonia@user/favonia) (Ping timeout: 246 seconds)
2021-06-29 22:41:04 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-29 22:41:53 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-06-29 22:42:05 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-29 22:42:49 +0200pieguy128(~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-29 22:43:24 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca)
2021-06-29 22:45:18 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
2021-06-29 22:45:57 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-06-29 22:46:26 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f)
2021-06-29 22:48:01 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-29 22:48:21 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-29 22:48:21 +0200favonia(~favonia@user/favonia)
2021-06-29 22:49:23 +0200ec(~ec@gateway/tor-sasl/ec)
2021-06-29 22:50:53 +0200warnz(~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 256 seconds)
2021-06-29 22:56:00 +0200mekeor(~user@2001:a61:3a15:df01:78b3:82f:476c:65cd) (Ping timeout: 256 seconds)
2021-06-29 22:59:29 +0200bilegeek(~bilegeek@2600:1008:b015:3e96:6f34:1a42:6ac5:3b86)
2021-06-29 23:03:21 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 256 seconds)
2021-06-29 23:05:06 +0200mpt(~tom@2a02:908:1862:49e0::5) (Ping timeout: 240 seconds)
2021-06-29 23:06:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-06-29 23:07:18 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 272 seconds)
2021-06-29 23:09:32 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-06-29 23:09:56 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-29 23:10:15 +0200stevenxl_(~stevenlei@174.128.182.152)
2021-06-29 23:11:44 +0200stevenxl(~stevenlei@174.128.182.19) (Ping timeout: 272 seconds)
2021-06-29 23:14:21 +0200laguneucl(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Quit: Leaving)
2021-06-29 23:14:35 +0200laguneucl(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-06-29 23:17:03 +0200laguneuclchomwitt
2021-06-29 23:17:26 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-06-29 23:21:14 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-06-29 23:25:55 +0200jlamothe(~jlamothe@198.251.57.81) (Ping timeout: 268 seconds)
2021-06-29 23:28:23 +0200 <Unhammer> > GHC loves single-constructor data-types:
2021-06-29 23:28:24 +0200 <lambdabot> <hint>:1:30: error: parse error on input ‘data’
2021-06-29 23:28:32 +0200 <Unhammer> https://downloads.haskell.org/ghc/latest/docs/html/users_guide/hints.html#faster-producing-a-progr…
2021-06-29 23:29:01 +0200 <Unhammer> boxscape_: ^
2021-06-29 23:32:42 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 268 seconds)
2021-06-29 23:32:49 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-06-29 23:34:36 +0200favonia(~favonia@user/favonia)
2021-06-29 23:34:38 +0200egoist(~egoist@186.235.82.105) (Quit: WeeChat 3.2)
2021-06-29 23:35:42 +0200dunj4(~dunj3@p200300f61714a6027bbd4f06e8da6b8b.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-06-29 23:38:55 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-29 23:39:57 +0200fabfianda(~fabfianda@37.183.255.57)
2021-06-29 23:41:06 +0200spatchkaa(~spatchkaa@S010600fc8da47b63.gv.shawcable.net)
2021-06-29 23:42:46 +0200lavaman(~lavaman@98.38.249.169)
2021-06-29 23:44:19 +0200aostiles(uid505622@id-505622.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-29 23:47:34 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-06-29 23:49:23 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-06-29 23:49:37 +0200cheater(~Username@user/cheater) (Ping timeout: 246 seconds)
2021-06-29 23:50:06 +0200cheater(~Username@user/cheater)
2021-06-29 23:53:09 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Quit: Leaving)
2021-06-29 23:53:58 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-06-29 23:56:55 +0200Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-06-29 23:57:24 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-29 23:58:39 +0200spruit11_(~quassel@2a02:a467:ccd6:1:70d9:6b8a:7264:8769)