2020-11-03 00:00:18 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-03 00:01:32 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-03 00:01:39 +0100 | jedws | (~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 00:03:05 +0100 | jedws | (~jedws@101.184.150.81) |
2020-11-03 00:04:59 +0100 | hekkaidekapus{ | hekkaidekapus |
2020-11-03 00:05:26 +0100 | alp | (~alp@2a01:e0a:58b:4920:ecfe:1146:fdb5:4e48) (Ping timeout: 264 seconds) |
2020-11-03 00:05:37 +0100 | dbmikus_ | (~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 +0100 | heatsink | (~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 +0100 | macrover | (~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 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 00:09:46 +0100 | refried_ | (~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 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 260 seconds) |
2020-11-03 00:10:34 +0100 | chele | (~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 +0100 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9) |
2020-11-03 00:12:14 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-03 00:12:43 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2020-11-03 00:12:53 +0100 | heatsink | (~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 +0100 | m0rphism | (~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 +0100 | pacak | (~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 +0100 | pacak | (~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 +0100 | hackage | hackage-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 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 00:21:46 +0100 | refried_ | (~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 +0100 | refried_ | (~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 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
2020-11-03 00:30:01 +0100 | conal | (~conal@198.8.81.68) (Quit: Computer has gone to sleep.) |
2020-11-03 00:31:09 +0100 | pta2002 | (~quassel@104.248.23.110) (Ping timeout: 268 seconds) |
2020-11-03 00:33:06 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 00:33:59 +0100 | pta2002 | (~quassel@104.248.23.110) |
2020-11-03 00:34:20 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-03 00:35:15 +0100 | conal | (~conal@198.8.81.68) |
2020-11-03 00:37:10 +0100 | vacm | (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 00:38:24 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-03 00:39:08 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Ping timeout: 260 seconds) |
2020-11-03 00:39:31 +0100 | Chi1thangoo | (~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 +0100 | perrier-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 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-03 00:41:20 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 00:42:15 +0100 | conal | (~conal@198.8.81.68) (Quit: Computer has gone to sleep.) |
2020-11-03 00:42:21 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2020-11-03 00:45:55 +0100 | dbmikus_ | (~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 +0100 | s00pcan | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 00:52:09 +0100 | conal | (~conal@64.71.133.70) |
2020-11-03 00:52:36 +0100 | berberman | (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-11-03 00:52:57 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2020-11-03 00:54:07 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:c4b9:178f:4076:90ef) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 00:54:18 +0100 | LKoen | (~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 +0100 | renzhi | (~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 +0100 | pera | (~pera@unaffiliated/pera) (Ping timeout: 264 seconds) |
2020-11-03 01:00:01 +0100 | ffej | (~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 +0100 | Axma45768 | Axman6 |
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 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) |
2020-11-03 01:08:45 +0100 | heatsink | (~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 +0100 | PerseusPlease | (~{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 +0100 | vacm | (~vacwm@70.23.92.191) |
2020-11-03 01:16:38 +0100 | howdoi | (uid224@gateway/web/irccloud.com/x-gtoygnwcsyvwpslb) |
2020-11-03 01:17:09 +0100 | gxt | (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection) |
2020-11-03 01:17:53 +0100 | gxt | (~gxt@gateway/tor-sasl/gxt) |
2020-11-03 01:19:11 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 01:21:52 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving) |
2020-11-03 01:24:48 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2020-11-03 01:27:18 +0100 | tsrt^ | (tsrt@ip98-184-89-2.mc.at.cox.net) () |
2020-11-03 01:27:23 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-11-03 01:29:17 +0100 | emnmauiigw^ | (emnmauiigw@ip98-184-89-2.mc.at.cox.net) |
2020-11-03 01:29:50 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) |
2020-11-03 01:31:19 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
2020-11-03 01:32:20 +0100 | fendor__ | (~fendor@91.141.3.235.wireless.dyn.drei.com) |
2020-11-03 01:32:39 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9) |
2020-11-03 01:34:36 +0100 | fendor_ | (~fendor@91.141.1.122.wireless.dyn.drei.com) (Ping timeout: 256 seconds) |
2020-11-03 01:36:22 +0100 | mimi1vx | (~mimi@tulipan.habr.nat.praha12.net) (Ping timeout: 256 seconds) |
2020-11-03 01:39:56 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@68.235.43.142) |
2020-11-03 01:41:30 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 01:46:54 +0100 | vacm | (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 01:47:52 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) |
2020-11-03 01:48:32 +0100 | vacm | (~vacwm@70.23.92.191) |
2020-11-03 01:48:57 +0100 | psygate | (~psygate@unaffiliated/psygate) (Quit: Leaving) |
2020-11-03 01:49:25 +0100 | Axman6 | considers /nick Axmurderman6 |
2020-11-03 01:50:10 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-03 01:52:18 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@68.235.43.142) (Quit: Leaving) |
2020-11-03 01:52:52 +0100 | plutoniix | (~q@175.176.222.7) |
2020-11-03 01:59:08 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-03 02:00:27 +0100 | Deide | (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
2020-11-03 02:00:45 +0100 | ps-auxw | (~arneb@p548c6f52.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-03 02:02:35 +0100 | mimi1vx | (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) |
2020-11-03 02:02:35 +0100 | carlomagno | (~cararell@148.87.23.11) (Remote host closed the connection) |
2020-11-03 02:04:05 +0100 | carlomagno | (~cararell@148.87.23.4) |
2020-11-03 02:04:23 +0100 | hekkaidekapus | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2020-11-03 02:04:30 +0100 | hackage | ttc 0.3.0.0 - Textual Type Classes https://hackage.haskell.org/package/ttc-0.3.0.0 (TravisCardwell) |
2020-11-03 02:06:00 +0100 | hackage | predicate-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 +0100 | hekkaidekapus | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-11-03 02:06:34 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-03 02:06:49 +0100 | ps-auxw | (~arneb@p548d590b.dip0.t-ipconnect.de) |
2020-11-03 02:07:15 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Quit: geowiesnot) |
2020-11-03 02:11:17 +0100 | ps-auxw | (~arneb@p548d590b.dip0.t-ipconnect.de) (Disconnected by services) |
2020-11-03 02:11:26 +0100 | ps-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 +0100 | wroathe | (~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 +0100 | Lord_of_Life | (~Lord@46.217.218.100) |
2020-11-03 02:25:30 +0100 | Lord_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 +0100 | vacm | (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 02:27:10 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-03 02:27:13 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@68.235.43.86) |
2020-11-03 02:29:33 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:9b11:58b1:f4d:830a) (Ping timeout: 268 seconds) |
2020-11-03 02:29:55 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:5a39:1b16:9de1:d497) |
2020-11-03 02:31:18 +0100 | vacm | (~vacwm@70.23.92.191) |
2020-11-03 02:35:48 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-03 02:36:13 +0100 | theorb | (~theorb@cpc81860-swin19-2-0-cust166.3-1.cable.virginm.net) (Ping timeout: 264 seconds) |
2020-11-03 02:36:16 +0100 | vacm | (~vacwm@70.23.92.191) (Ping timeout: 272 seconds) |
2020-11-03 02:37:45 +0100 | xerox_ | (~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds) |
2020-11-03 02:40:07 +0100 | danso | (~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 +0100 | mimi1vx | (~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 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-03 02:44:33 +0100 | akad_ | (~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 +0100 | theorbtwo | (~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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-03 02:53:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 02:54:38 +0100 | oats | noats |
2020-11-03 02:56:19 +0100 | Foritus | (~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 +0100 | Foritus | (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) |
2020-11-03 02:57:24 +0100 | Foritus | (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) (Remote host closed the connection) |
2020-11-03 02:58:02 +0100 | conal | (~conal@64.71.133.70) |
2020-11-03 02:58:11 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds) |
2020-11-03 02:58:12 +0100 | Foritus | (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) |
2020-11-03 03:01:58 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-xutwnldhztnzggtn) |
2020-11-03 03:02:52 +0100 | noats | oats |
2020-11-03 03:03:40 +0100 | V3ct0r | (~V3ct0r@185.163.110.116) |
2020-11-03 03:07:08 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 03:08:24 +0100 | Amras | (~Amras@unaffiliated/amras0000) (Ping timeout: 268 seconds) |
2020-11-03 03:12:33 +0100 | heatsink | (~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 +0100 | acidjnk_new2 | (~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-03 03:17:30 +0100 | hackage | gargoyle-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 +0100 | guest113 | (~user@49.5.6.87) |
2020-11-03 03:21:05 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 03:21:44 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2020-11-03 03:23:33 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-11-03 03:27:05 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 03:27:45 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 03:28:35 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-11-03 03:30:47 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) |
2020-11-03 03:31:04 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit) |
2020-11-03 03:33:44 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-03 03:34:45 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) |
2020-11-03 03:41:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 03:42:05 +0100 | xerox_ | (~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 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 03:46:25 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) |
2020-11-03 03:47:11 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2020-11-03 03:47:24 +0100 | sveit | (~sveit@45.77.0.246) (Quit: Bye) |
2020-11-03 03:47:33 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-03 03:47:41 +0100 | sveit | (~sveit@45.77.0.246) |
2020-11-03 03:49:12 +0100 | conal | (~conal@64.71.133.70) |
2020-11-03 03:51:57 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 03:54:13 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
2020-11-03 03:55:37 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 03:55:44 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-11-03 03:56:24 +0100 | drbean | (~drbean@TC210-63-209-59.static.apol.com.tw) |
2020-11-03 03:56:30 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:5a39:1b16:9de1:d497) (Ping timeout: 268 seconds) |
2020-11-03 03:56:31 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) |
2020-11-03 03:56:37 +0100 | borne | (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2020-11-03 03:57:17 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit) |
2020-11-03 03:57:31 +0100 | dusty_pacer | (~pi@2600:6c50:80:2f4a:e9d0:6569:1cea:d1d4) |
2020-11-03 03:58:07 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:23ce:a11d:3032:dba3) |
2020-11-03 03:58:20 +0100 | ddellacosta | (~dd@86.106.121.168) (Ping timeout: 258 seconds) |
2020-11-03 04:00:01 +0100 | V3ct0r | (~V3ct0r@185.163.110.116) () |
2020-11-03 04:00:32 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds) |
2020-11-03 04:01:24 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 04:02:29 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 04:02:51 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 04:03:24 +0100 | ddellacosta | (~dd@86.106.121.168) |
2020-11-03 04:06:24 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 04:08:24 +0100 | lagothrix | Guest44571 |
2020-11-03 04:08:24 +0100 | Guest44571 | (~lagothrix@unaffiliated/lagothrix) (Killed (card.freenode.net (Nickname regained by services))) |
2020-11-03 04:08:33 +0100 | lagothrix | (~lagothrix@unaffiliated/lagothrix) |
2020-11-03 04:08:45 +0100 | ddellacosta | (~dd@86.106.121.168) (Ping timeout: 265 seconds) |
2020-11-03 04:09:02 +0100 | mimi1vx | (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) |
2020-11-03 04:09:13 +0100 | olligobber | (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 +0100 | borne | (~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 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 04:12:39 +0100 | machinedgod | (~machinedg@207.253.244.210) (Ping timeout: 260 seconds) |
2020-11-03 04:12:49 +0100 | macrover | (~macrover@ip70-189-231-35.lv.lv.cox.net) (Ping timeout: 264 seconds) |
2020-11-03 04:15:04 +0100 | urodna | (~urodna@unaffiliated/urodna) (Quit: urodna) |
2020-11-03 04:15:14 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 04:17:21 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 04:17:55 +0100 | wei2912 | (~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 +0100 | borne | (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
2020-11-03 04:18:42 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) |
2020-11-03 04:20:32 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 04:21:21 +0100 | conal | (~conal@64.71.133.70) (Read error: Connection reset by peer) |
2020-11-03 04:21:54 +0100 | nbloomf | (~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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 04:26:28 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
2020-11-03 04:27:34 +0100 | conal | (~conal@64.71.133.70) |
2020-11-03 04:27:35 +0100 | theDon | (~td@muedsl-82-207-238-028.citykom.de) (Ping timeout: 260 seconds) |
2020-11-03 04:29:23 +0100 | theDon | (~td@94.134.91.45) |
2020-11-03 04:29:28 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-11-03 04:32:26 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 264 seconds) |
2020-11-03 04:33:11 +0100 | dxld | (~dxld@2a01:4f8:201:89ff:7479:df6a:7ab8:8305) (Quit: Bye) |
2020-11-03 04:33:15 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) |
2020-11-03 04:33:42 +0100 | jespada | (~jespada@90.254.245.49) |
2020-11-03 04:33:53 +0100 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Ping timeout: 256 seconds) |
2020-11-03 04:34:57 +0100 | dxld | (~dxld@2a01:4f8:201:89ff:7479:df6a:7ab8:8305) |
2020-11-03 04:35:50 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) |
2020-11-03 04:37:50 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit) |
2020-11-03 04:38:32 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 04:39:21 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::5e0b) (Quit: WeeChat 2.9) |
2020-11-03 04:40:17 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-03 04:41:30 +0100 | hackage | crdt-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 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 04:43:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 04:43:50 +0100 | mimi1vx | (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 264 seconds) |
2020-11-03 04:45:02 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-03 04:45:54 +0100 | z0_ | (~z0@188.250.0.59) |
2020-11-03 04:46:36 +0100 | z0_ | (~z0@188.250.0.59) (Client Quit) |
2020-11-03 04:48:35 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-03 04:51:39 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) |
2020-11-03 04:51:45 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 04:52:52 +0100 | chediak | (b14cf9ce@177.76.249.206) |
2020-11-03 04:53:39 +0100 | chediak | (b14cf9ce@177.76.249.206) (Remote host closed the connection) |
2020-11-03 04:55:14 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 04:55:31 +0100 | BrunoNapoleao | (~BrunoNapo@185.163.110.116) |
2020-11-03 04:56:33 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 04:57:16 +0100 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) |
2020-11-03 04:59:02 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds) |
2020-11-03 04:59:35 +0100 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer) |
2020-11-03 05:00:07 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 05:01:22 +0100 | christo_ | (~chris@81.96.113.213) |
2020-11-03 05:01:22 +0100 | christo | (~chris@81.96.113.213) (Read error: Connection reset by peer) |
2020-11-03 05:01:29 +0100 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) |
2020-11-03 05:01:50 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-03 05:02:07 +0100 | stef204 | (~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 2.9) |
2020-11-03 05:02:16 +0100 | SupaYoshi | (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
2020-11-03 05:03:01 +0100 | SupaYoshi | (~supayoshi@213-10-140-13.fixed.kpn.net) |
2020-11-03 05:05:24 +0100 | christo_ | (~chris@81.96.113.213) (Ping timeout: 240 seconds) |
2020-11-03 05:08:56 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 05:12:27 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:23ce:a11d:3032:dba3) (Ping timeout: 260 seconds) |
2020-11-03 05:12:52 +0100 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds) |
2020-11-03 05:13:19 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:fd62:d0fd:829a:1233) |
2020-11-03 05:14:12 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-03 05:16:43 +0100 | slack1256 | (~slack1256@181.203.83.173) |
2020-11-03 05:19:52 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-faekvzqkhmohaswr) () |
2020-11-03 05:21:17 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 05:23:19 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-11-03 05:25:13 +0100 | Saukk | (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) |
2020-11-03 05:25:14 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) (Remote host closed the connection) |
2020-11-03 05:25:36 +0100 | slack1256 | (~slack1256@181.203.83.173) (Ping timeout: 265 seconds) |
2020-11-03 05:25:40 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) |
2020-11-03 05:25:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-03 05:26:10 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-03 05:30:43 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 258 seconds) |
2020-11-03 05:31:41 +0100 | lucasb | (uid333435@gateway/web/irccloud.com/x-pojwugqdpwttxqdq) (Quit: Connection closed for inactivity) |
2020-11-03 05:32:16 +0100 | alp | (~alp@2a01:e0a:58b:4920:4ce:2344:89cc:fe25) |
2020-11-03 05:33:38 +0100 | Guest26530 | (83e40214@131.228.2.20) |
2020-11-03 05:34:18 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 05:35:43 +0100 | teardown | (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds) |
2020-11-03 05:36:02 +0100 | brodie | (~textual@207.53.253.137) |
2020-11-03 05:36:13 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2020-11-03 05:43:12 +0100 | teardown | (~user@gateway/tor-sasl/mrush) |
2020-11-03 05:44:01 +0100 | shatriff | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-11-03 05:44:19 +0100 | shatriff | (~vitaliish@176.52.219.10) |
2020-11-03 05:44:49 +0100 | shatriff | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-11-03 05:45:06 +0100 | shatriff | (~vitaliish@176.52.219.10) |
2020-11-03 05:45:13 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) (Quit: sh9) |
2020-11-03 05:45:38 +0100 | shatriff | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-11-03 05:45:59 +0100 | shatriff | (~vitaliish@176.52.219.10) |
2020-11-03 05:46:26 +0100 | shatriff | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-11-03 05:46:42 +0100 | shatriff | (~vitaliish@176.52.219.10) |
2020-11-03 05:47:13 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 05:47:14 +0100 | shatriff | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-11-03 05:47:57 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 05:48:44 +0100 | guest113 | (~user@49.5.6.87) (Ping timeout: 268 seconds) |
2020-11-03 05:51:43 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 05:52:24 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
2020-11-03 05:54:21 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 05:54:54 +0100 | renzhi | (~renzhi@2607:fa49:655f:e600::28da) (Ping timeout: 268 seconds) |
2020-11-03 05:57:44 +0100 | justan0theruser | (~justanoth@unaffiliated/justanotheruser) |
2020-11-03 05:58:04 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds) |
2020-11-03 05:59:47 +0100 | guest113 | (~user@49.5.6.87) |
2020-11-03 05:59:50 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 268 seconds) |
2020-11-03 06:00:11 +0100 | mimi1vx | (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) |
2020-11-03 06:00:55 +0100 | kupi | (uid212005@gateway/web/irccloud.com/x-izotevyprbcyotcz) (Quit: Connection closed for inactivity) |
2020-11-03 06:03:58 +0100 | Saukk | (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection) |
2020-11-03 06:06:58 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 06:11:40 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-11-03 06:12:47 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:fd62:d0fd:829a:1233) (Ping timeout: 268 seconds) |
2020-11-03 06:13:30 +0100 | xff0x | (~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 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-03 06:24:47 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds) |
2020-11-03 06:25:52 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-11-03 06:28:40 +0100 | emmanuel_erc | (~user@2604:2000:1382:ce03:de4:8c90:4e56:e115) |
2020-11-03 06:34:59 +0100 | mimi1vx | (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 268 seconds) |
2020-11-03 06:42:57 +0100 | day_ | (~Unknown@unaffiliated/day) |
2020-11-03 06:46:25 +0100 | day | (~Unknown@unaffiliated/day) (Ping timeout: 264 seconds) |
2020-11-03 06:46:25 +0100 | day_ | day |
2020-11-03 06:47:06 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::2:b4d5) |
2020-11-03 06:47:09 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-03 06:50:52 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 246 seconds) |
2020-11-03 06:52:00 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2020-11-03 06:54:01 +0100 | hackage | egison-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 +0100 | hackage | egison-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 +0100 | BrunoNapoleao | (~BrunoNapo@185.163.110.116) () |
2020-11-03 07:05:12 +0100 | alp | (~alp@2a01:e0a:58b:4920:4ce:2344:89cc:fe25) (Ping timeout: 268 seconds) |
2020-11-03 07:06:34 +0100 | noecho | (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in) |
2020-11-03 07:07:05 +0100 | noecho | (~noecho@2a01:4f8:1c0c:80ee::4223) |
2020-11-03 07:10:08 +0100 | justan0theruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 268 seconds) |
2020-11-03 07:11:06 +0100 | mnrmnaugh | ringzero |
2020-11-03 07:11:42 +0100 | ringzero | mnrmnaugh |
2020-11-03 07:13:48 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-03 07:14:01 +0100 | blissful | (~azuline@unaffiliated/azuline) (Quit: The Lounge - https://thelounge.chat) |
2020-11-03 07:18:43 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds) |
2020-11-03 07:20:19 +0100 | dilinger | (~dilinger@spindle.queued.net) (Remote host closed the connection) |
2020-11-03 07:29:42 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@68.235.43.86) (Quit: Leaving) |
2020-11-03 07:31:54 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-11-03 07:35:35 +0100 | christo | (~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 +0100 | sord937 | (~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 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 07:41:26 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-11-03 07:43:08 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2020-11-03 07:45:50 +0100 | jbox | (~atlas@unaffiliated/jbox) |
2020-11-03 07:46:14 +0100 | teardown | (~user@gateway/tor-sasl/mrush) (Remote host closed the connection) |
2020-11-03 07:46:31 +0100 | teardown | (~user@gateway/tor-sasl/mrush) |
2020-11-03 07:47:41 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-11-03 07:51:18 +0100 | mimi1vx | (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) |
2020-11-03 07:51:46 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 07:53:25 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 07:53:37 +0100 | ocamel | (3263cbdb@50.99.203.219) |
2020-11-03 07:56:24 +0100 | alp | (~alp@2a01:e0a:58b:4920:adca:d707:6534:9087) |
2020-11-03 07:56:30 +0100 | ocamel | (3263cbdb@50.99.203.219) (Remote host closed the connection) |
2020-11-03 07:56:51 +0100 | secdragon1 | (~secdragon@185.204.1.185) |
2020-11-03 07:57:32 +0100 | emnmauiigw^ | (emnmauiigw@ip98-184-89-2.mc.at.cox.net) () |
2020-11-03 07:58:36 +0100 | tsrt^ | (tsrt@ip98-184-89-2.mc.at.cox.net) |
2020-11-03 07:59:09 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2020-11-03 08:00:42 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds) |
2020-11-03 08:01:21 +0100 | mimi_vx | (~mimi@tulipan.habr.nat.praha12.net) |
2020-11-03 08:03:26 +0100 | dilinger | (~dilinger@spindle.queued.net) |
2020-11-03 08:03:38 +0100 | mimi1vx | (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 264 seconds) |
2020-11-03 08:05:55 +0100 | danvet_ | (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) |
2020-11-03 08:06:37 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9) |
2020-11-03 08:06:57 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2020-11-03 08:11:23 +0100 | howdoi | (uid224@gateway/web/irccloud.com/x-gtoygnwcsyvwpslb) (Quit: Connection closed for inactivity) |
2020-11-03 08:20:26 +0100 | thc202 | (~thc202@unaffiliated/thc202) |
2020-11-03 08:22:21 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 08:23:19 +0100 | m0rphism | (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) |
2020-11-03 08:26:26 +0100 | alp | (~alp@2a01:e0a:58b:4920:adca:d707:6534:9087) (Ping timeout: 264 seconds) |
2020-11-03 08:27:20 +0100 | Jonno_FTW | (~come@api.carswap.me) (Ping timeout: 265 seconds) |
2020-11-03 08:28:51 +0100 | jedws | (~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 08:34:08 +0100 | Jonno_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 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-03 08:41:42 +0100 | zaquest | (~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 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-03 08:46:28 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 08:50:11 +0100 | chele | (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) |
2020-11-03 08:51:23 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 08:52:45 +0100 | Franciman | (~francesco@host-79-36-167-172.retail.telecomitalia.it) |
2020-11-03 08:53:41 +0100 | zaquest | (~notzaques@5.128.210.178) |
2020-11-03 08:55:50 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 264 seconds) |
2020-11-03 08:55:53 +0100 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) |
2020-11-03 08:56:27 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-11-03 08:57:40 +0100 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection) |
2020-11-03 09:00:09 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 09:03:59 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-03 09:05:28 +0100 | teardown_ | (~user@gateway/tor-sasl/mrush) |
2020-11-03 09:06:47 +0100 | jelleke | (~jelle@2a01:7c8:aac1:50d:5054:ff:fe3b:9b7d) |
2020-11-03 09:07:29 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) (Remote host closed the connection) |
2020-11-03 09:07:56 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) |
2020-11-03 09:08:43 +0100 | teardown | (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds) |
2020-11-03 09:09:06 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 09:12:50 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-11-03 09:13:15 +0100 | alp | (~alp@88.126.45.36) |
2020-11-03 09:13:45 +0100 | ensyde | (~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 +0100 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer) |
2020-11-03 09:20:01 +0100 | kritzefitz | (~kritzefit@fw-front.credativ.com) |
2020-11-03 09:21:25 +0100 | jbox | (~atlas@unaffiliated/jbox) (Quit: gn o/) |
2020-11-03 09:21:41 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 09:23:09 +0100 | sdrodge | (~sdrodge@unaffiliated/sdrodge) |
2020-11-03 09:24:08 +0100 | guest113 | (~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1)) |
2020-11-03 09:26:38 +0100 | idhugo | (~idhugo@users-1190.st.net.au.dk) |
2020-11-03 09:26:42 +0100 | ensyde | (~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 +0100 | Lord_of_Life | (~Lord@46.217.218.100) (Changing host) |
2020-11-03 09:28:18 +0100 | Lord_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 +0100 | borne | (~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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 09:37:37 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-03 09:38:06 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 09:39:18 +0100 | invaser | (~Thunderbi@31.148.23.125) (Ping timeout: 260 seconds) |
2020-11-03 09:41:10 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-11-03 09:45:02 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 09:45:24 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-11-03 09:45:35 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-03 09:48:28 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2020-11-03 09:48:30 +0100 | shatriff | (~vitaliish@176.52.219.10) |
2020-11-03 09:49:22 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
2020-11-03 09:49:38 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) |
2020-11-03 09:49:59 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds) |
2020-11-03 09:50:27 +0100 | texasmynsted | (~texasmyns@99.96.221.112) |
2020-11-03 09:53:32 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) |
2020-11-03 09:54:41 +0100 | drbean | (~drbean@TC210-63-209-59.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in) |
2020-11-03 09:57:10 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-03 09:57:27 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 10:00:02 +0100 | secdragon1 | (~secdragon@185.204.1.185) () |
2020-11-03 10:00:07 +0100 | materialfuture[m | (materialfu@gateway/shell/matrix.org/x-jvhencngpnxshide) (Quit: Idle for 30+ days) |
2020-11-03 10:00:08 +0100 | steve[m] | (stevetrout@gateway/shell/matrix.org/x-fkuthzdpqeujhzmp) (Quit: Idle for 30+ days) |
2020-11-03 10:02:26 +0100 | fendor__ | fendor |
2020-11-03 10:02:33 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds) |
2020-11-03 10:03:56 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-03 10:07:23 +0100 | Nachtgespenst | (~user@unaffiliated/siracusa) (Quit: Bye!) |
2020-11-03 10:09:22 +0100 | yumh | (~yumh@mail.xglobe.in) |
2020-11-03 10:09:53 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 10:11:04 +0100 | mananamenos | (~mananamen@84.122.202.215.dyn.user.ono.com) |
2020-11-03 10:11:28 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Read error: Connection reset by peer) |
2020-11-03 10:11:36 +0100 | mokulus | (~mat@176.111.230.96) |
2020-11-03 10:11:55 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 10:13:17 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:2eff:cd6c:5e2b:7580) (Ping timeout: 268 seconds) |
2020-11-03 10:13:40 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:27c3:328a:48d4:3117) |
2020-11-03 10:15:17 +0100 | jonatanb | (~jonatanb@83.24.9.26.ipv4.supernova.orange.pl) |
2020-11-03 10:15:52 +0100 | mokulus | (~mat@176.111.230.96) (Client Quit) |
2020-11-03 10:17:22 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-11-03 10:22:29 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-03 10:22:30 +0100 | hackage | protocol-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 +0100 | britva | (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) |
2020-11-03 10:23:30 +0100 | hackage | hprotoc 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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 10:26:10 +0100 | Amras | (~Amras@unaffiliated/amras0000) |
2020-11-03 10:27:21 +0100 | mokulus | (~mat@176.111.230.96) |
2020-11-03 10:29:24 +0100 | jedws | (~jedws@101.184.150.81) |
2020-11-03 10:30:40 +0100 | ensyde | (~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 +0100 | jedws | (~jedws@101.184.150.81) (Client Quit) |
2020-11-03 10:33:58 +0100 | Guest26530 | (83e40214@131.228.2.20) (Remote host closed the connection) |
2020-11-03 10:35:09 +0100 | jedws | (~jedws@101.184.150.81) |
2020-11-03 10:35:32 +0100 | jedws | (~jedws@101.184.150.81) (Client Quit) |
2020-11-03 10:38:08 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 10:40:31 +0100 | hackage | HsOpenSSL 0.11.5 - Partial OpenSSL binding for Haskell https://hackage.haskell.org/package/HsOpenSSL-0.11.5 (VladimirShabanov) |
2020-11-03 10:41:40 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de) |
2020-11-03 10:42:53 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-03 10:44:35 +0100 | danvet_ | (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Quit: Leaving) |
2020-11-03 10:44:42 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-jbpkroausxoplpus) (Quit: Connection closed for inactivity) |
2020-11-03 10:45:03 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) (Ping timeout: 258 seconds) |
2020-11-03 10:45:51 +0100 | jonatan | (~nate@h77-53-70-163.cust.a3fiber.se) |
2020-11-03 10:48:18 +0100 | kuribas | (~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 +0100 | yinfeng | (~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 +0100 | cosimone | (~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 +0100 | ByronT | (~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 +0100 | o1lo01ol1o | (~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 +0100 | z0 | (~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 +0100 | z0 | (~z0@188.251.73.190) |
2020-11-03 10:59:34 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
2020-11-03 10:59:38 +0100 | z0 | Guest77983 |
2020-11-03 10:59:56 +0100 | cosimone | (~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 +0100 | acidjnk_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 +0100 | heatsink | (~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 +0100 | minus[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 +0100 | wwwww | (~wwwww@unaffiliated/wwwww) |
2020-11-03 11:08:45 +0100 | heatsink | (~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 +0100 | lucente | (~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 +0100 | cosimone | (~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 +0100 | cosimone | (~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 +0100 | plutoniix | (~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 +0100 | ambiso9 | (~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 +0100 | ambiso9 | (~ambiso@209.182.239.205) |
2020-11-03 11:23:16 +0100 | raehik | (~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 +0100 | cosimone | (~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 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) (Remote host closed the connection) |
2020-11-03 11:35:16 +0100 | invaser | (~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds) |
2020-11-03 11:37:00 +0100 | hackage | core-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 +0100 | hackage | unbeliever 0.10.0.8, core-program 0.2.6.0, core-data 0.2.1.9 (AndrewCowie) |
2020-11-03 11:40:00 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2020-11-03 11:44:04 +0100 | LKoen | (~LKoen@79.160.9.109.rev.sfr.net) |
2020-11-03 11:46:01 +0100 | hackage | vulkan 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 +0100 | alp | (~alp@88.126.45.36) (Remote host closed the connection) |
2020-11-03 11:47:01 +0100 | hackage | hsemail 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 +0100 | alp | (~alp@2a01:e0a:58b:4920:95d4:1b57:ed86:fe54) |
2020-11-03 11:48:30 +0100 | hackage | update-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 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-03 11:52:04 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 11:52:25 +0100 | raichoo | (~raichoo@213.240.178.58) |
2020-11-03 11:52:49 +0100 | bergsans | (~bergsans@c80-217-8-29.bredband.comhem.se) |
2020-11-03 11:55:10 +0100 | lucente | (~lucente@31.170.86.76) (Quit: Leaving) |
2020-11-03 12:04:50 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) |
2020-11-03 12:06:04 +0100 | alp | (~alp@2a01:e0a:58b:4920:95d4:1b57:ed86:fe54) (Ping timeout: 240 seconds) |
2020-11-03 12:08:17 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-03 12:09:20 +0100 | alp | (~alp@2a01:e0a:58b:4920:65ec:1bbd:4b97:e92d) |
2020-11-03 12:13:03 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
2020-11-03 12:15:13 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) |
2020-11-03 12:17:13 +0100 | LKoen | (~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 +0100 | shatriff | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-11-03 12:17:44 +0100 | Alleria_ | (~AllahuAkb@2604:2000:1484:26:7d65:3be5:43eb:ba0c) (Quit: Textual IRC Client: www.textualapp.com) |
2020-11-03 12:17:55 +0100 | shatriff | (~vitaliish@176.52.219.10) |
2020-11-03 12:21:48 +0100 | idhugo | (~idhugo@users-1190.st.net.au.dk) (Ping timeout: 256 seconds) |
2020-11-03 12:24:00 +0100 | hackage | registry 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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2020-11-03 12:29:41 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 12:29:50 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 12:34:34 +0100 | rprije | (~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 246 seconds) |
2020-11-03 12:34:37 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-11-03 12:34:44 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 12:35:12 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:27c3:328a:48d4:3117) (Ping timeout: 260 seconds) |
2020-11-03 12:35:44 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9) |
2020-11-03 12:35:53 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:5006:d65a:90eb:4407) |
2020-11-03 12:36:22 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 260 seconds) |
2020-11-03 12:37:44 +0100 | teardown | (~user@gateway/tor-sasl/mrush) |
2020-11-03 12:38:36 +0100 | teardown_ | (~user@gateway/tor-sasl/mrush) (Remote host closed the connection) |
2020-11-03 12:38:57 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 12:39:01 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) () |
2020-11-03 12:39:38 +0100 | aarvar | (~foewfoiew@50.35.43.33) (Ping timeout: 265 seconds) |
2020-11-03 12:39:38 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 264 seconds) |
2020-11-03 12:39:47 +0100 | petersen | (~petersen@redhat/juhp) () |
2020-11-03 12:40:08 +0100 | CyB3rW0rm | (~fedora@143.244.38.33) |
2020-11-03 12:43:10 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-03 12:43:37 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-03 12:44:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-03 12:44:19 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2020-11-03 12:46:23 +0100 | Tario | (~Tario@201.192.165.173) |
2020-11-03 12:46:40 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-03 12:47:57 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2020-11-03 12:50:09 +0100 | obihann | (~jhann@156.34.160.69) (Client Quit) |
2020-11-03 12:51:17 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-03 12:51:18 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 12:52:08 +0100 | LKoen | (~LKoen@79.160.9.109.rev.sfr.net) |
2020-11-03 12:52:46 +0100 | da39a3ee5e6b4b0d | (~textual@n11211935170.netvigator.com) |
2020-11-03 12:53:10 +0100 | obihann | (~jhann@156.34.160.69) (Client Quit) |
2020-11-03 12:53:50 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Read error: Connection reset by peer) |
2020-11-03 12:54:02 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-03 12:54:08 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 12:56:01 +0100 | Ranhir | (~Ranhir@157.97.53.139) (Remote host closed the connection) |
2020-11-03 12:59:09 +0100 | drbean | (~drbean@TC210-63-209-173.static.apol.com.tw) |
2020-11-03 12:59:11 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de) |
2020-11-03 12:59:28 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-03 13:00:01 +0100 | ByronT | (~ByronT@154.13.1.56) () |
2020-11-03 13:01:11 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de) (Client Quit) |
2020-11-03 13:05:16 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de) |
2020-11-03 13:06:23 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 13:07:27 +0100 | pera | (~pera@unaffiliated/pera) |
2020-11-03 13:07:59 +0100 | MaoZeDong_ | (~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d) |
2020-11-03 13:11:01 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-03 13:13:04 +0100 | MaoZeDong_ | (~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d) (Ping timeout: 240 seconds) |
2020-11-03 13:15:58 +0100 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection) |
2020-11-03 13:17:00 +0100 | idhugo | (~idhugo@users-1190.st.net.au.dk) |
2020-11-03 13:17:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 13:17:04 +0100 | obihann | (~jhann@156.34.160.69) (Quit: Lost terminal) |
2020-11-03 13:17:28 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-03 13:17:53 +0100 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) |
2020-11-03 13:18:12 +0100 | Deide | (~Deide@217.155.19.23) |
2020-11-03 13:19:24 +0100 | Kaeipi | (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) |
2020-11-03 13:20:13 +0100 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection) |
2020-11-03 13:20:45 +0100 | TMA | (tma@twin.jikos.cz) (Ping timeout: 240 seconds) |
2020-11-03 13:21:56 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-03 13:22:05 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds) |
2020-11-03 13:24:19 +0100 | miladz68 | (~manjaro-u@static.84.147.251.148.clients.your-server.de) |
2020-11-03 13:24:35 +0100 | perrier-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 +0100 | Aquazi | (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 +0100 | ensyde | (~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 +0100 | alp | (~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 +0100 | alp | (~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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 268 seconds) |
2020-11-03 13:40:33 +0100 | Kaeipi | (~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 +0100 | xerox_ | (~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 +0100 | hackage | lsp-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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 13:48:07 +0100 | Amras | (~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 +0100 | Kaiepi | (~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 +0100 | mmohammadi9812 | (~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 +0100 | mmohammadi9812 | (~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 +0100 | ensyde | (~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 +0100 | mmohammadi9812 | (~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 +0100 | mmohammadi9812 | (~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 +0100 | piyush-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 +0100 | ghghghgh | (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 +0100 | zoran119 | (~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 +0100 | AlterEgo- | (~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 +0100 | ensyde | (~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 +0100 | p-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 +0100 | cfricke | (~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 +0100 | ensyde | (~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 +0100 | urodna | (~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 +0100 | mmohammadi9812 | (~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 +0100 | heatsink | (~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 +0100 | alp | (~alp@2a01:e0a:58b:4920:2923:faed:144a:c0cf) (Ping timeout: 272 seconds) |
2020-11-03 14:07:47 +0100 | ghghghgh | (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 +0100 | mmohammadi9812 | (~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 +0100 | ahmr88 | (~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 +0100 | Rudd0 | (~Rudd0@185.189.115.98) (Ping timeout: 272 seconds) |
2020-11-03 14:11:52 +0100 | heatsink | (~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 +0100 | CyB3rW0rm | (~fedora@143.244.38.33) ("Leaving") |
2020-11-03 14:12:34 +0100 | xerox_ | (~xerox@unaffiliated/xerox) |
2020-11-03 14:12:41 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-03 14:12:50 +0100 | ensyde | (~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 +0100 | macrover | (~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 +0100 | ensyde | (~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 +0100 | lucasb | (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 +0100 | geekosaur | (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 +0100 | piyush-kurur | (~user@14.139.174.50) (Ping timeout: 264 seconds) |
2020-11-03 14:30:55 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
2020-11-03 14:31:14 +0100 | p-core | (~Thunderbi@193.165.236.104) (Ping timeout: 264 seconds) |
2020-11-03 14:33:35 +0100 | revtintin | (~revtintin@158.140.144.34) |
2020-11-03 14:35:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: leaving) |
2020-11-03 14:35:50 +0100 | jonatanb | (~jonatanb@83.24.9.26.ipv4.supernova.orange.pl) (Quit: Leaving...) |
2020-11-03 14:38:04 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) |
2020-11-03 14:39:16 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
2020-11-03 14:40:15 +0100 | britva | (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Quit: This computer has gone to sleep) |
2020-11-03 14:42:24 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-03 14:44:35 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-03 14:47:02 +0100 | privalovy_lekvar | hexic |
2020-11-03 14:48:28 +0100 | drbean | (~drbean@TC210-63-209-173.static.apol.com.tw) (Ping timeout: 260 seconds) |
2020-11-03 14:49:33 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-03 14:54:00 +0100 | machinedgod | (~machinedg@207.253.244.210) |
2020-11-03 14:57:02 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 14:57:38 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) |
2020-11-03 14:58:03 +0100 | Ranhir | (~Ranhir@157.97.53.139) |
2020-11-03 14:58:24 +0100 | acidjnk_new2 | (~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-03 14:59:33 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection) |
2020-11-03 14:59:44 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) |
2020-11-03 15:00:34 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Client Quit) |
2020-11-03 15:03:43 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
2020-11-03 15:05:28 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) |
2020-11-03 15:08:54 +0100 | avdb | (~avdb@ip-83-134-109-138.dsl.scarlet.be) |
2020-11-03 15:11:01 +0100 | thunderrd | (~thunderrd@183.182.115.112) (Remote host closed the connection) |
2020-11-03 15:11:38 +0100 | daydaynatation | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2020-11-03 15:11:44 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-xutwnldhztnzggtn) (Quit: Connection closed for inactivity) |
2020-11-03 15:12:07 +0100 | xff0x | (~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 +0100 | ggole | (~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 +0100 | xff0x | (~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 +0100 | alp | (~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 +0100 | thunderrd | (~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 +0100 | merijn | (~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 +0100 | jjhoo | (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 +0100 | ddellacosta | (~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 +0100 | jjhoo | (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 +0100 | p-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 +0100 | acidjnk_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 +0100 | jil` | (~user@45.86.162.6) ("ERC (IRC client for Emacs 26.1)") |
2020-11-03 15:31:03 +0100 | elfets | (~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 +0100 | pavonia | (~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 +0100 | chaosmasttter | (~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 +0100 | MaoZeDong_ | (~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 +0100 | daydaynatation | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Read error: No route to host) |
2020-11-03 15:42:44 +0100 | christo | (~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 +0100 | geekosaur | (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 +0100 | PyroLagus | (PyroLagus@i.have.ipv6.on.coding4coffee.org) (Ping timeout: 246 seconds) |
2020-11-03 15:48:08 +0100 | PyroLagus | (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 +0100 | Eason0210 | (~user@101.85.10.81) |
2020-11-03 15:49:48 +0100 | macrover | (~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 +0100 | Guest8822 | (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 +0100 | jokester | (~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 +0100 | domenkozar[m] | (domenkozar@NixOS/user/domenkozar) (*.net *.split) |
2020-11-03 15:54:52 +0100 | cstrahan | (sid36118@gateway/web/irccloud.com/x-mfvjnlhprdhvdyaw) (*.net *.split) |
2020-11-03 15:54:52 +0100 | eacameron | (sid256985@gateway/web/irccloud.com/x-trisvivfbojkcgwh) (*.net *.split) |
2020-11-03 15:54:53 +0100 | jlv | (jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz) (*.net *.split) |
2020-11-03 15:54:53 +0100 | ttc | (tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb) (*.net *.split) |
2020-11-03 15:54:53 +0100 | bonvoyage[m] | (bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub) (*.net *.split) |
2020-11-03 15:54:53 +0100 | iinuwa | (iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg) (*.net *.split) |
2020-11-03 15:54:53 +0100 | Fernando-Basso[m | (fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt) (*.net *.split) |
2020-11-03 15:54:53 +0100 | theduke | (thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel) (*.net *.split) |
2020-11-03 15:54:53 +0100 | Ericson2314 | (ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi) (*.net *.split) |
2020-11-03 15:54:53 +0100 | Klumben | (Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso) (*.net *.split) |
2020-11-03 15:54:53 +0100 | whez | (uid470288@gateway/web/irccloud.com/x-malcqwiljeridksp) (*.net *.split) |
2020-11-03 15:54:53 +0100 | yushyin | (5rFdtsVUm7@karif.server-speed.net) (*.net *.split) |
2020-11-03 15:54:53 +0100 | sud0 | (~Death@hackspaceuy/member/sud0) (*.net *.split) |
2020-11-03 15:54:53 +0100 | sm | (~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 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-11-03 15:55:24 +0100 | acidjnk_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 +0100 | domenkozar[m] | (domenkozar@NixOS/user/domenkozar) |
2020-11-03 15:55:56 +0100 | cstrahan | (sid36118@gateway/web/irccloud.com/x-mfvjnlhprdhvdyaw) |
2020-11-03 15:55:56 +0100 | eacameron | (sid256985@gateway/web/irccloud.com/x-trisvivfbojkcgwh) |
2020-11-03 15:55:56 +0100 | jlv | (jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz) |
2020-11-03 15:55:56 +0100 | Fernando-Basso[m | (fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt) |
2020-11-03 15:55:56 +0100 | iinuwa | (iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg) |
2020-11-03 15:55:56 +0100 | theduke | (thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel) |
2020-11-03 15:55:56 +0100 | ttc | (tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb) |
2020-11-03 15:55:56 +0100 | bonvoyage[m] | (bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub) |
2020-11-03 15:55:56 +0100 | Ericson2314 | (ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi) |
2020-11-03 15:55:56 +0100 | Klumben | (Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso) |
2020-11-03 15:55:56 +0100 | whez | (uid470288@gateway/web/irccloud.com/x-malcqwiljeridksp) |
2020-11-03 15:55:56 +0100 | yushyin | (5rFdtsVUm7@karif.server-speed.net) |
2020-11-03 15:55:56 +0100 | sud0 | (~Death@hackspaceuy/member/sud0) |
2020-11-03 15:55:56 +0100 | sm | (~user@li229-222.members.linode.com) |
2020-11-03 15:56:10 +0100 | Ericson2314 | (ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi) (Max SendQ exceeded) |
2020-11-03 15:56:10 +0100 | Klumben | (Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso) (Max SendQ exceeded) |
2020-11-03 15:56:41 +0100 | alp | (~alp@2a01:e0a:58b:4920:5584:7343:90a1:2565) (Ping timeout: 272 seconds) |
2020-11-03 15:57:03 +0100 | maralorn | (maralornma@gateway/shell/matrix.org/x-pkelfgrohvpzfolu) (Ping timeout: 244 seconds) |
2020-11-03 15:57:03 +0100 | mikr[m] | (mikrdavral@gateway/shell/matrix.org/x-jnlucypbifmucvfy) (Ping timeout: 244 seconds) |
2020-11-03 15:57:03 +0100 | wrunt[m] | (wruntmatri@gateway/shell/matrix.org/x-tobpdugmvlykanbe) (Ping timeout: 244 seconds) |
2020-11-03 15:57:03 +0100 | betrion[m] | (betrionmat@gateway/shell/matrix.org/x-dsrbaapqpyafsbmj) (Ping timeout: 244 seconds) |
2020-11-03 15:57:03 +0100 | psydruid | (psydruidma@gateway/shell/matrix.org/x-uodtpvngjfwtuggt) (Ping timeout: 244 seconds) |
2020-11-03 15:57:08 +0100 | michaelpj | (michaelpjm@gateway/shell/matrix.org/x-oigadqxzdyumsikb) (Ping timeout: 246 seconds) |
2020-11-03 15:57:08 +0100 | tersetears[m] | (tersetears@gateway/shell/matrix.org/x-njimwnsggeorbzzd) (Ping timeout: 246 seconds) |
2020-11-03 15:57:09 +0100 | sm[m] | (simonmicma@gateway/shell/matrix.org/x-tilmtmvnszzwjtcv) (Ping timeout: 246 seconds) |
2020-11-03 15:57:09 +0100 | unclechu | (unclechuma@gateway/shell/matrix.org/x-lcvlyrcvcccjaofs) (Ping timeout: 246 seconds) |
2020-11-03 15:57:10 +0100 | Fernando-Basso[m | (fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt) (Ping timeout: 246 seconds) |
2020-11-03 15:57:17 +0100 | mmynsted[m] | (mmynstedtc@gateway/shell/matrix.org/x-zszjcyokedzkvvvw) (Ping timeout: 260 seconds) |
2020-11-03 15:57:17 +0100 | chreekat[m] | (chreekatma@gateway/shell/matrix.org/x-tbcdmvvmfcadbfxu) (Ping timeout: 260 seconds) |
2020-11-03 15:57:24 +0100 | jesser[m] | (jessermatr@gateway/shell/matrix.org/x-fexhchkhagwtqfyl) (Ping timeout: 240 seconds) |
2020-11-03 15:57:26 +0100 | dyniec[m] | (dyniecmatr@gateway/shell/matrix.org/x-bqlbscrkasptvecc) (Ping timeout: 240 seconds) |
2020-11-03 15:57:26 +0100 | alexfmpe | (alexfmpema@gateway/shell/matrix.org/x-puehpfgruzmxylyx) (Ping timeout: 240 seconds) |
2020-11-03 15:57:26 +0100 | PotatoHatsue|T | (berbermanm@gateway/shell/matrix.org/x-tramsdhygfziwosr) (Ping timeout: 240 seconds) |
2020-11-03 15:57:26 +0100 | texasmynsted[m]1 | (mmynstedko@gateway/shell/matrix.org/x-vggryrjyagxthgpr) (Ping timeout: 240 seconds) |
2020-11-03 15:57:29 +0100 | wi[m] | (w1gzmatrix@gateway/shell/matrix.org/x-yfarknebhuzfmgwp) (Ping timeout: 270 seconds) |
2020-11-03 15:57:29 +0100 | srid | (sridmatrix@gateway/shell/matrix.org/x-mkesouyylxzbcafd) (Ping timeout: 244 seconds) |
2020-11-03 15:57:29 +0100 | themsay[m] | (themsaymat@gateway/shell/matrix.org/x-bqmyhbzuevubqaxn) (Ping timeout: 244 seconds) |
2020-11-03 15:57:29 +0100 | jkaye[m] | (jkayematri@gateway/shell/matrix.org/x-cptxfbojabslrjcy) (Ping timeout: 244 seconds) |
2020-11-03 15:57:29 +0100 | DeadComaGrayce[m | (commagra1@gateway/shell/matrix.org/x-iuyehmrmzolqbndz) (Ping timeout: 270 seconds) |
2020-11-03 15:57:30 +0100 | jtojnar | (jtojnarmat@gateway/shell/matrix.org/x-vxxxfyeqdpvmztqw) (Ping timeout: 270 seconds) |
2020-11-03 15:57:30 +0100 | siraben | (sirabenmat@gateway/shell/matrix.org/x-bcyjzribfqthehto) (Ping timeout: 270 seconds) |
2020-11-03 15:57:30 +0100 | domenkozar[m] | (domenkozar@NixOS/user/domenkozar) (Ping timeout: 246 seconds) |
2020-11-03 15:57:30 +0100 | iinuwa | (iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg) (Ping timeout: 246 seconds) |
2020-11-03 15:57:34 +0100 | jeffcasavant[m] | (jeffcasava@gateway/shell/matrix.org/x-dhyacoeojdbhkueh) (Ping timeout: 244 seconds) |
2020-11-03 15:57:34 +0100 | micahsovereign[m | (micahsover@gateway/shell/matrix.org/x-dxdibhjjyybodwbc) (Ping timeout: 244 seconds) |
2020-11-03 15:57:37 +0100 | lnxw37d4 | (lnxw37d4ma@gateway/shell/matrix.org/x-amgtuukfolghuwuq) (Ping timeout: 260 seconds) |
2020-11-03 15:57:38 +0100 | Guest8822 | (562d675a@86-45-103-90-dynamic.agg2.ddk.dbc-mgr.eircom.net) (Remote host closed the connection) |
2020-11-03 15:57:49 +0100 | nkly | (~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 +0100 | yushyin | (5rFdtsVUm7@karif.server-speed.net) (Ping timeout: 241 seconds) |
2020-11-03 15:58:12 +0100 | MaoZeDong_ | (~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d) (Ping timeout: 260 seconds) |
2020-11-03 15:58:54 +0100 | bonvoyage[m] | (bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub) (Ping timeout: 246 seconds) |
2020-11-03 15:58:54 +0100 | theduke | (thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel) (Ping timeout: 246 seconds) |
2020-11-03 15:58:55 +0100 | alvinsj[m] | (alvinsjmat@gateway/shell/matrix.org/x-vcggqutodlsvbbci) (Ping timeout: 240 seconds) |
2020-11-03 15:59:08 +0100 | tttom[m] | (tttommatri@gateway/shell/matrix.org/x-kshxzzwtqhpqbsjt) (Ping timeout: 244 seconds) |
2020-11-03 15:59:14 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 268 seconds) |
2020-11-03 15:59:15 +0100 | kadoban | (kadobanmat@gateway/shell/matrix.org/x-ibzwjrmlfzihcpnq) (Ping timeout: 246 seconds) |
2020-11-03 15:59:15 +0100 | fgaz | (fgazmatrix@gateway/shell/matrix.org/x-nobvbpoimoorjizw) (Ping timeout: 246 seconds) |
2020-11-03 15:59:15 +0100 | ComaGrayce[m] | (commagrays@gateway/shell/matrix.org/x-hjwgivbycspfkazw) (Ping timeout: 246 seconds) |
2020-11-03 15:59:15 +0100 | PotatoHatsue | (berbermanp@gateway/shell/matrix.org/x-bglrmgugemmlkftz) (Ping timeout: 246 seconds) |
2020-11-03 15:59:15 +0100 | kaychaks_riot | (kaychaksma@gateway/shell/matrix.org/x-stbwfkzfrvvzbyzd) (Ping timeout: 246 seconds) |
2020-11-03 15:59:16 +0100 | jlv | (jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz) (Ping timeout: 246 seconds) |
2020-11-03 15:59:16 +0100 | ttc | (tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb) (Ping timeout: 246 seconds) |
2020-11-03 15:59:22 +0100 | elpfen[m] | (elpfenmatr@gateway/shell/matrix.org/x-qyxfulwurvxvqcrl) (Ping timeout: 260 seconds) |
2020-11-03 15:59:25 +0100 | loprakoa[m] | (loprakoama@gateway/shell/matrix.org/x-xavaolgsmkbljkqt) (Ping timeout: 240 seconds) |
2020-11-03 15:59:25 +0100 | jiribenes1 | (jbjiribene@gateway/shell/matrix.org/x-fxavqhwgliqrsecu) (Ping timeout: 240 seconds) |
2020-11-03 15:59:27 +0100 | rednaZ[m] | (r3dnazmatr@gateway/shell/matrix.org/x-fbgpcbpvvdvwhhpb) (Ping timeout: 240 seconds) |
2020-11-03 15:59:33 +0100 | sureyeaah | (shauryab98@gateway/shell/matrix.org/x-yafeivvctuhylrnm) (Ping timeout: 244 seconds) |
2020-11-03 15:59:37 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) |
2020-11-03 15:59:37 +0100 | hnOsmium0001[m] | (hnosmium00@gateway/shell/matrix.org/x-sshchogyivlmgodc) (Ping timeout: 246 seconds) |
2020-11-03 15:59:38 +0100 | berberman|T | (berberma4@gateway/shell/matrix.org/x-wnomaozyraumizpd) (Ping timeout: 244 seconds) |
2020-11-03 15:59:38 +0100 | ThaEwat | (thaewraptm@gateway/shell/matrix.org/x-pssqkgzdxqqfosjg) (Ping timeout: 244 seconds) |
2020-11-03 15:59:39 +0100 | hsiktas[m] | (hsiktasmat@gateway/shell/matrix.org/x-spblkboyxhqoardh) (Ping timeout: 244 seconds) |
2020-11-03 15:59:39 +0100 | zerstroyer[m] | (zerstroyer@gateway/shell/matrix.org/x-yllnormoxnelwrvi) (Ping timeout: 244 seconds) |
2020-11-03 15:59:51 +0100 | pqwy[m] | (pqwymatrix@gateway/shell/matrix.org/x-htkzhbylfcdwfzyr) (Ping timeout: 272 seconds) |
2020-11-03 15:59:51 +0100 | drozdziak1 | (drozdziak1@gateway/shell/matrix.org/x-vtaixfecibczpgem) (Ping timeout: 272 seconds) |
2020-11-03 16:00:44 +0100 | nkly | (~nkly@ip5b40d080.dynamic.kabel-deutschland.de) |
2020-11-03 16:02:01 +0100 | Rembane | (~Rembane@li346-36.members.linode.com) (Ping timeout: 264 seconds) |
2020-11-03 16:02:23 +0100 | Rembane | (~Rembane@li346-36.members.linode.com) |
2020-11-03 16:02:23 +0100 | lambdaclan | (lambdaclan@gateway/shell/matrix.org/x-gzshwuftlgessnhs) (Ping timeout: 272 seconds) |
2020-11-03 16:03:01 +0100 | johnnyboy[m] | (gifumatrix@gateway/shell/matrix.org/x-bwnfdzeafqubfksm) (Ping timeout: 272 seconds) |
2020-11-03 16:04:12 +0100 | mokulus | (~mat@176.111.230.96) (Quit: WeeChat 2.9) |
2020-11-03 16:04:28 +0100 | mokulus | (~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 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-03 16:06:02 +0100 | yushyin | (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 +0100 | da39a3ee5e6b4b0d | (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 16:07:08 +0100 | idhugo | (~idhugo@users-1190.st.net.au.dk) (Ping timeout: 260 seconds) |
2020-11-03 16:09:00 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 16:09:26 +0100 | MaoZeDong_ | (~yuri@2a00:1370:8135:4003:a125:a313:30a7:dda3) |
2020-11-03 16:09:29 +0100 | Klumben | (Nsaiswatch@gateway/shell/panicbnc/x-mkcnlvblwjhyiwoj) |
2020-11-03 16:12:05 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Ping timeout: 240 seconds) |
2020-11-03 16:13:25 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-03 16:13:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 16:14:02 +0100 | p-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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-03 16:19:20 +0100 | mimi_vx | (~mimi@tulipan.habr.nat.praha12.net) (Remote host closed the connection) |
2020-11-03 16:21:18 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-glpnpeqsowfdqxrb) |
2020-11-03 16:21:28 +0100 | jackgassett | (~jackgasse@185.163.110.116) |
2020-11-03 16:22:53 +0100 | MaoZeDong_ | (~yuri@2a00:1370:8135:4003:a125:a313:30a7:dda3) (Quit: Leaving) |
2020-11-03 16:22:57 +0100 | knupfer | (~Thunderbi@200116b82c33f500f4acd2fffe0c2764.dip.versatel-1u1.de) |
2020-11-03 16:22:58 +0100 | knupfer | (~Thunderbi@200116b82c33f500f4acd2fffe0c2764.dip.versatel-1u1.de) (Client Quit) |
2020-11-03 16:23:11 +0100 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) |
2020-11-03 16:23:13 +0100 | ulidtko | (~ulidtko@193.111.48.79) |
2020-11-03 16:23:13 +0100 | knupfer | (~Thunderbi@i59F7FFF1.versanet.de) |
2020-11-03 16:23:40 +0100 | ensyde | (~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 +0100 | texasmynsted[m]1 | (mmynstedko@gateway/shell/matrix.org/x-hplokyjomowficph) |
2020-11-03 16:26:44 +0100 | themsay[m] | (themsaymat@gateway/shell/matrix.org/x-bonuvacpysczvweb) |
2020-11-03 16:26:50 +0100 | siraben | (sirabenmat@gateway/shell/matrix.org/x-pylemoygyzvfnqwz) |
2020-11-03 16:26:50 +0100 | alexfmpe | (alexfmpema@gateway/shell/matrix.org/x-glaqqlztankdgtop) |
2020-11-03 16:26:50 +0100 | dyniec[m] | (dyniecmatr@gateway/shell/matrix.org/x-hlniwidnojwpljwr) |
2020-11-03 16:26:51 +0100 | sm[m] | (simonmicma@gateway/shell/matrix.org/x-fnotdmzbnwicmhbr) |
2020-11-03 16:26:51 +0100 | mikr[m] | (mikrdavral@gateway/shell/matrix.org/x-dsykslkvwomhqqky) |
2020-11-03 16:26:51 +0100 | wrunt[m] | (wruntmatri@gateway/shell/matrix.org/x-idianarugrpsngxu) |
2020-11-03 16:26:52 +0100 | tersetears[m] | (tersetears@gateway/shell/matrix.org/x-xwkpjjikyvpgofyv) |
2020-11-03 16:26:52 +0100 | wi[m] | (w1gzmatrix@gateway/shell/matrix.org/x-qadybggtytyfvgiq) |
2020-11-03 16:26:52 +0100 | michaelpj | (michaelpjm@gateway/shell/matrix.org/x-qlfptiejrcydnwwk) |
2020-11-03 16:26:52 +0100 | jkaye[m] | (jkayematri@gateway/shell/matrix.org/x-lwpfhzdgppnfhaga) |
2020-11-03 16:26:52 +0100 | betrion[m] | (betrionmat@gateway/shell/matrix.org/x-axyffpqdcjljltip) |
2020-11-03 16:26:52 +0100 | jesser[m] | (jessermatr@gateway/shell/matrix.org/x-viisemtsepvgkslw) |
2020-11-03 16:26:53 +0100 | jeffcasavant[m] | (jeffcasava@gateway/shell/matrix.org/x-rqkxfgplxmrihcgx) |
2020-11-03 16:26:53 +0100 | srid | (sridmatrix@gateway/shell/matrix.org/x-egwyjxskwuhfbugd) |
2020-11-03 16:26:53 +0100 | DeadComaGrayce[m | (commagra1@gateway/shell/matrix.org/x-yxecycrnierjfljs) |
2020-11-03 16:26:53 +0100 | mmynsted[m] | (mmynstedtc@gateway/shell/matrix.org/x-yzuwbyvnpglbzbuy) |
2020-11-03 16:26:54 +0100 | micahsovereign[m | (micahsover@gateway/shell/matrix.org/x-tvaivucbnrwbatxd) |
2020-11-03 16:26:55 +0100 | chreekat[m] | (chreekatma@gateway/shell/matrix.org/x-llkuwfbcjnljizdi) |
2020-11-03 16:26:55 +0100 | lnxw37d4 | (lnxw37d4ma@gateway/shell/matrix.org/x-schvzqwnlrsjfkgy) |
2020-11-03 16:26:55 +0100 | maralorn | (maralornma@gateway/shell/matrix.org/x-hwtcfzlybldpjabd) |
2020-11-03 16:26:57 +0100 | unclechu | (unclechuma@gateway/shell/matrix.org/x-pzojqnawucwivbrx) |
2020-11-03 16:27:02 +0100 | jtojnar | (jtojnarmat@gateway/shell/matrix.org/x-elxfudyszzzuhhna) |
2020-11-03 16:27:48 +0100 | psydruid | (psydruidma@gateway/shell/matrix.org/x-ophphfesyzdfljdq) |
2020-11-03 16:27:48 +0100 | TMA | (tma@twin.jikos.cz) |
2020-11-03 16:28:17 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-11-03 16:30:18 +0100 | wroathe | (~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 +0100 | PotatoHatsue|T | (berbermanm@gateway/shell/matrix.org/x-mnxsevwkuntepnch) |
2020-11-03 16:32:13 +0100 | PotatoHatsue | (berbermanp@gateway/shell/matrix.org/x-ueozaawewwujnohw) |
2020-11-03 16:32:32 +0100 | xff0x | (~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 +0100 | domenkozar[m] | (domenkozar@NixOS/user/domenkozar) |
2020-11-03 16:34:52 +0100 | iinuwa | (iinuwamatr@gateway/shell/matrix.org/x-gxbjrfuwzerbbyfp) |
2020-11-03 16:35:27 +0100 | solonarv | (~solonarv@adijon-656-1-31-12.w90-13.abo.wanadoo.fr) |
2020-11-03 16:36:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 16:37:14 +0100 | Eason0210 | (~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50)) |
2020-11-03 16:38:15 +0100 | bonvoyage[m] | (bonvoyageu@gateway/shell/matrix.org/x-stbisqjpnwsozoeo) |
2020-11-03 16:38:17 +0100 | theduke | (thedukem1@gateway/shell/matrix.org/x-aqlsdouachfkrhez) |
2020-11-03 16:38:46 +0100 | ttc | (tomtauma1@gateway/shell/matrix.org/x-ekakabsstkyokkxj) |
2020-11-03 16:39:17 +0100 | jlv | (jlvjustinl@gateway/shell/matrix.org/x-wvbfemgwzknbgjod) |
2020-11-03 16:40:17 +0100 | conal | (~conal@64.71.133.70) |
2020-11-03 16:40:25 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-03 16:40:52 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-03 16:40:53 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-11-03 16:42:39 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-03 16:42:45 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-03 16:43:30 +0100 | loprakoa[m] | (loprakoama@gateway/shell/matrix.org/x-tnuljvchikruvhvw) |
2020-11-03 16:43:31 +0100 | jiribenes1 | (jbjiribene@gateway/shell/matrix.org/x-axffvnsgpboxhtcg) |
2020-11-03 16:43:31 +0100 | johnnyboy[m] | (gifumatrix@gateway/shell/matrix.org/x-npyuwrvjfblnwfqj) |
2020-11-03 16:43:31 +0100 | tttom[m] | (tttommatri@gateway/shell/matrix.org/x-piwzfyinjzjgieef) |
2020-11-03 16:43:31 +0100 | kaychaks_riot | (kaychaksma@gateway/shell/matrix.org/x-srldqoniwbppskpm) |
2020-11-03 16:43:32 +0100 | pqwy[m] | (pqwymatrix@gateway/shell/matrix.org/x-utkkbuxvjzjrabza) |
2020-11-03 16:43:32 +0100 | elpfen[m] | (elpfenmatr@gateway/shell/matrix.org/x-fdpiaofjooaqrbtu) |
2020-11-03 16:43:32 +0100 | ComaGrayce[m] | (commagrays@gateway/shell/matrix.org/x-tdwomzfumhlkeioe) |
2020-11-03 16:43:33 +0100 | alvinsj[m] | (alvinsjmat@gateway/shell/matrix.org/x-usudjdrgxuyyqamj) |
2020-11-03 16:43:35 +0100 | kadoban | (kadobanmat@gateway/shell/matrix.org/x-btxwrgfxkibtqnsg) |
2020-11-03 16:43:44 +0100 | rednaZ[m] | (r3dnazmatr@gateway/shell/matrix.org/x-ybiigbogxoenpsye) |
2020-11-03 16:43:48 +0100 | fgaz | (fgazmatrix@gateway/shell/matrix.org/x-yxpvnieelsdvnidh) |
2020-11-03 16:43:50 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
2020-11-03 16:43:59 +0100 | sfvm | (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine) |
2020-11-03 16:45:31 +0100 | Fernando-Basso[m | (fernando-b@gateway/shell/matrix.org/x-yzwruqrfgsamuhyb) |
2020-11-03 16:47:01 +0100 | texasmynsted[m]1 | (mmynstedko@gateway/shell/matrix.org/x-hplokyjomowficph) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | themsay[m] | (themsaymat@gateway/shell/matrix.org/x-bonuvacpysczvweb) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | siraben | (sirabenmat@gateway/shell/matrix.org/x-pylemoygyzvfnqwz) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | sm[m] | (simonmicma@gateway/shell/matrix.org/x-fnotdmzbnwicmhbr) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | michaelpj | (michaelpjm@gateway/shell/matrix.org/x-qlfptiejrcydnwwk) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | DeadComaGrayce[m | (commagra1@gateway/shell/matrix.org/x-yxecycrnierjfljs) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | unclechu | (unclechuma@gateway/shell/matrix.org/x-pzojqnawucwivbrx) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | tersetears[m] | (tersetears@gateway/shell/matrix.org/x-xwkpjjikyvpgofyv) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | betrion[m] | (betrionmat@gateway/shell/matrix.org/x-axyffpqdcjljltip) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | chreekat[m] | (chreekatma@gateway/shell/matrix.org/x-llkuwfbcjnljizdi) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | maralorn | (maralornma@gateway/shell/matrix.org/x-hwtcfzlybldpjabd) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:01 +0100 | wi[m] | (w1gzmatrix@gateway/shell/matrix.org/x-qadybggtytyfvgiq) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | lnxw37d4 | (lnxw37d4ma@gateway/shell/matrix.org/x-schvzqwnlrsjfkgy) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | dyniec[m] | (dyniecmatr@gateway/shell/matrix.org/x-hlniwidnojwpljwr) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | micahsovereign[m | (micahsover@gateway/shell/matrix.org/x-tvaivucbnrwbatxd) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | psydruid | (psydruidma@gateway/shell/matrix.org/x-ophphfesyzdfljdq) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | alexfmpe | (alexfmpema@gateway/shell/matrix.org/x-glaqqlztankdgtop) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | jkaye[m] | (jkayematri@gateway/shell/matrix.org/x-lwpfhzdgppnfhaga) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | mmynsted[m] | (mmynstedtc@gateway/shell/matrix.org/x-yzuwbyvnpglbzbuy) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | wrunt[m] | (wruntmatri@gateway/shell/matrix.org/x-idianarugrpsngxu) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | mikr[m] | (mikrdavral@gateway/shell/matrix.org/x-dsykslkvwomhqqky) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | jesser[m] | (jessermatr@gateway/shell/matrix.org/x-viisemtsepvgkslw) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | jtojnar | (jtojnarmat@gateway/shell/matrix.org/x-elxfudyszzzuhhna) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | jeffcasavant[m] | (jeffcasava@gateway/shell/matrix.org/x-rqkxfgplxmrihcgx) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:02 +0100 | srid | (sridmatrix@gateway/shell/matrix.org/x-egwyjxskwuhfbugd) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:05 +0100 | PotatoHatsue|T | (berbermanm@gateway/shell/matrix.org/x-mnxsevwkuntepnch) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:06 +0100 | domenkozar[m] | (domenkozar@NixOS/user/domenkozar) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:06 +0100 | bonvoyage[m] | (bonvoyageu@gateway/shell/matrix.org/x-stbisqjpnwsozoeo) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:06 +0100 | theduke | (thedukem1@gateway/shell/matrix.org/x-aqlsdouachfkrhez) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:08 +0100 | kaychaks_riot | (kaychaksma@gateway/shell/matrix.org/x-srldqoniwbppskpm) (Client Quit) |
2020-11-03 16:47:08 +0100 | elpfen[m] | (elpfenmatr@gateway/shell/matrix.org/x-fdpiaofjooaqrbtu) (Client Quit) |
2020-11-03 16:47:08 +0100 | ComaGrayce[m] | (commagrays@gateway/shell/matrix.org/x-tdwomzfumhlkeioe) (Client Quit) |
2020-11-03 16:47:08 +0100 | pqwy[m] | (pqwymatrix@gateway/shell/matrix.org/x-utkkbuxvjzjrabza) (Client Quit) |
2020-11-03 16:47:08 +0100 | fgaz | (fgazmatrix@gateway/shell/matrix.org/x-yxpvnieelsdvnidh) (Client Quit) |
2020-11-03 16:47:09 +0100 | alvinsj[m] | (alvinsjmat@gateway/shell/matrix.org/x-usudjdrgxuyyqamj) (Client Quit) |
2020-11-03 16:47:09 +0100 | PotatoHatsue | (berbermanp@gateway/shell/matrix.org/x-ueozaawewwujnohw) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:09 +0100 | iinuwa | (iinuwamatr@gateway/shell/matrix.org/x-gxbjrfuwzerbbyfp) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:10 +0100 | jlv | (jlvjustinl@gateway/shell/matrix.org/x-wvbfemgwzknbgjod) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:10 +0100 | Fernando-Basso[m | (fernando-b@gateway/shell/matrix.org/x-yzwruqrfgsamuhyb) (Client Quit) |
2020-11-03 16:47:10 +0100 | ttc | (tomtauma1@gateway/shell/matrix.org/x-ekakabsstkyokkxj) (Quit: Bridge terminating on SIGTERM) |
2020-11-03 16:47:10 +0100 | rednaZ[m] | (r3dnazmatr@gateway/shell/matrix.org/x-ybiigbogxoenpsye) (Client Quit) |
2020-11-03 16:47:10 +0100 | jiribenes1 | (jbjiribene@gateway/shell/matrix.org/x-axffvnsgpboxhtcg) (Client Quit) |
2020-11-03 16:47:11 +0100 | kadoban | (kadobanmat@gateway/shell/matrix.org/x-btxwrgfxkibtqnsg) (Client Quit) |
2020-11-03 16:47:11 +0100 | tttom[m] | (tttommatri@gateway/shell/matrix.org/x-piwzfyinjzjgieef) (Client Quit) |
2020-11-03 16:47:11 +0100 | loprakoa[m] | (loprakoama@gateway/shell/matrix.org/x-tnuljvchikruvhvw) (Client Quit) |
2020-11-03 16:47:11 +0100 | johnnyboy[m] | (gifumatrix@gateway/shell/matrix.org/x-npyuwrvjfblnwfqj) (Client Quit) |
2020-11-03 16:48:23 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 16:49:58 +0100 | o1lo01ol1o | (~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 +0100 | vicfred | (~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 +0100 | miladz68 | (~manjaro-u@static.84.147.251.148.clients.your-server.de) (Ping timeout: 240 seconds) |
2020-11-03 16:51:59 +0100 | miladz68 | (~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 +0100 | idhugo | (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) |
2020-11-03 16:53:08 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-11-03 16:53:16 +0100 | nbloomf | (~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 +0100 | brodie | (~textual@207.53.253.137) (Quit: brodie) |
2020-11-03 16:55:07 +0100 | p-core | (~Thunderbi@80.95.114.184) |
2020-11-03 16:55:18 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) |
2020-11-03 16:55:31 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) |
2020-11-03 16:55:31 +0100 | hackage | git-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 +0100 | ensyde | (~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 +0100 | JoelMcCracken[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 +0100 | alp | (~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 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 17:00:06 +0100 | JoelMcCracken[m] | (joelmccrac@gateway/shell/matrix.org/x-hnsumqopegmivthi) (Client Quit) |
2020-11-03 17:00:26 +0100 | Rudd0 | (~Rudd0@185.189.115.98) |
2020-11-03 17:00:36 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 244 seconds) |
2020-11-03 17:02:08 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 268 seconds) |
2020-11-03 17:03:23 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-03 17:03:47 +0100 | kritzefitz | (~kritzefit@fw-front.credativ.com) (Remote host closed the connection) |
2020-11-03 17:04:05 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) |
2020-11-03 17:04:30 +0100 | hackage | validationt 0.3.0 - Straightforward validation monad https://hackage.haskell.org/package/validationt-0.3.0 (typeable) |
2020-11-03 17:04:47 +0100 | jespada | (~jespada@90.254.245.49) |
2020-11-03 17:08:09 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 17:08:24 +0100 | ttc | (tomtauma1@gateway/shell/matrix.org/x-uquqcxspyycbvjvf) |
2020-11-03 17:08:24 +0100 | pqwy[m] | (pqwymatrix@gateway/shell/matrix.org/x-jqnrqlrbhxhwmhbz) |
2020-11-03 17:08:24 +0100 | chreekat[m] | (chreekatma@gateway/shell/matrix.org/x-wspbygjiuixcjxkc) |
2020-11-03 17:08:24 +0100 | michaelpj | (michaelpjm@gateway/shell/matrix.org/x-uoyfjnxjprdtbaxo) |
2020-11-03 17:08:24 +0100 | themsay[m] | (themsaymat@gateway/shell/matrix.org/x-ujpukaorocjskeoi) |
2020-11-03 17:08:24 +0100 | jeffcasavant[m] | (jeffcasava@gateway/shell/matrix.org/x-ydnhcjbfaimoibji) |
2020-11-03 17:08:24 +0100 | Fernando-Basso[m | (fernando-b@gateway/shell/matrix.org/x-xirzymulqroruhsm) |
2020-11-03 17:08:24 +0100 | psydruid | (psydruidma@gateway/shell/matrix.org/x-etfvogphrizepbip) |
2020-11-03 17:08:24 +0100 | alvinsj[m] | (alvinsjmat@gateway/shell/matrix.org/x-euntbxjpvrijrxmx) |
2020-11-03 17:08:24 +0100 | domenkozar[m] | (domenkozar@NixOS/user/domenkozar) |
2020-11-03 17:08:25 +0100 | johnnyboy[m] | (gifumatrix@gateway/shell/matrix.org/x-lixmcfpcxrvpqkwa) |
2020-11-03 17:08:25 +0100 | hnOsmium0001[m] | (hnosmium00@gateway/shell/matrix.org/x-pclxodnkmqnqfwxg) |
2020-11-03 17:08:25 +0100 | PotatoHatsue | (berbermanp@gateway/shell/matrix.org/x-hixqfsukphxkizxv) |
2020-11-03 17:08:25 +0100 | iinuwa | (iinuwamatr@gateway/shell/matrix.org/x-xxskiprlcirzxiga) |
2020-11-03 17:08:25 +0100 | zerstroyer[m] | (zerstroyer@gateway/shell/matrix.org/x-fjjxkkdhwczwidmj) |
2020-11-03 17:08:25 +0100 | texasmynsted[m]1 | (mmynstedko@gateway/shell/matrix.org/x-sbtmbpamgfechbux) |
2020-11-03 17:08:25 +0100 | unclechu | (unclechuma@gateway/shell/matrix.org/x-rgjtexmubckaxtft) |
2020-11-03 17:08:25 +0100 | kaychaks_riot | (kaychaksma@gateway/shell/matrix.org/x-iwzuktiocfdsoxtf) |
2020-11-03 17:08:25 +0100 | siraben | (sirabenmat@gateway/shell/matrix.org/x-hzunuwncbmmxlwie) |
2020-11-03 17:08:25 +0100 | ThaEwat | (thaewraptm@gateway/shell/matrix.org/x-edykdyerrvrnrhhy) |
2020-11-03 17:08:25 +0100 | sureyeaah | (shauryab98@gateway/shell/matrix.org/x-jedasmaebvvahvcj) |
2020-11-03 17:08:25 +0100 | PotatoHatsue|T | (berbermanm@gateway/shell/matrix.org/x-fuqecmssbwcwxfrb) |
2020-11-03 17:08:25 +0100 | lambdaclan | (lambdaclan@gateway/shell/matrix.org/x-wbdwuytzeyqyapvd) |
2020-11-03 17:08:26 +0100 | micahsovereign[m | (micahsover@gateway/shell/matrix.org/x-zqfuexwrnelqnfbx) |
2020-11-03 17:08:26 +0100 | drozdziak1 | (drozdziak1@gateway/shell/matrix.org/x-bgqlrpniadgtdery) |
2020-11-03 17:08:26 +0100 | fgaz | (fgazmatrix@gateway/shell/matrix.org/x-slmeyzgqwdnmdyrc) |
2020-11-03 17:08:26 +0100 | hsiktas[m] | (hsiktasmat@gateway/shell/matrix.org/x-zwvdtyuxfxztfmkc) |
2020-11-03 17:08:26 +0100 | theduke | (thedukem1@gateway/shell/matrix.org/x-nkqbunrnsxjskdpd) |
2020-11-03 17:08:26 +0100 | lnxw37d4 | (lnxw37d4ma@gateway/shell/matrix.org/x-wpsolapibmqshmip) |
2020-11-03 17:08:26 +0100 | sm[m] | (simonmicma@gateway/shell/matrix.org/x-wzcoftslnufebjph) |
2020-11-03 17:08:26 +0100 | Ericson2314 | (ericson231@gateway/shell/matrix.org/x-icankkfzqnonlrhh) |
2020-11-03 17:08:26 +0100 | rednaZ[m] | (r3dnazmatr@gateway/shell/matrix.org/x-uibvjwmgioaohlzd) |
2020-11-03 17:08:27 +0100 | SlackIntegration | (slackbotma@gateway/shell/matrix.org/x-caxtdscroghtasfp) |
2020-11-03 17:08:27 +0100 | tersetears[m] | (tersetears@gateway/shell/matrix.org/x-klvqbdrwhsqyopcd) |
2020-11-03 17:08:27 +0100 | bonvoyage[m] | (bonvoyageu@gateway/shell/matrix.org/x-wmphllysplyhuojb) |
2020-11-03 17:08:27 +0100 | srid | (sridmatrix@gateway/shell/matrix.org/x-qqeoewwaowpiqrub) |
2020-11-03 17:08:27 +0100 | berberman|T | (berberma4@gateway/shell/matrix.org/x-rqubmqczcsddvvhp) |
2020-11-03 17:08:27 +0100 | maralorn | (maralornma@gateway/shell/matrix.org/x-esbyrtfclugulpku) |
2020-11-03 17:08:27 +0100 | jtojnar | (jtojnarmat@gateway/shell/matrix.org/x-grllgvjiiizziklg) |
2020-11-03 17:08:27 +0100 | io_r_us[m] | (commandlin@gateway/shell/matrix.org/x-dcxofhcftbovwbst) |
2020-11-03 17:08:27 +0100 | kadoban | (kadobanmat@gateway/shell/matrix.org/x-xrrstobtgwfnvduc) |
2020-11-03 17:08:30 +0100 | ComaGrayce[m] | (commagrays@gateway/shell/matrix.org/x-kdchjrsktdbjqvop) |
2020-11-03 17:08:30 +0100 | jkaye[m] | (jkayematri@gateway/shell/matrix.org/x-xtwtcthsyrpjxlgx) |
2020-11-03 17:08:30 +0100 | GuillaumeChrel[m | (guillaumec@gateway/shell/matrix.org/x-yyvevfplzzioqnuc) |
2020-11-03 17:08:30 +0100 | betrion[m] | (betrionmat@gateway/shell/matrix.org/x-kjxsujwoqdjukewx) |
2020-11-03 17:08:31 +0100 | jesser[m] | (jessermatr@gateway/shell/matrix.org/x-xmfuuihwzdmwsxri) |
2020-11-03 17:08:31 +0100 | Noughtmare[m] | (naughtmare@gateway/shell/matrix.org/x-qgtfxiblcqwqvpjv) |
2020-11-03 17:08:31 +0100 | ethercrow[m] | (ethercrowm@gateway/shell/matrix.org/x-fwdkmrqysffhdlhg) |
2020-11-03 17:08:31 +0100 | jiribenes1 | (jbjiribene@gateway/shell/matrix.org/x-bgfmaawtdxevtslk) |
2020-11-03 17:08:31 +0100 | alexfmpe | (alexfmpema@gateway/shell/matrix.org/x-pkjrfqmejbphovey) |
2020-11-03 17:08:31 +0100 | dyniec[m] | (dyniecmatr@gateway/shell/matrix.org/x-upsuponuotpjoctt) |
2020-11-03 17:08:31 +0100 | wrunt[m] | (wruntmatri@gateway/shell/matrix.org/x-yyfnqwlidsridbox) |
2020-11-03 17:08:32 +0100 | albestro[m] | (albestroma@gateway/shell/matrix.org/x-qdbcqirfearydihj) |
2020-11-03 17:08:32 +0100 | tttom[m] | (tttommatri@gateway/shell/matrix.org/x-odejmlhnpwjjtcrh) |
2020-11-03 17:08:32 +0100 | DeadComaGrayce[m | (commagra1@gateway/shell/matrix.org/x-noidmvosphatipsa) |
2020-11-03 17:08:32 +0100 | loprakoa[m] | (loprakoama@gateway/shell/matrix.org/x-efkcigrtbzrnbnzq) |
2020-11-03 17:08:32 +0100 | jlv | (jlvjustinl@gateway/shell/matrix.org/x-ocncxbunlvivmawj) |
2020-11-03 17:08:33 +0100 | mikr[m] | (mikrdavral@gateway/shell/matrix.org/x-qmtbcoqsyfoubvgt) |
2020-11-03 17:08:33 +0100 | elpfen[m] | (elpfenmatr@gateway/shell/matrix.org/x-ptnaaevdfmtjzszs) |
2020-11-03 17:08:34 +0100 | mmynsted[m] | (mmynstedtc@gateway/shell/matrix.org/x-nsloajvwzkribhpr) |
2020-11-03 17:08:39 +0100 | wi[m] | (w1gzmatrix@gateway/shell/matrix.org/x-chkwkwpgxekzmeut) |
2020-11-03 17:09:09 +0100 | mokulus | (~mat@176.111.230.96) (Quit: WeeChat 2.9) |
2020-11-03 17:10:01 +0100 | macrover | (~macrover@ip70-189-231-35.lv.lv.cox.net) |
2020-11-03 17:13:00 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 244 seconds) |
2020-11-03 17:14:37 +0100 | xff0x | (~fox@2001:1a81:53b4:ba00:49d8:d2a:69a9:1ef4) |
2020-11-03 17:16:25 +0100 | miladz68 | (~manjaro-u@46.248.60.86) (Ping timeout: 240 seconds) |
2020-11-03 17:16:53 +0100 | miladz68 | (~manjaro-u@46.248.60.86) |
2020-11-03 17:17:43 +0100 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds) |
2020-11-03 17:18:00 +0100 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) |
2020-11-03 17:18:52 +0100 | raichoo | (~raichoo@213.240.178.58) (Quit: Lost terminal) |
2020-11-03 17:19:24 +0100 | e | (e@freenode/staff/spy.edk) (Disconnected by services) |
2020-11-03 17:19:30 +0100 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9) |
2020-11-03 17:19:55 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 17:20:17 +0100 | p-core | (~Thunderbi@80.95.114.184) (Ping timeout: 272 seconds) |
2020-11-03 17:20:33 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 17:23:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-11-03 17:25:41 +0100 | travv0 | (sid293381@gateway/web/irccloud.com/x-ewehtgkfobxgucth) () |
2020-11-03 17:25:59 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-03 17:26:46 +0100 | e | (e@freenode/staff/spy.edk) |
2020-11-03 17:27:55 +0100 | conal | (~conal@64.71.133.70) (Ping timeout: 240 seconds) |
2020-11-03 17:29:11 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2020-11-03 17:31:03 +0100 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) |
2020-11-03 17:31:21 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 17:32:37 +0100 | mokulus | (~mat@176.111.230.96) |
2020-11-03 17:32:59 +0100 | st8less | (~st8less@2603:a060:11fd:0:357c:d497:b907:2901) |
2020-11-03 17:33:19 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 17:35:48 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-11-03 17:37:09 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-11-03 17:37:28 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-03 17:38:26 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-03 17:38:44 +0100 | zyeri | (zyeri@tilde.team/users/zyeri) (Ping timeout: 256 seconds) |
2020-11-03 17:39:04 +0100 | roconnor | (~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 246 seconds) |
2020-11-03 17:40:40 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-03 17:40:48 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-03 17:42:38 +0100 | Guest77983 | (~z0@188.251.73.190) (Ping timeout: 264 seconds) |
2020-11-03 17:44:28 +0100 | darjeeling_ | (~darjeelin@115.215.40.228) (Ping timeout: 272 seconds) |
2020-11-03 17:44:50 +0100 | zyeri | (zyeri@gateway/shell/tilde.team/x-snfyuqzcmwkjylvs) |
2020-11-03 17:44:51 +0100 | zyeri | (zyeri@gateway/shell/tilde.team/x-snfyuqzcmwkjylvs) (Changing host) |
2020-11-03 17:44:51 +0100 | zyeri | (zyeri@tilde.team/users/zyeri) |
2020-11-03 17:45:05 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 240 seconds) |
2020-11-03 17:45:33 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-03 17:45:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 17:47:32 +0100 | idhugo | (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds) |
2020-11-03 17:48:08 +0100 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving) |
2020-11-03 17:48:27 +0100 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) |
2020-11-03 17:50:10 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 272 seconds) |
2020-11-03 17:50:33 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds) |
2020-11-03 17:50:38 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) |
2020-11-03 17:52:07 +0100 | nyaomi | (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Excess Flood) |
2020-11-03 17:52:35 +0100 | nyaomi | (~naomi@cpe-74-75-6-125.maine.res.rr.com) |
2020-11-03 17:53:37 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-abxtjqjdzzifrxcr) |
2020-11-03 17:57:25 +0100 | darjeeling_ | (~darjeelin@115.215.43.51) |
2020-11-03 17:57:55 +0100 | nyaomi | (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Excess Flood) |
2020-11-03 17:58:19 +0100 | nyaomi | (~naomi@cpe-74-75-6-125.maine.res.rr.com) |
2020-11-03 17:59:01 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2020-11-03 17:59:34 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-03 18:01:08 +0100 | Chi1thangoo | (~Chi1thang@87.112.60.168) |
2020-11-03 18:02:06 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-03 18:02:24 +0100 | ahmr88 | (~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 +0100 | jlamothe | (~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 +0100 | whatisRT | (~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 +0100 | gehmehgeh | (~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 +0100 | gehmehgeh | (~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 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:fc37:ff3f:9c12:2922) |
2020-11-03 18:10:31 +0100 | Ariakenom | (~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 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2020-11-03 18:11:54 +0100 | merijn | (~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 +0100 | u0_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 +0100 | acidjnk_new2 | (~acidjnk@p200300d0c718f623213d210801ac68e4.dip0.t-ipconnect.de) |
2020-11-03 18:13:47 +0100 | ubert | (~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 +0100 | heatsink | (~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 +0100 | avdb | (~avdb@ip-83-134-109-138.dsl.scarlet.be) (Quit: WeeChat 2.9) |
2020-11-03 18:18:20 +0100 | avdb | (~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 +0100 | Amras | (~Amras@unaffiliated/amras0000) |
2020-11-03 18:19:32 +0100 | <davean> | ok, so whats whnf |
2020-11-03 18:19:33 +0100 | kritzefitz | (~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 +0100 | kritzefitz | (~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 +0100 | roconnor | (~roconnor@host-192.252-162-14.dyn.295.ca) |
2020-11-03 18:26:40 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-03 18:27:37 +0100 | o1lo01ol1o | (~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 +0100 | hvr | (~hvr@haskell/developer/hvr) (Remote host closed the connection) |
2020-11-03 18:28:50 +0100 | hvr_ | (~hvr@haskell/developer/hvr) |
2020-11-03 18:29:22 +0100 | obihann | (~jhann@156.34.160.69) (Quit: Lost terminal) |
2020-11-03 18:29:23 +0100 | hvr_ | 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 +0100 | miladz68 | (~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 +0100 | kuribas | (~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 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 18:41:02 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 18:43:03 +0100 | revtintin | (~revtintin@158.140.144.34) (Quit: WeeChat 2.9) |
2020-11-03 18:43:04 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 18:43:37 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 18:45:03 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) |
2020-11-03 18:45:51 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-03 18:49:57 +0100 | chele | (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2020-11-03 18:49:57 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 18:50:04 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-03 18:50:16 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 18:51:19 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-11-03 18:52:55 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-glpnpeqsowfdqxrb) (Quit: Connection closed for inactivity) |
2020-11-03 18:55:08 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 18:55:38 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 18:56:03 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de) |
2020-11-03 18:59:03 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 18:59:33 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 19:00:01 +0100 | jackgassett | (~jackgasse@185.163.110.116) () |
2020-11-03 19:02:37 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 19:03:56 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 19:05:08 +0100 | dyeplexer | (~lol@unaffiliated/terpin) |
2020-11-03 19:06:45 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-03 19:07:19 +0100 | borne | (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) (Ping timeout: 272 seconds) |
2020-11-03 19:07:32 +0100 | alp | (~alp@2a01:e0a:58b:4920:d16f:132:b740:cc6e) (Ping timeout: 246 seconds) |
2020-11-03 19:12:01 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 19:12:18 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 19:14:29 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 19:15:00 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 19:16:25 +0100 | machinedgod | (~machinedg@207.253.244.210) (Ping timeout: 258 seconds) |
2020-11-03 19:19:00 +0100 | jlamothe | (~jlamothe@198.251.55.207) |
2020-11-03 19:20:04 +0100 | machinedgod | (~machinedg@142.169.78.163) |
2020-11-03 19:21:45 +0100 | dyeplexer | (~lol@unaffiliated/terpin) (Remote host closed the connection) |
2020-11-03 19:25:32 +0100 | u0_a298 | (~user@47.206.148.226) (Remote host closed the connection) |
2020-11-03 19:25:57 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 19:27:32 +0100 | kritzefitz | (~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 +0100 | CodeKiwi | (~kiwi@unaffiliated/digitalkiwi) |
2020-11-03 19:28:32 +0100 | DigitalKiwi | (~kiwi@unaffiliated/digitalkiwi) (Read error: Connection reset by peer) |
2020-11-03 19:29:04 +0100 | dragestil | (~quassel@185.137.175.104) (Ping timeout: 256 seconds) |
2020-11-03 19:29:17 +0100 | dragestil | (~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 +0100 | Franciman | (~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 +0100 | tomsmeding | actually 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 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 19:38:35 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 19:38:43 +0100 | alp | (~alp@2a01:e0a:58b:4920:dc87:a0db:f731:9e0c) |
2020-11-03 19:41:00 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 19:41:16 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 19:41:25 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-03 19:41:32 +0100 | alp | (~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 +0100 | alp | (~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 +0100 | wroathe | (~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 +0100 | p-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 +0100 | ensyde | (~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 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-03 19:48:27 +0100 | heatsink | (~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 +0100 | son0p | (~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 +0100 | ensyde | (~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 +0100 | geekosaur | wonders 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 +0100 | avdb | (~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 +0100 | patjameson | (~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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 20:00:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 20:00:36 +0100 | ggole | (~ggole@2001:8003:8119:7200:4c8:75c2:97ad:422b) (Quit: Leaving) |
2020-11-03 20:01:05 +0100 | thir | (~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 +0100 | lottaquestions | (~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 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) (Quit: sh9) |
2020-11-03 20:02:59 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds) |
2020-11-03 20:03:32 +0100 | mokulus | (~mat@176.111.230.96) ("WeeChat 2.9") |
2020-11-03 20:03:37 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2020-11-03 20:03:47 +0100 | berberman | (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds) |
2020-11-03 20:04:12 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-03 20:04:41 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) |
2020-11-03 20:05:01 +0100 | lottaquestions | (~nick@2607:fa49:5040:d100:d0c0:708:6d52:81c9) ("Konversation terminated!") |
2020-11-03 20:07:02 +0100 | u0_a298 | (~user@47.206.148.226) (Remote host closed the connection) |
2020-11-03 20:07:45 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds) |
2020-11-03 20:08:12 +0100 | akad_ | (~akad@109107030050.radomsko.vectranet.pl) |
2020-11-03 20:08:16 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 20:10:56 +0100 | roconnor | (~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 256 seconds) |
2020-11-03 20:11:44 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 20:13:03 +0100 | teardown | (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds) |
2020-11-03 20:14:51 +0100 | atbd | (~atbd@68.166.138.88.rev.sfr.net) |
2020-11-03 20:16:17 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 260 seconds) |
2020-11-03 20:16:25 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-03 20:16:25 +0100 | atbd | (~atbd@68.166.138.88.rev.sfr.net) (Client Quit) |
2020-11-03 20:16:45 +0100 | atbd | (~atbd@68.166.138.88.rev.sfr.net) |
2020-11-03 20:17:49 +0100 | atbd | (~atbd@68.166.138.88.rev.sfr.net) (Client Quit) |
2020-11-03 20:20:08 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 20:20:35 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 20:22:22 +0100 | nuncanada | (~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 +0100 | ensyde | (~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 +0100 | miguelnegrao | (~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 +0100 | geekosaur | (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 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
2020-11-03 20:28:52 +0100 | ensyde | (~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 +0100 | heatsink | (~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 +0100 | raehik | (~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 +0100 | teardown | (~user@gateway/tor-sasl/mrush) |
2020-11-03 20:36:31 +0100 | ensyde | (~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 +0100 | jtonic | (bc193ca1@188.25.60.161) |
2020-11-03 20:39:03 +0100 | jtonic | (bc193ca1@188.25.60.161) (Remote host closed the connection) |
2020-11-03 20:39:36 +0100 | christo | (~chris@81.96.113.213) |
2020-11-03 20:40:23 +0100 | CodeKiwi | DigitalKiwi |
2020-11-03 20:40:42 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-03 20:41:12 +0100 | ensyde | (~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 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer) |
2020-11-03 20:42:50 +0100 | notnatebtw | (~nate@125.161.131.218) |
2020-11-03 20:42:59 +0100 | son0p | (~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 +0100 | ahmr88 | (~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 +0100 | kritzefitz | (~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 +0100 | argent0 | (~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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 20:48:57 +0100 | mbomba | (~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 +0100 | argent0 | (~argent0@168.227.97.4) (Quit: leaving) |
2020-11-03 20:53:11 +0100 | <fendor> | *the preconditions |
2020-11-03 20:53:30 +0100 | argent0 | (~argent0@168.227.97.4) |
2020-11-03 20:54:13 +0100 | ensyde | (~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 +0100 | juuandyy | (~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 +0100 | britva | (~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 +0100 | fendor | (~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-11-03 21:00:07 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de) (Quit: WeeChat 2.9) |
2020-11-03 21:00:25 +0100 | miguelnegrao | (~miguelneg@2001:818:dc71:d100:fa39:ca92:8ab:783d) (Quit: miguelnegrao) |
2020-11-03 21:01:25 +0100 | fendor | (~fendor@078132040188.public.t-mobile.at) |
2020-11-03 21:01:39 +0100 | ensyde | (~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 +0100 | raehik | (~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 +0100 | fendor_ | (~fendor@91.141.3.235.wireless.dyn.drei.com) |
2020-11-03 21:03:08 +0100 | wwwww | (~wwwww@unaffiliated/wwwww) (Ping timeout: 256 seconds) |
2020-11-03 21:03:33 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-11-03 21:04:08 +0100 | fendor_ | (~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-11-03 21:04:38 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-03 21:05:02 +0100 | wwwww | (~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 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 21:05:55 +0100 | bqv | /mode +m |
2020-11-03 21:06:04 +0100 | <bqv> | Now your channel is readonly! |
2020-11-03 21:06:44 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-03 21:07:28 +0100 | rprije | (~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 +0100 | alp | (~alp@2a01:e0a:58b:4920:7d22:2550:1d45:febd) (Ping timeout: 272 seconds) |
2020-11-03 21:09:15 +0100 | alp | (~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 +0100 | conal | (~conal@2600:380:8537:50cb:803b:f7e5:d239:736b) |
2020-11-03 21:10:02 +0100 | <hekkaidekapus> | lol |
2020-11-03 21:10:48 +0100 | hekkaidekapus | bqv-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 +0100 | Resurge | (~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 +0100 | juuandyy | (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
2020-11-03 21:15:29 +0100 | juuandyy | (~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 +0100 | hackage | reflex-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 +0100 | juuandyy | (~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 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-03 21:26:08 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 21:26:09 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer) |
2020-11-03 21:26:28 +0100 | heatsink | (~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 +0100 | u0_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 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 21:27:49 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-03 21:31:07 +0100 | AlterEgo- | (~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 +0100 | borne | (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) |
2020-11-03 21:39:57 +0100 | Amras | (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds) |
2020-11-03 21:40:40 +0100 | Amras | (~Amras@unaffiliated/amras0000) |
2020-11-03 21:41:29 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-03 21:44:04 +0100 | jrqc | (~rofl@96.78.87.197) (Ping timeout: 246 seconds) |
2020-11-03 21:45:12 +0100 | jrqc | (~rofl@96.78.87.197) |
2020-11-03 21:46:15 +0100 | conal | (~conal@2600:380:8537:50cb:803b:f7e5:d239:736b) (Quit: Computer has gone to sleep.) |
2020-11-03 21:46:17 +0100 | britva | (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) |
2020-11-03 21:50:22 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-03 21:50:58 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-03 21:51:23 +0100 | Aquazi | (uid312403@gateway/web/irccloud.com/x-cxspimotkygwnrbt) (Quit: Connection closed for inactivity) |
2020-11-03 21:55:10 +0100 | fendor_ | (~fendor@91.141.3.235.wireless.dyn.drei.com) |
2020-11-03 21:56:59 +0100 | kish | (~oracle@unaffiliated/oracle) |
2020-11-03 21:57:20 +0100 | conal | (~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 +0100 | patjameson | (~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 +0100 | kish` | (~oracle@unaffiliated/oracle) (Ping timeout: 272 seconds) |
2020-11-03 22:00:43 +0100 | avdb | (~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 +0100 | DTZUZU_ | (~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 +0100 | DTZUZU | (~DTZUZU@205.ip-149-56-132.net) (Ping timeout: 272 seconds) |
2020-11-03 22:01:39 +0100 | patrick_ | (~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 +0100 | bytecoder_ | (~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 +0100 | wroathe | (~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 +0100 | geekosaur | peeked at the source link |
2020-11-03 22:04:06 +0100 | jakob_ | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2020-11-03 22:06:56 +0100 | fendor | (~fendor@078132040188.public.t-mobile.at) (Ping timeout: 260 seconds) |
2020-11-03 22:07:35 +0100 | patrick_ | (~patrick@189.62.151.9) (Quit: Leaving) |
2020-11-03 22:08:53 +0100 | u0_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 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2020-11-03 22:15:15 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-03 22:16:25 +0100 | dcoutts_ | (~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 240 seconds) |
2020-11-03 22:16:33 +0100 | conal | (~conal@2600:380:857e:b300:b03c:99e9:2644:fc5b) (Quit: Computer has gone to sleep.) |
2020-11-03 22:18:47 +0100 | bytecoder_ | (~bytecoder@109.86.182.155) (Quit: Leaving) |
2020-11-03 22:19:38 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-11-03 22:20:22 +0100 | dcoutts_ | (~duncan@33.14.75.194.dyn.plus.net) |
2020-11-03 22:22:14 +0100 | borne | (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
2020-11-03 22:22:36 +0100 | avdb | (~avdb@ip-83-134-109-138.dsl.scarlet.be) (Quit: WeeChat 2.9) |
2020-11-03 22:22:48 +0100 | britva | (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Quit: This computer has gone to sleep) |
2020-11-03 22:23:05 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection) |
2020-11-03 22:24:35 +0100 | knupfer | (~Thunderbi@i59F7FFF1.versanet.de) (Ping timeout: 246 seconds) |
2020-11-03 22:26:41 +0100 | ChanServ | (ChanServ@services.) (shutting down) |
2020-11-03 22:27:22 +0100 | britva | (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) |
2020-11-03 22:27:33 +0100 | britva | (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Client Quit) |
2020-11-03 22:28:20 +0100 | Tario | (~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 +0100 | dbmikus_ | (~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 +0100 | knupfer | (~Thunderbi@i59F7FFF1.versanet.de) |
2020-11-03 22:31:07 +0100 | borne | (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) |
2020-11-03 22:31:10 +0100 | dbmikus_ | (~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 +0100 | ahmr88 | (~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 +0100 | justsomeguy | (~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 +0100 | ChanServ | (ChanServ@services.) |
2020-11-03 22:32:21 +0100 | beckett.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 +0100 | justsomeguy | (~justsomeg@216.186.218.241) (Changing host) |
2020-11-03 22:33:27 +0100 | justsomeguy | (~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 +0100 | jneira | (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 +0100 | motherfsck | (~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 +0100 | jneira | (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 +0100 | geekosaur | (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 +0100 | MisterG | (~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 +0100 | merijn | (~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 +0100 | MisterG | (~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 +0100 | heatsink | (~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 +0100 | mbomba | (~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 +0100 | justanotheruser | mrdulus |
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 +0100 | mrdulus | justan0theruser |
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 +0100 | heatsink | (~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 +0100 | coot | (~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 +0100 | cr3 | (~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 +0100 | argent0 | (~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 +0100 | mdunnio | (~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 +0100 | aarvar | (~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 +0100 | mananamenos | (~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 +0100 | fendor_ | (~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 +0100 | fendor | (~fendor@91.141.3.235.wireless.dyn.drei.com) |
2020-11-03 22:55:41 +0100 | fendor | (~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-11-03 22:55:44 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 240 seconds) |
2020-11-03 22:55:45 +0100 | superfly1 | (~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 +0100 | sQVe | (~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 +0100 | thir | (~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 +0100 | ensyde | (~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 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-03 23:05:53 +0100 | monochrom | disbelieves 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 +0100 | dcoutts_ | (~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 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 240 seconds) |
2020-11-03 23:07:29 +0100 | ensyde | (~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 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 23:09:37 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2020-11-03 23:10:07 +0100 | roconnor | (~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 +0100 | ensyde | (~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 +0100 | elfets | (~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 +0100 | hackage | registry 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 +0100 | ensyde | (~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 +0100 | alp | (~alp@2a01:e0a:58b:4920:280c:9785:c082:40bf) (Read error: Connection reset by peer) |
2020-11-03 23:27:23 +0100 | alp | (~alp@2a01:e0a:58b:4920:99ca:9a50:cea9:e213) |
2020-11-03 23:27:41 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 23:28:09 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
2020-11-03 23:28:29 +0100 | sQVe | (~sQVe@unaffiliated/sqve) (Quit: Bye!) |
2020-11-03 23:29:58 +0100 | Ariakenom | (~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 +0100 | hackage | pandoc 2.11.1 - Conversion between markup formats https://hackage.haskell.org/package/pandoc-2.11.1 (JohnMacFarlane) |
2020-11-03 23:31:01 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Quit: Lost terminal) |
2020-11-03 23:32:37 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds) |
2020-11-03 23:33:02 +0100 | xerox_ | (~xerox@unaffiliated/xerox) (Ping timeout: 264 seconds) |
2020-11-03 23:35:52 +0100 | tolt | (~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9) |
2020-11-03 23:36:23 +0100 | elliott_ | (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
2020-11-03 23:36:32 +0100 | gtk | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2020-11-03 23:37:09 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
2020-11-03 23:37:50 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-03 23:39:23 +0100 | knupfer | (~Thunderbi@i59F7FFF1.versanet.de) (Ping timeout: 265 seconds) |
2020-11-03 23:39:49 +0100 | tolt | (~weechat-h@li219-154.members.linode.com) |
2020-11-03 23:40:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 23:42:07 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-11-03 23:44:03 +0100 | hekkaidekapus | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2020-11-03 23:45:08 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-03 23:45:28 +0100 | elliott_ | (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) |
2020-11-03 23:46:00 +0100 | tolt | (~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9) |
2020-11-03 23:47:26 +0100 | tolt | (~weechat-h@li219-154.members.linode.com) |
2020-11-03 23:48:12 +0100 | Katarushisu | (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Ping timeout: 260 seconds) |
2020-11-03 23:48:33 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-11-03 23:49:45 +0100 | Katarushisu | (~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 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-03 23:52:41 +0100 | KhoN_1 | (~KhoN@cm-84.208.147.132.getinternet.no) |
2020-11-03 23:52:47 +0100 | kori | (~kori@arrowheads/kori) (Quit: WeeChat 2.8) |
2020-11-03 23:54:11 +0100 | brodie_ | (~brodie@207.53.253.137) |
2020-11-03 23:54:41 +0100 | KhoN | (~KhoN@cm-84.208.147.132.getinternet.no) (Ping timeout: 268 seconds) |
2020-11-03 23:55:13 +0100 | aarvar | (~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 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-03 23:57:24 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds) |
2020-11-03 23:57:30 +0100 | mdunnio | (~mdunnio@208.59.170.5) (Remote host closed the connection) |