2020/12/09

2020-12-09 00:00:33 +0100 <iqubic> This is great: https://hackage.haskell.org/package/ACME-0.0.0.1/docs/Acme-Pirates.html
2020-12-09 00:01:25 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 258 seconds)
2020-12-09 00:01:49 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 00:01:52 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-09 00:02:14 +0100 <iqubic> What's the point of this? https://hackage.haskell.org/package/acme-all-monad-0.1.0.0/docs/Control-Monad-All-Trans.html#t:AllT
2020-12-09 00:02:48 +0100[exa](exa@srv3.blesmrt.net)
2020-12-09 00:02:49 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-12-09 00:03:00 +0100 <merijn> Nothing :p
2020-12-09 00:03:16 +0100 <merijn> Next you'll ask what the point of acme-dont is :p
2020-12-09 00:03:35 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-09 00:03:43 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Ping timeout: 258 seconds)
2020-12-09 00:04:03 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-09 00:04:35 +0100 <hpc> it's all for fun
2020-12-09 00:04:56 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2020-12-09 00:05:10 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Client Quit)
2020-12-09 00:06:12 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-09 00:07:54 +0100conal(~conal@64.71.133.70)
2020-12-09 00:09:02 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-09 00:09:03 +0100 <iqubic> This is just too funny
2020-12-09 00:09:34 +0100L29Ah(~L29Ah@unaffiliated/l29ah)
2020-12-09 00:09:59 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 00:11:34 +0100 <texasmynsted> LOL https://hackage.haskell.org/package/acme-stringly-typed-1.0.0.0/docs/Acme-StringlyTyped.html
2020-12-09 00:11:48 +0100 <merijn> acme-php
2020-12-09 00:13:04 +0100jedws(~jedws@121.209.181.215)
2020-12-09 00:13:58 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 00:14:25 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
2020-12-09 00:14:30 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Remote host closed the connection)
2020-12-09 00:15:46 +0100 <texasmynsted> https://hackage.haskell.org/package/acme-timemachine
2020-12-09 00:15:57 +0100 <texasmynsted> oooh the acme tag is really fun
2020-12-09 00:16:37 +0100 <dsal> tardis is the real time machine
2020-12-09 00:16:40 +0100 <merijn> texasmynsted: You should check out the (non-joke) Tardis monad :p
2020-12-09 00:17:26 +0100 <ezzieyguywuf> lol, megaparsec makes my eyes spin 😵
2020-12-09 00:17:49 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
2020-12-09 00:18:16 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-12-09 00:18:42 +0100 <texasmynsted> Hahh
2020-12-09 00:19:20 +0100 <hpc> acme-microwave is a good one too - when i show it to people they are surprised that microwaves even work that way
2020-12-09 00:19:41 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 00:20:57 +0100 <texasmynsted> Wow that tag makes me so happy.
2020-12-09 00:21:02 +0100 <dsal> ezzieyguywuf: megaparsec is great.
2020-12-09 00:21:05 +0100 <texasmynsted> ಠ_ಠ
2020-12-09 00:21:10 +0100 <merijn> dsal: The docs are not >.>
2020-12-09 00:21:24 +0100 <dsal> Hmm... Yeah, getting the initial mental model can be a challenge.
2020-12-09 00:21:32 +0100 <dsal> I guess the other problem is figuring out where all the parts are.
2020-12-09 00:21:33 +0100 <merijn> dsal: No, not that
2020-12-09 00:21:37 +0100 <merijn> Just finding anything
2020-12-09 00:22:08 +0100 <koz_> What does the Applicative instance of Writer do with the ... writ? ... on <*>?
2020-12-09 00:22:10 +0100 <merijn> Like, I've used 5 different parser combinator packages before, megaparsec docs are *severely* lacking in logical structure for finding anything
2020-12-09 00:22:46 +0100 <dsal> I was lost going from attoparsec to megaparsec for sure. It does more of the things I want once I find them. :)
2020-12-09 00:24:08 +0100 <koz_> Ah, <>.
2020-12-09 00:24:10 +0100 <koz_> As I thought.
2020-12-09 00:24:46 +0100 <iqubic> With the use of ACME-Don't we get this: "safePerformIO = Just . don't"
2020-12-09 00:25:58 +0100ubert(~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-09 00:26:52 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-12-09 00:27:25 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2020-12-09 00:27:43 +0100 <ezzieyguywuf> dsal: it is great
2020-12-09 00:28:07 +0100 <ezzieyguywuf> the documentation gets the job done
2020-12-09 00:28:15 +0100 <ezzieyguywuf> just every time I need to do somethin new I'm like blehhhhhhh
2020-12-09 00:28:23 +0100 <merijn> :p
2020-12-09 00:29:09 +0100 <ezzieyguywuf> but then after a while I'm like "Dang, is there really any other way to do this?"
2020-12-09 00:30:33 +0100st8less(~st8less@2603:a060:11fd:0:cc1a:708c:1c26:7d45) (Ping timeout: 258 seconds)
2020-12-09 00:32:34 +0100st8less(~st8less@inet-167-224-197-181.isp.ozarksgo.net)
2020-12-09 00:34:56 +0100pavonia(~user@unaffiliated/siracusa)
2020-12-09 00:35:35 +0100pjb(~t@2a01cb04063ec50074a8618b6b489f5b.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer)
2020-12-09 00:37:13 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 00:39:40 +0100 <texasmynsted> If you start thinking regular expressions you need to step away from the keyboard
2020-12-09 00:41:07 +0100 <shapr> I think in monads sometimes
2020-12-09 00:41:59 +0100 <Majiir> Hey, folks. I've solved a performance problem I was having, but I'm wondering if there's a more general solution for what I've done. Code is here: http://pastie.org/p/68B6xmKFGSrL2sBFeVtzva
2020-12-09 00:42:39 +0100 <Majiir> I want to change some fields (there are more on that record) if the condition 'null (moves g)' is true. The problem I was having is that 'moves g' is very expensive.
2020-12-09 00:42:49 +0100notzmv`(~user@177.25.202.151)
2020-12-09 00:43:12 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:e1ea:8f38:f518:4e69) (Ping timeout: 246 seconds)
2020-12-09 00:43:12 +0100 <Majiir> I changed to pass2 so that the other fields on the record (not shown) could be evaluated without forcing 'null (moves g)'
2020-12-09 00:43:33 +0100 <Majiir> But all the 'if mustPass then .. else ..' feels repetitious.
2020-12-09 00:43:39 +0100Raito_Bezarius(~Raito@unaffiliated/raito-bezarius/x-8764578) (Ping timeout: 272 seconds)
2020-12-09 00:44:15 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:5178:619c:fc92:5a85)
2020-12-09 00:44:18 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 00:45:16 +0100notzmv`notzmv
2020-12-09 00:45:32 +0100notzmv(~user@177.25.202.151) (Changing host)
2020-12-09 00:45:32 +0100notzmv(~user@unaffiliated/zmv)
2020-12-09 00:45:55 +0100Raito_Bezarius(~Raito@unaffiliated/raito-bezarius/x-8764578)
2020-12-09 00:46:59 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 00:47:29 +0100 <dminuoso> Majiir: Yeah that does not look idiomatic. Can you perhaps share the entire module?
2020-12-09 00:48:59 +0100 <dminuoso> Im in particular curious what function `moves` is (is that a field of GameState), and where/how is it reduced.
2020-12-09 00:49:26 +0100 <Majiir> Um.. well, it's my god-module that I'm in the process of reorganizing, so maybe some specific tidbits would be more helpful than the whole thing :D
2020-12-09 00:49:36 +0100 <dminuoso> Feel free to share it anyway.
2020-12-09 00:49:40 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-09 00:49:43 +0100 <dminuoso> Ill try and keep my focus on this region if you like.
2020-12-09 00:50:01 +0100 <dminuoso> My instinct says the solution to your if-then-else requires some larger rethinking
2020-12-09 00:51:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-09 00:52:18 +0100 <Majiir> Here's some more: http://pastie.org/p/3Nm0Gwj69o6BUpAmVSlhFr
2020-12-09 00:52:59 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-12-09 00:53:03 +0100 <Majiir> 'board' and 'nextTurn' are the real state - the rest are my sorry attempt to memoize evaluation of other functions
2020-12-09 00:53:27 +0100 <Majiir> moves and moveableTiles' are relatively expensive to evaluate
2020-12-09 00:54:20 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 00:54:37 +0100 <dminuoso> Question, you seem to throw away the result of `moves`
2020-12-09 00:54:52 +0100 <dminuoso> Do you just want to know whether there's any element in the resulting list, and nothing more?
2020-12-09 00:56:43 +0100 <Majiir> In the specific case of 'pass', yes, but the full result of 'moves' would be useful elsewhere
2020-12-09 00:57:35 +0100 <Majiir> The intuition here is: If the next player (GameState::nextTurn) has no moves, it forces a pass, so flip back to the first player.
2020-12-09 00:57:51 +0100 <dminuoso> There's some minor improvements to be made, but nothing that would really be revolutionary.
2020-12-09 00:57:56 +0100 <dminuoso> Without seeing more, it's hard to say
2020-12-09 00:58:38 +0100 <dminuoso> But roughly, I'd try to aim for this:
2020-12-09 00:59:16 +0100 <dminuoso> case moves x of [] -> forcePass; xs -> resume
2020-12-09 00:59:57 +0100 <dminuoso> rather than testing for null and then throwing that result away, I'd try and immediately use this knowledge and resume
2020-12-09 01:00:21 +0100 <Majiir> Makes sense. I think I can get it there with some other refactors I have in mind.
2020-12-09 01:00:23 +0100 <dminuoso> if-then-else in general is a smell
2020-12-09 01:00:37 +0100 <Majiir> Fully aware I'm XY-problem'ing this :)
2020-12-09 01:00:55 +0100 <dminuoso> Like I said, Im willing to keep my focus to this region if you shared the rest of the code.
2020-12-09 01:01:05 +0100 <dminuoso> I dont mind people exploring XY problems. ;)
2020-12-09 01:01:14 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 01:01:34 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 01:01:46 +0100 <Majiir> I was curious if there's some handy-dandy tool (lens?!??) that would help me conditionally project a single record field without forcing the condition to evaluate when looking at any *other* field.
2020-12-09 01:02:10 +0100 <dminuoso> what do you mean by "project"?
2020-12-09 01:02:29 +0100 <Majiir> Erm... modify?
2020-12-09 01:03:00 +0100 <dminuoso> lens addresses a different set of problems
2020-12-09 01:03:16 +0100 <dminuoso> You could, perhaps, use the State monad to make it look a bit more imperative
2020-12-09 01:03:32 +0100 <dminuoso> Then the code would something along the lines of
2020-12-09 01:03:48 +0100 <dminuoso> (perhaps, together with lens)
2020-12-09 01:04:05 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 240 seconds)
2020-12-09 01:04:10 +0100 <Majiir> The general pattern I am seeing is something like: if condition then x { foo = "bar", bar = "baz" } else x
2020-12-09 01:04:35 +0100 <dminuoso> Well with State it would just be `when f (modify g)`
2020-12-09 01:04:48 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 01:05:28 +0100 <Majiir> Yep, but if I access any other field on the record, I'm forcing evaluation of that condition. I was hoping to only evaluate the condition if I'm evaluating the fields that are (potentially) modified.
2020-12-09 01:05:33 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 01:06:08 +0100 <dminuoso> I dont understand.
2020-12-09 01:06:18 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 01:06:19 +0100 <Majiir> Yeah, I dug myself into a dumb hole I guess
2020-12-09 01:06:57 +0100 <Majiir> Maybe I misunderstand what happened here, but my understanding led me to a 30x speedup, so I feel like I'm not too far off base.
2020-12-09 01:08:01 +0100 <Majiir> When I used the form (if condition then x { foo = "bar" } else x), where that record has several fields, my program ran slowly because there were cases where I would evaluate one of those other fields (but never 'foo') and it would force evaluation of the condition (expensive)
2020-12-09 01:08:39 +0100 <Majiir> That happened because to evaluate any part of the record, we had to evaluate the if block first.
2020-12-09 01:09:06 +0100 <Majiir> By switching to the form `x { foo = if condition then "bar" else foo x }`, that condition is only evaluated if I evaluate 'foo'. ...right?
2020-12-09 01:09:37 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-09 01:09:51 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 01:09:53 +0100 <dminuoso> That depends on how GHC floats it.
2020-12-09 01:10:02 +0100 <dminuoso> It's free to turn one into the other
2020-12-09 01:10:06 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 01:11:24 +0100 <dminuoso> But I'd say yeah
2020-12-09 01:11:26 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) (Ping timeout: 264 seconds)
2020-12-09 01:11:39 +0100jdjdi(~androirc@p200300c847237a6b753ccc6256fa9525.dip0.t-ipconnect.de)
2020-12-09 01:12:31 +0100jdjdi(~androirc@p200300c847237a6b753ccc6256fa9525.dip0.t-ipconnect.de) ("Quit")
2020-12-09 01:13:01 +0100thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2020-12-09 01:14:49 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2020-12-09 01:21:00 +0100MOSCOS(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-09 01:21:24 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-09 01:21:49 +0100pjb(~t@2a01cb04063ec500548477681310a8e6.ipv6.abo.wanadoo.fr)
2020-12-09 01:22:00 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 01:23:30 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 01:23:33 +0100ubert(~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-09 01:23:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 01:24:12 +0100ubert(~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-09 01:24:19 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9)
2020-12-09 01:24:45 +0100jmchael(~jmchael@87.112.60.168) (Ping timeout: 260 seconds)
2020-12-09 01:26:48 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 01:28:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2020-12-09 01:33:29 +0100u0_a298(~user@65.35.205.131)
2020-12-09 01:33:50 +0100 <texasmynsted> Majiir: It is difficult for me to see what is happening from the types. If it were me I would pull the code apart into individual functions, with their sigs.
2020-12-09 01:34:30 +0100jmchael(~jmchael@87.112.60.168)
2020-12-09 01:34:47 +0100cheater(~user@unaffiliated/cheater) (Read error: Connection reset by peer)
2020-12-09 01:35:27 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2020-12-09 01:35:58 +0100cheater(~user@unaffiliated/cheater)
2020-12-09 01:37:01 +0100 <texasmynsted> Right now you have two functions each GameState -> GameState. I do no know what a GameState is. Why are the function names doing work? pass1 vs. pass2 with the same signature.
2020-12-09 01:38:58 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-wlqbdmxowqgsahkp) (Quit: Connection closed for inactivity)
2020-12-09 01:42:04 +0100howdoi(uid224@gateway/web/irccloud.com/x-kqlbqomhdamrwvuv) (Quit: Connection closed for inactivity)
2020-12-09 01:42:04 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 01:42:05 +0100 <texasmynsted> It might be useful to separate the "what" from the "how". Once you can _see_ your solution from just the function type signatures you can golf the code down then try out different implementations.
2020-12-09 01:43:10 +0100u0_a298(~user@65.35.205.131)
2020-12-09 01:43:41 +0100 <texasmynsted> You might have done that already and I just can not see from the code you posted. Here is an example of what I mean. https://jproyo.github.io/posts/2019-03-17-tagless-final-haskell.html
2020-12-09 01:44:17 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 01:44:44 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
2020-12-09 01:45:13 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-12-09 01:46:44 +0100conal(~conal@64.71.133.70)
2020-12-09 01:49:08 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 01:49:30 +0100u0_a298(~user@65.35.205.131)
2020-12-09 01:50:31 +0100 <ski> koz_ : i think so (re `MonadLogic')
2020-12-09 01:51:27 +0100 <koz_> ski: Seems like I was right, then. Good to know, though it's not terribly clearly explained IMHO.
2020-12-09 01:52:33 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Ping timeout: 256 seconds)
2020-12-09 01:52:51 +0100pharaun(~pharaun@static.88-198-62-245.clients.your-server.de) (Ping timeout: 265 seconds)
2020-12-09 01:52:51 +0100nemesit|znc(~nemesit@myriadvisuals.com) (Ping timeout: 265 seconds)
2020-12-09 01:53:00 +0100djanatyn(~djanatyn@ec2-18-209-155-56.compute-1.amazonaws.com) (Quit: ZNC 1.8.x-git-84-2f4b158 - https://znc.in)
2020-12-09 01:53:03 +0100pharaun(~pharaun@static.88-198-62-245.clients.your-server.de)
2020-12-09 01:53:24 +0100djanatyn(~djanatyn@ec2-18-209-155-56.compute-1.amazonaws.com)
2020-12-09 01:53:43 +0100vnz_(~vnz@2001:bc8:604:94f::1)
2020-12-09 01:54:18 +0100dxld(~dxld@80-109-136-248.cable.dynamic.surfer.at) (Ping timeout: 265 seconds)
2020-12-09 01:54:18 +0100vnz(~vnz@unaffiliated/vnz) (Ping timeout: 265 seconds)
2020-12-09 01:54:18 +0100vnz_vnz
2020-12-09 01:54:19 +0100vnz(~vnz@2001:bc8:604:94f::1) (Changing host)
2020-12-09 01:54:19 +0100vnz(~vnz@unaffiliated/vnz)
2020-12-09 01:54:37 +0100theDon(~td@94.134.91.58) (Ping timeout: 260 seconds)
2020-12-09 01:54:56 +0100nemesit|znc(~nemesit@2a01:488:66:1000:2ea3:4eeb:0:1)
2020-12-09 01:55:05 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-09 01:55:26 +0100theDon(~td@94.134.91.58)
2020-12-09 01:55:29 +0100dxld(~dxld@rush.pub.dxld.at)
2020-12-09 01:55:43 +0100christo(~chris@81.96.113.213)
2020-12-09 01:57:40 +0100 <monochrom> https://youtu.be/z43bmaMwagI explains why "if cond then x{...} else x" is more conducive to your sanity.
2020-12-09 01:57:57 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 02:00:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 02:00:20 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 02:00:31 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2020-12-09 02:00:49 +0100u0_a298(~user@65.35.205.131)
2020-12-09 02:01:56 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 246 seconds)
2020-12-09 02:02:00 +0100 <ezzieyguywuf> so if I have a `Parser (Text, Text)` and I want to signal an error (this is megaparsec), how do I do that?
2020-12-09 02:02:45 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2020-12-09 02:03:56 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds)
2020-12-09 02:04:07 +0100notzmv(~user@unaffiliated/zmv)
2020-12-09 02:04:56 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2020-12-09 02:05:52 +0100 <dsal> ezzieyguywuf: What kind of error? You could probably just use fail
2020-12-09 02:06:22 +0100 <ezzieyguywuf> dsal: I tried fail, but it said "No instance for (MonadFail ((,) Text)) arising from use of fail"
2020-12-09 02:06:36 +0100 <ezzieyguywuf> "what kind of error", just "couldn't parse that sorry"
2020-12-09 02:06:43 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-09 02:06:58 +0100 <dsal> There's a bit of xy here. Why do you have something you can't parse?
2020-12-09 02:07:29 +0100columbarius(~columbari@94.134.93.105) (Ping timeout: 260 seconds)
2020-12-09 02:07:47 +0100carlomagno(~cararell@148.87.23.8)
2020-12-09 02:07:52 +0100 <dsal> There's `parseError :: ParseError s e -> m a` -- but you may not need that.
2020-12-09 02:07:58 +0100 <ezzieyguywuf> hm...part of my configurable parser is "match something at the end of the string". In order to do that, I use takeRest and then use Data.Text functions to check the back-end of the string
2020-12-09 02:08:12 +0100 <ezzieyguywuf> if it doesn't match, I want the parse to fail. If it does match, I want to return a (Text, Text)
2020-12-09 02:08:22 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-09 02:08:25 +0100solonarv(~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2020-12-09 02:08:52 +0100 <dsal> Yeah, so having the parser do the actual work of that match would be ideal. Then it'll do the work for you and give you a good error for free.
2020-12-09 02:09:15 +0100 <ezzieyguywuf> dsal: sure, but my understanding is megaparsec isn't too good at matching things at the end of the string
2020-12-09 02:09:42 +0100columbarius(~columbari@94.134.93.27)
2020-12-09 02:10:07 +0100 <ezzieyguywuf> I could, I guess, do a "lookahead" or something to see how many characters are left, THEN consume `remainingChars - Text.length targetStringAtEnd', THEN use a regular parser to check
2020-12-09 02:10:17 +0100 <ezzieyguywuf> but then I also have a version where they can provide a list of potential matches
2020-12-09 02:10:21 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-12-09 02:10:23 +0100 <dsal> You could just use something like manyTill
2020-12-09 02:10:27 +0100 <ezzieyguywuf> which I guess I could fmap over the first
2020-12-09 02:11:04 +0100 <dsal> manyTill_ p end applies parser p zero or more times until parser end succeeds. Returns the list of values returned by p and the end result. Use manyTill if you have no need in the result of the end.
2020-12-09 02:11:26 +0100 <ezzieyguywuf> 😍
2020-12-09 02:11:45 +0100 <ezzieyguywuf> dsal: I owe you a beer, let me know where I can send funds
2020-12-09 02:12:04 +0100 <dsal> haha. Everything I know I know from here, so you'll have to send it to the channel.
2020-12-09 02:12:29 +0100 <dsal> There's a bunch of neat stuff ini https://hackage.haskell.org/package/parser-combinators-1.2.1/docs/Control-Monad-Combinators.html
2020-12-09 02:12:35 +0100 <MarcelineVQ> I accept bitcoin (I don't accept bitcoin)
2020-12-09 02:12:40 +0100Tristan(~tristan@luna.whatbox.ca)
2020-12-09 02:13:00 +0100alx741(~alx741@181.196.69.205) (Ping timeout: 256 seconds)
2020-12-09 02:13:03 +0100TristanGuest80676
2020-12-09 02:13:30 +0100 <dsal> I'll take MarcelineVQ's bitcoin.
2020-12-09 02:13:42 +0100 <dsal> heh, I was asking if choice is asum the other day:
2020-12-09 02:13:47 +0100 <dsal> choice :: (Foldable f, Alternative m) => f (m a) -> m a
2020-12-09 02:13:47 +0100 <dsal> choice = asum
2020-12-09 02:14:06 +0100 <dsal> The documentation actually says `choice = asum`
2020-12-09 02:14:21 +0100Tristan-(~tristan@luna.whatbox.ca) (Read error: Connection reset by peer)
2020-12-09 02:14:27 +0100 <ezzieyguywuf> dsal: lol, yea someone said "yes" two seconds later, you may have missed it. I saw it in the docs about 5 seconds after that, I chuckled
2020-12-09 02:15:25 +0100 <dsal> Yeah, I saw that. I just happened to notice it specifically says that in the docs.
2020-12-09 02:15:30 +0100 <dsal> :t choice
2020-12-09 02:15:32 +0100 <lambdabot> error:
2020-12-09 02:15:32 +0100 <lambdabot> • Variable not in scope: choice
2020-12-09 02:15:32 +0100 <lambdabot> • Perhaps you meant ‘choose’ (imported from Lambdabot.Plugin.Haskell.Eval.Trusted)
2020-12-09 02:15:40 +0100 <dsal> hmm... choice looks a lot like replicateM to me.
2020-12-09 02:15:42 +0100 <dsal> :t replicateM
2020-12-09 02:15:44 +0100 <lambdabot> Applicative m => Int -> m a -> m [a]
2020-12-09 02:15:45 +0100cods(~fred@tuxee.net) (Ping timeout: 240 seconds)
2020-12-09 02:15:57 +0100 <dsal> Er, I mean count
2020-12-09 02:15:57 +0100 <dsal> count :: Monad m => Int -> m a -> m [a]
2020-12-09 02:15:59 +0100cods(~fred@tuxee.net)
2020-12-09 02:16:12 +0100Raito_Bezarius(~Raito@unaffiliated/raito-bezarius/x-8764578) (Ping timeout: 260 seconds)
2020-12-09 02:16:22 +0100 <dsal> I like hoiw replicateM is applicative and count is Monad.
2020-12-09 02:16:33 +0100 <dsal> I also like how my keyboard randomly puts the letter i in things where I didn't type it.
2020-12-09 02:17:12 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
2020-12-09 02:17:13 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-12-09 02:17:43 +0100 <MarcelineVQ> Moinad
2020-12-09 02:20:13 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 246 seconds)
2020-12-09 02:20:25 +0100 <dsal> Monaids
2020-12-09 02:20:30 +0100falafel(~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
2020-12-09 02:21:13 +0100jmchael(~jmchael@87.112.60.168) (Ping timeout: 260 seconds)
2020-12-09 02:22:21 +0100 <MarcelineVQ> Monadis
2020-12-09 02:26:38 +0100ski. o O ( IMonad )
2020-12-09 02:27:21 +0100alx741(~alx741@181.196.69.91)
2020-12-09 02:27:49 +0100 <koz_> ski: iMonad is what'll get added to Swift in around the year 3000.
2020-12-09 02:28:39 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-12-09 02:31:10 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-12-09 02:32:58 +0100 <Axman6> if I have a class Foo a b c | a -> b, a -> c, and another class Foo a b c => Bar a b | a -> b, how can I ghc to stop complaining about the type variable c not being in scope?
2020-12-09 02:34:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2020-12-09 02:35:12 +0100 <MarcelineVQ> class (forall c. Foo a b c) => Bar a b | a -> b do anything?
2020-12-09 02:36:44 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-09 02:38:46 +0100Gladenko(~Gladenko@4e69b241.skybroadband.com) (Ping timeout: 265 seconds)
2020-12-09 02:39:45 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 02:40:31 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-09 02:41:04 +0100Tario(~Tario@201.192.165.173)
2020-12-09 02:41:11 +0100 <ski> i don't think that would express the intended semantics
2020-12-09 02:41:14 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-12-09 02:41:46 +0100 <Axman6> yeah that leads to other issues (sorry, details to come soon)
2020-12-09 02:41:49 +0100 <ski> `class Foo a where type B a; type C a' and `class Foo a => Bar a' seems to work ..
2020-12-09 02:42:53 +0100remy^(~remy@2a02:a210:2140:f480:6e62:6dff:fe0a:58e9)
2020-12-09 02:43:15 +0100remy^(~remy@2a02:a210:2140:f480:6e62:6dff:fe0a:58e9) (Changing host)
2020-12-09 02:43:15 +0100remy^(~remy@unaffiliated/remy/x-3943829)
2020-12-09 02:43:24 +0100remy^Remy
2020-12-09 02:43:41 +0100Raito_Bezarius(~Raito@unaffiliated/raito-bezarius/x-8764578)
2020-12-09 02:44:40 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
2020-12-09 02:45:25 +0100 <Axman6> safly we can;t use type families, this is really DAML, not Haskell
2020-12-09 02:45:29 +0100Lord_of_Life_(~Lord@46.217.220.39)
2020-12-09 02:45:37 +0100 <Axman6> type families would be the solution
2020-12-09 02:45:42 +0100 <ezzieyguywuf> does hledger have a feature where it will "prettify" the input, i.e. specifically I want to right-adjust all my amounts such that `Assets 10 USD` turns into `Assets <enough spaces to make the D on column 80> 10 USD`
2020-12-09 02:46:13 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-12-09 02:46:25 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
2020-12-09 02:47:04 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:9882:3ab:473b:209) (Ping timeout: 240 seconds)
2020-12-09 02:47:09 +0100ransom__(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2020-12-09 02:47:49 +0100 <sm[m]> ezzieyguywuf: you know you're in #haskell ? Just checking :)
2020-12-09 02:48:14 +0100 <ezzieyguywuf> sm[m]: lol I didn't sory!
2020-12-09 02:48:18 +0100 <ezzieyguywuf> dang I always do that...
2020-12-09 02:49:21 +0100 <MarcelineVQ> I doubt anyone minds
2020-12-09 02:49:26 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035) (Ping timeout: 256 seconds)
2020-12-09 02:49:59 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 02:50:14 +0100 <sm[m]> me neither, but wouldn't want to spam y'all with too much #hledger chat
2020-12-09 02:51:29 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 02:52:13 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 02:53:16 +0100falafel(~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2020-12-09 02:55:00 +0100guest129(~user@49.5.6.87)
2020-12-09 02:56:25 +0100guest129`(~user@49.5.6.87)
2020-12-09 02:57:07 +0100notzmv`(~user@201-43-52-72.dsl.telesp.net.br)
2020-12-09 02:58:16 +0100notzmv(~user@unaffiliated/zmv) (Ping timeout: 256 seconds)
2020-12-09 02:59:03 +0100notzmv`(~user@201-43-52-72.dsl.telesp.net.br) (Remote host closed the connection)
2020-12-09 03:00:12 +0100guest129(~user@49.5.6.87) (Ping timeout: 256 seconds)
2020-12-09 03:02:27 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 03:03:16 +0100u0_a298(~user@65.35.205.131)
2020-12-09 03:04:30 +0100Remy(~remy@unaffiliated/remy/x-3943829) (Remote host closed the connection)
2020-12-09 03:05:31 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2020-12-09 03:06:08 +0100Entertainment(~entertain@104.246.132.210) ()
2020-12-09 03:06:12 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Ping timeout: 256 seconds)
2020-12-09 03:08:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 03:08:36 +0100kupi(uid212005@gateway/web/irccloud.com/x-sihatzqhydqaqspq)
2020-12-09 03:08:49 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 03:09:01 +0100remy^(~remy@2a02:a210:2140:f480:6e62:6dff:fe0a:58e9)
2020-12-09 03:09:07 +0100remy^(~remy@2a02:a210:2140:f480:6e62:6dff:fe0a:58e9) (Changing host)
2020-12-09 03:09:07 +0100remy^(~remy@unaffiliated/remy/x-3943829)
2020-12-09 03:10:23 +0100shinobi_(~shinobi@c-24-147-48-162.hsd1.ma.comcast.net) (Read error: Connection reset by peer)
2020-12-09 03:10:50 +0100shinobi_(~shinobi@c-24-147-48-162.hsd1.ma.comcast.net)
2020-12-09 03:13:14 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-09 03:13:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2020-12-09 03:14:46 +0100jianbo(~jianbo@2601:246:4000:b22:2155:768d:869a:2ce3) (Remote host closed the connection)
2020-12-09 03:16:44 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-09 03:17:27 +0100carlomagno(~cararell@148.87.23.8) (Remote host closed the connection)
2020-12-09 03:19:12 +0100xff0x(~fox@2001:1a81:5297:ce00:950a:3e50:5ed2:fa3d) (Ping timeout: 260 seconds)
2020-12-09 03:21:02 +0100xff0x(~fox@2001:1a81:52d1:1000:e22b:1ad:d895:be4e)
2020-12-09 03:21:19 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.209)
2020-12-09 03:22:18 +0100vicfred(~vicfred@unaffiliated/vicfred) (Ping timeout: 256 seconds)
2020-12-09 03:22:57 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-09 03:25:05 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2020-12-09 03:26:25 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-09 03:28:09 +0100jespada(~jespada@90.254.245.49)
2020-12-09 03:28:47 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 03:29:20 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 03:29:35 +0100ericsagn1(~ericsagne@2405:6580:0:5100:842e:bf6c:baf1:11c6) (Ping timeout: 272 seconds)
2020-12-09 03:30:14 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 256 seconds)
2020-12-09 03:30:58 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 03:31:08 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 03:31:30 +0100christo(~chris@81.96.113.213)
2020-12-09 03:31:57 +0100conal(~conal@64.71.133.70)
2020-12-09 03:32:29 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-09 03:32:57 +0100conal(~conal@64.71.133.70)
2020-12-09 03:32:58 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-09 03:33:18 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-09 03:34:42 +0100conal(~conal@64.71.133.70)
2020-12-09 03:34:51 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-09 03:36:11 +0100conal(~conal@64.71.133.70)
2020-12-09 03:36:26 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-09 03:40:21 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 03:41:15 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 03:41:23 +0100ericsagn1(~ericsagne@2405:6580:0:5100:2bf5:8913:5fd7:7df1)
2020-12-09 03:43:26 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 03:44:05 +0100conal(~conal@64.71.133.70)
2020-12-09 03:44:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-09 03:45:17 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 03:46:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 03:46:49 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 258 seconds)
2020-12-09 03:49:13 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 03:49:50 +0100u0_a298(~user@65.35.205.131)
2020-12-09 03:51:53 +0100u0_a298(~user@65.35.205.131) (Remote host closed the connection)
2020-12-09 03:52:10 +0100u0_a298(~user@65.35.205.131)
2020-12-09 03:54:17 +0100vicfred_(~vicfred@unaffiliated/vicfred)
2020-12-09 03:55:07 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-09 03:56:25 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 03:56:57 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Remote host closed the connection)
2020-12-09 03:57:09 +0100vicfred(~vicfred@unaffiliated/vicfred) (Ping timeout: 260 seconds)
2020-12-09 03:59:25 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 03:59:37 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 264 seconds)
2020-12-09 03:59:52 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:01:03 +0100Akisy(~Akisy@4e69b241.skybroadband.com)
2020-12-09 04:03:06 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:03:35 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:04:40 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-12-09 04:06:45 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:07:02 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-12-09 04:07:08 +0100wei2912(~wei2912@unaffiliated/wei2912) (Client Quit)
2020-12-09 04:07:16 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:08:42 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-09 04:11:23 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:11:49 +0100cads2(~cads@ip-64-72-99-232.lasvegas.net) (Read error: Connection reset by peer)
2020-12-09 04:11:55 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:12:27 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-12-09 04:14:48 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:15:13 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:16:21 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-12-09 04:17:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 04:18:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2020-12-09 04:18:22 +0100cheater1(~user@unaffiliated/cheater)
2020-12-09 04:19:55 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 04:20:45 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 240 seconds)
2020-12-09 04:20:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-09 04:21:10 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 260 seconds)
2020-12-09 04:21:10 +0100Ranhir(~Ranhir@157.97.53.139) (Ping timeout: 260 seconds)
2020-12-09 04:21:10 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) (Ping timeout: 260 seconds)
2020-12-09 04:21:17 +0100cheater1cheater
2020-12-09 04:22:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 272 seconds)
2020-12-09 04:23:19 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6)
2020-12-09 04:24:33 +0100vicfred_(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-09 04:24:53 +0100Ranhir(~Ranhir@157.97.53.139)
2020-12-09 04:25:38 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net)
2020-12-09 04:28:04 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 04:29:01 +0100theDon(~td@94.134.91.58) (Ping timeout: 246 seconds)
2020-12-09 04:29:05 +0100Saukk(~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e)
2020-12-09 04:30:06 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2020-12-09 04:30:06 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (leguin.freenode.net (Nickname regained by services)))
2020-12-09 04:30:06 +0100xirhtogallagothrix
2020-12-09 04:31:11 +0100theDon(~td@muedsl-82-207-238-168.citykom.de)
2020-12-09 04:31:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-09 04:31:32 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Client Quit)
2020-12-09 04:31:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-09 04:33:08 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
2020-12-09 04:33:11 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
2020-12-09 04:35:36 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2020-12-09 04:35:36 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:35:50 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:38:05 +0100 <boxscape> Is there a name for a Functor that's both co- and contravariant (So the opposite of Invariant)?
2020-12-09 04:38:05 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:38:11 +0100christo(~chris@81.96.113.213) (Ping timeout: 258 seconds)
2020-12-09 04:38:24 +0100 <boxscape> Though I suppose it's not super useful since the only instances I can think of are (Const a) and Proxy
2020-12-09 04:38:36 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:40:45 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:41:15 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:41:50 +0100 <boxscape> I've provisionally called it Omnivariant
2020-12-09 04:43:52 +0100conal(~conal@64.71.133.70)
2020-12-09 04:43:53 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:44:05 +0100 <boxscape> I suppose
2020-12-09 04:44:10 +0100 <jle`> boxscape: i think it's a 'fact' that variations of Const are the only such things
2020-12-09 04:44:15 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:44:21 +0100 <jle`> that's actualyl how the lens library constraints things to work for only Const a, or Proxy
2020-12-09 04:44:22 +0100 <boxscape> I think Coerce is exactly this class?
2020-12-09 04:44:35 +0100 <jle`> require both (Functor f, Contravariant f) => ...
2020-12-09 04:44:36 +0100 <boxscape> I see
2020-12-09 04:44:45 +0100 <jle`> essentially the same as requiring f to be some form of Const
2020-12-09 04:44:48 +0100christo(~chris@81.96.113.213)
2020-12-09 04:46:00 +0100andi-(~andi-@NixOS/user/andi-) (Remote host closed the connection)
2020-12-09 04:48:09 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 04:49:12 +0100u0_a298(~user@65.35.205.131)
2020-12-09 04:49:24 +0100andi-(~andi-@NixOS/user/andi-)
2020-12-09 04:49:39 +0100 <boxscape> (Okay it's not Coerce, that class is called Coercible and has a different kind, but I think omnimap can always be implemented with coerce)
2020-12-09 04:50:37 +0100 <jle`> * -> * coerce maybe?
2020-12-09 04:51:08 +0100 <koz_> Both co and contravariance in the same parameter implies it is phantom-roled.
2020-12-09 04:51:16 +0100 <koz_> (or at least I'm pretty sure it does)
2020-12-09 04:51:29 +0100 <boxscape> that sounds reasonable
2020-12-09 04:51:30 +0100 <jle`> ooh yeah, phantom
2020-12-09 04:52:07 +0100 <koz_> I'm pretty confident parametricity would require this.
2020-12-09 04:53:36 +0100urek(~urek@179.182.119.135) (Ping timeout: 240 seconds)
2020-12-09 04:54:00 +0100 <boxscape> Coercible (f a) (f b) would also require that the parameter to f is phantom, right?
2020-12-09 04:54:15 +0100 <boxscape> hm
2020-12-09 04:54:18 +0100 <boxscape> if it's forall a and b that is?
2020-12-09 04:55:34 +0100 <boxscape> alas GHC can't infer the phantom role
2020-12-09 04:56:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 04:56:21 +0100 <boxscape> I was trying to write `instance forall f a b . Coercible (f a) (f b) => Invariant f`
2020-12-09 04:57:28 +0100 <koz_> Coercible (f a) (f b) could potentially work if it's representational and Coercible a b holds.
2020-12-09 04:57:38 +0100 <boxscape> ah
2020-12-09 04:57:40 +0100 <boxscape> right
2020-12-09 04:58:03 +0100 <koz_> Now if we have (Coercible (f a) (f b), Coercible (f b) (f a)) on the other hand...
2020-12-09 04:58:12 +0100 <boxscape> hm but then you should still be able to make an Invariant instance, since you have coerce :: a -> b and coerce :: b -> a
2020-12-09 04:58:16 +0100 <koz_> But I guess Coercible is symmetric?
2020-12-09 04:58:25 +0100 <koz_> Yeah, I think you could.
2020-12-09 04:58:44 +0100 <koz_> You just ignore the functions completely.
2020-12-09 04:58:51 +0100 <jle`> boxscape: i'm not sure that instance makes sense
2020-12-09 04:58:52 +0100 <koz_> So invmap _ _ = coerce :P
2020-12-09 04:59:01 +0100 <jle`> because you're quantifying over the f, which appears in the instance itself
2020-12-09 04:59:12 +0100 <jle`> so maybe it's shadowing the f in the instance
2020-12-09 04:59:14 +0100 <koz_> jle`: Yeah, good point.
2020-12-09 04:59:25 +0100 <boxscape> oh
2020-12-09 04:59:29 +0100 <jle`> instance (forall a b. Coercible (f a) (f b) => Inveriant f where .. might work
2020-12-09 04:59:30 +0100 <koz_> Since it's the 'f' that has an Invariant instance.
2020-12-09 04:59:34 +0100 <jle`> since the f isn't being shadowed
2020-12-09 04:59:45 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 04:59:53 +0100 <jle`> but also this is a bad instance of course since it overlaps with every Invariant instance...but it should at least be definable
2020-12-09 05:00:19 +0100 <jle`> instance (forall a b. Coercible (F a) (F b)) => Invariant F works, i think, for specific F
2020-12-09 05:00:28 +0100 <koz_> Yeah, Coercible causes the problem of 'overlaps with everything ever'.
2020-12-09 05:00:36 +0100 <koz_> Just in general.
2020-12-09 05:00:52 +0100 <jle`> the overlapping problem is mostly that `Invariant f`, heh
2020-12-09 05:01:21 +0100ransom__(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 05:01:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-09 05:03:27 +0100 <koz_> On a semi-related note, it's a pity that 'fmap coerce' is not the same as 'coerce'.
2020-12-09 05:03:51 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2020-12-09 05:04:06 +0100 <jle`> because it depends on the type's implementation of fmap probably, right?
2020-12-09 05:04:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 264 seconds)
2020-12-09 05:04:18 +0100 <jle`> instance Functor Maybe where fmap _ _ = Nothing
2020-12-09 05:04:23 +0100 <boxscape> jle` fwiw `instance forall f . Functor => Invariant f` works fine so I don't think the forall is a problem
2020-12-09 05:04:32 +0100 <boxscape> s/Functor/Functor f
2020-12-09 05:04:42 +0100 <jle`> that sounds like a kind error
2020-12-09 05:04:46 +0100 <jle`> oh i see
2020-12-09 05:05:03 +0100 <koz_> jle`: Yeah, if you write law-breaking instances, it'd fail.
2020-12-09 05:05:17 +0100 <koz_> But to be honest, Functor is so strong under parametricity it should _really_ be a compiler built-in.
2020-12-09 05:07:22 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 05:08:03 +0100u0_a298(~user@65.35.205.131)
2020-12-09 05:09:01 +0100Axma29712(~Axman6@pdpc/supporter/student/Axman6)
2020-12-09 05:11:06 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 256 seconds)
2020-12-09 05:11:06 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 05:11:33 +0100u0_a298(~user@65.35.205.131)
2020-12-09 05:12:35 +0100uraniumz(x64cmd@gateway/vpn/privateinternetaccess/x64cmd)
2020-12-09 05:13:52 +0100shatriff_(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-09 05:14:16 +0100Axma29712(~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 240 seconds)
2020-12-09 05:14:45 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-09 05:15:45 +0100SanchayanMaity(~Sanchayan@122.167.92.138)
2020-12-09 05:16:18 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-12-09 05:16:31 +0100Tesseraction_n(~Tesseract@unaffiliated/tesseraction)
2020-12-09 05:16:34 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-09 05:17:06 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 05:17:06 +0100Tesseraction(~Tesseract@unaffiliated/tesseraction) (Ping timeout: 256 seconds)
2020-12-09 05:17:21 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Remote host closed the connection)
2020-12-09 05:17:36 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-12-09 05:17:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 05:20:15 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2020-12-09 05:20:49 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
2020-12-09 05:21:06 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-09 05:21:34 +0100conal(~conal@64.71.133.70)
2020-12-09 05:22:16 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 258 seconds)
2020-12-09 05:22:43 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 05:24:44 +0100 <fresheyeball> Is there any way to mapT :: (a -> b) -> IO (TVar a) -> IO (TVar b) without allocating a new TVar?
2020-12-09 05:24:46 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 05:25:15 +0100u0_a298(~user@65.35.205.131)
2020-12-09 05:25:30 +0100 <fresheyeball> (note: state needs to stay synced between the `TVar a` and `TVar b`
2020-12-09 05:25:37 +0100 <fresheyeball> )
2020-12-09 05:25:45 +0100 <dmj`> :t fmap . fmap
2020-12-09 05:25:47 +0100 <lambdabot> (Functor f1, Functor f2) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)
2020-12-09 05:25:52 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-12-09 05:26:00 +0100 <fresheyeball> dmj`: TVar is not a Functor
2020-12-09 05:26:30 +0100 <dmj`> fresheyeball: that blows
2020-12-09 05:27:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 260 seconds)
2020-12-09 05:27:57 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-xfocnvqeblymqavl) ()
2020-12-09 05:28:23 +0100conal(~conal@64.71.133.70)
2020-12-09 05:28:24 +0100 <dmj`> fresheyeball: then no
2020-12-09 05:28:53 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-09 05:31:10 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 05:31:22 +0100 <c_wraith> well... sort of
2020-12-09 05:31:37 +0100 <c_wraith> Have you heard of our friend Coyoneda?
2020-12-09 05:31:40 +0100u0_a298(~user@65.35.205.131)
2020-12-09 05:32:09 +0100 <fresheyeball> *raises hand, while shaking head*
2020-12-09 05:32:29 +0100 <c_wraith> though... "synchronized"? Like, you want to keep both around and to have changes to one reflected in the other?
2020-12-09 05:32:41 +0100 <c_wraith> Because that causes problems
2020-12-09 05:32:50 +0100 <fresheyeball> yes, that is what I mean
2020-12-09 05:32:51 +0100 <jle`> fresheyeball: yeah, you can only have it be write-only
2020-12-09 05:32:52 +0100 <c_wraith> In particular, (a->b) isn't strong enough
2020-12-09 05:33:06 +0100 <jle`> er, read-only
2020-12-09 05:33:09 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-12-09 05:33:13 +0100 <jle`> Coyoneda TVar a is a read-only tvar
2020-12-09 05:33:23 +0100nyd(~nyd@unaffiliated/elysian)
2020-12-09 05:34:30 +0100conal(~conal@64.71.133.70)
2020-12-09 05:34:46 +0100 <jle`> Data.Functor.Contravariant.Coyoneda's Coyoneda TVar a is a write-only tvar
2020-12-09 05:35:05 +0100 <iqubic> I don't understand Coyoneda at all.
2020-12-09 05:35:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 05:35:20 +0100 <jle`> oh, there's an invariant Coyoneda too
2020-12-09 05:35:56 +0100 <jle`> but i can't find it in any libraries
2020-12-09 05:35:56 +0100 <koz_> And a profunctor one.
2020-12-09 05:36:16 +0100 <iqubic> Coyoneda is werid. I wish I understood it, but I just don't.
2020-12-09 05:36:18 +0100 <jle`> Invariant Coyoneda will give you a fully mappable TVar, but you need both (a -> b) and (b -> c), so that's not necessarily what you want
2020-12-09 05:37:00 +0100 <koz_> iqubic: AFAICT, Coyoneda is like a free functor - it doesn't actually _do_ anything, but just tracks all the mappings.
2020-12-09 05:37:15 +0100 <iqubic> I see. That's bizarre.
2020-12-09 05:37:22 +0100 <koz_> iqubic: How is that bizarre?
2020-12-09 05:37:28 +0100 <iqubic> I don't know.
2020-12-09 05:37:29 +0100 <koz_> It's the same as the free Applicative, free Monad etc.
2020-12-09 05:38:06 +0100 <c_wraith> It's a pretty natural idea when you discover some types can't be a Functor instance. "Why don't I just pair it with a conversion function?"
2020-12-09 05:38:08 +0100 <iqubic> What does the Coyoneda data type look like?
2020-12-09 05:38:20 +0100 <jle`> https://hackage.haskell.org/package/kan-extensions-5.2.1/docs/Data-Functor-Coyoneda.html
2020-12-09 05:38:20 +0100 <koz_> iqubic: Depends on which functor type you're trying to fake being.
2020-12-09 05:38:53 +0100 <iqubic> Oh, there's no one single Coyoneda? It's different for each Functor?
2020-12-09 05:39:16 +0100 <koz_> Yep.
2020-12-09 05:39:30 +0100 <c_wraith> well. There's a different Coyoneda for each type of functor
2020-12-09 05:39:44 +0100 <c_wraith> But there's only one for covariant functors.
2020-12-09 05:39:47 +0100 <iqubic> Weird. jle gave me this: Coyoneda :: (b -> a) -> f b -> Coyoneda f a.
2020-12-09 05:40:06 +0100 <jle`> that's for covariant functors yeah, it gives you a free Data.Functor.Functor instance
2020-12-09 05:40:08 +0100 <iqubic> Is that the covariant version of coyoneda?
2020-12-09 05:40:09 +0100 <c_wraith> note: that's a constructor for a GADT, used to encode an existential
2020-12-09 05:40:11 +0100 <jle`> for funsies, try writing it :)
2020-12-09 05:40:19 +0100 <jle`> the Functor instance
2020-12-09 05:40:49 +0100 <iqubic> I would do that, but it's 20 minutes to AoC, and I don't want to fry my brain to much before then.
2020-12-09 05:41:03 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 258 seconds)
2020-12-09 05:41:23 +0100 <boxscape> Hm I can't quite see the difference between Yoneda and Coyoneda
2020-12-09 05:41:26 +0100 <jle`> at least you know the next step in your path to understanding :)
2020-12-09 05:41:41 +0100esg(~emil@esg.xen.prgmr.com) (Remote host closed the connection)
2020-12-09 05:41:46 +0100 <iqubic> boxscape: I assume you take the arrows of one and flip them to get the other.
2020-12-09 05:42:11 +0100 <iqubic> That's what a categorical dual is, and the co- prefix implies categorical dual
2020-12-09 05:42:27 +0100 <boxscape> `data Coyoneda f a where Coyoneda :: (b -> a) -> f b -> Coyoneda f a` versus `newtype Yoneda f a = Yoneda { runYoneda :: forall r. (r -> a) -> f r }` seems like the same thing
2020-12-09 05:42:30 +0100 <boxscape> modulo strictness
2020-12-09 05:42:51 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-12-09 05:43:00 +0100 <iqubic> I assume the forall r. changes things.
2020-12-09 05:43:10 +0100 <boxscape> but there's an implicit forall b in the other one
2020-12-09 05:43:16 +0100 <boxscape> no?
2020-12-09 05:43:25 +0100 <fresheyeball> hmmm
2020-12-09 05:43:55 +0100 <iqubic> Look at the types. Yoneda f a = ... makes no mention of r on the LHS. That means the r is a rank2 type.
2020-12-09 05:44:38 +0100 <iqubic> Whereas Coyoneda is doesn't require Rank2 Types.
2020-12-09 05:44:59 +0100 <boxscape> ah, that's true
2020-12-09 05:45:01 +0100 <fresheyeball> ok I see
2020-12-09 05:45:11 +0100 <iqubic> Now, how does that make them different? I have no bloody clue.
2020-12-09 05:46:02 +0100 <boxscape> oh
2020-12-09 05:46:08 +0100 <boxscape> the bracketing is different
2020-12-09 05:46:12 +0100falafel(~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
2020-12-09 05:46:17 +0100 <boxscape> Yoneda :: (forall r. (r -> a) -> f r) -> Yoneda f a
2020-12-09 05:46:25 +0100 <boxscape> Coyoneda :: (b -> a) -> f b -> Coyoneda f a
2020-12-09 05:46:37 +0100 <iqubic> Yes. That's right.
2020-12-09 05:47:14 +0100 <iqubic> How does that make them different.
2020-12-09 05:47:46 +0100fxg(~fxg@unaffiliated/fxg)
2020-12-09 05:48:07 +0100 <fresheyeball> iqubic: Yoneda :: (a <- b) -> f b -> Yoneda f a
2020-12-09 05:48:17 +0100 <fresheyeball> the first arrow is flipped
2020-12-09 05:48:28 +0100 <iqubic> Not that I can see.
2020-12-09 05:49:04 +0100argento(~argent0@168.227.96.51)
2020-12-09 05:49:13 +0100 <boxscape> oh no
2020-12-09 05:49:22 +0100 <boxscape> I accidentally copied the contrvariant yoneda
2020-12-09 05:49:28 +0100 <boxscape> instead of the covariant one
2020-12-09 05:49:39 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6)
2020-12-09 05:50:02 +0100 <boxscape> flip the (r -> a) to (a -> r) to get the covariant one
2020-12-09 05:50:39 +0100 <iqubic> Right. I see.
2020-12-09 05:51:59 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 05:52:41 +0100conal(~conal@64.71.133.70)
2020-12-09 05:53:06 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-09 05:53:36 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 240 seconds)
2020-12-09 05:53:42 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
2020-12-09 05:55:54 +0100conal_(~conal@64.71.133.70)
2020-12-09 05:56:34 +0100nyd(~nyd@unaffiliated/elysian) (Quit: nyd)
2020-12-09 05:58:01 +0100kupi(uid212005@gateway/web/irccloud.com/x-sihatzqhydqaqspq) (Quit: Connection closed for inactivity)
2020-12-09 05:59:41 +0100crestfallen(~jvw@192-184-135-144.fiber.dynamic.sonic.net)
2020-12-09 06:00:07 +0100conal_(~conal@64.71.133.70) (Client Quit)
2020-12-09 06:00:14 +0100texasmynsted(~texasmyns@212.102.45.115) (Ping timeout: 256 seconds)
2020-12-09 06:00:26 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-12-09 06:04:10 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 06:04:12 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-12-09 06:04:26 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 258 seconds)
2020-12-09 06:06:29 +0100 <MarcelineVQ> boxscape: you monster
2020-12-09 06:06:39 +0100 <boxscape> what did I do
2020-12-09 06:06:52 +0100 <MarcelineVQ> mixing variants
2020-12-09 06:06:54 +0100 <boxscape> oh no
2020-12-09 06:07:06 +0100 <boxscape> I apologize deeply
2020-12-09 06:07:30 +0100 <MarcelineVQ> A note will be made on your permanent record.
2020-12-09 06:07:58 +0100 <boxscape> :(
2020-12-09 06:08:24 +0100Axma68625(~Axman6@pdpc/supporter/student/Axman6)
2020-12-09 06:08:37 +0100Saukk(~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e) (Remote host closed the connection)
2020-12-09 06:08:39 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 258 seconds)
2020-12-09 06:09:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-09 06:11:00 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 256 seconds)
2020-12-09 06:13:08 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6)
2020-12-09 06:14:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-09 06:15:10 +0100Axma68625(~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 258 seconds)
2020-12-09 06:16:38 +0100 <crestfallen> hi I'm getting the error "Invalid input" from running > eval "2+(3*4)" . I've checked over the code thoroughly, and others online who've done the same exercise, their code also returns Invalid input. thanks for looking https://gist.github.com/varreli/b32fa33506737c3b3fa0ff236dbe1c2c
2020-12-09 06:16:57 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 06:17:18 +0100dustypacer(~pi@2600:6c50:80:2f4a:e9d0:6569:1cea:d1d4) (Remote host closed the connection)
2020-12-09 06:17:31 +0100geekounet(~geekounet@185.204.1.185) (Remote host closed the connection)
2020-12-09 06:19:17 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2020-12-09 06:19:49 +0100 <pavonia> crestfallen: It goes expr -> term -> factor -> symbol "(" and fails there
2020-12-09 06:20:02 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de)
2020-12-09 06:21:03 +0100 <crestfallen> pavonia: huh? thanks checking .. it compiles fine..
2020-12-09 06:21:32 +0100gaze__(sid387101@gateway/web/irccloud.com/x-ydjmiyqfbpsxuqlr) (Ping timeout: 260 seconds)
2020-12-09 06:21:57 +0100noan(~noan@2604:a880:400:d0::12fc:5001) (Remote host closed the connection)
2020-12-09 06:22:18 +0100noan(~noan@2604:a880:400:d0::12fc:5001)
2020-12-09 06:22:40 +0100 <pavonia> Well, I didn't check if it compiles, that's there the eval call fails
2020-12-09 06:24:04 +0100trepanger(~z@ics141-225.icsincorporated.com) (Quit: leaving)
2020-12-09 06:24:33 +0100gaze__(sid387101@gateway/web/irccloud.com/x-tspxlbivlxnknxoj)
2020-12-09 06:25:18 +0100 <crestfallen> pavonia: sorry please elaborate
2020-12-09 06:26:48 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-09 06:27:26 +0100loller_(uid358106@gateway/web/irccloud.com/x-kppxruluvpavuchz) (Ping timeout: 258 seconds)
2020-12-09 06:27:37 +0100benwr____(sid372383@gateway/web/irccloud.com/x-zroyfovbhqhiqzax) (Ping timeout: 260 seconds)
2020-12-09 06:27:38 +0100aristid(sid1599@gateway/web/irccloud.com/x-hkziwpbxvyapwndr) (Ping timeout: 260 seconds)
2020-12-09 06:27:38 +0100ryjm(sid383513@gateway/web/irccloud.com/x-xyruibfadgkaupwy) (Ping timeout: 260 seconds)
2020-12-09 06:27:38 +0100natim87(sid286962@gateway/web/irccloud.com/x-mexmpkxgonbwfktv) (Ping timeout: 260 seconds)
2020-12-09 06:27:40 +0100d0liver(sid363046@gateway/web/irccloud.com/x-aajmemdhisvuoilm) (Read error: Connection reset by peer)
2020-12-09 06:27:40 +0100jared-w(uid405292@gateway/web/irccloud.com/x-pnfyamprydnozdqy) (Read error: Connection reset by peer)
2020-12-09 06:27:40 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-pjfkrpyzckdbsmgh) (Read error: Connection reset by peer)
2020-12-09 06:27:42 +0100banjiewen_(sid115913@gateway/web/irccloud.com/x-rntyoakqetturqhz) (Read error: Connection reset by peer)
2020-12-09 06:27:42 +0100wpcarro_(sid397589@gateway/web/irccloud.com/x-ealbiyxzmxxgewpr) (Read error: Connection reset by peer)
2020-12-09 06:27:42 +0100AndreasK(uid320732@gateway/web/irccloud.com/x-plgftcbqpbpmnyrj) (Read error: Connection reset by peer)
2020-12-09 06:27:42 +0100bradparker(sid262931@gateway/web/irccloud.com/x-nbpjheuowgmlbzcp) (Read error: Connection reset by peer)
2020-12-09 06:27:42 +0100alanz(sid110616@gateway/web/irccloud.com/x-hvvxxgjtvnddfyee) (Read error: Connection reset by peer)
2020-12-09 06:27:48 +0100SrPx(sid108780@gateway/web/irccloud.com/x-htoyitviijeanpkh) (Read error: Connection reset by peer)
2020-12-09 06:27:54 +0100systemfault(sid267009@gateway/web/irccloud.com/x-wdlytpqqslmpiaxc) (Read error: Connection reset by peer)
2020-12-09 06:27:57 +0100eruditass(uid248673@gateway/web/irccloud.com/x-onjuwmppppmuaqzi) (Read error: Connection reset by peer)
2020-12-09 06:28:00 +0100benwr____(sid372383@gateway/web/irccloud.com/x-xypphoshdxsnierw)
2020-12-09 06:28:03 +0100aristid(sid1599@gateway/web/irccloud.com/x-yiksygoupevldqqs)
2020-12-09 06:28:03 +0100natim87(sid286962@gateway/web/irccloud.com/x-ncrxsokgqnkrgrgf)
2020-12-09 06:28:05 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-jltmhnzuiyltdegi)
2020-12-09 06:28:06 +0100loller_(uid358106@gateway/web/irccloud.com/x-nilnbxzdzripjyrd)
2020-12-09 06:28:07 +0100banjiewen_(sid115913@gateway/web/irccloud.com/x-ivdebwukluxrlfrl)
2020-12-09 06:28:13 +0100systemfault(sid267009@gateway/web/irccloud.com/x-gzvcgufgrbzhytha)
2020-12-09 06:28:23 +0100SrPx(sid108780@gateway/web/irccloud.com/x-xegzulneumbuiqbu)
2020-12-09 06:28:33 +0100 <pavonia> crestfallen: Have you tried evaluating that expression by hand? It should be pretty obvious then that it tried to parse a "(" at the beginning of each expression
2020-12-09 06:28:43 +0100alanz(sid110616@gateway/web/irccloud.com/x-enbknkhtbzmhwhvg)
2020-12-09 06:28:48 +0100joshmeredith(sid387798@gateway/web/irccloud.com/x-uqsodavpxzxpcuwv) (Ping timeout: 260 seconds)
2020-12-09 06:28:48 +0100totbwf(sid402332@gateway/web/irccloud.com/x-txjandoufixsoprd) (Ping timeout: 260 seconds)
2020-12-09 06:28:48 +0100ryjm(sid383513@gateway/web/irccloud.com/x-bskhgqtqitkmfuiz)
2020-12-09 06:28:52 +0100d0liver(sid363046@gateway/web/irccloud.com/x-klrkxlxkdtrlbbwl)
2020-12-09 06:28:52 +0100AndreasK(uid320732@gateway/web/irccloud.com/x-frmbvilzwwwmnfhv)
2020-12-09 06:29:00 +0100eruditass(uid248673@gateway/web/irccloud.com/x-bonpdgcxjhnmearr)
2020-12-09 06:29:26 +0100lally(sid388228@gateway/web/irccloud.com/x-lkvfvytrcbfmnwwv) (Ping timeout: 264 seconds)
2020-12-09 06:29:31 +0100 <monochrom> And more importantly, if that fails, there is no alternative to try.
2020-12-09 06:29:55 +0100lally(sid388228@gateway/web/irccloud.com/x-bnjavsttoxuogooa)
2020-12-09 06:30:00 +0100bradparker(sid262931@gateway/web/irccloud.com/x-xfealfqvgophfdio)
2020-12-09 06:30:01 +0100jared-w(uid405292@gateway/web/irccloud.com/x-ipmzhtzxqfarjsqt)
2020-12-09 06:30:32 +0100totbwf(sid402332@gateway/web/irccloud.com/x-gkljgvwgjywgwgba)
2020-12-09 06:31:24 +0100wpcarro_(sid397589@gateway/web/irccloud.com/x-uilyvixlkpnvjftn)
2020-12-09 06:31:37 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) ()
2020-12-09 06:32:13 +0100joshmeredith(sid387798@gateway/web/irccloud.com/x-asdwgzewpjdjmslj)
2020-12-09 06:34:20 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 06:35:31 +0100u0_a298(~user@65.35.205.131)
2020-12-09 06:36:00 +0100 <crestfallen> pavonia: sorry do I have an error in the factor function? I have it precisely how the book has it.
2020-12-09 06:37:50 +0100johnw(~johnw@haskell/developer/johnw) (Quit: ZNC - http://znc.in)
2020-12-09 06:38:14 +0100 <pavonia> crestfallen: I guess the "<|> natural" part is supposed to refer to the do block, but it refers to the "return e"
2020-12-09 06:38:52 +0100 <pavonia> So it the parsing of a parenthesized expression fails, the whole parser fails
2020-12-09 06:38:57 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-09 06:39:38 +0100boxscape15(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
2020-12-09 06:40:14 +0100 <crestfallen> working thanks pavonia ...
2020-12-09 06:40:43 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-09 06:41:37 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Ping timeout: 264 seconds)
2020-12-09 06:43:53 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 06:44:21 +0100 <crestfallen> no matter how I do the identation pavonia , it fails. can't get it..
2020-12-09 06:44:27 +0100u0_a298(~user@65.35.205.131)
2020-12-09 06:44:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 06:45:46 +0100 <pavonia> You need parentheses. (do ...) <|> natural
2020-12-09 06:47:56 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 06:48:04 +0100 <pavonia> or use applicative style: symbol "(" *> expr <* symbol ")" <|> natural
2020-12-09 06:48:22 +0100u0_a298(~user@65.35.205.131)
2020-12-09 06:49:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-09 06:49:36 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 06:51:44 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 06:52:25 +0100u0_a298(~user@65.35.205.131)
2020-12-09 06:53:12 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-09 06:53:12 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2020-12-09 06:55:25 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 06:55:54 +0100 <crestfallen> pavonia: brutal no go; thanks for your help
2020-12-09 06:55:55 +0100u0_a298(~user@65.35.205.131)
2020-12-09 06:56:47 +0100borne(~fritjof@200116b86420b200bcbe2553f445a41b.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-09 06:58:19 +0100borne(~fritjof@200116b86463a100bcbe2553f445a41b.dip.versatel-1u1.de)
2020-12-09 06:59:22 +0100 <crestfallen> pavonia: I got it to compile with the applicative version, but the same error is returned
2020-12-09 06:59:30 +0100shah^(shah@ip98-184-89-2.mc.at.cox.net)
2020-12-09 07:00:02 +0100 <pavonia> Could you paste the new code?
2020-12-09 07:00:20 +0100 <crestfallen> sure
2020-12-09 07:02:07 +0100 <ephemient> rewrote part 2 to use a Sequence. I shoulda benchmarked before though, I don't know if it actually improved performance lol
2020-12-09 07:02:33 +0100 <jle`> ephemient: wrong channel? :)
2020-12-09 07:03:06 +0100 <ephemient> wrong yep, wrong channel.
2020-12-09 07:03:58 +0100 <crestfallen> https://gist.github.com/varreli/0896128aa3fb2e7bc1c5f3e1ff420f11 sorry working on getting the whole thing pasted pavonia
2020-12-09 07:04:58 +0100 <crestfallen> http://ix.io/2Hg8 for now pls use this pavonia
2020-12-09 07:05:50 +0100 <pavonia> crestfallen: The other parsers have the same problem
2020-12-09 07:06:02 +0100troydm(~troydm@unaffiliated/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2020-12-09 07:06:53 +0100dave_uy(~david@108.61.193.26) (Quit: The Lounge - https://thelounge.chat)
2020-12-09 07:07:47 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-09 07:08:32 +0100fxg(~fxg@unaffiliated/fxg) (Quit: Leaving)
2020-12-09 07:08:53 +0100fxg(~fxg@unaffiliated/fxg)
2020-12-09 07:09:14 +0100 <crestfallen> pavonia: I'm sort of lost. I'm not sure how it chooses the parenthesized expressions first
2020-12-09 07:09:55 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 07:10:05 +0100 <crestfallen> aside from why it won't evaluate any expression
2020-12-09 07:10:16 +0100dave_uy(~david@108.61.193.26)
2020-12-09 07:10:59 +0100 <boxscape15> is maximum faster on a list than on a Seq?
2020-12-09 07:13:04 +0100 <pavonia> crestfallen: When you have something like `do foo; return blah <|> natual`, it's parsed as `do foo; (return blah <|> natual)`. But this is not what you want. You want to try the do-block first, and if it fails use the other alternative after <|>. To accomplish that you make the parser aware that the alternative is not part of the do-block by using parentheses
2020-12-09 07:13:04 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:13:45 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:14:05 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds)
2020-12-09 07:14:22 +0100fxg(~fxg@unaffiliated/fxg) (Quit: Leaving)
2020-12-09 07:15:41 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-09 07:15:58 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 07:16:18 +0100troydm(~troydm@unaffiliated/troydm)
2020-12-09 07:16:47 +0100 <pavonia> crestfallen: Not the best style, but it should work to just wrap each whole do-block before <|> in parentheses
2020-12-09 07:17:50 +0100 <crestfallen> pavonia: I got this to compile and evaluate: http://ix.io/2Hg9
2020-12-09 07:18:26 +0100 <crestfallen> but the book and others online have it as I've pasted it. maddening!
2020-12-09 07:20:22 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-09 07:20:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 264 seconds)
2020-12-09 07:20:29 +0100 <pavonia> Are you sure they have exactly the same thing, not a slightly different indentation for example?
2020-12-09 07:22:38 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:22:39 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de)
2020-12-09 07:22:59 +0100 <crestfallen> no not sure, at least in the book, since it is a kindle cloud reader book, and the indentation is way off. but I tried a few solution sets on github and every version returns [] or error Invalid input pavonia
2020-12-09 07:23:07 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:23:28 +0100 <crestfallen> they all compile fine
2020-12-09 07:23:47 +0100mounty(~mounty@2001:8000:2f59:0:955e:b3d4:6deb:61b5) (Ping timeout: 258 seconds)
2020-12-09 07:24:22 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Read error: Connection reset by peer)
2020-12-09 07:25:04 +0100 <crestfallen> but the logic is what I'm more curious about. Like how those expr -> term -> factor -> natural act recursively. It is dawning on me a bit...
2020-12-09 07:25:07 +0100 <crestfallen> pavonia:
2020-12-09 07:25:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 07:25:23 +0100 <pavonia> Yeah, all your parsers are of type Parser Int which can make incorrectly indented code still compile fine. Yo usually have many different return types such that indentation errors pop up more often
2020-12-09 07:26:08 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-12-09 07:26:09 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-12-09 07:28:16 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:28:47 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:30:56 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:31:17 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:33:43 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-09 07:35:57 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:36:16 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:37:20 +0100 <Axman6> boxscape15: benchmark it and find out, possibly?
2020-12-09 07:37:29 +0100 <boxscape15> I suppose I should
2020-12-09 07:38:40 +0100dxld(~dxld@rush.pub.dxld.at) (Remote host closed the connection)
2020-12-09 07:40:47 +0100dxld(~dxld@80-109-136-248.cable.dynamic.surfer.at)
2020-12-09 07:43:23 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:43:41 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-09 07:44:02 +0100echoreply(~echoreply@unaffiliated/echoreply) (Quit: WeeChat 1.9.1)
2020-12-09 07:44:06 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de)
2020-12-09 07:44:08 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:44:30 +0100echoreply(~echoreply@unaffiliated/echoreply)
2020-12-09 07:47:49 +0100falafel_(~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
2020-12-09 07:47:49 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:48:15 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:50:31 +0100falafel(~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2020-12-09 07:50:31 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:51:08 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:51:41 +0100mrchampion_(~mrchampio@38.18.109.23) (Remote host closed the connection)
2020-12-09 07:52:26 +0100toorevitimirp(~tooreviti@117.182.181.85)
2020-12-09 07:54:34 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 07:54:53 +0100crestfallen(~jvw@192-184-135-144.fiber.dynamic.sonic.net) (Quit: leaving)
2020-12-09 07:55:17 +0100u0_a298(~user@65.35.205.131)
2020-12-09 07:55:40 +0100noecho(~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in)
2020-12-09 07:55:46 +0100phasespace(~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 256 seconds)
2020-12-09 07:55:48 +0100acidjnk_new(~acidjnk@p200300d0c719ff8621cd498ce205b85b.dip0.t-ipconnect.de)
2020-12-09 07:56:14 +0100noecho(~noecho@2a01:4f8:1c0c:80ee::4223)
2020-12-09 07:57:40 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 07:58:11 +0100nerdypepper(~nerdypepp@152.67.162.71)
2020-12-09 07:59:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-09 07:59:45 +0100argento(~argent0@168.227.96.51) (Quit: leaving)
2020-12-09 08:02:07 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 258 seconds)
2020-12-09 08:02:07 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 08:02:57 +0100u0_a298(~user@65.35.205.131)
2020-12-09 08:03:17 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 08:03:21 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-09 08:04:02 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 08:04:16 +0100gedda(gedda@gateway/vpn/mullvad/gedda)
2020-12-09 08:06:03 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 08:06:58 +0100 <gedda> sometimes, just sometimes, containers are really frustrating
2020-12-09 08:07:00 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 08:07:17 +0100 <gedda> Why doesn't Data.Set implement construction from a Traversable?
2020-12-09 08:07:59 +0100 <gedda> am I forced to use an intermediate list when going from Vector -> Set?
2020-12-09 08:08:28 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 246 seconds)
2020-12-09 08:09:53 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-09 08:10:18 +0100boxscape15(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
2020-12-09 08:12:40 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 08:12:45 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2020-12-09 08:13:24 +0100u0_a298(~user@65.35.205.131)
2020-12-09 08:14:55 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-09 08:16:20 +0100phasespace(~sar@80-89-47-117.inet.signal.no)
2020-12-09 08:16:47 +0100sQVe(~sQVe@unaffiliated/sqve)
2020-12-09 08:17:18 +0100 <koz_> gedda: foldr Set.insert Set.empty myVector works?
2020-12-09 08:17:27 +0100 <koz_> No intermediate lists there.
2020-12-09 08:19:35 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 08:19:50 +0100u0_a298(~user@65.35.205.131)
2020-12-09 08:20:45 +0100seasonal-staffglguy
2020-12-09 08:21:07 +0100 <koz_> % import qualified Data.Set as Set
2020-12-09 08:21:08 +0100 <yahb> koz_:
2020-12-09 08:21:16 +0100 <koz_> % :t foldr Set.insert Set.empty
2020-12-09 08:21:16 +0100 <yahb> koz_: (Foldable t, Ord a) => t a -> S.Set a
2020-12-09 08:21:24 +0100 <koz_> gedda: ^
2020-12-09 08:21:40 +0100 <jle`> gedda: it's not a Traversable because then it'd need to be a Functor
2020-12-09 08:21:52 +0100 <koz_> jle`: _From_ a Traversable.
2020-12-09 08:22:05 +0100 <jle`> ah, i did read too fast :)
2020-12-09 08:22:08 +0100 <koz_> (I had to re-read it a few times too)
2020-12-09 08:22:26 +0100 <jle`> gedda: i feel like you'd create no intermediate list if you did S.fromList . V.toList
2020-12-09 08:22:38 +0100 <jle`> that full list will never be allocated
2020-12-09 08:23:09 +0100 <koz_> jle`: Yeah, but using the method above, you can be _sure_.
2020-12-09 08:23:42 +0100 <jle`> fair enough :)
2020-12-09 08:23:56 +0100L29Ah(~L29Ah@unaffiliated/l29ah) (Ping timeout: 240 seconds)
2020-12-09 08:24:09 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:d8c3:612c:6813:238e)
2020-12-09 08:24:42 +0100lambdabot(~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
2020-12-09 08:25:10 +0100lambdabot(~lambdabot@haskell/bot/lambdabot)
2020-12-09 08:25:13 +0100 <gedda> koz_, thanks! Very clever, was looking at foldr in Set and not in Vector for the answer
2020-12-09 08:25:25 +0100 <koz_> gedda: foldr is more general.
2020-12-09 08:25:27 +0100 <koz_> :t foldr
2020-12-09 08:25:34 +0100 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
2020-12-09 08:25:49 +0100 <koz_> It'll fold basically anything even remotely container-shaped.
2020-12-09 08:25:54 +0100 <koz_> (along with some things which aren't)
2020-12-09 08:26:07 +0100 <koz_> % :t foldr @Maybe
2020-12-09 08:26:07 +0100 <yahb> koz_: (a -> b -> b) -> b -> Maybe a -> b
2020-12-09 08:26:21 +0100int-e(~noone@int-e.eu) (Remote host closed the connection)
2020-12-09 08:26:30 +0100 <koz_> % :t foldr @Proxy
2020-12-09 08:26:30 +0100 <yahb> koz_: (a -> b -> b) -> b -> Proxy a -> b
2020-12-09 08:26:31 +0100 <gedda> man I must have missed that foldr in Prelude was on Foldable and not a List
2020-12-09 08:26:52 +0100 <koz_> % :t foldr @Identity
2020-12-09 08:26:52 +0100 <yahb> koz_: (a -> b -> b) -> b -> Identity a -> b
2020-12-09 08:27:08 +0100int-e(~noone@int-e.eu)
2020-12-09 08:27:54 +0100 <koz_> There's a cuter way to do Vector -> Set.
2020-12-09 08:28:01 +0100 <koz_> % :t foldMap Set.singleton
2020-12-09 08:28:01 +0100 <yahb> koz_: (Foldable t, Ord a) => t a -> S.Set a
2020-12-09 08:29:19 +0100 <gedda> thats actually pretty neat, I'll go with that one, thanks!
2020-12-09 08:29:45 +0100uraniumz(x64cmd@gateway/vpn/privateinternetaccess/x64cmd) (Ping timeout: 240 seconds)
2020-12-09 08:30:36 +0100 <koz_> jle` can probably come up with an even cuter one.
2020-12-09 08:30:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 08:31:27 +0100 <gedda> :t maybe id
2020-12-09 08:31:30 +0100 <lambdabot> (a1 -> a2 -> a2) -> Maybe a1 -> a2 -> a2
2020-12-09 08:31:37 +0100 <koz_> :t fromMaybe
2020-12-09 08:31:40 +0100 <lambdabot> a -> Maybe a -> a
2020-12-09 08:31:48 +0100 <gedda> which would be the same as foldr @Maybe?
2020-12-09 08:31:56 +0100jchia__(~jchia@58.32.37.146) (Quit: Leaving.)
2020-12-09 08:32:07 +0100 <koz_> % foldr (+) 0 (Maybe 10)
2020-12-09 08:32:07 +0100 <yahb> koz_: ; <interactive>:133:14: error:; * Data constructor not in scope: Maybe :: t1 -> t0 b; * Perhaps you meant variable `maybe' (imported from Prelude)
2020-12-09 08:32:12 +0100 <koz_> % foldr (+) 0 (Just 10)
2020-12-09 08:32:12 +0100 <yahb> koz_: 10
2020-12-09 08:32:15 +0100jchia__(~jchia@58.32.37.146)
2020-12-09 08:32:17 +0100 <koz_> % foldr (+) 0 Nothing
2020-12-09 08:32:17 +0100 <yahb> koz_: 0
2020-12-09 08:32:29 +0100jchia__(~jchia@58.32.37.146) (Client Quit)
2020-12-09 08:32:47 +0100 <jle`> foldr f z = maybe z (`f` z)
2020-12-09 08:32:49 +0100jchia__(~jchia@58.32.37.146)
2020-12-09 08:33:03 +0100jchia__(~jchia@58.32.37.146) (Client Quit)
2020-12-09 08:33:20 +0100x64cmd(~x64cmd@2601:185:203:c440::d0c8)
2020-12-09 08:33:26 +0100 <gedda> seems like I've severly underestimated foldr
2020-12-09 08:33:39 +0100 <koz_> gedda: foldr is an all-purpose wonder-weapon for smashing containers.
2020-12-09 08:33:48 +0100 <koz_> (so's foldMap, and it's usually cuter while doing it)
2020-12-09 08:34:02 +0100 <koz_> For example, here's a definition of 'toList':
2020-12-09 08:34:08 +0100 <koz_> % :t foldMap pure
2020-12-09 08:34:08 +0100 <yahb> koz_: (Foldable t, Monoid (f a), Applicative f) => t a -> f a
2020-12-09 08:34:23 +0100 <koz_> (it'll do a bunch more than that, but toList is one possible use)
2020-12-09 08:34:48 +0100loller_(uid358106@gateway/web/irccloud.com/x-nilnbxzdzripjyrd) (Quit: Connection closed for inactivity)
2020-12-09 08:34:50 +0100bthom(~thomas_07@2601:184:4700:b89:abdc:f6d7:f8b7:16e2) (Ping timeout: 264 seconds)
2020-12-09 08:35:19 +0100 <koz_> And here's one of 'length':
2020-12-09 08:35:26 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2020-12-09 08:35:31 +0100bthom(~bthom@2601:184:4700:b89:abdc:f6d7:f8b7:16e2)
2020-12-09 08:35:51 +0100 <koz_> % :t getSum . foldMap (\_ -> Sum 1)
2020-12-09 08:35:51 +0100 <yahb> koz_: (Foldable t, Num c) => t a -> c
2020-12-09 08:35:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-09 08:36:27 +0100 <koz_> % :t getSum . foldMap (Sum . const 1) -- for maximum pointless
2020-12-09 08:36:27 +0100 <yahb> koz_: (Foldable t, Num c) => t b -> c
2020-12-09 08:36:37 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:5178:619c:fc92:5a85) (Ping timeout: 258 seconds)
2020-12-09 08:37:08 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-09 08:37:51 +0100 <gedda> I need to find more reasons to use haskell
2020-12-09 08:38:05 +0100 <gedda> outside of advent of code
2020-12-09 08:38:21 +0100 <koz_> gedda: Get a job Haskelling.
2020-12-09 08:38:30 +0100 <koz_> That's a pretty good reason. :P
2020-12-09 08:38:50 +0100 <int-e> koz_: that one has a bootstrapping problem though :P
2020-12-09 08:39:06 +0100 <koz_> int-e: Yeah, I admit I was a Haskeller for fun long before I was one for profit.
2020-12-09 08:39:22 +0100 <iqubic> @quote jle` sleep
2020-12-09 08:39:22 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-12-09 08:39:22 +0100 <lambdabot> jle` says: let sleep = pure "zzz" in getSum sleep
2020-12-09 08:41:36 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 08:41:44 +0100 <gedda> Yeah would love to, but the offerings are slim to none in the areas I work with
2020-12-09 08:42:10 +0100 <gedda> From what I've seen, finance seems to use Haskell the most?
2020-12-09 08:42:59 +0100falafel_(~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2020-12-09 08:43:12 +0100u0_a298(~user@65.35.205.131)
2020-12-09 08:45:16 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 08:47:17 +0100u0_a298(~user@65.35.205.131)
2020-12-09 08:47:42 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2020-12-09 08:49:51 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-12-09 08:50:28 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-09 08:50:52 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-09 08:51:54 +0100sgibber2018(~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
2020-12-09 08:54:22 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 08:55:17 +0100u0_a298(~user@65.35.205.131)
2020-12-09 08:58:05 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 08:58:30 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 08:59:18 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:00:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 09:01:04 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2020-12-09 09:03:24 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
2020-12-09 09:03:24 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 09:04:13 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:06:19 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 09:06:56 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-09 09:07:42 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:09:22 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-12-09 09:11:36 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 09:11:43 +0100 <koz_> gedda: Yeah, there's a lot of Haskell in finance stuff.
2020-12-09 09:11:58 +0100 <koz_> However, there's a range - there's some folks in the Netherlands doing _hardware design_ in Haskell.
2020-12-09 09:12:10 +0100 <koz_> (I even applied for them, but I got bounced cause I didn't wanna relocate)
2020-12-09 09:12:15 +0100Yumasi(~guillaume@static-176-175-104-214.ftth.abo.bbox.fr)
2020-12-09 09:12:16 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:14:00 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 09:15:19 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 09:16:15 +0100x64cmd(~x64cmd@2601:185:203:c440::d0c8) (Quit: Leaving)
2020-12-09 09:17:05 +0100 <maerwald> oh no, snoyman just wrote a blog post about transformers in rust? It's not like I was missing them there...
2020-12-09 09:17:46 +0100 <koz_> maerwald: Yeah, while saying 'it's not like I actually _like_ transformers, baka!'.
2020-12-09 09:17:53 +0100 <koz_> (because Snoyman will Snoyman in _any_ language)
2020-12-09 09:18:23 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 09:19:08 +0100glguy(x@freenode/staff/haskell.developer.glguy) (Ping timeout: 606 seconds)
2020-12-09 09:21:08 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 09:21:20 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 09:22:01 +0100MOSCOS(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-09 09:22:12 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2020-12-09 09:22:26 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-09 09:22:48 +0100niko(~niko@freenode/staff/ubuntu.member.niko)
2020-12-09 09:23:01 +0100sim590(~sim590@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 264 seconds)
2020-12-09 09:23:24 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 09:23:47 +0100knupfer(~Thunderbi@200116b824fa4500946397fffe021fd1.dip.versatel-1u1.de)
2020-12-09 09:23:59 +0100 <maerwald> I'll have to go back to Go, because it's unlikely that crap will make it into the language :p
2020-12-09 09:24:26 +0100 <maerwald> (but then the language is crap...)
2020-12-09 09:24:34 +0100desophos(~desophos@2601:249:1680:a570:dc82:b6a1:9d59:9d35)
2020-12-09 09:24:35 +0100michalz(~user@185.246.204.39)
2020-12-09 09:24:53 +0100knupfer(~Thunderbi@200116b824fa4500946397fffe021fd1.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-09 09:25:02 +0100knupfer(~Thunderbi@200116b824fa450040da3329f3b9a8c8.dip.versatel-1u1.de)
2020-12-09 09:25:07 +0100 <koz_> maerwald: Lol.
2020-12-09 09:25:33 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.209) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 09:26:09 +0100borne(~fritjof@200116b86463a100bcbe2553f445a41b.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2020-12-09 09:27:51 +0100christo(~chris@81.96.113.213)
2020-12-09 09:30:05 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 09:30:11 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-09 09:30:35 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:32:58 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 09:33:15 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:35:39 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 09:35:56 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:36:06 +0100sim590(~sim590@modemcable090.207-203-24.mc.videotron.ca)
2020-12-09 09:36:16 +0100L29Ah(~L29Ah@unaffiliated/l29ah)
2020-12-09 09:37:40 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2020-12-09 09:38:10 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-12-09 09:39:02 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-12-09 09:40:03 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-09 09:41:27 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2020-12-09 09:41:45 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2020-12-09 09:43:26 +0100sim590(~sim590@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 256 seconds)
2020-12-09 09:43:42 +0100boxscape(86ab2cb4@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.180)
2020-12-09 09:45:08 +0100obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-09 09:46:09 +0100sim590(~sim590@modemcable090.207-203-24.mc.videotron.ca)
2020-12-09 09:46:12 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 09:46:49 +0100glguy(x@freenode/staff/haskell.developer.glguy)
2020-12-09 09:48:56 +0100obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl)
2020-12-09 09:48:57 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 09:49:57 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:51:01 +0100urek(~urek@2804:7f1:e10a:7d51:c470:9916:f9e5:aa4)
2020-12-09 09:53:56 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 09:54:17 +0100u0_a298(~user@65.35.205.131)
2020-12-09 09:55:05 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-jltmhnzuiyltdegi) (Quit: Connection closed for inactivity)
2020-12-09 09:56:37 +0100thc202(~thc202@unaffiliated/thc202)
2020-12-09 10:00:06 +0100tersetears[m](tersetears@gateway/shell/matrix.org/x-djplfbkhyixflrhq) (Quit: Idle for 30+ days)
2020-12-09 10:01:00 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133)
2020-12-09 10:02:05 +0100 <boxscape> is there a type that you can use to derive an Applicative instance if you have a Monad instance like `data MyFunctor = ... deriving Applicative via (DefaultApplicative MyFunctor)`?
2020-12-09 10:02:46 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-12-09 10:04:39 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-09 10:06:14 +0100 <lortabac> boxscape: Control.Applicative.WrappedMonad
2020-12-09 10:06:20 +0100 <boxscape> ah, thank you
2020-12-09 10:06:28 +0100zaquest(~notzaques@5.128.210.178)
2020-12-09 10:06:49 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
2020-12-09 10:07:44 +0100 <hyiltiz> I found a few days ago that Python is learning more (pattern matching and guards) from haskell except its list comprehension https://www.python.org/dev/peps/pep-0622/#exhaustiveness-checks though some folks doesn't seem to appreciate it https://news.ycombinator.com/item?id=23713795
2020-12-09 10:07:45 +0100zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2020-12-09 10:08:39 +0100 <hyiltiz> Let's see if a case-of expression comes back after all these years https://www.python.org/dev/peps/pep-3103/
2020-12-09 10:11:04 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 10:11:29 +0100 <boxscape> java is going a similar route
2020-12-09 10:11:48 +0100 <boxscape> https://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html
2020-12-09 10:12:12 +0100knupfer(~Thunderbi@200116b824fa450040da3329f3b9a8c8.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-09 10:12:15 +0100u0_a298(~user@65.35.205.131)
2020-12-09 10:13:55 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-12-09 10:14:36 +0100shf(~sheaf@2a01:cb19:80cc:7e00:4499:9502:e93c:8bfb)
2020-12-09 10:14:37 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-09 10:15:54 +0100 <maerwald> yeah, sum types are arguably the most valuable thing in haskell, the rest is just sweet options
2020-12-09 10:16:00 +0100desophos(~desophos@2601:249:1680:a570:dc82:b6a1:9d59:9d35) (Quit: Leaving)
2020-12-09 10:16:03 +0100 <hyiltiz> i thought i was reading nerd docs, not fasion mag :p
2020-12-09 10:16:40 +0100 <boxscape> At least you've been able to use Church/Scott encodings in the other languages for quite a while :)
2020-12-09 10:16:42 +0100 <hyiltiz> does java python or ruby has sum types (bolted on, that is)
2020-12-09 10:19:25 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 10:19:30 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 10:19:41 +0100u0_a298(~user@65.35.205.131)
2020-12-09 10:20:11 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de)
2020-12-09 10:20:22 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de) (Client Quit)
2020-12-09 10:22:33 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 10:23:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 260 seconds)
2020-12-09 10:24:14 +0100u0_a298(~user@65.35.205.131)
2020-12-09 10:24:37 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 10:25:06 +0100christo(~chris@81.96.113.213)
2020-12-09 10:27:42 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 10:28:56 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds)
2020-12-09 10:29:54 +0100christo(~chris@81.96.113.213) (Ping timeout: 256 seconds)
2020-12-09 10:31:14 +0100u0_a298(~user@65.35.205.131)
2020-12-09 10:33:24 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 10:35:16 +0100u0_a298(~user@65.35.205.131)
2020-12-09 10:36:52 +0100boxscape92(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
2020-12-09 10:39:03 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 10:39:04 +0100fendor(~fendor@77.119.128.243.wireless.dyn.drei.com)
2020-12-09 10:39:07 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-09 10:39:44 +0100christo(~chris@81.96.113.213)
2020-12-09 10:40:24 +0100u0_a298(~user@65.35.205.131)
2020-12-09 10:40:36 +0100boxscape(86ab2cb4@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.180) (Ping timeout: 240 seconds)
2020-12-09 10:41:07 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-12-09 10:41:12 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-rmxdeovfftxpgutx) (Quit: Connection closed for inactivity)
2020-12-09 10:42:03 +0100SanchayanM(~Sanchayan@106.200.195.64)
2020-12-09 10:42:14 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-09 10:42:34 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
2020-12-09 10:43:33 +0100SanchayanMaity(~Sanchayan@122.167.92.138) (Ping timeout: 265 seconds)
2020-12-09 10:43:40 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-09 10:44:16 +0100boxscape92boxscape
2020-12-09 10:44:23 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2020-12-09 10:46:23 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
2020-12-09 10:47:03 +0100iqubic`(~user@c-67-171-38-72.hsd1.wa.comcast.net)
2020-12-09 10:48:52 +0100iqubic(~user@2601:602:9500:4870:9dce:a684:2556:7d9f) (Ping timeout: 258 seconds)
2020-12-09 10:51:19 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 10:52:18 +0100u0_a298(~user@65.35.205.131)
2020-12-09 10:53:08 +0100neiluj(~jco@unaffiliated/neiluj) (Ping timeout: 256 seconds)
2020-12-09 10:55:17 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net)
2020-12-09 10:55:17 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 10:55:46 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Remote host closed the connection)
2020-12-09 10:57:11 +0100u0_a298(~user@65.35.205.131)
2020-12-09 11:00:30 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 11:01:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 11:03:27 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 11:04:18 +0100u0_a298(~user@65.35.205.131)
2020-12-09 11:05:18 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Ping timeout: 265 seconds)
2020-12-09 11:05:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 258 seconds)
2020-12-09 11:07:58 +0100 <boxscape> hm seems strange that Data.Lens has |> and a pattern synonym for Empty like Seq but no pattern synonym for :|>
2020-12-09 11:08:30 +0100SanchayanM(~Sanchayan@106.200.195.64) (Ping timeout: 256 seconds)
2020-12-09 11:09:06 +0100 <boxscape> er, Control.Lens rather
2020-12-09 11:10:08 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Ping timeout: 256 seconds)
2020-12-09 11:11:42 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th)
2020-12-09 11:13:46 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 11:14:31 +0100u0_a298(~user@65.35.205.131)
2020-12-09 11:15:12 +0100ericsagn1(~ericsagne@2405:6580:0:5100:2bf5:8913:5fd7:7df1) (Ping timeout: 260 seconds)
2020-12-09 11:16:45 +0100 <maerwald> hyiltiz: not really
2020-12-09 11:16:48 +0100 <maerwald> but there's https://coconut.readthedocs.io/en/master/DOCS.html#match
2020-12-09 11:18:23 +0100SanchayanMaity(~Sanchayan@106.200.195.64)
2020-12-09 11:18:31 +0100aqd(~aqd@84.20.147.33)
2020-12-09 11:21:44 +0100rprije(~rprije@14-201-170-17.tpgi.com.au) (Ping timeout: 265 seconds)
2020-12-09 11:22:07 +0100ubert(~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-09 11:22:40 +0100shf(~sheaf@2a01:cb19:80cc:7e00:4499:9502:e93c:8bfb) (Read error: Connection reset by peer)
2020-12-09 11:22:46 +0100urek__(~urek@2804:7f1:e10a:7d51:5950:bd78:756c:c071)
2020-12-09 11:24:08 +0100urek(~urek@2804:7f1:e10a:7d51:c470:9916:f9e5:aa4) (Ping timeout: 258 seconds)
2020-12-09 11:26:39 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 11:27:14 +0100u0_a298(~user@65.35.205.131)
2020-12-09 11:27:14 +0100ericsagn1(~ericsagne@2405:6580:0:5100:5240:599:f44f:5dee)
2020-12-09 11:28:56 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
2020-12-09 11:30:17 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-09 11:30:28 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-09 11:31:39 +0100guest129`(~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
2020-12-09 11:32:19 +0100xsperry(~as@unaffiliated/xsperry) ()
2020-12-09 11:34:16 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 240 seconds)
2020-12-09 11:35:56 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-09 11:37:53 +0100kuribas(~user@ptr-25vy0i73uopu9zhtdmp.18120a2.ip6.access.telenet.be)
2020-12-09 11:38:38 +0100pthariensflame(~pthariens@2600:6c52:7280:100:2c51:f53e:7c95:7107)
2020-12-09 11:39:00 +0100pthariensflame(~pthariens@2600:6c52:7280:100:2c51:f53e:7c95:7107) (Client Quit)
2020-12-09 11:39:17 +0100shf(~sheaf@2a01:cb19:80cc:7e00:4499:9502:e93c:8bfb)
2020-12-09 11:41:29 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 11:42:15 +0100u0_a298(~user@65.35.205.131)
2020-12-09 11:42:16 +0100hidedagger(~nate@unaffiliated/hidedagger) (Ping timeout: 240 seconds)
2020-12-09 11:42:40 +0100st8less(~st8less@inet-167-224-197-181.isp.ozarksgo.net) (Quit: WeeChat 2.9)
2020-12-09 11:42:59 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 11:44:46 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2020-12-09 11:45:32 +0100__monty__(~toonn@unaffiliated/toonn)
2020-12-09 11:47:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 260 seconds)
2020-12-09 11:47:53 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 11:48:12 +0100shah^(shah@ip98-184-89-2.mc.at.cox.net) ()
2020-12-09 11:48:14 +0100u0_a298(~user@65.35.205.131)
2020-12-09 11:49:19 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2020-12-09 11:51:35 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 11:52:13 +0100u0_a298(~user@65.35.205.131)
2020-12-09 11:52:32 +0100solonarv(~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr)
2020-12-09 11:54:40 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2020-12-09 11:55:08 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-09 11:56:09 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
2020-12-09 11:57:23 +0100Tops2(~Tobias@dyndsl-095-033-092-168.ewe-ip-backbone.de)
2020-12-09 11:58:51 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-09 12:01:26 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:01:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 264 seconds)
2020-12-09 12:02:16 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:04:35 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:05:05 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:05:15 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-09 12:07:00 +0100Martinsos(~user@cpe-188-129-36-113.dynamic.amis.hr)
2020-12-09 12:08:04 +0100LKoen(~LKoen@243.169.9.109.rev.sfr.net)
2020-12-09 12:10:25 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 12:11:24 +0100darjeeling_(~darjeelin@122.245.123.202) (Ping timeout: 256 seconds)
2020-12-09 12:12:46 +0100darjeeling_(~darjeelin@122.245.123.202)
2020-12-09 12:14:05 +0100conal(~conal@64.71.133.70)
2020-12-09 12:14:39 +0100jurses(~jurses@185.190.253.115)
2020-12-09 12:15:07 +0100sQVe(~sQVe@unaffiliated/sqve) (Ping timeout: 258 seconds)
2020-12-09 12:15:56 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 240 seconds)
2020-12-09 12:18:19 +0100jurses(~jurses@185.190.253.115) (Client Quit)
2020-12-09 12:20:15 +0100hans_(~hans@94-214-46-13.cable.dynamic.v4.ziggo.nl)
2020-12-09 12:22:26 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:22:56 +0100hans_(~hans@94-214-46-13.cable.dynamic.v4.ziggo.nl) (Client Quit)
2020-12-09 12:22:57 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:23:41 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 12:25:08 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 12:27:17 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:27:48 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:28:40 +0100sQVe(sQVe@gateway/vpn/mullvad/sqve)
2020-12-09 12:29:17 +0100acidjnk_new(~acidjnk@p200300d0c719ff8621cd498ce205b85b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-09 12:29:56 +0100jedws(~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 12:30:28 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 12:32:39 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 12:36:10 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:36:22 +0100the-smug-one(~user@83-92-112-87-cable.dk.customer.tdc.net)
2020-12-09 12:36:35 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:37:40 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-12-09 12:39:08 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-09 12:40:31 +0100Amras(~Amras@unaffiliated/amras)
2020-12-09 12:43:01 +0100 <the-smug-one> Do you guys think it would be nice to have a journal which finds and summarizes current papers?
2020-12-09 12:43:12 +0100 <the-smug-one> Also does that exist?
2020-12-09 12:45:23 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 12:45:23 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:45:43 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 12:45:58 +0100sQVe(sQVe@gateway/vpn/mullvad/sqve) (Ping timeout: 256 seconds)
2020-12-09 12:46:14 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:46:36 +0100dmiles(~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 240 seconds)
2020-12-09 12:47:48 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-09 12:48:11 +0100 <maerwald> merijn: defining vim plugins in yaml, just what you wanted: https://github.com/itchyny/miv (and written in haskell)
2020-12-09 12:48:29 +0100 <merijn> maerwald: Why you gotta ruin my day like that
2020-12-09 12:48:33 +0100 <maerwald> lol
2020-12-09 12:49:47 +0100dmiles(~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-12-09 12:52:04 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:52:35 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:53:21 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-12-09 12:55:45 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:56:18 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:58:25 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 12:58:41 +0100u0_a298(~user@65.35.205.131)
2020-12-09 12:58:43 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-09 12:58:59 +0100 <merijn> maerwald: If it's any consolation, I'm not just a ghcup luddite, I'm also still using pathogen :p
2020-12-09 12:59:58 +0100urek__(~urek@2804:7f1:e10a:7d51:5950:bd78:756c:c071) (Ping timeout: 258 seconds)
2020-12-09 13:00:13 +0100sQVe(~sQVe@unaffiliated/sqve)
2020-12-09 13:01:49 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 13:02:38 +0100 <aplainzetakind> https://hackage.haskell.org/package/bench produces significantly smaller times than the `time` command. What's the overhead with `time`?
2020-12-09 13:03:07 +0100 <aplainzetakind> Like I'm getting 0.05s with time and 0.02 with bench.
2020-12-09 13:03:34 +0100ph88(~ph88@ip5f5af6cd.dynamic.kabel-deutschland.de)
2020-12-09 13:04:09 +0100 <merijn> "time" does a single run, which is noisey, bench uses criterion which repeats experiments and does statistical analysis to eliminate measurement noise from the equation
2020-12-09 13:04:28 +0100 <ph88> does anyone know the reason behind the historical decision to make a char in single quotes and string in double quotes ? why not type infer a string with only 1 char to be of type char ?
2020-12-09 13:05:03 +0100 <boxscape> how would you write a string literal of length 1 if that were the case?
2020-12-09 13:05:20 +0100 <aplainzetakind> merijn: So it's not cheating to go by the bench number I suppose.
2020-12-09 13:05:28 +0100jrm(~jrm@freebsd/developer/jrm) (Ping timeout: 260 seconds)
2020-12-09 13:05:41 +0100 <merijn> ph88: Because many languages prior to Python had that distinction
2020-12-09 13:05:49 +0100remy^(~remy@unaffiliated/remy/x-3943829) ("Leaving")
2020-12-09 13:05:55 +0100 <merijn> ph88: C, C++, Java (iirc?) all distinguish characters and strings
2020-12-09 13:06:17 +0100 <merijn> The lack of specific character type and allowing both types of quotes is a fairly new thing
2020-12-09 13:06:19 +0100 <boxscape> yeah Java works like C in that regard
2020-12-09 13:06:22 +0100 <ph88> boxscape, the same but it would be infered to be a string depending on how you would use it
2020-12-09 13:06:43 +0100 <yushyin> aplainzetakind: you could also compare it to perf stat -r 1000 $cmd
2020-12-09 13:06:43 +0100 <merijn> ph88: Your question is inverted, and thus unanswerable
2020-12-09 13:06:50 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-12-09 13:06:51 +0100 <boxscape> So like `'c' :: FromChar a => a`
2020-12-09 13:06:57 +0100 <ph88> merijn, do you have an advice which style to use for a new language ?
2020-12-09 13:07:05 +0100 <merijn> ph88: There was no "historical decision" to do that. It just copied what literally every other language at the time did
2020-12-09 13:07:11 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-12-09 13:07:29 +0100 <merijn> Having separate syntax for characters and strings is the right way, imo
2020-12-09 13:07:35 +0100 <ph88> why ?
2020-12-09 13:07:46 +0100jmchael(~jmchael@87.112.60.168)
2020-12-09 13:07:54 +0100 <boxscape> what do you gain by having a single syntax for both?
2020-12-09 13:08:24 +0100 <ph88> that single quotes can be used for strings
2020-12-09 13:08:38 +0100 <merijn> And that's useful because?
2020-12-09 13:08:54 +0100 <ph88> people are used to that from other languages
2020-12-09 13:08:56 +0100 <merijn> What does it let you write that you couldn't write before?
2020-12-09 13:09:21 +0100 <ph88> it's not about ability, rather about style and familiarity
2020-12-09 13:09:25 +0100 <merijn> Well, if you wanna be the same as other languages because people are used to them, why bother making a new one at all? :p
2020-12-09 13:09:51 +0100 <merijn> ph88: As I said, C, C++, and Java, (possibly C# and F# too?) all use the same distinction
2020-12-09 13:10:04 +0100 <ph88> we need a language for a specific domain and strings is one of the first things we need
2020-12-09 13:10:06 +0100 <merijn> I forget what Ocaml does, but I think it does the same
2020-12-09 13:10:22 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 260 seconds)
2020-12-09 13:10:52 +0100 <boxscape> to me it seems a bit weird to have two almost identical ways to write the same literal
2020-12-09 13:10:56 +0100 <ph88> i'm considering just not having a char type and allow single quotes for strings
2020-12-09 13:11:10 +0100 <boxscape> though arguably the same could be said about 5.0 and 5.00
2020-12-09 13:11:16 +0100 <ph88> :P
2020-12-09 13:12:00 +0100 <ph88> in php you also have something funny where ' ' is a string literal, and " " is a string which is interpolated first with variables you drop in there
2020-12-09 13:12:09 +0100 <ph88> not that i plan on doing that :P
2020-12-09 13:12:58 +0100 <[exa]> ph88: you can have an instance for IsString Char
2020-12-09 13:13:25 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-09 13:13:29 +0100 <lortabac> instead of a redundant syntax for strings, I would rather use single quotes for identifiers composed of arbitrary characters, as in Prolog
2020-12-09 13:13:37 +0100 <[exa]> (related: scheme character literals)
2020-12-09 13:13:44 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-09 13:13:52 +0100 <lortabac> so you can have for ex. uppercase record fields
2020-12-09 13:14:14 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-09 13:14:26 +0100 <[exa]> lortabac: that might easily turn to lowercase and uppercase '
2020-12-09 13:14:32 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-09 13:15:02 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-09 13:15:15 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-09 13:15:17 +0100 <lortabac> [exa]: sorry I don't understand
2020-12-09 13:15:35 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 13:15:48 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-09 13:16:03 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-09 13:16:36 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-09 13:18:03 +0100 <[exa]> lortabac: like, if you have uppercase record fields in 'Field', what if I wanted a typename called 'typename' ?
2020-12-09 13:18:31 +0100 <lortabac> you can't
2020-12-09 13:19:07 +0100jrm(~jrm@freebsd/developer/jrm)
2020-12-09 13:19:09 +0100 <lortabac> in Prolog, single-quoted identifiers are equivalent to lowercase ones without quotes
2020-12-09 13:19:38 +0100Entertainment(~entertain@104.246.132.210)
2020-12-09 13:20:31 +0100 <[exa]> yeah well, people will start solving the "you can't" :]
2020-12-09 13:21:19 +0100 <lortabac> there is nothing to solve, 'Foo' belongs to the same namespace as foo
2020-12-09 13:21:37 +0100 <lortabac> Foo belongs to the uppercase namespace
2020-12-09 13:22:43 +0100 <lortabac> unless by "solving" you mean proposing new extensions
2020-12-09 13:22:48 +0100 <[exa]> yeah
2020-12-09 13:23:01 +0100 <lortabac> oh I see :)
2020-12-09 13:23:34 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-09 13:24:58 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.209)
2020-12-09 13:28:22 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 13:28:29 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 13:29:13 +0100u0_a298(~user@65.35.205.131)
2020-12-09 13:29:16 +0100haritz(~hrtz@unaffiliated/haritz) (Ping timeout: 240 seconds)
2020-12-09 13:30:35 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 13:30:47 +0100 <Martinsos> ph88, merijn: Javascript might be a good example of what ph88 is talking about. I wouldn't be so bold to say there is a right way, since both approaches are obviously in use. It makes sense to have separate char and string in languages that are lower level, where that distinction is important. I also personally like having that distinction, since then we can reason about String as an array of Chars, and we can use array methods on it,
2020-12-09 13:30:47 +0100 <Martinsos> but on the other hands, I never had any problems with strings in JS or felt that something is missing. Personally, I would probably go with just string, if language is not much about string manipulation on the low level. If it is, I would consider introducing character. Maybe the easiest way is to start with just string and see how that goes. At least you are keeping things simpler for the user of the language if you have just string
2020-12-09 13:30:47 +0100 <Martinsos> and not string and char. However, I wouldn't allow usage of both single quote and double quote, I feel it just causes confusion and differences in style. If I am coming from Java to your language, I might think that 'a' is different type than "a", while it is not. I would use just double quotes, since those are standard way to describe string literal. That also leave space for introducing character down the line if you figure out you
2020-12-09 13:30:47 +0100 <Martinsos> need it.
2020-12-09 13:31:12 +0100haritz(~hrtz@62.3.70.206)
2020-12-09 13:31:12 +0100haritz(~hrtz@62.3.70.206) (Changing host)
2020-12-09 13:31:12 +0100haritz(~hrtz@unaffiliated/haritz)
2020-12-09 13:33:11 +0100 <maerwald> but then you gotta answer the question what a char is :p
2020-12-09 13:33:38 +0100 <merijn> maerwald: How hard could that be? :D
2020-12-09 13:33:43 +0100 <maerwald> haha...
2020-12-09 13:34:25 +0100conal(~conal@64.71.133.70)
2020-12-09 13:34:47 +0100 <boxscape> if you've figured out what strings are and have a substring function you're probably most of the way there, no?
2020-12-09 13:35:05 +0100 <merijn> boxscape: lol
2020-12-09 13:35:21 +0100 <boxscape> it just seems like figuring out what strings are is just as difficuly
2020-12-09 13:35:24 +0100 <boxscape> s/y/t
2020-12-09 13:35:25 +0100 <merijn> You could spend a decade and not figure out how to properly define "substring"
2020-12-09 13:35:35 +0100 <boxscape> right I suppose that's fair
2020-12-09 13:35:53 +0100 <merijn> boxscape: Figuring out strings is easy "unknown unicode blob that I'm *definitely* not going to touch"
2020-12-09 13:36:05 +0100 <maerwald> there are 3 popular choices already: 1. word8, 2. unicode char point, 3. grapheme
2020-12-09 13:39:01 +0100berberman_(~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
2020-12-09 13:39:48 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-09 13:44:23 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 13:46:16 +0100lotuseater(~user@ip-176-198-181-124.hsi05.unitymediagroup.de) (Ping timeout: 240 seconds)
2020-12-09 13:48:03 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-09 13:49:10 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-09 13:49:13 +0100solonarv(~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr) (Read error: Connection reset by peer)
2020-12-09 13:50:22 +0100ubert(~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-09 13:50:26 +0100solonarv(~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr)
2020-12-09 13:51:07 +0100carlomagno(~cararell@148.87.23.11)
2020-12-09 13:52:34 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 13:53:14 +0100 <boxscape> I like Word7, to be fully ASCII-compliant
2020-12-09 13:53:32 +0100 <merijn> UTF-7 :p
2020-12-09 13:53:36 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-09 13:53:58 +0100 <boxscape> that sounds terrible
2020-12-09 13:54:05 +0100Martinso`(~user@cpe-188-129-36-113.dynamic.amis.hr)
2020-12-09 13:54:05 +0100 <merijn> It exists :p
2020-12-09 13:55:16 +0100 <tomsmeding> TIL about UTF-7 and I already hate it
2020-12-09 13:55:29 +0100 <tomsmeding> is that +base64- encoding really the best they could come up with
2020-12-09 13:55:47 +0100 <merijn> Ok, given a '[Foo]' and 'Foo -> Either Bar Quux' what's the most convenient way to stop at the first Right?
2020-12-09 13:56:48 +0100 <tomsmeding> :t msum
2020-12-09 13:56:49 +0100 <lambdabot> (Foldable t, MonadPlus m) => t (m a) -> m a
2020-12-09 13:57:05 +0100Martinsos(~user@cpe-188-129-36-113.dynamic.amis.hr) (Ping timeout: 258 seconds)
2020-12-09 13:57:05 +0100 <tomsmeding> well, msum . map f
2020-12-09 13:57:26 +0100 <xerox_> or asum
2020-12-09 13:57:28 +0100 <merijn> Well, no
2020-12-09 13:57:41 +0100 <merijn> Because Either isn't an instance of Alternative (and thus not MonadPlus)
2020-12-09 13:57:45 +0100 <merijn> Else I wouldn't be asking :p
2020-12-09 13:58:02 +0100 <xerox_> how sad
2020-12-09 13:58:26 +0100the-smug-one(~user@83-92-112-87-cable.dk.customer.tdc.net) (Ping timeout: 260 seconds)
2020-12-09 13:58:27 +0100 <tomsmeding> my technique of always testing this stuff with Maybe has failed me here
2020-12-09 13:58:28 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
2020-12-09 13:58:36 +0100 <tomsmeding> what do you want on [] though
2020-12-09 13:59:00 +0100 <tomsmeding> or all-Left
2020-12-09 13:59:12 +0100 <tomsmeding> which is of course the reason it's not Alternative :p
2020-12-09 14:00:00 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-12-09 14:00:04 +0100 <xerox_> :t rights
2020-12-09 14:00:08 +0100 <lambdabot> [Either a b] -> [b]
2020-12-09 14:00:12 +0100 <xerox_> I guess?
2020-12-09 14:00:13 +0100 <merijn> Guess I'll just turn Either into Maybe
2020-12-09 14:00:18 +0100 <merijn> xerox_: Doesn't stop at first Right
2020-12-09 14:00:26 +0100 <tomsmeding> safeHead . rights
2020-12-09 14:00:28 +0100 <merijn> xerox_: Still evaluates the whole list
2020-12-09 14:00:34 +0100 <xerox_> :t listToMaybe . rights
2020-12-09 14:00:36 +0100 <lambdabot> [Either a1 a2] -> Maybe a2
2020-12-09 14:00:50 +0100 <merijn> Ah, that might work
2020-12-09 14:01:18 +0100 <xerox_> \o/
2020-12-09 14:01:41 +0100 <scasc> Re UTF-7: that has an absolute valid rationale: "It was originally intended to provide a means of encoding Unicode text for use in Internet E-mail messages that was more efficient than the combination of UTF-8 with quoted-printable."
2020-12-09 14:01:42 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.209) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 14:01:45 +0100 <scasc> Nothing to hate here
2020-12-09 14:02:04 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-09 14:02:37 +0100 <scasc> Of course, it has no practical place in Unicode compliance ever since we have transgressed the range of the BMP.
2020-12-09 14:02:42 +0100 <tomsmeding> fair, though I imagine it could have been even more efficient
2020-12-09 14:03:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 260 seconds)
2020-12-09 14:04:30 +0100st8less(~st8less@2603:a060:11fd:0:7c8c:847e:4223:c614)
2020-12-09 14:04:32 +0100st8less(~st8less@2603:a060:11fd:0:7c8c:847e:4223:c614) (Client Quit)
2020-12-09 14:04:45 +0100st8less(~st8less@2603:a060:11fd:0:7c8c:847e:4223:c614)
2020-12-09 14:05:12 +0100fendor_(~fendor@91.141.3.143.wireless.dyn.drei.com)
2020-12-09 14:05:14 +0100 <scasc> However, UTF-7 was introduced 1997, and the BMP was first transgressed, I think, in 2003 with Unicode 4.0
2020-12-09 14:05:20 +0100Martinso`(~user@cpe-188-129-36-113.dynamic.amis.hr) (Remote host closed the connection)
2020-12-09 14:06:05 +0100Martinsos(~user@cpe-188-129-36-113.dynamic.amis.hr)
2020-12-09 14:06:17 +0100 <tom__> Should you generally strive to avoid partial functions in Haskell? Does this apply to other languages too?
2020-12-09 14:06:40 +0100ubert(~Thunderbi@91.64.116.6)
2020-12-09 14:07:14 +0100 <scasc> (Ah, no, Old Italic was already added in Unicode 3.1, 2001). Still, I think Old Italic or Linear B had little practical relevance in 7-bit transported e-mail even in 2003 :-)
2020-12-09 14:07:36 +0100fendor(~fendor@77.119.128.243.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2020-12-09 14:09:09 +0100 <merijn> tom__: Yes and yes :p
2020-12-09 14:09:55 +0100 <hpc> such as it's even possible, in some languages
2020-12-09 14:10:13 +0100 <tom__> I was explaining this to someone and they said oh well the tests will fail and we will know if its a problem
2020-12-09 14:10:23 +0100 <tom__> So I second guessed myself
2020-12-09 14:10:23 +0100 <wz1000> how do I get a callstack for "No match in record selector"
2020-12-09 14:10:27 +0100zebrag(~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2020-12-09 14:10:37 +0100 <merijn> wz1000: Profiling and +RTS -xc ?
2020-12-09 14:10:39 +0100 <tom__> Whats that quote testing shows the presence not absence of bugs
2020-12-09 14:10:40 +0100Peanut_(~Peanut@2a02:8388:a101:2600:19de:2669:9d43:379d)
2020-12-09 14:10:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr)
2020-12-09 14:11:04 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-09 14:11:26 +0100 <hpc> i prefer the one about obviously not wrong vs not obviously wrong
2020-12-09 14:11:41 +0100 <tom__> haha great
2020-12-09 14:11:55 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-09 14:13:24 +0100ubert(~Thunderbi@91.64.116.6) (Ping timeout: 256 seconds)
2020-12-09 14:15:11 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-12-09 14:15:11 +0100 <scasc> tomsmeding: but I will concede, that an encoding scheme which would have preserved (encoded directly) the range 32-126 (similarly how UTF-8 encodes 0-127 directly) and used only the byte values 0-31 and 127 for the encoding of higher code points would seem nicer. And they did have UTF-8 as prior art, which stems from 1992. So I'll give you that
2020-12-09 14:16:02 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 14:16:14 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
2020-12-09 14:16:43 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-09 14:18:11 +0100 <scasc> I stand corrected, while it was around since 1992 in proprietary systems, UTF-8's RFC is from 1998, that's one year after UTF-7, so no prior art here.
2020-12-09 14:18:55 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-12-09 14:20:51 +0100Tario(~Tario@201.192.165.173)
2020-12-09 14:23:29 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-12-09 14:24:04 +0100u0_a298(~user@65.35.205.131)
2020-12-09 14:25:04 +0100 <tomsmeding> tom__: Dijkstra, supposedly https://www.goodreads.com/quotes/506689-program-testing-can-be-used-to-show-the-presence-of
2020-12-09 14:25:08 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:6050:7054:4f28:3954)
2020-12-09 14:25:36 +0100 <scasc> {- ok, it's a mess, UTF-8 appeared already in 1996 in the appendix of Unicode 2.0 -}
2020-12-09 14:25:41 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 14:25:55 +0100 <tomsmeding> it's all a mess anyway
2020-12-09 14:26:03 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2020-12-09 14:27:05 +0100_deepfire(~user@80.92.100.69)
2020-12-09 14:27:53 +0100perry(7aa1dcc3@122.161.220.195)
2020-12-09 14:28:23 +0100 <tom__> tommeding: Ah cheers
2020-12-09 14:28:48 +0100 <tom__> Formally verifying software shows an absence of bugs right provided the proof is correct.
2020-12-09 14:28:56 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-09 14:29:03 +0100 <tomsmeding> and provided you're proving what you think you're proving
2020-12-09 14:29:24 +0100 <tomsmeding> you might be proving correctness assuming the user doesn't pull the power cord
2020-12-09 14:29:32 +0100 <tomsmeding> ... until they actually do
2020-12-09 14:29:41 +0100 <boxscape> Or a cosmic ray hits your RAM cell
2020-12-09 14:29:42 +0100zgrep(~zgrep@ircpuzzles/2015/april-fools/sixth/zgrep) (Quit: It's a quitter's world.)
2020-12-09 14:29:45 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-12-09 14:29:47 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:6050:7054:4f28:3954) (Ping timeout: 260 seconds)
2020-12-09 14:30:49 +0100 <tomsmeding> also often people prove correctness of a _model_ of the program, not of the program itself; that introduces even more points where you're not proving what you're testing
2020-12-09 14:31:04 +0100 <tom__> Ah yes
2020-12-09 14:31:56 +0100zgrep(~zgrep@ircpuzzles/2015/april-fools/sixth/zgrep)
2020-12-09 14:33:45 +0100u0_a298(~user@65.35.205.131) (Ping timeout: 240 seconds)
2020-12-09 14:34:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Ping timeout: 264 seconds)
2020-12-09 14:37:08 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-09 14:39:01 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-12-09 14:39:56 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-09 14:40:14 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-09 14:40:23 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-09 14:41:03 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 14:41:20 +0100aqd(~aqd@84.20.147.33) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 14:42:18 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-09 14:47:01 +0100Yumasi(~guillaume@static-176-175-104-214.ftth.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-12-09 14:48:02 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-09 14:48:36 +0100Yumasi(~guillaume@40.72.95.92.rev.sfr.net)
2020-12-09 14:48:46 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Quit: leaving)
2020-12-09 14:50:17 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de)
2020-12-09 14:50:28 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-09 14:50:30 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de) (Client Quit)
2020-12-09 14:50:43 +0100urek(~urek@2804:7f1:e10a:4c43:1885:4e54:855e:4b11)
2020-12-09 14:51:38 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-12-09 14:52:20 +0100conal(~conal@64.71.133.70)
2020-12-09 14:54:48 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 14:55:14 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2020-12-09 14:55:22 +0100toorevitimirp(~tooreviti@117.182.181.85) (Remote host closed the connection)
2020-12-09 14:55:53 +0100toorevitimirp(~tooreviti@117.182.181.85)
2020-12-09 14:55:54 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2020-12-09 14:56:17 +0100urek(~urek@2804:7f1:e10a:4c43:1885:4e54:855e:4b11) (Ping timeout: 260 seconds)
2020-12-09 14:57:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-09 14:57:14 +0100hidedagger(~nate@unaffiliated/hidedagger) (Ping timeout: 260 seconds)
2020-12-09 14:57:44 +0100urek(~urek@179.187.120.29.dynamic.adsl.gvt.net.br)
2020-12-09 14:58:20 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 14:58:28 +0100scasc(~szabi@213142096072.public.telering.at) (Quit: Leaving)
2020-12-09 14:59:43 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-09 14:59:54 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
2020-12-09 15:00:09 +0100acidjnk_new(~acidjnk@p200300d0c719ff6609235681fd8d59d5.dip0.t-ipconnect.de)
2020-12-09 15:01:31 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 15:01:57 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 15:02:10 +0100texasmynsted(~texasmyns@212.102.44.36)
2020-12-09 15:03:40 +0100urek__(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45)
2020-12-09 15:04:15 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-09 15:04:28 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 260 seconds)
2020-12-09 15:04:33 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 15:07:25 +0100urek(~urek@179.187.120.29.dynamic.adsl.gvt.net.br) (Ping timeout: 264 seconds)
2020-12-09 15:07:51 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-09 15:07:55 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-09 15:10:28 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 15:13:46 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-09 15:16:03 +0100ClaudiusMaximus(~claude@223.153.198.146.dyn.plus.net)
2020-12-09 15:16:03 +0100ClaudiusMaximus(~claude@223.153.198.146.dyn.plus.net) (Changing host)
2020-12-09 15:16:03 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2020-12-09 15:16:39 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-09 15:17:35 +0100xff0x(~fox@2001:1a81:52d1:1000:e22b:1ad:d895:be4e) (Ping timeout: 258 seconds)
2020-12-09 15:21:17 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-09 15:23:52 +0100gedda(gedda@gateway/vpn/mullvad/gedda) (Ping timeout: 246 seconds)
2020-12-09 15:23:54 +0100xff0x(~fox@2a03:1b20:1:f410:40::1e)
2020-12-09 15:24:00 +0100janne(~janne@punainen.org) (Remote host closed the connection)
2020-12-09 15:24:51 +0100gedda(gedda@gateway/vpn/mullvad/gedda)
2020-12-09 15:25:11 +0100janne(~janne@punainen.org)
2020-12-09 15:27:45 +0100sQVe(~sQVe@unaffiliated/sqve) (Ping timeout: 240 seconds)
2020-12-09 15:27:50 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Read error: Connection reset by peer)
2020-12-09 15:28:07 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 15:28:21 +0100jyang(~jyang@70.35.214.234)
2020-12-09 15:28:45 +0100edwtjo(~edwtjo@fsf/member/edwtjo) (Ping timeout: 240 seconds)
2020-12-09 15:28:46 +0100sQVe(~sQVe@unaffiliated/sqve)
2020-12-09 15:29:08 +0100edwtjo(~edwtjo@fsf/member/edwtjo)
2020-12-09 15:29:41 +0100teardown(~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
2020-12-09 15:29:41 +0100sQVe(~sQVe@unaffiliated/sqve) (Client Quit)
2020-12-09 15:29:43 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 15:30:04 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-12-09 15:30:20 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 15:30:57 +0100 <[exa]> hm, what's the correct alternative for `cabal haddock --hyperlink-source` now?
2020-12-09 15:31:00 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 15:31:20 +0100 <merijn> [exa]: For Hackage? or?
2020-12-09 15:31:49 +0100Peanut_(~Peanut@2a02:8388:a101:2600:19de:2669:9d43:379d) (Quit: Peanut_)
2020-12-09 15:32:09 +0100xff0x(~fox@2a03:1b20:1:f410:40::1e) (Ping timeout: 258 seconds)
2020-12-09 15:32:33 +0100notzmv`(~user@201-43-52-72.dsl.telesp.net.br)
2020-12-09 15:34:07 +0100xff0x(~fox@2001:1a81:52d1:1000:e22b:1ad:d895:be4e)
2020-12-09 15:34:10 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-09 15:34:51 +0100 <AWizzArd> Anyone here who tried the IHP web framework, editing code with support of HLS?
2020-12-09 15:34:56 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-09 15:35:23 +0100jyang(~jyang@70.35.214.234) (Quit: leaving)
2020-12-09 15:35:50 +0100 <[exa]> merijn: well for anything.. I'm getting errors unless I use `cabal v1-haddock --hyperlink-source`..
2020-12-09 15:36:45 +0100Wuzzy(~Wuzzy@p549c9bc8.dip0.t-ipconnect.de)
2020-12-09 15:37:20 +0100 <[exa]> uh noes, it's --haddock-hyperlink-source
2020-12-09 15:37:37 +0100 <[exa]> apologies for rubberducking. :]
2020-12-09 15:37:51 +0100 <merijn> [exa]: I was about to say that it's a haddock option you're using, not cabal ;) And for Hackage you probably want --haddock-for-hackage
2020-12-09 15:37:55 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-09 15:38:07 +0100 <merijn> You can also set "hyperlink: True" in the haddock section of ~/.cabal/config
2020-12-09 15:39:11 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 15:39:41 +0100jyang(~jyang@70.35.214.234)
2020-12-09 15:41:44 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-12-09 15:42:01 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-09 15:43:08 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com) (Remote host closed the connection)
2020-12-09 15:45:15 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-12-09 15:45:53 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com)
2020-12-09 15:47:25 +0100yahb(xsbot@haskell/bot/yahb) (Ping timeout: 240 seconds)
2020-12-09 15:47:31 +0100yahb(xsbot@haskell/bot/yahb)
2020-12-09 15:49:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Remote host closed the connection)
2020-12-09 15:51:52 +0100 <tomsmeding> not hyperlink-source ?
2020-12-09 15:52:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4)
2020-12-09 15:53:05 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-09 15:53:27 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-09 15:56:15 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-12-09 15:56:39 +0100 <merijn> oh, yeah, maybe
2020-12-09 15:56:48 +0100 <merijn> Checking things is for losers :p
2020-12-09 15:57:39 +0100knupfer(~Thunderbi@mue-88-130-61-156.dsl.tropolys.de)
2020-12-09 15:58:13 +0100knupfer(~Thunderbi@mue-88-130-61-156.dsl.tropolys.de) (Client Quit)
2020-12-09 15:58:14 +0100knupfer1(~Thunderbi@200116b824fa450045fef7c51b47d281.dip.versatel-1u1.de)
2020-12-09 15:58:50 +0100toorevitimirp(~tooreviti@117.182.181.85) (Remote host closed the connection)
2020-12-09 15:59:05 +0100berberman_(~berberman@unaffiliated/berberman)
2020-12-09 15:59:12 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-09 15:59:18 +0100toorevitimirp(~tooreviti@117.182.181.85)
2020-12-09 15:59:46 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 256 seconds)
2020-12-09 15:59:49 +0100 <tomsmeding> (That's what my config file contains, commented-out, at least)
2020-12-09 16:00:05 +0100perry(7aa1dcc3@122.161.220.195) (Ping timeout: 245 seconds)
2020-12-09 16:00:07 +0100 <aplainzetakind> If I write something like `let f i = xs !! i; go k l = somethingInvolvingLookinUpInxsViaf in go 0 0`, the list lookups are memoized right?
2020-12-09 16:00:08 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 258 seconds)
2020-12-09 16:00:34 +0100berberman_(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2020-12-09 16:00:36 +0100 <tomsmeding> no you have to explicitly make a shared Data.Map or array or something
2020-12-09 16:00:37 +0100knupfer1knupfer
2020-12-09 16:00:40 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
2020-12-09 16:00:52 +0100 <tomsmeding> values are memoised, function invocations aren't
2020-12-09 16:01:02 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-09 16:02:31 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2020-12-09 16:02:59 +0100 <aplainzetakind> How about functions-as-values? i.e., let f = (xs !!) in ...
2020-12-09 16:03:06 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-09 16:03:44 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-09 16:04:23 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-09 16:05:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 264 seconds)
2020-12-09 16:05:39 +0100 <aplainzetakind> OK, I'm reading the answer here (unless it's obsolete somehow) https://stackoverflow.com/questions/11466284/how-is-this-fibonacci-function-memoized
2020-12-09 16:05:39 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-12-09 16:08:08 +0100nickr(~nickr@185.204.1.185)
2020-12-09 16:11:06 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 16:13:15 +0100jchia__(~jchia@58.32.37.146)
2020-12-09 16:14:11 +0100Tario(~Tario@201.192.165.173)
2020-12-09 16:16:06 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-12-09 16:20:34 +0100conal_(~conal@66.115.157.103)
2020-12-09 16:20:45 +0100ent(entgod@kapsi.fi) (Ping timeout: 240 seconds)
2020-12-09 16:20:52 +0100ent(entgod@kapsi.fi)
2020-12-09 16:21:30 +0100mrchampion(~mrchampio@38.18.109.23)
2020-12-09 16:24:17 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-09 16:24:35 +0100shekhar(2a6f0317@42.111.3.23)
2020-12-09 16:25:35 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 16:26:41 +0100liszt_(sid336875@gateway/web/irccloud.com/x-porgwtafmjhpigsw) ()
2020-12-09 16:27:16 +0100liszt(sid336875@gateway/web/irccloud.com/x-iluopyocuesnknfn)
2020-12-09 16:28:19 +0100gxt__(~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
2020-12-09 16:29:05 +0100gxt__(~gxt@gateway/tor-sasl/gxt)
2020-12-09 16:29:58 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 256 seconds)
2020-12-09 16:33:08 +0100phasespace(~sar@80-89-47-117.inet.signal.no) (Ping timeout: 272 seconds)
2020-12-09 16:40:44 +0100darjeeling_(~darjeelin@122.245.123.202) (Ping timeout: 272 seconds)
2020-12-09 16:41:01 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-12-09 16:43:04 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds)
2020-12-09 16:43:07 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-09 16:43:23 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 16:44:04 +0100 <AWizzArd> I am looking at a code example from the IHP web framework: buildPost post = post |> fill @["title","body"]
2020-12-09 16:44:17 +0100 <AWizzArd> What is that @ doing there?
2020-12-09 16:44:33 +0100xsperry(~as@unaffiliated/xsperry)
2020-12-09 16:44:44 +0100 <AWizzArd> On the left-hand side it can be used for pattern matching. But in front of a list?
2020-12-09 16:44:58 +0100johnw(~johnw@haskell/developer/johnw)
2020-12-09 16:46:18 +0100SanchayanMaity(~Sanchayan@106.200.195.64) (Quit: SanchayanMaity)
2020-12-09 16:47:55 +0100 <merijn> > let x @ y = x + y in 2 @ 3 -- ?
2020-12-09 16:47:58 +0100 <lambdabot> <hint>:1:24: error: <hint>:1:24: error: parse error on input ‘@’
2020-12-09 16:48:06 +0100 <merijn> hmm, that's not allowed?
2020-12-09 16:48:13 +0100 <merijn> No clue, then :p
2020-12-09 16:50:05 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 16:50:32 +0100 <lortabac> TypeApplications?
2020-12-09 16:50:48 +0100 <merijn> oh, maybe
2020-12-09 16:50:58 +0100 <lortabac> I have no idea, I'm just guessing
2020-12-09 16:51:48 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2020-12-09 16:53:10 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-09 16:53:28 +0100 <AWizzArd> The extensions that are activated by default are: OverloadedStrings, NoImplicitPrelude, ImplicitParams, Rank2Types, NamedFieldPuns, TypeSynonymInstances, FlexibleInstances, DisambiguateRecordFields, DuplicateRecordFields, OverloadedLabels, FlexibleContexts, DataKinds
2020-12-09 16:53:40 +0100 <AWizzArd> Could one of those have introduced the @ syntax?
2020-12-09 16:53:59 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-09 16:54:27 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 16:55:20 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 16:55:32 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
2020-12-09 16:56:36 +0100 <tomsmeding> aplainzetakind: that answer seems to be a nice explanation
2020-12-09 16:56:53 +0100 <tomsmeding> the compiler doesn't memoise, it lazily evaluates global constants
2020-12-09 16:57:08 +0100 <solonarv> AWizzArd: this is a type application
2020-12-09 16:57:18 +0100 <tomsmeding> and local constants that don't depend on anything local can get lifted to global constants, which results in something that looks like memoisation
2020-12-09 16:58:29 +0100darjeeling_(~darjeelin@122.245.123.202)
2020-12-09 16:58:30 +0100 <tomsmeding> AWizzArd: TypeApplications is not in there, but the thing you posted looks very much like type applications
2020-12-09 16:58:41 +0100 <tomsmeding> where the type in this case is a DataKinds lifted type ["title","body"]
2020-12-09 16:59:39 +0100 <tomsmeding> (well, "lifted type" is inaccurate terminology; it's a value lifted _to_ a type)
2020-12-09 17:00:27 +0100Rudd0(~Rudd0@185.189.115.108)
2020-12-09 17:01:29 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
2020-12-09 17:02:01 +0100 <AWizzArd> Okay, so that `fill` is a method and via @ we can tell GHC which instance we want to call here.
2020-12-09 17:03:17 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-12-09 17:05:28 +0100 <tomsmeding> well, it's a value, not necessarily a method
2020-12-09 17:05:40 +0100 <dminuoso> AWizzArd: Without seing the code, Im guessing you're supplying a type level list with type level symbols
2020-12-09 17:05:46 +0100 <dminuoso> So I suspect this means
2020-12-09 17:05:53 +0100 <tomsmeding> % mempty @String
2020-12-09 17:05:54 +0100 <yahb> tomsmeding: ""
2020-12-09 17:06:04 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 258 seconds)
2020-12-09 17:06:56 +0100 <dminuoso> % fill :: forall (s :: [Symbol]). Int; fill = undefined
2020-12-09 17:06:56 +0100 <yahb> dminuoso:
2020-12-09 17:07:10 +0100 <dminuoso> % fill @["foo", "bar"]
2020-12-09 17:07:10 +0100 <yahb> dminuoso: *** Exception: Prelude.undefined; CallStack (from HasCallStack):; error, called at libraries/base/GHC/Err.hs:79:14 in base:GHC.Err; undefined, called at <interactive>:145:45 in interactive:Ghci76
2020-12-09 17:07:15 +0100 <dminuoso> So we could do something like
2020-12-09 17:07:46 +0100 <dminuoso> oh well, you get the idea. You can use GHC.TypeLits and type families to work on the list, and eventually pull the symbols back into value world
2020-12-09 17:07:57 +0100 <dminuoso> (or alternatively MPTC+fundeps instead of tyfams)
2020-12-09 17:08:01 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-09 17:09:25 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-12-09 17:09:47 +0100 <dminuoso> % type family TyLen (s :: [a]) where TyLen (x ': xs) = 1 + TyLen xs; TyLen '[] = 0
2020-12-09 17:09:47 +0100 <yahb> dminuoso:
2020-12-09 17:10:28 +0100 <dminuoso> % :set -XScopedTypeVariables
2020-12-09 17:10:29 +0100 <yahb> dminuoso:
2020-12-09 17:10:44 +0100 <srk> > (pure Nothing) <|> (pure $ Just "fine")
2020-12-09 17:10:47 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-vhcgctdtktfskqbh)
2020-12-09 17:10:47 +0100 <lambdabot> error:
2020-12-09 17:10:47 +0100 <lambdabot> • Ambiguous type variable ‘f0’ arising from a use of ‘show_M201537395400...
2020-12-09 17:10:47 +0100 <lambdabot> prevents the constraint ‘(Show
2020-12-09 17:11:09 +0100 <srk> /o\ is there something like asum for [IO (Maybe a)]?
2020-12-09 17:11:25 +0100 <dminuoso> srk: asum with MaybeT?
2020-12-09 17:11:36 +0100 <merijn> srk: "asum . map MaybeT"? :p
2020-12-09 17:11:51 +0100 <srk> thanks :)
2020-12-09 17:15:46 +0100lyxia(~lyxia@poisson.chat)
2020-12-09 17:16:44 +0100 <dminuoso> % fill :: Proxy '[Symbol] -> Integer; fill (Proxy :: Proxy l) = natVal (Proxy @(TyLen l))
2020-12-09 17:16:44 +0100 <yahb> dminuoso:
2020-12-09 17:16:59 +0100 <dminuoso> % fill (Proxy @["foo", "bar"]) -- AWizzArd
2020-12-09 17:16:59 +0100 <yahb> dminuoso: ; <interactive>:170:7: error:; * Couldn't match type '["bar"] with '[]; Expected type: Proxy '[Symbol]; Actual type: Proxy '["foo", "bar"]; * In the first argument of `fill', namely `(Proxy @["foo", "bar"])'; In the expression: fill (Proxy @["foo", "bar"]); In an equation for `it': it = fill (Proxy @["foo", "bar"])
2020-12-09 17:17:07 +0100 <dminuoso> Uhh
2020-12-09 17:17:08 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-09 17:20:05 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-09 17:20:31 +0100 <dminuoso> Ah here we go
2020-12-09 17:20:33 +0100 <dminuoso> % fill :: forall (s :: [Symbol]) (n :: Nat). (KnownNat n, n ~ TyLen s) => Integer; fill = natVal (Proxy @n)
2020-12-09 17:20:33 +0100 <yahb> dminuoso:
2020-12-09 17:20:35 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-09 17:20:42 +0100 <dminuoso> % fill @["foo", "bar"] -- AWizzArd
2020-12-09 17:20:42 +0100 <yahb> dminuoso: 2
2020-12-09 17:21:01 +0100acidjnk_new(~acidjnk@p200300d0c719ff6609235681fd8d59d5.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2020-12-09 17:21:25 +0100 <dminuoso> So this is a type leve list, with type level strings, and it's very likely consumed with type families (or fundeps) like in my examples.
2020-12-09 17:21:47 +0100 <dminuoso> This is how much of servant works for example
2020-12-09 17:22:03 +0100 <dminuoso> (They dont use type applications but a Proxy instead, but that's just different ergonomics)
2020-12-09 17:23:03 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-12-09 17:23:58 +0100caubert(~mrbentari@207.246.80.112) (Quit: WeeChat 2.9)
2020-12-09 17:24:20 +0100heatsink(~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
2020-12-09 17:24:34 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
2020-12-09 17:24:43 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-09 17:26:36 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 240 seconds)
2020-12-09 17:29:16 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com)
2020-12-09 17:29:25 +0100mrbentarikau(~mrbentari@207.246.80.112)
2020-12-09 17:29:41 +0100mrbentarikaucaubert
2020-12-09 17:30:24 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-09 17:31:04 +0100plutoniix(~q@ppp-27-55-74-157.revip3.asianet.co.th)
2020-12-09 17:35:50 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 17:36:23 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-09 17:36:34 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
2020-12-09 17:36:42 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 17:40:39 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
2020-12-09 17:41:32 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-12-09 17:41:35 +0100Feuermagier(~Feuermagi@213.178.26.41)
2020-12-09 17:44:34 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-09 17:44:57 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
2020-12-09 17:44:57 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-09 17:46:19 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-12-09 17:46:42 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 258 seconds)
2020-12-09 17:51:35 +0100shekhar(2a6f0317@42.111.3.23) (Remote host closed the connection)
2020-12-09 17:52:30 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Remote host closed the connection)
2020-12-09 17:52:39 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Quit: Leaving)
2020-12-09 17:52:54 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-09 17:53:48 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Client Quit)
2020-12-09 17:54:13 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-09 17:55:54 +0100 <dmj`> hot take, GHC’s RTS settings are optimized for a compiler, not a long-running networked service
2020-12-09 17:56:45 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-12-09 17:56:54 +0100 <merijn> How so?
2020-12-09 17:56:54 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-09 17:57:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-09 17:57:21 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-09 17:57:34 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-09 17:58:48 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
2020-12-09 17:58:49 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-09 17:59:08 +0100 <dmj`> merijn: the idle time GC runs every 0.3s, the assumption is that productive work is constantly happening
2020-12-09 17:59:10 +0100divVerent(~divVerent@xonotic/core-team/divVerent) (Quit: WeeChat 1.6)
2020-12-09 17:59:19 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-12-09 17:59:25 +0100 <dmj`> merijn: which would be true in a compiler
2020-12-09 17:59:27 +0100xff0x(~fox@2001:1a81:52d1:1000:e22b:1ad:d895:be4e) (Ping timeout: 260 seconds)
2020-12-09 17:59:39 +0100 <dmj`> merijn: but not necessarily true in a no traffic web server
2020-12-09 17:59:49 +0100 <merijn> dmj`: Well, is that actually negatively impacting the performance, though?
2020-12-09 17:59:55 +0100notzmv`(~user@201-43-52-72.dsl.telesp.net.br) (Read error: No route to host)
2020-12-09 17:59:57 +0100 <merijn> I'm not sure how it would
2020-12-09 17:59:59 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-09 18:00:06 +0100 <dmj`> merijn: major GCs pause program execution
2020-12-09 18:00:08 +0100knupfer(~Thunderbi@200116b824fa450045fef7c51b47d281.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-09 18:00:16 +0100 <dolio> But your premise is that no work is happening.
2020-12-09 18:00:16 +0100knupfer(~Thunderbi@200116b824fa45007cc3c4f6f6cecd9b.dip.versatel-1u1.de)
2020-12-09 18:00:19 +0100xff0x(~fox@2001:1a81:52d1:1000:31d2:4099:6990:f516)
2020-12-09 18:00:20 +0100 <dmj`> it's just it could be every 10s, why busy wait
2020-12-09 18:00:29 +0100 <dolio> So it's pausing something that isn't doing anything.
2020-12-09 18:00:39 +0100 <merijn> ^^^ that
2020-12-09 18:00:49 +0100divVerent(~divVerent@xonotic/core-team/divVerent)
2020-12-09 18:00:58 +0100 <dmj`> dolio: true, but why keep checking every 0.3s if you're doing nothing for hours potentially
2020-12-09 18:01:16 +0100 <c_wraith> my experience is that 0.3s is pretty good for an http server
2020-12-09 18:01:26 +0100 <merijn> dmj`: Because engineering not too is 1) extra work and 2) negatively impacts all other code
2020-12-09 18:01:31 +0100 <dmj`> It's important to run the GC to so finalizers get called, so I think -I0 could be be bad actually
2020-12-09 18:01:36 +0100 <dmj`> so*
2020-12-09 18:01:38 +0100son0p(~son0p@181.136.122.143)
2020-12-09 18:01:45 +0100 <merijn> dmj`: Why invest work in doing something with no actual benefit?
2020-12-09 18:02:12 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-xgwlefwsyyfjewad)
2020-12-09 18:02:15 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
2020-12-09 18:02:18 +0100 <merijn> Like, concretely, what is improved by not running it every 0.3s?
2020-12-09 18:02:19 +0100 <c_wraith> It's long enough that it's unlikely to be idle for a whole 0.3s when it's getting traffic, but short enough that it doesn't need a long break to trigger
2020-12-09 18:02:21 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-09 18:02:40 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de)
2020-12-09 18:02:42 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-12-09 18:03:07 +0100 <c_wraith> The settings that really make a difference for web servers are the various generation sizes - especially the nursery size
2020-12-09 18:03:26 +0100 <dmj`> merijn: why run anything every 0.3s if you don't have to, 0.3s is an implicit assumption
2020-12-09 18:03:43 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
2020-12-09 18:04:12 +0100Codaraxis__(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-12-09 18:04:47 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-12-09 18:04:49 +0100 <merijn> dmj`: Why? "because not having complex heuristics simplifies engineering"
2020-12-09 18:05:06 +0100tlaxkit(~kvirc@89.35.63.181)
2020-12-09 18:05:08 +0100 <c_wraith> the dream is that you get your nursery size up to a point where most requests/responses fit entirely inside the nursery.
2020-12-09 18:05:36 +0100 <merijn> You can justify investing effort and/or having a more complex solution IF there is a benefit
2020-12-09 18:05:59 +0100 <merijn> If there is no benefit, then why bother investing either time or complexity budget into changing the status quo
2020-12-09 18:07:06 +0100notzmv(~user@unaffiliated/zmv)
2020-12-09 18:07:15 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 265 seconds)
2020-12-09 18:07:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ac90:c0e:32f4:a9c4) (Remote host closed the connection)
2020-12-09 18:07:59 +0100son0p(~son0p@181.136.122.143)
2020-12-09 18:08:47 +0100loller_(uid358106@gateway/web/irccloud.com/x-rqmoabancwauhdqz)
2020-12-09 18:08:52 +0100cnmne[m](cnmnematri@gateway/shell/matrix.org/x-hcmqjrvmyelkqweq)
2020-12-09 18:08:55 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
2020-12-09 18:09:13 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 264 seconds)
2020-12-09 18:09:13 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2020-12-09 18:09:21 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-12-09 18:09:44 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-12-09 18:09:57 +0100thunderrd(~thunderrd@183.182.110.8) (Ping timeout: 246 seconds)
2020-12-09 18:10:34 +0100 <merijn> It's good to have a quantifiable reason for spending time/effort besides "it offends my sensibilities"
2020-12-09 18:11:01 +0100 <dolio> Yeah, the argument seems entirely aesthetic so far.
2020-12-09 18:11:36 +0100darjeeling_(~darjeelin@122.245.123.202) (Ping timeout: 265 seconds)
2020-12-09 18:12:07 +0100 <dolio> Also, what about the situations where the web server actually is doing something? Is 10s going to be good enough during those periods?
2020-12-09 18:12:22 +0100 <merijn> Like, I doubt the actual GC on an idle server (especially if it's apparently idle for hours at a time) is going to have a significant cost in CPU time
2020-12-09 18:12:33 +0100 <dolio> Also, why optimize for this hypothetical web server instead of all the things that 0.3s is good for?
2020-12-09 18:13:30 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 256 seconds)
2020-12-09 18:13:55 +0100knupfer(~Thunderbi@200116b824fa45007cc3c4f6f6cecd9b.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
2020-12-09 18:16:17 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-12-09 18:19:39 +0100skiold_(~skiold@gateway/tor-sasl/skiold) (Remote host closed the connection)
2020-12-09 18:20:04 +0100skiold_(~skiold@gateway/tor-sasl/skiold)
2020-12-09 18:21:14 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
2020-12-09 18:22:40 +0100thunderrd(~thunderrd@183.182.113.8)
2020-12-09 18:23:57 +0100robotmay(~beepboop@2001:8b0:7af0:2580:9de5:991:bf07:8253) (Remote host closed the connection)
2020-12-09 18:24:14 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 18:25:13 +0100robotmay(~beepboop@2001:8b0:7af0:2580:806d:1b3a:2bd5:8efb)
2020-12-09 18:26:06 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2020-12-09 18:26:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 18:26:51 +0100 <dmj`> I'm not advocating for optimizing for a networked service, but I'm making a point that not all workloads are created equal and 0.3s has an implicit assumption about a particular workload
2020-12-09 18:28:07 +0100darjeeling_(~darjeelin@122.245.123.202)
2020-12-09 18:28:25 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-12-09 18:29:47 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
2020-12-09 18:30:08 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1)
2020-12-09 18:30:21 +0100jrm(~jrm@freebsd/developer/jrm) (Quit: ciao)
2020-12-09 18:30:24 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 18:31:20 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-12-09 18:31:34 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 18:33:37 +0100son0p(~son0p@181.136.122.143) (Remote host closed the connection)
2020-12-09 18:34:47 +0100 <merijn> dmj`: Does it though? Because it sounds like it works fine for your workload
2020-12-09 18:35:24 +0100 <dmj`> merijn: If every workload was the same why allow any customization of GC settings?
2020-12-09 18:35:52 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-12-09 18:35:54 +0100 <merijn> dmj`: I'm not saying everything's the same. I'm just not seeing how this setting isn't working for your workload?
2020-12-09 18:36:08 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 18:36:15 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2020-12-09 18:36:20 +0100 <dmj`> merijn: it's too frequent
2020-12-09 18:36:36 +0100 <merijn> Why?
2020-12-09 18:36:45 +0100 <merijn> What negative impact does frequency have?
2020-12-09 18:36:54 +0100 <dmj`> It's not negative, its just not necessary
2020-12-09 18:37:02 +0100 <dmj`> why busy wait?
2020-12-09 18:37:03 +0100 <merijn> Beyond offending your aesthetic
2020-12-09 18:37:12 +0100 <dmj`> this isn't an aesthetic issue
2020-12-09 18:37:13 +0100 <merijn> dmj`: I already gave arguments for that
2020-12-09 18:37:17 +0100 <dmj`> as did I
2020-12-09 18:37:25 +0100 <merijn> Anyway, dinner
2020-12-09 18:37:29 +0100 <dmj`> ciao
2020-12-09 18:38:39 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Remote host closed the connection)
2020-12-09 18:39:49 +0100 <Uniaika> 9
2020-12-09 18:39:52 +0100 <Uniaika> eh
2020-12-09 18:41:16 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 240 seconds)
2020-12-09 18:42:11 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 18:44:12 +0100jrm(~jrm@freebsd/developer/jrm)
2020-12-09 18:44:18 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
2020-12-09 18:44:56 +0100 <koz_> Uniaika: 9?
2020-12-09 18:45:15 +0100 <Uniaika> irssi fail, koz_
2020-12-09 18:45:23 +0100phasespace(~sar@89-162-33-21.fiber.signal.no)
2020-12-09 18:45:26 +0100 <koz_> Ah.
2020-12-09 18:46:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Ping timeout: 264 seconds)
2020-12-09 18:56:31 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-09 18:57:27 +0100divVerent(~divVerent@xonotic/core-team/divVerent) (Quit: WeeChat 1.6)
2020-12-09 18:57:51 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-pjysrbvdonubrfni)
2020-12-09 18:58:05 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 18:58:25 +0100 <scasc> Is there a function in some standard (or widespread) library which is essentially a more efficient version of \c x -> (takeWhile c x, dropWhile c x), not traversing the list twice?
2020-12-09 18:58:45 +0100 <dolio> span
2020-12-09 18:59:17 +0100shf(~sheaf@2a01:cb19:80cc:7e00:4499:9502:e93c:8bfb) (Read error: Connection reset by peer)
2020-12-09 18:59:52 +0100shf(~sheaf@2a01:cb19:80cc:7e00:8914:36aa:fb38:e6af)
2020-12-09 19:01:03 +0100urek(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45)
2020-12-09 19:01:03 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-09 19:01:27 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-09 19:03:49 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 264 seconds)
2020-12-09 19:04:07 +0100 <scasc> Thanks! And I don't know why I put "[a] -> ([a],[a])" into Hoogle, rather than "(a -> Bool) -> [a] -> ([a],[a])"
2020-12-09 19:04:15 +0100dnlkrgr(~dnlkrgr@2a02:8070:a193:c900:f9d7:51d:a0ec:3ac2)
2020-12-09 19:04:23 +0100urek__(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45) (Ping timeout: 272 seconds)
2020-12-09 19:06:11 +0100 <fresheyeball> So I have some code using GHCJS.DOM
2020-12-09 19:06:17 +0100 <fresheyeball> and it compiles with GHC
2020-12-09 19:06:21 +0100 <fresheyeball> but in GHCJS it does not
2020-12-09 19:06:48 +0100 <fresheyeball> the culprit is `addListener` which takes a "SaferEventListener" on the GHC side, and an "EventListener" on the GHCJS side
2020-12-09 19:06:54 +0100Yumasi(~guillaume@40.72.95.92.rev.sfr.net) (Ping timeout: 260 seconds)
2020-12-09 19:08:56 +0100scasc(~szabi@213142096072.public.telering.at) (Ping timeout: 272 seconds)
2020-12-09 19:10:50 +0100dnlkrgr(~dnlkrgr@2a02:8070:a193:c900:f9d7:51d:a0ec:3ac2) (Ping timeout: 264 seconds)
2020-12-09 19:11:20 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-12-09 19:11:36 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 19:12:04 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-09 19:13:51 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
2020-12-09 19:14:37 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
2020-12-09 19:14:41 +0100texasmyn_(~texasmyns@097-085-244-180.biz.spectrum.com)
2020-12-09 19:14:50 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-09 19:15:53 +0100ericsagn1(~ericsagne@2405:6580:0:5100:5240:599:f44f:5dee) (Ping timeout: 260 seconds)
2020-12-09 19:15:59 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-12-09 19:16:12 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 19:17:16 +0100texasmynsted(~texasmyns@212.102.44.36) (Ping timeout: 240 seconds)
2020-12-09 19:17:33 +0100divVerent(~divVerent@xonotic/core-team/divVerent)
2020-12-09 19:17:33 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-12-09 19:17:50 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-09 19:22:03 +0100thunderrd(~thunderrd@183.182.113.8) (Ping timeout: 246 seconds)
2020-12-09 19:22:39 +0100conal_(~conal@66.115.157.103) (Quit: Computer has gone to sleep.)
2020-12-09 19:22:45 +0100texasmyn_(~texasmyns@097-085-244-180.biz.spectrum.com) (Ping timeout: 240 seconds)
2020-12-09 19:23:02 +0100MOSCOS(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-09 19:23:03 +0100chrpape(~user@2a01:4f9:c010:632d::1) (Remote host closed the connection)
2020-12-09 19:23:03 +0100chrpape(~user@2a01:4f9:c010:632d::1)
2020-12-09 19:23:30 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-09 19:23:51 +0100howdoi(uid224@gateway/web/irccloud.com/x-cazclqzweogdjlbq)
2020-12-09 19:25:21 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Remote host closed the connection)
2020-12-09 19:26:23 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 19:26:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Remote host closed the connection)
2020-12-09 19:28:00 +0100ericsagn1(~ericsagne@2405:6580:0:5100:e26e:cf9:1dd6:9615)
2020-12-09 19:28:21 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 19:28:27 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-12-09 19:28:47 +0100invaser(~Thunderbi@31.148.23.125)
2020-12-09 19:30:01 +0100 <fresheyeball> I resorted to CPP
2020-12-09 19:30:03 +0100 <fresheyeball> Grrrr
2020-12-09 19:30:17 +0100Uniaikaoffers fresheyeball a mug of hot chocolate and a blanket
2020-12-09 19:30:25 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-12-09 19:30:58 +0100conal(~conal@64.71.133.70)
2020-12-09 19:31:25 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 19:32:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-12-09 19:34:03 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Quit: Lost terminal)
2020-12-09 19:34:44 +0100thunderrd(~thunderrd@183.182.110.8)
2020-12-09 19:36:44 +0100darjeeling_(~darjeelin@122.245.123.202) (Ping timeout: 256 seconds)
2020-12-09 19:38:30 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
2020-12-09 19:38:56 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-12-09 19:40:13 +0100urek__(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45)
2020-12-09 19:40:22 +0100fendor_fendor
2020-12-09 19:40:32 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Remote host closed the connection)
2020-12-09 19:40:34 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-12-09 19:41:10 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-09 19:42:16 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 19:43:08 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 19:43:19 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Remote host closed the connection)
2020-12-09 19:43:39 +0100urek(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45) (Ping timeout: 272 seconds)
2020-12-09 19:44:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 19:46:09 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-09 19:46:30 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-09 19:48:53 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-09 19:49:07 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Ping timeout: 260 seconds)
2020-12-09 19:50:06 +0100darjeeling_(~darjeelin@122.245.123.202)
2020-12-09 19:50:25 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 240 seconds)
2020-12-09 19:51:20 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-12-09 19:51:22 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-09 19:51:36 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 19:52:03 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-klvbiusyrufiamvx)
2020-12-09 19:53:30 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-09 19:55:10 +0100 <justsomeguy> I want to write a test that checks if something is a type constructor or data constructor. Is there any way to do that without using GHCi?
2020-12-09 19:55:37 +0100 <Uniaika> hmm, probably with multiline mode? :set +m ?
2020-12-09 19:55:52 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-12-09 19:56:05 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 19:57:22 +0100 <justsomeguy> The thing is that I want to automate the test, so I'd like to avoid ghci, or possibly script the ghci session.
2020-12-09 19:57:52 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2020-12-09 19:58:13 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:d8c3:612c:6813:238e) (Ping timeout: 272 seconds)
2020-12-09 19:58:38 +0100toorevitimirp(~tooreviti@117.182.181.85) (Remote host closed the connection)
2020-12-09 19:58:59 +0100lofo899(~florian@84-115-12-249.cable.dynamic.surfer.at)
2020-12-09 19:59:45 +0100 <tomsmeding> justsomeguy: https://hackage.haskell.org/package/hint exists, but also, why exactly do you want to test that? Is it generated code?
2020-12-09 20:01:49 +0100 <Uniaika> yes, could you please tell us a bit more about your usecase?
2020-12-09 20:01:49 +0100urek(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45)
2020-12-09 20:02:19 +0100 <justsomeguy> tomsmeding: I'm trying to write test cases for the homework I'm doing in Haskell Programming from First Principles. It has a lot of exercises that require querying things in GHCi.
2020-12-09 20:02:43 +0100 <justsomeguy> I just found this SO post about using expect to automate ghci, so I think I'm going to give that a shot. https://stackoverflow.com/questions/47735327/is-there-a-way-to-script-a-ghci-session
2020-12-09 20:03:05 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2020-12-09 20:03:24 +0100 <tomsmeding> If you want a low-tech solution, then yes that's probably a fine option
2020-12-09 20:03:32 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-09 20:03:46 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:f4bb:54f5:d69c:a304)
2020-12-09 20:04:07 +0100 <tomsmeding> especially if it's just for yourself
2020-12-09 20:04:18 +0100 <tomsmeding> using something like the 'hint' library I linked would be for a more production-like setting
2020-12-09 20:04:33 +0100urek__(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45) (Ping timeout: 272 seconds)
2020-12-09 20:04:52 +0100 <justsomeguy> Is there also a way to run a .hs file as if it were a script? ... Using hlint is an interesting idea.
2020-12-09 20:05:25 +0100 <tomsmeding> not hlint, hint ;)
2020-12-09 20:05:36 +0100 <Rembane> justsomeguy: ghci < Bla.hs
2020-12-09 20:05:40 +0100 <Rembane> ...I think. :D
2020-12-09 20:06:03 +0100 <geekosaur> runghc
2020-12-09 20:06:30 +0100 <geekosaur> although that's not so much "script"
2020-12-09 20:06:41 +0100 <scasc> Now this: I use the hexadecimal literal in ghci all right:
2020-12-09 20:06:46 +0100 <scasc> > 0xFFFF
2020-12-09 20:06:49 +0100 <lambdabot> 65535
2020-12-09 20:06:58 +0100 <scasc> why doesn't
2020-12-09 20:07:02 +0100urek__(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45)
2020-12-09 20:07:02 +0100 <scasc> > read "0xFFFF"
2020-12-09 20:07:04 +0100 <scasc> work?
2020-12-09 20:07:05 +0100 <lambdabot> *Exception: Prelude.read: no parse
2020-12-09 20:07:30 +0100 <xerox_> > read "0xFFFF" :: Int
2020-12-09 20:07:33 +0100 <lambdabot> 65535
2020-12-09 20:07:34 +0100delYsid(~user@unaffiliated/delysid)
2020-12-09 20:08:31 +0100 <tomsmeding> related to the scripting question from just now, cabal apparently has shebang support: https://github.com/haskell/cabal/pull/5483
2020-12-09 20:08:34 +0100 <tomsmeding> but where are the docs? :p
2020-12-09 20:08:54 +0100 <justsomeguy> Can I insert ghci commands like :type <expression> or get exceptions like "error: Data constructor not in scope:" if I use runghc?
2020-12-09 20:09:02 +0100 <justsomeguy> (I'm guessing not..)
2020-12-09 20:09:15 +0100 <tomsmeding> no, runghc just transparently compiles and runs your file
2020-12-09 20:09:33 +0100 <justsomeguy> Ok. Still good to know.
2020-12-09 20:09:37 +0100urek(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45) (Ping timeout: 272 seconds)
2020-12-09 20:09:55 +0100 <scasc> xerox: thanks. At the same time, in the actual code I did have the annotation, still returning with "no parse" -- but that will be something else, writing a compliant readsPrec seems hard :-)
2020-12-09 20:10:31 +0100 <xerox_> scasc: I'm guessing it wasn't exactly that then if it couldn't parse it
2020-12-09 20:11:47 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-09 20:12:06 +0100 <scasc> Yeah, I'm pretty sure I messed up something in my readsPrec definition: it reads a simple value no problems `read "myrepr" :: MyType`, but I get 'no parse' with `read "[myrep1, myrep2]" :: [MyType]`.
2020-12-09 20:12:24 +0100 <scasc> I think I messed up the readsPrec somehow.
2020-12-09 20:12:27 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 20:13:16 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
2020-12-09 20:13:24 +0100lofo899(~florian@84-115-12-249.cable.dynamic.surfer.at) (Quit: leaving)
2020-12-09 20:14:10 +0100crblmr(~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
2020-12-09 20:15:28 +0100lxsameer(lxsameer@gateway/vpn/protonvpn/lxsameer) (Quit: WeeChat 2.9)
2020-12-09 20:15:33 +0100tomsmedingalways uses Debug.Trace.trace liberally when debugging haskell code
2020-12-09 20:16:24 +0100Rembanetoo
2020-12-09 20:17:44 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
2020-12-09 20:19:15 +0100pbgc(~pbgc@78.15.103.87.rev.vodafone.pt)
2020-12-09 20:20:33 +0100crblmr(~carbolyme@matrix.dropacid.net)
2020-12-09 20:22:35 +0100 <topos> @jackdk
2020-12-09 20:22:36 +0100 <lambdabot> Unknown command, try @list
2020-12-09 20:22:43 +0100 <topos> hopefully that answers your question
2020-12-09 20:24:34 +0100 <solonarv> tomsmeding: they are in the cabal manual, look under 'cabal run' IIRC
2020-12-09 20:24:47 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 20:26:17 +0100 <tomsmeding> solonarv: ah! I saw the link in a comment on a PR, but that link was apparently outdated and I neglected to see where it should have pointed
2020-12-09 20:26:23 +0100 <tomsmeding> indeed under cabal v2-run :)
2020-12-09 20:26:34 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-09 20:28:33 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-12-09 20:28:50 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
2020-12-09 20:28:52 +0100acidjnk_new(~acidjnk@p200300d0c719ff6609235681fd8d59d5.dip0.t-ipconnect.de)
2020-12-09 20:30:12 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-12-09 20:30:37 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-12-09 20:32:47 +0100 <solonarv> oh yeah, printf debugging (of which Debug.Trace is a subset) is really quite good
2020-12-09 20:32:47 +0100crblmr(~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
2020-12-09 20:33:35 +0100crblmr(~carbolyme@matrix.dropacid.net)
2020-12-09 20:33:43 +0100conal(~conal@64.71.133.70)
2020-12-09 20:35:45 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) (Ping timeout: 256 seconds)
2020-12-09 20:36:24 +0100ADG1089(uid455466@gateway/web/irccloud.com/x-qkwgyiwqvxxwtmum)
2020-12-09 20:38:28 +0100tput(~tput@S0106a84e3fe54613.ed.shawcable.net)
2020-12-09 20:38:36 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-09 20:38:55 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 20:39:11 +0100urek(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45)
2020-12-09 20:39:16 +0100 <sm[m]> I'll pimp my https://hackage.haskell.org/package/hledger-lib-1.20/docs/Hledger-Utils-Debug.html helpers, quite handy
2020-12-09 20:40:14 +0100crblmr(~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
2020-12-09 20:41:17 +0100urek__(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45) (Ping timeout: 272 seconds)
2020-12-09 20:41:38 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 20:42:31 +0100crblmr(~carbolyme@matrix.dropacid.net)
2020-12-09 20:43:25 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Ping timeout: 258 seconds)
2020-12-09 20:44:55 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2020-12-09 20:46:27 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 20:47:23 +0100crblmr(~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
2020-12-09 20:47:38 +0100bthom(~bthom@2601:184:4700:b89:abdc:f6d7:f8b7:16e2) (Ping timeout: 258 seconds)
2020-12-09 20:48:02 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-12-09 20:48:11 +0100bthom(~bthom@2601:184:4700:b89:abdc:f6d7:f8b7:16e2)
2020-12-09 20:48:46 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-09 20:50:07 +0100ADG1089(uid455466@gateway/web/irccloud.com/x-qkwgyiwqvxxwtmum) (Quit: Updating details, brb)
2020-12-09 20:50:12 +0100crblmr(~carbolyme@matrix.dropacid.net)
2020-12-09 20:50:36 +0100ADG1089(uid455466@gateway/web/irccloud.com/x-kegeyokgiugfjngo)
2020-12-09 20:50:46 +0100conal(~conal@64.71.133.70)
2020-12-09 20:50:52 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-12-09 20:51:01 +0100 <geekosaur> `xmobar` is just `statusBar` with xmobar as the bar and a wired-in default PP. if you want to change colors, you provide your own PP or override an exiting one using record update syntax
2020-12-09 20:51:49 +0100kuribas(~user@ptr-25vy0i73uopu9zhtdmp.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-12-09 20:51:55 +0100 <geekosaur> and "everyone does it their own freakin way" is the downside of being extremely customizable :)
2020-12-09 20:53:18 +0100 <monochrom> I inflicted type inference on my students! http://www.cs.utoronto.ca/~trebla/CSCC24-2020-Summer/type-inference.html
2020-12-09 20:53:52 +0100 <koz_> monochrom: You are either the very best of instructors, or the very worst.
2020-12-09 20:54:02 +0100 <geekosaur> whoops, I think I sent that to the wrong channel
2020-12-09 20:54:09 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 258 seconds)
2020-12-09 20:54:25 +0100nolrai(4c1bcada@c-76-27-202-218.hsd1.or.comcast.net)
2020-12-09 20:56:54 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2020-12-09 20:57:02 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com) (Remote host closed the connection)
2020-12-09 20:57:07 +0100 <monochrom> I think I'm the best kind, because I looked hard for a presentation suitable for undergrads.
2020-12-09 20:57:24 +0100iqubic`(~user@c-67-171-38-72.hsd1.wa.comcast.net) (Quit: ERC (IRC client for Emacs 28.0.50))
2020-12-09 20:57:40 +0100iqubic(~user@2601:602:9500:4870:e4e6:be2f:1199:107f)
2020-12-09 20:58:19 +0100 <monochrom> So for example first of all, none of the sequent notation, because it takes much training to eyeball how the sequent rules translates to an algorithm.
2020-12-09 20:59:38 +0100 <monochrom> Instead, for each sequent rule, I write down the corresponding few lines of imperative, recursive code, and just show the code to the students.
2020-12-09 21:01:00 +0100 <monochrom> As well, I made the difficult decision to keep it imperative, i.e., unification has a mutable table and updates it. Because the pure-functional alternative is more distracting.
2020-12-09 21:01:01 +0100daGrevis(~daGrevis@unaffiliated/dagrevis) (Quit: daGrevis)
2020-12-09 21:01:07 +0100 <nolrai> So I get an UArray and I want an immutable Vector, is there an easy way to convert?
2020-12-09 21:01:25 +0100 <tomsmeding> monochrom++
2020-12-09 21:01:35 +0100 <tomsmeding> having an intuition for how type inference works is _so_ helpful
2020-12-09 21:02:53 +0100daGrevis(~daGrevis@unaffiliated/dagrevis)
2020-12-09 21:02:58 +0100 <nolrai> It always throws me that there's a person named "So" in this channel.
2020-12-09 21:03:23 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-12-09 21:03:23 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-12-09 21:03:23 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-12-09 21:03:54 +0100 <monochrom> I think my most important invention is the opening "heuristically" section that shows how a human would infer types by hand, which motivates why an algorithm will need creating unknowns and solve them by unification.
2020-12-09 21:04:00 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-09 21:04:05 +0100 <tomsmeding> nolrai: probably the easiest version is via []; with some luck it doesn't actually materialise the list an just compiles down to a loop
2020-12-09 21:04:13 +0100 <tomsmeding> if you need something more performant, dunno
2020-12-09 21:04:23 +0100 <nolrai> I guess I don't for now.
2020-12-09 21:04:34 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c)
2020-12-09 21:04:36 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-ukqhigdeuvhuvbdj) (Ping timeout: 240 seconds)
2020-12-09 21:04:36 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-gifsqugeqfqrfess) (Ping timeout: 240 seconds)
2020-12-09 21:04:42 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
2020-12-09 21:05:17 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-siyupapsmlttvhqm)
2020-12-09 21:05:54 +0100 <merijn> Vector has generate "Int -> (Int -> a) -> Vector a"
2020-12-09 21:06:07 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) (Ping timeout: 260 seconds)
2020-12-09 21:06:19 +0100 <merijn> You can basically pass in the lookup of the UArray and it's size in and build the vector in place without the list at all
2020-12-09 21:06:56 +0100 <merijn> Then you're sure it's just a single loop
2020-12-09 21:09:11 +0100crblmr(~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
2020-12-09 21:09:49 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 264 seconds)
2020-12-09 21:12:01 +0100crblmr(~carbolyme@matrix.dropacid.net)
2020-12-09 21:12:03 +0100 <monochrom> No, that's only my second most important invention. :)
2020-12-09 21:12:36 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-12-09 21:13:50 +0100 <monochrom> My most important invention is unacademic but precise (therefore more informative than academic) terminology. This one I really thought hard over a long time (on and off of course), and finally came to a perfect solution.
2020-12-09 21:14:22 +0100 <monochrom> You know how you see the academic literature says "skolem variables", "rigid variables", "meta variables". I'll have none of that.
2020-12-09 21:15:18 +0100xensky(~xensky@xengarden.xen.prgmr.com)
2020-12-09 21:15:44 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-09 21:15:56 +0100 <monochrom> In Hindley-Milner (rank 1) and without programmer-supplied type sigs, you only have to worry about "meta variables". Well, their sole purpose is to stand for unknowns that may or may not be solved later. So, I call them, candidly, "unknowns".
2020-12-09 21:17:20 +0100 <monochrom> (I have also figured out what to rename "skolem variables" to: "givens". But I don't need them for now. Until one day if I cover type sigs and/or rank-n.)
2020-12-09 21:18:47 +0100daGrevis(~daGrevis@unaffiliated/dagrevis) (Quit: daGrevis)
2020-12-09 21:19:25 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 264 seconds)
2020-12-09 21:20:04 +0100daGrevis(~daGrevis@unaffiliated/dagrevis)
2020-12-09 21:20:13 +0100Foritus(~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Quit: ლ(ಠ益ಠლ) .:. <Ashley> my porn is hidden in a folder called "BBC Micro Emulator")
2020-12-09 21:20:20 +0100knupfer(~Thunderbi@mue-88-130-61-156.dsl.tropolys.de)
2020-12-09 21:20:56 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net)
2020-12-09 21:21:10 +0100 <geekosaur> now all you need are wanteds and you can confuse anyone who work with ghc's typechecker plugins
2020-12-09 21:21:10 +0100Foritus(~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net)
2020-12-09 21:22:02 +0100 <monochrom> haha yikes
2020-12-09 21:23:15 +0100wonko7(~wonko7@lns-bzn-55-82-255-183-4.adsl.proxad.net)
2020-12-09 21:23:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-09 21:23:40 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-09 21:24:08 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com)
2020-12-09 21:25:50 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-qznwsywzudvjynms)
2020-12-09 21:27:08 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 260 seconds)
2020-12-09 21:27:49 +0100jyang(~jyang@70.35.214.234) (Ping timeout: 264 seconds)
2020-12-09 21:27:52 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-12-09 21:28:17 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2020-12-09 21:29:53 +0100jyang(~jyang@70.35.214.234)
2020-12-09 21:31:36 +0100pbgc(~pbgc@78.15.103.87.rev.vodafone.pt) (Quit: Computer has gone to sleep.)
2020-12-09 21:33:22 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-12-09 21:33:23 +0100nolrai(4c1bcada@c-76-27-202-218.hsd1.or.comcast.net) (Remote host closed the connection)
2020-12-09 21:33:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-12-09 21:36:21 +0100DTZUZU_(~DTZUZU@207.81.171.116)
2020-12-09 21:36:29 +0100 <dsal> Is there any kind of fold that terminates while still being able to look at arguments?
2020-12-09 21:36:44 +0100 <dsal> I've written my own recursion + a toList and feel that better should be doable.
2020-12-09 21:36:47 +0100 <merijn> eh, foldr? :p
2020-12-09 21:37:12 +0100 <monochrom> foldr can terminate and look at arguments
2020-12-09 21:37:27 +0100glguydoesn't understand the question
2020-12-09 21:37:36 +0100geekosaurneither
2020-12-09 21:37:46 +0100 <dsal> Hmm... OK, how does that work? I thought if I did something with the accumulator, it'd keep consuming.
2020-12-09 21:38:02 +0100 <glguy> dsal: What's an example of what you want to do?
2020-12-09 21:38:10 +0100 <glguy> foldr doesn't have an accumulator
2020-12-09 21:38:13 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net) (Ping timeout: 260 seconds)
2020-12-09 21:39:18 +0100 <dsal> foldr (\x (m,o) -> if (f x m) then Just x else (g m, o)) -- something like that
2020-12-09 21:39:23 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2020-12-09 21:39:59 +0100 <dsal> I guess my understanding of early termination in foldr is a little fuzzy.
2020-12-09 21:40:13 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 21:40:30 +0100 <monochrom> OK, I have an example of early-stopping foldr.
2020-12-09 21:41:14 +0100 <monochrom> and = foldr (\x r -> if x then r else False) False
2020-12-09 21:41:20 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-12-09 21:41:26 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-09 21:41:33 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 21:41:34 +0100 <glguy> > let unique = foldr (\x rest -> x : dropWhile (x==) rest) [] in take 3 (unique "exxxam" ++ undefined)
2020-12-09 21:41:34 +0100 <monochrom> If you conditionally don't use r, you conditionally stop early.
2020-12-09 21:41:37 +0100 <dsal> Right. The problem is that I need to look at r on both sides.
2020-12-09 21:41:37 +0100 <lambdabot> "exa"
2020-12-09 21:41:53 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
2020-12-09 21:42:11 +0100 <monochrom> Does "f x m" sometimes not need m?
2020-12-09 21:42:17 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-12-09 21:42:20 +0100 <dsal> m is always needed.
2020-12-09 21:42:45 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-09 21:44:01 +0100 <glguy> > foldr (\x rec m -> if even x then m else rec (2*m)) (\m -> m) [1,3,5,7] 1
2020-12-09 21:44:04 +0100 <lambdabot> 16
2020-12-09 21:44:08 +0100 <glguy> > foldr (\x rec m -> if even x then m else rec (2*m)) (\m -> m) (1:2:undefined) 1
2020-12-09 21:44:11 +0100 <lambdabot> 2
2020-12-09 21:44:44 +0100Deide(~Deide@217.155.19.23)
2020-12-09 21:45:06 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-09 21:45:23 +0100 <glguy> > foldr (\x rec m -> if even x then m else rec (2*m)) (\m -> m) (1:3:10:undefined) 1
2020-12-09 21:45:26 +0100 <lambdabot> 4
2020-12-09 21:45:28 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
2020-12-09 21:45:59 +0100 <glguy> there m is the accumulator and it exists early on even numbers
2020-12-09 21:47:20 +0100conal(~conal@64.71.133.70)
2020-12-09 21:47:24 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net)
2020-12-09 21:47:50 +0100 <dsal> that's interesting. That 4 is confusing me, though.
2020-12-09 21:48:40 +0100 <glguy> it's not returning x, it's returning the "accumulator" which gets doubled each step
2020-12-09 21:49:20 +0100DTZUZU_(~DTZUZU@207.81.171.116) (Ping timeout: 256 seconds)
2020-12-09 21:49:42 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) (Quit: WeeChat 2.9)
2020-12-09 21:50:06 +0100 <monochrom> = foldl (\a _ -> 2*a) 1 . takeWhile (not . even)
2020-12-09 21:51:05 +0100fendor(~fendor@91.141.3.143.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-09 21:51:08 +0100 <dsal> Ah, OK. That's an interesting idea, though. It's probably better for me to stop thinking about this for a while since I don't have a *real* problem. I just tend to treat explicit recursion as a bit of a smell.
2020-12-09 21:51:14 +0100 <monochrom> There is a proof by rewriting foldl as foldr and then use foldr fusion. Omitted. (Handwaved.)
2020-12-09 21:51:18 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
2020-12-09 21:52:06 +0100 <monochrom> Code that your audience don't understand is the only code smell.
2020-12-09 21:52:28 +0100 <glguy> I made this years ago for foldl/foldr https://old.reddit.com/r/haskell/comments/2892a9/someone_asked_me_to_derive_foldl_from_foldr_is/ci…
2020-12-09 21:52:33 +0100 <monochrom> And paradoxically it sometimes means your own recursion, some other times means not your own recursion.
2020-12-09 21:53:12 +0100 <glguy> code smell is a code smell :nod:
2020-12-09 21:53:13 +0100 <dsal> Oh, I know. I don't think it's wrong per se. Just makes me wonder if there's a way I can do it better. In particular, toList feels a little like giving up.
2020-12-09 21:53:39 +0100tomsmeding. o O ( [] is a control flow mechanism, not a data structure )
2020-12-09 21:53:57 +0100 <dsal> That's how I'm using it. :(
2020-12-09 21:54:00 +0100 <glguy> import Control.List
2020-12-09 21:54:19 +0100 <tomsmeding> Could not find module ‘Control.List’
2020-12-09 21:54:24 +0100 <tomsmeding> was disappointed
2020-12-09 21:54:33 +0100 <monochrom> Data.Lens and Control.Machine IMO. The two module names that ekmett got wrong. :)
2020-12-09 21:54:45 +0100crblmr(~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
2020-12-09 21:55:02 +0100 <dsal> I feel a little like I'm lying with this function I wrote that works with any Foldable! (by converting it to a list and doing the recursion)
2020-12-09 21:55:10 +0100 <dsal> I'm my only user, so I'm lying to myself.
2020-12-09 21:55:20 +0100 <geekosaur> or put otherwise even ekmett gets confused by the module name mess
2020-12-09 21:55:36 +0100 <monochrom> Well, it is true that if you can do it with toList, you can do it with Foldable or MonoFoldable methods.
2020-12-09 21:57:04 +0100 <glguy> If the first thing you do is call toList, then it's probably better to just take a list as an argument
2020-12-09 21:57:05 +0100emmanuel_erc(~user@2604:2000:1382:ce03::9af)
2020-12-09 21:57:11 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2020-12-09 21:57:12 +0100 <dsal> I did implement this with foldr, I just don't know that it's not θ(N)
2020-12-09 21:57:17 +0100crblmr(~carbolyme@matrix.dropacid.net)
2020-12-09 21:57:27 +0100 <glguy> unless you're trying to be clever and shave some seconds off your AoC common library :nod:
2020-12-09 21:57:57 +0100 <dsal> Yeah, it was originally taking a list and then I changed a data structure and thought it'd be convenient to work with more data structures.
2020-12-09 21:58:12 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-09 21:58:37 +0100 <dsal> AoC each year is a combination of learning that there are lots of things I don't know and learning a few of them.
2020-12-09 21:59:30 +0100 <dsal> The lĂśb thing was great. That one was frustrating in that I understood the concept fairly quickly, but my brain couldn't hold both that and my code in my head at the same time for a while. Holes are nice for that.
2020-12-09 22:00:39 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-12-09 22:00:49 +0100Entertainment(~entertain@104.246.132.210) ()
2020-12-09 22:03:48 +0100m4lvin(~m4lvin@w4eg.de) (Quit: m4lvin)
2020-12-09 22:09:43 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-09 22:09:48 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-09 22:10:32 +0100conal(~conal@64.71.133.70)
2020-12-09 22:12:16 +0100urek(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45) (Remote host closed the connection)
2020-12-09 22:12:46 +0100urek(~urek@2804:7f1:e10a:4c43:c16d:b553:6dc5:9c45)
2020-12-09 22:14:05 +0100carlomagno(~cararell@148.87.23.11) (Remote host closed the connection)
2020-12-09 22:14:15 +0100carlomagno(~cararell@148.87.23.11)
2020-12-09 22:14:29 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-09 22:14:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-09 22:15:10 +0100 <koz_> :t (<&>)
2020-12-09 22:15:12 +0100 <lambdabot> Functor f => f a -> (a -> b) -> f b
2020-12-09 22:15:14 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 22:15:49 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-12-09 22:15:55 +0100 <dsal> It's & for functors.
2020-12-09 22:16:05 +0100tlaxkit(~kvirc@89.35.63.181) (Ping timeout: 240 seconds)
2020-12-09 22:17:49 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 22:17:53 +0100Martinsos(~user@cpe-188-129-36-113.dynamic.amis.hr) (Read error: Connection reset by peer)
2020-12-09 22:18:34 +0100hekkaidekapus{hekkaidekapus
2020-12-09 22:20:13 +0100knupfer(~Thunderbi@mue-88-130-61-156.dsl.tropolys.de) (Ping timeout: 260 seconds)
2020-12-09 22:20:34 +0100DTZUZU_(~DTZUZU@207.81.171.116)
2020-12-09 22:20:43 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net) (Ping timeout: 246 seconds)
2020-12-09 22:21:43 +0100coot_(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-09 22:21:43 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-09 22:22:04 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-09 22:22:26 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 256 seconds)
2020-12-09 22:23:18 +0100tlaxkit(~kvirc@89.35.63.181)
2020-12-09 22:24:31 +0100tlaxkit(~kvirc@89.35.63.181) (Client Quit)
2020-12-09 22:24:59 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-09 22:25:16 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 246 seconds)
2020-12-09 22:25:16 +0100coot_coot
2020-12-09 22:26:16 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 22:28:16 +0100pbgc(~pbgc@a89-152-145-91.cpe.netcabo.pt)
2020-12-09 22:30:40 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net)
2020-12-09 22:32:40 +0100DTZUZU_(~DTZUZU@207.81.171.116) (Ping timeout: 258 seconds)
2020-12-09 22:35:21 +0100acidjnk_new(~acidjnk@p200300d0c719ff6609235681fd8d59d5.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2020-12-09 22:38:44 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-09 22:39:34 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
2020-12-09 22:41:05 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-12-09 22:41:06 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
2020-12-09 22:42:02 +0100eedgit(~eedgit@95.179.237.21) (Ping timeout: 260 seconds)
2020-12-09 22:42:02 +0100eedgit26(~chat.free@95.179.237.21) (Ping timeout: 260 seconds)
2020-12-09 22:42:40 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 22:45:33 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-09 22:47:32 +0100 <dsal> This "bad parts" series is getting sillier.
2020-12-09 22:48:24 +0100jess(jess@freenode/staff/jess) (Quit: rebooting)
2020-12-09 22:50:08 +0100bitmagie(~Thunderbi@200116b806aa1d00e4084aa62cb9001a.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-09 22:51:19 +0100jmchael(~jmchael@87.112.60.168) (Quit: Leaving)
2020-12-09 22:51:37 +0100jmchael(~jmchael@87.112.60.168)
2020-12-09 22:52:31 +0100delYsid(~user@unaffiliated/delysid) ("ERC (IRC client for Emacs 27.1.50)")
2020-12-09 22:52:39 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-09 22:52:44 +0100falafel(~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
2020-12-09 22:52:48 +0100jmchael(~jmchael@87.112.60.168) (Client Quit)
2020-12-09 22:54:07 +0100jyang_(~jyang@modemcable044.186-200-24.mc.videotron.ca)
2020-12-09 22:54:13 +0100jmchael(~jmchael@87.112.60.168)
2020-12-09 22:56:45 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-12-09 22:56:54 +0100ransom__(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-09 22:57:28 +0100jyang(~jyang@70.35.214.234) (Ping timeout: 246 seconds)
2020-12-09 22:57:40 +0100pbgc(~pbgc@a89-152-145-91.cpe.netcabo.pt) (Quit: Computer has gone to sleep.)
2020-12-09 22:58:45 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Ping timeout: 240 seconds)
2020-12-09 22:59:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-09 22:59:23 +0100rprije(~rprije@14-201-170-17.tpgi.com.au)
2020-12-09 22:59:30 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Quit: ->)
2020-12-09 23:00:11 +0100fionnan(~fionnan@109.255.20.201) (Remote host closed the connection)
2020-12-09 23:00:32 +0100renzhi(~renzhi@modemcable070.17-177-173.mc.videotron.ca)
2020-12-09 23:00:39 +0100u0_a203(~u0_a203@37.98.47.224)
2020-12-09 23:00:43 +0100lordyod(~lordyod@c-67-169-144-132.hsd1.ca.comcast.net)
2020-12-09 23:01:06 +0100u0_a203(~u0_a203@37.98.47.224) (Client Quit)
2020-12-09 23:01:08 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-12-09 23:01:41 +0100 <nfd> oh yeah shoutouts to glguy: i decided to pick up megaparsec starting at day4, and seeing the patterns you use after i'm finished with those levels has been helpful :)
2020-12-09 23:04:01 +0100 <dolio> Seems like it's been silly.
2020-12-09 23:08:43 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-09 23:09:41 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-09 23:12:54 +0100gedda(gedda@gateway/vpn/mullvad/gedda) (Quit: leaving)
2020-12-09 23:13:49 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-09 23:14:33 +0100mounty(~mounty@2001:8000:2f59:0:955e:b3d4:6deb:61b5)
2020-12-09 23:16:07 +0100ADG1089(uid455466@gateway/web/irccloud.com/x-kegeyokgiugfjngo) (Quit: Connection closed for inactivity)
2020-12-09 23:17:58 +0100renzhi(~renzhi@modemcable070.17-177-173.mc.videotron.ca) (Ping timeout: 260 seconds)
2020-12-09 23:18:00 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-09 23:18:36 +0100Amras(~Amras@unaffiliated/amras) (Remote host closed the connection)
2020-12-09 23:19:42 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-09 23:19:45 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-09 23:19:55 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c9fa:63a9:d772:b19c) (Remote host closed the connection)
2020-12-09 23:22:04 +0100texasmynsted(~texasmyns@212.102.44.130)
2020-12-09 23:23:24 +0100son0p(~son0p@181.136.122.143)
2020-12-09 23:24:55 +0100ransom__(c4264035@gateway/vpn/protonvpn/c4264035) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-09 23:27:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-09 23:28:14 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-09 23:28:34 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 23:30:21 +0100amerigo(uid331857@gateway/web/irccloud.com/x-egprymtqwwmmkfhc)
2020-12-09 23:32:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-09 23:34:09 +0100 <pja> dsal: Some good points though.
2020-12-09 23:34:59 +0100 <glguy> nfd: cool; are you solutions online?
2020-12-09 23:35:15 +0100michalz(~user@185.246.204.39) (Remote host closed the connection)
2020-12-09 23:36:00 +0100shinobi_(~shinobi@c-24-147-48-162.hsd1.ma.comcast.net) (Read error: Connection reset by peer)
2020-12-09 23:36:49 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-09 23:37:03 +0100 <pja> I always seem to spend more time than I should staring at Megaparsec type errors. Probably entirely my own fault though.
2020-12-09 23:37:44 +0100 <glguy> I use the megaparsec parse errors to get useful feedback while I'm writing my parser in the first place (for AoC)
2020-12-09 23:38:18 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-09 23:38:22 +0100 <pja> I’m probably just not /quite/ experienced enough with it to be able to spot what’s wrong quickly.
2020-12-09 23:38:27 +0100 <nfd> glguy: yeah; https://github.com/nfd9001/advent-of-code-2020. mine are a bit more verbose/defensive/etc. and some of these involved bouncing questions off another friend who was already pretty familiar with it
2020-12-09 23:38:28 +0100crestfallen(~john@128.32.176.159)
2020-12-09 23:39:36 +0100 <nfd> for day4, i ended up using the parseerrors to troubleshoot/build confidence that my stuff made sense
2020-12-09 23:39:45 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-09 23:39:59 +0100 <nfd> it was really satisfying when i started seeing big waves of parse errors that were correctly rejecting bad passports
2020-12-09 23:40:30 +0100 <dsal> My day 4 is pretty sad. I've not done anything to make that one better.
2020-12-09 23:41:21 +0100 <dsal> I went too hard on a specific datatype too soon.
2020-12-09 23:41:34 +0100 <dsal> Of course, the nice part is that `part1 = length`
2020-12-09 23:42:13 +0100jess(jess@freenode/staff/jess)
2020-12-09 23:42:44 +0100texasmynsted(~texasmyns@212.102.44.130) (Ping timeout: 256 seconds)
2020-12-09 23:43:46 +0100 <glguy> nfd: Are you on my #haskell-themed leaderboard?
2020-12-09 23:44:51 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-09 23:46:36 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
2020-12-09 23:46:36 +0100 <dsal> I'm not very fast this year, but I'm also not panicking about it. Just enjoying the learning.
2020-12-09 23:47:03 +0100 <sgibber2018> dsal: Sounds like a good attitude to me. :)
2020-12-09 23:47:16 +0100 <glguy> the leaderboard is more about links to solutions and seeing who's keeping up than having to race
2020-12-09 23:47:30 +0100 <dsal> Oh, is it supposed to link to answers?
2020-12-09 23:47:33 +0100LKoen(~LKoen@243.169.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-12-09 23:47:46 +0100 <glguy> It can link to your github; many people put their answrs on their githubs
2020-12-09 23:48:19 +0100 <dsal> I've been pushing mine into a keybase repo. I don't really have any reason to keep anything secret since smarter folks than I have good answers.
2020-12-09 23:48:46 +0100dax(dax@bitbot/dax) (Quit: brb)
2020-12-09 23:49:10 +0100dax(dax@bitbot/dax)
2020-12-09 23:49:33 +0100AwesomeRigg(awesomerig@45.15.143.179)
2020-12-09 23:49:33 +0100 <nfd> glguy: no! happy to join though
2020-12-09 23:49:58 +0100 <glguy> nfd: code in /topic
2020-12-09 23:50:19 +0100 <crestfallen> hi would someone kindly point out possible indent errors beginning line 152 in 'factor' ? the program compiles but only returns "Invalid input". thanks https://gist.github.com/varreli/b32fa33506737c3b3fa0ff236dbe1c2c
2020-12-09 23:50:19 +0100ph88(~ph88@ip5f5af6cd.dynamic.kabel-deutschland.de) (Quit: Leaving)
2020-12-09 23:51:15 +0100 <crestfallen> I have another version that works but it's far different from this one from the textbook
2020-12-09 23:51:17 +0100 <AwesomeRigg> hey whats the best stuff App Language to learn that will get a job fast during covid 2021
2020-12-09 23:51:57 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-09 23:52:15 +0100 <crestfallen> The book doesn't cover nested do statements so far, and the kindle version has all the indentation wrong
2020-12-09 23:53:18 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2020-12-09 23:54:05 +0100 <crestfallen> a version I got online is here, using Data Expr ... https://termbin.com/amea
2020-12-09 23:54:26 +0100 <nfd> crestfallen: https://en.wikibooks.org/wiki/Haskell/Indentation may help in general
2020-12-09 23:54:38 +0100 <nfd> especially noting its Golden Rule
2020-12-09 23:54:59 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-09 23:55:20 +0100Tario(~Tario@201.192.165.173)
2020-12-09 23:57:22 +0100 <crestfallen> nfd I had it that way last night - with the standard indentation - but it compiles and still returns the error
2020-12-09 23:57:26 +0100 <crestfallen> thanks btw
2020-12-09 23:57:44 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Quit: Leaving)
2020-12-09 23:57:58 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds)
2020-12-09 23:58:02 +0100 <dsal> crestfallen: The <|> looks pretty confusing to me. I'd put it on a new line and not have it indented in the do. Or better, name the do block and just have `parens <|> natural`
2020-12-09 23:58:05 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Ping timeout: 240 seconds)
2020-12-09 23:58:58 +0100 <crestfallen> 'parens <|> natural' ? I don't understand dsal
2020-12-09 23:59:04 +0100 <dsal> or `factor = between "(" ")" expr <|> natural`
2020-12-09 23:59:36 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 265 seconds)
2020-12-09 23:59:52 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)