2020/11/03

2020-11-03 00:00:18 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-03 00:01:32 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-03 00:01:39 +0100jedws(~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 00:03:05 +0100jedws(~jedws@101.184.150.81)
2020-11-03 00:04:59 +0100hekkaidekapus{hekkaidekapus
2020-11-03 00:05:26 +0100alp(~alp@2a01:e0a:58b:4920:ecfe:1146:fdb5:4e48) (Ping timeout: 264 seconds)
2020-11-03 00:05:37 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 264 seconds)
2020-11-03 00:06:50 +0100 <hekkaidekapus> koz_: 1) Transitive deps as a graph: `cabal-plan dot`.
2020-11-03 00:07:08 +0100 <koz_> hekkaidekapus: Just as a list is fine.
2020-11-03 00:07:14 +0100 <hekkaidekapus> 2) .prof visualisation: <https://github.com/jaspervdj/profiteur>
2020-11-03 00:07:48 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 00:07:58 +0100 <hekkaidekapus> 3) Nowadays, GHC has so-called ‘events’, read more at <file:///home/tchouri/Downloads/eventful%20GHC-Alp%20Mestanogullari_2019-09-24.html>
2020-11-03 00:08:12 +0100macrover(~macrover@ip70-189-231-35.lv.lv.cox.net)
2020-11-03 00:08:18 +0100 <hekkaidekapus> oops!
2020-11-03 00:08:22 +0100 <hekkaidekapus> <https://www.well-typed.com/blog/2019/09/eventful-ghc/>
2020-11-03 00:09:18 +0100 <monochrom> Oh, cabal-plan is a much better tool for this.
2020-11-03 00:09:30 +0100 <monochrom> I keep forgetting that it exists.
2020-11-03 00:09:30 +0100 <koz_> profiteur looks great!
2020-11-03 00:09:41 +0100 <koz_> (I am disappoint it wasn't named 'profiterole')
2020-11-03 00:09:43 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 00:09:46 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-03 00:10:17 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 260 seconds)
2020-11-03 00:10:34 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-11-03 00:10:52 +0100 <koz_> Let me try profiteur.
2020-11-03 00:11:26 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-11-03 00:12:14 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-03 00:12:43 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-11-03 00:12:53 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 00:13:38 +0100 <koz_> hekkaidekapus: Is cabal-plan a separate thing?
2020-11-03 00:13:44 +0100 <koz_> Like, where do I get it?
2020-11-03 00:14:00 +0100 <hekkaidekapus> It’s part of phadej-verse :)
2020-11-03 00:14:20 +0100 <koz_> Lol, the Phadej Extended Universe.
2020-11-03 00:14:28 +0100 <hekkaidekapus> Rather haskellari-verse :P
2020-11-03 00:14:57 +0100m0rphism(~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds)
2020-11-03 00:15:28 +0100 <Cheery> Is there a function to clear out ()s from a type?
2020-11-03 00:15:44 +0100 <Axma45768> ()'s are a type...
2020-11-03 00:15:50 +0100 <Axma45768> you can't just remove them
2020-11-03 00:15:57 +0100 <Cheery> eg. ((), a) -> a
2020-11-03 00:16:10 +0100 <Axma45768> @djinn ((), a) -> a
2020-11-03 00:16:10 +0100 <lambdabot> f (_, a) = a
2020-11-03 00:16:36 +0100 <Cheery> ok, then (((), a), ()) -> a
2020-11-03 00:16:42 +0100pacak(~pacak@bb116-14-220-91.singnet.com.sg) (Read error: Connection reset by peer)
2020-11-03 00:16:58 +0100 <hekkaidekapus> koz_: <https://github.com/haskell-hvr/cabal-plan> (Another oops! It’s hvr-verse actually.)
2020-11-03 00:17:00 +0100 <Cheery> I mean I'd want a routine that does this, so I don't need to.
2020-11-03 00:17:04 +0100pacak(~pacak@bb116-14-220-91.singnet.com.sg)
2020-11-03 00:17:14 +0100 <koz_> hekkaidekapus: Thank you so much!
2020-11-03 00:17:19 +0100 <hekkaidekapus> np
2020-11-03 00:18:57 +0100 <hekkaidekapus> (Both profiteur and cabal-plan are also on Hackage.)
2020-11-03 00:20:01 +0100hackagehackage-security-HTTP 0.1.1.1 - Hackage security bindings against the HTTP library https://hackage.haskell.org/package/hackage-security-HTTP-0.1.1.1 (HerbertValerioRiedel)
2020-11-03 00:20:11 +0100 <Axma45768> Cheery: what would the type of the function you want be?
2020-11-03 00:21:32 +0100 <Cheery> well it could be (a -> Canon a), or Canon a b => a -> b
2020-11-03 00:21:36 +0100christo(~chris@81.96.113.213)
2020-11-03 00:21:46 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-11-03 00:22:34 +0100 <Axma45768> I think the answer to your question is "no", it doesn't currently exist, but it looks like you might have a way to get there (though what should happen in the ((),()) case)
2020-11-03 00:22:53 +0100 <Cheery> it should become ()
2020-11-03 00:24:05 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net)
2020-11-03 00:26:15 +0100 <Axma45768> should like it may be doable with a type family, but I'm unsure what the base case would be; since both () -> () and !() -> !() both need to be there
2020-11-03 00:26:23 +0100 <Axma45768> give it a go and see if you can make it work
2020-11-03 00:28:57 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-11-03 00:30:01 +0100conal(~conal@198.8.81.68) (Quit: Computer has gone to sleep.)
2020-11-03 00:31:09 +0100pta2002(~quassel@104.248.23.110) (Ping timeout: 268 seconds)
2020-11-03 00:33:06 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 00:33:59 +0100pta2002(~quassel@104.248.23.110)
2020-11-03 00:34:20 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 00:35:15 +0100conal(~conal@198.8.81.68)
2020-11-03 00:37:10 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 00:38:24 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-03 00:39:08 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Ping timeout: 260 seconds)
2020-11-03 00:39:31 +0100Chi1thangoo(~Chi1thang@87.112.60.168) (Ping timeout: 246 seconds)
2020-11-03 00:39:53 +0100 <bradparker> Hi all, can anyone direct me to some resources that explain why http://hackage.haskell.org/package/servant-server-0.18/docs/Servant-Server.html#v:serve needs both the `Proxy api` argument and the `Server api` argument to "get hold of" `api`?
2020-11-03 00:39:57 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
2020-11-03 00:40:04 +0100 <bradparker> I remember reading some discussion about why the `Server api` argument wasn't enough (something about it being a type-family iirc) but I can't find my way back to it, can't remember the gist ...
2020-11-03 00:41:06 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-03 00:41:20 +0100christo(~chris@81.96.113.213)
2020-11-03 00:42:15 +0100conal(~conal@198.8.81.68) (Quit: Computer has gone to sleep.)
2020-11-03 00:42:21 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2020-11-03 00:45:55 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2020-11-03 00:46:47 +0100 <gobbleguy> bradparker: Server is type Server api = ServerT api Handler
2020-11-03 00:47:02 +0100 <gobbleguy> ServerT is an associated type family of the HasServer class
2020-11-03 00:47:09 +0100 <gobbleguy> type families are not injective
2020-11-03 00:47:21 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com)
2020-11-03 00:47:38 +0100 <gobbleguy> so that means just knowing what they evaluated to you can't definitively determine their arguments
2020-11-03 00:49:05 +0100 <gobbleguy> If I told you 'not x == False' you could work out what x was, but if I told you 'null xs == False' you wouldn't be able to tell me what xs was. not is injective, null is not
2020-11-03 00:50:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 00:52:09 +0100conal(~conal@64.71.133.70)
2020-11-03 00:52:36 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
2020-11-03 00:52:57 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-03 00:54:07 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:c4b9:178f:4076:90ef) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 00:54:18 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-03 00:54:45 +0100 <bradparker> Great, thanks for that :). `ServerT SomeApi => SomeArg -> Handler SomeResult` has lost a lot of information about `SomeApi`
2020-11-03 00:55:36 +0100renzhi(~renzhi@2607:fa49:655f:e600::28da)
2020-11-03 00:56:05 +0100 <bradparker> Many possible arguments, with things like `"namespace" :> ...` and `Get '[JSON] ...` can get the same result
2020-11-03 00:57:54 +0100 <bqv> man i sure have missed haskell
2020-11-03 00:58:09 +0100 <bqv> haven't quite missed the analysis paralysis
2020-11-03 00:58:15 +0100 <bqv> but i've missed these beautiful types
2020-11-03 00:59:01 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 264 seconds)
2020-11-03 01:00:01 +0100ffej(~ffej@195.206.169.184) ()
2020-11-03 01:01:18 +0100 <Axma45768> gobbleguy: that's a great explanation, nice work
2020-11-03 01:02:10 +0100Axma45768Axman6
2020-11-03 01:02:43 +0100 <gobbleguy> Using glirc?
2020-11-03 01:03:35 +0100 <Axman6> I'm using glirc
2020-11-03 01:03:37 +0100 <gobbleguy> If you want to avoid my conservative nickname fallback code you can add more nicknames to your list of alternatives :)
2020-11-03 01:03:52 +0100 <Axman6> I was surprised how good that fallback was actually
2020-11-03 01:04:12 +0100 <Axman6> gobbleguy = glguy?
2020-11-03 01:04:14 +0100 <gobbleguy> yeah
2020-11-03 01:04:28 +0100 <Axman6> everything makes sense
2020-11-03 01:04:35 +0100 <gobbleguy> turn on "show-accounts: yes" so you don't have to guess :)
2020-11-03 01:04:58 +0100 <gobbleguy> >>> 16:01 Axma45768(axman6): gobbleguy: that's a great explanation, nice work
2020-11-03 01:05:20 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-03 01:08:45 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 01:09:15 +0100 <monochrom> Yikes, gobbleguy, is it Thanksgiving turkey theme now? :)
2020-11-03 01:09:45 +0100 <monochrom> "Yeah after Steam Halloween Sale we're looking forward to Steam Autumn Sale!"
2020-11-03 01:10:06 +0100 <Axman6> it's Spring tho
2020-11-03 01:10:16 +0100 <gobbleguy> I just want IRC to be fun ^_^ What's more fun than seasonal nicknames?
2020-11-03 01:10:25 +0100 <koz_> Axman6: Damn that Northern Hemisphere centrism.
2020-11-03 01:10:55 +0100 <Axman6> i reckon, bloody seppos
2020-11-03 01:10:57 +0100PerseusPlease(~{mikey}@212.86.35.157) (Quit: Leaving)
2020-11-03 01:11:03 +0100 <gobbleguy> Does Steam show that it's an Autum Sale in the southern hemisphere?
2020-11-03 01:11:08 +0100 <gobbleguy> +n
2020-11-03 01:11:50 +0100 <Axman6> our internet isn't fast enough to get steam
2020-11-03 01:12:18 +0100 <gobbleguy> Warm-water Autumn Sale!
2020-11-03 01:12:23 +0100vacm(~vacwm@70.23.92.191)
2020-11-03 01:16:38 +0100howdoi(uid224@gateway/web/irccloud.com/x-gtoygnwcsyvwpslb)
2020-11-03 01:17:09 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
2020-11-03 01:17:53 +0100gxt(~gxt@gateway/tor-sasl/gxt)
2020-11-03 01:19:11 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 01:21:52 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2020-11-03 01:24:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2020-11-03 01:27:18 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) ()
2020-11-03 01:27:23 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-03 01:29:17 +0100emnmauiigw^(emnmauiigw@ip98-184-89-2.mc.at.cox.net)
2020-11-03 01:29:50 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
2020-11-03 01:31:19 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-11-03 01:32:20 +0100fendor__(~fendor@91.141.3.235.wireless.dyn.drei.com)
2020-11-03 01:32:39 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9)
2020-11-03 01:34:36 +0100fendor_(~fendor@91.141.1.122.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
2020-11-03 01:36:22 +0100mimi1vx(~mimi@tulipan.habr.nat.praha12.net) (Ping timeout: 256 seconds)
2020-11-03 01:39:56 +0100Jeanne-Kamikaze(~Jeanne-Ka@68.235.43.142)
2020-11-03 01:41:30 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 01:46:54 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 01:47:52 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
2020-11-03 01:48:32 +0100vacm(~vacwm@70.23.92.191)
2020-11-03 01:48:57 +0100psygate(~psygate@unaffiliated/psygate) (Quit: Leaving)
2020-11-03 01:49:25 +0100Axman6considers /nick Axmurderman6
2020-11-03 01:50:10 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-03 01:52:18 +0100Jeanne-Kamikaze(~Jeanne-Ka@68.235.43.142) (Quit: Leaving)
2020-11-03 01:52:52 +0100plutoniix(~q@175.176.222.7)
2020-11-03 01:59:08 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-03 02:00:27 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-11-03 02:00:45 +0100ps-auxw(~arneb@p548c6f52.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-03 02:02:35 +0100mimi1vx(~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e)
2020-11-03 02:02:35 +0100carlomagno(~cararell@148.87.23.11) (Remote host closed the connection)
2020-11-03 02:04:05 +0100carlomagno(~cararell@148.87.23.4)
2020-11-03 02:04:23 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-11-03 02:04:30 +0100hackagettc 0.3.0.0 - Textual Type Classes https://hackage.haskell.org/package/ttc-0.3.0.0 (TravisCardwell)
2020-11-03 02:06:00 +0100hackagepredicate-typed 0.7.4.2 - Predicates, Refinement types and Dsl https://hackage.haskell.org/package/predicate-typed-0.7.4.2 (gbwey)
2020-11-03 02:06:13 +0100 <bqv> writing to a tchan is nonblocking, right?
2020-11-03 02:06:26 +0100 <bqv> linked list, surely it is
2020-11-03 02:06:30 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-03 02:06:34 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-03 02:06:49 +0100ps-auxw(~arneb@p548d590b.dip0.t-ipconnect.de)
2020-11-03 02:07:15 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Quit: geowiesnot)
2020-11-03 02:11:17 +0100ps-auxw(~arneb@p548d590b.dip0.t-ipconnect.de) (Disconnected by services)
2020-11-03 02:11:26 +0100ps-auxw(~arneb@p548d571d.dip0.t-ipconnect.de)
2020-11-03 02:22:48 +0100 <edwardk> for some reason whenever i see tchan i think 4chan
2020-11-03 02:22:58 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2020-11-03 02:23:48 +0100 <bqv> if we assume the *chans are counting in base32 it's a possibility
2020-11-03 02:24:27 +0100Lord_of_Life(~Lord@46.217.218.100)
2020-11-03 02:25:30 +0100Lord_of_Life_(~Lord@46.217.223.45) (Ping timeout: 272 seconds)
2020-11-03 02:26:15 +0100 <monochrom> Yes TChan is a mutable linked list.
2020-11-03 02:26:25 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 02:27:10 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-03 02:27:13 +0100Jeanne-Kamikaze(~Jeanne-Ka@68.235.43.86)
2020-11-03 02:29:33 +0100xff0x(~fox@2001:1a81:537c:3e00:9b11:58b1:f4d:830a) (Ping timeout: 268 seconds)
2020-11-03 02:29:55 +0100xff0x(~fox@2001:1a81:537c:3e00:5a39:1b16:9de1:d497)
2020-11-03 02:31:18 +0100vacm(~vacwm@70.23.92.191)
2020-11-03 02:35:48 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 02:36:13 +0100theorb(~theorb@cpc81860-swin19-2-0-cust166.3-1.cable.virginm.net) (Ping timeout: 264 seconds)
2020-11-03 02:36:16 +0100vacm(~vacwm@70.23.92.191) (Ping timeout: 272 seconds)
2020-11-03 02:37:45 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds)
2020-11-03 02:40:07 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-11-03 02:40:17 +0100 <dmwit> What does "blocking" mean to you in the context of STM?
2020-11-03 02:40:44 +0100mimi1vx(~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 240 seconds)
2020-11-03 02:42:03 +0100 <dmwit> Perhaps one sensible meaning would be "calls retry explicitly" (as opposed to retrying because of staleness in the transaction log).
2020-11-03 02:42:50 +0100 <dmwit> If that's the meaning you like, then you can just read the whole source of `writeTChan` (it's only four lines long!) and see that it doesn't mention retry.
2020-11-03 02:42:56 +0100 <dmwit> https://hackage.haskell.org/package/stm-2.5.0.0/docs/src/Control.Concurrent.STM.TChan.html#writeTC…
2020-11-03 02:43:44 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-03 02:44:33 +0100akad_(~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 260 seconds)
2020-11-03 02:45:29 +0100 <dsal> e.g., go chan writes block until something is ready to receive from the channel.
2020-11-03 02:45:33 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net)
2020-11-03 02:45:45 +0100 <dsal> But yeah, reading STM code makes me a little teary eyed.
2020-11-03 02:49:16 +0100 <bqv> i think my question makes less sense than i realised, reading that
2020-11-03 02:51:49 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-03 02:53:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 02:54:38 +0100oatsnoats
2020-11-03 02:56:19 +0100Foritus(~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) (Quit: ლ(ಠ益ಠლ) .:. <Ashley> my porn is hidden in a folder called "BBC Micro Emulator")
2020-11-03 02:57:10 +0100Foritus(~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net)
2020-11-03 02:57:24 +0100Foritus(~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) (Remote host closed the connection)
2020-11-03 02:58:02 +0100conal(~conal@64.71.133.70)
2020-11-03 02:58:11 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
2020-11-03 02:58:12 +0100Foritus(~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net)
2020-11-03 03:01:58 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-xutwnldhztnzggtn)
2020-11-03 03:02:52 +0100noatsoats
2020-11-03 03:03:40 +0100V3ct0r(~V3ct0r@185.163.110.116)
2020-11-03 03:07:08 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 03:08:24 +0100Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 268 seconds)
2020-11-03 03:12:33 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 03:13:10 +0100 <dsal> STM is super composable, so you can make such an exchange (with timeout) if you need it.
2020-11-03 03:14:33 +0100 <dsal> Which, I guess is just TMVar
2020-11-03 03:15:44 +0100acidjnk_new2(~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-03 03:17:30 +0100hackagegargoyle-postgresql 0.2.0.1 - Manage PostgreSQL servers with gargoyle https://hackage.haskell.org/package/gargoyle-postgresql-0.2.0.1 (abrar)
2020-11-03 03:20:33 +0100guest113(~user@49.5.6.87)
2020-11-03 03:21:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 03:21:44 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2020-11-03 03:23:33 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-03 03:27:05 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 03:27:45 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 03:28:35 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-03 03:30:47 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
2020-11-03 03:31:04 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit)
2020-11-03 03:33:44 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-03 03:34:45 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
2020-11-03 03:41:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 03:42:05 +0100xerox_(~xerox@unaffiliated/xerox)
2020-11-03 03:42:13 +0100 <ski> "type families are not injective" -- unless declared to be
2020-11-03 03:44:00 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 03:46:25 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
2020-11-03 03:47:11 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-03 03:47:24 +0100sveit(~sveit@45.77.0.246) (Quit: Bye)
2020-11-03 03:47:33 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 03:47:41 +0100sveit(~sveit@45.77.0.246)
2020-11-03 03:49:12 +0100conal(~conal@64.71.133.70)
2020-11-03 03:51:57 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 03:54:13 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-11-03 03:55:37 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 03:55:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-03 03:56:24 +0100drbean(~drbean@TC210-63-209-59.static.apol.com.tw)
2020-11-03 03:56:30 +0100xff0x(~fox@2001:1a81:537c:3e00:5a39:1b16:9de1:d497) (Ping timeout: 268 seconds)
2020-11-03 03:56:31 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
2020-11-03 03:56:37 +0100borne(~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-11-03 03:57:17 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit)
2020-11-03 03:57:31 +0100dusty_pacer(~pi@2600:6c50:80:2f4a:e9d0:6569:1cea:d1d4)
2020-11-03 03:58:07 +0100xff0x(~fox@2001:1a81:53b4:ba00:23ce:a11d:3032:dba3)
2020-11-03 03:58:20 +0100ddellacosta(~dd@86.106.121.168) (Ping timeout: 258 seconds)
2020-11-03 04:00:01 +0100V3ct0r(~V3ct0r@185.163.110.116) ()
2020-11-03 04:00:32 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
2020-11-03 04:01:24 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 04:02:29 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 04:02:51 +0100christo(~chris@81.96.113.213)
2020-11-03 04:03:24 +0100ddellacosta(~dd@86.106.121.168)
2020-11-03 04:06:24 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 04:08:24 +0100lagothrixGuest44571
2020-11-03 04:08:24 +0100Guest44571(~lagothrix@unaffiliated/lagothrix) (Killed (card.freenode.net (Nickname regained by services)))
2020-11-03 04:08:33 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-11-03 04:08:45 +0100ddellacosta(~dd@86.106.121.168) (Ping timeout: 265 seconds)
2020-11-03 04:09:02 +0100mimi1vx(~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e)
2020-11-03 04:09:13 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 264 seconds)
2020-11-03 04:09:57 +0100 <monochrom> Hahaha, go chan has writer's block, haskell MVar has reader's block.
2020-11-03 04:10:38 +0100 <ezzieyguywuf> I'm going to try converting my beancount journal to hledger today
2020-11-03 04:10:40 +0100 <ezzieyguywuf> wish me luck!
2020-11-03 04:11:09 +0100borne(~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de)
2020-11-03 04:11:12 +0100 <monochrom> More puns in #haskell-offtopic
2020-11-03 04:11:36 +0100christo(~chris@81.96.113.213)
2020-11-03 04:12:39 +0100machinedgod(~machinedg@207.253.244.210) (Ping timeout: 260 seconds)
2020-11-03 04:12:49 +0100macrover(~macrover@ip70-189-231-35.lv.lv.cox.net) (Ping timeout: 264 seconds)
2020-11-03 04:15:04 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-11-03 04:15:14 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 04:17:21 +0100christo(~chris@81.96.113.213)
2020-11-03 04:17:55 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-11-03 04:18:25 +0100 <MarcelineVQ> ezzieyguywuf: ask in #hledger if you get stuck
2020-11-03 04:18:38 +0100borne(~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
2020-11-03 04:18:42 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
2020-11-03 04:20:32 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 04:21:21 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-11-03 04:21:54 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit)
2020-11-03 04:21:57 +0100 <ezzieyguywuf> MarcelineVQ: 👍
2020-11-03 04:24:48 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 04:26:28 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2020-11-03 04:27:34 +0100conal(~conal@64.71.133.70)
2020-11-03 04:27:35 +0100theDon(~td@muedsl-82-207-238-028.citykom.de) (Ping timeout: 260 seconds)
2020-11-03 04:29:23 +0100theDon(~td@94.134.91.45)
2020-11-03 04:29:28 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-03 04:32:26 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 264 seconds)
2020-11-03 04:33:11 +0100dxld(~dxld@2a01:4f8:201:89ff:7479:df6a:7ab8:8305) (Quit: Bye)
2020-11-03 04:33:15 +0100toorevitimirp(~tooreviti@117.182.183.132)
2020-11-03 04:33:42 +0100jespada(~jespada@90.254.245.49)
2020-11-03 04:33:53 +0100acowley(~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
2020-11-03 04:34:57 +0100dxld(~dxld@2a01:4f8:201:89ff:7479:df6a:7ab8:8305)
2020-11-03 04:35:50 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
2020-11-03 04:37:50 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit)
2020-11-03 04:38:32 +0100christo(~chris@81.96.113.213)
2020-11-03 04:39:21 +0100yinfeng(~yinfeng@2001:250:5002:8100::5e0b) (Quit: WeeChat 2.9)
2020-11-03 04:40:17 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 04:41:30 +0100hackagecrdt-event-fold 1.1.0.0 - Garbage collected event folding CRDT. https://hackage.haskell.org/package/crdt-event-fold-1.1.0.0 (rickowens)
2020-11-03 04:41:58 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 04:43:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 04:43:50 +0100mimi1vx(~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 264 seconds)
2020-11-03 04:45:02 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-03 04:45:54 +0100z0_(~z0@188.250.0.59)
2020-11-03 04:46:36 +0100z0_(~z0@188.250.0.59) (Client Quit)
2020-11-03 04:48:35 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 04:51:39 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
2020-11-03 04:51:45 +0100christo(~chris@81.96.113.213)
2020-11-03 04:52:52 +0100chediak(b14cf9ce@177.76.249.206)
2020-11-03 04:53:39 +0100chediak(b14cf9ce@177.76.249.206) (Remote host closed the connection)
2020-11-03 04:55:14 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 04:55:31 +0100BrunoNapoleao(~BrunoNapo@185.163.110.116)
2020-11-03 04:56:33 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 04:57:16 +0100acowley(~acowley@c-68-83-22-43.hsd1.nj.comcast.net)
2020-11-03 04:59:02 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2020-11-03 04:59:35 +0100acowley(~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
2020-11-03 05:00:07 +0100christo(~chris@81.96.113.213)
2020-11-03 05:01:22 +0100christo_(~chris@81.96.113.213)
2020-11-03 05:01:22 +0100christo(~chris@81.96.113.213) (Read error: Connection reset by peer)
2020-11-03 05:01:29 +0100acowley(~acowley@c-68-83-22-43.hsd1.nj.comcast.net)
2020-11-03 05:01:50 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-03 05:02:07 +0100stef204(~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 2.9)
2020-11-03 05:02:16 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-03 05:03:01 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-03 05:05:24 +0100christo_(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2020-11-03 05:08:56 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 05:12:27 +0100xff0x(~fox@2001:1a81:53b4:ba00:23ce:a11d:3032:dba3) (Ping timeout: 260 seconds)
2020-11-03 05:12:52 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2020-11-03 05:13:19 +0100xff0x(~fox@2001:1a81:53b4:ba00:fd62:d0fd:829a:1233)
2020-11-03 05:14:12 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 05:16:43 +0100slack1256(~slack1256@181.203.83.173)
2020-11-03 05:19:52 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-faekvzqkhmohaswr) ()
2020-11-03 05:21:17 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 05:23:19 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-03 05:25:13 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-11-03 05:25:14 +0100toorevitimirp(~tooreviti@117.182.183.132) (Remote host closed the connection)
2020-11-03 05:25:36 +0100slack1256(~slack1256@181.203.83.173) (Ping timeout: 265 seconds)
2020-11-03 05:25:40 +0100toorevitimirp(~tooreviti@117.182.183.132)
2020-11-03 05:25:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-03 05:26:10 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-03 05:30:43 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 258 seconds)
2020-11-03 05:31:41 +0100lucasb(uid333435@gateway/web/irccloud.com/x-pojwugqdpwttxqdq) (Quit: Connection closed for inactivity)
2020-11-03 05:32:16 +0100alp(~alp@2a01:e0a:58b:4920:4ce:2344:89cc:fe25)
2020-11-03 05:33:38 +0100Guest26530(83e40214@131.228.2.20)
2020-11-03 05:34:18 +0100christo(~chris@81.96.113.213)
2020-11-03 05:35:43 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2020-11-03 05:36:02 +0100brodie(~textual@207.53.253.137)
2020-11-03 05:36:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-11-03 05:43:12 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-11-03 05:44:01 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-03 05:44:19 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-03 05:44:49 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-03 05:45:06 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-03 05:45:13 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Quit: sh9)
2020-11-03 05:45:38 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-03 05:45:59 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-03 05:46:26 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-03 05:46:42 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-03 05:47:13 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 05:47:14 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-03 05:47:57 +0100christo(~chris@81.96.113.213)
2020-11-03 05:48:44 +0100guest113(~user@49.5.6.87) (Ping timeout: 268 seconds)
2020-11-03 05:51:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 05:52:24 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
2020-11-03 05:54:21 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 05:54:54 +0100renzhi(~renzhi@2607:fa49:655f:e600::28da) (Ping timeout: 268 seconds)
2020-11-03 05:57:44 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2020-11-03 05:58:04 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
2020-11-03 05:59:47 +0100guest113(~user@49.5.6.87)
2020-11-03 05:59:50 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 268 seconds)
2020-11-03 06:00:11 +0100mimi1vx(~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e)
2020-11-03 06:00:55 +0100kupi(uid212005@gateway/web/irccloud.com/x-izotevyprbcyotcz) (Quit: Connection closed for inactivity)
2020-11-03 06:03:58 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-11-03 06:06:58 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 06:11:40 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-03 06:12:47 +0100xff0x(~fox@2001:1a81:53b4:ba00:fd62:d0fd:829a:1233) (Ping timeout: 268 seconds)
2020-11-03 06:13:30 +0100xff0x(~fox@2001:1a81:53b4:ba00:2eff:cd6c:5e2b:7580)
2020-11-03 06:14:52 +0100 <bradparker> ski: thanks :) (TIL https://gitlab.haskell.org/ghc/ghc/-/wikis/injective-type-families). So it's more accurate to say that the the `Proxy api` argument is needed because the type family `ServerT` is not injective.
2020-11-03 06:19:40 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-03 06:24:47 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2020-11-03 06:25:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-03 06:28:40 +0100emmanuel_erc(~user@2604:2000:1382:ce03:de4:8c90:4e56:e115)
2020-11-03 06:34:59 +0100mimi1vx(~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 268 seconds)
2020-11-03 06:42:57 +0100day_(~Unknown@unaffiliated/day)
2020-11-03 06:46:25 +0100day(~Unknown@unaffiliated/day) (Ping timeout: 264 seconds)
2020-11-03 06:46:25 +0100day_day
2020-11-03 06:47:06 +0100yinfeng(~yinfeng@2001:250:5002:8100::2:b4d5)
2020-11-03 06:47:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-03 06:50:52 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 246 seconds)
2020-11-03 06:52:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-11-03 06:54:01 +0100hackageegison-pattern-src 0.2.1.2 - Manipulating Egison patterns: abstract syntax, parser, and pretty-printer https://hackage.haskell.org/package/egison-pattern-src-0.2.1.2 (coord_e)
2020-11-03 06:55:03 +0100hackageegison-pattern-src-th-mode 0.2.1.2, egison-pattern-src-haskell-mode 0.2.1.2 (coord_e): https://qbin.io/look-gothic-x917
2020-11-03 07:00:02 +0100BrunoNapoleao(~BrunoNapo@185.163.110.116) ()
2020-11-03 07:05:12 +0100alp(~alp@2a01:e0a:58b:4920:4ce:2344:89cc:fe25) (Ping timeout: 268 seconds)
2020-11-03 07:06:34 +0100noecho(~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in)
2020-11-03 07:07:05 +0100noecho(~noecho@2a01:4f8:1c0c:80ee::4223)
2020-11-03 07:10:08 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 268 seconds)
2020-11-03 07:11:06 +0100mnrmnaughringzero
2020-11-03 07:11:42 +0100ringzeromnrmnaugh
2020-11-03 07:13:48 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-03 07:14:01 +0100blissful(~azuline@unaffiliated/azuline) (Quit: The Lounge - https://thelounge.chat)
2020-11-03 07:18:43 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2020-11-03 07:20:19 +0100dilinger(~dilinger@spindle.queued.net) (Remote host closed the connection)
2020-11-03 07:29:42 +0100Jeanne-Kamikaze(~Jeanne-Ka@68.235.43.86) (Quit: Leaving)
2020-11-03 07:31:54 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-03 07:35:35 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 07:39:49 +0100 <bqv> phew
2020-11-03 07:39:54 +0100 <bqv> been fiddling with types for 5 hours
2020-11-03 07:40:00 +0100 <bqv> finally got it to compile again
2020-11-03 07:40:33 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2020-11-03 07:40:34 +0100 <yushyin> the pleasure of haskell :)
2020-11-03 07:40:43 +0100 <bqv> indeed :D
2020-11-03 07:41:23 +0100christo(~chris@81.96.113.213)
2020-11-03 07:41:26 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-03 07:43:08 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-11-03 07:45:50 +0100jbox(~atlas@unaffiliated/jbox)
2020-11-03 07:46:14 +0100teardown(~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
2020-11-03 07:46:31 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-11-03 07:47:41 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-03 07:51:18 +0100mimi1vx(~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e)
2020-11-03 07:51:46 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 07:53:25 +0100christo(~chris@81.96.113.213)
2020-11-03 07:53:37 +0100ocamel(3263cbdb@50.99.203.219)
2020-11-03 07:56:24 +0100alp(~alp@2a01:e0a:58b:4920:adca:d707:6534:9087)
2020-11-03 07:56:30 +0100ocamel(3263cbdb@50.99.203.219) (Remote host closed the connection)
2020-11-03 07:56:51 +0100secdragon1(~secdragon@185.204.1.185)
2020-11-03 07:57:32 +0100emnmauiigw^(emnmauiigw@ip98-184-89-2.mc.at.cox.net) ()
2020-11-03 07:58:36 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2020-11-03 07:59:09 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-11-03 08:00:42 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds)
2020-11-03 08:01:21 +0100mimi_vx(~mimi@tulipan.habr.nat.praha12.net)
2020-11-03 08:03:26 +0100dilinger(~dilinger@spindle.queued.net)
2020-11-03 08:03:38 +0100mimi1vx(~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 264 seconds)
2020-11-03 08:05:55 +0100danvet_(~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
2020-11-03 08:06:37 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-11-03 08:06:57 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-11-03 08:11:23 +0100howdoi(uid224@gateway/web/irccloud.com/x-gtoygnwcsyvwpslb) (Quit: Connection closed for inactivity)
2020-11-03 08:20:26 +0100thc202(~thc202@unaffiliated/thc202)
2020-11-03 08:22:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 08:23:19 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
2020-11-03 08:26:26 +0100alp(~alp@2a01:e0a:58b:4920:adca:d707:6534:9087) (Ping timeout: 264 seconds)
2020-11-03 08:27:20 +0100Jonno_FTW(~come@api.carswap.me) (Ping timeout: 265 seconds)
2020-11-03 08:28:51 +0100jedws(~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 08:34:08 +0100Jonno_FTW(~come@api.carswap.me)
2020-11-03 08:36:46 +0100 <dminuoso> The annoying part of this, it promotes yak shaving!
2020-11-03 08:37:03 +0100 <dminuoso> "Refactor half your codebase? Easier done than said"
2020-11-03 08:41:42 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 08:41:42 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2020-11-03 08:43:02 +0100 <bqv> I couldn't care less. Programming is my hobby, I'll happily shave yaks all day long
2020-11-03 08:46:20 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-03 08:46:28 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 08:50:11 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-11-03 08:51:23 +0100christo(~chris@81.96.113.213)
2020-11-03 08:52:45 +0100Franciman(~francesco@host-79-36-167-172.retail.telecomitalia.it)
2020-11-03 08:53:41 +0100zaquest(~notzaques@5.128.210.178)
2020-11-03 08:55:50 +0100christo(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2020-11-03 08:55:53 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
2020-11-03 08:56:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-03 08:57:40 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection)
2020-11-03 09:00:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 09:03:59 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-03 09:05:28 +0100teardown_(~user@gateway/tor-sasl/mrush)
2020-11-03 09:06:47 +0100jelleke(~jelle@2a01:7c8:aac1:50d:5054:ff:fe3b:9b7d)
2020-11-03 09:07:29 +0100vicfred(~vicfred@unaffiliated/vicfred) (Remote host closed the connection)
2020-11-03 09:07:56 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-03 09:08:43 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2020-11-03 09:09:06 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 09:12:50 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-03 09:13:15 +0100alp(~alp@88.126.45.36)
2020-11-03 09:13:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-03 09:16:14 +0100 <merijn> bqv: Good news, I've got a whole list for you, then ;)
2020-11-03 09:17:39 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-03 09:20:01 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2020-11-03 09:21:25 +0100jbox(~atlas@unaffiliated/jbox) (Quit: gn o/)
2020-11-03 09:21:41 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 09:23:09 +0100sdrodge(~sdrodge@unaffiliated/sdrodge)
2020-11-03 09:24:08 +0100guest113(~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
2020-11-03 09:26:38 +0100idhugo(~idhugo@users-1190.st.net.au.dk)
2020-11-03 09:26:42 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-03 09:28:13 +0100 <dminuoso> Is there a name for an invertible map?
2020-11-03 09:28:18 +0100Lord_of_Life(~Lord@46.217.218.100) (Changing host)
2020-11-03 09:28:18 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-11-03 09:28:45 +0100 <opqdonut> dminuoso: I've seen bimap used
2020-11-03 09:29:14 +0100 <opqdonut> looks like boost and guava use that term, at least
2020-11-03 09:29:18 +0100 <opqdonut> https://en.wikipedia.org/wiki/Bidirectional_map
2020-11-03 09:29:35 +0100 <opqdonut> oh, even a haskell package http://hackage.haskell.org/package/bimap-0.4.0/docs/Data-Bimap.html
2020-11-03 09:29:51 +0100borne(~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de)
2020-11-03 09:29:55 +0100 <opqdonut> unfortunately there's a risk of confusion with https://hackage.haskell.org/package/bifunctors-5/docs/Data-Bifunctor.html#v:bimap
2020-11-03 09:29:57 +0100 <dminuoso> Ah that seems to fit. I guess bimap in the sense of bijective map
2020-11-03 09:30:03 +0100 <opqdonut> yeah
2020-11-03 09:30:08 +0100 <opqdonut> or bidirectional map
2020-11-03 09:30:15 +0100 <dminuoso> Gotcha, I just need a descriptive term for haddock, so "bijective map" it is
2020-11-03 09:30:19 +0100 <dminuoso> Thanks!
2020-11-03 09:33:07 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 09:37:37 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-03 09:38:06 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 09:39:18 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 260 seconds)
2020-11-03 09:41:10 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-03 09:45:02 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 09:45:24 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-03 09:45:35 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-03 09:48:28 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-11-03 09:48:30 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-03 09:49:22 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-03 09:49:38 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr)
2020-11-03 09:49:59 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
2020-11-03 09:50:27 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-11-03 09:53:32 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-11-03 09:54:41 +0100drbean(~drbean@TC210-63-209-59.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in)
2020-11-03 09:57:10 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-03 09:57:27 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 10:00:02 +0100secdragon1(~secdragon@185.204.1.185) ()
2020-11-03 10:00:07 +0100materialfuture[m(materialfu@gateway/shell/matrix.org/x-jvhencngpnxshide) (Quit: Idle for 30+ days)
2020-11-03 10:00:08 +0100steve[m](stevetrout@gateway/shell/matrix.org/x-fkuthzdpqeujhzmp) (Quit: Idle for 30+ days)
2020-11-03 10:02:26 +0100fendor__fendor
2020-11-03 10:02:33 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
2020-11-03 10:03:56 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-03 10:07:23 +0100Nachtgespenst(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-11-03 10:09:22 +0100yumh(~yumh@mail.xglobe.in)
2020-11-03 10:09:53 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 10:11:04 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com)
2020-11-03 10:11:28 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-03 10:11:36 +0100mokulus(~mat@176.111.230.96)
2020-11-03 10:11:55 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 10:13:17 +0100xff0x(~fox@2001:1a81:53b4:ba00:2eff:cd6c:5e2b:7580) (Ping timeout: 268 seconds)
2020-11-03 10:13:40 +0100xff0x(~fox@2001:1a81:53b4:ba00:27c3:328a:48d4:3117)
2020-11-03 10:15:17 +0100jonatanb(~jonatanb@83.24.9.26.ipv4.supernova.orange.pl)
2020-11-03 10:15:52 +0100mokulus(~mat@176.111.230.96) (Client Quit)
2020-11-03 10:17:22 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-03 10:22:29 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-03 10:22:30 +0100hackageprotocol-buffers-descriptor 2.4.15 - Text.DescriptorProto.Options and code generated from the Google Protocol Buffer specification https://hackage.haskell.org/package/protocol-buffers-descriptor-2.4.15 (k_bx)
2020-11-03 10:22:59 +0100britva(~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba)
2020-11-03 10:23:30 +0100hackagehprotoc 2.4.15 - Parse Google Protocol Buffer specifications https://hackage.haskell.org/package/hprotoc-2.4.15 (k_bx)
2020-11-03 10:25:43 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 10:26:10 +0100Amras(~Amras@unaffiliated/amras0000)
2020-11-03 10:27:21 +0100mokulus(~mat@176.111.230.96)
2020-11-03 10:29:24 +0100jedws(~jedws@101.184.150.81)
2020-11-03 10:30:40 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-03 10:32:11 +0100__monty__(~toonn@unaffiliated/toonn)
2020-11-03 10:33:32 +0100jedws(~jedws@101.184.150.81) (Client Quit)
2020-11-03 10:33:58 +0100Guest26530(83e40214@131.228.2.20) (Remote host closed the connection)
2020-11-03 10:35:09 +0100jedws(~jedws@101.184.150.81)
2020-11-03 10:35:32 +0100jedws(~jedws@101.184.150.81) (Client Quit)
2020-11-03 10:38:08 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 10:40:31 +0100hackageHsOpenSSL 0.11.5 - Partial OpenSSL binding for Haskell https://hackage.haskell.org/package/HsOpenSSL-0.11.5 (VladimirShabanov)
2020-11-03 10:41:40 +0100chaosmasttter(~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de)
2020-11-03 10:42:53 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 10:44:35 +0100danvet_(~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Quit: Leaving)
2020-11-03 10:44:42 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-jbpkroausxoplpus) (Quit: Connection closed for inactivity)
2020-11-03 10:45:03 +0100toorevitimirp(~tooreviti@117.182.183.132) (Ping timeout: 258 seconds)
2020-11-03 10:45:51 +0100jonatan(~nate@h77-53-70-163.cust.a3fiber.se)
2020-11-03 10:48:18 +0100kuribas(~user@ptr-25vy0i7uknzjtc6w9zh.18120a2.ip6.access.telenet.be)
2020-11-03 10:48:55 +0100 <kuribas> regarding the "simple haskell movement", would servant be considered "fancy"?
2020-11-03 10:49:09 +0100 <c_wraith> very much so
2020-11-03 10:49:18 +0100 <kuribas> then what is the alternative?
2020-11-03 10:49:49 +0100 <dminuoso> scotty?
2020-11-03 10:49:50 +0100 <kuribas> for creating a REST API with formal specification?
2020-11-03 10:49:52 +0100 <c_wraith> there's nothing else that does everything servant does
2020-11-03 10:50:07 +0100 <dminuoso> "with formal specifications" is very tough in a haskelly sense without enabling extensions
2020-11-03 10:50:12 +0100 <dminuoso> You'd have to do a runtime OpenAPI thing
2020-11-03 10:50:20 +0100 <dminuoso> (Which I guess is contrary to what haskellers usually do)
2020-11-03 10:50:32 +0100yinfeng(~yinfeng@2001:250:5002:8100::2:b4d5) (Quit: WeeChat 2.9)
2020-11-03 10:50:37 +0100 <c_wraith> I mean, I don't give simple haskell much credit, because no one can agree on what's simple anyway
2020-11-03 10:50:58 +0100 <dminuoso> Or just not do HTTP REST APIs.
2020-11-03 10:51:09 +0100 <dminuoso> Which I guess is the real crux, it's a very poor language
2020-11-03 10:51:24 +0100 <kuribas> would, say, f# be better than simple haskell?
2020-11-03 10:51:48 +0100 <dminuoso> define "better"
2020-11-03 10:52:31 +0100 <kuribas> I mean in a company context where the steep learning curve of haskell is a problem.
2020-11-03 10:52:56 +0100 <c_wraith> and there are things no one would ever call simple (like Data.Generics.Labels from generic-lens) that are worth far more than they cost
2020-11-03 10:53:28 +0100 <kuribas> c_wraith: yeah. Isn't that because most of the complexity is in the library implementation though?
2020-11-03 10:53:39 +0100 <kuribas> generic-lens doesn't seem so hard to use
2020-11-03 10:53:40 +0100 <maerwald> kuribas: servant is for cases where you want to autogenerate clients (or consume the haskell types directly). Most cases of servant I've seen in production do neither. That falls under the "unnecessary complexity" category
2020-11-03 10:54:15 +0100 <kuribas> maerwald: indeed. If you make a non-REST web-app, I would say servant is a mistake.
2020-11-03 10:54:19 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-03 10:54:20 +0100 <c_wraith> kuribas: it's *very* easy to use. The complexity isn't hidden away exactly, though, as it relies on things like IncoherentInstances
2020-11-03 10:54:50 +0100 <maerwald> But ppl don't choose their tools based on careful cost-benefit analysis, especially in haskell. They base it on the latest reddit thread about dependent types :)
2020-11-03 10:55:24 +0100 <kuribas> I absolutely agree that a lot of haskell is overly complicated, for example database libraries.
2020-11-03 10:55:32 +0100 <maerwald> It's almost as if haskellers get anxiety attacks if they don't keep up with the latest esoteric approaches
2020-11-03 10:55:42 +0100ByronT(~ByronT@154.13.1.56)
2020-11-03 10:55:53 +0100 <kuribas> maerwald: I think it's more like having a nice new shiny toy to play with
2020-11-03 10:56:09 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-03 10:56:21 +0100 <maerwald> for some, for others its burnout, trying to keep up with the design space... and it's already too large imo
2020-11-03 10:56:42 +0100 <kuribas> I just think that many extensions, like overloadedLabels, type-applications, aren't that complicated, mostly syntactic sugar.
2020-11-03 10:57:07 +0100 <maerwald> But most programmers only care about a use case they can tackle with a new language feature. They don't consider the whole design space the feature opens and what the impact on the ecosystem is
2020-11-03 10:57:16 +0100z0(~z0@188.250.0.59) (Ping timeout: 246 seconds)
2020-11-03 10:57:40 +0100 <kuribas> maerwald: well, there is no shortage to java jobs, so if you want a simple language, that mostly does the job, you can go to java.
2020-11-03 10:57:54 +0100 <maerwald> That's a way to make a language fail. But we can argue about whether or not C++ is a failure. I consider it one
2020-11-03 10:58:14 +0100 <maerwald> kuribas: Java isn't simple at all
2020-11-03 10:58:48 +0100 <maerwald> Getting generics right in Java isn't easy. Inheritance is massively complicated
2020-11-03 10:59:14 +0100z0(~z0@188.251.73.190)
2020-11-03 10:59:34 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-03 10:59:38 +0100z0Guest77983
2020-11-03 10:59:56 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-03 11:00:57 +0100 <kuribas> whatever language you pick, you need to take a subset that fits beset with your workflow.
2020-11-03 11:01:01 +0100 <maerwald> Simple also doesn't mean "dumb". How many ppl know that you can use guards in a case expression? You don't see it often. Many don't know all haskell2010 features.
2020-11-03 11:01:51 +0100acidjnk_new2(~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de)
2020-11-03 11:01:55 +0100 <dminuoso> c_wraith: IncoherentInstances?
2020-11-03 11:01:56 +0100 <kuribas> also, if you use "simple" haskell, then you are limited to "simple" libraries.
2020-11-03 11:01:59 +0100 <dminuoso> Why/how is this useful?
2020-11-03 11:02:14 +0100 <dminuoso> Ive been trying to understand the justification for that extension
2020-11-03 11:02:39 +0100 <int-e> > let x | let y = 42 in y in x
2020-11-03 11:02:41 +0100 <maerwald> I'm not arguing for either. I'm arguing that ppl have no real process on how to choose complex vs simple haskell for a problem at hand.
2020-11-03 11:02:42 +0100 <lambdabot> <hint>:1:25: error: <hint>:1:25: error: parse error on input ‘in’
2020-11-03 11:02:47 +0100 <c_wraith> Think of it as "even more overlapping instances"
2020-11-03 11:02:54 +0100 <int-e> > let x | let y = 42 = y in x
2020-11-03 11:02:57 +0100 <lambdabot> 42
2020-11-03 11:03:00 +0100 <maerwald> simple vs complex haskell is a nonsense decision
2020-11-03 11:03:06 +0100 <dminuoso> c_wraith: Sure, but IncoherentInstances gives me in effect random choice of instances.
2020-11-03 11:03:28 +0100 <dminuoso> This would make sense if the instances are equivalent, but at that point why have them at all
2020-11-03 11:03:41 +0100 <int-e> (That we have `let` inside guards is one Haskell2010 feature I was blissfully unaware of until... hmm, 2 months ago?)
2020-11-03 11:04:00 +0100 <dminuoso> int-e: Indeed, Im quite fond of it :)
2020-11-03 11:04:15 +0100 <[exa]> oh wow
2020-11-03 11:04:21 +0100 <c_wraith> dminuoso: not when you carefully set up your instances so that the only type variable that's treated incoherently also doesn't matter to the behavior.
2020-11-03 11:04:28 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 11:04:32 +0100 <int-e> let x | y <- 42 = y in x -- I prefer these most of the time
2020-11-03 11:04:50 +0100minus[m](minusblobc@gateway/shell/matrix.org/x-hhdwstlyzyfgkvud) ("User left")
2020-11-03 11:04:58 +0100 <dminuoso> int-e: That requires an extension *and* has subtly different meaning. It can more easily lead to bugs.
2020-11-03 11:04:59 +0100 <maerwald> kuribas: but what I read in the current reddit thread is somewhere between naive and arrogant, imo
2020-11-03 11:05:23 +0100 <c_wraith> dminuoso: pattern guards are part of Haskell 2010, too
2020-11-03 11:05:26 +0100 <dminuoso> Oh
2020-11-03 11:05:36 +0100 <int-e> dminuoso: well, the let thing can also lead to subtle bugs... for pretty much the same reason.
2020-11-03 11:05:37 +0100 <merijn> dminuoso: Everyone always forgets that
2020-11-03 11:05:42 +0100 <dminuoso> int-e: Say, you have some `newtype T = T Int`, with some `let x | letT t <- x ...`, if you later refactor that into a data type, it will compile just fine but might not mean what you want it to
2020-11-03 11:06:02 +0100 <dminuoso> In that example no, because a let will generate missing pattern errors
2020-11-03 11:06:08 +0100 <dminuoso> uhh
2020-11-03 11:06:13 +0100 <dminuoso> `let x | T t <- x ...`
2020-11-03 11:06:24 +0100 <dminuoso> `let x | let T t = x ...`
2020-11-03 11:06:33 +0100 <dminuoso> If you switch T from newtype to data, one of them will warn the other will not
2020-11-03 11:06:43 +0100 <merijn> I like how the survey blindly copies all GHC -X flags as extensions and thus includes things that are, in fact, already enabled by default because their Haskell2010 :p
2020-11-03 11:07:10 +0100 <int-e> Well, I did have variable patterns in mind.
2020-11-03 11:07:15 +0100 <merijn> maerwald: I agree. I see value in "simple Haskell", it's just that blindly saying "these extensions are ok" and "these are not" is way to simplistic for defining simple Haskell :p
2020-11-03 11:07:44 +0100 <merijn> It's mostly a matter of "do these extensions 'pull their weight'", which unfortunately isn't something you can define a simple universal heuristic for
2020-11-03 11:07:50 +0100 <idnar> dminuoso: do you mean switch and add more constructors?
2020-11-03 11:07:56 +0100 <dminuoso> idnar: Right
2020-11-03 11:08:04 +0100 <int-e> In any case, the point was that it's really easy to miss a corner of the Haskell syntax for years without missing anything.
2020-11-03 11:08:05 +0100 <kuribas> merijn: that's my take on it too.
2020-11-03 11:08:06 +0100 <idnar> dminuoso: ahh
2020-11-03 11:08:42 +0100wwwww(~wwwww@unaffiliated/wwwww)
2020-11-03 11:08:45 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-03 11:09:08 +0100 <kuribas> merijn: avoid fancy haskell if you can, use it if you can't
2020-11-03 11:09:12 +0100 <maerwald> I think snoyman approaches the problem from the right angle. Problem focused. But I just think his decisions are mostly wrong :)
2020-11-03 11:09:30 +0100 <yushyin> haha
2020-11-03 11:10:12 +0100 <[exa]> merijn: people can still vote against the defaults :]
2020-11-03 11:14:15 +0100 <merijn> [exa]: I meant that they are not extensions
2020-11-03 11:14:26 +0100 <idnar> regarding fancy Haskell, it's perfectly possible to make an overcomplicated inscrutable mess without extensions; if you can't easily bring a junior colleague up to speed on the code you're writing (in any language) then consider simplifying the code and/or revising your hiring practices
2020-11-03 11:14:49 +0100 <merijn> [exa]: Like -XPatternGuards is not an extension in Haskell2010. It's an extension to Haskell98 which (hopefully) no one writes anymore
2020-11-03 11:15:03 +0100 <maerwald> idnar: not hiring practices... mentoring practices
2020-11-03 11:15:46 +0100 <idnar> maerwald: well, both :)
2020-11-03 11:15:48 +0100 <kuribas> idnar: not making an inscrutable mess should be a no-brainer in any language, but sadly it isn't...
2020-11-03 11:15:48 +0100 <maerwald> if you can't get a junior up to speed, then that's a management and team failurea
2020-11-03 11:16:55 +0100 <int-e> kuribas: I'm not sure what you mean by no-brainer... it usually requires quite some thought :P
2020-11-03 11:17:18 +0100 <kuribas> I think getting someone up to speed with an application is way easier in haskell, due to the type system.
2020-11-03 11:17:28 +0100 <kuribas> int-e: right :)
2020-11-03 11:17:45 +0100lucente(~lucente@31.170.86.76)
2020-11-03 11:18:02 +0100 <kuribas> int-e: I guess what I meant was, taking the effort to clean up technical dept...
2020-11-03 11:18:06 +0100 <[exa]> merijn: yeah, but it will show how many people may be unaware of the fact
2020-11-03 11:18:14 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-03 11:18:21 +0100 <kuribas> int-e: the effort itself is non trivial of course
2020-11-03 11:18:38 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-03 11:18:40 +0100 <int-e> kuribas: I knew what you meant.
2020-11-03 11:18:57 +0100 <lucente> I'm having hard time solving this tulpa problem: [(String, Int)] -> [String] where I'm checking whenever [("A", 100)] whenever the Int is greater that 0 I add its tulpa's string to an output. Example [("A", 100), ("B", -1), ("C",36) = ["A", "C"]
2020-11-03 11:18:59 +0100 <__monty__> I agree, I can't count the number of times I've had to look for a function in a python project, which turns out to be a __call__ method on an object that's "cast" to something else three times before use 😭
2020-11-03 11:19:13 +0100 <hc> win3 0
2020-11-03 11:19:15 +0100 <hc> sry
2020-11-03 11:19:43 +0100 <idnar> kuribas: yeah, it seems like people don't want to take responsibility for the social aspects of programming, but instead replace that with some mindless overly simplistic rules
2020-11-03 11:20:08 +0100plutoniix(~q@175.176.222.7) (Quit: Leaving)
2020-11-03 11:20:48 +0100 <__monty__> lucente: Maybe split the problem into pieces. Can you just get rid of the tuples with a value <= 0?
2020-11-03 11:20:48 +0100ambiso9(~ambiso@209.182.239.205) (Quit: The Lounge - https://thelounge.chat)
2020-11-03 11:22:13 +0100 <idnar> kuribas: I can understand why, given the dysfunctional culture at many companies, but…
2020-11-03 11:22:52 +0100 <lucente> I need to solve it as it's defined [(String, Int)] -> [String]
2020-11-03 11:23:09 +0100ambiso9(~ambiso@209.182.239.205)
2020-11-03 11:23:16 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-03 11:23:24 +0100 <lucente> would be glad if you gave me an exp of what you mean
2020-11-03 11:23:29 +0100 <__monty__> lucente: Sure, but if you can't solve the entire thing at once, divide and conquer.
2020-11-03 11:23:39 +0100 <maerwald> idnar: yep and with the presented attitude "if you can't understand my haskell, you need to try harder" we're not exactly making positive advertisement
2020-11-03 11:23:41 +0100 <kuribas> idnar: I came from such a company, and I never want to go back
2020-11-03 11:24:01 +0100 <kuribas> idnar: I got fired after 6 month for saying my opinion
2020-11-03 11:24:13 +0100 <__monty__> lucente: Try turning your input from [("A", 100), ("B", -1), ("C",36)] into [("A", 100), ("C",36)].
2020-11-03 11:24:31 +0100 <maerwald> kuribas: doesn't take six months for me (saying my opinion) :)
2020-11-03 11:24:59 +0100 <kuribas> maerwald: and getting fired?
2020-11-03 11:25:08 +0100 <maerwald> haha
2020-11-03 11:26:26 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-03 11:27:57 +0100 <kuribas> idnar: I see that with a colleage of mine. He's a brilliant programmer, the program architecture is very nice. However there is hardly any documentation, he's the only one that knows the framework he wrote himself.
2020-11-03 11:28:32 +0100 <kuribas> idnar: he also wants to write everything in that framework.
2020-11-03 11:29:10 +0100 <kuribas> it's just that the code he writes is for himself
2020-11-03 11:29:29 +0100 <maerwald> in some industries that might be okay
2020-11-03 11:29:41 +0100 <maerwald> because you don't maintain software everywhere
2020-11-03 11:32:34 +0100 <idnar> maerwald: yeah; my position is usually more like "if you can't understand my haskell (or python, or…), let me explain it to you" and if I can't do that I probably need to change my code, not my colleagues
2020-11-03 11:32:37 +0100 <kuribas> this isn't a one-time script, it's a long running daemon.
2020-11-03 11:33:36 +0100 <kuribas> idnar: I'd say if you cannot understand my code (and you are a capable programmer), I need to either rewrite it or add documentation.
2020-11-03 11:33:51 +0100 <xsperry> > (map fst . filter ((>0) . snd)) [("A", 100), ("B", -1), ("C",36)]
2020-11-03 11:33:53 +0100 <lambdabot> ["A","C"]
2020-11-03 11:34:18 +0100 <xsperry> > [x | (x,y) <- [("A", 100), ("B", -1), ("C",36)], y > 0]
2020-11-03 11:34:20 +0100 <lambdabot> ["A","C"]
2020-11-03 11:34:25 +0100 <__monty__> xsperry: Providing solutions doesn't help much with learning.
2020-11-03 11:34:40 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-11-03 11:35:16 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds)
2020-11-03 11:37:00 +0100hackagecore-text 0.3.0.0 - A rope type based on a finger tree over UTF-8 fragments https://hackage.haskell.org/package/core-text-0.3.0.0 (AndrewCowie)
2020-11-03 11:38:00 +0100hackageunbeliever 0.10.0.8, core-program 0.2.6.0, core-data 0.2.1.9 (AndrewCowie)
2020-11-03 11:40:00 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-03 11:44:04 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net)
2020-11-03 11:46:01 +0100hackagevulkan 3.6.12 - Bindings to the Vulkan graphics API. https://hackage.haskell.org/package/vulkan-3.6.12 (jophish)
2020-11-03 11:46:48 +0100alp(~alp@88.126.45.36) (Remote host closed the connection)
2020-11-03 11:47:01 +0100hackagehsemail 2.2.1 - Parsec parsers for the Internet Message format (e-mail) https://hackage.haskell.org/package/hsemail-2.2.1 (PeterSimons)
2020-11-03 11:47:10 +0100alp(~alp@2a01:e0a:58b:4920:95d4:1b57:ed86:fe54)
2020-11-03 11:48:30 +0100hackageupdate-nix-fetchgit 0.2.2 - A program to update fetchgit values in Nix expressions https://hackage.haskell.org/package/update-nix-fetchgit-0.2.2 (jophish)
2020-11-03 11:50:36 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-03 11:52:04 +0100christo(~chris@81.96.113.213)
2020-11-03 11:52:25 +0100raichoo(~raichoo@213.240.178.58)
2020-11-03 11:52:49 +0100bergsans(~bergsans@c80-217-8-29.bredband.comhem.se)
2020-11-03 11:55:10 +0100lucente(~lucente@31.170.86.76) (Quit: Leaving)
2020-11-03 12:04:50 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2020-11-03 12:06:04 +0100alp(~alp@2a01:e0a:58b:4920:95d4:1b57:ed86:fe54) (Ping timeout: 240 seconds)
2020-11-03 12:08:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-03 12:09:20 +0100alp(~alp@2a01:e0a:58b:4920:65ec:1bbd:4b97:e92d)
2020-11-03 12:13:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2020-11-03 12:15:13 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f)
2020-11-03 12:17:13 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-03 12:17:39 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-03 12:17:44 +0100Alleria_(~AllahuAkb@2604:2000:1484:26:7d65:3be5:43eb:ba0c) (Quit: Textual IRC Client: www.textualapp.com)
2020-11-03 12:17:55 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-03 12:21:48 +0100idhugo(~idhugo@users-1190.st.net.au.dk) (Ping timeout: 256 seconds)
2020-11-03 12:24:00 +0100hackageregistry 0.2.0.0 - data structure for assembling components https://hackage.haskell.org/package/registry-0.2.0.0 (etorreborre)
2020-11-03 12:28:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-11-03 12:29:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 12:29:50 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 12:34:34 +0100rprije(~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 246 seconds)
2020-11-03 12:34:37 +0100chaosmasttter(~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-03 12:34:44 +0100christo(~chris@81.96.113.213)
2020-11-03 12:35:12 +0100xff0x(~fox@2001:1a81:53b4:ba00:27c3:328a:48d4:3117) (Ping timeout: 260 seconds)
2020-11-03 12:35:44 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
2020-11-03 12:35:53 +0100xff0x(~fox@2001:1a81:53b4:ba00:5006:d65a:90eb:4407)
2020-11-03 12:36:22 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 260 seconds)
2020-11-03 12:37:44 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-11-03 12:38:36 +0100teardown_(~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
2020-11-03 12:38:57 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 12:39:01 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2020-11-03 12:39:38 +0100aarvar(~foewfoiew@50.35.43.33) (Ping timeout: 265 seconds)
2020-11-03 12:39:38 +0100christo(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2020-11-03 12:39:47 +0100petersen(~petersen@redhat/juhp) ()
2020-11-03 12:40:08 +0100CyB3rW0rm(~fedora@143.244.38.33)
2020-11-03 12:43:10 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 12:43:37 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-03 12:44:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-03 12:44:19 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2020-11-03 12:46:23 +0100Tario(~Tario@201.192.165.173)
2020-11-03 12:46:40 +0100obihann(~jhann@156.34.160.69)
2020-11-03 12:47:57 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2020-11-03 12:50:09 +0100obihann(~jhann@156.34.160.69) (Client Quit)
2020-11-03 12:51:17 +0100obihann(~jhann@156.34.160.69)
2020-11-03 12:51:18 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 12:52:08 +0100LKoen(~LKoen@79.160.9.109.rev.sfr.net)
2020-11-03 12:52:46 +0100da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com)
2020-11-03 12:53:10 +0100obihann(~jhann@156.34.160.69) (Client Quit)
2020-11-03 12:53:50 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-03 12:54:02 +0100obihann(~jhann@156.34.160.69)
2020-11-03 12:54:08 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 12:56:01 +0100Ranhir(~Ranhir@157.97.53.139) (Remote host closed the connection)
2020-11-03 12:59:09 +0100drbean(~drbean@TC210-63-209-173.static.apol.com.tw)
2020-11-03 12:59:11 +0100chaosmasttter(~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de)
2020-11-03 12:59:28 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-03 13:00:01 +0100ByronT(~ByronT@154.13.1.56) ()
2020-11-03 13:01:11 +0100chaosmasttter(~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de) (Client Quit)
2020-11-03 13:05:16 +0100chaosmasttter(~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de)
2020-11-03 13:06:23 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 13:07:27 +0100pera(~pera@unaffiliated/pera)
2020-11-03 13:07:59 +0100MaoZeDong_(~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d)
2020-11-03 13:11:01 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-03 13:13:04 +0100MaoZeDong_(~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d) (Ping timeout: 240 seconds)
2020-11-03 13:15:58 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-03 13:17:00 +0100idhugo(~idhugo@users-1190.st.net.au.dk)
2020-11-03 13:17:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 13:17:04 +0100obihann(~jhann@156.34.160.69) (Quit: Lost terminal)
2020-11-03 13:17:28 +0100obihann(~jhann@156.34.160.69)
2020-11-03 13:17:53 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-03 13:18:12 +0100Deide(~Deide@217.155.19.23)
2020-11-03 13:19:24 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-03 13:20:13 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-03 13:20:45 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 240 seconds)
2020-11-03 13:21:56 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 13:22:05 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
2020-11-03 13:24:19 +0100miladz68(~manjaro-u@static.84.147.251.148.clients.your-server.de)
2020-11-03 13:24:35 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
2020-11-03 13:25:07 +0100 <miladz68> hi everyone
2020-11-03 13:26:38 +0100 <miladz68> I have a code that I cannot make to type check. can someone help me here. I also dont know how to copy the code here. I was told this is the best place to ask these kinf of questions if not I would be happy to be pointed to the right place
2020-11-03 13:26:46 +0100 <dminuoso> @where paste
2020-11-03 13:26:47 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
2020-11-03 13:27:42 +0100 <miladz68> thank you for your responses. here is the code https://paste.tomsmeding.com/dV1xjvgF
2020-11-03 13:28:08 +0100 <dminuoso> miladz68: Feel free to use the button "+ Add another file" and then include the type error there
2020-11-03 13:29:38 +0100 <miladz68> I added the error
2020-11-03 13:29:46 +0100 <dminuoso> miladz68: Ah I see!
2020-11-03 13:29:54 +0100 <dminuoso> miladz68: You can't have `Con a` like that
2020-11-03 13:30:04 +0100 <dminuoso> You could say `Con Int` instead
2020-11-03 13:30:09 +0100 <dminuoso> % newtype Fix f = Fix (f (Fix f))
2020-11-03 13:30:09 +0100 <yahb> dminuoso:
2020-11-03 13:30:18 +0100 <dminuoso> % data Mex a = Con Int | Ad a a
2020-11-03 13:30:19 +0100 <yahb> dminuoso:
2020-11-03 13:30:36 +0100 <dminuoso> % v :: Fix Mex; v = Fix (Con 12)
2020-11-03 13:30:37 +0100 <yahb> dminuoso:
2020-11-03 13:30:56 +0100 <miladz68> what if I want Con to be generic and not specific on Int ?
2020-11-03 13:31:11 +0100 <dminuoso> % ex :: Fix Mex; ex = Fx (Fx (Con 2) `Ad` Fx (Con 3))
2020-11-03 13:31:12 +0100 <yahb> dminuoso: ; <interactive>:23:21: error:; * Data constructor not in scope: Fx :: Mex a2 -> Fix Mex; * Perhaps you meant one of these: `F#' (imported from GHC.Exts), `Data.Functor.Foldable.Fix' (imported from Data.Functor.Foldable), `Ghci7.Fix' (imported from Ghci7); <interactive>:23:25: error:; * Data constructor not in scope: Fx :: Mex a0 -> a2; * Perhaps you meant one of these: `F#' (imported fr
2020-11-03 13:31:27 +0100 <dminuoso> miladz68: Then you must add another type parameter
2020-11-03 13:31:34 +0100 <dminuoso> % data Mex t a = Con t | Ad a a
2020-11-03 13:31:34 +0100 <yahb> dminuoso:
2020-11-03 13:31:50 +0100 <dminuoso> % ex :: Fix Mex; ex = Fix (Fix (Con 2) `Ad` Fix (Con 3))
2020-11-03 13:31:50 +0100 <yahb> dminuoso: ; <interactive>:25:11: error:; * Expecting one more argument to `Mex'; Expected kind `* -> *', but `Mex' has kind `* -> * -> *'; * In the first argument of `Fix', namely `Mex'; In the type signature: ex :: Fix Mex
2020-11-03 13:31:51 +0100 <dminuoso> err
2020-11-03 13:31:55 +0100 <dminuoso> % ex :: Fix (Mex Int); ex = Fix (Fix (Con 2) `Ad` Fix (Con 3))
2020-11-03 13:31:55 +0100 <yahb> dminuoso:
2020-11-03 13:31:58 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-cxspimotkygwnrbt)
2020-11-03 13:32:19 +0100 <miladz68> Ok thanks
2020-11-03 13:33:17 +0100 <miladz68> another question though. I Seem unable to understand how ghc resolves types, what is the best place to learn about this? is there a book ?
2020-11-03 13:34:05 +0100 <dminuoso> miladz68: Mmm, the best literature I know of is Pierces TaPL
2020-11-03 13:34:12 +0100 <merijn> miladz68: From a basic "I wanna write Haskell" perspective or from "I wanna make this myself" perspective?
2020-11-03 13:34:14 +0100 <dminuoso> But depending on what you want to learn it could be a bit heavy
2020-11-03 13:34:42 +0100 <merijn> TaPL is more for the latter perspective :p
2020-11-03 13:34:45 +0100 <dminuoso> Although..
2020-11-03 13:34:51 +0100 <dminuoso> Actually there is a very very good talk
2020-11-03 13:35:01 +0100 <dminuoso> miladz68: https://www.youtube.com/watch?v=x3evzO8O9e8
2020-11-03 13:35:13 +0100 <dminuoso> There's nobody more qualified to explain how GHCs type inference works than SPJ himself. :)
2020-11-03 13:35:23 +0100 <merijn> miladz68: For practical "writing Haskell" is sufficient to think of as an equation solver
2020-11-03 13:35:23 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 13:35:54 +0100 <miladz68> I want to know how haskell type system works why my code didn't type check and how to write more advanced type level haskell code
2020-11-03 13:36:05 +0100alp(~alp@2a01:e0a:58b:4920:65ec:1bbd:4b97:e92d) (Ping timeout: 272 seconds)
2020-11-03 13:36:26 +0100 <merijn> miladz68: The most confusing effect of that equation solving is that, unlike stuff you see in Java/C++/etc. the type checking is bidirectional
2020-11-03 13:36:35 +0100 <dminuoso> miladz68: the specific example I can talk you through
2020-11-03 13:36:42 +0100 <dminuoso> It's not complicated, it's rather simple, actually
2020-11-03 13:36:49 +0100 <dminuoso> % newtype Fix f = Fix (f (Fix f))
2020-11-03 13:36:49 +0100 <yahb> dminuoso:
2020-11-03 13:36:50 +0100 <kuribas> isn't type checking more like logic programming, but without backtracking?
2020-11-03 13:36:55 +0100 <dminuoso> % data Mex a = Con a | Ad a a
2020-11-03 13:36:56 +0100 <yahb> dminuoso:
2020-11-03 13:37:08 +0100 <dminuoso> % t :: Fix Mex; t = Fix (Con 2)
2020-11-03 13:37:08 +0100 <yahb> dminuoso: ; <interactive>:29:28: error:; * No instance for (Num (Fix Mex)) arising from the literal `2'; * In the first argument of `Con', namely `2'; In the first argument of `Fix', namely `(Con 2)'; In the expression: Fix (Con 2)
2020-11-03 13:37:14 +0100 <merijn> kuribas: I would argue the "logic programming without backtracking" is just "solving systems of equations"
2020-11-03 13:37:38 +0100 <kuribas> makes sense
2020-11-03 13:37:52 +0100 <kuribas> as unification is assigning values to variables
2020-11-03 13:37:55 +0100 <merijn> miladz68: FWIW, I think wanting to "writing more advanced type level Haskell" is a beginners mistake that leads to more pain than productivity :)
2020-11-03 13:37:57 +0100 <dminuoso> miladz68: For a somewhat detailed guide, check out the video of the talk I linked earlier.
2020-11-03 13:38:18 +0100 <miladz68> dminuoso please continure. I want to if I can make sense of it
2020-11-03 13:38:25 +0100 <dminuoso> Alright
2020-11-03 13:38:45 +0100 <dminuoso> miladz68: What's the type of the *data* constructor `Fix` in the above expression bound to t?
2020-11-03 13:38:49 +0100 <dminuoso> Monomorphized
2020-11-03 13:38:55 +0100 <dminuoso> That is
2020-11-03 13:39:03 +0100 <dminuoso> t :: Fix Mex; t = (Fix :: _) (Con 2)
2020-11-03 13:39:05 +0100 <miladz68> merjin I am not a complete beginner, I have been wrestling with haskell for 2 years on and off
2020-11-03 13:39:10 +0100 <dminuoso> What goes into the hole _ there?
2020-11-03 13:39:20 +0100alp(~alp@2a01:e0a:58b:4920:2923:faed:144a:c0cf)
2020-11-03 13:39:33 +0100 <miladz68> let me check with the compiler
2020-11-03 13:39:38 +0100 <dminuoso> Id rather you use your head
2020-11-03 13:40:29 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 268 seconds)
2020-11-03 13:40:33 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-03 13:40:53 +0100 <dminuoso> If you say "I dont know" that's fine, I can go one step back
2020-11-03 13:40:54 +0100 <miladz68> dminuoso Fix :: Fix f is it corect ?
2020-11-03 13:41:08 +0100 <merijn> miladz68: Even then, though. I'd consider myself an expert and even in my biggest codebase of like 10k LOC of Haskell, there's maybe 3 lines of advanced type level stuff?
2020-11-03 13:41:14 +0100 <miladz68> i would appreciate going an step back
2020-11-03 13:41:17 +0100 <dminuoso> Alright
2020-11-03 13:41:23 +0100 <dminuoso> Let's start with a simpler example:
2020-11-03 13:41:29 +0100 <merijn> Well, maybe a bit more if we count GADTs without type level shenanigans
2020-11-03 13:41:31 +0100 <dminuoso> Just 'c'
2020-11-03 13:41:46 +0100 <dminuoso> We could play human type inference engine, using intuitive rules we somehow carry in our head
2020-11-03 13:41:58 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
2020-11-03 13:42:09 +0100 <dminuoso> We know that 'c' :: Char
2020-11-03 13:42:10 +0100 <miladz68> merjin Oh OK. then i want to learn to understand the type system more
2020-11-03 13:42:33 +0100 <dminuoso> Then, the data definition of `data Maybe a = Nothing | Just a` gives us `Just a :: a -> Maybe a`
2020-11-03 13:42:55 +0100 <miladz68> dminuoso, I understan this
2020-11-03 13:43:19 +0100 <dminuoso> So if we apply `Just` to 'c', that means ((Just :: Char -> Maybe Char) 'c') :: Maybe Char
2020-11-03 13:43:24 +0100 <miladz68> Just :: a -> Maybe a
2020-11-03 13:43:58 +0100 <miladz68> good so far
2020-11-03 13:44:04 +0100 <dminuoso> miladz68: So one of the type inference rules GHC uses, is for instance, if we know `f :: S -> T` for some arbitrary choics of S and T, and we know that `x :: S`, then we can *deduce* that `f x :: T`
2020-11-03 13:44:44 +0100 <dminuoso> Anyhow, lets go back!
2020-11-03 13:45:24 +0100 <miladz68> I didnt get this part So one of the type inference rules GHC uses, is for instance, if we know `f :: S -> T` for some arbitrary choics of S and T, and we know that `x :: S`, then we can *deduce* that `f x :: T`
2020-11-03 13:46:36 +0100 <dminuoso> miladz68: If `f is a function from S to T, and x is something of value S, then the expression `f applied to x` has type T
2020-11-03 13:46:44 +0100 <dminuoso> It's a deducible fact
2020-11-03 13:47:02 +0100 <miladz68> I understand that
2020-11-03 13:47:32 +0100hackagelsp-types 1.0.0.1 - Haskell library for the Microsoft Language Server Protocol, data types https://hackage.haskell.org/package/lsp-types-1.0.0.1 (luke_)
2020-11-03 13:47:42 +0100 <dminuoso> miladz68: That rule can go in both directions, if it somehow figures out `f x :: T`, it can deduce that `f :: _ -> T`
2020-11-03 13:47:44 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 13:48:07 +0100Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
2020-11-03 13:48:44 +0100 <miladz68> I think I understand that
2020-11-03 13:49:07 +0100 <miladz68> I understand it actually, makes sense
2020-11-03 13:50:04 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-03 13:50:49 +0100 <miladz68> dminuoso please continue if you can
2020-11-03 13:51:09 +0100mmohammadi9812(~mmohammad@188.210.118.100) (Quit: Quit)
2020-11-03 13:51:10 +0100 <dminuoso> miladz68: So all of this was just unrelated, just wanted to nudge you into the mindset of GHC here.
2020-11-03 13:51:24 +0100mmohammadi9812(~mmohammad@188.210.118.100)
2020-11-03 13:51:37 +0100 <miladz68> dminuoso I understand so far
2020-11-03 13:51:38 +0100 <dminuoso> Lets start off with a simpler but related example
2020-11-03 13:51:47 +0100 <dminuoso> % f :: Maybe Char; f = 2
2020-11-03 13:51:47 +0100 <yahb> dminuoso: ; <interactive>:30:22: error:; * No instance for (Num (Maybe Char)) arising from the literal `2'; * In the expression: 2; In an equation for `f': f = 2
2020-11-03 13:51:50 +0100 <dminuoso> What happened here?
2020-11-03 13:52:07 +0100 <dminuoso> So the first thing to understand, is that numbers are *polymorphic* values
2020-11-03 13:52:25 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-03 13:52:26 +0100 <dminuoso> What this code really says is:
2020-11-03 13:52:34 +0100 <dminuoso> f :: Maybe Char; f = fromInteger 2
2020-11-03 13:52:39 +0100mmohammadi9812(~mmohammad@188.210.118.100) (Client Quit)
2020-11-03 13:52:42 +0100 <dminuoso> So now, if we look at
2020-11-03 13:52:44 +0100 <dminuoso> % :t fromInteger
2020-11-03 13:52:44 +0100 <yahb> dminuoso: Num a => Integer -> a
2020-11-03 13:52:55 +0100mmohammadi9812(~mmohammad@188.210.118.100)
2020-11-03 13:53:09 +0100 <dminuoso> This will instantiate the tpye variable `a` at `Maybe Char`, and that's *fine*, the type signature allows for this
2020-11-03 13:53:21 +0100piyush-kurur(~user@14.139.174.50)
2020-11-03 13:53:22 +0100 <dminuoso> but that creates a constraint `Num (Maybe Char)` that we need to solve
2020-11-03 13:53:36 +0100 <dminuoso> So GHC will look up in its knowledge base, but fail to find a matching instance
2020-11-03 13:53:59 +0100 <dminuoso> >> This will instantiate the tpye variable `a` at `Maybe Char`,
2020-11-03 13:54:09 +0100 <dminuoso> The reason GHC does this, is what I explained earlier
2020-11-03 13:54:14 +0100 <dminuoso> from the type annotation
2020-11-03 13:54:18 +0100 <dminuoso> f :: Maybe Char
2020-11-03 13:54:19 +0100 <miladz68> dminuoso let me digest this. this is getting interesting
2020-11-03 13:54:21 +0100 <dminuoso> It then sees
2020-11-03 13:54:29 +0100 <dminuoso> fromInteger 2 :: Maybe Char
2020-11-03 13:54:45 +0100 <dminuoso> So it knows the return type of `fromInteger` must be Maybe Char
2020-11-03 13:55:17 +0100 <miladz68> dminuoso, so far so good. I understand
2020-11-03 13:56:19 +0100 <dminuoso> miladz68: Afterwards, you should really watch the video I linked. Its a wonderful talk :)
2020-11-03 13:56:25 +0100ghghghgh(d4fc771c@212.252.119.28)
2020-11-03 13:56:39 +0100 <dminuoso> miladz68: To introduce a new language, to make the *choice* of a type variable of a polymorphic thing apparent, we will write:
2020-11-03 13:56:43 +0100 <dminuoso> % id @Int 1
2020-11-03 13:56:44 +0100 <yahb> dminuoso: 1
2020-11-03 13:56:52 +0100 <dminuoso> The @Int means "set the type variable to Int"
2020-11-03 13:57:02 +0100 <dminuoso> So if we have `id :: a -> a`, then `id @Int :: Int -> Int`
2020-11-03 13:57:04 +0100 <dminuoso> So far so good?
2020-11-03 13:57:10 +0100zoran119(~zoran119@124-169-22-52.dyn.iinet.net.au)
2020-11-03 13:57:27 +0100 <miladz68> dminuoso good so far
2020-11-03 13:57:34 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-11-03 13:58:01 +0100 <dminuoso> miladz68: GHC does this internally everywhere, so it's not bad in this discussion.
2020-11-03 13:58:12 +0100 <dminuoso> % t :: Fix Mex; t = Fix (Con 2)
2020-11-03 13:58:17 +0100 <dminuoso> Let's think about what happens here
2020-11-03 13:58:30 +0100 <dminuoso> First thing, we note that `f :: Fix Mex`
2020-11-03 13:58:43 +0100 <dminuoso> And we see `t` being bound to `Fix` applied to something
2020-11-03 13:58:53 +0100 <dminuoso> So using the same reasoning from above, we can therefore deduce
2020-11-03 13:59:06 +0100 <dminuoso> % newtype Fix f = Fix (f (Fix f))
2020-11-03 13:59:06 +0100 <yahb> dminuoso:
2020-11-03 13:59:08 +0100 <dminuoso> % :t Fix
2020-11-03 13:59:09 +0100 <yahb> dminuoso: f (Fix f) -> Fix f
2020-11-03 13:59:18 +0100 <dminuoso> Since we know that's the type of Fix
2020-11-03 13:59:40 +0100 <dminuoso> To solve for this, we set `f` to some as-of-yet unknown type, call it _t
2020-11-03 13:59:52 +0100 <dminuoso> So our Fix has type `_t (Fix _t) -> Fix _t`
2020-11-03 14:00:01 +0100 <dminuoso> We then know that
2020-11-03 14:00:04 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 14:00:11 +0100 <dminuoso> Con 2 :: _t (Fix _t)
2020-11-03 14:00:19 +0100 <dminuoso> (Because it appears as an argument to Fix)
2020-11-03 14:00:27 +0100 <dminuoso> And we know that `Fix (Con 2) :: Fix _t`
2020-11-03 14:01:10 +0100 <dminuoso> And we also know that `Fix (Con 2) :: Fix Mex`
2020-11-03 14:01:20 +0100 <dminuoso> So we can deduce that `_t = Mex`
2020-11-03 14:01:29 +0100 <dminuoso> If we go plug that knowledge in we notice that:
2020-11-03 14:01:39 +0100 <dminuoso> Con 2 :: Mex (Fix Mex)
2020-11-03 14:02:05 +0100 <dminuoso> So recall, how a numbers are polymorphic with that fromInteger:
2020-11-03 14:02:13 +0100 <dminuoso> Con (fromInteger 2) :: Mex (Fix Mex)
2020-11-03 14:02:50 +0100 <dminuoso> From the above data type definition we also have: Con :: a -> Mex a
2020-11-03 14:02:52 +0100p-core(~Thunderbi@193.165.236.104)
2020-11-03 14:03:41 +0100 <miladz68> I still cannot see the error
2020-11-03 14:03:44 +0100 <dminuoso> Hold on, almost there!
2020-11-03 14:03:52 +0100 <dminuoso> miladz68: Did you follow so far?
2020-11-03 14:03:53 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-03 14:04:00 +0100 <miladz68> dminusoso Yes
2020-11-03 14:04:36 +0100 <dminuoso> So since that Con takes a type variable, we too instantiate some as-of-yet unknown type variable
2020-11-03 14:04:44 +0100 <dminuoso> So `Con :: _u -> Mex _u
2020-11-03 14:04:52 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-03 14:04:55 +0100 <dminuoso> so (fromInteger 2) :: _u
2020-11-03 14:05:17 +0100 <dminuoso> But, we just established:
2020-11-03 14:05:20 +0100 <dminuoso> 14:01:39 dminuoso | Con 2 :: Mex (Fix Mex)
2020-11-03 14:05:23 +0100 <dminuoso> So we know that _u = Fix Mex
2020-11-03 14:05:25 +0100urodna(~urodna@unaffiliated/urodna)
2020-11-03 14:05:34 +0100 <dminuoso> % :t fromInteger
2020-11-03 14:05:34 +0100 <yahb> dminuoso: Num a => Integer -> a
2020-11-03 14:05:46 +0100 <miladz68> Ok
2020-11-03 14:05:47 +0100 <dminuoso> Here too we set `a` to some as-of-yet unknown type called _v
2020-11-03 14:06:01 +0100 <dminuoso> So our use of fromInteger has type `Num _v => Integer _v`
2020-11-03 14:06:04 +0100 <dminuoso> err
2020-11-03 14:06:06 +0100 <dminuoso> So our use of fromInteger has type `Num _v => Integer -> _v`
2020-11-03 14:06:12 +0100mmohammadi9812(~mmohammad@188.210.118.100) (Ping timeout: 260 seconds)
2020-11-03 14:06:28 +0100 <dminuoso> 14:04:55 dminuoso | so (fromInteger 2) :: _u
2020-11-03 14:06:34 +0100 <dminuoso> 14:05:23 dminuoso | So we know that _u = Fix Mex
2020-11-03 14:06:43 +0100 <dminuoso> so we have `(fromInteger 2) :: Fix Mex`
2020-11-03 14:06:52 +0100 <dminuoso> So we know that `_v = Fix Mex`
2020-11-03 14:07:03 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 14:07:16 +0100 <dminuoso> We're all done now, but we need `Num (Fix Mex)`
2020-11-03 14:07:16 +0100 <miladz68> there is no instance for fromInteger 2 :: Fix Mex ?
2020-11-03 14:07:24 +0100 <dminuoso> But no such instance exists
2020-11-03 14:07:28 +0100 <dminuoso> So GHC bails out
2020-11-03 14:07:45 +0100alp(~alp@2a01:e0a:58b:4920:2923:faed:144a:c0cf) (Ping timeout: 272 seconds)
2020-11-03 14:07:47 +0100ghghghgh(d4fc771c@212.252.119.28) (Remote host closed the connection)
2020-11-03 14:08:20 +0100 <dminuoso> miladz68: If you type annotated `2 :: Int` you'd get a better diagnostic. The problem in your case is that numbers are *so* polymorphic, that they keep the type inference going much longer. :)
2020-11-03 14:08:47 +0100 <miladz68> dminusoso wow, I actually understand it :). thanks. you saved me a week of frustrations
2020-11-03 14:08:56 +0100 <dminuoso> miladz68: Btw, in that above algorithm, if we are left with any "as-of-yet unknown types" at the end, we will just quantify them back!
2020-11-03 14:09:00 +0100mmohammadi9812(~mmohammad@188.210.118.100)
2020-11-03 14:09:06 +0100 <dminuoso> for instance if we wrote:
2020-11-03 14:09:39 +0100 <dminuoso> `f x = x` we'd say `x :: _u`, so `f :: _u -> _u`, done! Then we generalize back, give the type variable some random name, and then we have `f :: x -> x`
2020-11-03 14:10:02 +0100 <dminuoso> miladz68: And that in principle is how type inference in GHC works.
2020-11-03 14:10:07 +0100 <dminuoso> Do watch the video! :)
2020-11-03 14:10:56 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer)
2020-11-03 14:10:59 +0100 <miladz68> dminusoso I wil for sure. I feel much confortable with GHC now. Thanks a lot.
2020-11-03 14:11:02 +0100Rudd0(~Rudd0@185.189.115.98) (Ping timeout: 272 seconds)
2020-11-03 14:11:52 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 14:12:10 +0100 <dminuoso> miladz68: Interesting to note, the consequences of this type inference algorithm, is that GHC can make wrong assumptions about types, sometimes giving unification errors in really strange places.
2020-11-03 14:12:32 +0100CyB3rW0rm(~fedora@143.244.38.33) ("Leaving")
2020-11-03 14:12:34 +0100xerox_(~xerox@unaffiliated/xerox)
2020-11-03 14:12:41 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-03 14:12:50 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 14:13:21 +0100 <dminuoso> (The consequence is not that it will fail to report on errors, but it can lead GHC to just assume a fact, and then go on and keep applying inference rules with that fact)
2020-11-03 14:13:38 +0100 <dminuoso> If it doesnt work out it *will* error out, but not necessarily in the place you expect it to
2020-11-03 14:13:54 +0100 <dminuoso> So adding type annotations helps limit how far inference can go
2020-11-03 14:14:05 +0100 <dminuoso> (So if you ever have strange type errors you cant figure out, add type annotations/ascriptions!)
2020-11-03 14:14:35 +0100 <miladz68> dminusoso like adding ::Int next to 2 in my example
2020-11-03 14:14:40 +0100 <dminuoso> Right.
2020-11-03 14:14:50 +0100 <miladz68> dminusoso and one more question, did you learn all this by watching that one video ?
2020-11-03 14:14:58 +0100 <dminuoso> % t :: Fix Mex; t = Fix (Con 2)
2020-11-03 14:14:59 +0100 <yahb> dminuoso: ; <interactive>:36:28: error:; * No instance for (Num (Fix Mex)) arising from the literal `2'; * In the first argument of `Con', namely `2'; In the first argument of `Fix', namely `(Con 2)'; In the expression: Fix (Con 2)
2020-11-03 14:15:02 +0100 <dminuoso> % t :: Fix Mex; t = Fix (Con (2 :: Int))
2020-11-03 14:15:03 +0100 <yahb> dminuoso: ; <interactive>:37:24: error:; * Couldn't match type `Int' with `Fix Mex'; Expected type: Mex (Fix Mex); Actual type: Mex Int; * In the first argument of `Fix', namely `(Con (2 :: Int))'; In the expression: Fix (Con (2 :: Int)); In an equation for `t': t = Fix (Con (2 :: Int))
2020-11-03 14:15:26 +0100 <dminuoso> miladz68: No, just things you pick up :)
2020-11-03 14:15:30 +0100macrover(~macrover@ip70-189-231-35.lv.lv.cox.net)
2020-11-03 14:15:36 +0100 <dminuoso> And other folks in here who helped explain
2020-11-03 14:15:52 +0100 <dminuoso> (Though I did use the video to understand some subtleties of the type inference involving GADTs)
2020-11-03 14:16:54 +0100 <miladz68> I will watch the video and try to use my brain more instead of the compiler
2020-11-03 14:17:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
2020-11-03 14:18:05 +0100 <dminuoso> miladz68: http://dev.stephendiehl.com/fun/006_hindley_milner.html is also a good read
2020-11-03 14:18:24 +0100 <dminuoso> And if you want to dive into the theory and formal methods, Pierces Types and Programming Languages is an excellent read
2020-11-03 14:18:44 +0100lucasb(uid333435@gateway/web/irccloud.com/x-uaaedzwtlfjjcpgy)
2020-11-03 14:21:00 +0100 <merijn> miladz68: Honestly, just doing type inference by hand on a piece of paper helps tons
2020-11-03 14:21:16 +0100 <miladz68> dminusoso I will check them out both. I think I will checkout the book first. probably will more than a few months for someone without much background is CS theory
2020-11-03 14:21:52 +0100 <dminuoso> As a cute excercise:
2020-11-03 14:21:57 +0100 <dminuoso> % :t id
2020-11-03 14:21:58 +0100 <yahb> dminuoso: a -> a
2020-11-03 14:22:01 +0100 <dminuoso> % :t flip id
2020-11-03 14:22:01 +0100 <yahb> dminuoso: b -> (b -> c) -> c
2020-11-03 14:22:04 +0100 <dminuoso> % :t flip
2020-11-03 14:22:04 +0100 <yahb> dminuoso: (a -> b -> c) -> b -> a -> c
2020-11-03 14:22:14 +0100 <dminuoso> Figure out why `flip id` has the type it has! :)
2020-11-03 14:22:39 +0100 <miladz68> merjin thank sounds exactly like what I would be interested in but I need to see examples of how it is done
2020-11-03 14:24:56 +0100 <miladz68> dminusoso I can't believe that example you just mentioned. why is it so ? ok don't tell me. let me think
2020-11-03 14:26:03 +0100 <merijn> miladz68: It helps to rename the type variables of id and 'flip' so they are unique and then just working out the equations
2020-11-03 14:26:22 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-11-03 14:26:34 +0100 <dminuoso> merijn: Start like I did. Swap out type variables for "as-of-yet unknown types", perhaps start them with an underscore like I did?
2020-11-03 14:26:50 +0100 <dminuoso> Write it down on paper or an editor :)
2020-11-03 14:29:37 +0100piyush-kurur(~user@14.139.174.50) (Ping timeout: 264 seconds)
2020-11-03 14:30:55 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-03 14:31:14 +0100p-core(~Thunderbi@193.165.236.104) (Ping timeout: 264 seconds)
2020-11-03 14:33:35 +0100revtintin(~revtintin@158.140.144.34)
2020-11-03 14:35:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Quit: leaving)
2020-11-03 14:35:50 +0100jonatanb(~jonatanb@83.24.9.26.ipv4.supernova.orange.pl) (Quit: Leaving...)
2020-11-03 14:38:04 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
2020-11-03 14:39:16 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-11-03 14:40:15 +0100britva(~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Quit: This computer has gone to sleep)
2020-11-03 14:42:24 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-03 14:44:35 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 14:47:02 +0100privalovy_lekvarhexic
2020-11-03 14:48:28 +0100drbean(~drbean@TC210-63-209-173.static.apol.com.tw) (Ping timeout: 260 seconds)
2020-11-03 14:49:33 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2020-11-03 14:54:00 +0100machinedgod(~machinedg@207.253.244.210)
2020-11-03 14:57:02 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 14:57:38 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
2020-11-03 14:58:03 +0100Ranhir(~Ranhir@157.97.53.139)
2020-11-03 14:58:24 +0100acidjnk_new2(~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-03 14:59:33 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2020-11-03 14:59:44 +0100ubert(~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33)
2020-11-03 15:00:34 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Client Quit)
2020-11-03 15:03:43 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-11-03 15:05:28 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-11-03 15:08:54 +0100avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be)
2020-11-03 15:11:01 +0100thunderrd(~thunderrd@183.182.115.112) (Remote host closed the connection)
2020-11-03 15:11:38 +0100daydaynatation(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2020-11-03 15:11:44 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-xutwnldhztnzggtn) (Quit: Connection closed for inactivity)
2020-11-03 15:12:07 +0100xff0x(~fox@2001:1a81:53b4:ba00:5006:d65a:90eb:4407) (Ping timeout: 260 seconds)
2020-11-03 15:12:15 +0100 <daydaynatation> I have installed the array package, yet when i try to load it into ghci, it still says it's in a hidden package
2020-11-03 15:12:21 +0100ggole(~ggole@2001:8003:8119:7200:4c8:75c2:97ad:422b)
2020-11-03 15:12:34 +0100 <daydaynatation> import Data.Array
2020-11-03 15:13:04 +0100xff0x(~fox@2001:1a81:53b4:ba00:49d8:d2a:69a9:1ef4)
2020-11-03 15:13:11 +0100 <dminuoso> daydaynatation: What do you mean by "installed the array package" exactly?
2020-11-03 15:13:28 +0100 <daydaynatation> cabal install array
2020-11-03 15:13:35 +0100 <daydaynatation> cabal install array --lib
2020-11-03 15:13:47 +0100 <dminuoso> Yeah uh, and how did you start ghci?
2020-11-03 15:13:56 +0100 <daydaynatation> cabal repl
2020-11-03 15:13:59 +0100alp(~alp@2a01:e0a:58b:4920:5584:7343:90a1:2565)
2020-11-03 15:14:17 +0100 <dminuoso> Is your cwd inside a cabal project?
2020-11-03 15:14:34 +0100thunderrd(~thunderrd@183.182.115.112)
2020-11-03 15:14:40 +0100 <daydaynatation> dminuoso: i see where the problem is. stupid me. i can simply run ghci
2020-11-03 15:14:59 +0100 <daydaynatation> I had the habit of running stack ghci before
2020-11-03 15:16:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 15:16:40 +0100 <miladz68> dminuoso :t flip :: (a -> b -> c) -> b -> a -> c now :t id :: z -> z so taking z as z=b->c replacing it into id we get id :: (b->c) -> (b->c) replacing into filp we get flip :: ( (b->c) -> b ->c) -> b -> (b->c) -> c and :t filp id :: b->(b->c) ->c
2020-11-03 15:17:08 +0100 <dminuoso> miladz68: That seems a bit short
2020-11-03 15:18:07 +0100 <merijn> You're skipping a step there, yeah :p
2020-11-03 15:18:29 +0100 <dminuoso> miladz68: Let me give you a gist for the first step :)
2020-11-03 15:18:56 +0100jjhoo(jahakala@dsl-trebng21-b048b5-171.dhcp.inet.fi) (Remote host closed the connection)
2020-11-03 15:19:58 +0100 <miladz68> All did was to interpret id as :t id :: (b->c) -> b-> c and replace it into flip
2020-11-03 15:20:13 +0100 <miladz68> dminuoso thanks
2020-11-03 15:21:18 +0100ddellacosta(~dd@86.106.121.168)
2020-11-03 15:21:30 +0100 <tomsmeding> miladz68: sure, but why choose b->c? :)
2020-11-03 15:22:50 +0100 <miladz68> :tomsmeding because b->c would type check, but I don't know how ghc figures that out. Is that the missing step ?
2020-11-03 15:22:50 +0100jjhoo(jahakala@dsl-trebng21-b048b5-171.dhcp.inet.fi)
2020-11-03 15:23:12 +0100 <tomsmeding> it is :)
2020-11-03 15:24:01 +0100 <miladz68> tomsmeding i will think more about it then
2020-11-03 15:24:04 +0100 <tomsmeding> you're applying 'flip' to 'id'; this means that the first argument of 'flip', which has type 'a -> b -> c', must match the type of 'id', which is 'z -> z'
2020-11-03 15:27:40 +0100p-core(~Thunderbi@193.165.237.18)
2020-11-03 15:27:49 +0100 <merijn> miladz68: You get "a -> b -> c = z -> z" which in turn leads to the equations "z = a" and "z = b -> c". Typechecking then consists of validating that none of your equations contradict each other
2020-11-03 15:28:18 +0100 <merijn> "z = a" and "z = b -> c" is fine IFF "a = b -> c"
2020-11-03 15:29:12 +0100 <miladz68> merjin thanks. I now see how ghc worked it out.
2020-11-03 15:30:13 +0100 <dminuoso> miladz68: Im preparing a more slightly more formal write up
2020-11-03 15:30:16 +0100 <dminuoso> That will probably help
2020-11-03 15:30:21 +0100acidjnk_new2(~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de)
2020-11-03 15:30:24 +0100 <miladz68> what is this process called ? type checking ? type inferrence ?
2020-11-03 15:30:42 +0100 <miladz68> dminuoso thanks alot.
2020-11-03 15:30:52 +0100jil`(~user@45.86.162.6) ("ERC (IRC client for Emacs 26.1)")
2020-11-03 15:31:03 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-03 15:31:57 +0100 <dminuoso> miladz68: type inference is an integral part of type checking
2020-11-03 15:33:07 +0100 <dminuoso> The important realization is that types are not a value level property, they are of syntactical nature. Values dont have types
2020-11-03 15:33:10 +0100 <dminuoso> Expressions have types
2020-11-03 15:33:15 +0100 <merijn> dminuoso: Eh, I disagree
2020-11-03 15:33:28 +0100 <merijn> You can do type checking without inference, so clearly it's not an "integral part"
2020-11-03 15:33:45 +0100 <merijn> It's just that both use the same machinery in Haskell
2020-11-03 15:34:04 +0100 <dminuoso> merijn: You cant do much type checking without at least some type inference, really.
2020-11-03 15:34:24 +0100 <dminuoso> Say, at the very minimum you likely want some kind of [App] inference rule
2020-11-03 15:34:47 +0100 <dminuoso> I mean yeah. technically you could, its just that such a type system wouldn't do much for you
2020-11-03 15:35:35 +0100 <dminuoso> Without inference, this could not be checked for instance: f :: Int; f = (g :: Char -> Float) (x :: Char)
2020-11-03 15:35:45 +0100 <dminuoso> (Or you'd have to just accept it)
2020-11-03 15:36:26 +0100 <merijn> wut
2020-11-03 15:36:40 +0100 <merijn> How does that require inference?
2020-11-03 15:37:11 +0100 <dminuoso> merijn: how do you infer what the type of `g applied to x` is?
2020-11-03 15:37:16 +0100pavonia(~user@unaffiliated/siracusa)
2020-11-03 15:37:18 +0100 <dminuoso> How do you *know* it?
2020-11-03 15:37:38 +0100 <merijn> You are conflating the English/logical meaning of infer with "type inference"
2020-11-03 15:38:13 +0100 <merijn> "Char -> Float" applied to "Char" = "Float" isn't inferring anything
2020-11-03 15:38:21 +0100 <dminuoso> Of course it is.
2020-11-03 15:38:24 +0100chaosmasttter(~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-03 15:38:48 +0100 <dminuoso> You have to encode the machinery into the type checker to *know* it can do that
2020-11-03 15:38:51 +0100 <dminuoso> And that's inference
2020-11-03 15:39:08 +0100 <merijn> You literally have to encode the machinery to type check into any type checker...
2020-11-03 15:39:12 +0100 <dminuoso> In the above, `g x :: Char` is an inferred type
2020-11-03 15:39:13 +0100MaoZeDong_(~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d)
2020-11-03 15:39:17 +0100 <merijn> That's what type checker are
2020-11-03 15:39:18 +0100 <dminuoso> It's certainly not specified
2020-11-03 15:39:34 +0100 <dminuoso> Hence my statement: type inference is an integral part of type checking
2020-11-03 15:40:09 +0100 <merijn> Your usage of type inference does not conform to any common usage of type inference like in, say, TaPL
2020-11-03 15:41:14 +0100 <dminuoso> It's quite as per TaPL
2020-11-03 15:42:05 +0100daydaynatation(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Read error: No route to host)
2020-11-03 15:42:44 +0100christo(~chris@81.96.113.213)
2020-11-03 15:43:29 +0100 <dminuoso> merijn: The reason you're allowed to assume `g x :: Char` in Haskell, is as per [App] rule in the damas milner type inference
2020-11-03 15:43:35 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-11-03 15:43:43 +0100 <merijn> I refer you to the fact that type inference is discussed on...page 317 of TaPL and not needed for type checking, e.g. the simply typed lambda calculus
2020-11-03 15:43:51 +0100 <merijn> Which, according to your definition, it would be
2020-11-03 15:44:15 +0100 <merijn> dminuoso: There are type checking rules for function application too
2020-11-03 15:44:48 +0100 <merijn> "Char -> Float" applied to "Char" = "Float" is a rule in even the simplest lambda calculus and doesn't require inference, just an application rule (which you need anyway)
2020-11-03 15:45:09 +0100 <merijn> You only need inference for function application if you don't annotate functions with their argument types
2020-11-03 15:45:15 +0100 <merijn> Which you already did
2020-11-03 15:46:16 +0100 <merijn> I refer you to rule E-AppAbs on page 72 of TaPL :)
2020-11-03 15:46:36 +0100 <merijn> oh, wait, that's the wrong one, hold on
2020-11-03 15:47:21 +0100 <merijn> T-Abs and T-App on page 103
2020-11-03 15:47:25 +0100 <dminuoso> merijn: an application rule *is* an inference rue
2020-11-03 15:47:42 +0100 <merijn> TaPL disagrees
2020-11-03 15:47:52 +0100PyroLagus(PyroLagus@i.have.ipv6.on.coding4coffee.org) (Ping timeout: 246 seconds)
2020-11-03 15:48:08 +0100PyroLagus(PyroLagus@i.have.ipv6.on.coding4coffee.org)
2020-11-03 15:48:40 +0100 <merijn> type inference is the "act of computing a principal type for a term in which some or all annotations are left out"
2020-11-03 15:48:58 +0100 <lortabac> IIRC most type systems presented in TAPL require no inference at all
2020-11-03 15:49:07 +0100 <merijn> The fact that you can piggyback inference off of the typing rule for abstraction is orthogonal
2020-11-03 15:49:10 +0100 <lortabac> STLC, System F...
2020-11-03 15:49:31 +0100 <merijn> Consider the fact that you can't infer RankN types for functions, but you can still type check them
2020-11-03 15:49:44 +0100Eason0210(~user@101.85.10.81)
2020-11-03 15:49:48 +0100macrover(~macrover@ip70-189-231-35.lv.lv.cox.net) (Ping timeout: 258 seconds)
2020-11-03 15:50:21 +0100 <merijn> You can think of the T-App rule as "a logical inference", but that's not what any of the literature means when they talk about type inference
2020-11-03 15:51:59 +0100 <dminuoso> 15:47:42 merijn | TaPL disagrees
2020-11-03 15:52:02 +0100 <dminuoso> Im really curious.
2020-11-03 15:52:09 +0100 <dminuoso> What you call type inference, TaPL calls type reconstruction
2020-11-03 15:52:33 +0100 <merijn> It even says "type inference, see type reconstruction"
2020-11-03 15:52:33 +0100 <dminuoso> The term "type inference" for these "logical inference rules" is used from the beginning throughout the entire book
2020-11-03 15:53:20 +0100Guest8822(562d675a@86-45-103-90-dynamic.agg2.ddk.dbc-mgr.eircom.net)
2020-11-03 15:53:39 +0100 <lortabac> dminuoso: are you sure? that's not what I remember from reading that book
2020-11-03 15:53:50 +0100 <dminuoso> lortabac: Im staring at it right now.
2020-11-03 15:54:28 +0100jokester(~mono@unaffiliated/jokester)
2020-11-03 15:54:36 +0100 <lortabac> it is true that some people prefer saying "type reconstruction" or "synthesis" to avoid ambiguity
2020-11-03 15:54:43 +0100 <dminuoso> I guess the book is really ambiguous about this
2020-11-03 15:54:52 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar) (*.net *.split)
2020-11-03 15:54:52 +0100cstrahan(sid36118@gateway/web/irccloud.com/x-mfvjnlhprdhvdyaw) (*.net *.split)
2020-11-03 15:54:52 +0100eacameron(sid256985@gateway/web/irccloud.com/x-trisvivfbojkcgwh) (*.net *.split)
2020-11-03 15:54:53 +0100jlv(jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz) (*.net *.split)
2020-11-03 15:54:53 +0100ttc(tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb) (*.net *.split)
2020-11-03 15:54:53 +0100bonvoyage[m](bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub) (*.net *.split)
2020-11-03 15:54:53 +0100iinuwa(iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg) (*.net *.split)
2020-11-03 15:54:53 +0100Fernando-Basso[m(fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt) (*.net *.split)
2020-11-03 15:54:53 +0100theduke(thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel) (*.net *.split)
2020-11-03 15:54:53 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi) (*.net *.split)
2020-11-03 15:54:53 +0100Klumben(Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso) (*.net *.split)
2020-11-03 15:54:53 +0100whez(uid470288@gateway/web/irccloud.com/x-malcqwiljeridksp) (*.net *.split)
2020-11-03 15:54:53 +0100yushyin(5rFdtsVUm7@karif.server-speed.net) (*.net *.split)
2020-11-03 15:54:53 +0100sud0(~Death@hackspaceuy/member/sud0) (*.net *.split)
2020-11-03 15:54:53 +0100sm(~user@li229-222.members.linode.com) (*.net *.split)
2020-11-03 15:54:55 +0100 <dminuoso> At some point TaPL says "type reconstruction, sometimes also called type inference"
2020-11-03 15:55:06 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-03 15:55:24 +0100acidjnk_new2(~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-03 15:55:28 +0100 <dminuoso> but at the same type introduces "inference rules"
2020-11-03 15:55:36 +0100 <dminuoso> Which are not for type reconstruction, i.e. type inference
2020-11-03 15:55:49 +0100 <dminuoso> Ah well at any rate
2020-11-03 15:55:56 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar)
2020-11-03 15:55:56 +0100cstrahan(sid36118@gateway/web/irccloud.com/x-mfvjnlhprdhvdyaw)
2020-11-03 15:55:56 +0100eacameron(sid256985@gateway/web/irccloud.com/x-trisvivfbojkcgwh)
2020-11-03 15:55:56 +0100jlv(jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz)
2020-11-03 15:55:56 +0100Fernando-Basso[m(fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt)
2020-11-03 15:55:56 +0100iinuwa(iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg)
2020-11-03 15:55:56 +0100theduke(thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel)
2020-11-03 15:55:56 +0100ttc(tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb)
2020-11-03 15:55:56 +0100bonvoyage[m](bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub)
2020-11-03 15:55:56 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi)
2020-11-03 15:55:56 +0100Klumben(Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso)
2020-11-03 15:55:56 +0100whez(uid470288@gateway/web/irccloud.com/x-malcqwiljeridksp)
2020-11-03 15:55:56 +0100yushyin(5rFdtsVUm7@karif.server-speed.net)
2020-11-03 15:55:56 +0100sud0(~Death@hackspaceuy/member/sud0)
2020-11-03 15:55:56 +0100sm(~user@li229-222.members.linode.com)
2020-11-03 15:56:10 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi) (Max SendQ exceeded)
2020-11-03 15:56:10 +0100Klumben(Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso) (Max SendQ exceeded)
2020-11-03 15:56:41 +0100alp(~alp@2a01:e0a:58b:4920:5584:7343:90a1:2565) (Ping timeout: 272 seconds)
2020-11-03 15:57:03 +0100maralorn(maralornma@gateway/shell/matrix.org/x-pkelfgrohvpzfolu) (Ping timeout: 244 seconds)
2020-11-03 15:57:03 +0100mikr[m](mikrdavral@gateway/shell/matrix.org/x-jnlucypbifmucvfy) (Ping timeout: 244 seconds)
2020-11-03 15:57:03 +0100wrunt[m](wruntmatri@gateway/shell/matrix.org/x-tobpdugmvlykanbe) (Ping timeout: 244 seconds)
2020-11-03 15:57:03 +0100betrion[m](betrionmat@gateway/shell/matrix.org/x-dsrbaapqpyafsbmj) (Ping timeout: 244 seconds)
2020-11-03 15:57:03 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-uodtpvngjfwtuggt) (Ping timeout: 244 seconds)
2020-11-03 15:57:08 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-oigadqxzdyumsikb) (Ping timeout: 246 seconds)
2020-11-03 15:57:08 +0100tersetears[m](tersetears@gateway/shell/matrix.org/x-njimwnsggeorbzzd) (Ping timeout: 246 seconds)
2020-11-03 15:57:09 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-tilmtmvnszzwjtcv) (Ping timeout: 246 seconds)
2020-11-03 15:57:09 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-lcvlyrcvcccjaofs) (Ping timeout: 246 seconds)
2020-11-03 15:57:10 +0100Fernando-Basso[m(fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt) (Ping timeout: 246 seconds)
2020-11-03 15:57:17 +0100mmynsted[m](mmynstedtc@gateway/shell/matrix.org/x-zszjcyokedzkvvvw) (Ping timeout: 260 seconds)
2020-11-03 15:57:17 +0100chreekat[m](chreekatma@gateway/shell/matrix.org/x-tbcdmvvmfcadbfxu) (Ping timeout: 260 seconds)
2020-11-03 15:57:24 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-fexhchkhagwtqfyl) (Ping timeout: 240 seconds)
2020-11-03 15:57:26 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-bqlbscrkasptvecc) (Ping timeout: 240 seconds)
2020-11-03 15:57:26 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-puehpfgruzmxylyx) (Ping timeout: 240 seconds)
2020-11-03 15:57:26 +0100PotatoHatsue|T(berbermanm@gateway/shell/matrix.org/x-tramsdhygfziwosr) (Ping timeout: 240 seconds)
2020-11-03 15:57:26 +0100texasmynsted[m]1(mmynstedko@gateway/shell/matrix.org/x-vggryrjyagxthgpr) (Ping timeout: 240 seconds)
2020-11-03 15:57:29 +0100wi[m](w1gzmatrix@gateway/shell/matrix.org/x-yfarknebhuzfmgwp) (Ping timeout: 270 seconds)
2020-11-03 15:57:29 +0100srid(sridmatrix@gateway/shell/matrix.org/x-mkesouyylxzbcafd) (Ping timeout: 244 seconds)
2020-11-03 15:57:29 +0100themsay[m](themsaymat@gateway/shell/matrix.org/x-bqmyhbzuevubqaxn) (Ping timeout: 244 seconds)
2020-11-03 15:57:29 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-cptxfbojabslrjcy) (Ping timeout: 244 seconds)
2020-11-03 15:57:29 +0100DeadComaGrayce[m(commagra1@gateway/shell/matrix.org/x-iuyehmrmzolqbndz) (Ping timeout: 270 seconds)
2020-11-03 15:57:30 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-vxxxfyeqdpvmztqw) (Ping timeout: 270 seconds)
2020-11-03 15:57:30 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-bcyjzribfqthehto) (Ping timeout: 270 seconds)
2020-11-03 15:57:30 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar) (Ping timeout: 246 seconds)
2020-11-03 15:57:30 +0100iinuwa(iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg) (Ping timeout: 246 seconds)
2020-11-03 15:57:34 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-dhyacoeojdbhkueh) (Ping timeout: 244 seconds)
2020-11-03 15:57:34 +0100micahsovereign[m(micahsover@gateway/shell/matrix.org/x-dxdibhjjyybodwbc) (Ping timeout: 244 seconds)
2020-11-03 15:57:37 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-amgtuukfolghuwuq) (Ping timeout: 260 seconds)
2020-11-03 15:57:38 +0100Guest8822(562d675a@86-45-103-90-dynamic.agg2.ddk.dbc-mgr.eircom.net) (Remote host closed the connection)
2020-11-03 15:57:49 +0100nkly(~nkly@ip5b40d080.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2020-11-03 15:57:52 +0100 <miladz68> dminuoso and merjin I managed to fix my the problem in my original question. There was something about haskell's type system that I could not get for about a year now. THANK YOU GUYS !!! https://paste.tomsmeding.com/ufeE5VEv
2020-11-03 15:58:12 +0100yushyin(5rFdtsVUm7@karif.server-speed.net) (Ping timeout: 241 seconds)
2020-11-03 15:58:12 +0100MaoZeDong_(~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d) (Ping timeout: 260 seconds)
2020-11-03 15:58:54 +0100bonvoyage[m](bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub) (Ping timeout: 246 seconds)
2020-11-03 15:58:54 +0100theduke(thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel) (Ping timeout: 246 seconds)
2020-11-03 15:58:55 +0100alvinsj[m](alvinsjmat@gateway/shell/matrix.org/x-vcggqutodlsvbbci) (Ping timeout: 240 seconds)
2020-11-03 15:59:08 +0100tttom[m](tttommatri@gateway/shell/matrix.org/x-kshxzzwtqhpqbsjt) (Ping timeout: 244 seconds)
2020-11-03 15:59:14 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 268 seconds)
2020-11-03 15:59:15 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-ibzwjrmlfzihcpnq) (Ping timeout: 246 seconds)
2020-11-03 15:59:15 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-nobvbpoimoorjizw) (Ping timeout: 246 seconds)
2020-11-03 15:59:15 +0100ComaGrayce[m](commagrays@gateway/shell/matrix.org/x-hjwgivbycspfkazw) (Ping timeout: 246 seconds)
2020-11-03 15:59:15 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-bglrmgugemmlkftz) (Ping timeout: 246 seconds)
2020-11-03 15:59:15 +0100kaychaks_riot(kaychaksma@gateway/shell/matrix.org/x-stbwfkzfrvvzbyzd) (Ping timeout: 246 seconds)
2020-11-03 15:59:16 +0100jlv(jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz) (Ping timeout: 246 seconds)
2020-11-03 15:59:16 +0100ttc(tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb) (Ping timeout: 246 seconds)
2020-11-03 15:59:22 +0100elpfen[m](elpfenmatr@gateway/shell/matrix.org/x-qyxfulwurvxvqcrl) (Ping timeout: 260 seconds)
2020-11-03 15:59:25 +0100loprakoa[m](loprakoama@gateway/shell/matrix.org/x-xavaolgsmkbljkqt) (Ping timeout: 240 seconds)
2020-11-03 15:59:25 +0100jiribenes1(jbjiribene@gateway/shell/matrix.org/x-fxavqhwgliqrsecu) (Ping timeout: 240 seconds)
2020-11-03 15:59:27 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-fbgpcbpvvdvwhhpb) (Ping timeout: 240 seconds)
2020-11-03 15:59:33 +0100sureyeaah(shauryab98@gateway/shell/matrix.org/x-yafeivvctuhylrnm) (Ping timeout: 244 seconds)
2020-11-03 15:59:37 +0100bliminse(~bliminse@host109-156-197-211.range109-156.btcentralplus.com)
2020-11-03 15:59:37 +0100hnOsmium0001[m](hnosmium00@gateway/shell/matrix.org/x-sshchogyivlmgodc) (Ping timeout: 246 seconds)
2020-11-03 15:59:38 +0100berberman|T(berberma4@gateway/shell/matrix.org/x-wnomaozyraumizpd) (Ping timeout: 244 seconds)
2020-11-03 15:59:38 +0100ThaEwat(thaewraptm@gateway/shell/matrix.org/x-pssqkgzdxqqfosjg) (Ping timeout: 244 seconds)
2020-11-03 15:59:39 +0100hsiktas[m](hsiktasmat@gateway/shell/matrix.org/x-spblkboyxhqoardh) (Ping timeout: 244 seconds)
2020-11-03 15:59:39 +0100zerstroyer[m](zerstroyer@gateway/shell/matrix.org/x-yllnormoxnelwrvi) (Ping timeout: 244 seconds)
2020-11-03 15:59:51 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-htkzhbylfcdwfzyr) (Ping timeout: 272 seconds)
2020-11-03 15:59:51 +0100drozdziak1(drozdziak1@gateway/shell/matrix.org/x-vtaixfecibczpgem) (Ping timeout: 272 seconds)
2020-11-03 16:00:44 +0100nkly(~nkly@ip5b40d080.dynamic.kabel-deutschland.de)
2020-11-03 16:02:01 +0100Rembane(~Rembane@li346-36.members.linode.com) (Ping timeout: 264 seconds)
2020-11-03 16:02:23 +0100Rembane(~Rembane@li346-36.members.linode.com)
2020-11-03 16:02:23 +0100lambdaclan(lambdaclan@gateway/shell/matrix.org/x-gzshwuftlgessnhs) (Ping timeout: 272 seconds)
2020-11-03 16:03:01 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-bwnfdzeafqubfksm) (Ping timeout: 272 seconds)
2020-11-03 16:04:12 +0100mokulus(~mat@176.111.230.96) (Quit: WeeChat 2.9)
2020-11-03 16:04:28 +0100mokulus(~mat@176.111.230.96)
2020-11-03 16:04:40 +0100 <dminuoso> miladz68: https://gist.github.com/dminuoso/79855d359ea2d21a8184e235870ecb44
2020-11-03 16:04:51 +0100 <dminuoso> miladz68: Note that ~ denotes equality of types. :)
2020-11-03 16:05:42 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-03 16:06:02 +0100yushyin(bSs9syBAug@karif.server-speed.net)
2020-11-03 16:06:17 +0100 <dminuoso> Please reload, just corrected a mistkae.
2020-11-03 16:07:00 +0100da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 16:07:08 +0100idhugo(~idhugo@users-1190.st.net.au.dk) (Ping timeout: 260 seconds)
2020-11-03 16:09:00 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 16:09:26 +0100MaoZeDong_(~yuri@2a00:1370:8135:4003:a125:a313:30a7:dda3)
2020-11-03 16:09:29 +0100Klumben(Nsaiswatch@gateway/shell/panicbnc/x-mkcnlvblwjhyiwoj)
2020-11-03 16:12:05 +0100refried_(~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Ping timeout: 240 seconds)
2020-11-03 16:13:25 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-03 16:13:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 16:14:02 +0100p-core(~Thunderbi@193.165.237.18) (Ping timeout: 268 seconds)
2020-11-03 16:15:32 +0100 <miladz68> dminuoso Thanks a million time
2020-11-03 16:16:25 +0100 <miladz68> dminuoso I cannot view secret gist since github has banned people from Iran :(
2020-11-03 16:16:30 +0100 <dminuoso> miladz68: Hold on
2020-11-03 16:16:44 +0100 <dminuoso> miladz68: https://paste.tomsmeding.com/zyYW4txr
2020-11-03 16:18:51 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-03 16:19:20 +0100mimi_vx(~mimi@tulipan.habr.nat.praha12.net) (Remote host closed the connection)
2020-11-03 16:21:18 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-glpnpeqsowfdqxrb)
2020-11-03 16:21:28 +0100jackgassett(~jackgasse@185.163.110.116)
2020-11-03 16:22:53 +0100MaoZeDong_(~yuri@2a00:1370:8135:4003:a125:a313:30a7:dda3) (Quit: Leaving)
2020-11-03 16:22:57 +0100knupfer(~Thunderbi@200116b82c33f500f4acd2fffe0c2764.dip.versatel-1u1.de)
2020-11-03 16:22:58 +0100knupfer(~Thunderbi@200116b82c33f500f4acd2fffe0c2764.dip.versatel-1u1.de) (Client Quit)
2020-11-03 16:23:11 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-03 16:23:13 +0100ulidtko(~ulidtko@193.111.48.79)
2020-11-03 16:23:13 +0100knupfer(~Thunderbi@i59F7FFF1.versanet.de)
2020-11-03 16:23:40 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 16:23:53 +0100 <miladz68> dminuoso that is just beautiful. It all makes sense now. Haskell type system undestanding unlocked
2020-11-03 16:26:43 +0100texasmynsted[m]1(mmynstedko@gateway/shell/matrix.org/x-hplokyjomowficph)
2020-11-03 16:26:44 +0100themsay[m](themsaymat@gateway/shell/matrix.org/x-bonuvacpysczvweb)
2020-11-03 16:26:50 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-pylemoygyzvfnqwz)
2020-11-03 16:26:50 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-glaqqlztankdgtop)
2020-11-03 16:26:50 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-hlniwidnojwpljwr)
2020-11-03 16:26:51 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-fnotdmzbnwicmhbr)
2020-11-03 16:26:51 +0100mikr[m](mikrdavral@gateway/shell/matrix.org/x-dsykslkvwomhqqky)
2020-11-03 16:26:51 +0100wrunt[m](wruntmatri@gateway/shell/matrix.org/x-idianarugrpsngxu)
2020-11-03 16:26:52 +0100tersetears[m](tersetears@gateway/shell/matrix.org/x-xwkpjjikyvpgofyv)
2020-11-03 16:26:52 +0100wi[m](w1gzmatrix@gateway/shell/matrix.org/x-qadybggtytyfvgiq)
2020-11-03 16:26:52 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-qlfptiejrcydnwwk)
2020-11-03 16:26:52 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-lwpfhzdgppnfhaga)
2020-11-03 16:26:52 +0100betrion[m](betrionmat@gateway/shell/matrix.org/x-axyffpqdcjljltip)
2020-11-03 16:26:52 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-viisemtsepvgkslw)
2020-11-03 16:26:53 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-rqkxfgplxmrihcgx)
2020-11-03 16:26:53 +0100srid(sridmatrix@gateway/shell/matrix.org/x-egwyjxskwuhfbugd)
2020-11-03 16:26:53 +0100DeadComaGrayce[m(commagra1@gateway/shell/matrix.org/x-yxecycrnierjfljs)
2020-11-03 16:26:53 +0100mmynsted[m](mmynstedtc@gateway/shell/matrix.org/x-yzuwbyvnpglbzbuy)
2020-11-03 16:26:54 +0100micahsovereign[m(micahsover@gateway/shell/matrix.org/x-tvaivucbnrwbatxd)
2020-11-03 16:26:55 +0100chreekat[m](chreekatma@gateway/shell/matrix.org/x-llkuwfbcjnljizdi)
2020-11-03 16:26:55 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-schvzqwnlrsjfkgy)
2020-11-03 16:26:55 +0100maralorn(maralornma@gateway/shell/matrix.org/x-hwtcfzlybldpjabd)
2020-11-03 16:26:57 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-pzojqnawucwivbrx)
2020-11-03 16:27:02 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-elxfudyszzzuhhna)
2020-11-03 16:27:48 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-ophphfesyzdfljdq)
2020-11-03 16:27:48 +0100TMA(tma@twin.jikos.cz)
2020-11-03 16:28:17 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-03 16:30:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-03 16:30:35 +0100 <dolio> "Inference rules" are indeed not the same thing as "type inference". They merely use the same word.
2020-11-03 16:32:12 +0100PotatoHatsue|T(berbermanm@gateway/shell/matrix.org/x-mnxsevwkuntepnch)
2020-11-03 16:32:13 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-ueozaawewwujnohw)
2020-11-03 16:32:32 +0100xff0x(~fox@2001:1a81:53b4:ba00:49d8:d2a:69a9:1ef4) (Ping timeout: 268 seconds)
2020-11-03 16:32:35 +0100 <hyperisco> type inference is based on inference rules xd
2020-11-03 16:32:56 +0100 <dolio> You could present type inference using inference rules, but not every inference rule has to do with type inference.
2020-11-03 16:33:58 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar)
2020-11-03 16:34:52 +0100iinuwa(iinuwamatr@gateway/shell/matrix.org/x-gxbjrfuwzerbbyfp)
2020-11-03 16:35:27 +0100solonarv(~solonarv@adijon-656-1-31-12.w90-13.abo.wanadoo.fr)
2020-11-03 16:36:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 16:37:14 +0100Eason0210(~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50))
2020-11-03 16:38:15 +0100bonvoyage[m](bonvoyageu@gateway/shell/matrix.org/x-stbisqjpnwsozoeo)
2020-11-03 16:38:17 +0100theduke(thedukem1@gateway/shell/matrix.org/x-aqlsdouachfkrhez)
2020-11-03 16:38:46 +0100ttc(tomtauma1@gateway/shell/matrix.org/x-ekakabsstkyokkxj)
2020-11-03 16:39:17 +0100jlv(jlvjustinl@gateway/shell/matrix.org/x-wvbfemgwzknbgjod)
2020-11-03 16:40:17 +0100conal(~conal@64.71.133.70)
2020-11-03 16:40:25 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-03 16:40:52 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-03 16:40:53 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-03 16:42:39 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-03 16:42:45 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-03 16:43:30 +0100loprakoa[m](loprakoama@gateway/shell/matrix.org/x-tnuljvchikruvhvw)
2020-11-03 16:43:31 +0100jiribenes1(jbjiribene@gateway/shell/matrix.org/x-axffvnsgpboxhtcg)
2020-11-03 16:43:31 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-npyuwrvjfblnwfqj)
2020-11-03 16:43:31 +0100tttom[m](tttommatri@gateway/shell/matrix.org/x-piwzfyinjzjgieef)
2020-11-03 16:43:31 +0100kaychaks_riot(kaychaksma@gateway/shell/matrix.org/x-srldqoniwbppskpm)
2020-11-03 16:43:32 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-utkkbuxvjzjrabza)
2020-11-03 16:43:32 +0100elpfen[m](elpfenmatr@gateway/shell/matrix.org/x-fdpiaofjooaqrbtu)
2020-11-03 16:43:32 +0100ComaGrayce[m](commagrays@gateway/shell/matrix.org/x-tdwomzfumhlkeioe)
2020-11-03 16:43:33 +0100alvinsj[m](alvinsjmat@gateway/shell/matrix.org/x-usudjdrgxuyyqamj)
2020-11-03 16:43:35 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-btxwrgfxkibtqnsg)
2020-11-03 16:43:44 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-ybiigbogxoenpsye)
2020-11-03 16:43:48 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-yxpvnieelsdvnidh)
2020-11-03 16:43:50 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-11-03 16:43:59 +0100sfvm(~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine)
2020-11-03 16:45:31 +0100Fernando-Basso[m(fernando-b@gateway/shell/matrix.org/x-yzwruqrfgsamuhyb)
2020-11-03 16:47:01 +0100texasmynsted[m]1(mmynstedko@gateway/shell/matrix.org/x-hplokyjomowficph) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100themsay[m](themsaymat@gateway/shell/matrix.org/x-bonuvacpysczvweb) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-pylemoygyzvfnqwz) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-fnotdmzbnwicmhbr) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-qlfptiejrcydnwwk) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100DeadComaGrayce[m(commagra1@gateway/shell/matrix.org/x-yxecycrnierjfljs) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-pzojqnawucwivbrx) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100tersetears[m](tersetears@gateway/shell/matrix.org/x-xwkpjjikyvpgofyv) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100betrion[m](betrionmat@gateway/shell/matrix.org/x-axyffpqdcjljltip) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100chreekat[m](chreekatma@gateway/shell/matrix.org/x-llkuwfbcjnljizdi) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100maralorn(maralornma@gateway/shell/matrix.org/x-hwtcfzlybldpjabd) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:01 +0100wi[m](w1gzmatrix@gateway/shell/matrix.org/x-qadybggtytyfvgiq) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-schvzqwnlrsjfkgy) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-hlniwidnojwpljwr) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100micahsovereign[m(micahsover@gateway/shell/matrix.org/x-tvaivucbnrwbatxd) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-ophphfesyzdfljdq) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-glaqqlztankdgtop) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-lwpfhzdgppnfhaga) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100mmynsted[m](mmynstedtc@gateway/shell/matrix.org/x-yzuwbyvnpglbzbuy) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100wrunt[m](wruntmatri@gateway/shell/matrix.org/x-idianarugrpsngxu) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100mikr[m](mikrdavral@gateway/shell/matrix.org/x-dsykslkvwomhqqky) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-viisemtsepvgkslw) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-elxfudyszzzuhhna) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-rqkxfgplxmrihcgx) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:02 +0100srid(sridmatrix@gateway/shell/matrix.org/x-egwyjxskwuhfbugd) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:05 +0100PotatoHatsue|T(berbermanm@gateway/shell/matrix.org/x-mnxsevwkuntepnch) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:06 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:06 +0100bonvoyage[m](bonvoyageu@gateway/shell/matrix.org/x-stbisqjpnwsozoeo) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:06 +0100theduke(thedukem1@gateway/shell/matrix.org/x-aqlsdouachfkrhez) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:08 +0100kaychaks_riot(kaychaksma@gateway/shell/matrix.org/x-srldqoniwbppskpm) (Client Quit)
2020-11-03 16:47:08 +0100elpfen[m](elpfenmatr@gateway/shell/matrix.org/x-fdpiaofjooaqrbtu) (Client Quit)
2020-11-03 16:47:08 +0100ComaGrayce[m](commagrays@gateway/shell/matrix.org/x-tdwomzfumhlkeioe) (Client Quit)
2020-11-03 16:47:08 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-utkkbuxvjzjrabza) (Client Quit)
2020-11-03 16:47:08 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-yxpvnieelsdvnidh) (Client Quit)
2020-11-03 16:47:09 +0100alvinsj[m](alvinsjmat@gateway/shell/matrix.org/x-usudjdrgxuyyqamj) (Client Quit)
2020-11-03 16:47:09 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-ueozaawewwujnohw) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:09 +0100iinuwa(iinuwamatr@gateway/shell/matrix.org/x-gxbjrfuwzerbbyfp) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:10 +0100jlv(jlvjustinl@gateway/shell/matrix.org/x-wvbfemgwzknbgjod) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:10 +0100Fernando-Basso[m(fernando-b@gateway/shell/matrix.org/x-yzwruqrfgsamuhyb) (Client Quit)
2020-11-03 16:47:10 +0100ttc(tomtauma1@gateway/shell/matrix.org/x-ekakabsstkyokkxj) (Quit: Bridge terminating on SIGTERM)
2020-11-03 16:47:10 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-ybiigbogxoenpsye) (Client Quit)
2020-11-03 16:47:10 +0100jiribenes1(jbjiribene@gateway/shell/matrix.org/x-axffvnsgpboxhtcg) (Client Quit)
2020-11-03 16:47:11 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-btxwrgfxkibtqnsg) (Client Quit)
2020-11-03 16:47:11 +0100tttom[m](tttommatri@gateway/shell/matrix.org/x-piwzfyinjzjgieef) (Client Quit)
2020-11-03 16:47:11 +0100loprakoa[m](loprakoama@gateway/shell/matrix.org/x-tnuljvchikruvhvw) (Client Quit)
2020-11-03 16:47:11 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-npyuwrvjfblnwfqj) (Client Quit)
2020-11-03 16:48:23 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 16:49:58 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-03 16:50:38 +0100 <tomsmeding> where lies the boundary between type checking and type inference? Determining that '(f :: Char -> Bool) ('c' :: Char)' has type Bool may not be "type inference", but what about inferring the type of '\(f :: Char -> Bool) (x :: Char) -> f x'?
2020-11-03 16:51:08 +0100 <merijn> tomsmeding: There's no inference there either since all intermediate types are annotated
2020-11-03 16:51:29 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-03 16:51:31 +0100 <tomsmeding> what if 'x' had no annotation?
2020-11-03 16:51:36 +0100 <merijn> "\f -> (f (x :: Char) :: Bool)" would require inference
2020-11-03 16:51:42 +0100 <ziman> hello, what's the idiomatic way to match on impossible values in pattern clauses? currently i'm using an empty case expression but is there anything shorter, like agda's ()? i can't google up anything somehow
2020-11-03 16:51:44 +0100miladz68(~manjaro-u@static.84.147.251.148.clients.your-server.de) (Ping timeout: 240 seconds)
2020-11-03 16:51:59 +0100miladz68(~manjaro-u@46.248.60.86)
2020-11-03 16:52:04 +0100 <merijn> 'f :: Char -> Bool' in that example, but the argument type of 'f' nor its result type are specified
2020-11-03 16:52:19 +0100 <merijn> tomsmeding: You have to reconstruct the argument and return type from context there
2020-11-03 16:52:30 +0100 <tomsmeding> so it becomes type inference if there is a variable with no annotated type?
2020-11-03 16:53:06 +0100idhugo(~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
2020-11-03 16:53:08 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-03 16:53:16 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
2020-11-03 16:53:20 +0100 <tomsmeding> where annotating the type of a function is understood to also annotate the types of its arguments
2020-11-03 16:53:23 +0100 <merijn> For example
2020-11-03 16:54:19 +0100 <dminuoso> ziman: Void + absurd?
2020-11-03 16:55:01 +0100brodie(~textual@207.53.253.137) (Quit: brodie)
2020-11-03 16:55:07 +0100p-core(~Thunderbi@80.95.114.184)
2020-11-03 16:55:18 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-11-03 16:55:31 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-11-03 16:55:31 +0100hackagegit-annex 8.20201103 - manage files with git, without checking their contents into git https://hackage.haskell.org/package/git-annex-8.20201103 (JoeyHess)
2020-11-03 16:55:37 +0100 <ziman> my argument does not belong in Void, it belongs in a GADT with indices that make it empty
2020-11-03 16:55:49 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 16:56:26 +0100 <dolio> Can't you just leave the case out, then?
2020-11-03 16:56:38 +0100JoelMcCracken[m](joelmccrac@gateway/shell/matrix.org/x-hnsumqopegmivthi)
2020-11-03 16:57:37 +0100 <ziman> it's an annoying coincidence: it's an instance with a single method with a single clause, so when i leave the clause out, it complains that i did not provide the definition for the method
2020-11-03 16:58:08 +0100alp(~alp@2a01:e0a:58b:4920:d16f:132:b740:cc6e)
2020-11-03 16:58:20 +0100 <dolio> Well, I don't think there's anything you can do but empty case, then.
2020-11-03 16:58:35 +0100 <ziman> right, thank you :)
2020-11-03 16:58:43 +0100 <ziman> it's not too bad, i was mostly curious
2020-11-03 16:58:51 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 17:00:06 +0100JoelMcCracken[m](joelmccrac@gateway/shell/matrix.org/x-hnsumqopegmivthi) (Client Quit)
2020-11-03 17:00:26 +0100Rudd0(~Rudd0@185.189.115.98)
2020-11-03 17:00:36 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 244 seconds)
2020-11-03 17:02:08 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 268 seconds)
2020-11-03 17:03:23 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-03 17:03:47 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2020-11-03 17:04:05 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f)
2020-11-03 17:04:30 +0100hackagevalidationt 0.3.0 - Straightforward validation monad https://hackage.haskell.org/package/validationt-0.3.0 (typeable)
2020-11-03 17:04:47 +0100jespada(~jespada@90.254.245.49)
2020-11-03 17:08:09 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 17:08:24 +0100ttc(tomtauma1@gateway/shell/matrix.org/x-uquqcxspyycbvjvf)
2020-11-03 17:08:24 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-jqnrqlrbhxhwmhbz)
2020-11-03 17:08:24 +0100chreekat[m](chreekatma@gateway/shell/matrix.org/x-wspbygjiuixcjxkc)
2020-11-03 17:08:24 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-uoyfjnxjprdtbaxo)
2020-11-03 17:08:24 +0100themsay[m](themsaymat@gateway/shell/matrix.org/x-ujpukaorocjskeoi)
2020-11-03 17:08:24 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-ydnhcjbfaimoibji)
2020-11-03 17:08:24 +0100Fernando-Basso[m(fernando-b@gateway/shell/matrix.org/x-xirzymulqroruhsm)
2020-11-03 17:08:24 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-etfvogphrizepbip)
2020-11-03 17:08:24 +0100alvinsj[m](alvinsjmat@gateway/shell/matrix.org/x-euntbxjpvrijrxmx)
2020-11-03 17:08:24 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar)
2020-11-03 17:08:25 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-lixmcfpcxrvpqkwa)
2020-11-03 17:08:25 +0100hnOsmium0001[m](hnosmium00@gateway/shell/matrix.org/x-pclxodnkmqnqfwxg)
2020-11-03 17:08:25 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-hixqfsukphxkizxv)
2020-11-03 17:08:25 +0100iinuwa(iinuwamatr@gateway/shell/matrix.org/x-xxskiprlcirzxiga)
2020-11-03 17:08:25 +0100zerstroyer[m](zerstroyer@gateway/shell/matrix.org/x-fjjxkkdhwczwidmj)
2020-11-03 17:08:25 +0100texasmynsted[m]1(mmynstedko@gateway/shell/matrix.org/x-sbtmbpamgfechbux)
2020-11-03 17:08:25 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-rgjtexmubckaxtft)
2020-11-03 17:08:25 +0100kaychaks_riot(kaychaksma@gateway/shell/matrix.org/x-iwzuktiocfdsoxtf)
2020-11-03 17:08:25 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-hzunuwncbmmxlwie)
2020-11-03 17:08:25 +0100ThaEwat(thaewraptm@gateway/shell/matrix.org/x-edykdyerrvrnrhhy)
2020-11-03 17:08:25 +0100sureyeaah(shauryab98@gateway/shell/matrix.org/x-jedasmaebvvahvcj)
2020-11-03 17:08:25 +0100PotatoHatsue|T(berbermanm@gateway/shell/matrix.org/x-fuqecmssbwcwxfrb)
2020-11-03 17:08:25 +0100lambdaclan(lambdaclan@gateway/shell/matrix.org/x-wbdwuytzeyqyapvd)
2020-11-03 17:08:26 +0100micahsovereign[m(micahsover@gateway/shell/matrix.org/x-zqfuexwrnelqnfbx)
2020-11-03 17:08:26 +0100drozdziak1(drozdziak1@gateway/shell/matrix.org/x-bgqlrpniadgtdery)
2020-11-03 17:08:26 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-slmeyzgqwdnmdyrc)
2020-11-03 17:08:26 +0100hsiktas[m](hsiktasmat@gateway/shell/matrix.org/x-zwvdtyuxfxztfmkc)
2020-11-03 17:08:26 +0100theduke(thedukem1@gateway/shell/matrix.org/x-nkqbunrnsxjskdpd)
2020-11-03 17:08:26 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-wpsolapibmqshmip)
2020-11-03 17:08:26 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-wzcoftslnufebjph)
2020-11-03 17:08:26 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-icankkfzqnonlrhh)
2020-11-03 17:08:26 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-uibvjwmgioaohlzd)
2020-11-03 17:08:27 +0100SlackIntegration(slackbotma@gateway/shell/matrix.org/x-caxtdscroghtasfp)
2020-11-03 17:08:27 +0100tersetears[m](tersetears@gateway/shell/matrix.org/x-klvqbdrwhsqyopcd)
2020-11-03 17:08:27 +0100bonvoyage[m](bonvoyageu@gateway/shell/matrix.org/x-wmphllysplyhuojb)
2020-11-03 17:08:27 +0100srid(sridmatrix@gateway/shell/matrix.org/x-qqeoewwaowpiqrub)
2020-11-03 17:08:27 +0100berberman|T(berberma4@gateway/shell/matrix.org/x-rqubmqczcsddvvhp)
2020-11-03 17:08:27 +0100maralorn(maralornma@gateway/shell/matrix.org/x-esbyrtfclugulpku)
2020-11-03 17:08:27 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-grllgvjiiizziklg)
2020-11-03 17:08:27 +0100io_r_us[m](commandlin@gateway/shell/matrix.org/x-dcxofhcftbovwbst)
2020-11-03 17:08:27 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-xrrstobtgwfnvduc)
2020-11-03 17:08:30 +0100ComaGrayce[m](commagrays@gateway/shell/matrix.org/x-kdchjrsktdbjqvop)
2020-11-03 17:08:30 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-xtwtcthsyrpjxlgx)
2020-11-03 17:08:30 +0100GuillaumeChrel[m(guillaumec@gateway/shell/matrix.org/x-yyvevfplzzioqnuc)
2020-11-03 17:08:30 +0100betrion[m](betrionmat@gateway/shell/matrix.org/x-kjxsujwoqdjukewx)
2020-11-03 17:08:31 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-xmfuuihwzdmwsxri)
2020-11-03 17:08:31 +0100Noughtmare[m](naughtmare@gateway/shell/matrix.org/x-qgtfxiblcqwqvpjv)
2020-11-03 17:08:31 +0100ethercrow[m](ethercrowm@gateway/shell/matrix.org/x-fwdkmrqysffhdlhg)
2020-11-03 17:08:31 +0100jiribenes1(jbjiribene@gateway/shell/matrix.org/x-bgfmaawtdxevtslk)
2020-11-03 17:08:31 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-pkjrfqmejbphovey)
2020-11-03 17:08:31 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-upsuponuotpjoctt)
2020-11-03 17:08:31 +0100wrunt[m](wruntmatri@gateway/shell/matrix.org/x-yyfnqwlidsridbox)
2020-11-03 17:08:32 +0100albestro[m](albestroma@gateway/shell/matrix.org/x-qdbcqirfearydihj)
2020-11-03 17:08:32 +0100tttom[m](tttommatri@gateway/shell/matrix.org/x-odejmlhnpwjjtcrh)
2020-11-03 17:08:32 +0100DeadComaGrayce[m(commagra1@gateway/shell/matrix.org/x-noidmvosphatipsa)
2020-11-03 17:08:32 +0100loprakoa[m](loprakoama@gateway/shell/matrix.org/x-efkcigrtbzrnbnzq)
2020-11-03 17:08:32 +0100jlv(jlvjustinl@gateway/shell/matrix.org/x-ocncxbunlvivmawj)
2020-11-03 17:08:33 +0100mikr[m](mikrdavral@gateway/shell/matrix.org/x-qmtbcoqsyfoubvgt)
2020-11-03 17:08:33 +0100elpfen[m](elpfenmatr@gateway/shell/matrix.org/x-ptnaaevdfmtjzszs)
2020-11-03 17:08:34 +0100mmynsted[m](mmynstedtc@gateway/shell/matrix.org/x-nsloajvwzkribhpr)
2020-11-03 17:08:39 +0100wi[m](w1gzmatrix@gateway/shell/matrix.org/x-chkwkwpgxekzmeut)
2020-11-03 17:09:09 +0100mokulus(~mat@176.111.230.96) (Quit: WeeChat 2.9)
2020-11-03 17:10:01 +0100macrover(~macrover@ip70-189-231-35.lv.lv.cox.net)
2020-11-03 17:13:00 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 244 seconds)
2020-11-03 17:14:37 +0100xff0x(~fox@2001:1a81:53b4:ba00:49d8:d2a:69a9:1ef4)
2020-11-03 17:16:25 +0100miladz68(~manjaro-u@46.248.60.86) (Ping timeout: 240 seconds)
2020-11-03 17:16:53 +0100miladz68(~manjaro-u@46.248.60.86)
2020-11-03 17:17:43 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds)
2020-11-03 17:18:00 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-11-03 17:18:52 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-11-03 17:19:24 +0100e(e@freenode/staff/spy.edk) (Disconnected by services)
2020-11-03 17:19:30 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-11-03 17:19:55 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 17:20:17 +0100p-core(~Thunderbi@80.95.114.184) (Ping timeout: 272 seconds)
2020-11-03 17:20:33 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 17:23:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-03 17:25:41 +0100travv0(sid293381@gateway/web/irccloud.com/x-ewehtgkfobxgucth) ()
2020-11-03 17:25:59 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-03 17:26:46 +0100e(e@freenode/staff/spy.edk)
2020-11-03 17:27:55 +0100conal(~conal@64.71.133.70) (Ping timeout: 240 seconds)
2020-11-03 17:29:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-11-03 17:31:03 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer)
2020-11-03 17:31:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 17:32:37 +0100mokulus(~mat@176.111.230.96)
2020-11-03 17:32:59 +0100st8less(~st8less@2603:a060:11fd:0:357c:d497:b907:2901)
2020-11-03 17:33:19 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 17:35:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-03 17:37:09 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-03 17:37:28 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-03 17:38:26 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-03 17:38:44 +0100zyeri(zyeri@tilde.team/users/zyeri) (Ping timeout: 256 seconds)
2020-11-03 17:39:04 +0100roconnor(~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 246 seconds)
2020-11-03 17:40:40 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-03 17:40:48 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-03 17:42:38 +0100Guest77983(~z0@188.251.73.190) (Ping timeout: 264 seconds)
2020-11-03 17:44:28 +0100darjeeling_(~darjeelin@115.215.40.228) (Ping timeout: 272 seconds)
2020-11-03 17:44:50 +0100zyeri(zyeri@gateway/shell/tilde.team/x-snfyuqzcmwkjylvs)
2020-11-03 17:44:51 +0100zyeri(zyeri@gateway/shell/tilde.team/x-snfyuqzcmwkjylvs) (Changing host)
2020-11-03 17:44:51 +0100zyeri(zyeri@tilde.team/users/zyeri)
2020-11-03 17:45:05 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 240 seconds)
2020-11-03 17:45:33 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-03 17:45:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 17:47:32 +0100idhugo(~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds)
2020-11-03 17:48:08 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-11-03 17:48:27 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-11-03 17:50:10 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 272 seconds)
2020-11-03 17:50:33 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
2020-11-03 17:50:38 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
2020-11-03 17:52:07 +0100nyaomi(~naomi@cpe-74-75-6-125.maine.res.rr.com) (Excess Flood)
2020-11-03 17:52:35 +0100nyaomi(~naomi@cpe-74-75-6-125.maine.res.rr.com)
2020-11-03 17:53:37 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-abxtjqjdzzifrxcr)
2020-11-03 17:57:25 +0100darjeeling_(~darjeelin@115.215.43.51)
2020-11-03 17:57:55 +0100nyaomi(~naomi@cpe-74-75-6-125.maine.res.rr.com) (Excess Flood)
2020-11-03 17:58:19 +0100nyaomi(~naomi@cpe-74-75-6-125.maine.res.rr.com)
2020-11-03 17:59:01 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-03 17:59:34 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-03 18:01:08 +0100Chi1thangoo(~Chi1thang@87.112.60.168)
2020-11-03 18:02:06 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-03 18:02:24 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Ping timeout: 260 seconds)
2020-11-03 18:03:54 +0100 <ulidtko> what was the deal again with the mtl variation of lazy-IO problem?..
2020-11-03 18:05:20 +0100 <ulidtko> i have this crappy piece of code built around an ExceptT-ReaderT-StateT-IO stack
2020-11-03 18:05:24 +0100 <dolio> Huh?
2020-11-03 18:05:26 +0100jlamothe(~jlamothe@198.251.55.207) (Quit: leaving)
2020-11-03 18:05:32 +0100 <ulidtko> ... and in it, one action with liftIO's doesn't run any of the side effects
2020-11-03 18:05:55 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 240 seconds)
2020-11-03 18:06:25 +0100 <ulidtko> https://files.slack.com/files-pri/T7F1A4ZHB-F01DGL8QAPR/image.png if you can see that
2020-11-03 18:06:32 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2020-11-03 18:07:19 +0100 <ulidtko> I do see the `trace` around the invocation of reportSubstepTimings
2020-11-03 18:07:33 +0100 <ulidtko> I also see the invocation happening in ghci debugger (duh)
2020-11-03 18:07:52 +0100 <ulidtko> but I don't the any output from the body of it
2020-11-03 18:07:52 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-03 18:08:08 +0100 <ulidtko> could this be caused by laziness somehow?..
2020-11-03 18:08:19 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:fc37:ff3f:9c12:2922)
2020-11-03 18:10:31 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se)
2020-11-03 18:10:34 +0100 <ulidtko> I've read the Michael Snoyman's stance on this, pretty agreeable https://www.fpcomplete.com/blog/2017/06/readert-design-pattern/
2020-11-03 18:11:44 +0100 <dolio> Well, your image of (presumably) code is hidden behind a login screen.
2020-11-03 18:11:53 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-11-03 18:11:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 18:11:57 +0100 <ulidtko> sorry about that, one second
2020-11-03 18:12:23 +0100 <dolio> trace is also not what people are usually talking about when they say lazy IO.
2020-11-03 18:12:28 +0100u0_a298(~user@47.206.148.226)
2020-11-03 18:12:37 +0100 <ulidtko> http://deaddrop.ftp.sh/il6g41Ic9QJg.png this should be publicly visible
2020-11-03 18:13:02 +0100 <ulidtko> yeah, please see the code
2020-11-03 18:13:43 +0100acidjnk_new2(~acidjnk@p200300d0c718f623213d210801ac68e4.dip0.t-ipconnect.de)
2020-11-03 18:13:47 +0100ubert(~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Remote host closed the connection)
2020-11-03 18:13:54 +0100 <ulidtko> I've all of: liftIO . putText; traceIO; unsafePerformIO -- none of them run
2020-11-03 18:14:30 +0100 <davean> why would they run?
2020-11-03 18:14:36 +0100 <davean> Nothing there seems to want them to run
2020-11-03 18:14:43 +0100 <ulidtko> haha
2020-11-03 18:14:49 +0100 <ulidtko> I want the to run ;)
2020-11-03 18:14:54 +0100 <ulidtko> pretty desperately in fact
2020-11-03 18:15:00 +0100 <ulidtko> *them
2020-11-03 18:15:32 +0100 <davean> so A) wow thats a lot of seperate ways to do unsafePerformIO, why not pick one? B) make it so that moving on at all is dependent on them being run, force them.
2020-11-03 18:15:42 +0100 <davean> seq, bang, whatever
2020-11-03 18:15:50 +0100 <dolio> Just don't use unsafePerformIO.
2020-11-03 18:16:10 +0100 <davean> yah, I mean yes, its not a good thing to use
2020-11-03 18:16:14 +0100 <davean> and you're using it wrong,
2020-11-03 18:16:21 +0100 <merijn> @quote not.a.bug
2020-11-03 18:16:22 +0100 <lambdabot> Lemmih says: "I don't understand why my code acts weird when I use unsafePerformIO" is not a bug.
2020-11-03 18:16:29 +0100 <ulidtko> yes, I know -- I won't -- those are just for you to see how frustrated I got
2020-11-03 18:16:30 +0100 <davean> but even if you were using it right, none of what your doign there depends on the result of the computation
2020-11-03 18:16:53 +0100 <davean> yah, but I'm confused why you thought these would run - theres no demand.
2020-11-03 18:17:05 +0100 <ulidtko> you can see the callsite
2020-11-03 18:17:23 +0100 <ulidtko> maybeReportTimings <$!> zipWithM step [1 ..] execs
2020-11-03 18:17:28 +0100 <davean> Yah
2020-11-03 18:17:33 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 18:17:35 +0100 <davean> That doesn't ask for it to run
2020-11-03 18:17:54 +0100 <davean> Bangs on the wrong side.
2020-11-03 18:17:55 +0100avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be) (Quit: WeeChat 2.9)
2020-11-03 18:18:20 +0100avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be)
2020-11-03 18:18:32 +0100 <davean> ulidtko: >> won't inspect the ()
2020-11-03 18:18:41 +0100 <davean> ulidtko: it knows its (), why would it look?
2020-11-03 18:18:53 +0100 <ulidtko> well it's a pattern match
2020-11-03 18:19:00 +0100 <ulidtko> right?
2020-11-03 18:19:22 +0100 <ulidtko> should force the thing at whnf if I'm not mistaken
2020-11-03 18:19:23 +0100Amras(~Amras@unaffiliated/amras0000)
2020-11-03 18:19:32 +0100 <davean> ok, so whats whnf
2020-11-03 18:19:33 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-03 18:19:37 +0100 <ulidtko> *to whnf
2020-11-03 18:19:43 +0100 <ulidtko> weak-head-normal-form
2020-11-03 18:19:43 +0100 <davean> whnf of the monad sure
2020-11-03 18:19:50 +0100 <davean> yes, I'm asking you to think about whnf
2020-11-03 18:19:58 +0100 <davean> and why it specificly is the one that *doesn't* force this
2020-11-03 18:20:20 +0100 <ulidtko> ahhhhhhhh
2020-11-03 18:20:27 +0100 <ulidtko> okay
2020-11-03 18:20:48 +0100 <ulidtko> so it forces only the toplevel constructor
2020-11-03 18:21:12 +0100 <davean> Thats what whnf is
2020-11-03 18:21:14 +0100 <davean> yep
2020-11-03 18:21:20 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-03 18:21:29 +0100 <davean> and now you have your answer
2020-11-03 18:21:56 +0100 <ulidtko> that actually just improved my understanding, thanks for the questions!
2020-11-03 18:22:05 +0100 <davean> Thats why I did it :)
2020-11-03 18:22:13 +0100 <ulidtko> appreciated
2020-11-03 18:24:02 +0100 <davean> Now, for ethical reasons I'm required to tell you again you shouldn't use unsafePerformIO, the IRB gets on me if I don't.
2020-11-03 18:24:23 +0100 <ulidtko> I seriously won't, pinky-promise ;)
2020-11-03 18:24:40 +0100 <ulidtko> just temporary (tm) for debug
2020-11-03 18:25:14 +0100 <davean> I believe that like drugs, theres a minimum age on unsafePerformIO usage, and its somewhere over 3 years contributing to GHC :)
2020-11-03 18:25:45 +0100roconnor(~roconnor@host-192.252-162-14.dyn.295.ca)
2020-11-03 18:26:40 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-03 18:27:37 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-03 18:28:19 +0100 <Cheery> https://github.com/cheery/haskell-rady
2020-11-03 18:28:32 +0100 <Cheery> is this enough for a published library, or do you think it'd need something else?
2020-11-03 18:28:38 +0100hvr(~hvr@haskell/developer/hvr) (Remote host closed the connection)
2020-11-03 18:28:50 +0100hvr_(~hvr@haskell/developer/hvr)
2020-11-03 18:29:22 +0100obihann(~jhann@156.34.160.69) (Quit: Lost terminal)
2020-11-03 18:29:23 +0100hvr_hvr
2020-11-03 18:29:41 +0100 <monochrom> (>>) does not do pattern matching on ().
2020-11-03 18:29:57 +0100 <davean> right, I think we got that with the whnf discussion?
2020-11-03 18:30:00 +0100miladz68(~manjaro-u@46.248.60.86) (Remote host closed the connection)
2020-11-03 18:30:39 +0100 <monochrom> I was less certain about that.
2020-11-03 18:30:56 +0100 <davean> Could have been more explicite I guess
2020-11-03 18:32:27 +0100 <monochrom> Actually, it's like this. Suppose you look at "f (MyCtor x y) = 0", then WHNF is relevant. But suppose it's "g _ = 0", then you don't even get to the point of WHNF.
2020-11-03 18:32:48 +0100 <monochrom> And (>>) is like "x >>= \_ -> y"
2020-11-03 18:32:51 +0100 <dolio> :t (>>)
2020-11-03 18:32:52 +0100 <lambdabot> Monad m => m a -> m b -> m b
2020-11-03 18:33:02 +0100 <dolio> (>>) cannot do pattern matching on ()
2020-11-03 18:34:46 +0100 <monochrom> Now, that is true or false depending on this trolling: Does "seq x ()" count as pattern-matching on x? >:)
2020-11-03 18:35:07 +0100kuribas(~user@ptr-25vy0i7uknzjtc6w9zh.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-11-03 18:36:03 +0100 <monochrom> i.e., evilthen x y = x >>= \a -> seq a y
2020-11-03 18:36:46 +0100 <ulidtko> I actually tried () <- maybeReportTimings suspecting exactly that, but then it simply didn't compile due to the MTL wrappers garbage :/
2020-11-03 18:37:18 +0100 <ulidtko> monochrom, why is that evilthen ? sorry i don't get it
2020-11-03 18:37:41 +0100 <monochrom> Because I'm the author and I'm evil.
2020-11-03 18:38:01 +0100 <ulidtko> whoooosh, that's indeed pretty evil
2020-11-03 18:40:30 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 18:41:02 +0100u0_a298(~user@47.206.148.226)
2020-11-03 18:43:03 +0100revtintin(~revtintin@158.140.144.34) (Quit: WeeChat 2.9)
2020-11-03 18:43:04 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 18:43:37 +0100u0_a298(~user@47.206.148.226)
2020-11-03 18:45:03 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-11-03 18:45:51 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 18:49:57 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-11-03 18:49:57 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 18:50:04 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-03 18:50:16 +0100u0_a298(~user@47.206.148.226)
2020-11-03 18:51:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-11-03 18:52:55 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-glpnpeqsowfdqxrb) (Quit: Connection closed for inactivity)
2020-11-03 18:55:08 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 18:55:38 +0100u0_a298(~user@47.206.148.226)
2020-11-03 18:56:03 +0100chaosmasttter(~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de)
2020-11-03 18:59:03 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 18:59:33 +0100u0_a298(~user@47.206.148.226)
2020-11-03 19:00:01 +0100jackgassett(~jackgasse@185.163.110.116) ()
2020-11-03 19:02:37 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 19:03:56 +0100u0_a298(~user@47.206.148.226)
2020-11-03 19:05:08 +0100dyeplexer(~lol@unaffiliated/terpin)
2020-11-03 19:06:45 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-03 19:07:19 +0100borne(~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2020-11-03 19:07:32 +0100alp(~alp@2a01:e0a:58b:4920:d16f:132:b740:cc6e) (Ping timeout: 246 seconds)
2020-11-03 19:12:01 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 19:12:18 +0100u0_a298(~user@47.206.148.226)
2020-11-03 19:14:29 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 19:15:00 +0100u0_a298(~user@47.206.148.226)
2020-11-03 19:16:25 +0100machinedgod(~machinedg@207.253.244.210) (Ping timeout: 258 seconds)
2020-11-03 19:19:00 +0100jlamothe(~jlamothe@198.251.55.207)
2020-11-03 19:20:04 +0100machinedgod(~machinedg@142.169.78.163)
2020-11-03 19:21:45 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2020-11-03 19:25:32 +0100u0_a298(~user@47.206.148.226) (Remote host closed the connection)
2020-11-03 19:25:57 +0100u0_a298(~user@47.206.148.226)
2020-11-03 19:27:32 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 258 seconds)
2020-11-03 19:28:01 +0100 <tomsmeding> davean: over 3 years _contributing to GHC_? That's quite a tall order
2020-11-03 19:28:07 +0100CodeKiwi(~kiwi@unaffiliated/digitalkiwi)
2020-11-03 19:28:32 +0100DigitalKiwi(~kiwi@unaffiliated/digitalkiwi) (Read error: Connection reset by peer)
2020-11-03 19:29:04 +0100dragestil(~quassel@185.137.175.104) (Ping timeout: 256 seconds)
2020-11-03 19:29:17 +0100dragestil(~quassel@185.137.175.104)
2020-11-03 19:29:21 +0100 <tomsmeding> monochrom: you're not even a monsterchrom anymore
2020-11-03 19:29:56 +0100 <koz_> How do you add kind signatures to type variables in type class definitions?
2020-11-03 19:30:38 +0100 <dminuoso> koz_: What do you mean?
2020-11-03 19:31:04 +0100 <dminuoso> % class Functor' (f :: * -> *) -- this?
2020-11-03 19:31:04 +0100 <yahb> dminuoso:
2020-11-03 19:31:11 +0100 <koz_> Yes that. Thanks!
2020-11-03 19:31:38 +0100Franciman(~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving)
2020-11-03 19:32:06 +0100 <tomsmeding> ghc will probably ask you to use Type from Data.Kind, not *
2020-11-03 19:32:15 +0100 <koz_> tomsmeding: Yeah, that's all fine.
2020-11-03 19:32:31 +0100tomsmedingactually likes * better for aesthetic reasons
2020-11-03 19:33:33 +0100 <dminuoso> tomsmeding: For what its worth, I think TypeOperators was a mistake.
2020-11-03 19:34:05 +0100 <koz_> tomsmeding: I'm the opposite, but that's mostly because I prefer actual language words to APL.
2020-11-03 19:34:18 +0100 <dminuoso> % :set -XNoTypeOperators
2020-11-03 19:34:18 +0100 <yahb> dminuoso:
2020-11-03 19:34:23 +0100 <dminuoso> % type T (+) = ((+), (+))
2020-11-03 19:34:23 +0100 <yahb> dminuoso: ; <interactive>:48:8: error:; Unexpected type `(+)'; In the type declaration for `T'; A type declaration should have form; type T a = ...
2020-11-03 19:34:30 +0100 <dminuoso> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#type-operators
2020-11-03 19:34:32 +0100 <dminuoso> Is this a documentation bug?
2020-11-03 19:34:58 +0100 <dminuoso> Or did Haskell2010 get rid of operators as type variables?
2020-11-03 19:35:02 +0100 <tomsmeding> % :Set -XHaskell98
2020-11-03 19:35:02 +0100 <yahb> tomsmeding: unknown command ':Set'; use :? for help.
2020-11-03 19:35:04 +0100 <tomsmeding> % :set -XHaskell98
2020-11-03 19:35:05 +0100 <yahb> tomsmeding:
2020-11-03 19:35:11 +0100 <dminuoso> % type T (+) = ((+), (+))
2020-11-03 19:35:11 +0100 <yahb> dminuoso: ; <interactive>:51:8: error:; Unexpected type `(+)'; In the type declaration for `T'; A type declaration should have form; type T a = ...
2020-11-03 19:35:17 +0100 <tomsmeding> awwww
2020-11-03 19:35:18 +0100 <dminuoso> Apparently a documentation bug then
2020-11-03 19:35:33 +0100 <tomsmeding> or ghc stubbornly refuses to implement it
2020-11-03 19:38:09 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 19:38:35 +0100u0_a298(~user@47.206.148.226)
2020-11-03 19:38:43 +0100alp(~alp@2a01:e0a:58b:4920:dc87:a0db:f731:9e0c)
2020-11-03 19:41:00 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 19:41:16 +0100u0_a298(~user@47.206.148.226)
2020-11-03 19:41:25 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-03 19:41:32 +0100alp(~alp@2a01:e0a:58b:4920:dc87:a0db:f731:9e0c) (Remote host closed the connection)
2020-11-03 19:41:36 +0100 <tomsmeding> it's indeed a documentation bug; from Haskell98 at https://www.haskell.org/onlinereport : `"type" <simpletype> "=" <type>`; `<simpletype> -> <tycon> <tyvar_1> ... <tyvar_k>`; `<tyvar> -> <varid>`; `<varid> -> (small {small | large | digit | ' })_<reservedid>`
2020-11-03 19:41:50 +0100alp(~alp@2a01:e0a:58b:4920:7d22:2550:1d45:febd)
2020-11-03 19:42:14 +0100 <tomsmeding> and a parenthesised operator does not match the unicode version of [a-z]([a-zA-Z0-9']*)
2020-11-03 19:42:31 +0100 <dminuoso> Well Im confident that this was legal in GHC up until 8.x I think?
2020-11-03 19:42:54 +0100 <dminuoso> It seems like an odd bug
2020-11-03 19:43:23 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-11-03 19:44:09 +0100 <tomsmeding> my above argument holds unchanged for haskell2010 :p
2020-11-03 19:44:21 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-03 19:44:23 +0100 <jle`> i remember it was true at one point
2020-11-03 19:44:57 +0100 <tomsmeding> perhaps a ghc implementor thought "why not, it's unambiguous"?
2020-11-03 19:45:32 +0100 <dminuoso> Well its just odd to explicitly state that it was legal Haskell98
2020-11-03 19:46:06 +0100 <dolio> It's not that odd for someone to be mistaken.
2020-11-03 19:46:32 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 19:46:49 +0100 <tomsmeding> probably a conflation of "in the old days" and "Haskell98"
2020-11-03 19:48:15 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-03 19:48:27 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 19:49:50 +0100 <fendor> can I give cabal a global configuration to use a global store for multiple users?
2020-11-03 19:49:54 +0100 <fendor> on a remote server
2020-11-03 19:50:34 +0100son0p(~son0p@181.136.122.143)
2020-11-03 19:51:08 +0100 <geekosaur> that sounds like it's inviting permissions issues
2020-11-03 19:51:28 +0100 <fendor> probably. so, can't really share the package database across multiple users?
2020-11-03 19:51:44 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-03 19:51:53 +0100 <geekosaur> nope
2020-11-03 19:52:54 +0100 <geekosaur> betting it'd also uncover bugs if you did find ways around the permissions
2020-11-03 19:53:10 +0100geekosaurwonders how well it handles concurrent access, for one
2020-11-03 19:54:04 +0100 <fendor> well, concurrent accesses might already happen since cabal invocation might happen in parallel
2020-11-03 19:54:41 +0100avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be) (Quit: WeeChat 2.9)
2020-11-03 19:55:12 +0100 <dminuoso> Linux as a multi-user. Hah. As if anyone ever does that!
2020-11-03 19:55:27 +0100patjameson(~patjameso@178.239.168.171)
2020-11-03 19:55:37 +0100 <dminuoso> It's quite interesting how most installations have become de-facto single user.
2020-11-03 19:56:14 +0100 <geekosaur> servers… although the nature of "user" has changed a bit
2020-11-03 19:56:49 +0100 <fendor> Then I guess I will v1-install and instruct everyone to use ghci directly
2020-11-03 19:57:18 +0100 <dminuoso> geekosaur: Right. Instead, we separate with virtualization or containerization nowadays.
2020-11-03 19:57:31 +0100 <tomsmeding> will it be read-only? that sounds like it would be easier to ensure
2020-11-03 19:57:32 +0100 <dminuoso> Presumably the reason for this is that the "user" has changed from human to mcahine
2020-11-03 19:58:03 +0100 <geekosaur> or remote session, which might be either
2020-11-03 19:59:24 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 20:00:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 20:00:36 +0100ggole(~ggole@2001:8003:8119:7200:4c8:75c2:97ad:422b) (Quit: Leaving)
2020-11-03 20:01:05 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 20:01:21 +0100 <dminuoso> And of course there's the proliferation of computers.
2020-11-03 20:01:31 +0100 <sh9> exit
2020-11-03 20:02:04 +0100 <dminuoso> Where once time sharing was done to multiplex rare computers to few people, nowadays the personal laptop is more than enough
2020-11-03 20:02:21 +0100lottaquestions(~nick@2607:fa49:5040:d100:d0c0:708:6d52:81c9)
2020-11-03 20:02:28 +0100 <dminuoso> So time sharing is rarely necessary anymore unless for supercomputers.
2020-11-03 20:02:34 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Quit: sh9)
2020-11-03 20:02:59 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
2020-11-03 20:03:32 +0100mokulus(~mat@176.111.230.96) ("WeeChat 2.9")
2020-11-03 20:03:37 +0100berberman_(~berberman@unaffiliated/berberman)
2020-11-03 20:03:47 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2020-11-03 20:04:12 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 20:04:41 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-11-03 20:05:01 +0100lottaquestions(~nick@2607:fa49:5040:d100:d0c0:708:6d52:81c9) ("Konversation terminated!")
2020-11-03 20:07:02 +0100u0_a298(~user@47.206.148.226) (Remote host closed the connection)
2020-11-03 20:07:45 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds)
2020-11-03 20:08:12 +0100akad_(~akad@109107030050.radomsko.vectranet.pl)
2020-11-03 20:08:16 +0100u0_a298(~user@47.206.148.226)
2020-11-03 20:10:56 +0100roconnor(~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 256 seconds)
2020-11-03 20:11:44 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 20:13:03 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2020-11-03 20:14:51 +0100atbd(~atbd@68.166.138.88.rev.sfr.net)
2020-11-03 20:16:17 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 260 seconds)
2020-11-03 20:16:25 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-03 20:16:25 +0100atbd(~atbd@68.166.138.88.rev.sfr.net) (Client Quit)
2020-11-03 20:16:45 +0100atbd(~atbd@68.166.138.88.rev.sfr.net)
2020-11-03 20:17:49 +0100atbd(~atbd@68.166.138.88.rev.sfr.net) (Client Quit)
2020-11-03 20:20:08 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 20:20:35 +0100u0_a298(~user@47.206.148.226)
2020-11-03 20:22:22 +0100nuncanada(~dude@179.235.160.168)
2020-11-03 20:23:45 +0100 <monochrom> "cabal itself is already parallel" still makes this assumption: two different cabal-install processes install two different packages, therefore even different directories.
2020-11-03 20:24:05 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 20:24:24 +0100 <monochrom> So now imagine two users doing "cabal install --lib random-1.2.0.0" at almost but not quite the same time.
2020-11-03 20:24:52 +0100 <monochrom> and all options and flags and configs are identical so they really hash to the same directory.
2020-11-03 20:25:42 +0100miguelnegrao(~miguelneg@2001:818:dc71:d100:fa39:ca92:8ab:783d)
2020-11-03 20:26:52 +0100 <monochrom> "almost but not quite the same time" means imagine a timing that maximally maximize race conditions.
2020-11-03 20:27:29 +0100 <miguelnegrao> Hi all. Any hints on to get aeson to encode Maps using nested arrays like [["1","2"]]. I need to interchange maps between haskell (aeson) and purescript (argonaut).
2020-11-03 20:28:10 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-11-03 20:28:13 +0100 <monochrom> I haven't checked, but the least worst scenerio is both use open(... O_CREAT) so at least one of the two processes bail out early.
2020-11-03 20:28:42 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-03 20:28:52 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
2020-11-03 20:28:59 +0100 <monochrom> Because the alternative---they both write to the same foo.so file "successfully"---is even worse.
2020-11-03 20:29:55 +0100 <monochrom> Err need O_EXCL too for the least worst scenerio
2020-11-03 20:30:16 +0100 <monochrom> See? Just don't count on it.
2020-11-03 20:31:09 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-03 20:31:34 +0100 <geekosaur> except linkers expect to be able to overwrite an existing file
2020-11-03 20:32:06 +0100 <monochrom> Ah, then it's maximally racing fun.
2020-11-03 20:32:15 +0100 <geekosaur> and my worry is the wider this gets, the more possibilities for concurrency bugs to show
2020-11-03 20:32:28 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2020-11-03 20:34:15 +0100 <monochrom> miguelnegrao: Perhaps use an intermediate step of Map.toList
2020-11-03 20:34:52 +0100 <monochrom> i.e., encode instead the asoociative list [(key1, val1), (key2, val2), ...]
2020-11-03 20:36:22 +0100 <miguelnegrao> monochrom: yes, that is always a possibility. thanks
2020-11-03 20:36:27 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-11-03 20:36:31 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 20:37:04 +0100 <miguelnegrao> monochrom: was trying to avoid creating additional data types, but i guess it will be needed.
2020-11-03 20:37:18 +0100jtonic(bc193ca1@188.25.60.161)
2020-11-03 20:39:03 +0100jtonic(bc193ca1@188.25.60.161) (Remote host closed the connection)
2020-11-03 20:39:36 +0100christo(~chris@81.96.113.213)
2020-11-03 20:40:23 +0100CodeKiwiDigitalKiwi
2020-11-03 20:40:42 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-03 20:41:12 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-03 20:42:34 +0100 <solonarv> miguelnegrao: that doesn't create an additional data type, though
2020-11-03 20:42:47 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer)
2020-11-03 20:42:50 +0100notnatebtw(~nate@125.161.131.218)
2020-11-03 20:42:59 +0100son0p(~son0p@181.136.122.143) (Remote host closed the connection)
2020-11-03 20:43:31 +0100 <merijn> miguelnegrao: "avoiding the creation of datatypes" is a good way to write code you regret a year from now ;)
2020-11-03 20:43:32 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-03 20:43:34 +0100 <geekosaur> and we're mostly in favor of more data types because it means the compiler can help you more
2020-11-03 20:43:44 +0100 <miguelnegrao> solonarv: yes, I know, but I need to create an additional data type record field is changed from map to [(A,B)] to send in json.
2020-11-03 20:43:47 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-03 20:43:52 +0100 <merijn> geekosaur: Also, easier to refactor later if you make them semi opaque
2020-11-03 20:43:53 +0100 <solonarv> also, yes, creating datatypes is very cheap and easy and you need not be afraid of it
2020-11-03 20:44:12 +0100 <miguelnegrao> yes, no big deal, indeed.
2020-11-03 20:45:24 +0100 <solonarv> tangent: I am now wondering why there isn't an 'IsList Value' instance in aeson
2020-11-03 20:46:05 +0100 <geekosaur> someone just brought that up on -cafe, I think
2020-11-03 20:46:15 +0100argent0(~argent0@168.227.97.4)
2020-11-03 20:46:41 +0100 <geekosaur> fromList is total, toList isn't (or vice versa?)
2020-11-03 20:47:07 +0100 <geekosaur> they want to split IsList so those aren't both needed
2020-11-03 20:47:14 +0100 <argent0> Hi, why does this test pass? https://bpa.st/XB6Q
2020-11-03 20:47:21 +0100 <fendor> How can I garantuee that every user has a specific package in its package scope for interactive developing without having to duplicate the cabal store for every user? Global install is messy...
2020-11-03 20:47:24 +0100 <argent0> 1 == 2
2020-11-03 20:48:08 +0100 <solonarv> I approve of splitting IsList in general but I'm not sure how it's relevant in this case (to be clear I was proposing the instance where 'type Elem Value = Value', i.e. lists <=> JSON arrays_
2020-11-03 20:48:54 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 20:48:57 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-03 20:49:08 +0100 <fendor> argent0, cabal test knows that something has failed by looking on the return code of the executable
2020-11-03 20:49:12 +0100 <maerwald> fendor: cabal environments?
2020-11-03 20:49:22 +0100 <argent0> fendor: ok, I'll check that out
2020-11-03 20:49:52 +0100 <solonarv> er, s/Elem/Item/
2020-11-03 20:49:55 +0100 <fendor> argent0, e.g. your output is not shown, since your exit-code is 0. What it shows is that the tests ran and the exit code was zero, so everything is fine
2020-11-03 20:50:09 +0100 <solonarv> oh right that does make toList partial
2020-11-03 20:50:11 +0100 <fendor> maerwald, how would that work out? I would still need a global store modification
2020-11-03 20:51:08 +0100 <fendor> afaict
2020-11-03 20:51:14 +0100 <solonarv> having a global store (i.e. one shared by all users) isn't necessarily a problem, as long as the same package doesn't end up getting installed concurrently and nobody manually modifies the store
2020-11-03 20:51:16 +0100 <argent0> fendor: thanks
2020-11-03 20:51:47 +0100 <solonarv> these admittedly aren't trivial preconditions so they might not hold in your case
2020-11-03 20:51:50 +0100 <miguelnegrao> my issue comes from aeson encoding Map Int String as {"1": "hello"} and purescript argonaut (from memory) as [[1,"hello"]]. I wonder why each one chose to encode it this way. Is it essentialy the same or any advantage of one over the other representation ?.
2020-11-03 20:52:20 +0100 <fendor> solonarv, can I configure that somehow? I think they hold, as I only need two packages, basically, tasty and tasty-hunit. Once installed, no user should have to install other packages
2020-11-03 20:53:03 +0100argent0(~argent0@168.227.97.4) (Quit: leaving)
2020-11-03 20:53:11 +0100 <fendor> *the preconditions
2020-11-03 20:53:30 +0100argent0(~argent0@168.227.97.4)
2020-11-03 20:54:13 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-03 20:54:48 +0100 <solonarv> fendor: you can pass command-line arguments to cabal telling it which directory the store should be in, and I think you can also set that in a config file somewhere
2020-11-03 20:54:59 +0100 <maerwald> fendor: cabal-env --name myenv --install optics
2020-11-03 20:55:21 +0100juuandyy(~juuandyy@90.166.144.65)
2020-11-03 20:56:01 +0100 <solonarv> miguelnegrao: have you tried monochrom's suggestion?
2020-11-03 20:56:01 +0100 <fendor> maerwald, but then it references my local cabal store, right?
2020-11-03 20:56:21 +0100 <fendor> solonarv, true, I will look into it
2020-11-03 20:56:59 +0100 <miguelnegrao> solonarv: yes, I will use their sugestion.
2020-11-03 20:57:50 +0100 <tomsmeding> fendor: make the shared directory non-writable for the users?
2020-11-03 20:58:01 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-03 20:58:58 +0100 <fendor> tomsmeding, that's a good idea, that avoids the problems
2020-11-03 20:59:05 +0100 <fendor> thanks!
2020-11-03 20:59:21 +0100 <tomsmeding> if it's read-only, you shouldn't have trouble
2020-11-03 20:59:40 +0100 <tomsmeding> also note the channel you're in, we're fond of read-only things :p
2020-11-03 20:59:58 +0100fendor(~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection)
2020-11-03 21:00:07 +0100chaosmasttter(~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
2020-11-03 21:00:25 +0100miguelnegrao(~miguelneg@2001:818:dc71:d100:fa39:ca92:8ab:783d) (Quit: miguelnegrao)
2020-11-03 21:01:25 +0100fendor(~fendor@078132040188.public.t-mobile.at)
2020-11-03 21:01:39 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 21:01:48 +0100 <fendor> tomsmeding, lost connection, dont know if I send it, but I think that is a good idea, thank you!
2020-11-03 21:01:52 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-03 21:02:05 +0100 <tomsmeding> 👍
2020-11-03 21:02:16 +0100 <tomsmeding> we're #haskell, we're fond of read-only things ;)
2020-11-03 21:02:35 +0100fendor_(~fendor@91.141.3.235.wireless.dyn.drei.com)
2020-11-03 21:03:08 +0100wwwww(~wwwww@unaffiliated/wwwww) (Ping timeout: 256 seconds)
2020-11-03 21:03:33 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-03 21:04:08 +0100fendor_(~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection)
2020-11-03 21:04:38 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-03 21:05:02 +0100wwwww(~wwwww@unaffiliated/wwwww)
2020-11-03 21:05:27 +0100 <maerwald> I think this is a solved problem with nix... providing interactive environments you can use cabal in
2020-11-03 21:05:32 +0100 <maerwald> But then you have to use nix...
2020-11-03 21:05:50 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 21:05:55 +0100bqv/mode +m
2020-11-03 21:06:04 +0100 <bqv> Now your channel is readonly!
2020-11-03 21:06:44 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-03 21:07:28 +0100rprije(~rprije@194-193-168-77.tpgi.com.au)
2020-11-03 21:08:02 +0100 <hekkaidekapus> maerwald: This is fendor, the person who is implementing `cabal-plan why-depends`. So, Nix is ok, I think.
2020-11-03 21:08:55 +0100alp(~alp@2a01:e0a:58b:4920:7d22:2550:1d45:febd) (Ping timeout: 272 seconds)
2020-11-03 21:09:15 +0100alp(~alp@2a01:e0a:58b:4920:280c:9785:c082:40bf)
2020-11-03 21:09:46 +0100 <bqv> hekkaidekapus: that wasn't very readonly
2020-11-03 21:09:56 +0100conal(~conal@2600:380:8537:50cb:803b:f7e5:d239:736b)
2020-11-03 21:10:02 +0100 <hekkaidekapus> lol
2020-11-03 21:10:48 +0100hekkaidekapusbqv-wx
2020-11-03 21:11:19 +0100 <fendor> maerwald, hekkaidekapus, in this case, I am afraid I can't use nix, as it is not my server :(
2020-11-03 21:11:43 +0100Resurge(~Thunderbi@213.219.168.185.adsl.dyn.edpnet.net)
2020-11-03 21:11:49 +0100 <hekkaidekapus> I suspect. You are administering some uni box, I guess.
2020-11-03 21:12:26 +0100 <fendor> yes, but I barely have any rights
2020-11-03 21:12:29 +0100 <monochrom> Oh that's the perfect excuse for me to op myself so I can declare state of emergency err I mean make read-only properly with "+q *" haha
2020-11-03 21:13:10 +0100 <hekkaidekapus> hahaha… Boots on the bot :)
2020-11-03 21:14:47 +0100 <merijn> That was my complaint with Nix too
2020-11-03 21:15:02 +0100 <merijn> The main usecase I'd want it is restricted uni machines, but it's impossible to install there :p
2020-11-03 21:15:17 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-11-03 21:15:29 +0100juuandyy(~juuandyy@90.166.144.65)
2020-11-03 21:16:32 +0100 <hekkaidekapus> merijn: You can tame a NixOS install inside a container.
2020-11-03 21:17:04 +0100 <merijn> That's moving the goalpost to getting the container working and somehow configuring it to flawlessly pass through hardware :p
2020-11-03 21:17:09 +0100 <bqv> merijn: you could with proot or some other permissionless chroot thing
2020-11-03 21:17:37 +0100 <bqv> Theres even a fuse permissionless overlayfs somewhere
2020-11-03 21:17:53 +0100 <merijn> hah...as if fuse is installed or usable
2020-11-03 21:18:00 +0100hackagereflex-ghci 0.1.4.2 - A GHCi widget library for use in reflex applications https://hackage.haskell.org/package/reflex-ghci-0.1.4.2 (abrar)
2020-11-03 21:18:07 +0100 <bqv> Honestly I reckon nix outside nixos is just masochism though
2020-11-03 21:18:18 +0100 <bqv> Ditto guix
2020-11-03 21:21:21 +0100 <dolio> I thought people generally said the opposite. Nix is good, but NixOS isn't.
2020-11-03 21:21:50 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-11-03 21:22:52 +0100 <hekkaidekapus> I’d say, NixOS is good for coding. For general Linuxing, I find it not so good.
2020-11-03 21:23:34 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-03 21:26:08 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 21:26:09 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer)
2020-11-03 21:26:28 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-03 21:26:29 +0100 <fendor> I like the ideas and it is really cool once it works, but indeed, it is a lot of work and a lot of pain to setup stuff
2020-11-03 21:26:39 +0100u0_a298(~user@47.206.148.226)
2020-11-03 21:27:23 +0100 <geekosaur> they made configuration a packaging problem
2020-11-03 21:27:47 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 21:27:49 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-03 21:31:07 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-11-03 21:33:14 +0100 <bqv> dolio: definitely agree with that, but that's not to say there's much you can do with nix without depending on nixpkgs, which is built around the idea of nixos
2020-11-03 21:34:19 +0100 <dolio> Yeah, I think it has to do with what hekkaidekapus said. It's okay for a build system, but you might not want your whole computer experience to work that way.
2020-11-03 21:35:23 +0100 <dolio> I guess it could be possible to be better for the former if you weren't trying to enable the latter, though.
2020-11-03 21:35:45 +0100borne(~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de)
2020-11-03 21:39:57 +0100Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
2020-11-03 21:40:40 +0100Amras(~Amras@unaffiliated/amras0000)
2020-11-03 21:41:29 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-03 21:44:04 +0100jrqc(~rofl@96.78.87.197) (Ping timeout: 246 seconds)
2020-11-03 21:45:12 +0100jrqc(~rofl@96.78.87.197)
2020-11-03 21:46:15 +0100conal(~conal@2600:380:8537:50cb:803b:f7e5:d239:736b) (Quit: Computer has gone to sleep.)
2020-11-03 21:46:17 +0100britva(~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba)
2020-11-03 21:50:22 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-03 21:50:58 +0100u0_a298(~user@47.206.148.226)
2020-11-03 21:51:23 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-cxspimotkygwnrbt) (Quit: Connection closed for inactivity)
2020-11-03 21:55:10 +0100fendor_(~fendor@91.141.3.235.wireless.dyn.drei.com)
2020-11-03 21:56:59 +0100kish(~oracle@unaffiliated/oracle)
2020-11-03 21:57:20 +0100conal(~conal@2600:380:857e:b300:b03c:99e9:2644:fc5b)
2020-11-03 21:58:10 +0100 <koz_> I'm a bit unclear on what this instance is saying: http://hackage.haskell.org/package/attoparsec-0.13.2.4/docs/Data-Attoparsec-Internal-Types.html#t:…
2020-11-03 21:58:32 +0100 <koz_> Does the 'a' refer to the _first_ type parameter of 'Parser i a' in the instance?
2020-11-03 22:00:01 +0100patjameson(~patjameso@178.239.168.171) ()
2020-11-03 22:00:17 +0100 <geekosaur> the i there is what all the others call a
2020-11-03 22:00:20 +0100kish`(~oracle@unaffiliated/oracle) (Ping timeout: 272 seconds)
2020-11-03 22:00:43 +0100avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be)
2020-11-03 22:01:03 +0100 <geekosaur> I think. haddock has been known to drop stuff on the floor, leading to odd types
2020-11-03 22:01:17 +0100 <c_wraith> I'm a bit annoyed by there being overlapping instances there.
2020-11-03 22:01:27 +0100DTZUZU_(~DTZUZU@S0106bcd165662a4d.vs.shawcable.net)
2020-11-03 22:01:35 +0100 <geekosaur> and I don't see how that can work as haddock is showing it, hm
2020-11-03 22:01:36 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net) (Ping timeout: 272 seconds)
2020-11-03 22:01:39 +0100patrick_(~patrick@189.62.151.9)
2020-11-03 22:02:05 +0100 <geekosaur> I also distrust the a ~ ByteString one, on general principles
2020-11-03 22:02:15 +0100 <c_wraith> well yes. implicit encoding is bad.
2020-11-03 22:02:19 +0100 <koz_> Yeah, I just realized that this actually compiled a mistake of mine.
2020-11-03 22:02:38 +0100 <koz_> I did a small refactor, it stopped compiling, and I was like 'oh wait, wat, why did this compile?'.
2020-11-03 22:02:47 +0100 <geekosaur> ah, I get it, different Parser there
2020-11-03 22:03:09 +0100bytecoder_(~bytecoder@109.86.182.155)
2020-11-03 22:03:13 +0100 <geekosaur> qualifieid vs. unqualified. so it's the same a and there's a "hidden" Text
2020-11-03 22:03:40 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-11-03 22:03:44 +0100 <koz_> OK, easily fixed then. Thanks - I was wondering what was up there.
2020-11-03 22:03:52 +0100geekosaurpeeked at the source link
2020-11-03 22:04:06 +0100jakob_(~textual@p200300f49f1622003cfc249d5991ef23.dip0.t-ipconnect.de)
2020-11-03 22:04:09 +0100 <c_wraith> yeah, that's annoying that the docs just show them as "Parser" when in order to be properly kinded, those have to be some other type
2020-11-03 22:04:41 +0100 <c_wraith> I guess the instances don't overlap, though.
2020-11-03 22:04:43 +0100 <c_wraith> So that's nice.
2020-11-03 22:06:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-11-03 22:06:56 +0100fendor(~fendor@078132040188.public.t-mobile.at) (Ping timeout: 260 seconds)
2020-11-03 22:07:35 +0100patrick_(~patrick@189.62.151.9) (Quit: Leaving)
2020-11-03 22:08:53 +0100u0_a298(~user@47.206.148.226) (Ping timeout: 260 seconds)
2020-11-03 22:12:45 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-11-03 22:14:23 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-03 22:15:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-03 22:16:25 +0100dcoutts_(~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 240 seconds)
2020-11-03 22:16:33 +0100conal(~conal@2600:380:857e:b300:b03c:99e9:2644:fc5b) (Quit: Computer has gone to sleep.)
2020-11-03 22:18:47 +0100bytecoder_(~bytecoder@109.86.182.155) (Quit: Leaving)
2020-11-03 22:19:38 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-03 22:20:22 +0100dcoutts_(~duncan@33.14.75.194.dyn.plus.net)
2020-11-03 22:22:14 +0100borne(~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
2020-11-03 22:22:36 +0100avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be) (Quit: WeeChat 2.9)
2020-11-03 22:22:48 +0100britva(~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Quit: This computer has gone to sleep)
2020-11-03 22:23:05 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-11-03 22:24:35 +0100knupfer(~Thunderbi@i59F7FFF1.versanet.de) (Ping timeout: 246 seconds)
2020-11-03 22:26:41 +0100ChanServ(ChanServ@services.) (shutting down)
2020-11-03 22:27:22 +0100britva(~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba)
2020-11-03 22:27:33 +0100britva(~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Client Quit)
2020-11-03 22:28:20 +0100Tario(~Tario@201.192.165.173)
2020-11-03 22:29:18 +0100 <bqv> wouldn't it be nice to have a String class, so you don't have to pack and unpack strings constantly and generally have all three string libraries available
2020-11-03 22:29:38 +0100 <dolio> Like IsString?
2020-11-03 22:29:46 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 256 seconds)
2020-11-03 22:29:51 +0100 <bqv> what are the operations of that
2020-11-03 22:30:00 +0100 <bqv> i didn't think it had any outside GHC internal
2020-11-03 22:30:12 +0100 <dolio> It's for overloading strings mostly.
2020-11-03 22:30:35 +0100 <bqv> yeah, i meant like one where you could switch between string types painlessly
2020-11-03 22:30:39 +0100 <geekosaur> I think they're thinking of MonoFoldable/MonoTraversable
2020-11-03 22:30:57 +0100 <geekosaur> let's just say they're not highly regarded
2020-11-03 22:31:02 +0100 <bqv> :(
2020-11-03 22:31:06 +0100knupfer(~Thunderbi@i59F7FFF1.versanet.de)
2020-11-03 22:31:07 +0100borne(~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de)
2020-11-03 22:31:10 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-03 22:31:18 +0100 <dminuoso> bqv: Well there is text-encoding
2020-11-03 22:31:19 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-03 22:31:24 +0100 <dminuoso> err text-conversions
2020-11-03 22:31:37 +0100 <dolio> What does 'switch' mean here?
2020-11-03 22:31:38 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-11-03 22:31:43 +0100 <geekosaur> when things work, they work well. but when they don't work, they're truly terrible
2020-11-03 22:32:21 +0100ChanServ(ChanServ@services.)
2020-11-03 22:32:21 +0100beckett.freenode.net+o ChanServ
2020-11-03 22:32:45 +0100 <dolio> The API surface of strings is probably too large to overload in a single class nicely. It's more of a module parameterization thing.
2020-11-03 22:32:46 +0100 <bqv> dolio: well, for example, say I'm interacting with a library that requires Text, and another that requires ByteString, but my internals generally just use String
2020-11-03 22:32:57 +0100 <dminuoso> bqv: Take ByteString out of that equation
2020-11-03 22:33:04 +0100 <dminuoso> ByteString is *binary* data, not textual data
2020-11-03 22:33:20 +0100 <bqv> that doesn't solve the issue, though
2020-11-03 22:33:22 +0100 <dminuoso> Once you learnt to accept this, it becomes just a String <> Text issue
2020-11-03 22:33:27 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-11-03 22:33:27 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-11-03 22:33:29 +0100 <bqv> I can't mandate that others write packages properly
2020-11-03 22:33:32 +0100 <bqv> i'm not god :D
2020-11-03 22:33:40 +0100 <dolio> You can not use them.
2020-11-03 22:33:57 +0100 <bqv> hmm
2020-11-03 22:34:00 +0100jneira(501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250) (Quit: Connection closed)
2020-11-03 22:34:11 +0100 <dminuoso> bqv: From experience, ByteString is usually used correctly. So if a library exposes ByteString to you, it means decoding is *your* problem
2020-11-03 22:34:22 +0100motherfsck(~motherfsc@unaffiliated/motherfsck) (Quit: quit)
2020-11-03 22:34:48 +0100 <bqv> so basically the current state of affairs is optimal?
2020-11-03 22:34:59 +0100 <dminuoso> Well String/Text is not optimal
2020-11-03 22:35:05 +0100 <dminuoso> But ByteString is frequently misunderstood.
2020-11-03 22:35:08 +0100 <merijn> No, but the optimal state doesn't involve "less string types" :)
2020-11-03 22:35:12 +0100 <merijn> If anything we need more :p
2020-11-03 22:35:27 +0100jneira(501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250)
2020-11-03 22:35:44 +0100 <dminuoso> Text8, Text16..
2020-11-03 22:35:51 +0100 <davean> bqv: no, we should get a lot of String out of the ecosystem
2020-11-03 22:36:05 +0100 <davean> bqv: the previlence of String is definately a lasting problem we have
2020-11-03 22:36:22 +0100 <davean> But there are some tools to use them better and be more polymorphic over them also
2020-11-03 22:36:34 +0100 <davean> We have a lot of tools for that in type class heirarchies
2020-11-03 22:36:54 +0100 <davean> f you think in properties types move to the edge more.
2020-11-03 22:37:07 +0100 <dminuoso> bqv: Im in fact quite glad people expose ByteString often, forcing you to deal with de/encoding.
2020-11-03 22:37:26 +0100 <bqv> hmm
2020-11-03 22:37:30 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-11-03 22:37:43 +0100 <bqv> so now the impression i'm getting is that avoiding String as much as possible is best?
2020-11-03 22:37:46 +0100MisterG(~MisterG@bri77-3-78-239-227-185.fbx.proxad.net)
2020-11-03 22:37:53 +0100 <dminuoso> It depends on what you do, really.
2020-11-03 22:38:15 +0100 <dminuoso> String is not nearly as bad as some people make it out to be, GHC has some good optimizations for it
2020-11-03 22:38:26 +0100 <dolio> Part of the reason String is so persistent is that it isn't really that bad for a lot of stuff.
2020-11-03 22:38:29 +0100 <sm[m]> +1
2020-11-03 22:38:47 +0100 <MisterG> well ... https://www.youtube.com/watch?v=6a6xfFmwFwM
2020-11-03 22:38:58 +0100 <dolio> Because not every use of strings is some super performance critical thing.
2020-11-03 22:39:10 +0100 <sm[m]> String is simple, conserving developer brain cycles, which is often the priority
2020-11-03 22:39:31 +0100 <bqv> but I see the idea. If bytestring has the purpose outlined by dminuoso, and text is the de-facto textual data type, taking string out of the picture makes the whole thing ideal
2020-11-03 22:39:55 +0100 <sm[m]> if text were as easy to use as String, then maybe
2020-11-03 22:40:07 +0100 <dminuoso> I'd move to rename ByteString to ByteBuffer though, so we dont get as many confused beginners.
2020-11-03 22:40:08 +0100 <davean> I find them easier personally, they have better characturistics
2020-11-03 22:40:16 +0100 <davean> dminuoso: thats ... sensible
2020-11-03 22:40:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-03 22:40:33 +0100 <davean> dminuoso: That might actually fix a lot of the screwups I see
2020-11-03 22:40:33 +0100 <bqv> ^
2020-11-03 22:40:35 +0100 <sm[m]> dminuoso: or Bytes
2020-11-03 22:40:44 +0100MisterG(~MisterG@bri77-3-78-239-227-185.fbx.proxad.net) ()
2020-11-03 22:40:54 +0100 <davean> I never realized they'd think of the "String" in "ByteString" as textual.
2020-11-03 22:41:01 +0100 <davean> That ... thats shocking to me
2020-11-03 22:41:19 +0100 <bqv> davean: well consider other languages, there isn't always the distinction
2020-11-03 22:41:24 +0100 <bqv> in fact the rarely is
2020-11-03 22:41:38 +0100 <bqv> and in particular for FFI stuff, you would generally end up using bytestring for text
2020-11-03 22:42:00 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 22:42:24 +0100 <davean> bqv: because with FFI you *specificly* have to talk about encoding always
2020-11-03 22:42:30 +0100 <davean> its inherent to being FFI
2020-11-03 22:42:43 +0100 <bqv> exactly, but that doesn't make it any less textual data
2020-11-03 22:43:04 +0100 <dminuoso> davean: Anyway, the term "string" is really fuzzy and hard to define correctly.
2020-11-03 22:43:04 +0100 <bqv> coming from a closer to baremetal language, you'll be thinking of that
2020-11-03 22:43:18 +0100 <davean> dminuoso: its a Rope, only worse.
2020-11-03 22:43:23 +0100 <bqv> lmao
2020-11-03 22:43:23 +0100 <davean> (No it isn't)
2020-11-03 22:43:43 +0100 <dminuoso> Well, a rope is made of strings..
2020-11-03 22:43:46 +0100 <davean> Haskell really could use a better Rope package
2020-11-03 22:43:51 +0100 <dminuoso> In both senses of both words!
2020-11-03 22:44:15 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9)
2020-11-03 22:44:29 +0100 <dminuoso> I mean if a "string" is understood as a sequence of characters, that begs the question of "what a character" even is.
2020-11-03 22:44:36 +0100 <dolio> Hasn't Ed made one?
2020-11-03 22:44:40 +0100 <bqv> well anyway, sm[m], what are the main inconveniences of Text? (does overloadedstrings allow concatenation with `++`?)
2020-11-03 22:44:51 +0100 <dminuoso> bqv: Annoyance with String is all, really.
2020-11-03 22:45:00 +0100 <dminuoso> Or if you want to deal with non-unicode textual data
2020-11-03 22:45:07 +0100 <bqv> hm
2020-11-03 22:45:11 +0100justanotherusermrdulus
2020-11-03 22:45:13 +0100 <sm[m]> bqv: the biggest is just the dance required to import it
2020-11-03 22:45:35 +0100 <bqv> cool. in that case i'll just build the habit of not using String
2020-11-03 22:45:43 +0100 <dminuoso> bqv: Also, its backed by utf16 currently. That might not be ideal for some special uses.
2020-11-03 22:45:59 +0100 <davean> dolio: Yah, I'll I'll be the first one to tell harmless his sucks :)
2020-11-03 22:46:07 +0100 <dminuoso> (There exist text-short and text-utf8 packages if those are needed)
2020-11-03 22:46:08 +0100 <dolio> Hahaha.
2020-11-03 22:46:09 +0100 <sm[m]> it can have unpredictable performance (cf recent reddit post)
2020-11-03 22:46:11 +0100 <bqv> heh
2020-11-03 22:46:15 +0100 <dolio> I guess that's why he wrote another one for coda.
2020-11-03 22:46:23 +0100mrdulusjustan0theruser
2020-11-03 22:46:34 +0100 <dminuoso> bqv: At any rate `text` is a very safe default when dealing with non-trivial amounts of textual data.
2020-11-03 22:46:43 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-03 22:46:45 +0100 <dminuoso> Without any major deficits
2020-11-03 22:47:18 +0100 <sm[m]> and it's harder to do list-like construction/operations with it
2020-11-03 22:48:00 +0100 <sm[m]> there's lazy and strict variants to deal with
2020-11-03 22:48:15 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-11-03 22:48:27 +0100 <dminuoso> It's similar to how Vector is a good default if you need a memory efficient array with cheap random access
2020-11-03 22:48:32 +0100 <sm[m]> literals require OverloadedStrings, which may interfere with other things.. etc.
2020-11-03 22:48:51 +0100 <dminuoso> sm[m]: You can just write `T.pack "foo"` in those places though
2020-11-03 22:48:54 +0100 <dminuoso> It's not a big issue
2020-11-03 22:49:15 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds)
2020-11-03 22:49:19 +0100 <sm[m]> sure, but all of these things add up and make it less convenient than String
2020-11-03 22:49:26 +0100 <bqv> ack.
2020-11-03 22:49:33 +0100 <sm[m]> convenience is a big issue in my book
2020-11-03 22:50:08 +0100 <bqv> well, i suppose at any rate, if bytestring is out of the picture in almost every context, it isn't so heinous
2020-11-03 22:50:08 +0100 <dminuoso> sm[m]: Heh, Im debating between convenience of Int everywhere, or proper cross-platform support in an upcoming library right now.
2020-11-03 22:50:19 +0100 <dminuoso> I really want this to have a guaranteed 32 bits..
2020-11-03 22:50:30 +0100 <dminuoso> (And Word32 will cause a lot of fromIntegral friction)
2020-11-03 22:50:32 +0100 <bqv> back when i started haskell the string types were my biggest headache i reckon
2020-11-03 22:50:39 +0100 <sm[m]> of course, when you need what text provides, String becomes the inconvenient/wrong one
2020-11-03 22:50:58 +0100argent0(~argent0@168.227.97.4) (Ping timeout: 256 seconds)
2020-11-03 22:51:18 +0100 <dminuoso> bqv: The prevalence of String is arguably one of the biggest warts in Haskell. :(
2020-11-03 22:51:37 +0100 <sm[m]> myself, I don't seem to have really needed text in my haskell career yet. I guess I'd need to be storing large amounts of it and wanting to save memory
2020-11-03 22:51:39 +0100mdunnio(~mdunnio@208.59.170.5)
2020-11-03 22:51:42 +0100 <dminuoso> In a perfect world, we could use backpack to switch between String and Text, depending on what we want
2020-11-03 22:51:58 +0100 <bqv> backpack?
2020-11-03 22:52:04 +0100 <davean> sm[m]: its not about memory, the performance of string is abismal even in small pieces of code
2020-11-03 22:52:05 +0100 <sm[m]> though I've been benefitting from it's use in many libs, probably
2020-11-03 22:52:09 +0100 <dminuoso> bqv: Are you familiar with ML functors?
2020-11-03 22:52:24 +0100 <bqv> i'm familiar with haskell functors, at least
2020-11-03 22:52:31 +0100 <dminuoso> Different thing entirely :)
2020-11-03 22:52:34 +0100 <sm[m]> davean: everyone says this, but I haven't experienced it in my code
2020-11-03 22:52:41 +0100 <bqv> i have a vague comprehension of category theory
2020-11-03 22:52:49 +0100 <bqv> i won't pretend to be a master
2020-11-03 22:53:50 +0100 <tomsmeding> dminuoso: are those parametrised modules?
2020-11-03 22:53:58 +0100 <dminuoso> tomsmeding: Yeah
2020-11-03 22:54:03 +0100 <tomsmeding> bqv: Futhark also has those, if you just so happen to know that language :p
2020-11-03 22:54:13 +0100aarvar(~foewfoiew@50.35.43.33)
2020-11-03 22:54:35 +0100 <dminuoso> bqv: Roughly and havingly, backpack lets you parametrize a package by another.
2020-11-03 22:54:38 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 264 seconds)
2020-11-03 22:54:46 +0100 <dminuoso> *handwavingly
2020-11-03 22:54:53 +0100fendor_(~fendor@91.141.3.235.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2020-11-03 22:54:57 +0100 <bqv> interesting
2020-11-03 22:55:24 +0100 <dminuoso> So rather than depending on some modules, you depend on some signature. And backpack can fill that signature in with some matching stuff.
2020-11-03 22:55:39 +0100fendor(~fendor@91.141.3.235.wireless.dyn.drei.com)
2020-11-03 22:55:41 +0100fendor(~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection)
2020-11-03 22:55:44 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 240 seconds)
2020-11-03 22:55:45 +0100superfly1(~superfly@84.39.117.57)
2020-11-03 22:56:33 +0100 <justsomeguy> Roughly speaking, what does a signature consist of? Is it a type signature for functions that are members of the module, or something?
2020-11-03 22:56:42 +0100 <sm[m]> davean: ..and I've seen a few other folks say the same, so I think it must depend. Perhaps it's more apparent when working with large strings ? I ported hledger from String to text and the difference was not huge.
2020-11-03 22:56:46 +0100 <bqv> that's actually very cool
2020-11-03 22:57:18 +0100 <davean> sm[m]: Oh yes, its walking the spine thats so slow - O(n) vs. O(1)
2020-11-03 22:57:21 +0100 <dminuoso> justsomeguy / bqv: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/separate_compilation.html#module-s…
2020-11-03 22:57:55 +0100sQVe(~sQVe@unaffiliated/sqve)
2020-11-03 22:58:51 +0100 <bqv> excellent
2020-11-03 22:59:02 +0100 <sm[m]> so perhaps when working with many small strings, text is not such a win; and I think that's a pretty common case
2020-11-03 22:59:07 +0100 <tomsmeding> sm[m]: "not huge" -- do you remember roughly how much it did save?
2020-11-03 22:59:28 +0100 <davean> sm[m]: It adds up on total volume of string, not length of any given
2020-11-03 22:59:46 +0100 <dminuoso> bqv: In case you ever encounter it in the future, ML functors are roughly the same thing (albeit much more powerful), giving you parametrized modules (that is functions returning *modules*)
2020-11-03 23:00:04 +0100 <dminuoso> (or, you could think of backpack as a simpler form of ml-functors)
2020-11-03 23:00:19 +0100 <bqv> i see, fair enough
2020-11-03 23:00:42 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-03 23:01:13 +0100 <sm[m]> tomsmeding: I see "most hledger types have been converted from String to Text, reducing memory usage by 30%+ on large files". I don't remember the time change, perhaps it was similar
2020-11-03 23:01:18 +0100 <dolio> It is essentially the same thing, but you need to do the management in cabal files and such, not just as constructs in the language.
2020-11-03 23:01:42 +0100 <dminuoso> dolio: They are limited because it's static in cabal, ml functors you can just apply to different things at the same time.
2020-11-03 23:01:54 +0100 <davean> sm[m]: remember the GC has to walk strings also
2020-11-03 23:01:57 +0100 <tomsmeding> sm[m]: neat, thanks! nice factoid
2020-11-03 23:02:00 +0100 <davean> sm[m]: so just HAVING strings in memory hurts performance
2020-11-03 23:02:23 +0100 <dolio> You can apply a backpack 'functor' to multiple modules, too.
2020-11-03 23:02:25 +0100 <dminuoso> Oh?
2020-11-03 23:02:32 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 23:02:55 +0100 <hekkaidekapus> bqv, justsomeguy: <https://github.com/haskell-backpack/backpack-str/blob/master/str-sig/Str.hsig>
2020-11-03 23:03:04 +0100 <dolio> Yeah, but it all happens in the cabal file.
2020-11-03 23:03:05 +0100 <davean> sm[m]: if you just allocate a large string and do something else in your program, your performance suffers a lot
2020-11-03 23:03:06 +0100 <bqv> i was about to ask a question but i think i just answered it with text-show
2020-11-03 23:03:28 +0100 <dolio> Or whatever you're using. I guess there's some just-GHC way to use it, but I ignored that mostly.
2020-11-03 23:03:30 +0100 <davean> sm[m]: its the very *existance* of strings in the program that cause issues
2020-11-03 23:03:52 +0100 <sm[m]> davean: ok, but I'm reporting my experience so far. Issues have been minimal
2020-11-03 23:04:10 +0100 <sm[m]> I think people are too quick to condemn String, without measuring or considering context
2020-11-03 23:04:23 +0100 <davean> I messure religiously
2020-11-03 23:04:48 +0100 <sm[m]> I mean, People at large, not you of course. Which gives String and haskell an unnecessarily bad rep
2020-11-03 23:05:03 +0100 <davean> Maybe, most people don't understand Haskell performance it seems.
2020-11-03 23:05:26 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-03 23:05:53 +0100monochromdisbelieves in simpletonic "rule of thumb", "best practice", "code smell".
2020-11-03 23:06:44 +0100 <dminuoso> We have a latency critical application. We have String in all kinds of places, except in the code generation where we just use `prettyprinter`. All our performance issues were of algorithmic nature, and the odd lack of sharing.
2020-11-03 23:07:12 +0100 <davean> dminuoso: oh interesting. I'd LOVE to know about your lack of sharing
2020-11-03 23:07:14 +0100dcoutts_(~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 256 seconds)
2020-11-03 23:07:19 +0100 <davean> that sounds very interesting
2020-11-03 23:07:25 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 240 seconds)
2020-11-03 23:07:29 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
2020-11-03 23:07:40 +0100 <dolio> dminuoso: http://blog.ezyang.com/2016/10/try-backpack-ghc-backpack/
2020-11-03 23:07:51 +0100 <dolio> Search for "using both insantiations at once"
2020-11-03 23:08:00 +0100 <bqv> sm[m]: but surely it's pretty reasonable to want to avoid marshalling between Text and String all the time, which is undeniably less efficient than any alternative. then at that point, your use of which one all but depends on what libraries you use
2020-11-03 23:09:29 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 23:09:37 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-11-03 23:10:07 +0100roconnor(~roconnor@host-192.252-162-14.dyn.295.ca)
2020-11-03 23:10:15 +0100 <sm[m]> bqv: you're right
2020-11-03 23:11:06 +0100 <dminuoso> davean: Oh it's really not that interesting. It's just when you defeat MMR by being very explicit with type annotations..
2020-11-03 23:11:24 +0100 <ski> bqv : ML functors is something else
2020-11-03 23:11:27 +0100 <ski> @where on-functors
2020-11-03 23:11:28 +0100 <lambdabot> "On Functors" (in C++,Standard ML,Haskell,Prolog) by Peteris Krumins in 2010-05-17 at <http://www.catonmat.net/blog/on-functors/>
2020-11-03 23:11:52 +0100 <davean> dminuoso: Oh! Thats 2 slides of my talk!
2020-11-03 23:12:04 +0100 <davean> dminuoso: I specificly focus on that and when to be how strict
2020-11-03 23:12:10 +0100 <davean> and how much to unpack and why
2020-11-03 23:12:19 +0100 <sm[m]> bqv: that is to say, if your data is not big enough to require text, then easy interop with the libs you're using is probably the best way to choose
2020-11-03 23:12:20 +0100 <dminuoso> davean: Did you hold that talk already?
2020-11-03 23:12:31 +0100 <davean> No, thrusday at Haskell Exchange
2020-11-03 23:12:36 +0100 <davean> I was recently tricked into it
2020-11-03 23:12:45 +0100 <dminuoso> Ah, are they still selling tickets?
2020-11-03 23:12:49 +0100 <dminuoso> Seems so, mmm.
2020-11-03 23:12:53 +0100 <davean> I'm currently desperately getting the talk together if you want to review it
2020-11-03 23:13:18 +0100 <dminuoso> I could take a peek, sure
2020-11-03 23:13:41 +0100 <dminuoso> I kind of missed this years Haskell eXchange because it was so rushed..
2020-11-03 23:13:56 +0100 <dminuoso> (Guess it's still the aftermath of the bankruptcy)
2020-11-03 23:15:16 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 23:15:33 +0100 <sm[m]> bqv: if you're interested, http://hackage.haskell.org/package/foundation-0.0.25/docs/Foundation-String.html is a third option, but it doesn't seem to have got much traction
2020-11-03 23:16:09 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-03 23:16:49 +0100 <bqv> heh, yeah, if it would require explicit marshalling then i don't see myself using it much either
2020-11-03 23:18:00 +0100hackageregistry 0.2.0.1 - data structure for assembling components https://hackage.haskell.org/package/registry-0.2.0.1 (etorreborre)
2020-11-03 23:18:28 +0100 <sm[m]> there'll always be some marshalling/conversion, since different types of text-like data arise in the wild. Ideally we'd minimise it though
2020-11-03 23:19:45 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-03 23:20:18 +0100 <sm[m]> maybe the aforementioned http://hackage.haskell.org/package/text-utf8 has superseded that foundation type
2020-11-03 23:24:28 +0100 <bqv> so this is one where backpack would be nice
2020-11-03 23:24:42 +0100 <bqv> because you have the same ABI, but different types
2020-11-03 23:24:47 +0100 <bqv> so mixing and matching won't work
2020-11-03 23:24:57 +0100 <bqv> *API
2020-11-03 23:27:02 +0100alp(~alp@2a01:e0a:58b:4920:280c:9785:c082:40bf) (Read error: Connection reset by peer)
2020-11-03 23:27:23 +0100alp(~alp@2a01:e0a:58b:4920:99ca:9a50:cea9:e213)
2020-11-03 23:27:41 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 23:28:09 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-11-03 23:28:29 +0100sQVe(~sQVe@unaffiliated/sqve) (Quit: Bye!)
2020-11-03 23:29:58 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Quit: Leaving)
2020-11-03 23:30:00 +0100 <hekkaidekapus> bqv: Yes, the String case is a poster-showcase of what Backpack can do.
2020-11-03 23:30:17 +0100 <bqv> well, text, in that case, but yeah
2020-11-03 23:30:30 +0100hackagepandoc 2.11.1 - Conversion between markup formats https://hackage.haskell.org/package/pandoc-2.11.1 (JohnMacFarlane)
2020-11-03 23:31:01 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Quit: Lost terminal)
2020-11-03 23:32:37 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
2020-11-03 23:33:02 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 264 seconds)
2020-11-03 23:35:52 +0100tolt(~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9)
2020-11-03 23:36:23 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2020-11-03 23:36:32 +0100gtk(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2020-11-03 23:37:09 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-11-03 23:37:50 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-03 23:39:23 +0100knupfer(~Thunderbi@i59F7FFF1.versanet.de) (Ping timeout: 265 seconds)
2020-11-03 23:39:49 +0100tolt(~weechat-h@li219-154.members.linode.com)
2020-11-03 23:40:03 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 23:42:07 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-03 23:44:03 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-11-03 23:45:08 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-03 23:45:28 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-03 23:46:00 +0100tolt(~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9)
2020-11-03 23:47:26 +0100tolt(~weechat-h@li219-154.members.linode.com)
2020-11-03 23:48:12 +0100Katarushisu(~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Ping timeout: 260 seconds)
2020-11-03 23:48:33 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-03 23:49:45 +0100Katarushisu(~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net)
2020-11-03 23:50:58 +0100 <bqv> geekosaur: do you also dislike classy-prelude?
2020-11-03 23:52:25 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-03 23:52:41 +0100KhoN_1(~KhoN@cm-84.208.147.132.getinternet.no)
2020-11-03 23:52:47 +0100kori(~kori@arrowheads/kori) (Quit: WeeChat 2.8)
2020-11-03 23:54:11 +0100brodie_(~brodie@207.53.253.137)
2020-11-03 23:54:41 +0100KhoN(~KhoN@cm-84.208.147.132.getinternet.no) (Ping timeout: 268 seconds)
2020-11-03 23:55:13 +0100aarvar(~foewfoiew@50.35.43.33) ()
2020-11-03 23:55:32 +0100 <dminuoso> hls-haskell/emacs question: I have a multi-component cabal project, it seems that setting up the cradle fails because it does not know which sub-component to use for my source code (it seems to always use the same component)
2020-11-03 23:56:02 +0100 <dminuoso> Is there a way to tell hls to pin to a particular target?
2020-11-03 23:56:20 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-03 23:57:24 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
2020-11-03 23:57:30 +0100mdunnio(~mdunnio@208.59.170.5) (Remote host closed the connection)