2020/12/22

2020-12-22 00:02:08 +0100 <Feuermagier> monochrom, so mix xss = map average . transpose (transpose xss [0..]) ?
2020-12-22 00:02:20 +0100 <ski> that's a type error
2020-12-22 00:02:42 +0100 <Feuermagier> ski, mind showing me the correct one?
2020-12-22 00:03:07 +0100 <ski> i guess they wanted `length that', not `maximum (map length that)' ?
2020-12-22 00:03:32 +0100 <monochrom> > maximum (map length [[x,y], [a,b,c,d,e,f,g,h,i,j]])
2020-12-22 00:03:34 +0100 <lambdabot> 10
2020-12-22 00:03:39 +0100 <ski> yes
2020-12-22 00:03:49 +0100 <ski> > transpose [[x,y],[a,b,c,d,e,f,g,h,i,j]]
2020-12-22 00:03:51 +0100 <lambdabot> [[x,a],[y,b],[c],[d],[e],[f],[g],[h],[i],[j]]
2020-12-22 00:03:54 +0100 <ski> seems `n' should be `2', here ?
2020-12-22 00:03:58 +0100 <Feuermagier> ski, so in our example?
2020-12-22 00:04:10 +0100 <monochrom> Oh, I see, right, n = length that.
2020-12-22 00:04:33 +0100 <ski> Feuermagier : do you understand ?
2020-12-22 00:04:43 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Quit: ChaiTRex)
2020-12-22 00:04:44 +0100 <Feuermagier> no
2020-12-22 00:04:52 +0100 <Feuermagier> like, i just want to fill with 0
2020-12-22 00:05:09 +0100 <Feuermagier> so i can use it on varying length
2020-12-22 00:05:22 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-12-22 00:05:51 +0100 <ski> > (map (\xs -> sum xs / 2) . transpose) [[x,y],[a,b,c,d]] :: [Expr]
2020-12-22 00:05:53 +0100 <lambdabot> [(0 + x + a) / 2,(0 + y + b) / 2,(0 + c) / 2,(0 + d) / 2]
2020-12-22 00:06:02 +0100gioyik(~gioyik@186.112.104.164) (Quit: WeeChat 3.0)
2020-12-22 00:06:15 +0100 <ski> Feuermagier : ^ looks ok ?
2020-12-22 00:06:21 +0100 <Feuermagier> yes
2020-12-22 00:06:26 +0100fendor(~fendor@77.119.131.23.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-22 00:08:15 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 272 seconds)
2020-12-22 00:08:29 +0100hackagebrick 0.58 - A declarative terminal user interface library https://hackage.haskell.org/package/brick-0.58 (JonathanDaugherty)
2020-12-22 00:09:05 +0100Madars(~null@unaffiliated/madars) (Quit: WeeChat 1.9.1)
2020-12-22 00:09:15 +0100 <ski> > (map (\xs -> foldl1' (+) xs / 3) . transpose) [[x,y],[a,b,c,d],[i,j,k]] :: [Expr]
2020-12-22 00:09:17 +0100 <lambdabot> [(x + a + i) / 3,(y + b + j) / 3,(c + k) / 3,d / 3]
2020-12-22 00:10:19 +0100 <hseg> correct me if i'm wrong, but an expression like length [(t, f * dsOccs m t) | n <- [0 .. m], (t, f) <- terms n (fromFreqs l)] < 35 will only compute the first 35 elements of the list, correct?
2020-12-22 00:10:39 +0100 <hseg> even if this is buried under several layers of function calls
2020-12-22 00:10:59 +0100 <glguy> hseg: that would be wrong
2020-12-22 00:11:00 +0100 <ski> nope
2020-12-22 00:11:07 +0100 <monochrom> > length [0..] < 3
2020-12-22 00:11:13 +0100 <lambdabot> mueval-core: Time limit exceeded
2020-12-22 00:11:17 +0100 <hseg> :-(
2020-12-22 00:11:22 +0100 <fuzzypixelz> can I have mutliline function composition?
2020-12-22 00:11:23 +0100 <glguy> monochrom: there's no space in <3 :nod:
2020-12-22 00:11:35 +0100 <ski> try `drop 34' ?
2020-12-22 00:11:40 +0100 <monochrom> Oh! I'll fix it
2020-12-22 00:11:42 +0100 <monochrom> > length [0..] <3
2020-12-22 00:11:49 +0100 <lambdabot> mueval-core: Time limit exceeded
2020-12-22 00:11:55 +0100 <glguy> length is love
2020-12-22 00:11:58 +0100 <hseg> > null (drop 34 [0..])
2020-12-22 00:12:00 +0100 <lambdabot> False
2020-12-22 00:12:27 +0100 <hseg> ok, so should replace my "avoid large testcase" code with that
2020-12-22 00:12:28 +0100 <glguy> hseg: in your caes of being interested in lengths < 35, : length (take 35 xs) < 35
2020-12-22 00:12:51 +0100 <ski> > genericLength [0 ..] < (35 :: Natural)
2020-12-22 00:12:53 +0100 <lambdabot> False
2020-12-22 00:12:53 +0100 <Feuermagier> thx. i get it now
2020-12-22 00:12:59 +0100 <monochrom> You should instead code up a non-partial version of (!) and then ask whether xs!34 gives you Just or Nothing.
2020-12-22 00:13:02 +0100 <glguy> (or the drop thing, etc)
2020-12-22 00:13:23 +0100 <monochrom> Err nevermind, drop and null are better.
2020-12-22 00:13:32 +0100 <hseg> hrm. why does genericLength work here?
2020-12-22 00:13:52 +0100 <ski> because `Natural' has `<' working as you hoped
2020-12-22 00:13:55 +0100 <monochrom> genericLength uses non-tail recursion, length uses tail recursion.
2020-12-22 00:14:00 +0100 <glguy> because generic length is written inefficiently specifically to support this one case
2020-12-22 00:14:02 +0100 <monochrom> Clearly, non-tail recursion is better.
2020-12-22 00:14:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 00:15:01 +0100 <monochrom> genericLength (x:xs) = 1 + genericLength xs. And then, (+) for Natural is lazy in its 2nd operand.
2020-12-22 00:15:18 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 00:15:22 +0100 <monochrom> (Natural is a lazy ADT that does unary representation.)
2020-12-22 00:15:42 +0100 <ski> fuzzypixelz : yes
2020-12-22 00:15:51 +0100 <monochrom> I would call it too-cute-to-be-clear and use drop and null instead.
2020-12-22 00:15:51 +0100 <ski> Feuermagier : good
2020-12-22 00:16:01 +0100 <hseg> k
2020-12-22 00:17:18 +0100 <hseg> hrm. am using this sample size as a way of getting quickcheck to avoid getting bogged down on the heavy cases, but obviously this skews the data
2020-12-22 00:17:19 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-22 00:17:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-22 00:18:00 +0100 <hseg> would much rather just set a non-fatal timeout and classify inputs by size and proportion that passed/timed out
2020-12-22 00:18:25 +0100 <hseg> especially since this test is giving me ~50% discard rates
2020-12-22 00:20:49 +0100 <monochrom> I don't know QuickCheck, but I would maybe surrender and handcode my own probability distribution that gives very low probabilities to large sizes.
2020-12-22 00:20:59 +0100dani-(sid341953@gateway/web/irccloud.com/x-etuikjdqhtlxnikg) (Ping timeout: 244 seconds)
2020-12-22 00:21:15 +0100graingert(sid128301@gateway/web/irccloud.com/x-bjuycxdqgmhotamy) (Ping timeout: 246 seconds)
2020-12-22 00:21:26 +0100kristjansson(sid126207@gateway/web/irccloud.com/x-zemoiiyajxcgmkny) (Ping timeout: 258 seconds)
2020-12-22 00:21:31 +0100kyagrd__(sid102627@gateway/web/irccloud.com/x-rqbpporrihbcpahe) (Ping timeout: 268 seconds)
2020-12-22 00:21:38 +0100jackdk(sid373013@gateway/web/irccloud.com/x-arnfpemfesqxinsb) (Ping timeout: 260 seconds)
2020-12-22 00:21:38 +0100hazard-pointer(sid331723@gateway/web/irccloud.com/x-xwxkfcgpqygcxmpg) (Ping timeout: 264 seconds)
2020-12-22 00:21:38 +0100rslima_____(sid26145@gateway/web/irccloud.com/x-ulbqzbetuoeoivoe) (Ping timeout: 264 seconds)
2020-12-22 00:21:39 +0100kozowu(uid44796@gateway/web/irccloud.com/x-ehcrldadbfrqmeyx) (Ping timeout: 260 seconds)
2020-12-22 00:22:03 +0100 <monochrom> Last year I learned random generation of trees the hard and dumb way.
2020-12-22 00:22:14 +0100ocharles(sid30093@musicbrainz/user/ocharles) (Ping timeout: 264 seconds)
2020-12-22 00:22:14 +0100 <hseg> oh?
2020-12-22 00:22:35 +0100m-renaud(sid333785@gateway/web/irccloud.com/x-bvdukrsbucqgcnqd) (Ping timeout: 258 seconds)
2020-12-22 00:22:37 +0100 <monochrom> I went "with probability 0.5, have no children; with the other 0.5, have 2 children"
2020-12-22 00:22:39 +0100agander_m(sid407952@gateway/web/irccloud.com/x-ctyuuwytdqmcprct) (Ping timeout: 246 seconds)
2020-12-22 00:22:45 +0100ghuntley(sid16877@gateway/web/irccloud.com/x-bidlwzbzmecvbxqt) (Ping timeout: 268 seconds)
2020-12-22 00:22:48 +0100typetetris(sid275937@gateway/web/irccloud.com/x-msdsoshziggpwxpy) (Ping timeout: 260 seconds)
2020-12-22 00:22:50 +0100glowcoil(sid3405@gateway/web/irccloud.com/x-lqqmqvcnwcqvjpmg) (Ping timeout: 264 seconds)
2020-12-22 00:22:50 +0100srhb(sid400352@NixOS/user/srhb) (Ping timeout: 264 seconds)
2020-12-22 00:22:50 +0100Kamuela(sid111576@gateway/web/irccloud.com/x-bphhyywmrokmqdlb) (Ping timeout: 264 seconds)
2020-12-22 00:23:07 +0100milessabin(sid86799@gateway/web/irccloud.com/x-movwswjvobpojuzc) (Ping timeout: 260 seconds)
2020-12-22 00:23:07 +0100taktoa[c](sid282096@gateway/web/irccloud.com/x-lvdaposrlneldkme) (Ping timeout: 260 seconds)
2020-12-22 00:23:08 +0100 <monochrom> So my program took forever because it's generated a neverending tree.
2020-12-22 00:23:23 +0100J_Arcane(sid119274@gateway/web/irccloud.com/x-efprusjudjcoflyt) (Ping timeout: 260 seconds)
2020-12-22 00:23:41 +0100 <monochrom> I talked about it here and someone pointed out the very obvious makes-me-bang-head-at-wall-why-didn't-I-see-it-it's-so-obvious:
2020-12-22 00:24:13 +0100 <monochrom> So every node has 1 child on average. This is not going to end.
2020-12-22 00:24:30 +0100 <hseg> oh. oops
2020-12-22 00:24:49 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
2020-12-22 00:25:07 +0100 <monochrom> The irony is I taught expected values to students, in terms of average case running time.
2020-12-22 00:26:09 +0100 <hseg> heh
2020-12-22 00:26:10 +0100 <fuzzypixelz> ski: but how?
2020-12-22 00:26:21 +0100 <hseg> so how *do* you gen random trees?
2020-12-22 00:26:22 +0100 <monochrom> Anyway, it motivated me to read a couple of papers on randomly generating trees with a target size, and recalling my knowledge of generating polynomials, combinatorics, etc.
2020-12-22 00:27:46 +0100 <monochrom> OK, so you can still go: "after generated a node, when deciding whether it is leaf or internal: with probability p, it's a leaf; with probability 1-p, it's internal, has two children" recursively.
2020-12-22 00:28:11 +0100 <monochrom> But just be careful with p and 1-p. There is even a formula for them if you have a desired global size in mind.
2020-12-22 00:28:21 +0100 <hseg> and then you pick p so the expected tree size is correct?
2020-12-22 00:28:26 +0100 <monochrom> Yeah.
2020-12-22 00:29:30 +0100 <monochrom> I don't have the formula. But I can point you to the paper. Alternatively, don't worry about it, just try some sensible values, check that the expected value is reasonable.
2020-12-22 00:30:05 +0100 <hseg> hrm... so E[size]=(1-p)E[size]^2 at fixed point, so you'd want 1-p=1/target ?
2020-12-22 00:30:35 +0100 <monochrom> "Boltzmann samplers for the random generation of combinatorial structures"
2020-12-22 00:30:47 +0100sandy-claws(jess@freenode/staff/jess)
2020-12-22 00:31:01 +0100 <ski> fuzzypixelz : just indent enough. i prefer leading following lines with `.'
2020-12-22 00:31:33 +0100 <hseg> ty
2020-12-22 00:31:37 +0100 <monochrom> Yeah I think that's it.
2020-12-22 00:32:31 +0100 <hseg> back to my quickcheck code, just noticed i can potentially replace a case filter by correct-by-construction generation
2020-12-22 00:33:01 +0100 <ski> or one can used `sized' to cut-off depth (or number of nodes)
2020-12-22 00:33:11 +0100 <ski> @type sized
2020-12-22 00:33:12 +0100 <lambdabot> (Int -> Gen a) -> Gen a
2020-12-22 00:33:13 +0100 <hseg> except i need to convert a function :: RandomGen g => Int -> g -> (t,g) to Int -> Gen t
2020-12-22 00:33:43 +0100 <hseg> and these Ints differ (the function accepts target size, I want to accept max size)
2020-12-22 00:34:05 +0100 <hseg> the latter can be dealt with. how do i do the former?
2020-12-22 00:34:23 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 00:39:25 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 00:40:10 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523)
2020-12-22 00:40:13 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Ping timeout: 258 seconds)
2020-12-22 00:40:18 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 00:42:14 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2020-12-22 00:42:40 +0100 <hseg> ok, can just explicitly construct it with MkGen and drop the new seed
2020-12-22 00:43:48 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-12-22 00:44:14 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 00:45:28 +0100Lowl3v3l(~Lowl3v3l@dslb-090-186-057-171.090.186.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2020-12-22 00:45:45 +0100Lowl3v3l(~Lowl3v3l@dslb-090-186-057-171.090.186.pools.vodafone-ip.de)
2020-12-22 00:46:00 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-22 00:47:02 +0100kam1(~kam1@24.231.108.143) (Read error: Connection reset by peer)
2020-12-22 00:47:20 +0100kam1(~kam1@24.231.108.143)
2020-12-22 00:47:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 00:47:34 +0100borne(~fritjof@200116b864861500c0a3d285e8e687f4.dip.versatel-1u1.de)
2020-12-22 00:48:16 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2020-12-22 00:51:17 +0100 <__monty__> > case Data.Map.singleton 1 of Data.Map.empty -> True; _ -> False
2020-12-22 00:51:20 +0100 <lambdabot> error:
2020-12-22 00:51:20 +0100 <lambdabot> Qualified name in binding position: Data.Map.empty
2020-12-22 00:51:33 +0100 <__monty__> Can't pattern match on an empty Map?
2020-12-22 00:51:59 +0100al3x27(~plovs@85.254.75.83) (Ping timeout: 260 seconds)
2020-12-22 00:52:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-22 00:55:19 +0100 <ski> __monty__ : you could define a pattern synonym ..
2020-12-22 00:55:29 +0100 <__monty__> internal library
2020-12-22 00:55:46 +0100 <__monty__> Woops.
2020-12-22 00:55:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-22 00:56:17 +0100 <__monty__> ski: I should look into that. In this case I'm fine with | M.null map though.
2020-12-22 00:56:43 +0100 <ski> what're you doing, in case of non-empty ?
2020-12-22 00:57:15 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Remote host closed the connection)
2020-12-22 00:58:01 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2020-12-22 00:59:38 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-12-22 01:00:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-22 01:00:21 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-22 01:01:59 +0100 <fuzzypixelz> I I want to map elem on a list of elements and lists, how can I do that?
2020-12-22 01:02:16 +0100 <fuzzypixelz> elem (1, [1, 2, 3]) doesn't work for example
2020-12-22 01:02:29 +0100 <fuzzypixelz> so I can't map elem on a list of tuples
2020-12-22 01:04:41 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) (Ping timeout: 268 seconds)
2020-12-22 01:04:49 +0100 <fuzzypixelz> here's what I did: elem' (e, l) = elem e l
2020-12-22 01:04:55 +0100 <fuzzypixelz> and just used elem1
2020-12-22 01:08:14 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 256 seconds)
2020-12-22 01:08:58 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 258 seconds)
2020-12-22 01:11:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-22 01:12:38 +0100Genome(~genome@cpc153687-nrwh14-2-0-cust19.4-4.cable.virginm.net) (Quit: Leaving)
2020-12-22 01:13:14 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
2020-12-22 01:14:06 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2020-12-22 01:15:34 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2020-12-22 01:15:38 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-22 01:18:22 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de)
2020-12-22 01:21:54 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 265 seconds)
2020-12-22 01:22:53 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-22 01:24:45 +0100 <hseg> any way to optimize this? http://ix.io/2J4J ds and terms are heavy functions that i don't think i can optimize much
2020-12-22 01:25:04 +0100 <hseg> (restricted by combinatorial explosion)
2020-12-22 01:25:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 01:26:50 +0100 <hseg> especially should be able to share one (ds m) call over the entire needle call
2020-12-22 01:28:53 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
2020-12-22 01:29:48 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-12-22 01:31:27 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection)
2020-12-22 01:31:34 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-22 01:32:09 +0100 <hseg> oh wait. ds m :: [(a,Int)] is injective, so can replace the sum by a lookup
2020-12-22 01:32:53 +0100 <hseg> still needs a shared ds call though
2020-12-22 01:33:14 +0100hiroaki(~hiroaki@ip4d16fa3b.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2020-12-22 01:35:17 +0100shenyi(uid216035@gateway/web/irccloud.com/x-uvfrbzkrqfbnyxjp) (Quit: Connection closed for inactivity)
2020-12-22 01:35:31 +0100irc_user(uid423822@gateway/web/irccloud.com/x-zpqgavcurwhmhgkg)
2020-12-22 01:37:57 +0100 <monochrom> needle m l = let dsm = ds m in [(t, f * occs t dsm) | ...]
2020-12-22 01:38:09 +0100 <monochrom> occs t dsm = sum . map snd $ filter ((== t) . fst) dsm
2020-12-22 01:40:41 +0100 <hseg> sure, though as i realized 5m ago, can replace the sum . filter by just fromMaybe 0 . lookup
2020-12-22 01:41:19 +0100 <hseg> and am not seeing *that* drastic of an improvement by floating the (ds m) call out, for some reason
2020-12-22 01:41:57 +0100 <hseg> ... indeed, am doing a poor man's inner join of maps on lists
2020-12-22 01:42:04 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 01:45:54 +0100 <hseg> so should rather refactor ds, terms into Map [Int] Int and replace needle by unionsWith (+) ([0..m] <&> intersectionWith (*) (ds m) . (`terms` l))
2020-12-22 01:46:03 +0100 <dsal> fuzzypixelz: the tuple is possibly confusing you.
2020-12-22 01:46:14 +0100 <xsperry> fuzzypixelz, what's your input and desired output?
2020-12-22 01:46:15 +0100 <dsal> It's not clear what you mean by "map elem"
2020-12-22 01:46:25 +0100wonko7(~wonko7@lns-bzn-55-82-255-183-4.adsl.proxad.net) (Ping timeout: 264 seconds)
2020-12-22 01:46:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2020-12-22 01:47:12 +0100 <dsal> > uncurry elem <$> [(1, [1, 2, 3]), (4, [1, 2, 3])] -- fuzzypixelz do you mean something like this?
2020-12-22 01:47:14 +0100 <lambdabot> [True,False]
2020-12-22 01:48:09 +0100 <dsal> :t uncurry
2020-12-22 01:48:11 +0100 <lambdabot> (a -> b -> c) -> (a, b) -> c
2020-12-22 01:49:42 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-90.cust.tzulo.com)
2020-12-22 01:51:16 +0100Wamanuz(~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Ping timeout: 240 seconds)
2020-12-22 01:52:08 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-22 01:56:01 +0100delYsid(~user@unaffiliated/delysid)
2020-12-22 01:56:34 +0100nitrixnitrix-mas
2020-12-22 01:58:23 +0100 <delYsid> Given two rose trees a and b where b is a subset of a, is there a simple way to impose the ordering of b onto a?
2020-12-22 01:59:18 +0100 <delYsid> IOW all the nodes present in b should be put first in a, in the same order they occur in b.
2020-12-22 01:59:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-22 02:00:55 +0100arybczak(~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) (Quit: Konversation terminated!)
2020-12-22 02:01:42 +0100MVQq(~anja@198.254.202.72) (Quit: q)
2020-12-22 02:02:24 +0100MarcelineVQ(~anja@198.254.202.72)
2020-12-22 02:03:10 +0100 <fuzzypixelz> dsal: yes that's exactly what I need, thank you
2020-12-22 02:03:57 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-22 02:05:13 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
2020-12-22 02:07:14 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds)
2020-12-22 02:10:52 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 246 seconds)
2020-12-22 02:10:59 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-exdojaqirdkfmvpz) (Quit: Connection closed for inactivity)
2020-12-22 02:11:00 +0100kam1(~kam1@24.231.108.143)
2020-12-22 02:11:02 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 260 seconds)
2020-12-22 02:11:04 +0100sgibber2018(~arch-gibb@208.85.237.137) (Quit: WeeChat 3.0)
2020-12-22 02:11:37 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2020-12-22 02:11:39 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-22 02:11:54 +0100Tario(~Tario@201.192.165.173)
2020-12-22 02:14:08 +0100iqubic(~user@2601:602:9500:4870:55c5:a9fe:a753:58ff) (Ping timeout: 258 seconds)
2020-12-22 02:14:20 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-duufhsmgfmkrtnrr)
2020-12-22 02:14:26 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-22 02:15:16 +0100 <xsperry> <$> is just fmap btw, which is map for lists
2020-12-22 02:15:23 +0100iqubic(~user@c-67-171-38-72.hsd1.wa.comcast.net)
2020-12-22 02:16:11 +0100sgibber2018(~arch-gibb@208.85.237.137) (Client Quit)
2020-12-22 02:16:28 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-22 02:16:49 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 272 seconds)
2020-12-22 02:16:57 +0100 <fuzzypixelz> xsperry: oh I see
2020-12-22 02:17:23 +0100 <fuzzypixelz> my (haskell) solution for AOC day 6: https://bpa.st/4QIA
2020-12-22 02:17:37 +0100 <fuzzypixelz> Any feedback is (very) appreciated
2020-12-22 02:17:39 +0100 <fuzzypixelz> :P
2020-12-22 02:18:37 +0100 <fuzzypixelz> uhh, I mean, please give me feedback/comments/remarks .. anything
2020-12-22 02:21:19 +0100MOSCOS(~MOSCOS@152.32.70.55)
2020-12-22 02:24:25 +0100Mikagami(~MOSCOS@122.54.107.175) (Ping timeout: 240 seconds)
2020-12-22 02:24:51 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-22 02:26:25 +0100MOSCOS(~MOSCOS@152.32.70.55) (Ping timeout: 240 seconds)
2020-12-22 02:28:00 +0100guest1222(~user@49.5.6.87)
2020-12-22 02:28:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 02:28:44 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 02:29:17 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 02:30:16 +0100MOSCOS(~MOSCOS@152.32.70.55)
2020-12-22 02:30:58 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-12-22 02:31:52 +0100jumper149(~jumper149@ip4d1622a9.dynamic.kabel-deutschland.de) (Quit: WeeChat 2.9)
2020-12-22 02:32:16 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 02:32:58 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2020-12-22 02:32:58 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2020-12-22 02:32:58 +0100dibblego(~dibblego@haskell/developer/dibblego)
2020-12-22 02:33:25 +0100Mikagami(~MOSCOS@122.54.107.175) (Ping timeout: 240 seconds)
2020-12-22 02:33:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-22 02:33:51 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-22 02:34:20 +0100fuzzypixelz_(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-22 02:34:27 +0100 <hseg> hrm. is there some way of altering the key of a map for a single query?
2020-12-22 02:35:25 +0100MOSCOS(~MOSCOS@152.32.70.55) (Ping timeout: 240 seconds)
2020-12-22 02:35:36 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 240 seconds)
2020-12-22 02:35:39 +0100fuzzypixelz_fuzzypixelz
2020-12-22 02:36:47 +0100 <hseg> otherwise, i'm forced to compute the key-dependent values before alteration, adding unnecessary strictness
2020-12-22 02:40:05 +0100 <hseg> hrm. and that breaks all of my abstraction boundaries
2020-12-22 02:40:50 +0100 <hseg> unfortunately, maps are not key-value pairs, so this proposed alteration is too expensive to be reasonable
2020-12-22 02:41:04 +0100 <ski> > ST.Lazy.runST (do ref <- STRef.Lazy.newSTRef []; let loop n = do loop (n+1); STRef.Lazy.modifySTRef ref (n:) in do loop 0; STRef.Lazy.readSTRef ref)
2020-12-22 02:41:10 +0100 <lambdabot> mueval-core: Time limit exceeded
2020-12-22 02:41:33 +0100 <ski> monochrom : was one of your `ST.Lazy' examples something like that ^ ?
2020-12-22 02:44:11 +0100 <monochrom> Yes. Head/left recursion works.
2020-12-22 02:44:50 +0100cn8(~8cn@2603-8081-8f01-4e00-0c24-30c9-e128-1797.res6.spectrum.com)
2020-12-22 02:45:01 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 02:46:25 +0100 <hseg> ok, converting to maps made everything *much* faster
2020-12-22 02:46:31 +0100 <ski> so i wonder why that wasn't productive
2020-12-22 02:48:04 +0100columbarius(~columbari@mue-88-130-54-123.dsl.tropolys.de) (Ping timeout: 260 seconds)
2020-12-22 02:48:08 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-12-22 02:49:50 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2020-12-22 02:50:08 +0100columbarius(~columbari@i5E86B3C9.versanet.de)
2020-12-22 02:50:54 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-12-22 02:51:02 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 02:51:21 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 02:51:46 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-22 02:52:51 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-22 02:53:26 +0100hseg(~gesh@IGLD-84-228-238-87.inter.net.il) (Quit: WeeChat 3.0)
2020-12-22 02:55:34 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 272 seconds)
2020-12-22 02:55:34 +0100Lord_of_Life_Lord_of_Life
2020-12-22 02:58:16 +0100 <koz_> ski: It spent too much time procastinating on social media. :P
2020-12-22 02:58:27 +0100 <fuzzypixelz> just dropping this https://bpa.st/4QIA again (my aoc day 6 solution), if you have anything to say about it please do
2020-12-22 02:59:15 +0100xcmw(~textual@2603-6011-2200-f103-c0c2-1e0a-7ed6-0dd8.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 03:01:40 +0100xcmw(~textual@2603-6011-2200-f103-c0c2-1e0a-7ed6-0dd8.res6.spectrum.com)
2020-12-22 03:01:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 03:01:52 +0100christo(~chris@81.96.113.213)
2020-12-22 03:06:13 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 264 seconds)
2020-12-22 03:06:51 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 272 seconds)
2020-12-22 03:07:29 +0100hackageyesod-form-multi 1.7.0 - Multi-input form handling for Yesod Web Framework https://hackage.haskell.org/package/yesod-form-multi-1.7.0 (Burtannia)
2020-12-22 03:10:09 +0100eacameron(uid256985@gateway/web/irccloud.com/x-vxdrpcotoqmkhsji)
2020-12-22 03:12:32 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 03:15:35 +0100ADG1089_(~adg1089@122.163.166.13)
2020-12-22 03:16:57 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 260 seconds)
2020-12-22 03:19:26 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 03:19:29 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 03:19:49 +0100ADG1089_(~adg1089@122.163.166.13) (Ping timeout: 246 seconds)
2020-12-22 03:19:51 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 03:24:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2020-12-22 03:25:02 +0100ADG1089_(~adg1089@122.163.166.13)
2020-12-22 03:25:23 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2020-12-22 03:27:34 +0100jmchael(~jmchael@81.174.205.210) (Ping timeout: 256 seconds)
2020-12-22 03:29:25 +0100 <delYsid> pathTree :: Tree a -> Tree (NonEmpty a)
2020-12-22 03:29:30 +0100 <delYsid> pathTree = foldTree $ \a -> Node (pure a) . (fmap . fmap) (cons a)
2020-12-22 03:29:42 +0100 <guest1222> is rio a good library to use?
2020-12-22 03:29:44 +0100 <delYsid> Thats about the most useful function I have ever written/discovered.
2020-12-22 03:29:46 +0100 <guest1222> https://hackage.haskell.org/package/rio
2020-12-22 03:30:13 +0100ADG1089_(~adg1089@122.163.166.13) (Ping timeout: 268 seconds)
2020-12-22 03:30:27 +0100 <glguy> guest1222, it's unmaintained build-depends would make it a mess to rely on
2020-12-22 03:30:37 +0100 <guest1222> glguy: ...
2020-12-22 03:32:22 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-22 03:32:58 +0100christo(~chris@81.96.113.213)
2020-12-22 03:36:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-22 03:37:19 +0100christo(~chris@81.96.113.213) (Ping timeout: 246 seconds)
2020-12-22 03:39:51 +0100delYsid(~user@unaffiliated/delysid) (Remote host closed the connection)
2020-12-22 03:44:36 +0100christo(~chris@81.96.113.213)
2020-12-22 03:45:28 +0100 <guest1222> glguy: what runParser is used to in parsec?
2020-12-22 03:45:44 +0100 <guest1222> there's State monad in runParser?
2020-12-22 03:49:00 +0100kam1(~kam1@24.231.108.143) (Read error: Connection reset by peer)
2020-12-22 03:49:32 +0100drbean(~drbean@TC210-63-209-143.static.apol.com.tw)
2020-12-22 03:50:13 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-22 03:51:25 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 03:51:31 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) ()
2020-12-22 03:54:21 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 272 seconds)
2020-12-22 03:55:11 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 03:56:13 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2020-12-22 03:57:03 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-22 03:57:19 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 03:57:24 +0100Kaeipi(~Kaiepi@47.54.252.148)
2020-12-22 03:58:34 +0100kam1(~kam1@24.231.108.143)
2020-12-22 03:59:33 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 258 seconds)
2020-12-22 04:00:16 +0100drbean(~drbean@TC210-63-209-143.static.apol.com.tw) (Ping timeout: 240 seconds)
2020-12-22 04:00:20 +0100drbean_(~drbean@TC210-63-209-167.static.apol.com.tw)
2020-12-22 04:00:57 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 04:01:05 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 04:01:33 +0100mastarija(~mastarija@93-136-154-213.adsl.net.t-com.hr)
2020-12-22 04:01:51 +0100xff0x_(~fox@2001:1a81:537d:6200:a74c:d71f:eb2e:2908) (Ping timeout: 258 seconds)
2020-12-22 04:03:44 +0100xff0x_(~fox@2001:1a81:53b4:600:dcc7:7fd8:9f40:3657)
2020-12-22 04:05:41 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 258 seconds)
2020-12-22 04:07:50 +0100drbean_(~drbean@TC210-63-209-167.static.apol.com.tw) (Ping timeout: 268 seconds)
2020-12-22 04:07:52 +0100 <glguy> guest1222, I don't understand the question
2020-12-22 04:08:14 +0100 <glguy> You're asking about: runParser :: Stream s Identity t => Parsec s u a -> u -> SourceName -> s -> Either ParseError a ?
2020-12-22 04:09:46 +0100jedws(~jedws@121.209.189.201)
2020-12-22 04:11:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 04:11:24 +0100drbean(~drbean@TC210-63-209-160.static.apol.com.tw)
2020-12-22 04:11:26 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 256 seconds)
2020-12-22 04:11:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 04:12:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 04:12:39 +0100 <glguy> and parsec provides built-in support for tracking some state, along the path of a successful parse
2020-12-22 04:12:45 +0100jespada(~jespada@90.254.245.49)
2020-12-22 04:14:21 +0100theDon(~td@muedsl-82-207-238-191.citykom.de) (Read error: Connection reset by peer)
2020-12-22 04:15:06 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-22 04:15:43 +0100 <dsal> :t map concat
2020-12-22 04:15:44 +0100 <lambdabot> Foldable t => [t [a]] -> [[a]]
2020-12-22 04:15:52 +0100 <dsal> :t foldMap
2020-12-22 04:15:53 +0100 <lambdabot> (Foldable t, Monoid m) => (a -> m) -> t a -> m
2020-12-22 04:16:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-12-22 04:16:18 +0100theDon(~td@muedsl-82-207-238-252.citykom.de)
2020-12-22 04:17:29 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2020-12-22 04:17:49 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 04:19:16 +0100Wayno(~Wayno@185.103.96.147) (Remote host closed the connection)
2020-12-22 04:19:42 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
2020-12-22 04:20:02 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2020-12-22 04:20:02 +0100lagothrixGuest79707
2020-12-22 04:20:02 +0100Guest79707(~lagothrix@unaffiliated/lagothrix) (Killed (orwell.freenode.net (Nickname regained by services)))
2020-12-22 04:20:02 +0100xirhtogallagothrix
2020-12-22 04:22:57 +0100cn8(~8cn@2603-8081-8f01-4e00-0c24-30c9-e128-1797.res6.spectrum.com) (Read error: Connection reset by peer)
2020-12-22 04:25:27 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-22 04:26:44 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 04:27:47 +0100 <MarcelineVQ> :t fold . fold
2020-12-22 04:27:49 +0100 <lambdabot> (Foldable t1, Foldable t2, Monoid c, Monoid (t1 c)) => t2 (t1 c) -> c
2020-12-22 04:29:18 +0100drbean_(~drbean@TC210-63-209-212.static.apol.com.tw)
2020-12-22 04:29:42 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-22 04:29:46 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Client Quit)
2020-12-22 04:30:03 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-12-22 04:30:05 +0100drbean(~drbean@TC210-63-209-160.static.apol.com.tw) (Ping timeout: 240 seconds)
2020-12-22 04:32:13 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-22 04:37:33 +0100nineonin_(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-22 04:40:00 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-duufhsmgfmkrtnrr) ()
2020-12-22 04:40:57 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 260 seconds)
2020-12-22 04:43:52 +0100mastarija(~mastarija@93-136-154-213.adsl.net.t-com.hr) (Quit: Leaving)
2020-12-22 04:45:17 +0100MarcelineVQ(~anja@198.254.202.72) (Ping timeout: 256 seconds)
2020-12-22 04:45:45 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 04:48:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 04:48:49 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2020-12-22 04:49:20 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2020-12-22 04:50:04 +0100vs^(vs@ip98-184-89-2.mc.at.cox.net)
2020-12-22 04:50:23 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2020-12-22 04:50:36 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2020-12-22 04:54:22 +0100_Cactus_(~cactus@2404:e801:200e:1f22:94f1:f531:bd80:25b1)
2020-12-22 04:56:30 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 04:56:46 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 246 seconds)
2020-12-22 04:56:52 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 04:57:04 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-22 04:57:49 +0100sgibber2018(~arch-gibb@208.85.237.137) (Ping timeout: 258 seconds)
2020-12-22 04:58:03 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-rvdkfbbedyjxkcho) (Quit: Connection closed for inactivity)
2020-12-22 05:00:20 +0100rprije(~rprije@202.168.43.92)
2020-12-22 05:00:30 +0100Rudd0(~Rudd0@185.189.115.103)
2020-12-22 05:01:52 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-22 05:02:28 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
2020-12-22 05:02:47 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:65a1:7ff2:d4f4:eebe)
2020-12-22 05:05:08 +0100orion(~orion@c-76-19-238-5.hsd1.ma.comcast.net)
2020-12-22 05:05:08 +0100orion(~orion@c-76-19-238-5.hsd1.ma.comcast.net) (Changing host)
2020-12-22 05:05:08 +0100orion(~orion@unaffiliated/orion)
2020-12-22 05:05:10 +0100MarcelineVQ(~anja@198.254.202.72)
2020-12-22 05:07:02 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 268 seconds)
2020-12-22 05:10:18 +0100coot(~coot@37.30.50.187.nat.umts.dynamic.t-mobile.pl)
2020-12-22 05:11:38 +0100srk(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2020-12-22 05:11:56 +0100srk(~sorki@gateway/tor-sasl/sorki)
2020-12-22 05:13:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 05:13:22 +0100xcmw(~textual@2603-6011-2200-f103-c0c2-1e0a-7ed6-0dd8.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 05:14:36 +0100irc_user(uid423822@gateway/web/irccloud.com/x-zpqgavcurwhmhgkg) (Quit: Connection closed for inactivity)
2020-12-22 05:15:01 +0100flukiluke1(~flukiluke@217.146.82.202)
2020-12-22 05:15:05 +0100zv(~zv@unaffiliated/zv) (Ping timeout: 240 seconds)
2020-12-22 05:16:28 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Remote host closed the connection)
2020-12-22 05:16:34 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 05:17:48 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2020-12-22 05:18:44 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2020-12-22 05:19:51 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de)
2020-12-22 05:22:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-22 05:22:32 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2020-12-22 05:24:38 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-12-22 05:25:01 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 05:25:11 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2020-12-22 05:25:29 +0100jmchael(~jmchael@81.174.205.210)
2020-12-22 05:25:42 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2020-12-22 05:26:15 +0100xcmw(~textual@cpe-69-133-55-43.cinci.res.rr.com)
2020-12-22 05:27:30 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 05:30:03 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
2020-12-22 05:32:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 268 seconds)
2020-12-22 05:34:48 +0100iqubic(~user@c-67-171-38-72.hsd1.wa.comcast.net) (Remote host closed the connection)
2020-12-22 05:37:04 +0100iqubic(~user@2601:602:9500:4870:e949:f050:eec9:86cb)
2020-12-22 05:41:30 +0100hackageHaskellNet 0.5.3 - Client support for POP3, SMTP, and IMAP https://hackage.haskell.org/package/HaskellNet-0.5.3 (AlexanderVershilov)
2020-12-22 05:43:36 +0100jedws(~jedws@121.209.189.201)
2020-12-22 05:49:23 +0100coot(~coot@37.30.50.187.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-22 05:49:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-22 05:49:25 +0100orion(~orion@unaffiliated/orion) (Ping timeout: 264 seconds)
2020-12-22 05:53:17 +0100jmchael(~jmchael@81.174.205.210) (Ping timeout: 268 seconds)
2020-12-22 05:54:10 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 05:54:25 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
2020-12-22 05:57:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 05:58:46 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 258 seconds)
2020-12-22 06:01:05 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 06:01:19 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-22 06:01:25 +0100Kaeipi(~Kaiepi@47.54.252.148)
2020-12-22 06:02:22 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2020-12-22 06:02:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-22 06:06:12 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 06:06:14 +0100MarcelineVQ(~anja@198.254.202.72) (Ping timeout: 268 seconds)
2020-12-22 06:09:29 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 06:10:30 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Remote host closed the connection)
2020-12-22 06:12:01 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 246 seconds)
2020-12-22 06:12:34 +0100Kronic(~Kronic___@84.203.96.46) (Read error: Connection reset by peer)
2020-12-22 06:12:59 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-22 06:13:32 +0100Tario(~Tario@201.192.165.173)
2020-12-22 06:20:15 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 06:21:18 +0100DTZUZU_(~DTZUZU@207.81.171.116)
2020-12-22 06:21:49 +0100ADG1089__(~aditya@122.163.166.13)
2020-12-22 06:22:11 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 06:22:29 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer)
2020-12-22 06:22:36 +0100 <iqubic> Is there a way to short circuit a Do block? I have a Do block using State GameState Int, for a custom type GameState. I want to first check if GameState has a given property, and if so, I want to do none of the remaining computations and just return of a set value.
2020-12-22 06:23:55 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net)
2020-12-22 06:24:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 260 seconds)
2020-12-22 06:25:42 +0100 <monochrom> Just use a conditional.
2020-12-22 06:25:46 +0100 <iqubic> How so?
2020-12-22 06:26:01 +0100 <monochrom> You know if-then-else? You know case-of?
2020-12-22 06:26:14 +0100DTZUZU_(~DTZUZU@207.81.171.116) (Ping timeout: 260 seconds)
2020-12-22 06:26:33 +0100 <iqubic> I do.
2020-12-22 06:26:45 +0100 <pavonia> It depends on the used monad, e.g. Cont can do that, IIRC
2020-12-22 06:26:55 +0100 <iqubic> I'm using State.
2020-12-22 06:27:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-22 06:27:47 +0100 <pavonia> Then use a conditional :)
2020-12-22 06:28:20 +0100 <iqubic> I se.
2020-12-22 06:32:08 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-90.cust.tzulo.com) (Quit: Leaving)
2020-12-22 06:32:56 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 240 seconds)
2020-12-22 06:35:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 06:35:13 +0100borne(~fritjof@200116b864861500c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2020-12-22 06:36:46 +0100borne(~fritjof@200116b864c6f800cebf0c02893372bd.dip.versatel-1u1.de)
2020-12-22 06:40:28 +0100MarcelineVQ(~anja@198.254.202.72)
2020-12-22 06:41:15 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 06:42:57 +0100al3x27(~plovs@85.254.75.83)
2020-12-22 06:46:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 264 seconds)
2020-12-22 06:46:22 +0100_Cactus_(~cactus@2404:e801:200e:1f22:94f1:f531:bd80:25b1) (Ping timeout: 260 seconds)
2020-12-22 06:46:33 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 06:50:52 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
2020-12-22 06:53:42 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 06:55:09 +0100jathan(~jathan@69.61.93.38) (Quit: WeeChat 2.3)
2020-12-22 06:59:37 +0100Mikagami(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-22 07:00:07 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-22 07:02:25 +0100jlamothe(~jlamothe@198.251.55.207) (Ping timeout: 240 seconds)
2020-12-22 07:04:42 +0100mounty(~mounty@2001:8000:2f59:0:6d56:fa71:1764:6b85) (Ping timeout: 260 seconds)
2020-12-22 07:04:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-22 07:06:33 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 07:08:47 +0100 <gentauro> tdammers: hey, you still haven't got any scandinavians? https://well-typed.com/who_we_are/
2020-12-22 07:09:03 +0100 <gentauro> tdammers: is it cos they don't apply, or do you just not hire scandis? :D
2020-12-22 07:09:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-22 07:09:20 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 07:09:38 +0100 <gentauro> tdammers: https://well-typed.com/blog/2020/12/haskell-development-job-with-well-typed/
2020-12-22 07:09:51 +0100 <MarcelineVQ> the latter for sure
2020-12-22 07:11:27 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 260 seconds)
2020-12-22 07:12:49 +0100ADG1089__(~aditya@122.163.166.13) (Remote host closed the connection)
2020-12-22 07:13:10 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 07:13:19 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 07:14:07 +0100jedws(~jedws@121.209.189.201)
2020-12-22 07:14:29 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 272 seconds)
2020-12-22 07:15:20 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42)
2020-12-22 07:16:44 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-22 07:16:57 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-22 07:17:40 +0100zv(~zv@unaffiliated/zv)
2020-12-22 07:18:59 +0100 <gentauro> btw, troll spotted? https://yairchu.github.io/posts/silly-haskell-formatting
2020-12-22 07:19:26 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-22 07:19:38 +0100 <gentauro> I tend to write my signtaures like this for readability (and sanity) -> https://gitlab.com/spisemisu/bornhack-demo-2019/-/blob/master/src/Main.hs#L52-59
2020-12-22 07:19:50 +0100 <gentauro> how is this "silly"?
2020-12-22 07:20:03 +0100grdvnl(~gdrvnl@cpe-76-94-36-134.socal.res.rr.com)
2020-12-22 07:21:12 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de)
2020-12-22 07:23:45 +0100_Cactus_(~cactus@2404:e801:200e:1f22:94f1:f531:bd80:25b1)
2020-12-22 07:25:38 +0100 <pavonia> gentauro: Well, he has a point there. If you want to remove/move the first parameter with "silly" formatting, you have to change two lines
2020-12-22 07:25:47 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2020-12-22 07:27:05 +0100 <leifm> The way he prefers works better with proportionally-spaced fonts
2020-12-22 07:27:53 +0100 <MarcelineVQ> I don't strictly adhere to one parameter to one line
2020-12-22 07:28:18 +0100 <MarcelineVQ> I might have 2,3,1 even
2020-12-22 07:29:11 +0100 <MarcelineVQ> Code as an artform should shun strict formatting anyway :>
2020-12-22 07:29:24 +0100 <MarcelineVQ> Make it beautiful not conformant
2020-12-22 07:30:20 +0100 <pavonia> Heh
2020-12-22 07:30:42 +0100 <gentauro> pavonia: so compromise readability for the sake of "lazyness"?
2020-12-22 07:31:07 +0100nineonin_(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2020-12-22 07:31:20 +0100nfd(~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net)
2020-12-22 07:31:50 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-22 07:32:33 +0100 <gentauro> also, I think it's a bit meh to dismiss all of Haskell styling tools -> «I was looking to see what formatting tools exist for Haskell, and discovered that while several tools exist, none fit my taste, and some of these tools were disqualified on the grounds of applying silly formatting.»
2020-12-22 07:32:43 +0100 <gentauro> maybe he should have stayed in the C++ ecosystem
2020-12-22 07:32:47 +0100 <nfd> hey folks :) trying to finish up AoC day 19 and i think i have most of a cfg parser generator (to megaparsec) handy, but i've got some hiccup somewhere here that's causing it to not consume all input (like i expected from the backtracking strat)
2020-12-22 07:32:56 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:65a1:7ff2:d4f4:eebe) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 07:33:18 +0100 <nfd> https://nfd.moe/files/tmp/day19.txt think my problem's in mkParser here
2020-12-22 07:33:18 +0100 <gentauro> nfd: there are `hints` on the /r/haskell ;)
2020-12-22 07:33:29 +0100 <nfd> heh nice
2020-12-22 07:33:54 +0100 <nfd> specifically i'm rejecting good inputs on that last `<* eof` check on the top-level
2020-12-22 07:34:27 +0100 <nfd> i'll check the reddit but i don't know if i want to see how everyone else generally does it before i'm through
2020-12-22 07:34:31 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 07:34:39 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 07:34:59 +0100 <gentauro> btw, I personally use `stylish-haskell`. I somehow agree with the formatting except on imports of constructors and record fields. Instead of beeing multi-line, they are always one-liners …
2020-12-22 07:35:19 +0100 <gentauro> nfd: good point
2020-12-22 07:35:45 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
2020-12-22 07:35:47 +0100 <pavonia> gentauro: I wouldn't say, and I also don't like the formatting suggested in the article, but it doesn't seem like trolling to me
2020-12-22 07:37:56 +0100 <gentauro> pavonia: using the terms "silly" for all others (including Jasper Van der Jeugt tool) compared to "propper" (his) is trolling in my book
2020-12-22 07:38:52 +0100 <gentauro> nfd: I guess it would help if you posted a "sample" of the data to parse …
2020-12-22 07:39:58 +0100xff0x_(~fox@2001:1a81:53b4:600:dcc7:7fd8:9f40:3657) (Ping timeout: 258 seconds)
2020-12-22 07:40:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 07:40:53 +0100xff0x_(~fox@2001:1a81:53b4:600:e33a:6fca:3b6a:86a2)
2020-12-22 07:42:38 +0100nitrix-masnitrix
2020-12-22 07:43:13 +0100EdFletcher(~EdFletche@unaffiliated/edfletchert137)
2020-12-22 07:43:28 +0100 <nfd> so i'm going through with megaparsec debug and i'm mostly seeing what i expected
2020-12-22 07:45:15 +0100 <nfd> aabbbbbaabbbaaaaaabbbbbababaaaaabbaaabba is accepted early at aabbbbbaabbbaaaaaabbbbbababa in the trial input
2020-12-22 07:45:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-22 07:45:31 +0100 <nfd> (and then caught and errored by the guard at the top-level
2020-12-22 07:45:51 +0100 <nfd> gentauro: sorry, i was staring at the debug output :D
2020-12-22 07:46:08 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 268 seconds)
2020-12-22 07:46:55 +0100 <nfd> my first instinct was "well, maybe i need more eof checking in the midst of this thing" but clearly that's probably not *quite* it all of the time
2020-12-22 07:47:30 +0100 <nfd> because parsers may be called in the middle of others, generally
2020-12-22 07:48:09 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-22 07:49:13 +0100 <nfd> this problem kinda smells of Kleene
2020-12-22 07:49:49 +0100xerox_watches Kleene checking his armpits
2020-12-22 07:50:16 +0100kostic_(~kostic@51.194.80.91)
2020-12-22 07:50:39 +0100 <nfd> though the last parser to apparently wrongly succeed was 11, which is by definition in p2. 42, 31 | 42, 11, 31 which isn't very kleeney
2020-12-22 07:50:53 +0100toorevitimirp(~tooreviti@117.182.182.252)
2020-12-22 07:51:03 +0100 <nfd> so maybe i take it back
2020-12-22 07:52:25 +0100 <nfd> and also not very regular
2020-12-22 07:52:44 +0100nfdhas flashbacks of having to do pumping lemma problems in exams
2020-12-22 07:53:33 +0100 <nfd> uptree 11 fails a whole bunch, though! strange
2020-12-22 07:56:04 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 260 seconds)
2020-12-22 07:56:15 +0100Tspoon(tlarjoma@hilla.kapsi.fi) (Ping timeout: 256 seconds)
2020-12-22 07:56:21 +0100Tspoon(tlarjoma@hilla.kapsi.fi)
2020-12-22 07:57:26 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-22 07:58:23 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2020-12-22 07:59:08 +0100nemron(~nemron@2a02:810b:c7bf:fdb8:e5d9:cf51:dbc1:34c4)
2020-12-22 08:00:29 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-22 08:00:53 +0100kostic_(~kostic@51.194.80.91)
2020-12-22 08:01:26 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-12-22 08:09:49 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 264 seconds)
2020-12-22 08:09:58 +0100fxg(~fxg@unaffiliated/fxg)
2020-12-22 08:10:23 +0100Turmiht(2d38964a@45.56.150.74)
2020-12-22 08:11:16 +0100 <Turmiht> Anybody here uses macOS Big Sur to write Haskell?
2020-12-22 08:11:49 +0100 <Turmiht> I got a linker error yesterday and cannot figure it out
2020-12-22 08:14:02 +0100kostic_(~kostic@51.194.80.91)
2020-12-22 08:15:01 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 08:16:24 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-22 08:17:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 08:19:28 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2020-12-22 08:19:31 +0100u0_a203(~u0_a203@37.98.47.224)
2020-12-22 08:19:45 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-zzifphhwbirnbmhh) (Quit: Connection closed for inactivity)
2020-12-22 08:20:33 +0100cfricke(~cfricke@unaffiliated/cfricke) (Client Quit)
2020-12-22 08:22:50 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-22 08:22:52 +0100u0_a203(~u0_a203@37.98.47.224) (Client Quit)
2020-12-22 08:23:17 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 08:24:03 +0100nemron(~nemron@2a02:810b:c7bf:fdb8:e5d9:cf51:dbc1:34c4) (Ping timeout: 258 seconds)
2020-12-22 08:24:38 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 264 seconds)
2020-12-22 08:24:48 +0100 <dminuoso> Turmiht: What error message do you get?
2020-12-22 08:25:43 +0100CMCDragonkai2(~Thunderbi@124.19.3.250)
2020-12-22 08:25:50 +0100 <Turmiht> Resolving dependencies...Build profile: -w ghc-8.8.4 -O1In order, the following will be built (use -v for more details): - distributive-0.6.2 (lib:distributive) (requires build)Starting distributive-0.6.2 (all, legacy fallback)cabal: Failed to build distributive-0.6.2. The failure occurred during theconfigure step. The exception
2020-12-22 08:25:50 +0100 <Turmiht> was:dieVerbatim: user error (cabal: '/Users/turmiht/.ghcup/bin/ghc' exited with anerror:ld: warning: ignoring file/Users/turmiht/.cabal/store/ghc-8.8.4/cbl-dctst-1.0.8-9ce5b252/lib/libHScbl-dctst-1.0.8-9ce5b252.a,building for macOS-x86_64 but attempting to link with file built forunknown-unsupported file format ( 0x21 0x3C 0x61 0x72 0x63 0x68 0x3E
2020-12-22 08:25:51 +0100 <Turmiht> 0x0A 0x2F0x20 0x20 0x20 0x20 0x20 0x20 0x20 )Undefined symbols for architecture x86_64:"_cblzmdctstzm1zi0zi8zm9ce5b252_DistributionziExtraziDoctest_defaultMainWithDoctests_closure",referenced from:_Main_main_info in Main.o_Lu2mR_srt in Main.old: symbol(s) not found for architecture x86_64clang: error: linker command failed with exit code 1 (use -v
2020-12-22 08:25:51 +0100 <Turmiht> to seeinvocation)`gcc' failed in phase `Linker'. (Exit code: 1))
2020-12-22 08:25:57 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-22 08:26:44 +0100 <Turmiht> It seems to me that my ld fail to recognize the ar file (given the magic bytes)
2020-12-22 08:26:52 +0100nemron(~nemron@2a01:598:a906:d62d:a0e2:5e5d:3ca2:a658)
2020-12-22 08:28:07 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-22 08:28:37 +0100kostic_(~kostic@51.194.80.91)
2020-12-22 08:29:00 +0100hackagespdx-license 0.1.0 - SPDX license templates https://hackage.haskell.org/package/spdx-license-0.1.0 (Poscat)
2020-12-22 08:29:10 +0100 <Turmiht> lipo -info and object dump show contents of referenced libs is build for macho-x86-64
2020-12-22 08:29:26 +0100 <dminuoso> @where
2020-12-22 08:29:26 +0100 <lambdabot> @where <key>, return element associated with key
2020-12-22 08:29:35 +0100 <dminuoso> @where paste
2020-12-22 08:29:35 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
2020-12-22 08:29:37 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-22 08:29:59 +0100 <dminuoso> Turmiht: Can you use that? It's just easier for me to read when whitespace is nicely preserved
2020-12-22 08:30:09 +0100 <Turmiht> I'll give it a try
2020-12-22 08:30:19 +0100 <Turmiht> Wait a minute plz
2020-12-22 08:30:20 +0100christo(~chris@81.96.113.213)
2020-12-22 08:31:19 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2020-12-22 08:31:23 +0100 <Turmiht> https://paste.tomsmeding.com/rdCfhFsm
2020-12-22 08:31:28 +0100 <Turmiht> Is it ok?
2020-12-22 08:31:33 +0100 <dminuoso> Yes, cheers
2020-12-22 08:31:44 +0100 <dminuoso> Mmm, still looks weird, but it's fine
2020-12-22 08:31:59 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 08:32:13 +0100 <Turmiht> Well, thx
2020-12-22 08:32:29 +0100solarliner(~solarline@243.81.10.109.rev.sfr.net)
2020-12-22 08:33:25 +0100 <dminuoso> Turmiht: Does the error happen with 8.10.3 as well?
2020-12-22 08:33:42 +0100 <Turmiht> Yes, and 8.6.5
2020-12-22 08:34:18 +0100 <Turmiht> Wait, no
2020-12-22 08:34:28 +0100ADG1089__(~aditya@122.163.166.13)
2020-12-22 08:34:28 +0100christo(~chris@81.96.113.213) (Ping timeout: 246 seconds)
2020-12-22 08:34:30 +0100 <Turmiht> I just tried 8.10.2 which appear in ghcup list
2020-12-22 08:34:40 +0100asheshambasta(~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be)
2020-12-22 08:35:09 +0100 <Turmiht> should I build 8.10.3 from source?
2020-12-22 08:36:45 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
2020-12-22 08:36:55 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Ping timeout: 246 seconds)
2020-12-22 08:37:57 +0100 <dminuoso> Turmiht: What command did you use to provoke this error?
2020-12-22 08:38:35 +0100 <Turmiht> `cabal install distributive` could, although I first found it when I try install Agda
2020-12-22 08:39:07 +0100 <dminuoso> Just to rule some stuff out, do you have any modifications in your ~/.cabal/config ?
2020-12-22 08:39:32 +0100 <Turmiht> nop, and it have tried reinstall everthing
2020-12-22 08:39:58 +0100 <Turmiht> I and everything, typos
2020-12-22 08:40:12 +0100shad0w_(~shad0w_@160.202.37.210)
2020-12-22 08:40:20 +0100 <dminuoso> https://gitlab.haskell.org/ghc/ghc/-/issues/18446
2020-12-22 08:40:24 +0100 <dminuoso> Im wondering whether this is related
2020-12-22 08:41:07 +0100shad0w_(~shad0w_@160.202.37.210) (Read error: Connection reset by peer)
2020-12-22 08:41:30 +0100 <dminuoso> Turmiht: https://downloads.haskell.org/~ghc/8.10.3/ghc-8.10.3-x86_64-apple-darwin.tar.xz
2020-12-22 08:41:34 +0100 <dminuoso> Try the version manually
2020-12-22 08:41:37 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2020-12-22 08:41:50 +0100 <dminuoso> Just unpack it somewhere and install as regular bindist
2020-12-22 08:41:59 +0100 <tdammers> gentauro: you'd think well-typed, out of all people, would have a "strictly no scandinavians" hiring policy?
2020-12-22 08:42:11 +0100 <Turmiht> I'm downloading it
2020-12-22 08:42:57 +0100shad0w_(~shad0w_@160.202.37.210)
2020-12-22 08:43:13 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-22 08:43:54 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-22 08:44:30 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-22 08:45:31 +0100shad0w_(~shad0w_@160.202.37.210) (Read error: Connection reset by peer)
2020-12-22 08:47:18 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 08:50:14 +0100nfd(~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net) (Ping timeout: 272 seconds)
2020-12-22 08:51:07 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-22 08:51:39 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 258 seconds)
2020-12-22 08:53:34 +0100 <Turmiht> sorry to ask, how can I use a specific ghc version when using cabal?
2020-12-22 08:54:59 +0100 <sclv> use the -w flag
2020-12-22 08:55:18 +0100 <sclv> cabal —help and the manual are your friends
2020-12-22 08:56:00 +0100 <dminuoso> sclv: — instead of -?
2020-12-22 08:56:01 +0100RaderH2O(02b03581@2.176.53.129)
2020-12-22 08:56:03 +0100 <dminuoso> Does cabal eat that?
2020-12-22 08:56:11 +0100 <RaderH2O> hMmMm
2020-12-22 08:56:50 +0100Turmiht27(c6347492@198.52.116.146)
2020-12-22 08:56:56 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-12-22 08:57:23 +0100Turmiht27(c6347492@198.52.116.146) (Remote host closed the connection)
2020-12-22 08:58:25 +0100Turmiht(2d38964a@45.56.150.74) (Ping timeout: 245 seconds)
2020-12-22 08:59:09 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
2020-12-22 09:03:56 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 240 seconds)
2020-12-22 09:04:27 +0100RaderH2O(02b03581@2.176.53.129) (Remote host closed the connection)
2020-12-22 09:05:25 +0100fxg(~fxg@unaffiliated/fxg) (Ping timeout: 240 seconds)
2020-12-22 09:06:50 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-22 09:08:02 +0100kostic_(~kostic@51.194.80.91)
2020-12-22 09:13:27 +0100Turmiht(2d389679@45.56.150.121)
2020-12-22 09:13:34 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2020-12-22 09:14:01 +0100 <Turmiht> I disconnected.. have a way to get history I missed?
2020-12-22 09:14:08 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2020-12-22 09:15:10 +0100 <dminuoso> Turmiht: Check the topic of the channel
2020-12-22 09:16:11 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
2020-12-22 09:16:50 +0100nemron(~nemron@2a01:598:a906:d62d:a0e2:5e5d:3ca2:a658) (Ping timeout: 264 seconds)
2020-12-22 09:16:55 +0100gothos_(~gothos@antsy.jhz.name)
2020-12-22 09:17:17 +0100[exa](exa@unaffiliated/exa/x-5381537) (Ping timeout: 256 seconds)
2020-12-22 09:17:17 +0100arw(~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 256 seconds)
2020-12-22 09:17:20 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 09:17:24 +0100[exa](exa@srv3.blesmrt.net)
2020-12-22 09:17:24 +0100arw(~arw@impulse.informatik.uni-erlangen.de)
2020-12-22 09:17:48 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2020-12-22 09:17:51 +0100gothos(~gothos@antsy.jhz.name) (Ping timeout: 256 seconds)
2020-12-22 09:17:51 +0100gothos_gothos
2020-12-22 09:18:02 +0100sw1nn(~sw1nn@2a00:23c6:2385:3a00:55:615d:2b49:d448) (Ping timeout: 260 seconds)
2020-12-22 09:18:14 +0100nemron(~nemron@2a02:810b:c7bf:fdb8:61d2:5f6c:bc78:4d37)
2020-12-22 09:18:37 +0100xff0x_(~fox@2001:1a81:53b4:600:e33a:6fca:3b6a:86a2) (Ping timeout: 260 seconds)
2020-12-22 09:19:05 +0100xff0x_(~fox@2001:1a81:53b4:600:1516:de:d27a:a053)
2020-12-22 09:19:35 +0100sw1nn(~sw1nn@2a00:23c6:2385:3a00:268a:d573:fb76:8521)
2020-12-22 09:19:50 +0100_Cactus_(~cactus@2404:e801:200e:1f22:94f1:f531:bd80:25b1) (Ping timeout: 264 seconds)
2020-12-22 09:20:58 +0100solonarv(~solonarv@adijon-656-1-25-229.w90-13.abo.wanadoo.fr)
2020-12-22 09:22:18 +0100 <Turmiht> I read the log and try -w, but found nothing about -w option in cabal --help
2020-12-22 09:22:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 264 seconds)
2020-12-22 09:24:09 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2020-12-22 09:24:36 +0100cyphase(~cyphase@unaffiliated/cyphase) (Ping timeout: 240 seconds)
2020-12-22 09:25:18 +0100 <sclv> -w is short for with-ghc
2020-12-22 09:26:02 +0100 <sclv> re earlier, autocorrect turning my double hyphens into dashes, sigh
2020-12-22 09:27:20 +0100mounty(~mounty@210.1.196.133)
2020-12-22 09:27:22 +0100 <Turmiht> is it in cabal's help? I still cannot found it
2020-12-22 09:28:00 +0100 <Turmiht> search pattern `with-ghc` highlight nothing
2020-12-22 09:28:17 +0100 <sclv> might only be kn the help for specific subcommands
2020-12-22 09:31:09 +0100 <Turmiht> build with 8.10.3 also failed
2020-12-22 09:31:14 +0100 <Turmiht> sadly
2020-12-22 09:31:45 +0100cyphase(~cyphase@unaffiliated/cyphase)
2020-12-22 09:32:33 +0100 <Turmiht> -w works but it's not in manual if I'm not missed it
2020-12-22 09:32:59 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de)
2020-12-22 09:33:06 +0100 <Turmiht> whatever, your advise is helpful and thx
2020-12-22 09:33:28 +0100hhpp(3dded63f@61-222-214-63.HINET-IP.hinet.net)
2020-12-22 09:34:57 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-22 09:35:04 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de)
2020-12-22 09:35:44 +0100mimi_vx(~mimi@2a01:490:16:1026:bdf1:c121:9afd:9d42) (Ping timeout: 258 seconds)
2020-12-22 09:37:19 +0100thir(~thir@p200300f27f164f00f068565576ce0558.dip0.t-ipconnect.de) (Client Quit)
2020-12-22 09:38:30 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 09:39:33 +0100Turmiht(2d389679@45.56.150.121) (Remote host closed the connection)
2020-12-22 09:39:57 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2020-12-22 09:39:57 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2020-12-22 09:39:57 +0100mouseghost(~draco@wikipedia/desperek)
2020-12-22 09:40:59 +0100Mikagami(~MOSCOS@122.54.107.175) (Read error: Connection reset by peer)
2020-12-22 09:41:25 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-22 09:42:36 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-22 09:43:07 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 260 seconds)
2020-12-22 09:46:22 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) (Remote host closed the connection)
2020-12-22 09:46:46 +0100Turmiht(2d389679@45.56.150.121)
2020-12-22 09:49:24 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 09:49:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 09:50:20 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 09:54:21 +0100Turmiht(2d389679@45.56.150.121) (Remote host closed the connection)
2020-12-22 09:55:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2020-12-22 09:57:25 +0100drbean_(~drbean@TC210-63-209-212.static.apol.com.tw) (Ping timeout: 246 seconds)
2020-12-22 09:57:36 +0100CMCDragonkai2(~Thunderbi@124.19.3.250) (Ping timeout: 240 seconds)
2020-12-22 10:01:27 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 10:05:24 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-22 10:05:29 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 10:08:56 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:4535:f480:7dff:b3b5)
2020-12-22 10:12:16 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 240 seconds)
2020-12-22 10:13:43 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2020-12-22 10:13:43 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2020-12-22 10:13:43 +0100dibblego(~dibblego@haskell/developer/dibblego)
2020-12-22 10:15:17 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 10:15:30 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 10:20:34 +0100Randy(randy@freebsd/user/randy) (Quit: Brb)
2020-12-22 10:21:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 10:22:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 264 seconds)
2020-12-22 10:23:09 +0100thc202(~thc202@unaffiliated/thc202)
2020-12-22 10:25:07 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 260 seconds)
2020-12-22 10:26:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-22 10:26:37 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Ping timeout: 264 seconds)
2020-12-22 10:26:43 +0100zv(~zv@unaffiliated/zv) (Ping timeout: 258 seconds)
2020-12-22 10:28:06 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 10:31:09 +0100Turmiht(2d389679@45.56.150.121)
2020-12-22 10:32:30 +0100vodkaInferno(~wormphleg@104.131.156.184) (Read error: Connection reset by peer)
2020-12-22 10:32:36 +0100__monty__(~toonn@unaffiliated/toonn)
2020-12-22 10:32:41 +0100vodkaInf1rno(~wormphleg@104.131.156.184)
2020-12-22 10:32:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 260 seconds)
2020-12-22 10:33:26 +0100 <Turmiht> I just removed the binutils installed from homebrew and the original problems disappeared however how it fails in building phase instead of linking.
2020-12-22 10:34:08 +0100_Cactus_(~cactus@2404:e801:200e:1f22:94f1:f531:bd80:25b1)
2020-12-22 10:34:10 +0100 <Turmiht> Seems ghc use the linux version bin utils to build lib for me earlier.
2020-12-22 10:36:53 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 10:36:54 +0100 <Turmiht> just for reference if somebody meet the same error.
2020-12-22 10:37:40 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Ping timeout: 246 seconds)
2020-12-22 10:37:57 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 10:41:36 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 265 seconds)
2020-12-22 10:42:19 +0100zv(~zv@unaffiliated/zv)
2020-12-22 10:42:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 264 seconds)
2020-12-22 10:43:16 +0100ADG1089__(~aditya@122.163.166.13) (Remote host closed the connection)
2020-12-22 10:43:42 +0100ADG1089__(~aditya@122.163.166.13)
2020-12-22 10:43:42 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
2020-12-22 10:45:02 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net)
2020-12-22 10:45:19 +0100Turmiht(2d389679@45.56.150.121) (Remote host closed the connection)
2020-12-22 10:46:46 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 10:47:47 +0100hhpp(3dded63f@61-222-214-63.HINET-IP.hinet.net) (Remote host closed the connection)
2020-12-22 10:48:32 +0100toorevitimirp(~tooreviti@117.182.182.252) (Read error: Connection reset by peer)
2020-12-22 10:48:49 +0100toorevitimirp(~tooreviti@117.182.182.252)
2020-12-22 10:50:22 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 256 seconds)
2020-12-22 10:50:52 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 10:51:22 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Ping timeout: 260 seconds)
2020-12-22 10:51:33 +0100ulidtko|kk(~ulidtko@194.54.80.38)
2020-12-22 10:52:25 +0100guest1222(~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
2020-12-22 10:52:34 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 10:52:50 +0100kindaro(1f08c5b4@h31-8-197-180.dyn.bashtel.ru)
2020-12-22 10:53:01 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 10:53:03 +0100 <kindaro> How can I view Template Haskell splices when building with Cabal?
2020-12-22 10:53:30 +0100 <kindaro> `cabal build --ghc-options '-ddump-splices -ddump-to-file'` does not seem to produce any relevant files.
2020-12-22 10:53:45 +0100ulidtko|k(~ulidtko@193.111.48.79) (Ping timeout: 240 seconds)
2020-12-22 10:53:47 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-22 10:54:23 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-vynnkfmwforjolgj) (Quit: Connection closed for inactivity)
2020-12-22 10:54:24 +0100 <kindaro> I am using Cabal 3.4.
2020-12-22 10:54:33 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 10:54:57 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Client Quit)
2020-12-22 10:55:04 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 10:56:00 +0100xff0x_(~fox@2001:1a81:53b4:600:1516:de:d27a:a053) (Remote host closed the connection)
2020-12-22 10:56:17 +0100xff0x_(~fox@2001:1a81:53b4:600:a2ff:122b:9237:e1f5)
2020-12-22 10:56:44 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 10:56:48 +0100scde(~scde@5.63.35.8)
2020-12-22 10:57:13 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 10:58:51 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 10:58:54 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-12-22 10:59:17 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:00:48 +0100scde(~scde@5.63.35.8) (Client Quit)
2020-12-22 11:00:56 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:01:34 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:02:21 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 11:03:08 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:03:43 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:04:23 +0100[exa](exa@srv3.blesmrt.net) (Changing host)
2020-12-22 11:04:23 +0100[exa](exa@unaffiliated/exa/x-5381537)
2020-12-22 11:05:17 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:05:29 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2020-12-22 11:05:42 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:07:08 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Read error: Connection reset by peer)
2020-12-22 11:07:18 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:07:44 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-12-22 11:07:47 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:09:20 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:09:26 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2020-12-22 11:09:29 +0100 <gentauro> 08:41 < tdammers> gentauro: you'd think well-typed, out of all people, would have a "strictly no scandinavians" hiring policy?
2020-12-22 11:09:50 +0100 <gentauro> I just find it strange that no scandis are at your company. I mean, people here are all <3 Haskell …
2020-12-22 11:09:51 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:10:15 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 268 seconds)
2020-12-22 11:10:21 +0100 <gentauro> I heard from an employee that IOHK has a single dane (or somebody living here in CPH) as an employee
2020-12-22 11:10:35 +0100 <gentauro> maybe is the wage gap?
2020-12-22 11:11:08 +0100 <gentauro> tdammers: nevertheless, I'm doing some promo on LinkedIn. Hopefully some of my fellow CPH and FP lovers will apply :)
2020-12-22 11:11:45 +0100urdh(~urdh@unaffiliated/urdh) (Quit: Boom!)
2020-12-22 11:12:05 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:12:30 +0100 <tdammers> yes, please do. wage gap might play a role, but I don't think it's the decisive factor - after all, we do have people in other high-income areas
2020-12-22 11:12:37 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:13:26 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-22 11:13:55 +0100urdh(~urdh@unaffiliated/urdh)
2020-12-22 11:14:15 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:14:41 +0100 <gentauro> tdammers: I noticed myself (found and organizer of MF#K in Denmark) where people "beg" for FP jobs. And yes, wage isn't an issue. Personally, I had to decline a Swedish (Haskell) startup-job cos the person offered me a salary that was worse than a Danish cashier …
2020-12-22 11:14:46 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:14:56 +0100 <gentauro> I mean, I would <3 to work with Haskell, but with a "fair" salary ;)
2020-12-22 11:15:06 +0100 <tdammers> hmhm
2020-12-22 11:16:09 +0100 <gentauro> tdammers: Well-Types is an UK company right? What will happen from the new year (Brexit)?
2020-12-22 11:16:18 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:16:50 +0100_Cactus_(~cactus@2404:e801:200e:1f22:94f1:f531:bd80:25b1) (Ping timeout: 264 seconds)
2020-12-22 11:16:57 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:18:04 +0100kam1(~kam1@24.231.108.143)
2020-12-22 11:18:25 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-22 11:18:26 +0100 <tdammers> it is, yes
2020-12-22 11:18:51 +0100dandart(~Thunderbi@home.dandart.co.uk)
2020-12-22 11:18:57 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:19:01 +0100 <tdammers> I'm not sure it's decided what the consequences of Brexit will be, but it won't be the end of the company
2020-12-22 11:22:05 +0100 <gentauro> tdammers: I guess WT can do the same as `serokell` where if the owners of WT just apply for a virtual Estonian citizenship (I have it) they can make a company in the EU from anywhere in the world
2020-12-22 11:22:24 +0100 <gentauro> but I guess the owners of WT already have that covered :)
2020-12-22 11:22:32 +0100 <tdammers> yep
2020-12-22 11:22:36 +0100 <merijn> eh, Brexit has already happened, this year is just the end of the grace period for the free trade agreement. And since consulting isn't a physical good I suspect the impact of Brexit is at worst "slightly increased cost"
2020-12-22 11:22:50 +0100 <tdammers> we also literally have one employee in Estonia (though I believe he doesn't have citizenship)
2020-12-22 11:23:16 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 240 seconds)
2020-12-22 11:23:16 +0100 <tdammers> merijn: yeah, hence my assessment that chances to the company structure might not be necessary at all
2020-12-22 11:23:31 +0100 <tdammers> after all, we already have plenty of clients outside of the EU
2020-12-22 11:24:22 +0100 <gentauro> merijn: I do freelance gigs. And my `Certified Public Accountant` told me to "stay away" from anything UK related (so much paperwork that needs to be done now)
2020-12-22 11:24:57 +0100glowcoil(sid3405@gateway/web/irccloud.com/x-urkxtcqlvmxbhybw)
2020-12-22 11:25:17 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 11:25:17 +0100 <gentauro> 11:23 < tdammers> after all, we already have plenty of clients outside of the EU
2020-12-22 11:25:20 +0100 <gentauro> good to hear
2020-12-22 11:25:48 +0100 <tdammers> the interesting bit is of course that we're a UK-based company that has both clients and employees outside the UK
2020-12-22 11:25:49 +0100rslima_____(sid26145@gateway/web/irccloud.com/x-sxoacwwvrypgvpjy)
2020-12-22 11:26:09 +0100ocharles(sid30093@gateway/web/irccloud.com/x-xltcvhbyjparvqrq)
2020-12-22 11:26:20 +0100 <merijn> gentauro: I mean, it's the exact same paperwork as working with companies in the US
2020-12-22 11:26:23 +0100ocharlesGuest98308
2020-12-22 11:26:48 +0100kyagrd__(sid102627@gateway/web/irccloud.com/x-ypgrgcqphmltykqe)
2020-12-22 11:26:49 +0100milessabin(sid86799@gateway/web/irccloud.com/x-qdexhvophzkhmamx)
2020-12-22 11:27:16 +0100 <tdammers> this is interesting already even without brexit, because while I am employed by WT directly as far as employment legalities are concerned, the fiscal situation is that WT rents my services from a Dutch payroll agency, and I am fiscally employed by the payroll agency, not WT
2020-12-22 11:27:20 +0100Kamuela(sid111576@gateway/web/irccloud.com/x-sygmzwyrzcdkakla)
2020-12-22 11:27:24 +0100 <gentauro> merijn: yeah, that pretty `meh` as well. I know one of the few `Tor` employees here in Denmark. It was to much hasle to `Tor` created a danish subsidiary company in Denmark
2020-12-22 11:28:26 +0100kristjansson(sid126207@gateway/web/irccloud.com/x-kjqkrwfhxeyivisw)
2020-12-22 11:28:31 +0100graingert(sid128301@gateway/web/irccloud.com/x-pvrbspgvxauvbmrf)
2020-12-22 11:28:33 +0100 <merijn> gentauro: You don't need to directly employ people anyway. An old colleague "works for" a US company, but he's basically self-employed and then his company gets contracted from the US, as there's much simpler paperwork for B2B contract
2020-12-22 11:28:35 +0100 <tdammers> some other WT employees are fiscally self-employed, and send invoices to WT directly, so they get to do the international paperwork themselves - but I opted to do the payrolling thing, for all sorts of boring reasons
2020-12-22 11:29:15 +0100 <gentauro> merijn: yeah, that is what Oskar Wickström (haskellatwork) does :)
2020-12-22 11:29:38 +0100kuribas(~user@ptr-25vy0i7ylwdflfexhxz.18120a2.ip6.access.telenet.be)
2020-12-22 11:29:44 +0100taktoa[c](sid282096@gateway/web/irccloud.com/x-qzdgtblpiialqhic)
2020-12-22 11:30:02 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 256 seconds)
2020-12-22 11:30:15 +0100hazard-pointer(sid331723@gateway/web/irccloud.com/x-nmwklpcxqbimwbcx)
2020-12-22 11:30:35 +0100 <kuribas> why isn't there a IsLable instance for Proxy?
2020-12-22 11:30:40 +0100dani-(sid341953@gateway/web/irccloud.com/x-ntpllqrkvsgxojfo)
2020-12-22 11:30:44 +0100 <kuribas> IsLabel
2020-12-22 11:30:47 +0100 <tdammers> main reason being that Dutch gov't is on a crusade against "fake self employement", and that means that if you do it that way, you will be subjected to a lot of paperwork and scrutinity, and you may find yourself being considered "not really self-employed after all", and then you get to deal with even more bureaucratic nonsense
2020-12-22 11:30:53 +0100srhb(sid400352@NixOS/user/srhb)
2020-12-22 11:31:03 +0100m-renaud(sid333785@gateway/web/irccloud.com/x-rdlxbrqpwuslqdal)
2020-12-22 11:31:23 +0100 <kuribas> Or at least some kind of Label type in base?
2020-12-22 11:31:26 +0100ghuntley(sid16877@gateway/web/irccloud.com/x-ykjkjsicixvqqmkq)
2020-12-22 11:31:28 +0100 <tdammers> I mean, the intended goal is honorable - this kind of fake self-employment has been a loophole to bypass labor laws for a long while
2020-12-22 11:31:30 +0100_Cactus_(~cactus@173.244.208.116)
2020-12-22 11:31:56 +0100kozowu(uid44796@gateway/web/irccloud.com/x-lmrzkgcwuiqfijer)
2020-12-22 11:32:00 +0100 <gentauro> tdammers: so it's like in DK. If you work as a freelance as you would do as an employee (same tasks) then the Government will "fine" the hiring company
2020-12-22 11:32:16 +0100 <tdammers> yes. even retroactively.
2020-12-22 11:32:23 +0100wei2912(~wei2912@unaffiliated/wei2912) (Quit: Lost terminal)
2020-12-22 11:32:38 +0100 <gentauro> the trick is to have at least "two different" companies in a fiscal year
2020-12-22 11:32:38 +0100J_Arcane(sid119274@gateway/web/irccloud.com/x-rmzbmhxqvjyslqlb)
2020-12-22 11:32:50 +0100 <tdammers> the rules are bit more involved here
2020-12-22 11:32:55 +0100 <gentauro> I guess
2020-12-22 11:33:07 +0100 <tdammers> e.g., for certain industries (like performing arts), two is not enough
2020-12-22 11:33:50 +0100 <tdammers> you also have to make a plausible argument that you are spending at least 24 hours per week directly on the job - and for musicians, this can be a problem, because the time you spend preparing for gigs and practicing your instrument skills does not count towards that
2020-12-22 11:34:08 +0100 <gentauro> :o
2020-12-22 11:34:16 +0100typetetris(sid275937@gateway/web/irccloud.com/x-wukxokdildxlsinc)
2020-12-22 11:34:19 +0100 <tdammers> which is absolute nonsense of course, but that's the situation
2020-12-22 11:34:42 +0100 <gentauro> so artist needs to be part of a "corporate" then?
2020-12-22 11:34:50 +0100 <tdammers> hmm, no
2020-12-22 11:34:52 +0100 <gentauro> that will help with "creativity"
2020-12-22 11:34:57 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Remote host closed the connection)
2020-12-22 11:35:06 +0100 <kuribas> tdammers: that would make the actual work versus percieved work ration for a musician 0.1%
2020-12-22 11:35:13 +0100 <tdammers> some artists manage to meet the criteria, while many others instead do the payroll thing
2020-12-22 11:35:21 +0100 <tdammers> kuribas: yes, just about
2020-12-22 11:35:39 +0100jackdk(sid373013@gateway/web/irccloud.com/x-xeablxzuerknfxni)
2020-12-22 11:35:50 +0100agander_m(sid407952@gateway/web/irccloud.com/x-godagyxukcquqjck)
2020-12-22 11:36:12 +0100 <tdammers> kuribas: though not that extreme. when I was still a pro musician, I would work 80 hour weeks on average; about 2-3 hours of that would be performing, and another 16 hours teaching, plus maybe 1-2 hours doing paid composition / arrangement work
2020-12-22 11:36:16 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
2020-12-22 11:36:26 +0100 <tdammers> so about a 1:4 ratio
2020-12-22 11:37:07 +0100 <gentauro> maybe they are part of the "SCAM" that they use in Spain with the "media money". It's shared based on your exposure on TV/radio. People who "sell out" and vote the "dark side" on how to distribute the "media money", gets their music played between 01:00 - 05:00 AM
2020-12-22 11:37:30 +0100 <gentauro> since ther music is played the "most", they get more TV-money that "well know artist"
2020-12-22 11:38:10 +0100 <gentauro> "well know artist" complain about this, but nobody cares cos they had these campaigsn where they called "everybody thiefs" for "stealing the music". Karma can be a b- …
2020-12-22 11:38:13 +0100 <gentauro> :)
2020-12-22 11:38:24 +0100 <tdammers> it's a shame that there's no good model for fitting professional artists into the capitalist model
2020-12-22 11:38:26 +0100 <kuribas> tdammers: funny thing is, if I am doing choir accompaniment, I hardly need to practice, and get payed usually quite well. When doing "serious music", like Brahms quartets, I spend months praciticing, going to Gent every weekend with the train to rehearse, and if I get just the cost back I can be happy.
2020-12-22 11:39:31 +0100 <kuribas> tdammers: tl;dr people don't care about Brahms, but they care about John Rutter :-)
2020-12-22 11:39:32 +0100miklcct(quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2020-12-22 11:39:45 +0100miklcct(quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7)
2020-12-22 11:39:45 +0100 <gentauro> tdammers: I once where at this small bar with some IT-people drinking a few beers. It was only us and some "random" Swedish band playing some music in the background. Since nobody else came in, the owner didn't want to pay the band. So we all chipped up money for gas so they could go back to Sweden
2020-12-22 11:39:52 +0100 <tdammers> kuribas: that's the arts for ya. when I was a pro, I'd do the stuff I love for a sandwich and gas money, but playing stupid charts stuff, or just sitting in a corner playing unobtrusive piano music was the stuff that'd rake in the money
2020-12-22 11:39:53 +0100 <gentauro> musician don't have it easy …
2020-12-22 11:39:56 +0100 <kuribas> or worse, Ludovico einaudi
2020-12-22 11:40:42 +0100 <tdammers> I know you classical pianists hate Einaudi, but I kind of admire him for having found a thing that sells and consistently pulling off selling it over and over and over again
2020-12-22 11:40:57 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 260 seconds)
2020-12-22 11:40:58 +0100 <tdammers> and apparently he manages to do it without grinding his soul into a mushy pulp
2020-12-22 11:40:59 +0100 <kuribas> sure, he's absolutely great at marketing
2020-12-22 11:41:23 +0100 <gentauro> wait a second. Is this an analogy with FP/Haskell? xD
2020-12-22 11:41:30 +0100shad0w_(~shad0w_@160.202.37.210)
2020-12-22 11:41:31 +0100 <tdammers> nooooooo...
2020-12-22 11:41:36 +0100 <kuribas> yeah, this is very offtopic
2020-12-22 11:41:53 +0100 <kuribas> unless you compare einaudi with php
2020-12-22 11:42:03 +0100 <tdammers> nah, he's way too consistent
2020-12-22 11:42:09 +0100 <gentauro> kuribas: for me it is. I would rather work with Haskell, but what brings food on the table is my .NET gigs
2020-12-22 11:42:12 +0100 <gentauro> xD
2020-12-22 11:42:15 +0100 <kuribas> tdammers: lol
2020-12-22 11:42:31 +0100 <kuribas> gentauro: not f# I suppose
2020-12-22 11:42:33 +0100 <kuribas> ?
2020-12-22 11:42:56 +0100 <gentauro> in Denmark is C#, cos the person who created it was a dane. Tough market to introduce something else …
2020-12-22 11:43:26 +0100 <tdammers> C# is also insanely popular across Europe due to Windows and the MS stack in general
2020-12-22 11:43:37 +0100 <gentauro> kuribas: but sometimes I do F#, but people can't maintain it so I end up re-writting it to C# :(
2020-12-22 11:43:43 +0100 <kuribas> gentauro: can you introduce FP concepts in your team?
2020-12-22 11:43:52 +0100 <tdammers> lots of European companies have been on MS stacks forever, and many corporate IT systems started as an Excel sheet on the CEO's computer
2020-12-22 11:43:58 +0100 <kuribas> .NET seem to have better support for immutability than java
2020-12-22 11:44:12 +0100 <tdammers> gah, there's the I-word again
2020-12-22 11:44:20 +0100solarliner(~solarline@243.81.10.109.rev.sfr.net) (Read error: Connection reset by peer)
2020-12-22 11:44:29 +0100 <gentauro> kuribas: not where I am at the moment. It's a freelance gig. If I introduce something and the team can't take over, I have to provide "free hours" until they do. So this time no FP for me ;)
2020-12-22 11:44:36 +0100ADG1089__(~aditya@122.163.166.13) (Quit: Konversation terminated!)
2020-12-22 11:45:32 +0100st8less(~st8less@inet-167-224-197-181.isp.ozarksgo.net) (Quit: WeeChat 2.9)
2020-12-22 11:45:35 +0100 <dminuoso> https://hackage.haskell.org/package/websockets-0.12.7.2/docs/Network-WebSockets.html#t:WebSocketsD…
2020-12-22 11:45:37 +0100 <dminuoso> You should only use the Text or the Text instance when you are sure that the data is UTF-8 encoded (which is the case for Text messages).
2020-12-22 11:45:44 +0100 <dminuoso> Can anyone guess what they mean by this here? It sounds confused.
2020-12-22 11:45:48 +0100 <gentauro> kuribas: but right now, I'm writing a tool in Haskell that generates F# code :)
2020-12-22 11:46:08 +0100 <kuribas> tdammers: what's wrong with that?
2020-12-22 11:46:08 +0100 <gentauro> I'm expecting to have it ready by the end of the year
2020-12-22 11:46:31 +0100 <tdammers> dminuoso: I think it means "if you are not sure that the data you will receive is UTF-8 encoded, then do not use the Text instances"
2020-12-22 11:47:21 +0100 <tdammers> kuribas: it misses the point. the problem isn't just mutability, and making variables immutable when you can just willy-nilly have all sorts of side effects is completely pointless
2020-12-22 11:47:45 +0100 <tdammers> take, for example, clojure, which makes a pompous deal out of immutability, but completely ignores other side effects, such as disk I/O
2020-12-22 11:47:47 +0100 <kuribas> tdammers: I totally agree, but at least it's a small step, no?
2020-12-22 11:48:25 +0100 <dminuoso> tdammers: Given the context that's strange.
2020-12-22 11:48:28 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 11:48:48 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 260 seconds)
2020-12-22 11:49:20 +0100 <tdammers> dminuoso: the other interpretation just doesn't make sense ("when you are sure that the data is UTF-8 encoded, then do not use any other instances")
2020-12-22 11:50:15 +0100 <kuribas> tdammers: IMO the biggest fuckup in clojure is using hashmaps for everything.
2020-12-22 11:50:21 +0100 <dminuoso> tdammers: Mmm. The phrasing is just odd, especially the `(which is the case for Text messages)` part of it.
2020-12-22 11:50:46 +0100 <kuribas> tdammers: being so lenient means that most advantages of purity go away.
2020-12-22 11:50:59 +0100 <gentauro> kuribas: some F# I have seen, it's just C# (OO) but written with F# syntax
2020-12-22 11:51:16 +0100 <gentauro> very few people write F# as they would write SML/ML
2020-12-22 11:51:22 +0100 <tdammers> kuribas: clojure never really had a lot of advantages of purity in the first place, but hashmaps-for-everything has nothing to do with it
2020-12-22 11:51:24 +0100 <dminuoso> But I think they're just trying to say `fromDataMessage @Text` will crash, unles you are getting a Text message (as per websocket specs), or an utf8 encoded binary message.
2020-12-22 11:51:39 +0100 <tdammers> you can have completely pure hashmaps (though preventing HashDoS is tricky then)
2020-12-22 11:51:50 +0100 <kuribas> tdammers: hashmaps for everything means it's impossible to reason about anything
2020-12-22 11:52:10 +0100 <kuribas> tdammers: and the goal of immutability is reasoning
2020-12-22 11:52:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 11:52:24 +0100 <tdammers> no it doesn't
2020-12-22 11:52:39 +0100 <tdammers> *pure* hashmaps means they're still pure, and you can still reason about their purity
2020-12-22 11:52:58 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Ping timeout: 258 seconds)
2020-12-22 11:53:14 +0100 <tdammers> it's very vaguely similar to how you can still apply pure reasoning to IO actions, as long as you don't apply pure reasoning to the *execution* of IO actions
2020-12-22 11:53:28 +0100 <kuribas> pure until something crashes because you don't have a field in the hashmap...
2020-12-22 11:54:08 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2020-12-22 11:54:16 +0100 <tdammers> that's orthogonal
2020-12-22 11:54:25 +0100 <tdammers> we have enough partial functions in Haskell too
2020-12-22 11:54:39 +0100 <kuribas> gentauro: in that case it would be better to keep it in C#
2020-12-22 11:54:56 +0100 <tdammers> > [] ! 1
2020-12-22 11:54:58 +0100 <lambdabot> error:
2020-12-22 11:54:58 +0100 <lambdabot> • Couldn't match expected type ‘Array i0 e’ with actual type ‘[a0]’
2020-12-22 11:54:59 +0100 <lambdabot> • In the first argument of ‘(!)’, namely ‘[]’
2020-12-22 11:55:03 +0100 <tdammers> > [] !! 1
2020-12-22 11:55:05 +0100 <kuribas> tdammers: and I try to avoid partial functions in haskell
2020-12-22 11:55:06 +0100 <lambdabot> *Exception: Prelude.!!: index too large
2020-12-22 11:55:22 +0100 <tdammers> so avoid partial functions in clojure. this has nothing to do with purity
2020-12-22 11:55:45 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-22 11:56:14 +0100 <kuribas> tdammers: every function in clojure that takes a hashmap is partial.
2020-12-22 11:56:28 +0100 <tdammers> that is obviously false
2020-12-22 11:56:33 +0100 <kuribas> tdammers: or even worse when it isn't partial, it just returns a wrong result.
2020-12-22 11:57:05 +0100 <kuribas> yeah, the "obviously false" case is worse.
2020-12-22 11:57:15 +0100 <kuribas> I prefer things crashing early over wrong behaviour.
2020-12-22 11:57:43 +0100 <kuribas> IMO total > partial > total doing the wrong thing
2020-12-22 11:58:07 +0100 <tdammers> (get hashmap key) returns nil if the key doesn't exist
2020-12-22 11:58:12 +0100 <tdammers> that is neither partial nor the wrong thing
2020-12-22 11:58:19 +0100 <tdammers> what else would you want it to do?
2020-12-22 11:58:45 +0100 <tdammers> it could crash, but that would make it partial, by the definition we use in Haskell
2020-12-22 11:59:24 +0100 <tdammers> then again, due to the lack of a type checker, most clojure functions are in fact partial - `get`, for example, cannot be called on something that isn't a collection
2020-12-22 11:59:51 +0100 <tdammers> but anyway, this has absolutely nothing to do with effects, nor mutability
2020-12-22 11:59:54 +0100 <kuribas> tdammers: it's not about what I want a hashmap to do, it's about when I want to use a hashmap.
2020-12-22 12:00:04 +0100 <kuribas> and I don't want to use it for everything
2020-12-22 12:00:11 +0100 <tdammers> that's a completely valid complaint
2020-12-22 12:00:13 +0100Tops2(~Tobias@dyndsl-095-033-089-034.ewe-ip-backbone.de)
2020-12-22 12:00:23 +0100 <tdammers> but it has nothing to do with purity or partiality
2020-12-22 12:00:37 +0100 <tdammers> your complaint is about hashmaps being too generic
2020-12-22 12:00:37 +0100Mikagami(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-22 12:00:55 +0100 <tdammers> about not providing any static constraints as to which values may go into which keys
2020-12-22 12:01:03 +0100 <kuribas> tdammers: it can: (get 5 :a) => nil
2020-12-22 12:01:05 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-22 12:01:18 +0100 <kuribas> (get "abc" :a) => nil
2020-12-22 12:01:22 +0100 <tdammers> right
2020-12-22 12:01:48 +0100 <tdammers> but since clj runs on the jvm, and uses java interfaces to implement things like lookup, you can fabricate classes that will cause lookups to crash
2020-12-22 12:02:11 +0100 <tdammers> granted, that's a bit of a fabricated argument
2020-12-22 12:03:40 +0100cow-orker(~foobar@pogostick.net) (Remote host closed the connection)
2020-12-22 12:04:56 +0100 <kuribas> the philosophy of clojure is to be very lenient
2020-12-22 12:05:04 +0100 <kuribas> it's typically the java side that crashes
2020-12-22 12:05:16 +0100CindyLinz(~cindy_utf@112.121.78.20) (Ping timeout: 240 seconds)
2020-12-22 12:05:56 +0100solarion(~solarion@fsf/member/solarion) (Ping timeout: 240 seconds)
2020-12-22 12:05:56 +0100c_wraith(~c_wraith@adjoint.us) (Ping timeout: 240 seconds)
2020-12-22 12:05:56 +0100byorgey(~byorgey@155.138.238.211) (Ping timeout: 240 seconds)
2020-12-22 12:06:18 +0100byorgey(~byorgey@155.138.238.211)
2020-12-22 12:06:20 +0100CindyLinz(~cindy_utf@112.121.78.20)
2020-12-22 12:07:33 +0100solarion(~solarion@mail.digitasaru.net)
2020-12-22 12:09:17 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8)
2020-12-22 12:09:49 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Ping timeout: 260 seconds)
2020-12-22 12:10:58 +0100c_wraith(~c_wraith@adjoint.us)
2020-12-22 12:11:25 +0100 <kuribas> tdammers: my point is that with pattern matching and records, you can avoid a complex type system, and still get easy to understand errors.
2020-12-22 12:11:41 +0100 <kuribas> tdammers: a sufficiently smart compiler could even do that at compile time.
2020-12-22 12:11:56 +0100 <kuribas> SBCL is quite good in static analysis.
2020-12-22 12:12:30 +0100xcmw(~textual@cpe-69-133-55-43.cinci.res.rr.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 12:12:32 +0100 <gentauro> 11:54 < kuribas> gentauro: in that case it would be better to keep it in C#
2020-12-22 12:12:35 +0100 <gentauro> kuribas: yep
2020-12-22 12:13:54 +0100 <kuribas> tdammers: I totally agree that the benifits from static pure FP doesn't come from a single feature, but several features and how you use them.
2020-12-22 12:14:48 +0100 <tdammers> case in point, something more strict than hashmaps is fairly useless without static checks
2020-12-22 12:14:53 +0100 <tdammers> take for example Python classes
2020-12-22 12:15:14 +0100 <tdammers> you can say foo.bar, which is roughly equivalent to (get foo :bar) in clojure, or bar foo in haskell
2020-12-22 12:15:44 +0100 <tdammers> in haskell, the compiler can tell you that you cannot apply bar to foo, because the foo type doesn't have a bar field
2020-12-22 12:16:13 +0100 <tdammers> in clojure, you're just going to get nil, which is the interpreter telling you, at runtime, that the value you're looking at doesn't have a bar field
2020-12-22 12:16:24 +0100 <tdammers> in python, you get a crash at runtime
2020-12-22 12:16:50 +0100qwsd(~tema@217.118.92.215)
2020-12-22 12:16:58 +0100 <tdammers> so in both of these dynamic languages, the error doesn't get reported until runtime - Python fares no better than clojure, even though you declared the class beforehand as a "type"
2020-12-22 12:17:54 +0100 <gentauro> tdammers: languages with `casting` are as bad as `dynamic-typed` langauges.
2020-12-22 12:17:59 +0100 <tdammers> so why, then, would you go through the trouble of declaring classes (or having explicit record fields, or anything similar) when you can't get more useful (i.e., earlier and louder) failures out of it?
2020-12-22 12:18:53 +0100Majiir(~Majiir@pool-96-237-149-35.bstnma.fios.verizon.net) (Quit: CUT THE HARDLINES!!)
2020-12-22 12:18:54 +0100 <tdammers> gentauro: not the point, really - all I'm saying here is that the benefit of more explicit record types is that you can get better static reasoning, but if the static reasoning doesn't happen and you still won't get errors until you actually run the broken code, then you're not getting much value out of it
2020-12-22 12:19:37 +0100 <tdammers> clojure acknowledges this and says, OK, so we're not getting any static assertions out of this either way, so let's just use the simpler solution here
2020-12-22 12:23:21 +0100Majiir(~Majiir@pool-96-237-149-35.bstnma.fios.verizon.net)
2020-12-22 12:25:47 +0100 <kuribas> tdammers: yeah, earlier and louder is better that late and/or silent
2020-12-22 12:26:16 +0100 <kuribas> tdammers: but you do get earlier and louder errors, as long as you don't do nil punning.
2020-12-22 12:26:24 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2020-12-22 12:26:51 +0100kindaro(1f08c5b4@h31-8-197-180.dyn.bashtel.ru) (Remote host closed the connection)
2020-12-22 12:26:52 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-22 12:27:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-22 12:28:05 +0100 <kuribas> tdammers: I think scheme works that way, let me test...
2020-12-22 12:28:06 +0100 <tdammers> the "lateness" of errors can be classified pretty much like this: 1. while writing the code, 2. while building ("compile-time"), 3. when running test suite, 4. when starting up the application, 5. when running the offending code under the error conditions
2020-12-22 12:28:31 +0100 <tdammers> anything more fine-grained than that is largely irrelevant
2020-12-22 12:28:42 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-22 12:29:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 12:29:15 +0100 <tdammers> oh, and there is 6. after running the offending code under the error conditions
2020-12-22 12:29:33 +0100 <tdammers> which is of course the worst, because now you have absolutely no idea what even triggers the error
2020-12-22 12:30:08 +0100 <dminuoso> I guess memory corruption is a frequenty case of 6.
2020-12-22 12:30:30 +0100 <tdammers> yeah, and it's the reason why, all else being equal, garbage collection is the lesser evil
2020-12-22 12:30:38 +0100 <gentauro> tdammers: or type-system not providing anything at all :P https://youtu.be/Gv2I7qTux7g?t=549
2020-12-22 12:30:49 +0100shad0w_(~shad0w_@160.202.37.210) (Ping timeout: 264 seconds)
2020-12-22 12:31:22 +0100 <kuribas> tdammers: 5. running the code in acceptance, 6. running the code in production
2020-12-22 12:31:52 +0100 <tdammers> kuribas: that's one of those more fine-grained distinctions that don't matter much in practice
2020-12-22 12:33:12 +0100drbean(~drbean@TC210-63-209-21.static.apol.com.tw)
2020-12-22 12:33:19 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-12-22 12:34:40 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 12:35:24 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 12:35:46 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 12:36:18 +0100 <kuribas> tdammers: in our case, we even remotely connect to the production repl :-)
2020-12-22 12:36:25 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2020-12-22 12:36:26 +0100 <dminuoso> gentauro: Speaking of "langauges with `casting`", should we have a good and long talk about Haskell and it's ubiquitous realToFrac and fromIntegral functions? :>
2020-12-22 12:36:48 +0100 <dminuoso> Realistically, Haskell is not a dime better than C with regards to casting of integral types.
2020-12-22 12:37:25 +0100 <dminuoso> It's some worse in fact, because you're constantly annoyed to insert realToFrac and fromIntegral everywhere, which add no value to the quality of code.
2020-12-22 12:37:34 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 12:38:42 +0100xff0x_(~fox@2001:1a81:53b4:600:a2ff:122b:9237:e1f5) (Ping timeout: 260 seconds)
2020-12-22 12:40:18 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-22 12:40:18 +0100 <kuribas> can unsafeCoerce crash a production server?
2020-12-22 12:40:26 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-22 12:41:30 +0100xff0x_(~fox@2001:1a81:53b4:600:a2ff:122b:9237:e1f5)
2020-12-22 12:42:00 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2020-12-22 12:42:02 +0100 <kuribas> or will it crash a single thread?
2020-12-22 12:42:24 +0100 <dminuoso> It has the capability of crashing the entire process
2020-12-22 12:43:00 +0100 <solonarv> you can probably achieve a segfault using unsafeCoerce
2020-12-22 12:44:04 +0100 <tdammers> s/probably/definitely/ -- been there, done that
2020-12-22 12:44:28 +0100 <solonarv> I only hedged because I couldn't provide/remember a concrete example ;)
2020-12-22 12:44:53 +0100 <sshine> 1 is a decent probability.
2020-12-22 12:44:53 +0100 <dminuoso> % unsafeCoerce 10 :: String
2020-12-22 12:44:54 +0100 <yahb> dminuoso: ; <interactive>:34:20: error:; Not in scope: type constructor or class `String'; Perhaps you meant one of these: `IsString' (imported from GHC.Exts), `Strict' (imported from Control.Lens), `Strict' (imported from Language.Haskell.TH)
2020-12-22 12:45:01 +0100 <dminuoso> err
2020-12-22 12:45:27 +0100 <dminuoso> % unsafeCoerce 10 :: String
2020-12-22 12:45:27 +0100 <yahb> dminuoso: ""
2020-12-22 12:45:31 +0100 <dminuoso> Okay what?
2020-12-22 12:45:46 +0100 <dminuoso> % unsafeCoerce 10 :: IO String
2020-12-22 12:45:47 +0100 <yahb> dminuoso: "[Segmentation fault]
2020-12-22 12:45:56 +0100 <dminuoso> Much better. ^- kuribas
2020-12-22 12:46:01 +0100 <kuribas> % unsafeCoerce (10 :: Int) :: String
2020-12-22 12:46:02 +0100 <yahb> kuribas: ""
2020-12-22 12:46:04 +0100 <solonarv> ADT-to-ADT is usually (always?) safe, both Integer (which the 10 defaults to) and String are ADTs
2020-12-22 12:46:25 +0100 <dminuoso> solonarv: I dont think it's safe.
2020-12-22 12:47:08 +0100 <dminuoso> solonarv: Also, IO is also just an ADT.
2020-12-22 12:47:08 +0100 <kuribas> 10 must be compatible with String...
2020-12-22 12:47:17 +0100 <kuribas> maybe some magic bit
2020-12-22 12:47:27 +0100 <solonarv> no, IO is a newtype over a function. That makes it not an ADT (in terms of representation)
2020-12-22 12:47:34 +0100 <dminuoso> Ah, I see what you mean
2020-12-22 12:48:16 +0100 <solonarv> data Int = I# Int# ; so (10 :: Int) is represented by a tag saying "first constructor" followed by the actual value
2020-12-22 12:49:01 +0100 <kuribas> tdammers: gauche scheme raises an error when accessing an unbound slot
2020-12-22 12:49:03 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 12:49:03 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 12:49:32 +0100 <solonarv> data [] a = [] | a : [] a ; if you try to interpret that (10 :: Int) value as a [b] , you look at that tag, which tells you "first constructor"; the first constructor is [], which has no fields, so you don't look any further and everything "works"
2020-12-22 12:49:44 +0100 <dminuoso> solonarv: Here's why your theory is wrong:
2020-12-22 12:50:25 +0100 <dminuoso> % unsafeCoerce () :: NE.NonEmpty Char -- solonarv
2020-12-22 12:50:26 +0100 <yahb> dminuoso: ; <interactive>:1:20: error:; Not in scope: type constructor or class `NE.NonEmpty'; No module named `NE' is imported.
2020-12-22 12:50:35 +0100 <dminuoso> % import qualified Data.List.NonEmpty as NE
2020-12-22 12:50:35 +0100 <yahb> dminuoso:
2020-12-22 12:50:37 +0100 <dminuoso> % unsafeCoerce () :: NE.NonEmpty Char -- solonarv
2020-12-22 12:50:37 +0100 <yahb> dminuoso: [Segmentation fault]
2020-12-22 12:50:54 +0100 <solonarv> I don't see where this contradicts my theory
2020-12-22 12:51:41 +0100 <solonarv> you try to interpret () as a NonEmpty Char, you see "first constructor", and you go on to look at the next few memory addresses where you expect that constructor's two fields; but instead there's garbage
2020-12-22 12:51:47 +0100 <kuribas> how does yahb detect segmentation fault?
2020-12-22 12:52:09 +0100 <solonarv> kuribas: ptrace, I think
2020-12-22 12:52:16 +0100nfd(~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net)
2020-12-22 12:52:27 +0100 <dminuoso> 12:46:04 solonarv | ADT-to-ADT is usually (always?) safe, both Integer (which the 10 defaults to) and String are ADTs
2020-12-22 12:52:31 +0100 <dminuoso> Im just saying its not always safe
2020-12-22 12:52:42 +0100 <solonarv> ah yes, then I agree
2020-12-22 12:53:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Ping timeout: 258 seconds)
2020-12-22 12:53:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 260 seconds)
2020-12-22 12:55:57 +0100 <merijn> kuribas: You can just install a signal handler for SIGSEGV :p
2020-12-22 12:56:25 +0100 <kuribas> merijn: can you resume from that?
2020-12-22 12:56:38 +0100 <merijn> Sure, why not?
2020-12-22 12:57:12 +0100 <merijn> For one, you process may have many threads besides the one the segfaulted
2020-12-22 12:58:01 +0100 <merijn> kuribas: Only SIGKILL and SIGSTOP can't be overridden with a signal handler
2020-12-22 12:58:08 +0100 <kuribas> right
2020-12-22 12:58:09 +0100 <nfd> mind you, in a single-thread application, exiting your sigsegv handler will promptly replay the same effect that caused the last segfault, so
2020-12-22 12:59:09 +0100 <nfd> second of all, i don't know what sane actions you can take in that handler other than "violently explode but write a little note on the way out"
2020-12-22 12:59:24 +0100 <dminuoso> nfd: A lot, actually
2020-12-22 12:59:28 +0100 <merijn> nfd: It Depends (TM)
2020-12-22 12:59:41 +0100 <dminuoso> nfd: This trick is used to implement high performance speculative JIT exit points with.
2020-12-22 13:00:11 +0100 <nfd> i mean, It Depends, but you're doing some really weird systems hacking s.t. you wouldn't need this discussion
2020-12-22 13:00:18 +0100 <dminuoso> When Java HotSpot does a speculative optimization, it speculatively constant folds (quite deep), and prepends a read to a special page. When the speculative optimization is invalidated, read permissions for that page are taken back
2020-12-22 13:00:26 +0100 <dminuoso> Triggering a SIGSEGV
2020-12-22 13:00:41 +0100 <nfd> common application dev puts sigsegv clearly in the category of "the program is wrong"
2020-12-22 13:00:51 +0100 <dminuoso> So the sigsegv handler of HotSpot then undoes the optimization, fixes the read permission, and resumes.
2020-12-22 13:01:15 +0100 <dminuoso> (The benefits of this, is that it plays nicely with branch predictors in the CPU)
2020-12-22 13:01:39 +0100 <tdammers> wow, our craft is absolutely terrible
2020-12-22 13:01:40 +0100 <dminuoso> as opposed to flipping a bit in memory and doing a conditional jnz on it
2020-12-22 13:02:20 +0100 <nfd> hotspot is a bizarre pile of beauty in horrors, and i know this quite well, as someone who has spent weeks of my life minmaxing its gc
2020-12-22 13:02:43 +0100 <merijn> tdammers: tbh, I disagree with that being terrible
2020-12-22 13:02:57 +0100 <nfd> it's not Terrible, it's Systems
2020-12-22 13:03:04 +0100 <merijn> tdammers: That's just "using hardware features that currently don't have nicely provided interfaces"
2020-12-22 13:03:10 +0100 <nfd> regrettably our code has to run on actual computers
2020-12-22 13:03:23 +0100 <dminuoso> nfd: Switch jobs and become a mathematician
2020-12-22 13:03:27 +0100 <dminuoso> You never have to worry about computability again.
2020-12-22 13:03:28 +0100 <tdammers> merijn: the terrible part is that they don't have nicely provided interfaces to begin with
2020-12-22 13:03:30 +0100 <merijn> tdammers: The fuck do I have MMU and virtual addresses for if people are going to whine when I use them >.>
2020-12-22 13:04:02 +0100 <merijn> Same reason GHC programs take 1 TB according to top/linux's dumb memory measuring >.>
2020-12-22 13:04:13 +0100 <tdammers> yeah, that's terrible too
2020-12-22 13:04:34 +0100 <nfd> dminuoso: /me laughs in von neumann/godel/hilbert/....
2020-12-22 13:04:36 +0100 <merijn> Linux/top are terrible, GHC's implementation is totally sensible and intended use of the interface
2020-12-22 13:04:58 +0100 <merijn> It's just unfortunate some users blame GHC/haskell
2020-12-22 13:05:19 +0100 <nfd> linux is terrible, but what're ya gonna use
2020-12-22 13:05:26 +0100 <merijn> nfd: FreeBSD :p
2020-12-22 13:05:27 +0100 <dminuoso> merijn will say freebsd in 1 second
2020-12-22 13:05:29 +0100 <dminuoso> Oh darn
2020-12-22 13:05:31 +0100 <dminuoso> He beat me to it
2020-12-22 13:05:32 +0100 <nfd> plan9? bsd? hurd?
2020-12-22 13:05:56 +0100 <dminuoso> Also, Windows is an option.
2020-12-22 13:05:58 +0100 <merijn> FreeBSD isn't great on the desktop, but linux sucks there too so just use macOS or Windows :p
2020-12-22 13:06:30 +0100 <dminuoso> merijn: to be honest, my quality of life has drastically improved since switching to a wiling window manager. That alone is what keeps me on Linux.
2020-12-22 13:06:52 +0100 <merijn> dminuoso: I used FreeBSD with tiling window manager for ages, but I don't really miss it
2020-12-22 13:07:06 +0100 <merijn> dminuoso: My main mode of operation is full screen terminal running tmux anyway :p
2020-12-22 13:07:07 +0100 <nfd> i went to university talking to/making buddies with the grad students and faculty who hacked on netbsd a lot, haha
2020-12-22 13:07:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 13:07:18 +0100 <kuribas> dminuoso: what's a willing window manager? :-)
2020-12-22 13:07:34 +0100 <nfd> reliably i would talk to them about flaws in linux and how i was sure netbsd did it better, and they would wince and say there was a bug
2020-12-22 13:08:47 +0100 <nfd> like, CLOCK_MONOTONIC in linux isn't actually that MONOTONIC, and netbsd has something actually monotonic, and i said that was great, and they said "yeah but it kinda panics the kernel actually"
2020-12-22 13:09:11 +0100 <nfd> tiling window manager? yeah i think i use one of those on my phone
2020-12-22 13:09:17 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 13:10:21 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 13:10:25 +0100flukiluke1(~flukiluke@217.146.82.202) (Remote host closed the connection)
2020-12-22 13:10:38 +0100 <nfd> (i actually use dwm on my phone)
2020-12-22 13:11:01 +0100 <nfd> (works great)
2020-12-22 13:12:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2020-12-22 13:13:58 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 260 seconds)
2020-12-22 13:14:02 +0100vs^(vs@ip98-184-89-2.mc.at.cox.net) ()
2020-12-22 13:14:09 +0100clog(~nef@bespin.org) (Ping timeout: 260 seconds)
2020-12-22 13:15:08 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 260 seconds)
2020-12-22 13:17:29 +0100 <gentauro> does anybody know if the GHC binaries for windows are made with some GitLab CI/CD? If yes, link please :)
2020-12-22 13:18:19 +0100rprije(~rprije@202.168.43.92) (Ping timeout: 246 seconds)
2020-12-22 13:22:18 +0100 <opqdonut> https://gitlab.haskell.org/ghc/ghc/-/wikis/continuous-integration sounds like circleci
2020-12-22 13:22:27 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-tihixihqvmmwogqg)
2020-12-22 13:22:59 +0100Tops21(~Tobias@dyndsl-095-033-089-034.ewe-ip-backbone.de)
2020-12-22 13:23:41 +0100 <opqdonut> hmm looks like there are gitlab pipelines as well, https://gitlab.haskell.org/ghc/ghc/-/pipelines
2020-12-22 13:23:49 +0100 <opqdonut> #ghc can tell you more probably...
2020-12-22 13:24:41 +0100Entertainment(~entertain@104.246.132.210)
2020-12-22 13:25:35 +0100tzlil(~tzlil@unaffiliated/tzlil) (Read error: Connection reset by peer)
2020-12-22 13:25:40 +0100 <gentauro> opqdonut: that table at the bottom doesn't look right
2020-12-22 13:25:52 +0100tzlil(~tzlil@unaffiliated/tzlil)
2020-12-22 13:25:56 +0100Tops2(~Tobias@dyndsl-095-033-089-034.ewe-ip-backbone.de) (Ping timeout: 240 seconds)
2020-12-22 13:26:39 +0100 <opqdonut> yeah I have no idea what that wiki page is about, there's no circleci config in the main ghc repo (only appveyor and gitlab-ci)
2020-12-22 13:27:25 +0100Entertainment(~entertain@104.246.132.210) (Client Quit)
2020-12-22 13:27:38 +0100 <gentauro> join #ghc
2020-12-22 13:28:47 +0100Entertainment(~entertain@104.246.132.210)
2020-12-22 13:28:50 +0100Betelgeuse1(~Betelgeus@185.204.1.185)
2020-12-22 13:29:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 13:29:46 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 13:30:44 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2020-12-22 13:31:26 +0100shad0w_(~shad0w_@160.202.37.172)
2020-12-22 13:34:10 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 258 seconds)
2020-12-22 13:43:36 +0100kkateq(1f11e846@ip1f11e846.dynamic.kabel-deutschland.de)
2020-12-22 13:43:39 +0100shad0w_(~shad0w_@160.202.37.172) (Read error: Connection reset by peer)
2020-12-22 13:44:01 +0100geekosaur(ac3a5304@172.58.83.4)
2020-12-22 13:45:14 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2020-12-22 13:46:15 +0100_Cactus_(~cactus@173.244.208.116) (Quit: Ex-Chat)
2020-12-22 13:49:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 13:49:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 13:50:20 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 13:51:13 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 13:51:14 +0100jmchael(~jmchael@81.174.205.210)
2020-12-22 13:53:27 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-22 13:54:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 264 seconds)
2020-12-22 13:54:54 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Ping timeout: 268 seconds)
2020-12-22 13:55:14 +0100 <sshine> https://hackage.haskell.org/package/hedgehog-1.0.4/docs/Hedgehog.html#t:Command
2020-12-22 13:55:30 +0100 <sshine> Hedgehog has so many features I don't know about.
2020-12-22 13:57:59 +0100hackageapi-maker 0.1.0.0 - Package to make APIs https://hackage.haskell.org/package/api-maker-0.1.0.0 (schnecki)
2020-12-22 14:00:18 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 14:04:28 +0100Tario(~Tario@201.192.165.173)
2020-12-22 14:10:10 +0100ADG1089__(~aditya@122.163.166.13)
2020-12-22 14:10:36 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 240 seconds)
2020-12-22 14:13:47 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 265 seconds)
2020-12-22 14:16:10 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 14:16:33 +0100 <siraben> How do I convert Text.ParserCombinators.Token into a parser?
2020-12-22 14:16:39 +0100 <siraben> parse decimal "" is ill-typed
2020-12-22 14:17:17 +0100kostic_(~kostic@51.194.80.91)
2020-12-22 14:17:26 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Remote host closed the connection)
2020-12-22 14:21:09 +0100 <pavonia> siraben: You need to apply it to a token parser
2020-12-22 14:21:28 +0100 <pavonia> see the example for makeTokenParser
2020-12-22 14:24:09 +0100Guest_2(56b2cdc4@host86-178-205-196.range86-178.btcentralplus.com)
2020-12-22 14:24:25 +0100Guest_2(56b2cdc4@host86-178-205-196.range86-178.btcentralplus.com) (Remote host closed the connection)
2020-12-22 14:25:18 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it) (Remote host closed the connection)
2020-12-22 14:26:49 +0100kkateq(1f11e846@ip1f11e846.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-12-22 14:28:09 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-22 14:34:06 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-22 14:34:22 +0100knupfer(~Thunderbi@200116b82c2bd800516fbdbd3eb5c414.dip.versatel-1u1.de)
2020-12-22 14:35:17 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
2020-12-22 14:37:58 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-12-22 14:40:33 +0100fendor(~fendor@77.119.131.23.wireless.dyn.drei.com)
2020-12-22 14:40:37 +0100 <sshine> why aren't there any LR(k) parser combinators? why are they all LL(k)?
2020-12-22 14:41:15 +0100 <sshine> siraben, Text.ParserCombinators smells like Parsec's old namespace.
2020-12-22 14:42:13 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-12-22 14:42:21 +0100 <sshine> siraben, did you see the example at the bottom of Text.Parsec.Token? https://hackage.haskell.org/package/parsec-3.1.14.0/docs/Text-Parsec-Token.html#v:makeTokenParser
2020-12-22 14:42:36 +0100ADG1089__(~aditya@122.163.166.13) (Remote host closed the connection)
2020-12-22 14:43:01 +0100ADG1089__(~aditya@122.163.166.13)
2020-12-22 14:43:49 +0100 <merijn> sshine: That's a...flawed question
2020-12-22 14:44:31 +0100 <siraben> pavonia: sshine: I did, so looks like I need to use the empty language def
2020-12-22 14:44:38 +0100 <merijn> sshine: LR(k)/LL(k) refer to the lookahead/recurssion parser generators can properly handle. But parser combinators aren't parser generators, they're more like DSLs/convenience libraries for writing recursive descent parsers
2020-12-22 14:44:59 +0100 <merijn> sshine: And recursive descent parsers can handle unbounded lookahead/retry IFF you write them like that
2020-12-22 14:45:15 +0100Kaiepi(~Kaiepi@47.54.252.148) (Read error: Connection reset by peer)
2020-12-22 14:45:29 +0100 <merijn> sshine: Of course, actually using that unboundedness will get you terrible performance
2020-12-22 14:45:35 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 14:46:51 +0100 <sshine> merijn, I'm asking, why aren't there parser combinators that construct LR(k) parsers? I understand that parser combinators are eDSLs. I don't understand why they can't be eDSLs over LR(k) parsers.
2020-12-22 14:47:30 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 14:47:46 +0100 <sshine> so basically rather than have Happy as a stand-alone program with a separate compilation step, you could have an embedded DSL.
2020-12-22 14:47:52 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 14:48:35 +0100 <merijn> sshine: You'd have to redo all the analysis every time you run the program to create the parser, though
2020-12-22 14:49:25 +0100drbean(~drbean@TC210-63-209-21.static.apol.com.tw) (Ping timeout: 264 seconds)
2020-12-22 14:49:26 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-22 14:49:47 +0100 <sshine> what if you did the analysis during compilation?
2020-12-22 14:49:48 +0100 <merijn> By having happy indepedent you analyse the grammar once and then encode the resulting parser. If you wanna embed happy you'll end up either 1) doing the analysis in TH at compile time to only analyse once, or 2) pay the cost each time
2020-12-22 14:50:04 +0100 <sshine> yes okay.
2020-12-22 14:53:02 +0100 <dminuoso> sshine: Look at parsley perhaps, so libraries that do static analysis at TH time is doable
2020-12-22 14:53:10 +0100 <dminuoso> https://github.com/J-mie6/ParsleyHaskell
2020-12-22 14:53:21 +0100 <kuribas> is there a way to hide a phantom type parameter?
2020-12-22 14:53:29 +0100 <kuribas> without an existential?
2020-12-22 14:54:17 +0100borne(~fritjof@200116b864c6f800cebf0c02893372bd.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-22 14:54:28 +0100 <kuribas> I suppose I should make a new type without the parameter then...
2020-12-22 14:56:49 +0100 <kuribas> ah wait, I already have a simpler type I can use :)
2020-12-22 14:57:45 +0100 <kuribas> I guess newtype + coerce would be the generic answer
2020-12-22 14:58:14 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-12-22 14:59:33 +0100ADG1089__(~aditya@122.163.166.13) (Remote host closed the connection)
2020-12-22 14:59:38 +0100 <dminuoso> That's the equivalent of `undefined` as a proof for type-level programming, isnt it? :)
2020-12-22 14:59:48 +0100 <kuribas> yeah
2020-12-22 15:00:11 +0100 <kuribas> coerce seems to circumvent type level safety (but not value level safety)
2020-12-22 15:02:57 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-22 15:03:16 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2020-12-22 15:04:14 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 260 seconds)
2020-12-22 15:05:36 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 240 seconds)
2020-12-22 15:08:47 +0100kam1(~kam1@24.231.108.143)
2020-12-22 15:09:13 +0100 <dminuoso> fsvo of "safety"
2020-12-22 15:09:29 +0100hackagehasbolt-extras 0.0.1.5 - Extras for hasbolt library https://hackage.haskell.org/package/hasbolt-extras-0.0.1.5 (ozzzzz)
2020-12-22 15:09:29 +0100 <dminuoso> If the newtype guarantees some preconditions on the value, then a coerce can break "value level safety" too
2020-12-22 15:09:32 +0100jlamothe(~jlamothe@198.251.55.207)
2020-12-22 15:09:42 +0100kostic_(~kostic@51.194.80.91)
2020-12-22 15:10:34 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2020-12-22 15:10:34 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2020-12-22 15:10:34 +0100mouseghost(~draco@wikipedia/desperek)
2020-12-22 15:14:13 +0100 <merijn> Preventing Coercible from working is pretty trivial, though
2020-12-22 15:14:23 +0100 <merijn> So not really
2020-12-22 15:14:29 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 15:14:48 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 15:14:49 +0100 <merijn> You can only coerce newtypes when their constructor is in scope and they're used in a role that allows it
2020-12-22 15:15:09 +0100 <solonarv> coerce only works when the constructors of all newtypes involved in the coercion are in scope, and in that case you were already able to dig in and break the invariants
2020-12-22 15:15:24 +0100 <merijn> solonarv: Too slow, n00b ;)
2020-12-22 15:15:45 +0100Rembanehands out swords
2020-12-22 15:16:19 +0100 <solonarv> if a library exports 'newtype SortedList a = SortedList { getSortedList :: [a] }' (with the obvious-given-the-name invariant) there is no difference between 'SortedList [3,1,2]' and 'coerce [3,1,2]', really - the presence of 'coerce' doesn't allow you to do things you couldn't already do
2020-12-22 15:18:46 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Ping timeout: 268 seconds)
2020-12-22 15:20:17 +0100ulidtko|k(~ulidtko@194.54.80.38)
2020-12-22 15:20:37 +0100ulidtko|kk(~ulidtko@194.54.80.38) (Read error: Connection reset by peer)
2020-12-22 15:24:58 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 15:25:54 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38) (Remote host closed the connection)
2020-12-22 15:26:00 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:a017:afb:342e:7f38)
2020-12-22 15:26:18 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-icrmchothviupllr)
2020-12-22 15:30:13 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 15:30:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 15:31:09 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e8a6:fffb:d62d:21f1)
2020-12-22 15:32:11 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 15:32:20 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 15:35:34 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2020-12-22 15:36:12 +0100drewolson(~drewolson@64.227.24.16) (Quit: The Lounge - https://thelounge.chat)
2020-12-22 15:36:24 +0100drewolson(~drewolson@64.227.24.16)
2020-12-22 15:37:26 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 15:39:38 +0100geekosaur(ac3a5304@172.58.83.4) (Remote host closed the connection)
2020-12-22 15:41:08 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-22 15:41:49 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
2020-12-22 15:42:01 +0100arybczak(~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c)
2020-12-22 15:42:44 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 260 seconds)
2020-12-22 15:44:52 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:e8a6:fffb:d62d:21f1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 15:46:11 +0100coot(~coot@37.30.50.187.nat.umts.dynamic.t-mobile.pl)
2020-12-22 15:46:31 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2020-12-22 15:48:18 +0100 <ezzieyguywuf> hoooray, ghc 8.10 hit in gentoo today!
2020-12-22 15:50:09 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-22 15:50:56 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 15:52:54 +0100fendordoesn't know the context but happily takes a sword
2020-12-22 15:55:32 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 15:55:46 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Ping timeout: 268 seconds)
2020-12-22 15:57:31 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net)
2020-12-22 15:57:59 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-22 16:02:02 +0100 <superstar64> does `-XStrict` affect the prelude?
2020-12-22 16:04:01 +0100 <superstar64> or does it stay lazy?
2020-12-22 16:04:15 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-22 16:04:37 +0100_ashbreeze_(~mark@184-157-32-85.dyn.centurytel.net) (Ping timeout: 260 seconds)
2020-12-22 16:05:17 +0100_ashbreeze_(~mark@64.85.214.234.reverse.socket.net)
2020-12-22 16:05:51 +0100 <solonarv> any extension generally only affects a module if it's enabled when compiling that module, and this is certainly true for Strict
2020-12-22 16:07:17 +0100 <solonarv> it's purely a syntax extension (inserts a number of '!'s all over the modules it's enabled in, basically)
2020-12-22 16:07:32 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-22 16:07:36 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 240 seconds)
2020-12-22 16:09:08 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-22 16:09:51 +0100p3n(~p3n@217.198.124.246) (Remote host closed the connection)
2020-12-22 16:11:43 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 258 seconds)
2020-12-22 16:11:44 +0100kostic_(~kostic@51.194.80.91)
2020-12-22 16:12:34 +0100christo(~chris@81.96.113.213)
2020-12-22 16:14:30 +0100jespada(~jespada@90.254.245.49)
2020-12-22 16:18:51 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 16:19:08 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 16:22:24 +0100 <wz1000> Is there anything like LogicT, but with the ability to dynamically reorder/reprioritise the computation?
2020-12-22 16:22:45 +0100fendor_(~fendor@178.165.130.57.wireless.dyn.drei.com)
2020-12-22 16:23:14 +0100 <wz1000> at some point, I want to be able to set the priority of the current branch, so that it is re-scheduled after all branches with a higher priority
2020-12-22 16:23:55 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-22 16:25:13 +0100fendor(~fendor@77.119.131.23.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
2020-12-22 16:25:13 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 246 seconds)
2020-12-22 16:25:17 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 16:25:28 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 16:27:29 +0100GRemLin(~GRemLin@45.32.110.226)
2020-12-22 16:28:00 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-22 16:29:36 +0100toorevitimirp(~tooreviti@117.182.182.252) (Ping timeout: 240 seconds)
2020-12-22 16:31:20 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-22 16:32:09 +0100al3x27(~plovs@85.254.75.83) (Ping timeout: 268 seconds)
2020-12-22 16:32:51 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 16:33:49 +0100Forlorn(~Forlorn@unaffiliated/forlorn)
2020-12-22 16:33:52 +0100 <Forlorn> "The purpose of the state monad is to hide the passing of state between _functions." -- but doesn't that just make it as abstract and more _confusing and unreadable just like when working with OOP? And also less _explicit?
2020-12-22 16:34:02 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-12-22 16:34:10 +0100 <Forlorn> Is5
2020-12-22 16:35:13 +0100 <Forlorn> isn't it better to make things more clear and where you can easily interpret and grasp something and where certainty stands despitte all possible doubt?
2020-12-22 16:35:26 +0100fendor_fendor
2020-12-22 16:35:31 +0100 <Forlorn> despite*
2020-12-22 16:35:52 +0100 <merijn> Yes, no, maybe, it depends
2020-12-22 16:37:42 +0100 <merijn> There are no "one size fits all" solutions
2020-12-22 16:38:03 +0100 <merijn> The State monad can both make things easier or harder, depending on what you're doing with it
2020-12-22 16:38:09 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2020-12-22 16:38:23 +0100 <Forlorn> merijn, When would it make things "easier".
2020-12-22 16:38:30 +0100 <Forlorn> ?
2020-12-22 16:39:40 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-22 16:41:53 +0100 <solonarv> easier, because you don't have to explicitly mention the state all the time, and since you're not handling the state explicitly, you can't as easily accidentally keep working on an old state
2020-12-22 16:42:11 +0100 <merijn> If there's some state that needs to be shared between a bunch of deeply nested structures or if there's no other convenient way to propagate the state
2020-12-22 16:43:00 +0100 <solonarv> I've also found it very convenient combined with lens's state-y operators, for writing VMs and such
2020-12-22 16:44:41 +0100 <AWizzArd> Are class MyClass a b c | a b -> c where and class MyClass a b c | b a -> c where identical? Or does the order before -> matter?
2020-12-22 16:45:43 +0100 <merijn> AWizzArd: I *think* they should be identical
2020-12-22 16:45:53 +0100 <solonarv> half-made-up example: interpret (Add src dest) = do Just x <- preuse (vmMem . ix sx); vmMem . ix dest += x; vmPC += 1
2020-12-22 16:45:55 +0100 <merijn> AWizzArd: Since they mean that 'a' and 'b' together uniquely determine C
2020-12-22 16:45:56 +0100 <AWizzArd> I would think so too.
2020-12-22 16:46:04 +0100 <AWizzArd> yeah, my interpretation
2020-12-22 16:46:14 +0100 <AWizzArd> merijn: thx
2020-12-22 16:46:44 +0100 <solonarv> I can imagine that the order might come into play if you are doing weird things with INCOHERENT instances, but apart from that I don t think it should matter
2020-12-22 16:47:09 +0100 <merijn> At that point you've got yourself to blame ;)
2020-12-22 16:47:35 +0100 <solonarv> oh for sure :D
2020-12-22 16:47:52 +0100p-core(~Thunderbi@koleje-wifi-0045.koleje.cuni.cz)
2020-12-22 16:47:53 +0100 <solonarv> INCOHERENT also makes (A, B) and (B, A) not mean the same thing in constraints sometimes
2020-12-22 16:48:23 +0100 <adamCS> Anyone know when the very awesome and amazing ghcup will add 8.10.3? I did something very dumb--upgraded to Big Sur on my laptop--and I think 8.10.3 will make everything work again. I tried to install by hand from the binary distribution but all the OS security stuff seems to get in the way even if I click "Allow" on everything. So I think I need to wait for ghcup...
2020-12-22 16:49:21 +0100 <merijn> adamCS: There's a magical command you need to run, I think? ping carter (I think he knew?)
2020-12-22 16:50:35 +0100 <adamCS> merijn: Like, there's a way to do it without waiting for it to just magically show up in the list? I assumed it was some file it pulls on startup and that one needed updating...
2020-12-22 16:51:21 +0100 <merijn> adamCS: I meant fixing the bindist to work
2020-12-22 16:51:41 +0100 <merijn> It has to do with notarisation, iirc
2020-12-22 16:52:04 +0100 <carter> theres an xattr command
2020-12-22 16:52:06 +0100 <merijn> But I'm a smart cookie, so I don't upgrade to Big Sur yet ;)
2020-12-22 16:52:10 +0100 <adamCS> merijn: Oh. That'd be useful as well.
2020-12-22 16:52:11 +0100 <carter> for removing foreign
2020-12-22 16:52:17 +0100 <adamCS> merijn: No need to rub it in!
2020-12-22 16:52:19 +0100 <carter> man xattr
2020-12-22 16:52:24 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 16:53:41 +0100 <carter> xattr -c ./ghc*
2020-12-22 16:55:00 +0100 <adamCS> carter: Thanks! Still gets stuck on ghc-pkg
2020-12-22 16:55:17 +0100 <carter> you didnt recurisvely do it?
2020-12-22 16:55:28 +0100 <carter> adamCS: you need to do the entire zip
2020-12-22 16:55:36 +0100 <carter> and then unpack
2020-12-22 16:55:53 +0100 <adamCS> got it. I'll try that!
2020-12-22 16:56:16 +0100kam1(~kam1@24.231.108.143)
2020-12-22 16:56:48 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Ping timeout: 260 seconds)
2020-12-22 16:56:53 +0100nemron(~nemron@2a02:810b:c7bf:fdb8:61d2:5f6c:bc78:4d37) (Quit: Textual IRC Client: www.textualapp.com)
2020-12-22 16:57:21 +0100Graypup_(Graypup@lfcode.ca) (Quit: ZNC 1.6.1 - http://znc.in)
2020-12-22 16:59:08 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-22 16:59:14 +0100 <adamCS> carter, merijn: It's working. Thank you!
2020-12-22 16:59:16 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
2020-12-22 16:59:21 +0100Graypup_(Graypup@lfcode.ca)
2020-12-22 17:00:10 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-22 17:01:12 +0100 <merijn> \o/
2020-12-22 17:01:21 +0100Rudd0(~Rudd0@185.189.115.103)
2020-12-22 17:01:25 +0100mastarija(~mastarija@93-138-112-136.adsl.net.t-com.hr)
2020-12-22 17:02:01 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2020-12-22 17:03:42 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 17:03:54 +0100 <adamCS> and now the great rebuild of all the libraries commences...
2020-12-22 17:04:14 +0100qwsd(~tema@217.118.92.215) (Ping timeout: 272 seconds)
2020-12-22 17:04:46 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2020-12-22 17:07:26 +0100dandart1(~Thunderbi@home.dandart.co.uk)
2020-12-22 17:07:54 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 260 seconds)
2020-12-22 17:07:54 +0100dandart1dandart
2020-12-22 17:09:21 +0100 <kuribas> :t lift
2020-12-22 17:09:23 +0100 <lambdabot> (MonadTrans t, Monad m) => m a -> t m a
2020-12-22 17:09:29 +0100 <kuribas> what does lift require Monad m?
2020-12-22 17:09:37 +0100 <kuribas> why?
2020-12-22 17:10:07 +0100 <kuribas> liftA2 doesn't...
2020-12-22 17:10:30 +0100 <merijn> How are those two related?
2020-12-22 17:10:43 +0100 <kuribas> ok, maybe not :)
2020-12-22 17:11:45 +0100orion(~orion@c-76-19-238-5.hsd1.nh.comcast.net)
2020-12-22 17:11:45 +0100orion(~orion@c-76-19-238-5.hsd1.nh.comcast.net) (Changing host)
2020-12-22 17:11:45 +0100orion(~orion@unaffiliated/orion)
2020-12-22 17:11:59 +0100 <kuribas> lift in the lift type looks arbitrary...
2020-12-22 17:12:47 +0100 <kuribas> why not put the Monad constraint in the instance?
2020-12-22 17:13:35 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-22 17:14:05 +0100 <orion> In theory, if GHC is configured to output LLVM, would I be able to compile applications on and for an IBM POWER9 processor?
2020-12-22 17:14:17 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 17:16:09 +0100 <kuribas> IMO ReaderT could have a Monoid instance as well
2020-12-22 17:18:04 +0100Betelgeuse1(~Betelgeus@185.204.1.185) (Remote host closed the connection)
2020-12-22 17:18:33 +0100 <kuribas> orion: it's not that easy
2020-12-22 17:18:56 +0100 <kuribas> orion: ghc has a large runtime as well
2020-12-22 17:19:09 +0100 <orion> The runtime is written in C though, yes?
2020-12-22 17:19:47 +0100 <kuribas> I think so...
2020-12-22 17:21:24 +0100bitmagie(~Thunderbi@200116b806b59b006c2fdba00c21d3bd.dip.versatel-1u1.de)
2020-12-22 17:21:34 +0100 <merijn> orion: Part of the runtime is
2020-12-22 17:21:45 +0100 <merijn> orion: Also "probably not"
2020-12-22 17:24:08 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-22 17:24:31 +0100al3x27(~plovs@85.254.75.83)
2020-12-22 17:25:08 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 17:25:43 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-22 17:25:57 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-22 17:26:34 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-22 17:30:01 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 265 seconds)
2020-12-22 17:30:49 +0100mastarija(~mastarija@93-138-112-136.adsl.net.t-com.hr) (Quit: Leaving)
2020-12-22 17:32:35 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 17:32:40 +0100UltimateNate(~UltimateN@s91904426.blix.com)
2020-12-22 17:32:46 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-22 17:34:52 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-22 17:37:16 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-22 17:38:09 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 17:38:23 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-12-22 17:39:21 +0100 <monochrom> "written in C" has little information. The hardest part is "written for the OS".
2020-12-22 17:39:57 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 17:40:22 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) ()
2020-12-22 17:42:16 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2020-12-22 17:42:19 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 260 seconds)
2020-12-22 17:43:27 +0100dandart(~Thunderbi@home.dandart.co.uk)
2020-12-22 17:43:28 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 256 seconds)
2020-12-22 17:44:02 +0100 <orion> merijn: Thanks.
2020-12-22 17:47:51 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-22 17:49:50 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-22 17:51:07 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 17:51:31 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 17:51:58 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-22 17:52:05 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
2020-12-22 17:52:15 +0100iekfkk(~username@117.200.6.222)
2020-12-22 17:52:17 +0100 <iekfkk> hi
2020-12-22 17:52:32 +0100orzo(joe@lasker.childrenofmay.org) (Ping timeout: 258 seconds)
2020-12-22 17:52:34 +0100 <iekfkk> do we need OOP or structs ... as most languages have them.
2020-12-22 17:52:42 +0100orzo(joe@lasker.childrenofmay.org)
2020-12-22 17:52:49 +0100duairc(~shane@ana.rch.ist) (Ping timeout: 260 seconds)
2020-12-22 17:53:03 +0100 <Rembane> iekfkk: Hi. No.
2020-12-22 17:53:04 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2020-12-22 17:53:06 +0100 <monochrom> structs yes, OOP no.
2020-12-22 17:53:07 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 17:53:23 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2020-12-22 17:54:04 +0100 <iekfkk> why would haskell has structs
2020-12-22 17:54:17 +0100 <merijn> Why wouldn't it?
2020-12-22 17:54:23 +0100 <iekfkk> are they even needed for a purely functional approach
2020-12-22 17:54:30 +0100duairc(~shane@ana.rch.ist)
2020-12-22 17:54:33 +0100 <merijn> iekfkk: Define "purely functional"
2020-12-22 17:54:58 +0100 <Vulfe_> a struct is essentially the same thing as a product type
2020-12-22 17:55:06 +0100 <iekfkk> i mean just using functions that accept input and return output, avoiding structs
2020-12-22 17:55:23 +0100 <merijn> Vulfe_: That's not gonna be super helpful for someone asking this question :)
2020-12-22 17:55:32 +0100 <Vulfe_> merijn: fair
2020-12-22 17:55:37 +0100 <merijn> iekfkk: Why is that input/output not allowed to be a struct?
2020-12-22 17:55:42 +0100 <monochrom> The question itself was not helpful in the first place.
2020-12-22 17:55:51 +0100 <iekfkk> struct has data members and is not a function, can't functions do that functionality thereby making struct superficial
2020-12-22 17:55:56 +0100 <monochrom> Or rather, based on an unhelpful premise.
2020-12-22 17:56:01 +0100 <iekfkk> because i don't like struct
2020-12-22 17:56:07 +0100 <merijn> iekfkk: Also, "just using functions" is not how anyone in this channel would define "purely functional"
2020-12-22 17:56:12 +0100 <Vulfe_> then think about records as product types instead
2020-12-22 17:56:16 +0100 <monochrom> My output is a tuple, so I need a product type.
2020-12-22 17:56:18 +0100 <merijn> iekfkk: Not everything is a function in functional programming
2020-12-22 17:56:19 +0100 <Vulfe_> because they are that
2020-12-22 17:56:34 +0100 <Vulfe_> a product type is determined by its projection operators
2020-12-22 17:56:37 +0100 <merijn> iekfkk: See also: http://conal.net/blog/posts/everything-is-a-function-in-haskell
2020-12-22 17:56:38 +0100 <Vulfe_> it doesn't really get more functional than that
2020-12-22 17:56:40 +0100bitmagie(~Thunderbi@200116b806b59b006c2fdba00c21d3bd.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-22 17:56:59 +0100Kaeipi(~Kaiepi@47.54.252.148)
2020-12-22 17:57:36 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2020-12-22 17:57:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Ping timeout: 260 seconds)
2020-12-22 17:58:05 +0100 <monochrom> Sometimes I need an existential type. An existential type is most useful when it is the existential quantifier wrapping over a product type.
2020-12-22 17:58:31 +0100 <monochrom> If there is no product type, then existential quantification is useless.
2020-12-22 17:58:33 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 17:59:32 +0100 <monochrom> If you don't like tuples, you don't have to use them. Go on with your simplistic Int->Bool programming.
2020-12-22 18:00:25 +0100geekosaur(42d52137@66.213.33.55)
2020-12-22 18:01:53 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2020-12-22 18:03:16 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2020-12-22 18:06:49 +0100lyxia(~lyxia@poisson.chat) (Ping timeout: 264 seconds)
2020-12-22 18:08:13 +0100 <solonarv> iekfkk: yes, you can forgo all data types ("structs") and work with functions exclusively. But this is very inconvenient to actually accomplish practical tasks with, and adding data types to a theory isn't all that complicated, so Haskell has them (has had them from the very start, even its direct ancestors had them)
2020-12-22 18:08:39 +0100 <iekfkk> no i want data types but not structs
2020-12-22 18:08:46 +0100 <iekfkk> reminds me of OOP
2020-12-22 18:08:53 +0100 <solonarv> please explain what you mean by "struct"
2020-12-22 18:09:03 +0100 <iekfkk> in julia we have them
2020-12-22 18:09:42 +0100 <solonarv> please also explain what you mean by "data type"
2020-12-22 18:10:08 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-22 18:10:22 +0100lyxia(~lyxia@poisson.chat)
2020-12-22 18:10:23 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 18:10:24 +0100 <travv0> structs have nothing to do with OOP
2020-12-22 18:10:32 +0100 <solonarv> from where I'm standing, "struct" is just the word C and C-family languages use for product types (i.e. a subset of data types) that have named fields
2020-12-22 18:10:42 +0100 <solonarv> C isn't even object-oriented!
2020-12-22 18:10:51 +0100 <iekfkk> struct Employee \n name::String address:String id:Int end \n john = Employee("john","nyc",8283) john.address john.name ... you get it that struct
2020-12-22 18:11:01 +0100 <merijn> solonarv: In C++ struct is just another word for "class" (with slightly different rules for visibility)
2020-12-22 18:11:23 +0100 <iekfkk> solonarv: yes fieldnames they are called in julia
2020-12-22 18:11:48 +0100 <solonarv> merijn: yeah, I took a C++ class last semester :p
2020-12-22 18:11:49 +0100 <iekfkk> but do we even need them in haskell?
2020-12-22 18:12:08 +0100 <solonarv> "need"? no, all you *need* is lambda
2020-12-22 18:12:16 +0100 <solonarv> or machine code if that's your preference
2020-12-22 18:13:10 +0100 <merijn> You don't even need computers!
2020-12-22 18:13:16 +0100 <geekosaur> this is a strange discussion
2020-12-22 18:13:19 +0100 <merijn> Free yourself, sheople!
2020-12-22 18:13:37 +0100 <merijn> geekosaur: Well, mostly a very confused one, I think :)
2020-12-22 18:13:49 +0100 <solonarv> and if that's what you mean by "struct", then yes, Haskell has them - although they're called "records" here. You can't to john.name , currently, but there's a somewhat controversial GHC extension adding that syntax which I think is set to release sometime soon
2020-12-22 18:15:22 +0100kam1(~kam1@24.231.108.143)
2020-12-22 18:16:20 +0100 <Vulfe_> if you don't like OOP then you can learn lenses and then feel superior about it
2020-12-22 18:16:56 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 240 seconds)
2020-12-22 18:17:54 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 18:20:05 +0100coot(~coot@37.30.50.187.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-22 18:20:36 +0100 <solonarv> if you don't like OOP then remember that 'thing.fieldName' is not what OOP is about
2020-12-22 18:20:48 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-22 18:22:43 +0100 <glguy> I like having choices
2020-12-22 18:23:05 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 18:23:43 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it) (Quit: Leaving)
2020-12-22 18:23:58 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-22 18:24:21 +0100plutoniix(~q@ppp-27-55-88-126.revip3.asianet.co.th)
2020-12-22 18:27:26 +0100 <koz_> solonarv: It's not really all that soon. RDP missed 9.0, so it's 9.2 at the earliest.
2020-12-22 18:28:34 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds)
2020-12-22 18:32:44 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:8163:ba97:5d66:959b)
2020-12-22 18:33:12 +0100 <solonarv> koz_: oh good, I won't have to see that blight for a few more months :p
2020-12-22 18:33:27 +0100 <koz_> solonarv: A lot more months if anything.
2020-12-22 18:35:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Remote host closed the connection)
2020-12-22 18:36:14 +0100 <solonarv> every time I look at the various proposals and issues around records I get sad, I get the impression that the implementation is just sort of going in random directions and piling on ad-hoc features
2020-12-22 18:37:13 +0100asheshambasta(~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2020-12-22 18:40:59 +0100Younder(~john@33.51-174-155.customer.lyse.net)
2020-12-22 18:43:21 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-22 18:44:15 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2020-12-22 18:44:18 +0100jonkri(~jonkri@pontarius/jon)
2020-12-22 18:45:31 +0100 <kuribas> is a methodless typeclass a good replacement for a Type Family?
2020-12-22 18:45:38 +0100 <jonkri> Hi! I'm trying to understand the Persistent answer here: <https://stackoverflow.com/questions/30062707/foreign-key-constraints-in-yesod-persistent>. Why doesn't "Foreign User authorfk author" work? I'm trying to specify a foreign key in this way, but a foreign key contraint is not being generated when Persistent migrates the database. Thanks!
2020-12-22 18:46:20 +0100 <kuribas> I need: type family IsNullable where IsNullable NotNull a = a; IsNullable Nullable a = Maybe a
2020-12-22 18:47:03 +0100 <dolio> That doesn't seem like a class.
2020-12-22 18:47:25 +0100plutoniix(~q@ppp-27-55-88-126.revip3.asianet.co.th) (Ping timeout: 240 seconds)
2020-12-22 18:47:58 +0100 <kuribas> dolio: class FromNullable nullable a b; instance FromNullable Nullable a (Maybe a); instance FromNullable NotNull a a
2020-12-22 18:49:02 +0100 <kuribas> dolio: that may need a functional dependency
2020-12-22 18:49:23 +0100 <kuribas> which isn't boring haskell either I suppose
2020-12-22 18:50:25 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 240 seconds)
2020-12-22 18:50:40 +0100Wamanuz(~wamanuz@90-230-67-56-no84.tbcn.telia.com)
2020-12-22 18:50:53 +0100 <solonarv> it does need a fundep, but why do you want a class?
2020-12-22 18:51:09 +0100 <kuribas> so restrict to boring haskell...
2020-12-22 18:51:13 +0100 <solonarv> (the fundep is 'a nullable -> b')
2020-12-22 18:51:17 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-22 18:51:40 +0100 <dolio> This doesn't sound like a good reason.
2020-12-22 18:52:02 +0100 <solonarv> I'm not convinced that fundeps are any more boring than type families, given that you can use FDs to replicate what TFs do - *including* all of the potential type astronaut wizardry
2020-12-22 18:52:35 +0100 <kuribas> good point :)
2020-12-22 18:53:30 +0100 <solonarv> your question demonstrates the issue perfectly: you have a type family, but you propose encoding it as a FD instead; this doesn't make it any less (potentially) confusing!
2020-12-22 18:53:43 +0100 <kuribas> that's true
2020-12-22 18:54:24 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-22 18:54:37 +0100 <dminuoso> Strange, usually people do it the other way around..
2020-12-22 18:54:50 +0100 <dminuoso> Switch from fundems to tyfams because of better ergonomics in many cases...
2020-12-22 18:55:26 +0100 <dolio> Yeah, the other thing is, the way that type families stuff works generally makes more sense than fundeps.
2020-12-22 18:55:37 +0100 <koz_> Also, every time someone brings up 'boring Haskell' or anything similar, I want to punch a bear.
2020-12-22 18:56:07 +0100 <koz_> Since it's at best extremely nebulous and at worst twists things into unrecognizable messes because of some kind of minimalism fetish.
2020-12-22 18:56:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-22 18:56:21 +0100 <koz_> (wow, I'm starting to sound like monochrom)
2020-12-22 18:56:22 +0100 <dolio> Like, fundeps work in a weird, "just inform inference" sort of way. They're missing behavior that an actual "functional dependency" would imply.
2020-12-22 18:56:26 +0100 <Younder> koz_, Drink one instead, less damaging to you health ;)
2020-12-22 18:56:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-22 18:56:43 +0100 <koz_> Younder: How does one _drink_ a bear? What next-level RUSSIA is this?
2020-12-22 18:56:46 +0100 <kuribas> koz_: I like the boring haskell sentiment, just not religiously...
2020-12-22 18:57:01 +0100Wuzzy(~Wuzzy@p549c9519.dip0.t-ipconnect.de)
2020-12-22 18:57:06 +0100 <dminuoso> And even if you do want the typeclass, chances are an associated tyfam is a bit nicer. :)
2020-12-22 18:57:10 +0100 <dolio> E.G. if you have `FromNullable n a b` and `FomNullable n a c`, you cannot deduce that `b = c`.
2020-12-22 18:58:20 +0100 <iekfkk> are records in the default lang without extension. why not remove them
2020-12-22 18:58:29 +0100 <dminuoso> iekfkk: Why would we remove records?
2020-12-22 18:58:32 +0100 <iekfkk> we dont' need those stinking records
2020-12-22 18:58:40 +0100 <iekfkk> we will use functions
2020-12-22 18:58:57 +0100 <dminuoso> iekfkk: There's a lot of associated benefits, from it.
2020-12-22 18:59:06 +0100 <iekfkk> idk
2020-12-22 18:59:14 +0100 <kuribas> koz_: if I got rid of the null checking, everything would be Maybe. Possibly but ugly.
2020-12-22 18:59:27 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-22 18:59:29 +0100 <dminuoso> iekfkk: Imagine you have a sum type with 10 fields, and you want to construct it. Using record syntax, it's less likely you make a mistake. Same story with pattern matching.
2020-12-22 18:59:29 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-22 18:59:39 +0100 <koz_> kuribas: Who said anything about getting rid of null checking? I wasn't objecting to that - just to 'boring Haskell'.
2020-12-22 18:59:43 +0100 <koz_> But in any case, you do you.
2020-12-22 18:59:58 +0100plutoniix(~q@node-uln.pool-125-24.dynamic.totinternet.net)
2020-12-22 19:00:30 +0100 <koz_> iekfkk: While we're at it, why not remove numbers too? We don't need those stinking numbers! We will use functions.
2020-12-22 19:00:31 +0100 <dminuoso> iekfkk: An unrelated part, you get niceties like Generics working really well with that. Being able to derive FromJSON or ToJSON is rather comfortable.
2020-12-22 19:00:58 +0100 <iekfkk> koz_: records are like classes
2020-12-22 19:01:05 +0100 <kuribas> koz_: I find many haskell libraries overengineered.
2020-12-22 19:01:18 +0100 <iekfkk> exactly overengineering
2020-12-22 19:01:41 +0100 <koz_> kuribas: I do too. Doesn't change my mind about 'boring Haskell' or anything similar.
2020-12-22 19:01:47 +0100 <merijn> This entire conversation feels rather pointless. Don't like records? Don't use them.
2020-12-22 19:02:01 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Ping timeout: 264 seconds)
2020-12-22 19:02:04 +0100 <koz_> merijn: Pointless conversations? In _my_ #haskell? Never! :P
2020-12-22 19:02:04 +0100 <phaazon> ^
2020-12-22 19:02:09 +0100 <phaazon> I meant ^ merijn
2020-12-22 19:02:24 +0100 <merijn> Don't like Haskell because it has records? Don't use Haskell. Problem solved.
2020-12-22 19:02:47 +0100 <dolio> The important part is that 'boring haskell' isn't about what extensions you turn on. It's about how complicated the thing you write with those extensions is.
2020-12-22 19:03:07 +0100 <kuribas> and avoiding those extensions unless really needed.
2020-12-22 19:04:25 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2020-12-22 19:04:30 +0100 <dolio> Trying to do something complicated by mangling it into older extensions is going to make it more complicated, not less.
2020-12-22 19:04:32 +0100 <iekfkk> https://stackoverflow.com/questions/5367167/haskell-record-syntax#5520803
2020-12-22 19:04:51 +0100 <merijn> dolio: More generally, I think it's useful to think in terms of "power-to-weight" ratio of extensions and complexity rather than some weird binary zealotry
2020-12-22 19:04:53 +0100 <iekfkk> if the early Haskellers had their way, we might've never had record syntax in the first place. The idea was apparently pushed onto Haskell by people who were already used to C-like syntax, and were more interested in getting C-like things into Haskell rather than doing things "the Haskell way".
2020-12-22 19:06:00 +0100 <merijn> iekfkk: This line of "questioning" is neither interesting nor productive
2020-12-22 19:06:04 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 19:06:48 +0100 <koz_> maerwald: Is ghcup gonna get an update due to the release of GHC 8.10.3?
2020-12-22 19:06:51 +0100 <merijn> "Imagine if the foundations of English were entirely different!" <- nice thought experiment, not helpful when communicating with the British
2020-12-22 19:08:48 +0100 <iekfkk> this raises serious discussion about practicality of struct to make an app and GUItk
2020-12-22 19:09:12 +0100knupfer(~Thunderbi@200116b82c2bd800516fbdbd3eb5c414.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
2020-12-22 19:09:20 +0100 <koz_> iekfkk: How are those things even _remotely_ related?
2020-12-22 19:09:27 +0100 <iekfkk> making an app and lib that makes it guitk is all that matters to a software person
2020-12-22 19:09:37 +0100koz_is a software person.
2020-12-22 19:09:43 +0100 <iekfkk> koz_: because apps are everything
2020-12-22 19:09:44 +0100 <Philonous> jonkri, I've tried the code locally, and it creates the foreign constraint just fine
2020-12-22 19:09:48 +0100 <koz_> Neither of those things matters to me.
2020-12-22 19:10:07 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-22 19:10:43 +0100 <koz_> Also, what's QualifiedDo all about?
2020-12-22 19:10:54 +0100 <iekfkk> you say how is programming and gui software related, obvious what's the use of programming then if you can't make an app. Is your view different than mine? are you talking about not making an app?
2020-12-22 19:11:03 +0100 <iekfkk> i just see programming as an app maker
2020-12-22 19:12:01 +0100 <koz_> iekfkk: Your exact claim was, and I quote, 'this raises serious discussion about practicality of struct to make an app and GUItk'. I was inquiring how you go from 'struct' to 'making an app and GUItk'.
2020-12-22 19:12:12 +0100 <koz_> Because the logical sequence there is not clear to me.
2020-12-22 19:12:20 +0100 <Feuermagier> i have a treenode, that can either be a node or a leaf. how do I check the type of the object?
2020-12-22 19:12:29 +0100 <koz_> Feuermagier: Pattern match?
2020-12-22 19:12:33 +0100 <merijn> Feuermagier: Pattern matching
2020-12-22 19:12:34 +0100 <iekfkk> because if we can make an app without struct, then the conclusion is struct is useless... that's my thinking
2020-12-22 19:12:46 +0100 <koz_> iekfkk: I can make 'an app' without numbers too.
2020-12-22 19:12:47 +0100 <geekosaur> ...
2020-12-22 19:12:50 +0100magma(~magma@host-79-22-138-220.retail.telecomitalia.it)
2020-12-22 19:12:50 +0100 <koz_> Does that make _numbers_ useless?
2020-12-22 19:12:52 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 246 seconds)
2020-12-22 19:13:02 +0100 <Feuermagier> can i just n == Node ?
2020-12-22 19:13:12 +0100 <koz_> Feuermagier: No, because that doesn't make sense.
2020-12-22 19:13:14 +0100 <merijn> koz_: *points at "no feeding"-sign*
2020-12-22 19:13:17 +0100 <koz_> You want pattern matching.
2020-12-22 19:13:38 +0100 <iekfkk> koz_: no not effectively not even remotely using assembly as it won't be portable, even with C it's a nightmare , and then someone said like a child we can make it with machinecode !!
2020-12-22 19:13:56 +0100 <koz_> How does one summon mods? I think we broke the bot.
2020-12-22 19:14:16 +0100 <Philonous> jonkri, The answer given in under the stack overflow question is just wrong, persistent has supported explicit Primary and Foreign keys for a long time
2020-12-22 19:14:17 +0100 <iekfkk> koz_: but structs are not as fundamental to making apps as numbers are
2020-12-22 19:14:59 +0100 <iekfkk> i'd be in deep sh** if there are no numbers, as they are prerequisite
2020-12-22 19:15:26 +0100 <Feuermagier> isLeaf :: Tree a -> Boolean --- isLeaf t | t == Leaf = true
2020-12-22 19:15:34 +0100 <Feuermagier> like this?
2020-12-22 19:15:36 +0100 <geekosaur> no
2020-12-22 19:15:40 +0100 <koz_> Feuermagier: No.
2020-12-22 19:15:46 +0100 <jle`> Feuermagier: have you tried pattern matching?
2020-12-22 19:16:04 +0100 <Feuermagier> is pattern mathing the thing with the | ?
2020-12-22 19:16:09 +0100 <koz_> Feuermagier: Nope.
2020-12-22 19:16:12 +0100 <jle`> not quite, that's a guard
2020-12-22 19:16:13 +0100 <koz_> Those are called guards.
2020-12-22 19:16:18 +0100 <jle`> isLeaf Leaf = True
2020-12-22 19:16:23 +0100 <jle`> isLeaf (Node _ _ _) = False
2020-12-22 19:16:23 +0100 <koz_> jle`: Something something soda?
2020-12-22 19:16:25 +0100 <jonkri> Philonous: Thank you. :)
2020-12-22 19:16:32 +0100 <jle`> or however many arguments Node has
2020-12-22 19:16:33 +0100 <jonkri> I'd better go back and check my code again, then. :)
2020-12-22 19:16:46 +0100 <Feuermagier> oh, | seemed like something that well... matches patterns
2020-12-22 19:16:55 +0100 <jle`> Feuermagier: what pattern does it match?
2020-12-22 19:17:02 +0100 <geekosaur> this is a pattern of constructors
2020-12-22 19:17:12 +0100 <Feuermagier> the one i write in its check function
2020-12-22 19:17:13 +0100 <geekosaur> not e.g. regex
2020-12-22 19:17:24 +0100 <jle`> ah, you mean the boolean
2020-12-22 19:17:37 +0100 <jle`> yeah, pattern here is "how you could construct a tree"
2020-12-22 19:17:47 +0100 <jle`> data Tree a = Node a (Tree a) (Tree a) | Leaf
2020-12-22 19:17:54 +0100 <merijn> jle`: Pro tip, record syntax works on non-records!
2020-12-22 19:18:03 +0100 <jle`> so you can either match on the `Node _ _ _` pattern, or the `Leaf` pattern
2020-12-22 19:18:10 +0100 <merijn> jle`: So you can write "isLeaf Node{} = False" to match regardless of argument count
2020-12-22 19:18:14 +0100 <jle`> merijn: heh, wasn't sure that would be appropriate for a newcomer D:
2020-12-22 19:18:50 +0100 <jle`> Feuermagier: so your code would be like: `isLeaf (Node a b c) = ..,; isLeaf Leaf = ...`
2020-12-22 19:19:15 +0100 <merijn> Or, better yet, don't have an isLeaf at all and use pattern matching insead of using isLeaf ;)
2020-12-22 19:21:54 +0100 <jonkri> Philonous: Could it be that my primary key is a UUID, or that my foreign key column is a Maybe value (that is, that the foreign key column is nullable)?
2020-12-22 19:22:20 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-22 19:23:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 19:23:34 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 19:24:03 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
2020-12-22 19:24:34 +0100 <jonkri> Philonous: Here's what the code looks like: <https://pastebin.com/quFCYqqQ>.
2020-12-22 19:25:56 +0100 <Philonous> jonkri, UUID is definitely not the problem, I've used them as foreign references a lot
2020-12-22 19:26:08 +0100borne(~fritjof@200116b864c6f800c0a3d285e8e687f4.dip.versatel-1u1.de)
2020-12-22 19:26:45 +0100 <jonkri> Philonous: Also, I'm using migrateAll for the Persistent migration.
2020-12-22 19:27:30 +0100hackagecountable-inflections 0.3.0 - Countable Text Inflections https://hackage.haskell.org/package/countable-inflections-0.3.0 (tippenein)
2020-12-22 19:27:39 +0100 <shapr> migrateAny
2020-12-22 19:27:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-22 19:28:09 +0100 <Philonous> jonkri, I'm assuming "migrateAll" is the name you've given to the migration via mkMigrate?
2020-12-22 19:29:07 +0100dandart(~Thunderbi@2a00:23c7:f5a6:d001:21e9:329e:6e0c:5ce)
2020-12-22 19:29:15 +0100 <merijn> jonkri: oof, optional foreign key? Not sure persistent supports that
2020-12-22 19:29:26 +0100 <Philonous> Just ran that code, it seems it does
2020-12-22 19:29:40 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
2020-12-22 19:29:44 +0100 <merijn> jonkri: I would also recommend reconsidering using persistent, tbh :)
2020-12-22 19:30:04 +0100 <Philonous> I think the problem might be the backend, which actually creates the migration, I just checked with sqlite
2020-12-22 19:30:23 +0100 <merijn> The backend is responsible for migrations, yes
2020-12-22 19:30:30 +0100 <merijn> It's also not particularly sophisticated
2020-12-22 19:30:41 +0100 <Philonous> jonkri, No, come to think of it, I've used optional foreign keys in the past, can't be the problem either
2020-12-22 19:30:43 +0100 <merijn> Certainly don't expect to be able to arbitrary migrations
2020-12-22 19:31:06 +0100 <Philonous> Yeah, I've moved to manual migrations because I don't trust it
2020-12-22 19:31:24 +0100Guest98308(sid30093@gateway/web/irccloud.com/x-xltcvhbyjparvqrq) (Changing host)
2020-12-22 19:31:25 +0100Guest98308(sid30093@musicbrainz/user/ocharles)
2020-12-22 19:31:33 +0100Guest98308ocharles
2020-12-22 19:31:36 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2020-12-22 19:31:39 +0100 <Philonous> Much better to have them in source control, you can always see what's going on instead of hoping that persistent guesses the right migration
2020-12-22 19:32:03 +0100 <merijn> Philonous: I use semi-manual migrations piggy backing on persistent, but that's like 3.2k LOC right there just for migrations
2020-12-22 19:32:30 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) (Remote host closed the connection)
2020-12-22 19:32:32 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 19:32:38 +0100 <merijn> jonkri: Which database are you using?
2020-12-22 19:32:49 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds)
2020-12-22 19:33:00 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-22 19:33:23 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-22 19:34:04 +0100 <jonkri> I'm using https://hackage.haskell.org/package/esqueleto-3.4.0.1/docs/Database-Esqueleto.html#v:runMigration. migrateAll is defined through Esqueleto somehow.
2020-12-22 19:34:13 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 272 seconds)
2020-12-22 19:34:22 +0100 <jonkri> merijn: I'm using PostgreSQL.
2020-12-22 19:34:24 +0100 <merijn> ah, I don't use esqueleto, just persistent
2020-12-22 19:34:31 +0100christo(~chris@81.96.113.213)
2020-12-22 19:34:43 +0100 <merijn> jonkri: Well, at least you got that going for you!
2020-12-22 19:35:07 +0100 <merijn> jonkri: hmm, this migration is adding a foreign key to an existing database?
2020-12-22 19:35:10 +0100 <Philonous> I'm pretty sure that's just a re-export from persistent
2020-12-22 19:35:20 +0100 <jonkri> I have a feeling I'm doing something extremely silly here, and is totally wasting your time...!
2020-12-22 19:35:57 +0100 <Philonous> "migrateAll" is defined by "mkMigration", it's the string parameter you pass to it
2020-12-22 19:36:10 +0100 <Philonous> mkMigrate, I mean
2020-12-22 19:36:15 +0100 <jonkri> The foreign key should be visible through \d in psql, right?
2020-12-22 19:36:22 +0100 <Philonous> Yes
2020-12-22 19:36:39 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker) (Ping timeout: 260 seconds)
2020-12-22 19:37:30 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-22 19:37:50 +0100avdb(~avdb@gateway/tor-sasl/avdb)
2020-12-22 19:38:53 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 19:39:19 +0100 <jonkri> I'm realizing now that the version I'm using of Persistent is very old. 2.7.3.1. That's almost 3 years.
2020-12-22 19:39:28 +0100 <jonkri> I should upgrade it and see if that solves the problem.
2020-12-22 19:39:47 +0100 <Philonous> Can't hurt, but it should still work
2020-12-22 19:40:02 +0100 <merijn> eh...
2020-12-22 19:40:18 +0100 <merijn> I know at least 2 major updates to foreign key stuff in persistent in the past 2 years, so...
2020-12-22 19:40:35 +0100 <Philonous> Oh ok then
2020-12-22 19:40:37 +0100 <merijn> I wouldn't be so sure if he's using a 3 year old version and you are not :p
2020-12-22 19:40:45 +0100Wamanuz(~wamanuz@90-230-67-56-no84.tbcn.telia.com) (Remote host closed the connection)
2020-12-22 19:41:05 +0100 <jonkri> merijn: Interesting! Why did you think I should reconsider Persistent, by the way? Was that just for the migrations, or in general?
2020-12-22 19:41:10 +0100Wamanuz(~wamanuz@90-230-67-56-no84.tbcn.telia.com)
2020-12-22 19:42:34 +0100 <merijn> jonkri: In general. It seems like such a nice and convenient way to write your schema. No messing with SQL and setup, yay! But I've basically built my own entire migration and query logic on top of it because it didn't expose all the details I needed (not to mention a number of PRs to persistent)
2020-12-22 19:42:42 +0100hiroaki(~hiroaki@ip4d16fa3b.dynamic.kabel-deutschland.de)
2020-12-22 19:42:56 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2020-12-22 19:43:22 +0100 <merijn> jonkri: And having looked at the current API design I find it *incredibly* hard to use properly, there's a number of exposed functions/features that can leak resources and using them without leaking is non-obvious
2020-12-22 19:44:46 +0100 <jonkri> merijn: I see! Thanks for the info. :)
2020-12-22 19:45:04 +0100 <solonarv> koz_: QualifiedDo is "like RebindableSyntax, but only for that one 'do' block" - I haven't looked into it in great detail but it seems like a very nice extension to me
2020-12-22 19:45:24 +0100 <merijn> jonkri: I'd probably use sqlite-simple and postgres-simple directly in the future
2020-12-22 19:45:43 +0100 <merijn> jonkri: But I've got too much code to be willing to rewrite it now >.>
2020-12-22 19:45:47 +0100 <Philonous> Also no joins, unless you use esqueleto, which is pretty good for what it does, but then you're writing SQL in Haskell, and it's not such a great fit. So sometimes you need to drop down to SQL anyway
2020-12-22 19:46:03 +0100 <merijn> Also, SQL is just pretty good
2020-12-22 19:46:03 +0100avdb(~avdb@gateway/tor-sasl/avdb) (Ping timeout: 240 seconds)
2020-12-22 19:46:09 +0100 <kuribas> jonkri, merijn I may find some time this holiday to port my library to hdbc
2020-12-22 19:46:29 +0100 <merijn> The sooner you embrace the love of SQL, the better! :p
2020-12-22 19:46:34 +0100 <kuribas> the typed layer looks a bit like esqueleto, but cleaner :)
2020-12-22 19:46:44 +0100 <kuribas> merijn: my library is just SQL btw
2020-12-22 19:46:45 +0100knupfer(~Thunderbi@i5E86B42D.versanet.de)
2020-12-22 19:46:49 +0100 <kuribas> a thin layer above it
2020-12-22 19:47:00 +0100 <merijn> kuribas: Eh, hdbc (I've heard) has pretty abysmal performance :)
2020-12-22 19:47:10 +0100 <kuribas> merijn: ah :(
2020-12-22 19:47:15 +0100 <kuribas> what should I use then?
2020-12-22 19:47:26 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-22 19:47:32 +0100 <Philonous> I've been fiddling about with code that automatically batches requests a la Haxl, but directly on top of persistent, so less futzing about.
2020-12-22 19:48:07 +0100 <merijn> kuribas: In the sense of a general backend? I don't think one really exists?
2020-12-22 19:48:13 +0100 <Philonous> Which means in common cases you can avoid n+1 queries without having to write custom joins
2020-12-22 19:48:41 +0100 <kuribas> merijn: I have currently mysql, which according to these channels only our company uses :)
2020-12-22 19:48:54 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 272 seconds)
2020-12-22 19:49:03 +0100 <kuribas> Philonous: for generic SQL?
2020-12-22 19:49:36 +0100 <Philonous> Anything that esqueleto can target, at this point
2020-12-22 19:49:44 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
2020-12-22 19:50:33 +0100 <kuribas> open source?
2020-12-22 19:50:37 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 264 seconds)
2020-12-22 19:51:05 +0100avdb(~avdb@gateway/tor-sasl/avdb)
2020-12-22 19:51:06 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2020-12-22 19:52:55 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 19:53:13 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-12-22 19:53:49 +0100 <kuribas> Philonous: I am writing a graphql server based on SQL rewriting
2020-12-22 19:54:18 +0100 <kuribas> at least, a graphql server library that would support it.
2020-12-22 19:54:36 +0100 <Philonous> It's not realeased anywhere, there's a few problems I need to look into more.
2020-12-22 19:54:53 +0100 <kuribas> as the graphql seems to follow a less flexible imperative model, and morpheus is all TH magick.
2020-12-22 19:55:35 +0100AlexanderEliseev(b0c3cefe@176.195.206.254)
2020-12-22 19:57:12 +0100AlexanderEliseev(b0c3cefe@176.195.206.254) (Remote host closed the connection)
2020-12-22 19:57:21 +0100 <kuribas> merijn: maybe better, I document my library better, post it on reddit, and hope someone else ports it to postgresql :-)
2020-12-22 20:00:00 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 20:00:59 +0100hackagetasty-silver 3.2.1 - A fancy test runner, including support for golden tests. https://hackage.haskell.org/package/tasty-silver-3.2.1 (PhilippHausmann)
2020-12-22 20:01:27 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 20:01:38 +0100Mikagami(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-22 20:02:04 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-22 20:02:58 +0100EdFletcher(~EdFletche@unaffiliated/edfletchert137) ("Leaving")
2020-12-22 20:03:03 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-22 20:03:25 +0100geekosaur(42d52137@66.213.33.55) (Ping timeout: 245 seconds)
2020-12-22 20:03:33 +0100berberman_(~berberman@unaffiliated/berberman)
2020-12-22 20:04:01 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 258 seconds)
2020-12-22 20:06:49 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2020-12-22 20:09:05 +0100alx741(~alx741@186.178.110.239) (Quit: alx741)
2020-12-22 20:09:23 +0100alx741(~alx741@186.178.110.239)
2020-12-22 20:14:47 +0100ADG1089__(~aditya@223.235.77.1)
2020-12-22 20:15:13 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 264 seconds)
2020-12-22 20:15:41 +0100bisickcor(~username@117.200.10.75)
2020-12-22 20:15:42 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-22 20:15:59 +0100hackagegraphula 2.0.0.2 - A declarative library for describing dependencies between data https://hackage.haskell.org/package/graphula-2.0.0.2 (PatrickBrisbin)
2020-12-22 20:17:08 +0100jathan(~jathan@69.61.93.38)
2020-12-22 20:18:16 +0100iekfkk(~username@117.200.6.222) (Ping timeout: 240 seconds)
2020-12-22 20:21:18 +0100joehillen(joehillen@unaffiliated/joehillen) ()
2020-12-22 20:21:39 +0100geekosaur(42d52137@66.213.33.55)
2020-12-22 20:22:48 +0100pipi(cab83936@202.184.57.54)
2020-12-22 20:24:03 +0100pipi(cab83936@202.184.57.54) (Remote host closed the connection)
2020-12-22 20:24:21 +0100_ashbreeze_(~mark@64.85.214.234.reverse.socket.net) (Remote host closed the connection)
2020-12-22 20:25:52 +0100_ashbreeze_(~mark@64.85.214.234.reverse.socket.net)
2020-12-22 20:30:08 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Quit: WeeChat 2.7.1)
2020-12-22 20:31:21 +0100Merfont(~Kaiepi@47.54.252.148)
2020-12-22 20:31:24 +0100 <dsal> Is there an annotation I can use to tell GHC that a pattern, while incomplete, is still correct/total/
2020-12-22 20:31:26 +0100Kaeipi(~Kaiepi@47.54.252.148) (Read error: Connection reset by peer)
2020-12-22 20:32:52 +0100 <dsal> Currently sledging in a `{-# OPTIONS_GHC -Wno-incomplete-patterns #-}`, but it'd be nice to be more local.
2020-12-22 20:35:01 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 272 seconds)
2020-12-22 20:35:13 +0100 <xerox_> dsal: I have had the same question
2020-12-22 20:36:05 +0100 <dsal> Surely it must exist. I'd rather litter my code with annotations that it's correct than add pattern captures and cases for things that are impossible and I have to respond with error or something anyway.
2020-12-22 20:36:30 +0100 <merijn> dsal: Something more local would be "foo _ = error "can't happen""
2020-12-22 20:37:10 +0100 <xerox_> that's exactly the line you feel worst about adding :D
2020-12-22 20:37:23 +0100 <dsal> Yeah, I have one of those. I guess satisfying the compiler and providing a better error message when impossible happens at the same time is probably fine.
2020-12-22 20:40:30 +0100hackagecherry-core-alpha 0.2.0.0 - The core library for Cherry Haskell. https://hackage.haskell.org/package/cherry-core-alpha-0.2.0.0 (terezasokol)
2020-12-22 20:40:55 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Quit: ->)
2020-12-22 20:42:10 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 20:42:27 +0100 <geekosaur> not the most self-descriptive of packages
2020-12-22 20:43:15 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-22 20:44:00 +0100 <dsal> cherry core sounds like the pits
2020-12-22 20:44:44 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-22 20:47:03 +0100 <cohn> xD
2020-12-22 20:47:24 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-22 20:47:25 +0100texasmyn_(~texasmyns@23.82.14.34)
2020-12-22 20:48:05 +0100knupfer(~Thunderbi@i5E86B42D.versanet.de) (Ping timeout: 240 seconds)
2020-12-22 20:48:10 +0100xiinotulp(~q@node-uov.pool-125-24.dynamic.totinternet.net)
2020-12-22 20:49:37 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com)
2020-12-22 20:50:18 +0100texasmynsted(~texasmyns@185.232.22.12) (Ping timeout: 256 seconds)
2020-12-22 20:51:27 +0100plutoniix(~q@node-uln.pool-125-24.dynamic.totinternet.net) (Ping timeout: 256 seconds)
2020-12-22 20:52:52 +0100StoneToad(~StoneToad@104-192-232-50.ppp.storm.ca) (Ping timeout: 272 seconds)
2020-12-22 20:52:52 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 20:53:27 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2020-12-22 20:53:30 +0100StoneToad(~StoneToad@104-192-232-50.ppp.storm.ca)
2020-12-22 20:53:51 +0100 <Philonous> dsal, COMPLETE pragmas work for that
2020-12-22 20:54:38 +0100 <dsal> Philonous: Yeah, that's what I was looking for. I was searching for "total" and similar.
2020-12-22 20:54:39 +0100dandart(~Thunderbi@2a00:23c7:f5a6:d001:21e9:329e:6e0c:5ce) (Ping timeout: 272 seconds)
2020-12-22 20:54:58 +0100ADG1089__(~aditya@223.235.77.1) (Remote host closed the connection)
2020-12-22 20:55:09 +0100 <Philonous> It's not necessarily what you want, though, since it's sort of "global"
2020-12-22 20:55:22 +0100ADG1089__(~aditya@223.235.77.1)
2020-12-22 20:55:41 +0100 <Philonous> But if there's a specific set of constructors or pattern synonyms that you want considered complete it's what you're looking for
2020-12-22 20:56:29 +0100 <dsal> Yeah, it looks like most options are worse than just "error with a good reason this was impossible
2020-12-22 20:56:30 +0100 <dsal> "
2020-12-22 20:57:23 +0100ADG1089__(~aditya@223.235.77.1) (Remote host closed the connection)
2020-12-22 20:57:45 +0100ADG1089__(~aditya@223.235.77.1)
2020-12-22 20:58:02 +0100 <Philonous> I think {-# COMPLETE" #-} is mostly useful for pattern synonyms since they are opaque to the pattern match checker, but maybe some clever use could get you there
2020-12-22 20:58:27 +0100cyphase(~cyphase@unaffiliated/cyphase) (Ping timeout: 272 seconds)
2020-12-22 20:59:18 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2020-12-22 21:00:56 +0100ADG1089__(~aditya@223.235.77.1) (Remote host closed the connection)
2020-12-22 21:01:18 +0100ADG1089__(~aditya@223.235.77.1)
2020-12-22 21:02:36 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 240 seconds)
2020-12-22 21:03:21 +0100 <fuzzypixelz> when I'm writing haskell I often end up with functions like:
2020-12-22 21:03:28 +0100 <fuzzypixelz> > f =map (bimap unwords (unwords . take 2) . splitAt 1 . words) . splitOn "," . unwords . drop 4 . words
2020-12-22 21:03:30 +0100 <lambdabot> <hint>:1:3: error: <hint>:1:3: error: parse error on input ‘=’
2020-12-22 21:04:11 +0100 <fuzzypixelz> > map (bimap unwords (unwords . take 2) . splitAt 1 . words) . splitOn "," . unwords . drop 4 . words
2020-12-22 21:04:13 +0100 <lambdabot> <[Char] -> [([Char],[Char])]>
2020-12-22 21:04:31 +0100 <fuzzypixelz> Then I have no idea how to simplify them
2020-12-22 21:04:55 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-22 21:05:16 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2020-12-22 21:05:52 +0100nineonine(~nineonine@50.216.62.2)
2020-12-22 21:06:02 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:4535:f480:7dff:b3b5) (Ping timeout: 264 seconds)
2020-12-22 21:06:54 +0100 <hololeap> fuzzypixelz: maybe focus on making the code more readable/intelligable rather than making it as few lines as possible
2020-12-22 21:08:10 +0100 <solonarv> split it up: dropNWords n = unwords . drop n . words; firstThreeWords xs = case words xs of (x:y:z:_) -> (x, y ++ z) ; f = map firstThreeWords . splitOn "," . dropNWords 4
2020-12-22 21:08:24 +0100 <hololeap> also, it kind of looks like you might benefit from using a parser library
2020-12-22 21:08:35 +0100 <solonarv> (probably add a sensible failure case to firstThreeWords, and choose better names)
2020-12-22 21:08:52 +0100 <solonarv> but this is also about the level of complexity where I'd jump ship to a parser combinator library
2020-12-22 21:09:02 +0100jneira(5127ad83@gateway/web/cgi-irc/kiwiirc.com/ip.81.39.173.131)
2020-12-22 21:09:21 +0100 <fuzzypixelz> huh, this is AOC day 7
2020-12-22 21:09:35 +0100 <fuzzypixelz> an example of a parser library please?
2020-12-22 21:09:40 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Remote host closed the connection)
2020-12-22 21:09:42 +0100 <hololeap> parsec
2020-12-22 21:09:44 +0100 <solonarv> I use parser combinators to parse all the AoC inputs
2020-12-22 21:09:49 +0100 <solonarv> megaparsec is my go-to
2020-12-22 21:09:57 +0100 <hololeap> not sure what's available for AoC
2020-12-22 21:10:11 +0100 <merijn> hololeap: Whatever you install locally...
2020-12-22 21:10:18 +0100 <solonarv> whatever you want, your code runs on your own machine (not on the AoC servers)
2020-12-22 21:10:22 +0100 <fuzzypixelz> hololeap: yes you can do whatever
2020-12-22 21:10:25 +0100 <hololeap> oh, didn't know that
2020-12-22 21:10:53 +0100 <hololeap> then yeah, megaparsec is what i would choose as well
2020-12-22 21:11:02 +0100 <fuzzypixelz> thanks for reminding me (informing me) that parser libraries exit
2020-12-22 21:11:17 +0100 <fuzzypixelz> um parsec vs megaparsec?
2020-12-22 21:11:19 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 21:11:22 +0100 <Feuermagier> I have an operation that might return "Nothing" - I need to perform further functions if I get a "Just", otherwise I need to abort and return "Nothing". How do I elegantly chain functions where any might fail and return "Nothing"?
2020-12-22 21:11:36 +0100xcmw(~textual@2603-6011-2200-f103-b803-6e7f-4f6f-d00a.res6.spectrum.com)
2020-12-22 21:11:38 +0100 <shapr> I need "how to convert your attoparsec code to megaparsec" tutorial.
2020-12-22 21:11:55 +0100 <shapr> Feuermagier: what about the maybe monad?
2020-12-22 21:12:31 +0100 <Feuermagier> shapr, haven't heard about those. will look it up.
2020-12-22 21:13:11 +0100 <xerox_> :t asum
2020-12-22 21:13:12 +0100 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
2020-12-22 21:13:36 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 240 seconds)
2020-12-22 21:13:48 +0100evanjs-(~evanjs@075-129-098-007.res.spectrum.com)
2020-12-22 21:15:22 +0100dandart(~Thunderbi@2a00:23c7:f5a6:d001:21e9:329e:6e0c:5ce)
2020-12-22 21:16:21 +0100 <solonarv> % :t (>>=) @Maybe -- Feuermagier , sound like a useful type?
2020-12-22 21:16:22 +0100 <yahb> solonarv: Maybe a -> (a -> Maybe b) -> Maybe b
2020-12-22 21:17:26 +0100 <hololeap> fuzzypixelz: https://github.com/mrkkrp/megaparsec#comparison-with-other-solutions
2020-12-22 21:18:07 +0100 <shapr> yeah, I just need to port over all my existing code so I know what to use in place of say, decimal
2020-12-22 21:19:22 +0100 <hololeap> shapr: Text.Megaparsec.Char.Lexer.decimal ?
2020-12-22 21:20:02 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-22 21:20:42 +0100 <hololeap> or i guess you would probably want Text.Megaparsec.Byte.Lexer.decimal if you're working with ByteStrings
2020-12-22 21:20:52 +0100ADG1089__(~aditya@223.235.77.1) (Remote host closed the connection)
2020-12-22 21:21:19 +0100ADG1089__(~aditya@223.235.77.1)
2020-12-22 21:22:19 +0100wonko7(~wonko7@lns-bzn-55-82-255-183-4.adsl.proxad.net)
2020-12-22 21:22:57 +0100coot(~coot@37.30.50.187.nat.umts.dynamic.t-mobile.pl)
2020-12-22 21:23:41 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 21:24:09 +0100 <shapr> hololeap: I dunno, last year I tried to get started with megaparsec and switched back to attoparsec for reasons I've forgotton :-(
2020-12-22 21:24:29 +0100 <shapr> Attoparsec is not error friendly, that's for sure.
2020-12-22 21:24:36 +0100 <hololeap> if you're dealing with incremental input, attoparsec is really the only choice
2020-12-22 21:25:12 +0100 <shapr> haven't done that yet, I started using attoparsec before megaparsec was a thing
2020-12-22 21:25:42 +0100Merfont(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-22 21:26:04 +0100Merfont(~Kaiepi@47.54.252.148)
2020-12-22 21:26:18 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-22 21:26:20 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Client Quit)
2020-12-22 21:26:39 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 21:26:46 +0100lep-delete(~lep@94.31.81.93) (Read error: Connection reset by peer)
2020-12-22 21:27:02 +0100lep-delete(~lep@94.31.81.93)
2020-12-22 21:27:08 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-22 21:27:11 +0100lep-deletetest
2020-12-22 21:27:15 +0100 <hololeap> megaparsec is pretty easy to learn. the semantics are very similar to attoparsec, with a few exceptions (attoparsec always backtracks on failure; with megaparsec, you sometimes have to use the `try` combinator)
2020-12-22 21:27:41 +0100testGuest31393
2020-12-22 21:27:49 +0100Guest31393lep-delete
2020-12-22 21:28:42 +0100 <hololeap> i actually don't understand why megaparsec doesn't backtrack on failure like attoparsec does. it seems more natural to me to automatically backtrack
2020-12-22 21:28:57 +0100 <geekosaur> because worst case it's unbounded
2020-12-22 21:29:01 +0100 <merijn> hololeap: Because it's far less efficient
2020-12-22 21:29:28 +0100 <merijn> Also, makes it much harder to sensible error reporting
2020-12-22 21:29:41 +0100 <merijn> You wanna commit as hard as possible as fast as possible for best errors
2020-12-22 21:29:52 +0100Janni(~jan@134.3.46.18)
2020-12-22 21:30:07 +0100 <hololeap> hm, ok
2020-12-22 21:30:10 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-22 21:30:26 +0100 <glguy> attoparsec only backtracks up to <|>, but its <|> is still biased, it won't backtrack on success
2020-12-22 21:30:47 +0100Janni(~jan@134.3.46.18) (Client Quit)
2020-12-22 21:30:55 +0100 <merijn> See also ezyang's post on "try a or b considered harmful": http://blog.ezyang.com/2014/05/parsec-try-a-or-b-considered-harmful/
2020-12-22 21:31:01 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2020-12-22 21:31:14 +0100 <merijn> glguy: Yes, but if the top part of your parser is a bunch of alternatives it means it can backtrack all the way back to the start
2020-12-22 21:31:16 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2020-12-22 21:31:28 +0100 <glguy> attoparsec's <|> means you have to structure your parser differently when you want to commit earlier
2020-12-22 21:31:50 +0100 <glguy> merijn: yeah, but it's wrong/misleading to just say "it always backtracks"
2020-12-22 21:32:12 +0100 <glguy> it just don't have the input consumption commits optimization
2020-12-22 21:32:15 +0100 <merijn> glguy: to be fair, no one said that :p
2020-12-22 21:32:21 +0100 <glguy> people say it all the time, to be fair
2020-12-22 21:32:31 +0100 <merijn> glguy: hololeap said "it always backtracks on failure" :)
2020-12-22 21:32:46 +0100 <glguy> I'm not picking on hololeap
2020-12-22 21:33:26 +0100shaprpicks on lambdabot
2020-12-22 21:34:46 +0100 <glguy> oh well, sounds like I wasn't adding anything; back to work
2020-12-22 21:35:06 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-12-22 21:35:18 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2020-12-22 21:36:12 +0100 <sm[m]> I for one am happy to see regular discussion of the finer points of parsing in Haskell
2020-12-22 21:37:33 +0100glguywonders what portion of parser combinator questions in december here are due to aoc
2020-12-22 21:37:54 +0100iekfkk(~username@117.200.13.21)
2020-12-22 21:37:58 +0100 <sm[m]> a sign it's becoming more mainstream and easier to get productive with
2020-12-22 21:38:13 +0100 <sm[m]> glguy I'm guessing all of them :)
2020-12-22 21:38:14 +0100 <merijn> glguy: ~95%? :p
2020-12-22 21:38:41 +0100 <dminuoso> sm[m]: The parsing discussions only happen in december, though.
2020-12-22 21:39:00 +0100 <dminuoso> In January, we're back to talking about adjunctions and homotopy type theory.
2020-12-22 21:39:02 +0100 <glguy> The rest of the year we're using happy :nod:
2020-12-22 21:39:06 +0100 <dminuoso> heh
2020-12-22 21:39:41 +0100 <glguy> I'm using happy to generate ReadP parsers to parse my inputs so I can use all the things
2020-12-22 21:40:45 +0100bisickcor(~username@117.200.10.75) (Ping timeout: 240 seconds)
2020-12-22 21:45:38 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 264 seconds)
2020-12-22 21:50:29 +0100fxg(~fxg@unaffiliated/fxg)
2020-12-22 21:51:11 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2020-12-22 21:52:30 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 21:54:30 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker)
2020-12-22 21:54:58 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2020-12-22 21:54:58 +0100emmanuel_erc(~user@2603-7000-9600-01c9-0000-0000-0000-0adc.res6.spectrum.com)
2020-12-22 21:55:41 +0100rprije(~rprije@202.168.43.92)
2020-12-22 21:56:30 +0100hackagehspec-expectations-json 1.0.0.2 - Hspec expectations for JSON Values https://hackage.haskell.org/package/hspec-expectations-json-1.0.0.2 (PatrickBrisbin)
2020-12-22 21:57:38 +0100 <shapr> great hspec tations
2020-12-22 21:57:51 +0100coot(~coot@37.30.50.187.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-22 21:57:56 +0100Merfont(~Kaiepi@47.54.252.148) (Read error: No route to host)
2020-12-22 21:58:01 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2020-12-22 21:58:17 +0100Merfont(~Kaiepi@47.54.252.148)
2020-12-22 21:58:22 +0100dandart(~Thunderbi@2a00:23c7:f5a6:d001:21e9:329e:6e0c:5ce) (Ping timeout: 260 seconds)
2020-12-22 21:58:25 +0100fxg(~fxg@unaffiliated/fxg) (Ping timeout: 246 seconds)
2020-12-22 21:58:49 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-22 21:59:11 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-22 22:00:00 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 22:00:10 +0100mounty(~mounty@210.1.196.133) (Ping timeout: 256 seconds)
2020-12-22 22:00:35 +0100dandart(~Thunderbi@2a00:23c7:f5a6:d001:21e9:329e:6e0c:5ce)
2020-12-22 22:02:03 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2020-12-22 22:02:12 +0100 <monochrom> heh
2020-12-22 22:03:01 +0100 <hololeap> merijn: thanks for the blog post, it's very informative
2020-12-22 22:03:14 +0100cyphase(~cyphase@unaffiliated/cyphase)
2020-12-22 22:04:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-22 22:05:59 +0100hackageejdb2-binding 0.3.0.1 - Binding to EJDB2 C library, an embedded JSON noSQL database https://hackage.haskell.org/package/ejdb2-binding-0.3.0.1 (buro)
2020-12-22 22:08:03 +0100avdb(~avdb@gateway/tor-sasl/avdb) (Ping timeout: 240 seconds)
2020-12-22 22:09:29 +0100xcmw(~textual@2603-6011-2200-f103-b803-6e7f-4f6f-d00a.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 22:10:01 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it) (Quit: Leaving)
2020-12-22 22:10:51 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-22 22:14:27 +0100xcmw(~textual@2603-6011-2200-f103-b803-6e7f-4f6f-d00a.res6.spectrum.com)
2020-12-22 22:15:44 +0100Deide(~Deide@217.155.19.23)
2020-12-22 22:15:55 +0100geekosaur(42d52137@66.213.33.55) (Ping timeout: 245 seconds)
2020-12-22 22:16:01 +0100xcmw(~textual@2603-6011-2200-f103-b803-6e7f-4f6f-d00a.res6.spectrum.com) (Client Quit)
2020-12-22 22:18:19 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-22 22:18:44 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Quit: Leaving)
2020-12-22 22:19:03 +0100dominik(~weechat@2001:a61:3412:1a01:9665:9cff:fe4d:b4d0)
2020-12-22 22:22:17 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-22 22:23:22 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-22 22:23:36 +0100lisq(~quassel@lis.moe) (Quit: lisq)
2020-12-22 22:23:46 +0100lisq(~quassel@lis.moe)
2020-12-22 22:24:23 +0100 <kritzefitz> I recently spent days trying to improve performance in a concurrent application. Today I realized that I have a section in my code that sequentially checks various STM variables and loops if none of them have interesting content. I replaced that section with one proper STM action that checks all the variables and retries if nothing interesting happened and suddenly the performance problem is gone. Now I feel kinda stupid.
2020-12-22 22:26:21 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-12-22 22:27:27 +0100 <dminuoso> merijn: eitherP is also a nice primitive in attoparsec. :)
2020-12-22 22:27:31 +0100lisq(~quassel@lis.moe) (Client Quit)
2020-12-22 22:27:41 +0100lisq(~quassel@lis.moe)
2020-12-22 22:28:04 +0100 <dminuoso> But, I guess it's just a take on <|>
2020-12-22 22:28:35 +0100 <dminuoso> Guess what Im really saying is, this should be selective :p
2020-12-22 22:30:51 +0100geekosaur(42d52137@66.213.33.55)
2020-12-22 22:32:44 +0100 <shapr> kritzefitz: is it on github?
2020-12-22 22:33:37 +0100 <shapr> or gitlab, or sr.ht or ..
2020-12-22 22:34:13 +0100 <kritzefitz> shapr, not yet. But I was planning to put it onto Gitlab anyway, so if you like to take a look, I can just upload it now.
2020-12-22 22:34:22 +0100 <shapr> yay!
2020-12-22 22:34:30 +0100shaprhoards more Haskell repos
2020-12-22 22:34:45 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 268 seconds)
2020-12-22 22:36:39 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 22:38:03 +0100sm[m]thinks shapr is actually a dragon
2020-12-22 22:38:18 +0100 <shapr> when it comes to Haskell source, sure
2020-12-22 22:39:57 +0100N3RGY(~N3RGY@2600:1700:65aa:90b0:6446:3ba0:c322:ad4c)
2020-12-22 22:41:07 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-kgydrswmdfhxhpyo)
2020-12-22 22:41:32 +0100 <kritzefitz> shapr: https://gitlab.com/Kritzefitz/reflex-gi-gtk
2020-12-22 22:41:41 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 272 seconds)
2020-12-22 22:42:42 +0100 <kritzefitz> shapr, I'm still getting the API and implementation into shape, so don't expect too much in terms of documentation.
2020-12-22 22:42:42 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 22:42:44 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 22:42:49 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-22 22:43:54 +0100dominik(~weechat@2001:a61:3412:1a01:9665:9cff:fe4d:b4d0) (Quit: WeeChat 2.8)
2020-12-22 22:46:56 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2020-12-22 22:47:19 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 258 seconds)
2020-12-22 22:47:39 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Read error: Connection reset by peer)
2020-12-22 22:48:11 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-22 22:48:33 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716)
2020-12-22 22:50:34 +0100geekosaur(42d52137@66.213.33.55) (Remote host closed the connection)
2020-12-22 22:50:47 +0100 <int-e> shapr: so what happens when somebody comes and take a byte?
2020-12-22 22:51:37 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Ping timeout: 246 seconds)
2020-12-22 22:51:57 +0100jathan(~jathan@69.61.93.38) (Quit: WeeChat 2.3)
2020-12-22 22:53:24 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-22 22:54:11 +0100jathan(~jathan@69.61.93.38)
2020-12-22 22:55:58 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d) (Remote host closed the connection)
2020-12-22 22:56:19 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-22 22:57:08 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it) (Client Quit)
2020-12-22 22:57:14 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8)
2020-12-22 22:59:16 +0100fendor(~fendor@178.165.130.57.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-22 22:59:46 +0100knupfer(~Thunderbi@200116b82c2bd8009cf6cefffeb16eb0.dip.versatel-1u1.de)
2020-12-22 23:00:04 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-22 23:00:27 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 23:00:45 +0100knupfer(~Thunderbi@200116b82c2bd8009cf6cefffeb16eb0.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-22 23:00:52 +0100fendor(~fendor@178.165.130.57.wireless.dyn.drei.com)
2020-12-22 23:00:55 +0100knupfer(~Thunderbi@200116b82c2bd800c8b0c6ced9ba4619.dip.versatel-1u1.de)
2020-12-22 23:01:44 +0100mounty(~mounty@2001:8000:2f59:0:dc99:8f7f:11be:dca1)
2020-12-22 23:02:16 +0100dandart(~Thunderbi@2a00:23c7:f5a6:d001:21e9:329e:6e0c:5ce) (Remote host closed the connection)
2020-12-22 23:02:18 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-22 23:02:37 +0100dandart(~Thunderbi@2a00:23c7:f5a6:d001:21e9:329e:6e0c:5ce)
2020-12-22 23:02:42 +0100knupfer(~Thunderbi@200116b82c2bd800c8b0c6ced9ba4619.dip.versatel-1u1.de) (Client Quit)
2020-12-22 23:02:51 +0100knupfer(~Thunderbi@200116b82c2bd800c8b0c6ced9ba4619.dip.versatel-1u1.de)
2020-12-22 23:03:03 +0100knupfer(~Thunderbi@200116b82c2bd800c8b0c6ced9ba4619.dip.versatel-1u1.de) (Client Quit)
2020-12-22 23:03:12 +0100knupfer(~Thunderbi@200116b82c2bd80058d8cab548bcb510.dip.versatel-1u1.de)
2020-12-22 23:03:42 +0100arybczak(~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) (Quit: Konversation terminated!)
2020-12-22 23:06:45 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-22 23:06:45 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2020-12-22 23:06:45 +0100neiluj(~jco@unaffiliated/neiluj)
2020-12-22 23:09:29 +0100pavonia(~user@unaffiliated/siracusa)
2020-12-22 23:10:21 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-22 23:10:24 +0100kam1(~kam1@24.231.108.143)
2020-12-22 23:10:29 +0100ADG1089__(~aditya@223.235.77.1) (Remote host closed the connection)
2020-12-22 23:11:36 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-22 23:13:47 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-12-22 23:17:00 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-22 23:17:23 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 23:18:01 +0100knupfer(~Thunderbi@200116b82c2bd80058d8cab548bcb510.dip.versatel-1u1.de) (Quit: knupfer)
2020-12-22 23:18:10 +0100knupfer(~Thunderbi@i5E86B42D.versanet.de)
2020-12-22 23:21:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-22 23:23:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-22 23:23:19 +0100son0p(~son0p@181.136.122.143)
2020-12-22 23:23:28 +0100mimi_vx(~mimi@2a01:490:16:1026:81e9:63f1:91e1:9716) (Ping timeout: 268 seconds)
2020-12-22 23:23:46 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-12-22 23:25:45 +0100leungbk(~user@2603-8000-f144-2028-88ca-9c13-d300-2ffb.res6.spectrum.com)
2020-12-22 23:29:18 +0100 <ezzieyguywuf> is it possible to `./setup clean` a single module in the build plan?
2020-12-22 23:29:23 +0100N3RGY(~N3RGY@2600:1700:65aa:90b0:6446:3ba0:c322:ad4c) (Remote host closed the connection)
2020-12-22 23:29:42 +0100 <merijn> build plans are about packages, not modules, so...no?
2020-12-22 23:29:46 +0100texasmyn_(~texasmyns@23.82.14.34) (Ping timeout: 246 seconds)
2020-12-22 23:30:06 +0100kostic_(~kostic@51.194.80.91) (Ping timeout: 256 seconds)
2020-12-22 23:30:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-22 23:30:30 +0100 <ezzieyguywuf> thought that might be the case
2020-12-22 23:30:55 +0100 <ezzieyguywuf> anyone here familiar with elm? trying to figure out if I can compile/install it without an internet connection
2020-12-22 23:31:26 +0100 <ezzieyguywuf> but the Develop.StaticFiles.Build module requires a connection to download ~/.elm from the interwebs or w/e
2020-12-22 23:36:11 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-12-22 23:36:27 +0100hololeapis very curious what would run elm that doesn't have an internet connection
2020-12-22 23:37:21 +0100 <ezzieyguywuf> hololeap: I'm trying to *install* elm, not run it...
2020-12-22 23:37:29 +0100 <ezzieyguywuf> i.e. trying to package it
2020-12-22 23:39:03 +0100N3RGY(~N3RGY@2600:1700:65aa:90b0:6446:3ba0:c322:ad4c)
2020-12-22 23:39:33 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2020-12-22 23:40:15 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-22 23:40:30 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-22 23:40:52 +0100 <hololeap> so you have an air-gapped machine that you copied the elm source to? (not being critical just curious)
2020-12-22 23:41:49 +0100 <ezzieyguywuf> hololeap: the packaging system I'm using implements a "network sandbox" during installation for security purposes
2020-12-22 23:41:50 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-tihixihqvmmwogqg) (Quit: Connection closed for inactivity)
2020-12-22 23:41:50 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-22 23:42:10 +0100 <ezzieyguywuf> it uses the network to download the released tarball and then expects the entire installation to work without need of the network
2020-12-22 23:42:16 +0100 <ezzieyguywuf> I think it's a reasonable restriction
2020-12-22 23:42:31 +0100 <hololeap> ok, so portage with the network sandbox feature turned on, amirite?
2020-12-22 23:42:56 +0100Tario(~Tario@201.192.165.173)
2020-12-22 23:43:37 +0100 <ezzieyguywuf> hololeap: yes you are rite
2020-12-22 23:45:03 +0100dandart(~Thunderbi@2a00:23c7:f5a6:d001:21e9:329e:6e0c:5ce) (Ping timeout: 268 seconds)
2020-12-22 23:45:13 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 264 seconds)
2020-12-22 23:45:58 +0100N3RGY(~N3RGY@2600:1700:65aa:90b0:6446:3ba0:c322:ad4c) (Ping timeout: 258 seconds)
2020-12-22 23:48:30 +0100 <fuzzypixelz> earlier someone suggested I use a parser when I sowed a really complecated function
2020-12-22 23:48:40 +0100 <fuzzypixelz> for example, for aoc day 7
2020-12-22 23:48:53 +0100 <fuzzypixelz> I need to "parse" a string like "light red bags contain 1 bright white bag, 2 muted yellow bags."
2020-12-22 23:49:41 +0100 <hololeap> ezzieyguywuf: the best course of action is probably to submit a bug/PR for that package on the gentoo-haskell repo. i think it's generally considered bad practice for a package to want to break the network sandbox.
2020-12-22 23:49:53 +0100 <fuzzypixelz> here I might need to save the type of bag in the beginning, the bags it can contain and their numbers
2020-12-22 23:50:06 +0100 <fuzzypixelz> how can a library like parsec help here?
2020-12-22 23:51:29 +0100 <glguy> fuzzypixelz: https://github.com/glguy/advent2020/blob/2fd663d49a622cf74661b52d89a0f6ea5c78a8fd/execs/Day07.hs#L…
2020-12-22 23:51:39 +0100 <glguy> That's how I used megaparsec to parse that
2020-12-22 23:51:42 +0100 <ezzieyguywuf> hololeap: I'm working on fixing it in gentoo-haskell
2020-12-22 23:52:21 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-12-22 23:54:01 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:8163:ba97:5d66:959b) (Quit: Leaving)
2020-12-22 23:54:19 +0100 <ezzieyguywuf> hololeap: that's why I'm asking if there's a way to tweak the elm installation to not require the network
2020-12-22 23:55:03 +0100fendor(~fendor@178.165.130.57.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-22 23:56:01 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 246 seconds)
2020-12-22 23:56:21 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e906:26f8:b4d1:f41d)
2020-12-22 23:56:37 +0100knupfer(~Thunderbi@i5E86B42D.versanet.de) (Ping timeout: 264 seconds)
2020-12-22 23:58:06 +0100lordyod2(~lordyod@c-67-169-144-132.hsd1.ca.comcast.net)
2020-12-22 23:58:37 +0100lordyod(~lordyod@c-67-169-144-132.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
2020-12-22 23:58:37 +0100lordyod2lordyod