2020/11/30

2020-11-30 00:00:23 +0100 <maerwald> Such discussions have a tendency to derail into gibberish... (are we there yet?), but formal discussions have their own as well: bikeshedding.
2020-11-30 00:00:24 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-30 00:00:52 +0100 <erisco> oh there is nothing like a perfectly rational, coherent, formal discussion about absolutely nothing significant
2020-11-30 00:01:00 +0100 <monochrom> Yes, we have long understood PEBKAC
2020-11-30 00:01:05 +0100 <MarcelineVQ> re: feeling. haskell's use of whitespace has ruined me for other languages
2020-11-30 00:01:07 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 00:01:40 +0100 <erisco> but on the other hand, I feel like these feelings (hah) need to be put in their place
2020-11-30 00:01:42 +0100 <MarcelineVQ> all I can use now is haskell-like things
2020-11-30 00:02:10 +0100 <erisco> because it seems to be, and I've encountered this, that some project their preferences as matters of fact
2020-11-30 00:02:38 +0100 <erisco> like where you ought to put your commas and braces and whether it is okay to have single-letter variable names and how many lines per file and on and one
2020-11-30 00:02:57 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-ubahtloahdzifjhq) (Quit: Connection closed for inactivity)
2020-11-30 00:02:57 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-30 00:03:27 +0100 <erisco> if I like putting my commas first rather than last on a line and someone says it is unreadable, that is their experience of it
2020-11-30 00:03:39 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 260 seconds)
2020-11-30 00:04:05 +0100 <maerwald> yes, commas have caused engineering teams to split up :D
2020-11-30 00:04:23 +0100 <erisco> are you leading or trailing?
2020-11-30 00:04:38 +0100 <monochrom> This is why SPJ is leading. >:)
2020-11-30 00:05:24 +0100 <ski> i think i always did leading, because of the aesthetics
2020-11-30 00:05:32 +0100 <ski> (i like to line things up)
2020-11-30 00:05:40 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-30 00:05:41 +0100 <maerwald> My policy wrt formatting is similar to the WTFPL license text
2020-11-30 00:06:07 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 00:06:42 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 00:07:18 +0100 <maerwald> I barely even care what formatting ppl use in PRs... I mean. If you're an open source project and someone contributes... it's time for celebration, screw formatting :p
2020-11-30 00:07:26 +0100 <monochrom> Is that basically centre-align every line, except left-align for the last line?
2020-11-30 00:07:54 +0100 <erisco> my first foray into programming didn't involve whitespace
2020-11-30 00:07:56 +0100 <ski> erisco : "when A and not A are both true, what do you have" -- linear logic ?
2020-11-30 00:07:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 00:08:27 +0100conal(~conal@64.71.133.70)
2020-11-30 00:08:29 +0100 <MarcelineVQ> human involvement
2020-11-30 00:09:35 +0100 <erisco> then a mentor showed me how to format my html elements and boy was web development so much easier
2020-11-30 00:09:38 +0100 <maerwald> if you calculated the times engineering teams have discussed non-sente topics like formatting, maybe you could calculate the wasted time or the economical damage :p
2020-11-30 00:09:43 +0100 <erisco> practically took all the challenge out!
2020-11-30 00:12:21 +0100hackagepg-extras 0.0.1 - PostgreSQL database performance insights. https://hackage.haskell.org/package/pg-extras-0.0.1 (pawurb)
2020-11-30 00:13:29 +0100 <monochrom> https://twitter.com/HisCursedness/status/788690145822306304
2020-11-30 00:14:00 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-30 00:14:44 +0100 <xerox_> that's beautiful modulo a couple columns
2020-11-30 00:15:56 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 00:16:27 +0100 <maerwald> monochrom: lol, ok... I guess I do care about it *somewhat*
2020-11-30 00:16:28 +0100 <erisco> when you take leading delimiters to their ultimate conclusion you also lead with semicolons
2020-11-30 00:16:36 +0100conal(~conal@64.71.133.70)
2020-11-30 00:16:41 +0100 <erisco> I had a hard time seriously staying on board with that, though I tried :P
2020-11-30 00:16:44 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 00:17:29 +0100 <monochrom> That's what SPJ does. Lead with semicolons. And the leading semicolons are vertically aligned with { and }
2020-11-30 00:17:30 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-30 00:17:49 +0100 <monochrom> <pun>Follow the lead of SPJ!</pun>
2020-11-30 00:18:12 +0100 <erisco> really? well great minds and all that
2020-11-30 00:18:27 +0100 <maerwald> there should be a haskell formatter that turns your code into SPJ style
2020-11-30 00:18:42 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-30 00:19:09 +0100 <monochrom> The trouble is that only SPJ does it, in all of the Haskell community. So yeah we simply call it the SPJ style.
2020-11-30 00:19:47 +0100 <xerox_> always liked that style
2020-11-30 00:19:54 +0100 <monochrom> I used to do that a bit, but only because an old generation of auto-indentation editor plugin was dumb.
2020-11-30 00:19:59 +0100 <erisco> I have a style I don't see others using
2020-11-30 00:19:59 +0100contiver__(~contiver@84-115-64-108.wifi.dynamic.surfer.at) (Ping timeout: 260 seconds)
2020-11-30 00:20:24 +0100 <erisco> it is kind of regressive, but it started with whatever editor I was using at the time as a workaround
2020-11-30 00:20:25 +0100 <maerwald> we need AI in formatters
2020-11-30 00:20:34 +0100 <erisco> now I just like it
2020-11-30 00:21:07 +0100 <erisco> here you can see by example https://hackage.haskell.org/package/control-dotdotdot-0.1.0.1/docs/src/Control-DotDotDot.html#DotD…
2020-11-30 00:21:37 +0100 <dolio> Dissapointing that almost no one replying to that tweet recognized that the problem is that the compiler requires all that extra garbage to be added to the code that is already easy to understand.
2020-11-30 00:21:42 +0100 <monochrom> Yes please Markov chain that tells me how many leading spaces I need for the next line. :)
2020-11-30 00:22:03 +0100 <xerox_> yuck
2020-11-30 00:22:44 +0100 <monochrom> dolio, that's a doctrine of the layout-insensitive religion.
2020-11-30 00:23:29 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 00:23:29 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
2020-11-30 00:23:35 +0100 <monochrom> Either that, or layout parsing is really tricky.
2020-11-30 00:23:36 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 00:24:06 +0100 <dolio> It probably is when you write your parsers in C like most people do.
2020-11-30 00:24:16 +0100 <dolio> That's why they have compiler books that are like 70% parsing.
2020-11-30 00:24:18 +0100 <hekkaidekapus> The code in that tweet is fine. The right margin should be the place to stuff boilerplate; if you don’t like boilerplate, increase the column count where the margin starts. By the way, 80 or 120? :p
2020-11-30 00:24:22 +0100 <maerwald> ok, I'm a believer in inconsistent formatting... I don't mind if ppl exercise different styles in one codebase. Because it's all *information*. Why would you hide it? Scared your pattern recognition apparatus overloads? That's more likely to happen due to the actual code
2020-11-30 00:25:02 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-30 00:25:23 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 272 seconds)
2020-11-30 00:25:28 +0100 <erisco> my elitism is saying it is people who have only experienced one style, either because they are new or stubborn
2020-11-30 00:25:47 +0100 <monochrom> newborn or stubborn \∩/
2020-11-30 00:25:59 +0100 <hekkaidekapus> :d
2020-11-30 00:26:16 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 00:26:39 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2020-11-30 00:26:42 +0100 <erisco> I don't know how you can care that much once you have some practice in a variety of different syntax styles
2020-11-30 00:26:56 +0100 <erisco> and, lord help you, mathematics
2020-11-30 00:27:15 +0100 <alx741> hello all, I think some months ago I read about a framework (new one?) that advocates for server-side rendering but also provides a list of principles of what it believes makes for good modern web frameworks (server side rendering being one of them), does anyone knows which framework that would be? I'm really after that list of principles but can't recall its name :/
2020-11-30 00:27:40 +0100 <maerwald> I think it's the hope that consistent formatting will somehow make the team more productive...
2020-11-30 00:27:42 +0100 <monochrom> I say that layout parsing is tricky because the rules in the Haskell Report are almost as long as C++ rules for disambiguating multiple inheritance of a comon field, which is infamous for being tricky and complex and "no one actually understands in full".
2020-11-30 00:27:53 +0100 <sondr3> alx741: IHP maybe?
2020-11-30 00:27:56 +0100 <Axman6> alx741: maybe miso?
2020-11-30 00:28:04 +0100 <Axman6> maybe Maybe?
2020-11-30 00:28:05 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-30 00:28:17 +0100 <sondr3> Either maybe
2020-11-30 00:28:44 +0100conal(~conal@64.71.133.70)
2020-11-30 00:29:27 +0100 <alx741> sondr3: I remember the web page of it had such a list's name, but IHP doesn't so perhaps they've changed it?
2020-11-30 00:29:59 +0100 <alx741> Axman6: I've checked but there is no mention of such a list
2020-11-30 00:30:18 +0100 <maerwald> so the language is sound, but the parser not? :D
2020-11-30 00:30:51 +0100 <maerwald> purely functional programming language, that should parse... mostly
2020-11-30 00:30:53 +0100 <alx741> I remember it had a name, similar to how OOP has the 'SOLID' principles (it was a nice sounding name), I can't remember and it's driving me crazy :p
2020-11-30 00:31:07 +0100 <erisco> is the list longer or shorter than the list of physicists who truly understand quantum mechanics?
2020-11-30 00:31:29 +0100 <dolio> Haskell's layout sensitivity is a lot more complicated than the sensitivity in that tweet.
2020-11-30 00:31:51 +0100 <erisco> oh wait, I merged conversations
2020-11-30 00:31:54 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 256 seconds)
2020-11-30 00:32:17 +0100 <Axman6> alx741: was it PHP, Purescript, Haskell, Postgresql?
2020-11-30 00:32:21 +0100 <erisco> thought that was a list of people who fully understood C++ parsing
2020-11-30 00:32:55 +0100 <monochrom> Ah OK fair, dolio.
2020-11-30 00:33:03 +0100 <sondr3> Axman6: lol, nice acronym
2020-11-30 00:33:17 +0100 <dolio> I guess a problem is people only knowing Python as an example. If they did know Haskell, they could realize that languages could adopt optional layout sensitivity to avoid breaking existing code, so there's no excuse for perpetuating the braces and semicolons.
2020-11-30 00:33:26 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 00:33:29 +0100 <Axman6> MPHPGA - Make PHP GReat Again
2020-11-30 00:33:38 +0100 <dolio> The requirement, that is.
2020-11-30 00:34:40 +0100 <alx741> Axman6: I believe it was a Haskell web framework, hence I'm asking here... but I do realize that could also be a memory fluke
2020-11-30 00:35:03 +0100 <Axman6> it wasn't yesod?
2020-11-30 00:35:43 +0100 <alx741> Axman6: pretty sure it wasn't because that's what I currently use
2020-11-30 00:36:16 +0100 <alx741> Oh well maybe I remember on my sleep :)
2020-11-30 00:36:27 +0100 <alx741> *I'll
2020-11-30 00:38:24 +0100irc_user(uid423822@gateway/web/irccloud.com/x-qjzncdzdidsoxfjl) (Quit: Connection closed for inactivity)
2020-11-30 00:38:45 +0100 <monochrom> Yes, I wish Python supported {;] so I could write one-liners on the REPL when it's a really short one-liner. The advantage of one-liners on the REPL, when it's short, is that I can actually edit any of it before I press enter.
2020-11-30 00:38:59 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it)
2020-11-30 00:39:43 +0100 <monochrom> If the REPL forces you to press enter 5 times, it means you're screwed whenever you realize you made a typo before the 1st enter.
2020-11-30 00:39:56 +0100 <Axman6> need more heredocs
2020-11-30 00:41:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-30 00:41:59 +0100 <erisco> just deconflict the keys
2020-11-30 00:42:17 +0100 <erisco> shift+enter has been a way to put newlines in text fields
2020-11-30 00:42:17 +0100 <sondr3> Anyone know of a good way to go from a char to its UTF8 symbol? E.g. '\955' to λ
2020-11-30 00:42:27 +0100 <shachaf> monochrom: The other option would be an environment that supports multiple-line inputs and still has the advantages of a REPL.
2020-11-30 00:42:39 +0100 <shachaf> sondr3: UTF-8 as in the encoding in bytes?
2020-11-30 00:42:45 +0100 <Axman6> sondr3: I don't understand the question
2020-11-30 00:43:10 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it) (Client Quit)
2020-11-30 00:43:29 +0100 <erisco> "UTF8 symbol" isn't a thing I have heard of
2020-11-30 00:43:43 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-30 00:43:46 +0100 <sondr3> Uh, so I have a bunch of characters that I'm reading, and I want to go from their decimal value to its glyph
2020-11-30 00:44:06 +0100 <Axman6> how are you reading them?
2020-11-30 00:44:10 +0100 <erisco> so you have a ttf or something?
2020-11-30 00:44:12 +0100 <sondr3> Megaparsec :D
2020-11-30 00:44:21 +0100 <monochrom> You know what, show actual code.
2020-11-30 00:44:35 +0100 <monochrom> @where paste
2020-11-30 00:44:35 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
2020-11-30 00:45:01 +0100Amras(~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
2020-11-30 00:45:13 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-11-30 00:45:19 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca)
2020-11-30 00:45:50 +0100 <monochrom> But I guess a possible short answer is that if you use putChar or putStr or putStrLn you will see your λ alright, if you use print you don't, and that's by design.
2020-11-30 00:46:19 +0100 <sondr3> I'm writing a Scheme implementation and it writes characters as `\#VAL` (or `\#xHEX`) and uses this as an example: `#\x03BB ;λ(if character is supported)`
2020-11-30 00:46:27 +0100 <monochrom> If you use show you don't either, and print uses show, that's why.
2020-11-30 00:47:07 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-30 00:47:07 +0100 <monochrom> Actually I think I can use yahb to show you. But you should also do your experiment in ghci to confirm.
2020-11-30 00:47:18 +0100 <monochrom> % print '\955'
2020-11-30 00:47:18 +0100 <yahb> monochrom: '\955'
2020-11-30 00:47:23 +0100 <monochrom> % putChar '\955'
2020-11-30 00:47:23 +0100 <yahb> monochrom: λ
2020-11-30 00:47:24 +0100 <erisco> it just sounds like there is confusion on encodings versus code points versus glyphs
2020-11-30 00:47:40 +0100 <monochrom> Yeah there's also that. But that would be a 1-hour lecture.
2020-11-30 00:47:42 +0100 <erisco> and maybe the answer can be found in understanding what each of those are
2020-11-30 00:47:57 +0100 <erisco> there is that Joel Spolsky article
2020-11-30 00:48:12 +0100 <monochrom> a 1-hour lecture that could be saved by reading joeysoftware's article on this topic, but who still remembers there is such a thing
2020-11-30 00:48:15 +0100 <sondr3> ¯\_(ツ)_/¯
2020-11-30 00:48:29 +0100 <nitrix> Not very Haskell-y but I can't think of a better place to ask: Is there terminology to distinguish whether two things compare equal after evaluation vs. them being actually the same expression?
2020-11-30 00:48:41 +0100 <monochrom> People now only know that emojies "just work"
2020-11-30 00:49:25 +0100 <erisco> they got added to computers about a decade ago, weren't you aware?
2020-11-30 00:49:47 +0100 <nitrix> As in, `1 + 1 = 2`. Clearly there's "equality" but these two things isn't the same. I don't know if mathematics/logic cares to name those?
2020-11-30 00:49:50 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-11-30 00:49:53 +0100 <erisco> that was roughly my experience when I first saw one on a mobile phone :P
2020-11-30 00:50:02 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-30 00:50:15 +0100alice_(~alice@209.131.251.182)
2020-11-30 00:50:31 +0100 <nitrix> I guess I'm asking for something beta-reduction related.
2020-11-30 00:50:39 +0100 <alice_> how does ghc garbage collection work
2020-11-30 00:50:53 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-11-30 00:51:21 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-30 00:51:49 +0100 <hekkaidekapus_> > chr 955 -- sondr3
2020-11-30 00:51:51 +0100 <lambdabot> '\955'
2020-11-30 00:51:59 +0100 <hekkaidekapus_> > ord 'λ'
2020-11-30 00:52:02 +0100 <lambdabot> 955
2020-11-30 00:52:03 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-11-30 00:52:06 +0100 <erisco> nitrix, there definitional equality which would say 2 = 1 + 1 only when 2 is defined by 1 + 1
2020-11-30 00:53:17 +0100 <erisco> and a common name for the other sort is slipping my mind
2020-11-30 00:53:28 +0100 <nitrix> erisco, So the terminology I'm after is "definitional equality"? What are the other options, judgmental equality?
2020-11-30 00:53:30 +0100 <MarcelineVQ> nitrix: extentional equality
2020-11-30 00:53:57 +0100 <nitrix> erisco, And, Google just happily told me what I'm after. Apparently I want to look into "homotopy theory" :D
2020-11-30 00:54:08 +0100 <MarcelineVQ> Though that's not specifically about if they're evaluated first
2020-11-30 00:54:11 +0100 <erisco> well there are all sorts of equalities
2020-11-30 00:54:37 +0100 <MarcelineVQ> nitrix: https://en.wikipedia.org/wiki/Extensionality would be my first stop
2020-11-30 00:54:37 +0100 <sondr3> hekkaidekapus_: Is there a way to do that in reverse? I haven't been able to find anything/figure it out
2020-11-30 00:54:42 +0100 <nitrix> MarcelineVQ, I think you're closer. I'm doing predicate logic.
2020-11-30 00:55:16 +0100 <hekkaidekapus_> sondr3: What reversal?
2020-11-30 00:55:41 +0100 <Axman6> alice_: that's a fairly broad question, do you have a more specific question?
2020-11-30 00:57:03 +0100 <erisco> I find univalence particularly mind-bending and pray one day I have the motivation to learn more
2020-11-30 00:57:29 +0100 <MarcelineVQ> erisco: try cubical agda :>
2020-11-30 00:57:52 +0100 <MarcelineVQ> https://gallais.github.io/blog/first-cubical-experiment.html
2020-11-30 00:57:55 +0100 <sondr3> hekkaidekapus_: How do I do what putChar does only `Char -> String` instead of `IO ()`. I want to use this in my Show instance for characters
2020-11-30 00:58:02 +0100 <erisco> well I'd want to understand more basically what role cubical type theory is playing
2020-11-30 00:58:07 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2020-11-30 00:58:14 +0100 <MarcelineVQ> it's like regular type theory but it's a cube
2020-11-30 00:58:15 +0100 <Axman6> :t (:"")
2020-11-30 00:58:17 +0100 <lambdabot> Char -> [Char]
2020-11-30 00:58:31 +0100 <erisco> ah, can't believe I didn't think of it!
2020-11-30 00:58:45 +0100 <MarcelineVQ> yes the tough things are sometimes obvious in retrospect
2020-11-30 00:59:07 +0100 <nitrix> MarcelineVQ, Yeah, I think you nailed it. Extensional vs Intentional equality. Thank you sir :)
2020-11-30 00:59:33 +0100 <erisco> it seems like, just from looking at univalence, that that really is the fundamental equality worth concern over, as programmers
2020-11-30 01:00:01 +0100 <erisco> and sure there is room to do the same thing differently, but univalence says that isn't making anything new
2020-11-30 01:00:03 +0100 <hekkaidekapus_> > 'λ' : "" -- sondr3: In case you didn’t see that Axman6 is replying to you.
2020-11-30 01:00:09 +0100 <lambdabot> "\955"
2020-11-30 01:00:16 +0100atk(~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.)
2020-11-30 01:00:36 +0100atk(~Arch-TK@ircpuzzles/staff/Arch-TK)
2020-11-30 01:00:46 +0100 <hekkaidekapus_> > pure 'λ' :: String
2020-11-30 01:00:48 +0100 <lambdabot> "\955"
2020-11-30 01:00:52 +0100 <monochrom> This is devolving into more and more XY problems piled upon each other.
2020-11-30 01:00:52 +0100awkragemnaugh
2020-11-30 01:01:17 +0100 <monochrom> This is what's wrong with not posting actual code.
2020-11-30 01:01:18 +0100 <Axman6> and that String, when printed, will produce a string with the lambda in it
2020-11-30 01:01:40 +0100 <monochrom> As a beginner, you realize that everything you say about your code has nothing to do with your code.
2020-11-30 01:01:44 +0100 <Axman6> uh, will print a lambda, is probably a better way to say it
2020-11-30 01:02:00 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2020-11-30 01:02:41 +0100 <Axman6> % let representChar c = showe c ++ ": " [c] in putStrLn % representChar '\955'
2020-11-30 01:02:41 +0100 <yahb> Axman6: ; <interactive>:16:23: error:; * Variable not in scope: showe :: a -> [a1]; * Perhaps you meant one of these: `show' (imported from Prelude), `shows' (imported from Prelude); <interactive>:16:57: error:; * Couldn't match expected type `String -> IO ()' with actual type `[a0]'; * Possible cause: `representChar' is applied to too many arguments; In the second argument of `(%)', namel
2020-11-30 01:02:46 +0100 <erisco> I'd take a univalence t-shirt, is all I'm saying, if someone was looking to raise money for some Haskell community project ;)
2020-11-30 01:02:48 +0100 <Axman6> % let representChar c = show c ++ ": " [c] in putStrLn % representChar '\955'
2020-11-30 01:02:48 +0100 <yahb> Axman6: ; <interactive>:17:33: error:; * Couldn't match expected type `[a] -> [Char]' with actual type `[Char]'; * The function `": "' is applied to one argument,; but its type `[Char]' has none; In the second argument of `(++)', namely `": " [c]'; In the expression: show c ++ ": " [c]; * Relevant bindings include; c :: a (bound at <interactive>:17:19); representChar :
2020-11-30 01:02:56 +0100 <Axman6> % let representChar c = show c ++ ": " ++ [c] in putStrLn % representChar '\955'
2020-11-30 01:02:56 +0100 <yahb> Axman6: ; <interactive>:18:59: error:; * Couldn't match expected type `String -> IO ()' with actual type `[Char]'; * Possible cause: `representChar' is applied to too many arguments; In the second argument of `(%)', namely representChar '\955'; In the expression: putStrLn % representChar '\955'; In the expression: let representChar c = show c ++ ": " ++ [...] in putStrLn % representCha
2020-11-30 01:03:28 +0100 <sondr3> I mean, my code is `show (Character a) = show a`, not sure how useful that is
2020-11-30 01:03:30 +0100 <monochrom> I don't think multiple % on the same line means multiple lines.
2020-11-30 01:03:34 +0100 <Axman6> % let representChar c = show c ++ ": " ++ [c] in putStrLn $ representChar '\955'
2020-11-30 01:03:34 +0100 <yahb> Axman6: '\955': λ
2020-11-30 01:03:39 +0100 <Axman6> I'm bad at this
2020-11-30 01:04:15 +0100 <monochrom> And this is what's wrong with $ too :)
2020-11-30 01:04:33 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165)
2020-11-30 01:05:46 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-11-30 01:05:47 +0100 <hekkaidekapus_> (And that’s a contrived putChar…)
2020-11-30 01:06:13 +0100solonarv(~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr) (Ping timeout: 246 seconds)
2020-11-30 01:06:37 +0100hekkaidekapus_hekkaidekapus
2020-11-30 01:06:46 +0100 <Axman6> % let representChar c = show c ++ ": " ++ [c] in representChar '\955'
2020-11-30 01:06:46 +0100 <yahb> Axman6: "'\\955': \955"
2020-11-30 01:08:16 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-11-30 01:08:17 +0100exlipse(~exlipse@4e69b241.skybroadband.com) (Ping timeout: 265 seconds)
2020-11-30 01:08:28 +0100 <Axman6> % let representChar c = show c ++ ": " ++ [c] in representChar '\DEL'
2020-11-30 01:08:28 +0100 <yahb> Axman6: "'\\DEL': \DEL"
2020-11-30 01:08:36 +0100 <Axman6> % let representChar c = show c ++ ": " ++ [c] in putStrLn $ representChar '\DEL'
2020-11-30 01:08:36 +0100 <yahb> Axman6: '\DEL': 
2020-11-30 01:08:42 +0100 <Axman6> :o
2020-11-30 01:09:15 +0100 <hekkaidekapus> Better to take the 1 hour lecture, I’d say :p
2020-11-30 01:10:46 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-11-30 01:10:47 +0100 <hekkaidekapus> (Next instalment: how to write ‘real’ Show instances…)
2020-11-30 01:10:59 +0100 <Axman6> deriving Show
2020-11-30 01:11:07 +0100 <Axman6> NEXT!
2020-11-30 01:11:13 +0100 <hekkaidekapus> lol
2020-11-30 01:11:39 +0100 <JavaSucksMan> that maintain read and show being inverses ;-)
2020-11-30 01:12:02 +0100 <Axman6> or, deriving Show via Hex Foo because DerivingVia is the best
2020-11-30 01:12:04 +0100gproto23(~gproto23@unaffiliated/gproto23) (Ping timeout: 256 seconds)
2020-11-30 01:13:52 +0100acidjnk_new(~acidjnk@p200300d0c719ff21c162f6267ce4f02c.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-30 01:15:14 +0100jollygood2(~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2020-11-30 01:16:56 +0100 <sondr3> `parseTest pExpr "#\\x03BB"` -> `#\λ`, yey, thanks all for helping
2020-11-30 01:17:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 01:18:05 +0100 <nitrix> FYI for the channel, Advent of Code 2020 starts soon :)
2020-11-30 01:19:13 +0100 <hekkaidekapus> sondr3: In short, Show ought to be used for producing actual Haskell values. If you want to format values for pretty looking-and-feeling, use a formatter or a pretty printer. For instance, <https://hackage.haskell.org/package/prettyprinter-1.7.0/docs/Prettyprinter.html>.
2020-11-30 01:19:39 +0100 <Axman6> yeah don't misuse show please
2020-11-30 01:20:50 +0100 <erisco> else you'll get pulled over and have to do a read test
2020-11-30 01:22:36 +0100jmchael(~Chi1thang@87.112.60.168) (Ping timeout: 240 seconds)
2020-11-30 01:22:53 +0100 <Axman6> we don't like law breakers around 'ere
2020-11-30 01:23:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-30 01:23:42 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 01:23:46 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-30 01:24:46 +0100 <sondr3> Fair points, I guess that makes a lot of sense. Coming from Rust I miss Debug/Display, I didn't realize that Show wasn't the same as Display
2020-11-30 01:25:30 +0100 <Axman6> Show is sort of more about serialisation than printing, but is usually used for the latter
2020-11-30 01:27:35 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 256 seconds)
2020-11-30 01:28:01 +0100SeMas(uid32977@gateway/web/irccloud.com/x-taxggkdzpxqpcjih) (Quit: Connection closed for inactivity)
2020-11-30 01:28:42 +0100christo(~chris@81.96.113.213)
2020-11-30 01:30:33 +0100 <monochrom> The conflation all began with "42" being a suitable format for all of: serialization, dev's eyes, end-user's eyes.
2020-11-30 01:30:56 +0100 <Axman6> we should just learn to read CBOR
2020-11-30 01:31:23 +0100 <monochrom> You can bet that from that example people have only 33% chance of making the correct bet.
2020-11-30 01:31:40 +0100alice_(~alice@209.131.251.182) (Quit: Leaving)
2020-11-30 01:31:53 +0100urek(~urek@2804:7f1:e10a:5ac1:8db3:3757:9c7d:4898) (Ping timeout: 272 seconds)
2020-11-30 01:32:01 +0100 <dolio> I'm kind of skeptical that compositional pretty printing would actually work out well.
2020-11-30 01:32:22 +0100 <erisco> so it didn't work out well in prettier printing?
2020-11-30 01:33:01 +0100 <dolio> Well, what I mean is pretty printing where how it's done is cobbled together from a dozen instances written by people who don't communicate.
2020-11-30 01:33:10 +0100 <dolio> Which is the point of Show.
2020-11-30 01:33:16 +0100christo(~chris@81.96.113.213) (Ping timeout: 272 seconds)
2020-11-30 01:33:59 +0100jedws(~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au)
2020-11-30 01:34:01 +0100 <dolio> 'Show valid Haskell for the value' is a spec you can adhere to and when you combine things, you get output that makes some sense.
2020-11-30 01:34:06 +0100 <monochrom> You know, a pretty printing library is totally unnecessary unless you have an AST that you want to output in a nicely indented format.
2020-11-30 01:34:19 +0100ephemient(uid407513@gateway/web/irccloud.com/x-bhblrmwjykztmyrl) (Quit: Connection closed for inactivity)
2020-11-30 01:34:48 +0100 <dolio> 'Show an easy to understand representation of the value' seems much less likely to succeed.
2020-11-30 01:34:53 +0100 <monochrom> If you are just outputting to a one-line format, even if the input is an AST, all you need is your own recursive X->String function.
2020-11-30 01:35:21 +0100 <erisco> the only real features of prettier printing, from what I recall, is that of indentation
2020-11-30 01:35:29 +0100 <monochrom> You don't even need your own bloody class. You only need to think up one single function name.
2020-11-30 01:37:32 +0100 <hekkaidekapus> printf?
2020-11-30 01:38:17 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-30 01:38:51 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Quit: Leaving)
2020-11-30 01:39:19 +0100 <iqubic> How does one make a haskell project with multiple directories?
2020-11-30 01:39:40 +0100 <Axman6> mkdir foo bar
2020-11-30 01:40:58 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-11-30 01:41:00 +0100 <iqubic> I'm running into this error:
2020-11-30 01:41:01 +0100 <iqubic> https://dpaste.com/BCPQ2TU98
2020-11-30 01:41:12 +0100ephemient(uid407513@gateway/web/irccloud.com/x-niqthzebbrwzruhe)
2020-11-30 01:41:21 +0100 <iqubic> I have a cabal project with a src directory, and inside that I have a Lib folder.
2020-11-30 01:41:47 +0100 <iqubic> And in src/Lib/ I have Parser.hs.
2020-11-30 01:42:07 +0100tabemann(~tabemann@2600:1700:7990:24e0:1a58:f55b:3d3:7cd)
2020-11-30 01:42:11 +0100 <koz_> What's the module declaration in Parser.hs?
2020-11-30 01:42:45 +0100 <iqubic> module Parser where ....
2020-11-30 01:43:07 +0100 <koz_> iqubic: It's the issue.
2020-11-30 01:43:08 +0100 <Axman6> needs to be module Lib.PArser
2020-11-30 01:43:13 +0100 <Axman6> as the error says
2020-11-30 01:43:14 +0100 <iqubic> Ah.
2020-11-30 01:43:15 +0100 <koz_> Your module declaration has to match the folder structure.
2020-11-30 01:43:18 +0100 <koz_> Exactly.
2020-11-30 01:43:37 +0100 <koz_> (minus the src, because I assume your .cabal has 'hs-source-dirs: src' in it)
2020-11-30 01:43:38 +0100 <monochrom> Unless you really intend the module name to be Parser
2020-11-30 01:44:50 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 01:44:50 +0100 <monochrom> then play with https://cabal.readthedocs.io/en/3.4/cabal-package.html#pkg-field-hs-source-dirs
2020-11-30 01:45:07 +0100 <monochrom> For best results, read the whole chapter carefully.
2020-11-30 01:45:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-30 01:45:33 +0100 <justsomeguy> I found this reverse function that is implemented in terms of foldr “rev l = foldr (\x r -> r . (x:)) id l []”, but am having a hard time figuring out what the evaluation steps are. What happens after I get to “((((id . (4:)) . (3:)) . (2:)) . (1:)) []”?
2020-11-30 01:46:05 +0100justsomeguythinks he misunderstands what the composition operator does.
2020-11-30 01:46:06 +0100 <monochrom> id . (4 :) = (4 :)
2020-11-30 01:46:11 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-30 01:46:22 +0100 <koz_> :t (2:)
2020-11-30 01:46:24 +0100 <lambdabot> Num a => [a] -> [a]
2020-11-30 01:46:25 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 01:46:27 +0100 <monochrom> (4 :) . (3 :) = (\r -> 4 : 3 : r)
2020-11-30 01:46:36 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-11-30 01:46:36 +0100 <monochrom> I think you can do the rest.
2020-11-30 01:46:39 +0100 <iqubic> monochrom: Are you telling me that Parser is a bad name for a module?
2020-11-30 01:47:00 +0100 <koz_> iqubic: We aren't sure if the issue is that your module is misnamed or if your folder structure is not what you're after.
2020-11-30 01:47:01 +0100 <monochrom> No. I am saying it is up to you. You make a decision, then either way there is a solution.
2020-11-30 01:47:13 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-30 01:47:14 +0100 <koz_> I assumed the former, monochrom is presenting the solution in case of the latter.
2020-11-30 01:47:41 +0100 <monochrom> But it's safe to bet if you wrote "module Parser" then that's what you want.
2020-11-30 01:47:42 +0100 <iqubic> I want it to be called Lib.Parser, because it's in the Lib folder and called Parser.hs
2020-11-30 01:47:56 +0100 <monochrom> OK then it's "module Lib.Parser"
2020-11-30 01:48:01 +0100 <koz_> Yep.
2020-11-30 01:48:17 +0100 <iqubic> No, I wrote 'module Parser', because I have no idea how to do multi-directory haskell projects.
2020-11-30 01:48:57 +0100 <iqubic> When I import the module from other files, I want to write: "import Lib.Parser"
2020-11-30 01:49:06 +0100 <monochrom> That's why life is a gamble.
2020-11-30 01:49:12 +0100 <koz_> hs-source-dirs can contains as many directories as you like.
2020-11-30 01:49:27 +0100 <koz_> You don't have to limit yourself to just one.
2020-11-30 01:50:05 +0100 <iqubic> hs-sourc-dirs will only have one directory, src. This file is located at src/Lib/Parser.hs
2020-11-30 01:50:11 +0100 <Axman6> needs to be module Lib.PArserbut that would be a very unusual layout for the project
2020-11-30 01:50:28 +0100 <Axman6> uh, "but that would be a very unusual layout for the project"
2020-11-30 01:51:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-11-30 01:51:16 +0100 <monochrom> btw justsomeguy what you're seeing is a special case of how to express foldl as a foldr
2020-11-30 01:51:35 +0100 <iqubic> Two things: 1) I'm renaming it to from Lib to Common, and 2) This is for Advent Of Code, so I don't care how unusual the layout is.
2020-11-30 01:52:08 +0100 <iqubic> I'm making my own simple library of functions to use during Advent, and I want to compartmentalize things.
2020-11-30 01:52:11 +0100 <monochrom> because reverse is a special case of foldl: reverse = foldl (\a x -> x : a) []
2020-11-30 01:52:34 +0100 <justsomeguy> The foldl version is much easier to read ^_^.
2020-11-30 01:52:47 +0100alp__(~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61) (Ping timeout: 272 seconds)
2020-11-30 01:53:18 +0100 <Axman6> yes
2020-11-30 01:53:35 +0100 <Axman6> > foldl (flip (:)) [] "abcd"
2020-11-30 01:53:38 +0100 <lambdabot> "dcba"
2020-11-30 01:53:43 +0100 <monochrom> justsomeguy: https://ertes.eu/tutorial/foldr.html >:)
2020-11-30 01:54:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 01:55:35 +0100 <iqubic> I still can't believe Ertes is gone.
2020-11-30 01:55:53 +0100 <iqubic> Also, that tutorial was how I learned to master foldr.
2020-11-30 01:56:04 +0100andi-(~andi-@NixOS/user/andi-) (Ping timeout: 240 seconds)
2020-11-30 01:57:20 +0100 <iqubic> Alright. I finally managed to make multi-directory thing work properly.
2020-11-30 01:57:30 +0100 <iqubic> Thanks everyone.
2020-11-30 01:57:42 +0100exlipse(~exlipse@4e69b241.skybroadband.com)
2020-11-30 01:58:59 +0100 <monochrom> I wouldn't call it multi-directory cabal project. On two counts: 1. this is just one package, not even a project of 3 packages; 2. you only have "hs-source-dirs: src", not even "hs-source-dirs: src1 src2 src3 src4/part1 src4/part2"
2020-11-30 01:59:22 +0100xpika(~alan@2001:8003:5d32:1f00:a5ad:52a6:3658:edb9) (Ping timeout: 260 seconds)
2020-11-30 02:00:20 +0100 <iqubic> Right. I see.
2020-11-30 02:00:27 +0100 <iqubic> That makes sense.
2020-11-30 02:02:43 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2020-11-30 02:04:03 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 260 seconds)
2020-11-30 02:05:13 +0100bandali(znc@fsf/interns/bandali) (Quit: ZNC - https://znc.in)
2020-11-30 02:06:42 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Read error: Connection reset by peer)
2020-11-30 02:09:53 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 260 seconds)
2020-11-30 02:10:54 +0100andi-(~andi-@NixOS/user/andi-)
2020-11-30 02:12:49 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 264 seconds)
2020-11-30 02:13:01 +0100jedws(~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-30 02:15:16 +0100shatriff_(~vitaliish@176.52.219.10) (Ping timeout: 240 seconds)
2020-11-30 02:16:18 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-30 02:18:03 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds)
2020-11-30 02:18:24 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-30 02:19:18 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-11-30 02:19:18 +0100stree(~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2020-11-30 02:19:24 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-30 02:19:35 +0100stree(~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net)
2020-11-30 02:19:36 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-11-30 02:21:53 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-30 02:22:19 +0100justsomeguyfinished typing out the reduction process for “let rev l = foldr (\x r -> r . (x:)) id l [] in rev [1,2,3,4]”, and feels like he understands it now.
2020-11-30 02:22:22 +0100cheater1(~user@unaffiliated/cheater)
2020-11-30 02:22:23 +0100 <justsomeguy> https://gist.github.com/kingparra/e5aeac3f540ef2e2172be9f16cf15b8c
2020-11-30 02:22:24 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
2020-11-30 02:22:43 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 260 seconds)
2020-11-30 02:22:47 +0100cheater1cheater
2020-11-30 02:22:50 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-30 02:22:53 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 02:23:07 +0100 <justsomeguy> I think I'll do that foldr tutorial now.
2020-11-30 02:23:42 +0100bandali(znc@fsf/interns/bandali)
2020-11-30 02:24:05 +0100 <dsal> > foldr f a [b, c, d] :: Expr -- justsomeguy
2020-11-30 02:24:08 +0100 <lambdabot> f b (f c (f d a))
2020-11-30 02:24:54 +0100 <ski> @where folds
2020-11-30 02:24:54 +0100 <lambdabot> <http://en.wikipedia.org/wiki/File:Fold-diagrams.svg>,<https://cale.l5.ca/share/Folds.svg>
2020-11-30 02:25:26 +0100 <ski> hm, oh. it was deleted from WP
2020-11-30 02:25:38 +0100skilooks at Cale
2020-11-30 02:25:47 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
2020-11-30 02:26:33 +0100 <justsomeguy> This is great; Total folding immersion time!
2020-11-30 02:26:45 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 02:27:12 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165)
2020-11-30 02:27:28 +0100 <ski> @where evolution -- "Yet another senior Haskell programmer (leaned so far right he came back left again!)"
2020-11-30 02:27:28 +0100 <lambdabot> http://www.willamette.edu/~fruehr/haskell/evolution.html
2020-11-30 02:28:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-30 02:29:05 +0100_deepfire(~user@80.92.100.69)
2020-11-30 02:29:21 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-11-30 02:30:38 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-11-30 02:32:16 +0100rprije(~rprije@194-193-174-214.tpgi.com.au) (Ping timeout: 240 seconds)
2020-11-30 02:34:23 +0100Iceland_jack(~user@31.124.48.169) (Ping timeout: 260 seconds)
2020-11-30 02:36:46 +0100nehsou^(nehsou@ip98-184-89-2.mc.at.cox.net) ()
2020-11-30 02:37:32 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-30 02:37:42 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
2020-11-30 02:38:10 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 02:39:24 +0100Lord_of_Life_(~Lord@46.217.220.24)
2020-11-30 02:40:16 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
2020-11-30 02:41:03 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
2020-11-30 02:41:37 +0100rprije(~rprije@118.102.88.103)
2020-11-30 02:41:43 +0100 <dsal> as justsomeguy descends deep into the catamorph
2020-11-30 02:41:50 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 02:41:57 +0100 <_deepfire> Does TH have something that would allow:? reifyType :: Typeable a => Q Exp
2020-11-30 02:42:01 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Remote host closed the connection)
2020-11-30 02:42:53 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 02:43:57 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no) (Quit: Leaving)
2020-11-30 02:44:00 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Remote host closed the connection)
2020-11-30 02:44:36 +0100cole-h(~cole-h@73.48.197.220)
2020-11-30 02:44:49 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 02:45:21 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-11-30 02:48:16 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2020-11-30 02:49:00 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-11-30 02:49:45 +0100et09(~et09@unaffiliated/endolphin)
2020-11-30 02:49:49 +0100et09(~et09@unaffiliated/endolphin) ()
2020-11-30 02:50:52 +0100conal(~conal@64.71.133.70)
2020-11-30 02:51:10 +0100 <hekkaidekapus> ski: <https://commons.wikimedia.org/wiki/File:Foldr1-diagram.svg>
2020-11-30 02:53:40 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 02:55:18 +0100 <_deepfire> Err, reifyType :: Typeable a => Q Type, of course.
2020-11-30 02:57:48 +0100 <ski> oh, ty, hekkaidekapus
2020-11-30 02:57:52 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 246 seconds)
2020-11-30 02:57:57 +0100 <ski> although, it's only one of the diagrams
2020-11-30 02:59:16 +0100 <hekkaidekapus> Yeah, the other link has all them. Maybe another upload to Commons is warranted.
2020-11-30 02:59:25 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2020-11-30 02:59:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 03:01:23 +0100 <hekkaidekapus> (The user name is gone, too.)
2020-11-30 03:02:32 +0100jespada(~jespada@90.254.245.49)
2020-11-30 03:03:22 +0100sagax(~sagax_nb@213.138.71.146)
2020-11-30 03:04:01 +0100adm_(~adm@117.208.21.247)
2020-11-30 03:04:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-30 03:08:38 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-30 03:08:38 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-11-30 03:09:50 +0100guest1130(~user@49.5.6.87)
2020-11-30 03:11:52 +0100 <ski> @hoogle reifyType
2020-11-30 03:11:53 +0100 <lambdabot> Language.Haskell.TH reifyType :: Name -> Q Type
2020-11-30 03:11:53 +0100 <lambdabot> Language.Haskell.TH.Syntax reifyType :: Name -> Q Type
2020-11-30 03:11:53 +0100 <lambdabot> TH.ReifySimple reifyType :: Name -> Q TypeInfo
2020-11-30 03:12:10 +0100 <ski> @hoogle Typeable a => Q (TType a)
2020-11-30 03:12:11 +0100 <lambdabot> Data.Ecstasy defStorage :: HasWorld world m => world ('WorldOf m)
2020-11-30 03:12:11 +0100 <lambdabot> Data.Ecstasy.Internal defStorage :: HasWorld world m => world ('WorldOf m)
2020-11-30 03:12:11 +0100 <lambdabot> Data.Ecstasy.Internal defStorage :: (HasWorld world m, Generic (world ('WorldOf m)), GDefault 'True (Rep (world ('WorldOf m)))) => world ('WorldOf m)
2020-11-30 03:12:32 +0100vg(~vg@139.59.59.230)
2020-11-30 03:12:41 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 03:12:56 +0100pjb(~t@2a01cb04063ec50095ae1a5ec1ef6a7a.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer)
2020-11-30 03:12:56 +0100vg(~vg@139.59.59.230)
2020-11-30 03:16:33 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-ilswyamvtndfxsrg) (Quit: Connection closed for inactivity)
2020-11-30 03:19:21 +0100hackagepolysemy-extra 0.1.7.0 - Extra Input and Output functions for polysemy.. https://hackage.haskell.org/package/polysemy-extra-0.1.7.0 (locallycompact)
2020-11-30 03:20:10 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2020-11-30 03:23:28 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 272 seconds)
2020-11-30 03:23:35 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 03:24:57 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 03:25:17 +0100Tario(~Tario@201.192.165.173)
2020-11-30 03:25:42 +0100xff0x(~fox@2001:1a81:524c:7b00:6035:c577:b880:b950) (Ping timeout: 260 seconds)
2020-11-30 03:26:24 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-11-30 03:26:56 +0100 <hekkaidekapus> I have a Dhall record `{ x.x1 = "foo", y.y1 = "bar", z.z1 = "qux" }` out of which I want to make a Data.Map. I don’t know the labels `x1, y1, z1` beforehand. Any ideas?
2020-11-30 03:27:31 +0100xff0x(~fox@2001:1a81:5287:f00:6870:12f3:8204:7d32)
2020-11-30 03:29:25 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-11-30 03:29:54 +0100exlipse(~exlipse@4e69b241.skybroadband.com) (Ping timeout: 265 seconds)
2020-11-30 03:30:26 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-30 03:33:36 +0100 <jle`> hekkaidekapus: what map do you want from that?
2020-11-30 03:34:35 +0100 <hekkaidekapus> I guess that’s part of the question. Let’s say "x <> x1" as a key.
2020-11-30 03:35:51 +0100 <hekkaidekapus> (Using Prelude.Map.keyText)
2020-11-30 03:36:02 +0100joaj(~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) (Ping timeout: 264 seconds)
2020-11-30 03:36:21 +0100hackagepolysemy-path 0.1.0.0 - Polysemy versions of Path functions. https://hackage.haskell.org/package/polysemy-path-0.1.0.0 (locallycompact)
2020-11-30 03:36:30 +0100 <hekkaidekapus> But that relies on having a map to begin with…
2020-11-30 03:36:59 +0100joaj(~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771)
2020-11-30 03:37:14 +0100 <koz_> I think what jle` is asking is 'what should the value type of the Map be'?
2020-11-30 03:37:21 +0100 <hekkaidekapus> Anyway, dirty hacks (through YAML for instance) are welcome.
2020-11-30 03:37:24 +0100 <koz_> The Dhall record can have values whose types are arbitrary.
2020-11-30 03:37:43 +0100 <hekkaidekapus> values are Text.
2020-11-30 03:38:05 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Remote host closed the connection)
2020-11-30 03:38:08 +0100 <koz_> So your goal is a Map Text Text?
2020-11-30 03:39:05 +0100 <koz_> This won't work? http://hackage.haskell.org/package/dhall-1.36.0/docs/Dhall-Map.html#v:toMap
2020-11-30 03:39:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 03:39:09 +0100 <monochrom> I have a feeling that your dhall parser library already has it. Since aeson already has it.
2020-11-30 03:39:09 +0100 <hekkaidekapus> koz_: Typing the result in Haskell is easy. The tricky part is finding a way to apply `toMap` on an irregular record.
2020-11-30 03:39:45 +0100 <koz_> hekkaidekapus: What do you mean by 'irregular'?
2020-11-30 03:39:53 +0100 <koz_> I thought you said that the values are all Text?
2020-11-30 03:39:58 +0100 <koz_> Or is that the desired outcome?
2020-11-30 03:40:02 +0100 <hekkaidekapus> monochrom: aeson hacks are welcome, too.
2020-11-30 03:40:53 +0100 <hekkaidekapus> koz_: toMap { x = "foo", y = "bar", z = "qux" }` is okay. But toMap on the OP is not.
2020-11-30 03:41:26 +0100 <monochrom> In aeson if you request "decode to the Value type" you get an Object case that has a hashmap from Text to Text. The keys are the actual, dynamically discovered field names.
2020-11-30 03:41:39 +0100 <koz_> monochrom: Text to Value.
2020-11-30 03:41:53 +0100 <monochrom> Oh! oops. That.
2020-11-30 03:42:23 +0100 <hekkaidekapus> Ok, will try that, thanks.
2020-11-30 03:42:33 +0100 <hekkaidekapus> YAML ideas?
2020-11-30 03:42:52 +0100hekkaidekapusdislikes JSON with a passion…
2020-11-30 03:43:10 +0100 <monochrom> This is really not JSON-specific.
2020-11-30 03:43:22 +0100 <monochrom> I can just as well tell the same story for cassava.
2020-11-30 03:43:40 +0100 <Axman6> YAML is JSON though
2020-11-30 03:43:55 +0100 <hekkaidekapus> JSON is YAML, rather.
2020-11-30 03:43:58 +0100 <Axman6> I should look a Dhall more
2020-11-30 03:44:20 +0100 <monochrom> cassava is relational database
2020-11-30 03:44:23 +0100 <monochrom> THERE
2020-11-30 03:44:24 +0100 <Axman6> I guss
2020-11-30 03:44:32 +0100 <Axman6> guess*
2020-11-30 03:44:48 +0100 <jle`> hekkaidekapus: so you're saying you have a dhall reord as an `Expr`? or as a Text/String ?
2020-11-30 03:45:13 +0100 <monochrom> OK actually just one relational table. You need several csv for an interesting database.
2020-11-30 03:45:41 +0100 <Axman6> enter frames
2020-11-30 03:46:04 +0100 <Axman6> (which IIRC also has a dsv backend for parsing, for super fast parsing)
2020-11-30 03:46:05 +0100 <jle`> s/reord/record
2020-11-30 03:46:17 +0100 <hekkaidekapus> jle`: The record is an expression.
2020-11-30 03:47:00 +0100 <jle`> er by that do you mean a Expr type in the dhall library?
2020-11-30 03:47:19 +0100 <jle`> or an expression as a syntactical idea within dhall
2020-11-30 03:47:48 +0100 <hekkaidekapus> A Dhall expression. No YAML2Dhall or JSON2Dhall shenanigans yet.
2020-11-30 03:48:06 +0100 <jle`> so you have it as text, you mean
2020-11-30 03:48:11 +0100 <jle`> in dhall syntax
2020-11-30 03:48:15 +0100 <hekkaidekapus> yep
2020-11-30 03:49:03 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-30 03:49:25 +0100Guest648(~textual@185.156.175.35)
2020-11-30 03:49:49 +0100 <jle`> hm, i guess you could manually turn it into nested Map's, and then flatten it out in the end
2020-11-30 03:49:55 +0100 <jle`> by parsing it into a haskell Expr
2020-11-30 03:49:57 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-11-30 03:50:17 +0100 <Guest648> can anyone help me on kubernetes
2020-11-30 03:50:37 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2020-11-30 03:50:37 +0100 <Axman6> does that have anything to do with Haskell?
2020-11-30 03:50:47 +0100 <koz_> Guest648: Sir, this is a Wendy's^W^W#haskell.
2020-11-30 03:50:50 +0100 <jle`> your nested map type could be `Free (Map Text) Text`, a nested map with Text as keys and Text leaves
2020-11-30 03:51:00 +0100 <Guest648> ohhh shit sorry wrong group
2020-11-30 03:51:01 +0100 <jle`> (a rose tree)
2020-11-30 03:51:09 +0100 <koz_> jle`: Ah, you mean the same trick Beam uses?
2020-11-30 03:51:10 +0100 <hekkaidekapus> jle`: Ah, that’s neat!
2020-11-30 03:51:19 +0100 <jle`> Free should be called Rose anyway
2020-11-30 03:51:23 +0100 <hekkaidekapus> Free is the key.
2020-11-30 03:51:47 +0100 <jle`> you don't need to use Free specifically per se, but it does have some neat utility functions for building up and squashing down nested layers
2020-11-30 03:51:50 +0100 <koz_> jle`: Isn't Free more general though? Rose is a special case where f is some linear collection-ish thing.
2020-11-30 03:52:16 +0100 <jle`> hm, that's fair :)
2020-11-30 03:52:30 +0100 <jle`> the name Free just feels a little more mystifying than it needs to be
2020-11-30 03:52:45 +0100 <jle`> and a lot of other things are free in different ways
2020-11-30 03:53:02 +0100SeMas(uid32977@gateway/web/irccloud.com/x-gvhiftwjfdiypfrd)
2020-11-30 03:53:04 +0100 <koz_> Yeah, naming is something of an issue sometimes
2020-11-30 03:53:07 +0100JJ15__(~JJ@2a00:23a8:4382:a900:68df:3986:d3b1:2e08) (Ping timeout: 272 seconds)
2020-11-30 03:53:12 +0100 <hekkaidekapus> Thank you, jle`! I know what you mean (I could go with Generics, too). I was just looking the problem from a Dhall perspective, not a Haskell’s.
2020-11-30 03:53:14 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 272 seconds)
2020-11-30 03:53:21 +0100koz_remembers how like, only recently someone in here freaked out about UndecidableInstances.
2020-11-30 03:53:36 +0100 <monochrom> Rose tree and Free are great ways of thinking of each other.
2020-11-30 03:53:52 +0100 <jle`> yeah, if you want to get it into haskell land then i'd probably start with getting it into an Expr
2020-11-30 03:54:07 +0100 <koz_> monochrom: Rose Free. :P
2020-11-30 03:54:14 +0100 <jle`> actually the Dhall module has a few tools for parsing Expr's into Haskell types in a type classy way, pretty much equivalent to FromJSON/ToJSON
2020-11-30 03:54:25 +0100 <jle`> but i'm not sure if they would be too useful here
2020-11-30 03:54:57 +0100 <hekkaidekapus> jle`: No, here they are useless because of the expression’s irregularity.
2020-11-30 03:55:04 +0100JavaSucksMan(403483ab@64-52-131-171.championbroadband.com) (Ping timeout: 245 seconds)
2020-11-30 03:55:05 +0100 <hekkaidekapus> I have to hand-parse the thing.
2020-11-30 03:55:25 +0100 <Guest648> what are we talking about here
2020-11-30 03:55:28 +0100 <Guest648> im a haskell pro i can help
2020-11-30 03:55:32 +0100 <jle`> i meant, you could parse it into a Free (Map Text) using some of the tools there maybe. but yeah, maybe doing it by hand would be the cleanest way
2020-11-30 03:55:50 +0100 <jle`> Record's are actually already expressed in dhall as a Map Text
2020-11-30 03:56:02 +0100 <Axman6> Guest648: What is Haskell?
2020-11-30 03:56:11 +0100 <hekkaidekapus> jle`: Regulat ones, yes.
2020-11-30 03:56:18 +0100 <hekkaidekapus> *Regular
2020-11-30 03:56:39 +0100 <Guest648> haskell is a functional programming language axman6
2020-11-30 03:56:51 +0100 <Axman6> what does that mean?
2020-11-30 03:56:54 +0100conal(~conal@64.71.133.70)
2020-11-30 03:56:54 +0100 <jle`> ah yeah, literals i suppose
2020-11-30 03:57:02 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 03:57:09 +0100 <koz_> Axman6: Are you attempting the Church-Turing test? :P
2020-11-30 03:57:20 +0100 <texasmynsted> Hmm. Type Driven Development with Idris is on sale at manning for a couple more hours.
2020-11-30 03:57:31 +0100 <hekkaidekapus> jle`: Because when you have a map in Dhall, it is trivial to flatten it as a list, and then Data.Map.fromListXXX will do the rest.
2020-11-30 03:57:31 +0100 <Guest648> it means taking java and inverting it
2020-11-30 03:57:33 +0100 <Axman6> koz_: that would be telling. You're next
2020-11-30 03:57:48 +0100 <Axman6> yes, Java is disfunctional
2020-11-30 03:58:17 +0100 <jle`> hekkaidekapus: by a map in Dhall, do you mean a List { key : Text, val : a } ?
2020-11-30 03:58:29 +0100conal(~conal@64.71.133.70)
2020-11-30 03:58:30 +0100 <hekkaidekapus> Yes.
2020-11-30 03:58:37 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 03:58:52 +0100 <Guest648> i learned haskell when i was 7
2020-11-30 03:59:02 +0100 <hekkaidekapus> jle`: And that’s the type of toMap for a record.
2020-11-30 03:59:09 +0100 <Guest648> i am a haskell prodigy
2020-11-30 03:59:15 +0100 <jle`> oh wow i totally forgot that ToMap was a dhall primitive
2020-11-30 03:59:23 +0100 <jle`> fancy stuff
2020-11-30 03:59:24 +0100 <koz_> Guest648: 7? Not the womb? Disappoint.
2020-11-30 03:59:36 +0100 <jle`> yeah, i see what you mean
2020-11-30 03:59:38 +0100 <hekkaidekapus> jle`: yeah, built-in!
2020-11-30 03:59:54 +0100 <Guest648> my mom named me cabal
2020-11-30 04:00:22 +0100 <koz_> Guest648: I thought she named you Guest648?
2020-11-30 04:00:52 +0100 <texasmynsted> Anybody here read "Type-Driven Development with Idris"?
2020-11-30 04:01:04 +0100 <koz_> texasmynsted: I did.
2020-11-30 04:01:11 +0100 <texasmynsted> What is the verdict?
2020-11-30 04:01:21 +0100 <koz_> It's a great resource if you want to learn Idris.
2020-11-30 04:01:29 +0100 <koz_> (although you'll need the v2 errata)
2020-11-30 04:01:32 +0100 <koz_> (at least now)
2020-11-30 04:01:48 +0100 <Guest648> yes but the haskell book is much better written by the holiest guy named Christopher Allen
2020-11-30 04:01:54 +0100 <texasmynsted> So it not longer applies?
2020-11-30 04:02:12 +0100 <koz_> texasmynsted: It is, if you use the v2 errata.
2020-11-30 04:02:13 +0100 <Guest648> neffective methods and materials have made Haskell unnecessarily hard for many people to learn, but I find Haskell so pleasant to use that I want to help people learn it. I've spent the last two years actively teaching Haskell online and in person. Along the way, I started keeping notes on exercises and methods of teaching specific concepts and techniques that worked. Those notes eventually turned into my guide for learning Haskell. I'm still
2020-11-30 04:02:14 +0100 <Guest648> learning how to teach Haskell better by working with people locally in Austin, Texas, as well as online.
2020-11-30 04:02:22 +0100 <koz_> Edwin posted to this effect just today in fact!
2020-11-30 04:02:42 +0100 <koz_> Guest648: Were you implemented in Haskell too?
2020-11-30 04:03:05 +0100 <Guest648> chris allen is the pope for my religion
2020-11-30 04:03:13 +0100 <texasmynsted> Are you quoting Chris ALlen?
2020-11-30 04:03:30 +0100 <Guest648> you mean father allen
2020-11-30 04:03:34 +0100 <koz_> texasmynsted: Gotta cite the implementer.
2020-11-30 04:03:35 +0100 <texasmynsted> Are you talking about "Haskell from first principles?"
2020-11-30 04:03:38 +0100 <Guest648> he is a pope after all
2020-11-30 04:03:46 +0100 <koz_> It's like --version except for chatbots. :P
2020-11-30 04:04:14 +0100 <Guest648> amazing book you guys should make sure to buy the bible
2020-11-30 04:04:33 +0100 <koz_> Guest648: Do you have time to hear about our lord and saviour Nyarlathotep?
2020-11-30 04:04:43 +0100 <texasmynsted> Sigh
2020-11-30 04:05:07 +0100 <texasmynsted> I guess I do not really have time for another book to add to the stack
2020-11-30 04:06:14 +0100 <texasmynsted> I do not really _need_ to learn Idris right now
2020-11-30 04:06:33 +0100 <Guest648> just read our bible
2020-11-30 04:06:42 +0100 <Guest648> haskell from first principle covers everything
2020-11-30 04:07:18 +0100 <texasmynsted> I have the book.
2020-11-30 04:07:20 +0100 <texasmynsted> thanks
2020-11-30 04:07:25 +0100 <Guest648> its the best
2020-11-30 04:07:29 +0100 <koz_> Guest648: Clearly you have a great desire to ponder the mysteries of our lord and saviour Nyarlathotep.
2020-11-30 04:07:44 +0100 <justsomeguy> I'm going through hpfp right now and taking notes. Sometimes I really appreciate it and sometimes I hate the verbosity, or think something could be explained better a different way (type classes). It's been kind of a love/hate relationship. Maybe after I finish it I'll write a review.
2020-11-30 04:07:59 +0100 <Guest648> he doesnt hold a pencil to my pope His holiness Christopher allen
2020-11-30 04:08:16 +0100 <koz_> Nyarlathotep holds every pencil in his holy tentacles.
2020-11-30 04:08:17 +0100 <texasmynsted> Really the greatest model for programmer is "keyboard cat" https://www.youtube.com/watch?v=J---aiyznGQ
2020-11-30 04:09:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-30 04:10:20 +0100 <texasmynsted> What about Julie?
2020-11-30 04:10:36 +0100conal(~conal@64.71.133.70)
2020-11-30 04:10:54 +0100 <koz_> texasmynsted: What about her?
2020-11-30 04:11:29 +0100 <Guest648> you sir are trolling
2020-11-30 04:11:37 +0100 <Guest648> i do not appreciate such gestures
2020-11-30 04:11:44 +0100 <texasmynsted> Guest648: Seems to have much "praise" for Chris but said nothing about Julie.
2020-11-30 04:11:55 +0100koz_would like to make some kind of mirror joke here, but it makes itself.
2020-11-30 04:12:02 +0100 <hekkaidekapus> koz_: <https://paste.tomsmeding.com/FajoLeow> for when you will decide to give Dhall a close look.
2020-11-30 04:12:33 +0100 <koz_> hekkaidekapus: I figured I never wanted to, and now I'm even more certain. :D
2020-11-30 04:12:34 +0100 <Guest648> no julie left his holiness
2020-11-30 04:12:41 +0100 <Guest648> and joined chris martin
2020-11-30 04:12:54 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 04:13:32 +0100 <koz_> Guest648: Was your father Andrei Markov by any chance?
2020-11-30 04:13:34 +0100 <Guest648> my loyalty lies only to His holiness Martin
2020-11-30 04:13:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-30 04:13:54 +0100 <hekkaidekapus> koz_: Be happy in your weakly typed gardens, C (I mean JSON) and Python (err. YAML). :p
2020-11-30 04:14:07 +0100 <koz_> hekkaidekapus: Who said I liked any of those things?
2020-11-30 04:14:20 +0100 <koz_> Something something argumentum ad serpentum.
2020-11-30 04:14:26 +0100 <hekkaidekapus> heh
2020-11-30 04:14:36 +0100 <texasmynsted> Yes, Chris Martin and Julie Moronuki's site is impressive.
2020-11-30 04:14:42 +0100joaj(~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771) (Ping timeout: 260 seconds)
2020-11-30 04:14:54 +0100 <Guest648> when will chris allen give a sermon in this channel
2020-11-30 04:15:17 +0100 <texasmynsted> Guest648: Who are you?
2020-11-30 04:15:27 +0100 <koz_> Guest648: The only one who gives sermons here is the Most Holy SPJ.
2020-11-30 04:15:30 +0100 <Guest648> a loyal follower
2020-11-30 04:15:33 +0100 <koz_> But alas, it has never occurred.
2020-11-30 04:15:42 +0100 <texasmynsted> I have never seen SPJ here
2020-11-30 04:16:35 +0100conal(~conal@64.71.133.70)
2020-11-30 04:16:59 +0100 <koz_> (also, shouldn't it be SP-J?)
2020-11-30 04:17:29 +0100 <hekkaidekapus> SLP-J
2020-11-30 04:18:28 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2020-11-30 04:18:33 +0100 <hekkaidekapus> Since Idris was brought up, did you notice `it : …`, koz_?
2020-11-30 04:18:50 +0100 <koz_> hekkaidekapus: Am I missing something?
2020-11-30 04:18:59 +0100 <Guest648> can somoene please help me in kubernetes
2020-11-30 04:19:07 +0100 <Axman6> no
2020-11-30 04:19:12 +0100 <koz_> Guest648: Can you get me a double chocolate ice cream?
2020-11-30 04:19:23 +0100 <Guest648> only if u help me first
2020-11-30 04:19:45 +0100 <koz_> Is your problem with Haskell?
2020-11-30 04:19:46 +0100 <hekkaidekapus> koz_: In the paste, there is an expression `it` typed `{ x : { x1 : Text }, …`, à la Idris.
2020-11-30 04:19:56 +0100 <koz_> hekkaidekapus: Ah! No, I didn't notice that.
2020-11-30 04:19:57 +0100zaquest(~notzaques@5.128.210.178)
2020-11-30 04:19:59 +0100 <koz_> Interesting.
2020-11-30 04:20:05 +0100 <Guest648> thats not how you reduce hekkaidekapus
2020-11-30 04:20:06 +0100 <Guest648> tbats wrong
2020-11-30 04:20:12 +0100 <Guest648> you dont know your lambda calclus
2020-11-30 04:20:16 +0100 <Guest648> read the haskell book
2020-11-30 04:20:26 +0100 <hekkaidekapus> koz_: See, close look I was saying… :d
2020-11-30 04:20:48 +0100 <kupi> i think the "do" here is redundant in the example, am i wrong? https://hackage.haskell.org/package/base-4.13.0.0/docs/Control-Exception-Base.html#v:handle
2020-11-30 04:21:11 +0100 <texasmynsted> Guest648: I think you are looking for twitter
2020-11-30 04:21:22 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 04:21:23 +0100 <koz_> texasmynsted: Or treatment.
2020-11-30 04:21:31 +0100 <texasmynsted> why not both?
2020-11-30 04:21:42 +0100 <Guest648> what treatment would i need?
2020-11-30 04:21:55 +0100 <koz_> texasmynsted: I don't think they coincide well. :P
2020-11-30 04:22:04 +0100 <koz_> Guest648: Do you want me to answer sincerely?
2020-11-30 04:22:10 +0100 <Guest648> yes
2020-11-30 04:22:16 +0100 <koz_> Guest648: Too bad.
2020-11-30 04:23:14 +0100 <Guest648> what is chris allens irc
2020-11-30 04:23:29 +0100 <dsal> He uses the same one the rest of us use.
2020-11-30 04:23:52 +0100 <dsal> At least he used to. I've not seen him around in a while.
2020-11-30 04:24:01 +0100 <koz_> Guest648: I'll tell you if you fax me some chocolate ice cream.
2020-11-30 04:24:29 +0100 <texasmynsted> I think it is bitemyapp
2020-11-30 04:24:42 +0100conal(~conal@64.71.133.70)
2020-11-30 04:24:51 +0100 <Guest648> no
2020-11-30 04:24:52 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 04:24:58 +0100 <Guest648> it doesnt exist
2020-11-30 04:25:33 +0100 <texasmynsted> Perhaps you simply do not have enough faith
2020-11-30 04:26:36 +0100drbean(~drbean@TC210-63-209-205.static.apol.com.tw)
2020-11-30 04:27:08 +0100 <Guest648> oh my god you are right!
2020-11-30 04:27:17 +0100 <MarcelineVQ> kupi: not neccesarily redundant, they just happen to be giving an example that uses do
2020-11-30 04:27:21 +0100Guest648(~textual@185.156.175.35) (Quit: Textual IRC Client: www.textualapp.com)
2020-11-30 04:28:34 +0100 <MarcelineVQ> Actually I think I see what you mean since there's that $ there too
2020-11-30 04:30:13 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-11-30 04:30:29 +0100rprije(~rprije@118.102.88.103) (Ping timeout: 272 seconds)
2020-11-30 04:31:23 +0100 <kupi> "do io" is the same as "io" right?
2020-11-30 04:31:26 +0100 <monochrom> You know, "handle (\NonTermination -> exitWith (ExitFailure 1)) $ do ..." is much more convincing and common.
2020-11-30 04:31:35 +0100 <monochrom> Yes.
2020-11-30 04:33:07 +0100 <koz_> . o O ("do or do not, there is no try")
2020-11-30 04:33:41 +0100 <monochrom> I write "do try" all the time :)
2020-11-30 04:33:44 +0100 <int-e> DONT GIVE UP
2020-11-30 04:36:26 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (orwell.freenode.net (Nickname regained by services)))
2020-11-30 04:36:28 +0100christo(~chris@81.96.113.213)
2020-11-30 04:36:34 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-11-30 04:39:27 +0100theDon(~td@94.134.91.51) (Ping timeout: 260 seconds)
2020-11-30 04:39:36 +0100motherfsck(~motherfsc@unaffiliated/motherfsck) (Quit: quit)
2020-11-30 04:40:38 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 04:41:04 +0100theDon(~td@muedsl-82-207-238-063.citykom.de)
2020-11-30 04:43:21 +0100hackageuusi 0.3.0.0 - Tweak dependencies in .cabal files https://hackage.haskell.org/package/uusi-0.3.0.0 (berberman)
2020-11-30 04:44:38 +0100 <dsal> @undo do io
2020-11-30 04:44:38 +0100 <lambdabot> io
2020-11-30 04:44:45 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds)
2020-11-30 04:44:46 +0100 <dsal> ^ kupi
2020-11-30 04:44:55 +0100 <Axman6> @undo do do do io
2020-11-30 04:44:55 +0100 <lambdabot> io
2020-11-30 04:44:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 04:45:27 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-30 04:45:29 +0100 <kupi> @undo do x <- oi1; y <- io2; return (x+y)
2020-11-30 04:45:29 +0100 <lambdabot> oi1 >>= \ x -> io2 >>= \ y -> return (x + y)
2020-11-30 04:45:59 +0100 <koz_> Axman6: lol
2020-11-30 04:46:18 +0100 <kupi> nice but I would prefer liftA2 (+) io1 io2
2020-11-30 04:46:34 +0100 <dsal> Sure, but that means something different.
2020-11-30 04:46:52 +0100 <koz_> 'do do do io' <- truly the time when do-notation is considered harmful
2020-11-30 04:47:08 +0100 <dsal> @undo do harm
2020-11-30 04:47:08 +0100 <lambdabot> harm
2020-11-30 04:47:15 +0100 <kupi> dsal: what is the difference?
2020-11-30 04:47:34 +0100 <dsal> :t liftA2
2020-11-30 04:47:36 +0100 <lambdabot> Applicative f => (a -> b -> c) -> f a -> f b -> f c
2020-11-30 04:48:00 +0100 <koz_> @undo do the wrong thing
2020-11-30 04:48:00 +0100 <lambdabot> the wrong thing
2020-11-30 04:48:06 +0100 <dsal> You'll have the same effect, but it's not un`do`ing.
2020-11-30 04:48:23 +0100 <dsal> koz_: some mistakes can't be undood
2020-11-30 04:48:40 +0100 <koz_> dsal: This.
2020-11-30 04:48:46 +0100 <int-e> @. pl undo do x <- oi1; y <- io2; return (x+y)
2020-11-30 04:48:46 +0100 <lambdabot> (`fmap` io2) . (+) =<< oi1
2020-11-30 04:49:04 +0100 <int-e> . o O ( that went perfectly )
2020-11-30 04:49:05 +0100 <kupi> is there a separate program I can use this "undo"?
2020-11-30 04:49:10 +0100 <koz_> int-e: That is a truly shocking combo and I am impressed.
2020-11-30 04:49:19 +0100 <kupi> til not i have done undo a lot of times by hand
2020-11-30 04:49:24 +0100 <kupi> *til now
2020-11-30 04:49:29 +0100 <dsal> kupi: /query lambdabot
2020-11-30 04:49:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-30 04:49:49 +0100 <koz_> Do undo others as they undo you.
2020-11-30 04:50:00 +0100 <dsal> haha. That's perfect.
2020-11-30 04:50:42 +0100 <kupi> dsal: most undos are multilines so i can't send it to lambdabot
2020-11-30 04:50:44 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-11-30 04:50:46 +0100 <kupi> *dos
2020-11-30 04:50:54 +0100texasmynsted(~texasmyns@212.102.45.106) ()
2020-11-30 04:51:07 +0100 <dsal> @undo do { line1 ; x <- line2; pure awesome }
2020-11-30 04:51:07 +0100 <lambdabot> line1 >> line2 >>= \ x -> pure awesome
2020-11-30 04:51:07 +0100 <int-e> why do you want to undo so much?
2020-11-30 04:51:22 +0100 <koz_> :t pure fail
2020-11-30 04:51:24 +0100 <lambdabot> (MonadFail m, Applicative f) => f (String -> m a)
2020-11-30 04:51:34 +0100 <kupi> because it creates bigger namespaces than it should
2020-11-30 04:51:36 +0100 <koz_> int-e: Mistakes were made.
2020-11-30 04:51:40 +0100 <kupi> most of the times
2020-11-30 04:51:45 +0100 <dsal> do creates namespaces?
2020-11-30 04:51:52 +0100 <kupi> yes
2020-11-30 04:51:53 +0100 <int-e> people use do notation because most find it more readable than the bindful version
2020-11-30 04:51:55 +0100 <dsal> do is just a syntax
2020-11-30 04:51:56 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
2020-11-30 04:52:31 +0100 <kupi> @undo x <- m1; y <- m2 x; return m2
2020-11-30 04:52:31 +0100 <lambdabot> <unknown>.hs:1:3:Parse error: <-
2020-11-30 04:52:38 +0100 <kupi> @undo do x <- m1; y <- m2 x; return m2;
2020-11-30 04:52:38 +0100 <lambdabot> m1 >>= \ x -> m2 x >>= \ y -> return m2
2020-11-30 04:52:40 +0100 <koz_> 'Do creates namespaces' is a take I didn't think I'd hear today.
2020-11-30 04:52:54 +0100 <dsal> You cannot undo that which has not been dood.
2020-11-30 04:52:59 +0100 <kupi> here x can be accessed in m2
2020-11-30 04:53:04 +0100 <kupi> * return
2020-11-30 04:53:08 +0100 <kupi> but not used
2020-11-30 04:53:23 +0100 <dsal> That's not a namespace, though.
2020-11-30 04:53:29 +0100 <kupi> maybe i use the wrong word but the scope has more variables than it should
2020-11-30 04:53:40 +0100 <kupi> also the code is longer than it shold be
2020-11-30 04:53:47 +0100 <dsal> You just made a new scope and reused the same name. It doesn't matter whether you're using do or not there.
2020-11-30 04:54:03 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-30 04:54:11 +0100 <int-e> koz_: well the same effect can be achieved through lambdas... which is what @undo produces
2020-11-30 04:54:13 +0100 <kupi> it's simply just m1 >>= m2
2020-11-30 04:54:22 +0100 <dsal> @. pl undo do x <- m1; y <- m2 x; return m2
2020-11-30 04:54:22 +0100 <lambdabot> (m2 =<< m1) >> return m2
2020-11-30 04:54:57 +0100 <kupi> what is .pl?
2020-11-30 04:55:08 +0100 <dsal> . is compose
2020-11-30 04:55:16 +0100 <dsal> pl is to render pointless
2020-11-30 04:55:36 +0100 <kupi> @. pl undo do x <- m1; y <- m2 x; return y;
2020-11-30 04:55:36 +0100 <lambdabot> m2 =<< m1
2020-11-30 04:55:47 +0100 <monochrom> You don't have namespacing unless you have special syntax for accessing names outside the default namsepace.
2020-11-30 04:55:48 +0100 <kupi> that is the reason i want to undo
2020-11-30 04:56:02 +0100u0_a298(~user@65.35.205.131)
2020-11-30 04:56:05 +0100 <dsal> Oh, that's more pl than undo.
2020-11-30 04:56:18 +0100 <int-e> yeah, namespace != scope
2020-11-30 04:56:35 +0100 <monochrom> If you write "\x -> \x -> ???" inside the ??? you have absolutely no syntax that gives you the 1st x. Therefore this is not namespacing.
2020-11-30 04:56:55 +0100 <koz_> Yay name shadowing.
2020-11-30 04:57:15 +0100 <kupi> is there a way to send lambdabot multiple lines in a command?
2020-11-30 04:57:20 +0100 <monochrom> Whereas if you write "\null -> ???" inside the "???" you can still write "Prelude.null" for the global null, now that's namespacing.
2020-11-30 04:57:48 +0100 <int-e> koz_: no
2020-11-30 04:57:54 +0100 <int-e> hmmm
2020-11-30 04:57:58 +0100 <int-e> kupi:
2020-11-30 04:58:35 +0100dsallistens to monochrom's "Now that's what I call namespacing, volume Prelude"
2020-11-30 04:58:38 +0100 <int-e> ("hmmm" was me wondering how I managed to mess up this name)
2020-11-30 04:58:51 +0100 <koz_> int-e: Lotsa folks with k-names?
2020-11-30 04:58:54 +0100 <dsal> kupi: ; is a newline
2020-11-30 04:59:19 +0100 <int-e> > let foo x y | x <- x+1, y <- y+2 = x*y in foo 1 1 -- yay shadowing
2020-11-30 04:59:21 +0100hackagenewtype-zoo 1.2.1.0 - Newtype Wrapper Zoo https://hackage.haskell.org/package/newtype-zoo-1.2.1.0 (SvenHeyll)
2020-11-30 04:59:21 +0100 <lambdabot> 6
2020-11-30 04:59:24 +0100 <dsal> kupi: but in general, describing an abstraction of your problem will be much easier than pasting a bunch of code verbatim.
2020-11-30 05:00:02 +0100 <dsal> pl isn't all knowing, either. It just knows a bunch of dumb tricks. Not every trick, though.
2020-11-30 05:00:19 +0100 <monochrom> It's also pretty old.
2020-11-30 05:00:41 +0100 <monochrom> It's, like, before Applicative.
2020-11-30 05:00:48 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-11-30 05:01:04 +0100 <kupi> is there a separate program for those tricks? hlint does not know all of those dumb tricks
2020-11-30 05:01:29 +0100 <int-e> @hackage pointless
2020-11-30 05:01:29 +0100 <lambdabot> https://hackage.haskell.org/package/pointless
2020-11-30 05:01:48 +0100 <int-e> @hackage pointfree
2020-11-30 05:01:48 +0100 <lambdabot> https://hackage.haskell.org/package/pointfree
2020-11-30 05:01:56 +0100 <int-e> that one, sorry. I misremembered the name.
2020-11-30 05:02:17 +0100 <int-e> Or rather, the package is not named properly :-P
2020-11-30 05:02:28 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 246 seconds)
2020-11-30 05:04:02 +0100sorki(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2020-11-30 05:05:20 +0100sorki(~sorki@gateway/tor-sasl/sorki)
2020-11-30 05:07:58 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 05:08:26 +0100vg(~vg@139.59.59.230)
2020-11-30 05:13:00 +0100adm_(~adm@117.208.21.247) (Remote host closed the connection)
2020-11-30 05:15:45 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165)
2020-11-30 05:19:53 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-30 05:21:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 05:21:59 +0100adm_(~adm@117.208.21.247)
2020-11-30 05:22:03 +0100adm_(~adm@117.208.21.247) (Read error: Connection reset by peer)
2020-11-30 05:22:09 +0100adm_(~adm@117.208.21.247)
2020-11-30 05:22:22 +0100adm_(~adm@117.208.21.247) (Remote host closed the connection)
2020-11-30 05:22:48 +0100adm_(~adm@117.208.21.247)
2020-11-30 05:24:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-11-30 05:25:35 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds)
2020-11-30 05:26:29 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-30 05:27:13 +0100adm_(~adm@117.208.21.247) (Ping timeout: 264 seconds)
2020-11-30 05:27:42 +0100adm_(~adm@117.208.21.247)
2020-11-30 05:29:56 +0100shf(~sheaf@2a01:cb19:80cc:7e00:39e8:c690:7735:f5ef)
2020-11-30 05:29:56 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 05:30:03 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2020-11-30 05:30:08 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 272 seconds)
2020-11-30 05:30:17 +0100u0_a298(~user@65.35.205.131)
2020-11-30 05:32:11 +0100 <kupi> what have i done?
2020-11-30 05:32:13 +0100 <kupi> (getRecursiveContents >=>) . filterM . fix . const . (`ap` getModificationTime) . (`ap` getFileSize) . (`ap` getPermissions) . (liftA3 .)
2020-11-30 05:32:42 +0100 <monochrom> Transcendence
2020-11-30 05:32:54 +0100 <Axman6> made difficult to read code
2020-11-30 05:34:44 +0100 <kupi> this was the original code but i am not satisfied with it https://gist.github.com/theqp/08eb2d8780c638b892019b3b5ad23963
2020-11-30 05:36:08 +0100 <int-e> . o O ( Where is liftA4 when you "need" it... )
2020-11-30 05:36:30 +0100 <Axman6> I prefer your original code
2020-11-30 05:36:48 +0100 <kupi> me too
2020-11-30 05:36:51 +0100hackagenumhask-free 0.0.2 - Numerical free algebras https://hackage.haskell.org/package/numhask-free-0.0.2 (tonyday567)
2020-11-30 05:37:05 +0100 <monochrom> @type fix . const
2020-11-30 05:37:07 +0100 <lambdabot> c -> c
2020-11-30 05:37:23 +0100 <monochrom> IIRC earlier today we established that fix . const = id
2020-11-30 05:37:43 +0100 <kupi> what
2020-11-30 05:38:04 +0100 <monochrom> > (fix . const) "hello"
2020-11-30 05:38:07 +0100 <lambdabot> "hello"
2020-11-30 05:38:12 +0100 <monochrom> > (fix . const) False
2020-11-30 05:38:14 +0100 <kupi> it was id all along?
2020-11-30 05:38:15 +0100 <lambdabot> False
2020-11-30 05:38:16 +0100 <int-e> . o O ( check = liftA4 liftA3 p getPermissions getFileSize getModificationTime )
2020-11-30 05:38:54 +0100 <MarcelineVQ> :<
2020-11-30 05:39:09 +0100 <Axman6> beautiful
2020-11-30 05:40:25 +0100 <int-e> @hoogle liftA4
2020-11-30 05:40:25 +0100 <lambdabot> Control.Applicative.HT liftA4 :: Applicative f => (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e
2020-11-30 05:40:25 +0100 <lambdabot> Util liftA4 :: Applicative p => (a -> b -> c -> d -> e) -> p a -> p b -> p c -> p d -> p e
2020-11-30 05:40:25 +0100 <lambdabot> Rank2 liftA4 :: Apply g => (forall a . p a -> q a -> r a -> s a -> t a) -> g p -> g q -> g r -> g s -> g t
2020-11-30 05:41:03 +0100 <int-e> Util, what a great public module name
2020-11-30 05:41:43 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2020-11-30 05:42:06 +0100 <Axman6> it's probably a decade old and and in something like missing-h
2020-11-30 05:42:32 +0100 <Axman6> I remember the days when there was some very common packages which just added functions people thought were missing in base packages
2020-11-30 05:44:16 +0100 <int-e> that probably only stopped once all the good names were taken, like https://hackage.haskell.org/package/extra
2020-11-30 05:44:58 +0100 <int-e> (seriously it hasn't stopped. the novelty has worn off though)
2020-11-30 05:46:11 +0100acidjnk_new(~acidjnk@p200300d0c719ff21c162f6267ce4f02c.dip0.t-ipconnect.de)
2020-11-30 05:48:02 +0100ericsagnes(~ericsagne@2405:6580:0:5100:a607:ad37:544:fcd4) (Ping timeout: 264 seconds)
2020-11-30 05:50:16 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 05:50:56 +0100u0_a298(~user@65.35.205.131)
2020-11-30 05:51:02 +0100anhydrite(~anhydrite@4e69b241.skybroadband.com)
2020-11-30 05:55:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-30 05:57:40 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-11-30 06:00:26 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-11-30 06:00:39 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-11-30 06:00:45 +0100ericsagnes(~ericsagne@2405:6580:0:5100:4c6e:c2bd:723f:5eaa)
2020-11-30 06:01:03 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-30 06:03:14 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:03:54 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:08:23 +0100jedws(~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au)
2020-11-30 06:09:23 +0100iqubic(~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a) (Read error: Connection reset by peer)
2020-11-30 06:10:55 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 256 seconds)
2020-11-30 06:11:21 +0100hackagenumhask-free 0.0.3 - numerical free algebras https://hackage.haskell.org/package/numhask-free-0.0.3 (tonyday567)
2020-11-30 06:12:08 +0100conal(~conal@64.71.133.70)
2020-11-30 06:13:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-30 06:13:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Client Quit)
2020-11-30 06:13:51 +0100hackagehinterface 2.0.1 - Haskell / Erlang interoperability library https://hackage.haskell.org/package/hinterface-2.0.1 (SvenHeyll)
2020-11-30 06:14:15 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-11-30 06:15:29 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-11-30 06:17:26 +0100conman1(~conman@185.204.1.185) (Remote host closed the connection)
2020-11-30 06:17:58 +0100 <koz_> Haskell is the strongest language; all we do is lift.
2020-11-30 06:19:07 +0100Clintslowclaps.
2020-11-30 06:19:25 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-30 06:21:22 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 06:21:48 +0100conal(~conal@64.71.133.70)
2020-11-30 06:21:55 +0100koz_bowbows.
2020-11-30 06:22:29 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 06:24:32 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:24:47 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:24:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 06:24:52 +0100conal(~conal@64.71.133.70)
2020-11-30 06:24:52 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 06:25:55 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-30 06:28:16 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:28:58 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:29:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-30 06:31:49 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:32:03 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:34:09 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:34:56 +0100jedws(~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-30 06:34:57 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:35:55 +0100 <int-e> write pure code, it's easy; no lifting required
2020-11-30 06:38:02 +0100SeMas(uid32977@gateway/web/irccloud.com/x-gvhiftwjfdiypfrd) (Quit: Connection closed for inactivity)
2020-11-30 06:38:02 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:38:38 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-30 06:38:42 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:39:26 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Read error: Connection reset by peer)
2020-11-30 06:41:37 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:41:38 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-11-30 06:42:11 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:42:36 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 268 seconds)
2020-11-30 06:43:31 +0100veehexx(~veehexx@178.239.168.171)
2020-11-30 06:45:20 +0100notzmv`(~user@201-43-51-116.dsl.telesp.net.br)
2020-11-30 06:45:56 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
2020-11-30 06:48:04 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:48:16 +0100notzmv(~user@unaffiliated/zmv) (Ping timeout: 240 seconds)
2020-11-30 06:48:49 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-30 06:48:51 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:49:15 +0100jchia(~jchia@58.32.36.109) (Read error: Connection reset by peer)
2020-11-30 06:50:00 +0100jchia(~jchia@58.32.36.109)
2020-11-30 06:50:24 +0100rprije(~rprije@124-148-236-109.tpgi.com.au)
2020-11-30 06:52:54 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 06:53:30 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:53:36 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 06:54:02 +0100vg(~vg@139.59.59.230)
2020-11-30 06:57:06 +0100u0_a298(~user@65.35.205.131) (Remote host closed the connection)
2020-11-30 06:58:02 +0100u0_a298(~user@65.35.205.131)
2020-11-30 06:59:01 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2020-11-30 06:59:13 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 06:59:27 +0100vg(~vg@139.59.59.230)
2020-11-30 06:59:34 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 06:59:46 +0100vg(~vg@139.59.59.230)
2020-11-30 07:00:00 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 07:00:16 +0100vg(~vg@139.59.59.230)
2020-11-30 07:00:31 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 07:00:47 +0100vg(~vg@139.59.59.230)
2020-11-30 07:01:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 07:03:54 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:04:16 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:05:16 +0100rprije(~rprije@124-148-236-109.tpgi.com.au) (Ping timeout: 240 seconds)
2020-11-30 07:07:24 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:07:55 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-30 07:08:04 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:09:43 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-11-30 07:10:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-11-30 07:12:08 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:13:03 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:15:16 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:15:16 +0100rprije(~rprije@194-193-52-155.tpgi.com.au)
2020-11-30 07:15:44 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:18:21 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 256 seconds)
2020-11-30 07:18:22 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:19:38 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2020-11-30 07:20:33 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:20:58 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 07:20:58 +0100Spiff(~quassel@102.160.27.107)
2020-11-30 07:21:13 +0100vg(~vg@139.59.59.230)
2020-11-30 07:21:26 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 07:21:29 +0100ericsagnes(~ericsagne@2405:6580:0:5100:4c6e:c2bd:723f:5eaa) (Ping timeout: 272 seconds)
2020-11-30 07:21:38 +0100vg(~vg@139.59.59.230)
2020-11-30 07:24:08 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:24:49 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:27:13 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:27:37 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-11-30 07:27:58 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:30:15 +0100rprije(~rprije@194-193-52-155.tpgi.com.au) (Ping timeout: 256 seconds)
2020-11-30 07:31:43 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 07:32:12 +0100vg(~vg@139.59.59.230)
2020-11-30 07:34:29 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-11-30 07:34:29 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:34:29 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-11-30 07:35:14 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:35:15 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-11-30 07:35:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-30 07:37:07 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp)
2020-11-30 07:39:00 +0100suzu_scratches chin and nods
2020-11-30 07:39:02 +0100acidjnk_new(~acidjnk@p200300d0c719ff21c162f6267ce4f02c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-30 07:39:25 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-30 07:41:01 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2020-11-30 07:41:37 +0100rprije(~rprije@194-193-143-88.tpgi.com.au)
2020-11-30 07:43:36 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus) (Ping timeout: 240 seconds)
2020-11-30 07:43:42 +0100adm_(~adm@117.208.21.247) (Remote host closed the connection)
2020-11-30 07:45:55 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus)
2020-11-30 07:45:56 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:46:19 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:48:25 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:49:04 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:51:09 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:51:34 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:54:04 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:54:31 +0100u0_a298(~user@65.35.205.131)
2020-11-30 07:56:11 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-11-30 07:58:16 +0100jchia1(~jchia@58.32.33.6)
2020-11-30 07:58:16 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 07:58:36 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-11-30 07:58:46 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:00:09 +0100jchia(~jchia@58.32.36.109) (Read error: Connection reset by peer)
2020-11-30 08:02:56 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp) (Ping timeout: 240 seconds)
2020-11-30 08:03:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 08:04:57 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-30 08:07:27 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:07:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-11-30 08:08:15 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:08:33 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp)
2020-11-30 08:11:12 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:11:59 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:12:20 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 08:12:48 +0100vg(~vg@139.59.59.230)
2020-11-30 08:12:52 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 08:13:08 +0100vg(~vg@139.59.59.230)
2020-11-30 08:13:20 +0100alp__(~alp@2a01:e0a:58b:4920:78f2:8435:ea0f:a6b2)
2020-11-30 08:13:30 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 08:13:31 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
2020-11-30 08:13:49 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-11-30 08:14:04 +0100vg(~vg@139.59.59.230)
2020-11-30 08:14:25 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 08:14:38 +0100vg(~vg@139.59.59.230)
2020-11-30 08:14:51 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 08:15:46 +0100adm_(~adm@117.208.21.247)
2020-11-30 08:18:05 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:18:19 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-11-30 08:18:30 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:20:15 +0100lpy(~nyd@unaffiliated/elysian)
2020-11-30 08:22:19 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:22:39 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:24:28 +0100sfvm(~sfvm@37.228.215.54) (Quit: off to the basement, mixing up the medicine)
2020-11-30 08:24:35 +0100srk(sorki@unaffiliated/srk) (Quit: ZNC - http://znc.in)
2020-11-30 08:24:36 +0100sorkisrk
2020-11-30 08:26:14 +0100danvet_(~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
2020-11-30 08:28:25 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:29:08 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:30:50 +0100kuribas(~user@ptr-25vy0i92djchka8xsjs.18120a2.ip6.access.telenet.be)
2020-11-30 08:32:00 +0100adm_(~adm@117.208.21.247) (Remote host closed the connection)
2020-11-30 08:34:52 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:35:08 +0100adm_(~adm@117.208.21.247)
2020-11-30 08:35:14 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:36:41 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-30 08:39:07 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:39:33 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:40:24 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-30 08:40:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 08:42:02 +0100xff0x(~fox@2001:1a81:5287:f00:6870:12f3:8204:7d32) (Ping timeout: 264 seconds)
2020-11-30 08:42:42 +0100xff0x(~fox@2001:1a81:5287:f00:70f2:294c:10e7:d278)
2020-11-30 08:44:49 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:45:03 +0100lassulus(~lassulus@NixOS/user/lassulus) (Ping timeout: 256 seconds)
2020-11-30 08:45:16 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:46:29 +0100hololeap(~hololeap@unaffiliated/hololeap)
2020-11-30 08:46:50 +0100iqubic(~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a)
2020-11-30 08:49:23 +0100 <hololeap> % :t (\(a,fb) -> (a,) <$> fb)
2020-11-30 08:49:23 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:49:23 +0100 <yahb> hololeap: Functor f => (t1, f t2) -> f (t1, t2)
2020-11-30 08:49:31 +0100 <hololeap> is there a name for this?
2020-11-30 08:50:16 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:50:33 +0100urek(~urek@2804:7f1:e10a:5ac1:8db3:3757:9c7d:4898)
2020-11-30 08:50:56 +0100 <merijn> strong, iirc
2020-11-30 08:52:48 +0100 <dminuoso> hololeap: looks like first from Arrow
2020-11-30 08:52:59 +0100 <jle`> it's sequence in base, but yeah i think formally it is strength/strong/etc.
2020-11-30 08:53:42 +0100 <dminuoso> Or yeah, Strong is better
2020-11-30 08:53:42 +0100 <jle`> > sequence (3, Just "hi")
2020-11-30 08:53:44 +0100 <lambdabot> Just (3,"hi")
2020-11-30 08:54:07 +0100 <jle`> but i don't really like using sequence for it because it's a weird positional fluke kinda
2020-11-30 08:54:19 +0100 <jle`> and i try to avoid using Foldable/Traversable for tuples when i can
2020-11-30 08:54:40 +0100 <jle`> > bitraverse pure id (3, Just "hi")
2020-11-30 08:54:43 +0100 <lambdabot> error:
2020-11-30 08:54:43 +0100 <lambdabot> • Variable not in scope:
2020-11-30 08:54:43 +0100 <lambdabot> bitraverse
2020-11-30 08:57:01 +0100danvet_(~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Quit: Leaving)
2020-11-30 08:57:01 +0100 <hololeap> jle`: you're right, it's just sequence. i got mixed up and thought (,) needed to be an Applicative, e.g. a Monoid in the first value
2020-11-30 08:57:01 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 08:57:17 +0100u0_a298(~user@65.35.205.131)
2020-11-30 08:57:56 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-30 08:58:28 +0100 <dminuoso> Well it does.
2020-11-30 08:58:32 +0100 <dminuoso> instance Monoid a => Applicative ((,) a)
2020-11-30 08:58:48 +0100 <dminuoso> Oh.
2020-11-30 08:59:33 +0100lassulus(~lassulus@NixOS/user/lassulus)
2020-11-30 09:00:00 +0100 <dminuoso> Question, when exposing some third party HTTP API with servant, would you rather just expose the servant API type, or provide a servant-client wrapper?
2020-11-30 09:00:30 +0100 <jle`> in the past i have done both
2020-11-30 09:00:51 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-30 09:01:30 +0100bitmagie(~Thunderbi@200116b8068d1f006d607abf10bb6e5f.dip.versatel-1u1.de)
2020-11-30 09:02:05 +0100 <dminuoso> I guess there's not much value in exposing an API, since you'd have to stuff it into servant at the end anyway
2020-11-30 09:02:36 +0100 <dminuoso> Did you have some other considerations?
2020-11-30 09:03:00 +0100 <jle`> there are things you can do with the API other than just calling it maybe
2020-11-30 09:03:05 +0100 <jle`> like generating documentation or other stuff
2020-11-30 09:03:31 +0100 <jle`> also maybe they could integrate it into their other servant stuff maybe
2020-11-30 09:04:38 +0100daGrevis(~daGrevis@unaffiliated/dagrevis) (Ping timeout: 260 seconds)
2020-11-30 09:05:08 +0100acidjnk_new(~acidjnk@p200300d0c719ff21c162f6267ce4f02c.dip0.t-ipconnect.de)
2020-11-30 09:06:17 +0100hololeap(~hololeap@unaffiliated/hololeap) (Read error: Connection reset by peer)
2020-11-30 09:06:46 +0100hololeap(~hololeap@unaffiliated/hololeap)
2020-11-30 09:07:09 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp) (Ping timeout: 256 seconds)
2020-11-30 09:09:34 +0100bitmagie(~Thunderbi@200116b8068d1f006d607abf10bb6e5f.dip.versatel-1u1.de) (Quit: bitmagie)
2020-11-30 09:11:20 +0100thc202(~thc202@unaffiliated/thc202)
2020-11-30 09:11:32 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-30 09:12:46 +0100daGrevis(~daGrevis@unaffiliated/dagrevis)
2020-11-30 09:13:47 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-30 09:14:04 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-30 09:14:16 +0100darjeeling_(~darjeelin@115.215.41.204) (Ping timeout: 240 seconds)
2020-11-30 09:15:21 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2020-11-30 09:16:32 +0100Zetagon(~leo@c151-177-52-233.bredband.comhem.se)
2020-11-30 09:16:46 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-30 09:19:04 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 09:19:39 +0100u0_a298(~user@65.35.205.131)
2020-11-30 09:21:49 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 09:22:04 +0100u0_a298(~user@65.35.205.131)
2020-11-30 09:23:35 +0100Varis(~Tadas@unaffiliated/varis) (Ping timeout: 256 seconds)
2020-11-30 09:24:43 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2020-11-30 09:25:02 +0100Bergle_3(~Bergle_4@101.165.90.119)
2020-11-30 09:25:28 +0100Amras(~Amras@unaffiliated/amras)
2020-11-30 09:27:33 +0100Bergle_2(~Bergle_4@101.165.90.119) (Ping timeout: 256 seconds)
2020-11-30 09:29:18 +0100ericsagnes(~ericsagne@2405:6580:0:5100:268a:b208:c5d0:ca2a)
2020-11-30 09:30:12 +0100lassulus(~lassulus@NixOS/user/lassulus) (Ping timeout: 260 seconds)
2020-11-30 09:30:57 +0100Bergle_3(~Bergle_4@101.165.90.119) (Ping timeout: 256 seconds)
2020-11-30 09:31:28 +0100darjeeling_(~darjeelin@115.215.41.204)
2020-11-30 09:32:30 +0100Bergle_1(~Bergle_4@101.165.90.119)
2020-11-30 09:32:50 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-11-30 09:34:04 +0100chaosmasttter(~chaosmast@p200300c4a708ba01009b72ed500751f5.dip0.t-ipconnect.de)
2020-11-30 09:35:08 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-11-30 09:36:26 +0100veehexx(~veehexx@178.239.168.171) (Remote host closed the connection)
2020-11-30 09:36:57 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-vmvaxpsicxpbtezq)
2020-11-30 09:39:19 +0100hololeap(~hololeap@unaffiliated/hololeap) (Quit: KVIrc 5.0.1 Aria http://www.kvirc.net/)
2020-11-30 09:40:08 +0100drbean(~drbean@TC210-63-209-205.static.apol.com.tw) (Ping timeout: 265 seconds)
2020-11-30 09:40:43 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-30 09:40:47 +0100ericsagnes(~ericsagne@2405:6580:0:5100:268a:b208:c5d0:ca2a) (Ping timeout: 260 seconds)
2020-11-30 09:42:23 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-30 09:45:58 +0100christo(~chris@81.96.113.213)
2020-11-30 09:46:56 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:6448:a1be:2d68:fad7)
2020-11-30 09:48:38 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Ping timeout: 264 seconds)
2020-11-30 09:49:56 +0100christo(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2020-11-30 09:52:35 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
2020-11-30 09:53:06 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp)
2020-11-30 09:55:36 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 09:56:16 +0100u0_a298(~user@65.35.205.131)
2020-11-30 09:58:25 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 09:59:17 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:01:49 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:02:05 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:02:51 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 265 seconds)
2020-11-30 10:05:12 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:05:24 +0100cole-h(~cole-h@73.48.197.220) (Quit: Goodbye)
2020-11-30 10:05:53 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-30 10:06:05 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:07:38 +0100Spiff(~quassel@102.160.27.107) (Ping timeout: 256 seconds)
2020-11-30 10:07:47 +0100Spiff(~quassel@102.160.27.107)
2020-11-30 10:08:03 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-30 10:08:36 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it)
2020-11-30 10:10:48 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:10:51 +0100hackagekesha 0.1.0.0 - Haskell implementation of nix-hash https://hackage.haskell.org/package/kesha-0.1.0.0 (jmackie)
2020-11-30 10:11:12 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
2020-11-30 10:11:15 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:12:29 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 10:15:08 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:15:22 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-qtyikxmplneltdye) (Quit: Connection closed for inactivity)
2020-11-30 10:15:33 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:17:23 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-30 10:17:46 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-30 10:17:47 +0100toorevitimirp(~tooreviti@117.182.183.16)
2020-11-30 10:19:56 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:20:30 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:22:45 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:23:17 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:23:43 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 10:24:48 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-30 10:26:55 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:27:23 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:29:35 +0100urek(~urek@2804:7f1:e10a:5ac1:8db3:3757:9c7d:4898) (Ping timeout: 272 seconds)
2020-11-30 10:29:35 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:30:18 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:31:25 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-30 10:33:36 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:34:13 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:34:16 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-30 10:35:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-30 10:37:46 +0100 <tomsmeding> 05:41:03 int-e | Util, what a great public module name
2020-11-30 10:37:55 +0100 <tomsmeding> it's the Util module in the 'util' package, to make it even nicer
2020-11-30 10:40:06 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:40:43 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:41:54 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 10:46:16 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:46:51 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:49:20 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:49:43 +0100Zetagon(~leo@c151-177-52-233.bredband.comhem.se) (Ping timeout: 256 seconds)
2020-11-30 10:51:19 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:53:38 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:54:08 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:54:34 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Ping timeout: 265 seconds)
2020-11-30 10:58:48 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 10:59:01 +0100dminuosolongs for {-# LANGUAGE GuessCode #-}
2020-11-30 10:59:05 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
2020-11-30 10:59:15 +0100u0_a298(~user@65.35.205.131)
2020-11-30 10:59:53 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp) (Ping timeout: 265 seconds)
2020-11-30 11:00:15 +0100urek(~urek@2804:7f1:e10a:5ac1:8db3:3757:9c7d:4898)
2020-11-30 11:01:07 +0100raichoo(~raichoo@dslb-178-009-076-213.178.009.pools.vodafone-ip.de)
2020-11-30 11:01:09 +0100 <idnar> dminuoso: like Hoogle+?
2020-11-30 11:01:17 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 11:02:13 +0100SummerNinja(~SummerNin@185.103.96.147)
2020-11-30 11:03:16 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-30 11:04:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 11:07:08 +0100u0_a298(~user@65.35.205.131) (Remote host closed the connection)
2020-11-30 11:07:24 +0100u0_a298(~user@65.35.205.131)
2020-11-30 11:09:43 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-30 11:09:43 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 11:10:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-30 11:10:08 +0100u0_a298(~user@65.35.205.131)
2020-11-30 11:12:04 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 11:12:23 +0100 <tomsmeding> when encountering an unknown identifier that does occur in hoogle's database, automatically depend on that package and import the containing module?
2020-11-30 11:14:03 +0100CMCDragonkai1(~Thunderbi@124.19.3.250)
2020-11-30 11:14:47 +0100ericsagnes(~ericsagne@2405:6580:0:5100:f60d:2a86:b6e3:223e)
2020-11-30 11:17:20 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 11:17:53 +0100u0_a298(~user@65.35.205.131)
2020-11-30 11:18:13 +0100gproto23(~gproto23@unaffiliated/gproto23) (Ping timeout: 260 seconds)
2020-11-30 11:18:39 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-30 11:20:49 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 11:21:13 +0100u0_a298(~user@65.35.205.131)
2020-11-30 11:21:44 +0100guest1130(~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
2020-11-30 11:23:04 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-30 11:24:55 +0100mouseghost(~draco@wikipedia/desperek)
2020-11-30 11:25:09 +0100 <mouseghost> smh who wrote these docs :C
2020-11-30 11:26:43 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2020-11-30 11:27:05 +0100CMCDragonkai1(~Thunderbi@124.19.3.250) (Ping timeout: 240 seconds)
2020-11-30 11:27:10 +0100 <tomsmeding> which docs mouseghost?
2020-11-30 11:28:02 +0100 <mouseghost> for lens package uh.. i guess i need to learn more haskell, or im looking at the wrong thing, or this is exactly what it is (and im just trying to understand why for some reason)
2020-11-30 11:28:28 +0100 <mouseghost> namely ^. and Getting type def
2020-11-30 11:28:48 +0100 <tomsmeding> the type signatures in lens are not quite known for being easily understandable for beginners :)
2020-11-30 11:28:56 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-11-30 11:29:04 +0100 <mouseghost> ;___;
2020-11-30 11:29:12 +0100 <tomsmeding> I suspect other members of the channel have opinions on this, dminuoso?
2020-11-30 11:29:41 +0100 <tomsmeding> (with which I want to say that it's not your fault that you're having trouble :p)
2020-11-30 11:29:45 +0100 <mouseghost> though, is it true that when it comes to type definition, arguments passed satisfy the equation on the right hand side of eq. sign?
2020-11-30 11:30:01 +0100 <tomsmeding> what do you mean exactly?
2020-11-30 11:30:04 +0100 <tomsmeding> example perhaps?
2020-11-30 11:30:08 +0100 <mouseghost> type Getting r s a = (a -> Const r a) -> s -> Const r s
2020-11-30 11:30:35 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 11:30:35 +0100 <mouseghost> uh i got even more confused :D
2020-11-30 11:30:40 +0100 <tomsmeding> what do you mean with "satisfy equation on the right hand side"?
2020-11-30 11:30:52 +0100 <tomsmeding> there's no = sign on the right-hand side, so also no equation :p
2020-11-30 11:30:57 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-30 11:31:11 +0100 <tomsmeding> but a type definition using 'type' means that the left-hand side, in this case 'Getting r s a', can be 1-to-1 replaced with its right-hand side
2020-11-30 11:31:19 +0100 <tomsmeding> whenever you see Getting applied to three type arguments
2020-11-30 11:31:31 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 11:31:36 +0100 <mouseghost> ohh
2020-11-30 11:31:46 +0100JJ15__(~JJ@2a00:23a8:4382:a900:c581:e386:e820:2657)
2020-11-30 11:31:55 +0100fendor(~fendor@91.141.2.60.wireless.dyn.drei.com)
2020-11-30 11:31:55 +0100 <mouseghost> thanks :o
2020-11-30 11:32:19 +0100 <tomsmeding> this in contrast, of course, to 'newtype' and 'data', which create new data types
2020-11-30 11:32:29 +0100 <tomsmeding> 'type' is just a type synonym
2020-11-30 11:33:18 +0100 <mouseghost> i see i see
2020-11-30 11:33:43 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2020-11-30 11:34:47 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 11:35:15 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-11-30 11:35:50 +0100poljar(~poljar@93-141-140-79.adsl.net.t-com.hr)
2020-11-30 11:36:11 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
2020-11-30 11:37:03 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net)
2020-11-30 11:38:04 +0100poljar1(~poljar@93-139-70-179.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
2020-11-30 11:38:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 11:38:52 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds)
2020-11-30 11:39:31 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2020-11-30 11:40:22 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-11-30 11:40:25 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Client Quit)
2020-11-30 11:42:15 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 11:42:16 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 256 seconds)
2020-11-30 11:42:18 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
2020-11-30 11:46:22 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 11:46:41 +0100u0_a298(~user@65.35.205.131)
2020-11-30 11:48:48 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 11:49:16 +0100u0_a298(~user@65.35.205.131)
2020-11-30 11:51:12 +0100z0k(~user@101.50.127.33)
2020-11-30 11:53:37 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 11:54:02 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-30 11:54:06 +0100u0_a298(~user@65.35.205.131)
2020-11-30 11:55:02 +0100__monty__(~toonn@unaffiliated/toonn)
2020-11-30 11:56:11 +0100 <mouseghost> if theres a type def like :: a -> a, it means that just the type is the same, right :V?
2020-11-30 11:57:44 +0100 <dminuoso> tomsmeding: optics is a great library for beginners.
2020-11-30 11:57:53 +0100 <dminuoso> Or, mouseghost rather.
2020-11-30 11:58:11 +0100 <mouseghost> mouseghosts hm
2020-11-30 11:58:30 +0100 <dminuoso> optics wraps optics behind newtypes, making it much easier to read the types
2020-11-30 11:58:38 +0100 <dminuoso> So rather than
2020-11-30 11:58:40 +0100 <dminuoso> type Getting r s a = (a -> Const r a) -> s -> Const r s
2020-11-30 11:58:43 +0100 <dminuoso> You have something like
2020-11-30 11:58:59 +0100 <dminuoso> to :: (s -> a) -> Getter s a
2020-11-30 11:59:03 +0100 <dminuoso> Where Getter is a proper newtype
2020-11-30 11:59:15 +0100 <dminuoso> No confusion, it's optics problem how that is represented
2020-11-30 11:59:23 +0100 <dminuoso> And for things that work over any getter you have
2020-11-30 11:59:26 +0100 <dminuoso> view :: Is k A_Getter => Optic' k is s a -> s -> a
2020-11-30 12:00:13 +0100 <mouseghost> o_o
2020-11-30 12:00:15 +0100 <dminuoso> And you get nice diagnostics based on that, where GHC will error out like "A_Getter cannot be used as A_Setter", rather than constraint errors
2020-11-30 12:00:31 +0100 <dminuoso> Compare the above to the lens equivalen
2020-11-30 12:01:26 +0100 <mouseghost> thanks hm
2020-11-30 12:01:57 +0100ericsagnes(~ericsagne@2405:6580:0:5100:f60d:2a86:b6e3:223e) (Ping timeout: 260 seconds)
2020-11-30 12:02:21 +0100CMCDragonkai1(~Thunderbi@124.19.3.250)
2020-11-30 12:02:35 +0100 <dminuoso> view :: MonadReader s m => ((a -> Const r a) -> s -> Const r s) -> m a
2020-11-30 12:02:42 +0100 <dminuoso> view :: MonadReader s m => Getting a s a -> m a
2020-11-30 12:03:00 +0100 <dminuoso> These two are the same, and depending on how GHC runs, you will see the former in GHC diagnostics
2020-11-30 12:03:18 +0100 <mouseghost> yeah i understand
2020-11-30 12:03:56 +0100CMCDragonkai1(~Thunderbi@124.19.3.250) (Client Quit)
2020-11-30 12:04:47 +0100 <mouseghost> dminuoso, do parentheses always imply a function then? and hence do all type synonyms have these implicit ()?
2020-11-30 12:05:10 +0100 <dminuoso> No, parens are just to control how things associate
2020-11-30 12:05:17 +0100 <dminuoso> Similarly to value level
2020-11-30 12:05:25 +0100aarvar(~foewfoiew@50.35.43.33)
2020-11-30 12:05:48 +0100 <mouseghost> hm
2020-11-30 12:06:04 +0100aarvar(~foewfoiew@50.35.43.33) (Client Quit)
2020-11-30 12:07:20 +0100 <mouseghost> thanks
2020-11-30 12:08:19 +0100 <mouseghost> ill take a look at that optics package; im wondering, can packages be compatible then?
2020-11-30 12:08:28 +0100ulidtko(~ulidtko@193.111.48.79)
2020-11-30 12:08:46 +0100 <mouseghost> nvm this doesnt make sesne
2020-11-30 12:08:47 +0100 <mouseghost> sense
2020-11-30 12:10:11 +0100 <mouseghost> thanks uwu
2020-11-30 12:10:37 +0100 <nitrix> Finally someone speaking my language.
2020-11-30 12:13:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-11-30 12:14:04 +0100 <mouseghost> nitrix, :3
2020-11-30 12:14:19 +0100loller(uid358106@gateway/web/irccloud.com/x-rrjevhwdhvmhkvwa)
2020-11-30 12:17:53 +0100rprije(~rprije@194-193-143-88.tpgi.com.au) (Ping timeout: 272 seconds)
2020-11-30 12:18:07 +0100LKoen(~LKoen@105.175.9.109.rev.sfr.net)
2020-11-30 12:20:37 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 12:21:05 +0100u0_a298(~user@65.35.205.131)
2020-11-30 12:21:11 +0100 <maerwald> mouseghost: what do you mean with compatible
2020-11-30 12:21:28 +0100ericsagnes(~ericsagne@2405:6580:0:5100:1a87:b30a:6cc7:5b7c)
2020-11-30 12:21:44 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-11-30 12:22:19 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-30 12:22:21 +0100hackagearch-hs 0.5.0.0 - Distribute hackage packages to archlinux https://hackage.haskell.org/package/arch-hs-0.5.0.0 (berberman)
2020-11-30 12:22:43 +0100 <mouseghost> maerwald, that, given a package b depending on a package c, i could use package d if types matched or something
2020-11-30 12:22:58 +0100 <maerwald> you may want to check https://hackage.haskell.org/package/optics-vl
2020-11-30 12:23:12 +0100 <maerwald> which allows you to convert between lens and optics
2020-11-30 12:24:26 +0100 <dminuoso> mouseghost: optics comes with primitives to build stuff from van laarhoven on most things (where its possible)
2020-11-30 12:24:31 +0100notzmv`notzmv
2020-11-30 12:24:36 +0100notzmv(~user@201-43-51-116.dsl.telesp.net.br) (Changing host)
2020-11-30 12:24:36 +0100notzmv(~user@unaffiliated/zmv)
2020-11-30 12:25:11 +0100 <mouseghost> o-o thanks
2020-11-30 12:26:05 +0100Wuzzy(~Wuzzy@p549c9976.dip0.t-ipconnect.de)
2020-11-30 12:27:03 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2020-11-30 12:30:33 +0100alp__(~alp@2a01:e0a:58b:4920:78f2:8435:ea0f:a6b2) (Ping timeout: 272 seconds)
2020-11-30 12:30:36 +0100vg(~vg@139.59.59.230)
2020-11-30 12:30:51 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 12:31:06 +0100vg(~vg@139.59.59.230)
2020-11-30 12:32:27 +0100ericsagnes(~ericsagne@2405:6580:0:5100:1a87:b30a:6cc7:5b7c) (Ping timeout: 272 seconds)
2020-11-30 12:34:43 +0100kupi(uid212005@gateway/web/irccloud.com/x-fqbnyydqsnaerben) (Quit: Connection closed for inactivity)
2020-11-30 12:35:00 +0100alp__(~alp@2a01:e0a:58b:4920:75f3:b75c:ddf0:2287)
2020-11-30 12:35:41 +0100acidjnk_new(~acidjnk@p200300d0c719ff21c162f6267ce4f02c.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-30 12:36:04 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 12:36:07 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 12:36:35 +0100vg(~vg@139.59.59.230)
2020-11-30 12:37:17 +0100urek(~urek@2804:7f1:e10a:5ac1:8db3:3757:9c7d:4898) (Ping timeout: 260 seconds)
2020-11-30 12:39:40 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-11-30 12:39:55 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-11-30 12:40:38 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-30 12:41:44 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 12:42:14 +0100vg(~vg@139.59.59.230)
2020-11-30 12:42:16 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 12:42:41 +0100vg(~vg@139.59.59.230)
2020-11-30 12:43:59 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-11-30 12:46:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 12:47:24 +0100ubert(~Thunderbi@p200300ecdf1e53b5e6b318fffe838f33.dip0.t-ipconnect.de)
2020-11-30 12:47:51 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 12:48:18 +0100vg(~vg@139.59.59.230)
2020-11-30 12:49:44 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-11-30 12:50:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-30 12:50:59 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-11-30 12:51:10 +0100 <mouseghost> btw, why is it called van laarhoven
2020-11-30 12:53:06 +0100 <dminuoso> Twan Van Laarhoven is the person who came up with the original idea and encoding.
2020-11-30 12:53:15 +0100 <dminuoso> https://www.twanvl.nl/blog/haskell/cps-functional-references
2020-11-30 12:53:19 +0100 <dminuoso> type RefF a b = forall f. Functor f => (b -> f b) -> (a -> f a)
2020-11-30 12:53:30 +0100 <dminuoso> Which looks an awful lot like `Lens'` :)
2020-11-30 12:53:37 +0100 <dminuoso> type Lens' s a = Lens s s a a
2020-11-30 12:53:43 +0100 <dminuoso> type Lens s t a b = forall f . Functor f => (a -> f b) -> s -> f t
2020-11-30 12:53:45 +0100 <dminuoso> So
2020-11-30 12:54:02 +0100 <dminuoso> We call this particular encoding of "lenses" (a term not known back then) as van laarhoven encoding, as tribute to him
2020-11-30 12:54:36 +0100 <mouseghost> i see, i couldn't find the proper van laarhoven hence i asked :P thanks
2020-11-30 12:56:44 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-11-30 12:58:06 +0100ericsagnes(~ericsagne@2405:6580:0:5100:eb49:48c8:385b:8ae3)
2020-11-30 13:00:25 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 13:01:06 +0100urek(~urek@2804:7f1:e10a:c641:3505:b16d:6812:3a9b)
2020-11-30 13:01:06 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-30 13:01:13 +0100u0_a298(~user@65.35.205.131)
2020-11-30 13:03:17 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 13:03:58 +0100u0_a298(~user@65.35.205.131)
2020-11-30 13:04:36 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
2020-11-30 13:06:53 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 13:07:10 +0100u0_a298(~user@65.35.205.131)
2020-11-30 13:08:45 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-11-30 13:10:06 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-30 13:10:17 +0100hackplan1(~hackplan@2408:8221:4b10:da30:4410:1b15:c509:bf46)
2020-11-30 13:10:50 +0100hackplan(~miuchan@2408:8221:4b1e:80d0:1c28:9d6f:fae6:d558) (Ping timeout: 264 seconds)
2020-11-30 13:13:05 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Client Quit)
2020-11-30 13:13:05 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2020-11-30 13:13:41 +0100u0_a298(~user@65.35.205.131)
2020-11-30 13:14:39 +0100solonarv(~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr)
2020-11-30 13:16:47 +0100alp__(~alp@2a01:e0a:58b:4920:75f3:b75c:ddf0:2287) (Ping timeout: 272 seconds)
2020-11-30 13:17:17 +0100dxld(~dxld@2a01:4f8:201:89ff:22cf:30ff:fe67:8db) (Quit: Bye)
2020-11-30 13:17:47 +0100chaosmasttter(~chaosmast@p200300c4a708ba01009b72ed500751f5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-30 13:18:21 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-30 13:19:04 +0100dxld(~dxld@80-109-136-248.cable.dynamic.surfer.at)
2020-11-30 13:21:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 13:22:04 +0100adm_(~adm@117.208.21.247) (Remote host closed the connection)
2020-11-30 13:22:16 +0100LKoen(~LKoen@105.175.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-30 13:22:30 +0100adm_(~adm@117.208.21.247)
2020-11-30 13:23:32 +0100u0_a298(~user@65.35.205.131) (Ping timeout: 260 seconds)
2020-11-30 13:24:01 +0100Mathmoose(~mathias@31-208-78-204.cust.bredband2.com)
2020-11-30 13:26:17 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2020-11-30 13:26:49 +0100adm_(~adm@117.208.21.247) (Ping timeout: 246 seconds)
2020-11-30 13:26:54 +0100Spiff(~quassel@102.160.27.107) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2020-11-30 13:26:58 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-30 13:27:38 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165)
2020-11-30 13:28:29 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 13:28:46 +0100Spiff(~quassel@102.160.27.107)
2020-11-30 13:28:58 +0100vg(~vg@139.59.59.230)
2020-11-30 13:30:05 +0100befuddled(~befuddled@49.207.215.241)
2020-11-30 13:31:34 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 256 seconds)
2020-11-30 13:31:51 +0100hackagepolysemy-path 0.2.0.0 - Polysemy versions of Path functions. https://hackage.haskell.org/package/polysemy-path-0.2.0.0 (locallycompact)
2020-11-30 13:33:40 +0100drbean(~drbean@TC210-63-209-23.static.apol.com.tw)
2020-11-30 13:35:39 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-30 13:37:36 +0100gproto23(~gproto23@unaffiliated/gproto23) (Client Quit)
2020-11-30 13:37:54 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-30 13:39:51 +0100hackageaeson-injector 1.1.5.0 - Injecting fields into aeson values https://hackage.haskell.org/package/aeson-injector-1.1.5.0 (NCrashed)
2020-11-30 13:45:27 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-30 13:47:33 +0100joaj(~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca)
2020-11-30 13:48:12 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9)
2020-11-30 13:48:26 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-30 13:49:41 +0100christo(~chris@81.96.113.213)
2020-11-30 13:51:09 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-30 13:51:10 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no)
2020-11-30 13:51:32 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-30 13:53:19 +0100Spiff(~quassel@102.160.27.107) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2020-11-30 13:53:40 +0100 <sondr3> How are people structuring their AoC projects for Haskell? I did it last year with a separate binary for each day but didn't really enjoy how I structured it
2020-11-30 13:53:54 +0100st8less(~st8less@2603:a060:11fd:0:e426:c042:f13e:e237)
2020-11-30 13:54:06 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 13:54:35 +0100vg(~vg@139.59.59.230)
2020-11-30 13:54:38 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 13:55:05 +0100vg(~vg@139.59.59.230)
2020-11-30 13:55:17 +0100geekosaur(ac3a5371@172.58.83.113)
2020-11-30 13:55:39 +0100adm_(~adm@117.208.21.247)
2020-11-30 13:56:39 +0100 <tomsmeding> haskell files and a Makefile :p https://git.tomsmeding.com/AOC/tree/2019
2020-11-30 13:56:50 +0100 <tomsmeding> less cruft more better
2020-11-30 13:57:13 +0100drbean(~drbean@TC210-63-209-23.static.apol.com.tw) (Ping timeout: 264 seconds)
2020-11-30 13:58:08 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-11-30 13:58:23 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-11-30 14:00:22 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-30 14:00:45 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-30 14:03:09 +0100chaosmasttter(~chaosmast@p200300c4a708ba01009b72ed500751f5.dip0.t-ipconnect.de)
2020-11-30 14:08:10 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-11-30 14:09:07 +0100 <sondr3> Very KISS, I like it
2020-11-30 14:09:24 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-11-30 14:09:55 +0100plutoniix(~q@node-ulb.pool-125-24.dynamic.totinternet.net)
2020-11-30 14:11:27 +0100ubert(~Thunderbi@p200300ecdf1e53b5e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-30 14:12:25 +0100 <tomsmeding> (In the unlikely case that I find myself wanting to use a library not in the core GHC package, I'll use cabal :) )
2020-11-30 14:13:20 +0100tomsmedingguesses that 'random' is the most likely candidate for such a library
2020-11-30 14:17:34 +0100tomsmedingwill be finishing his thesis in december so won't have much time for AoC anyway :(
2020-11-30 14:17:40 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-11-30 14:18:08 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-30 14:18:35 +0100alp_(~alp@2a01:e0a:58b:4920:ecc4:686d:466:ba88)
2020-11-30 14:21:23 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:a1be:e7f3:3c29:a2e3)
2020-11-30 14:23:31 +0100 <__monty__> Heh, most exiting thing about my AoC setup is I might go with Megaparsec rather than ReadP this year >.<
2020-11-30 14:25:09 +0100 <solonarv> I'll probably just steal jle's framework this year :p
2020-11-30 14:25:23 +0100 <xerox_> I do a simple cabal project with a library and many executables
2020-11-30 14:29:56 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-30 14:33:09 +0100lpy(~nyd@unaffiliated/elysian) (Quit: lpy)
2020-11-30 14:34:25 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-30 14:38:05 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-30 14:40:14 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 14:40:40 +0100vg(~vg@139.59.59.230)
2020-11-30 14:40:53 +0100 <merijn> I'll do the same as last year, finish 5 days of puzzles and then get to busy with work :p
2020-11-30 14:40:53 +0100poljar1(~poljar@93-141-151-125.adsl.net.t-com.hr)
2020-11-30 14:41:55 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:a1be:e7f3:3c29:a2e3) (Quit: ZNC 1.7.5 - https://znc.in)
2020-11-30 14:43:28 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-30 14:43:33 +0100poljar(~poljar@93-141-140-79.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
2020-11-30 14:44:58 +0100 <sondr3> First year where all my exams are done before AoC,
2020-11-30 14:45:22 +0100 <sondr3> so I'll probably give up when I start spending many hours on each problem *
2020-11-30 14:46:22 +0100jmchael(~Chi1thang@87.112.60.168)
2020-11-30 14:47:02 +0100elfets_(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-30 14:48:41 +0100christo(~chris@81.96.113.213)
2020-11-30 14:48:56 +0100poljar1(~poljar@93-141-151-125.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
2020-11-30 14:49:43 +0100poljar1(~poljar@93-139-28-121.adsl.net.t-com.hr)
2020-11-30 14:50:33 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds)
2020-11-30 14:50:41 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165)
2020-11-30 14:51:32 +0100elfets_(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds)
2020-11-30 14:52:55 +0100christo(~chris@81.96.113.213) (Ping timeout: 246 seconds)
2020-11-30 14:54:24 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com)
2020-11-30 14:56:08 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 14:56:24 +0100vg(~vg@139.59.59.230)
2020-11-30 14:56:37 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 14:56:51 +0100vg(~vg@139.59.59.230)
2020-11-30 14:58:01 +0100urodna(~urodna@unaffiliated/urodna)
2020-11-30 15:01:39 +0100tlaxkit(~kvirc@185.228.155.198)
2020-11-30 15:03:02 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-11-30 15:03:18 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-11-30 15:03:46 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-11-30 15:05:16 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2020-11-30 15:06:21 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-30 15:08:03 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus) (Ping timeout: 260 seconds)
2020-11-30 15:09:29 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus)
2020-11-30 15:09:57 +0100alp_(~alp@2a01:e0a:58b:4920:ecc4:686d:466:ba88) (Remote host closed the connection)
2020-11-30 15:10:17 +0100alp_(~alp@2a01:e0a:58b:4920:dd21:7e7c:f9d:f4af)
2020-11-30 15:10:58 +0100Rudd0^(~Rudd0@185.189.115.108) (Ping timeout: 260 seconds)
2020-11-30 15:11:24 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-11-30 15:11:51 +0100Tario(~Tario@201.192.165.173)
2020-11-30 15:12:07 +0100kupi(uid212005@gateway/web/irccloud.com/x-wpncqurqfmhlmlcw)
2020-11-30 15:13:26 +0100 <__monty__> merijn: Similar, though I try to beat more days each year.
2020-11-30 15:13:58 +0100 <__monty__> sondr3: That'd mean I have to stop on day 1 -_-
2020-11-30 15:14:23 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-11-30 15:14:52 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-11-30 15:17:52 +0100 <merijn> __monty__: I had to focus on getting a paper done last year, this year I still have 2 chapters of thesis rewriting that conflicts with useful things, like AoC :p
2020-11-30 15:18:33 +0100carlomagno(~cararell@148.87.23.4) (Ping timeout: 260 seconds)
2020-11-30 15:20:34 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 246 seconds)
2020-11-30 15:20:54 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-30 15:21:15 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-30 15:21:24 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-11-30 15:21:37 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-11-30 15:22:11 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-30 15:25:55 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
2020-11-30 15:26:11 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-11-30 15:26:23 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2020-11-30 15:31:00 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) ()
2020-11-30 15:36:55 +0100texasmynsted(~texasmyns@212.102.45.115)
2020-11-30 15:38:23 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 15:42:13 +0100Iceland_jack(~user@31.124.48.169)
2020-11-30 15:42:49 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-30 15:44:10 +0100gproto023(~gproto23@unaffiliated/gproto23)
2020-11-30 15:45:36 +0100gproto023(~gproto23@unaffiliated/gproto23) (Client Quit)
2020-11-30 15:46:16 +0100gproto23(~gproto23@unaffiliated/gproto23) (Ping timeout: 240 seconds)
2020-11-30 15:46:51 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 15:47:05 +0100vg(~vg@139.59.59.230)
2020-11-30 15:47:05 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 15:47:13 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 256 seconds)
2020-11-30 15:47:20 +0100vg(~vg@139.59.59.230)
2020-11-30 15:48:29 +0100jespada(~jespada@90.254.245.49)
2020-11-30 15:51:21 +0100hackagejvm-batching 0.2.0 - Provides batched marshalling of values between Java and Haskell. https://hackage.haskell.org/package/jvm-batching-0.2.0 (FacundoDominguez)
2020-11-30 15:51:48 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2020-11-30 15:52:00 +0100geekosaur(ac3a5371@172.58.83.113) (Remote host closed the connection)
2020-11-30 15:54:17 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-30 15:56:35 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) (Remote host closed the connection)
2020-11-30 15:57:14 +0100Lord_of_Life_Lord_of_Life
2020-11-30 15:57:28 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 15:57:55 +0100vg(~vg@139.59.59.230)
2020-11-30 16:00:17 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 16:02:02 +0100carlomagno(~cararell@148.87.23.9)
2020-11-30 16:02:12 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 272 seconds)
2020-11-30 16:02:41 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 16:03:05 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-30 16:05:26 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
2020-11-30 16:05:50 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-30 16:06:11 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-30 16:06:18 +0100larou(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2020-11-30 16:06:35 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-30 16:07:30 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-30 16:12:57 +0100kritzefitz_(~kritzefit@212.86.56.80)
2020-11-30 16:14:46 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Quit: hekkaidekapus)
2020-11-30 16:15:32 +0100jollygood2(~bc8165ab@217.29.117.252)
2020-11-30 16:15:33 +0100timCF(511495c8@200-149-20-81.sta.estpak.ee)
2020-11-30 16:16:25 +0100 <timCF> Hello guys! Any DHall users there? How do I create `newtype` in DHall? And how to derive `Show` instance for custom types like enums?
2020-11-30 16:17:30 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-30 16:18:28 +0100 <timCF> Because without `newtype` signatures of functions and types are looking kinda disappointing, everything is like `Text -> Text -> Text -> Text`
2020-11-30 16:19:12 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 260 seconds)
2020-11-30 16:20:40 +0100sakirious9(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat)
2020-11-30 16:21:53 +0100sakirious9(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-11-30 16:22:08 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be)
2020-11-30 16:23:21 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-30 16:23:37 +0100urek(~urek@2804:7f1:e10a:c641:3505:b16d:6812:3a9b) (Ping timeout: 272 seconds)
2020-11-30 16:25:00 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
2020-11-30 16:26:02 +0100urek(~urek@2804:7f1:e10a:9644:9d63:7ade:a7c0:a0df)
2020-11-30 16:28:24 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:690b:f4aa:bb1f:cfec)
2020-11-30 16:28:41 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-tesxvyxpigmxrfxg) (Quit: Connection closed for inactivity)
2020-11-30 16:29:02 +0100urek__(~urek@2804:7f1:e10a:9644:4d2e:7df3:daef:71d)
2020-11-30 16:31:13 +0100urek(~urek@2804:7f1:e10a:9644:9d63:7ade:a7c0:a0df) (Ping timeout: 272 seconds)
2020-11-30 16:31:53 +0100sakirious9(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat)
2020-11-30 16:32:13 +0100sakirious9(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-11-30 16:32:13 +0100sakirious9(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Client Quit)
2020-11-30 16:32:38 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-11-30 16:34:59 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-dgdxieqqfmttuoeu)
2020-11-30 16:36:09 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-11-30 16:38:59 +0100 <kupi> how to ignore a specific rule in a specific function with hlint?
2020-11-30 16:39:17 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 16:39:28 +0100 <kupi> i think redundant lambda can improve readibility if there are many parameters and the result is intended as a function
2020-11-30 16:39:51 +0100 <kupi> equalP' f k = \w x y z -> f w x y z == k instead of equalP' f k w x y z = f w x y z == k
2020-11-30 16:40:36 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2020-11-30 16:42:08 +0100motherfsck(~motherfsc@unaffiliated/motherfsck)
2020-11-30 16:42:08 +0100motherfsck(~motherfsc@unaffiliated/motherfsck) (Client Quit)
2020-11-30 16:42:10 +0100 <kupi> i know there is: {- HLINT ignore "Redundant lambda" -}, but this makes it to ignore for other functions
2020-11-30 16:42:40 +0100motherfsck(~motherfsc@unaffiliated/motherfsck)
2020-11-30 16:43:33 +0100befuddled(~befuddled@49.207.215.241) (Quit: Textual IRC Client: www.textualapp.com)
2020-11-30 16:43:52 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-30 16:44:22 +0100sh92(~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
2020-11-30 16:45:06 +0100 <merijn> kupi: hlint is full of questionable recommendations
2020-11-30 16:45:09 +0100urek__(~urek@2804:7f1:e10a:9644:4d2e:7df3:daef:71d) (Ping timeout: 272 seconds)
2020-11-30 16:45:33 +0100urek(~urek@191.35.6.56)
2020-11-30 16:45:36 +0100 <merijn> It is a very opinionated tool, so if your opinions are different from Neil Mitchell, you'll have to customise it heavily
2020-11-30 16:47:28 +0100wwwww(~wwwww@unaffiliated/wwwww) (Ping timeout: 260 seconds)
2020-11-30 16:47:46 +0100 <__monty__> timCF: Maybe try #dhall.
2020-11-30 16:49:37 +0100wwwww(~wwwww@unaffiliated/wwwww)
2020-11-30 16:50:16 +0100pavonia(~user@unaffiliated/siracusa)
2020-11-30 16:51:32 +0100adm_(~adm@117.208.21.247) (Remote host closed the connection)
2020-11-30 16:52:09 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-iqmdrqkssdvbgacz)
2020-11-30 16:52:15 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2020-11-30 16:55:03 +0100AndreasK(uid320732@gateway/web/irccloud.com/x-ylkxsbmenduzxmys)
2020-11-30 16:55:08 +0100Ranhir(~Ranhir@157.97.53.139) (Ping timeout: 265 seconds)
2020-11-30 16:58:00 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-30 16:58:47 +0100Deide(~Deide@217.155.19.23)
2020-11-30 16:58:58 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 16:59:16 +0100_Adluc_(~Adluc@2a01:430:17:1::ffff:328)
2020-11-30 16:59:30 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-30 16:59:43 +0100ericsagnes(~ericsagne@2405:6580:0:5100:eb49:48c8:385b:8ae3) (Ping timeout: 272 seconds)
2020-11-30 17:00:05 +0100Ranhir(~Ranhir@157.97.53.139)
2020-11-30 17:00:26 +0100Rudd0(~Rudd0@185.189.115.108)
2020-11-30 17:03:21 +0100adm_(~adm@117.208.21.247)
2020-11-30 17:07:44 +0100hexo-(~hexo@83.167.228.130)
2020-11-30 17:08:06 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 17:08:21 +0100vg(~vg@139.59.59.230)
2020-11-30 17:08:34 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 17:08:50 +0100vg(~vg@139.59.59.230)
2020-11-30 17:09:06 +0100Ha(5fa448e7@95.164.72.231)
2020-11-30 17:11:59 +0100ericsagnes(~ericsagne@2405:6580:0:5100:8dad:fdd3:20dd:4129)
2020-11-30 17:14:25 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-11-30 17:15:46 +0100macrover(~macrover@ip68-108-126-211.lv.lv.cox.net)
2020-11-30 17:15:47 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-11-30 17:16:40 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-11-30 17:19:14 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 17:20:06 +0100Digit(~user@fsf/member/digit) (Remote host closed the connection)
2020-11-30 17:20:58 +0100hexic(hexo@base48.cz) (Quit: ZNC - http://znc.in)
2020-11-30 17:20:58 +0100Adluc(Adluc@base48.cz) (Quit: ZNC - http://znc.in)
2020-11-30 17:21:22 +0100Ranhir(~Ranhir@157.97.53.139) (Ping timeout: 272 seconds)
2020-11-30 17:21:46 +0100fragamus(~fragamus@108-77-140-126.lightspeed.sntcca.sbcglobal.net)
2020-11-30 17:22:21 +0100eedgit(~eedgit@95.179.237.21) (Remote host closed the connection)
2020-11-30 17:22:21 +0100eedgit26(~chat.free@95.179.237.21) (Remote host closed the connection)
2020-11-30 17:22:42 +0100eedgit26(~chat.free@95.179.237.21)
2020-11-30 17:22:45 +0100eedgit(~eedgit@95.179.237.21)
2020-11-30 17:23:49 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-30 17:24:02 +0100knupfer(~Thunderbi@200116b82c773700e0a648fffec65c4f.dip.versatel-1u1.de)
2020-11-30 17:24:05 +0100Ranhir(~Ranhir@157.97.53.139)
2020-11-30 17:24:06 +0100knupfer(~Thunderbi@200116b82c773700e0a648fffec65c4f.dip.versatel-1u1.de) (Client Quit)
2020-11-30 17:24:18 +0100knupfer(~Thunderbi@200116b82c77370051b244619a509919.dip.versatel-1u1.de)
2020-11-30 17:25:56 +0100fragamus(~fragamus@108-77-140-126.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-30 17:27:58 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
2020-11-30 17:29:29 +0100chaosmasttter(~chaosmast@p200300c4a708ba01009b72ed500751f5.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2020-11-30 17:30:18 +0100ahri(~ahri@178.209.40.84)
2020-11-30 17:30:23 +0100nados(~dan@69-165-210-185.cable.teksavvy.com)
2020-11-30 17:32:29 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net)
2020-11-30 17:32:34 +0100alp_(~alp@2a01:e0a:58b:4920:dd21:7e7c:f9d:f4af) (Remote host closed the connection)
2020-11-30 17:33:00 +0100alp_(~alp@2a01:e0a:58b:4920:1595:a7ed:600b:8cb2)
2020-11-30 17:33:51 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 17:34:19 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-30 17:34:20 +0100vg(~vg@139.59.59.230)
2020-11-30 17:35:01 +0100Tario(~Tario@201.192.165.173)
2020-11-30 17:39:11 +0100conal(~conal@64.71.133.70)
2020-11-30 17:39:28 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 17:39:55 +0100vg(~vg@139.59.59.230)
2020-11-30 17:41:01 +0100kritzefitz_(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-30 17:44:01 +0100kritzefitz_(~kritzefit@212.86.56.80)
2020-11-30 17:44:04 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2020-11-30 17:45:50 +0100kritzefitz_(~kritzefit@212.86.56.80) (Client Quit)
2020-11-30 17:45:54 +0100juuandyy(~juuandyy@90.166.144.65)
2020-11-30 17:46:26 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-30 17:47:25 +0100bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2020-11-30 17:51:06 +0100fendor_(~fendor@178.165.130.113.wireless.dyn.drei.com)
2020-11-30 17:52:52 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-11-30 17:53:16 +0100fendor(~fendor@91.141.2.60.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2020-11-30 17:53:34 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be) (Read error: No route to host)
2020-11-30 17:53:43 +0100Ranhir(~Ranhir@157.97.53.139) (Ping timeout: 260 seconds)
2020-11-30 17:54:04 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be)
2020-11-30 17:56:30 +0100fendor_fendor
2020-11-30 17:56:55 +0100 <maerwald> merijn: you can't really customize it, can you?
2020-11-30 17:57:17 +0100zfnmxt(~zfnmxt@unaffiliated/zfnmxt) (Quit: Bye!)
2020-11-30 17:57:32 +0100xff0x(~fox@2001:1a81:5287:f00:70f2:294c:10e7:d278) (Ping timeout: 260 seconds)
2020-11-30 17:57:54 +0100nehsou^(nehsou@ip98-184-89-2.mc.at.cox.net)
2020-11-30 17:57:56 +0100xff0x(~fox@2001:1a81:5287:f00:f14b:6dc5:5c2:61b2)
2020-11-30 17:59:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-30 18:00:13 +0100zfnmxt(~zfnmxt@unaffiliated/zfnmxt)
2020-11-30 18:00:45 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-11-30 18:03:06 +0100texasmyn_(~texasmyns@107.173.73.36)
2020-11-30 18:04:48 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 18:04:58 +0100urodna(~urodna@unaffiliated/urodna) (Read error: Connection reset by peer)
2020-11-30 18:05:04 +0100hackplan1(~hackplan@2408:8221:4b10:da30:4410:1b15:c509:bf46) (Ping timeout: 240 seconds)
2020-11-30 18:05:29 +0100Ha(5fa448e7@95.164.72.231) (Ping timeout: 245 seconds)
2020-11-30 18:05:32 +0100Ranhir(~Ranhir@157.97.53.139)
2020-11-30 18:05:48 +0100hackplan1(~hackplan@2408:8221:4b10:da30:4410:1b15:c509:bf46)
2020-11-30 18:05:56 +0100texasmynsted(~texasmyns@212.102.45.115) (Ping timeout: 240 seconds)
2020-11-30 18:06:27 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 18:07:38 +0100Mathmoose(~mathias@31-208-78-204.cust.bredband2.com) (Ping timeout: 265 seconds)
2020-11-30 18:07:58 +0100conal(~conal@64.71.133.70)
2020-11-30 18:08:42 +0100texasmynsted(~texasmyns@2600:6c40:700:4863:5a7:6392:cd4:cdad)
2020-11-30 18:09:28 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds)
2020-11-30 18:11:21 +0100plutoniix(~q@node-ulb.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
2020-11-30 18:12:00 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-11-30 18:12:23 +0100texasmyn_(~texasmyns@107.173.73.36) (Ping timeout: 260 seconds)
2020-11-30 18:13:25 +0100Mathmoose(~mathias@31-208-78-204.cust.bredband2.com)
2020-11-30 18:14:20 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br) (Ping timeout: 256 seconds)
2020-11-30 18:14:37 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 264 seconds)
2020-11-30 18:14:39 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br)
2020-11-30 18:15:09 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-30 18:15:42 +0100chaosmasttter(~chaosmast@p200300c4a708ba01009b72ed500751f5.dip0.t-ipconnect.de)
2020-11-30 18:16:19 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
2020-11-30 18:16:47 +0100 <tomjaguarpaw> You can customize it with a yaml file, can't you? https://neilmitchell.blogspot.com/2017/04/hlint-20-with-yaml-configuration.html
2020-11-30 18:16:48 +0100JJ15_(~JJ@host81-133-209-64.in-addr.btopenworld.com)
2020-11-30 18:17:47 +0100dhil(~dhil@195.213.192.34)
2020-11-30 18:18:20 +0100kritzefitz_(~kritzefit@212.86.56.80)
2020-11-30 18:18:45 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 265 seconds)
2020-11-30 18:19:23 +0100pjb(~t@2a01cb04063ec500c51bcad49f8457d6.ipv6.abo.wanadoo.fr)
2020-11-30 18:19:25 +0100kritzefitz_(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-30 18:20:09 +0100JJ15__(~JJ@2a00:23a8:4382:a900:c581:e386:e820:2657) (Ping timeout: 272 seconds)
2020-11-30 18:22:27 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-11-30 18:22:32 +0100kritzefitz_(~kritzefit@212.86.56.80)
2020-11-30 18:25:30 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 18:25:37 +0100thebnq(~bnq@herrokitty.com) (Read error: Connection reset by peer)
2020-11-30 18:27:07 +0100kuribas(~user@ptr-25vy0i92djchka8xsjs.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2020-11-30 18:27:25 +0100 <kupi> i did
2020-11-30 18:27:25 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-30 18:27:26 +0100 <kupi> - ignore: {name: Redundant lambda}
2020-11-30 18:27:46 +0100conal(~conal@64.71.133.70)
2020-11-30 18:27:52 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 18:27:57 +0100carlomagno(~cararell@148.87.23.9) (Quit: Leaving.)
2020-11-30 18:27:59 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 18:28:17 +0100texasmynsted(~texasmyns@2600:6c40:700:4863:5a7:6392:cd4:cdad) (Read error: Connection reset by peer)
2020-11-30 18:28:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 18:29:03 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-30 18:29:19 +0100conal(~conal@64.71.133.70)
2020-11-30 18:29:27 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-30 18:30:07 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 18:30:36 +0100jmchael(~Chi1thang@87.112.60.168) (Ping timeout: 260 seconds)
2020-11-30 18:30:36 +0100vg(~vg@139.59.59.230)
2020-11-30 18:30:40 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-11-30 18:30:59 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-11-30 18:31:38 +0100plutoniix(~q@node-ulb.pool-125-24.dynamic.totinternet.net)
2020-11-30 18:31:59 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-kscbyfmbzjjwdrpq)
2020-11-30 18:32:11 +0100plutoniix(~q@node-ulb.pool-125-24.dynamic.totinternet.net) (Max SendQ exceeded)
2020-11-30 18:32:38 +0100plutoniix(~q@node-ulb.pool-125-24.dynamic.totinternet.net)
2020-11-30 18:33:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-30 18:33:56 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-30 18:35:18 +0100plutoniix(~q@node-ulb.pool-125-24.dynamic.totinternet.net) (Max SendQ exceeded)
2020-11-30 18:35:46 +0100LKoen(~LKoen@105.175.9.109.rev.sfr.net)
2020-11-30 18:35:50 +0100plutoniix(~q@node-ulb.pool-125-24.dynamic.totinternet.net)
2020-11-30 18:36:25 +0100toorevitimirp(~tooreviti@117.182.183.16) (Remote host closed the connection)
2020-11-30 18:38:39 +0100juuandyy(~juuandyy@90.166.144.65)
2020-11-30 18:39:54 +0100 <ezzieyguywuf> glguy: with config-schema, let's say I want tho config file to require one or more top-level sections, each with the same specification. In other words, to use the example from the documentation, let's say that "name", "age" etc were all underneath a section "Person1", and I wanted to allow an arbitrary number of persons, "Person2", "Person3", etc... would the only way to accomplish this be to
2020-11-30 18:40:00 +0100 <ezzieyguywuf> create a list at the top-level?
2020-11-30 18:40:36 +0100 <glguy> Yeah, you could have a top-level list
2020-11-30 18:41:12 +0100 <ezzieyguywuf> glguy: https://dpaste.com/FF6PKHXHJ
2020-11-30 18:41:37 +0100 <ezzieyguywuf> glguy: so would doing something as I've posted here be impossible? i.e. without using a list, let the user specify an arbitrary number of PersonN?
2020-11-30 18:42:04 +0100hodapp(~hodapp@react-ams-119225.antiddos.solutions) (Quit: WeeChat 1.9.1)
2020-11-30 18:42:22 +0100hodapp(~hodapp@react-ams-119225.antiddos.solutions)
2020-11-30 18:43:33 +0100 <ezzieyguywuf> I think it'd have to look like this https://dpaste.com/E2JT7RLMW or this https://dpaste.com/E2JT7RLMW
2020-11-30 18:43:37 +0100 <ezzieyguywuf> unless I'm missing something
2020-11-30 18:43:41 +0100 <glguy> I'll look now
2020-11-30 18:43:48 +0100Sonolin(~Sonolin@184.103.179.49)
2020-11-30 18:44:32 +0100 <Sonolin> I just realized BSD-3 requires me to include the license of the dependency when I distribute in binary form... is there an easy way to get all these licenses via stack? Or at least a way to just retrieve all the dependencies' source code?
2020-11-30 18:44:32 +0100 <glguy> ezzieyguywuf, I think you want this: https://hackage.haskell.org/package/config-schema-1.2.1.0/docs/Config-Schema-Spec.html#v:assocSpec
2020-11-30 18:44:44 +0100 <glguy> >> Specification for a section list where the keys are user-defined. Values are matched against the underlying specification and returned as a list of section-name/value pairs.
2020-11-30 18:44:51 +0100chaosmasttter(~chaosmast@p200300c4a708ba01009b72ed500751f5.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2020-11-30 18:44:59 +0100kritzefitz_(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-30 18:45:45 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-30 18:45:52 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 18:46:05 +0100 <ezzieyguywuf> glguy: 👍️ I think you're right! thanks again for your prompt response and your help.
2020-11-30 18:46:23 +0100 <glguy> ezzieyguywuf, Do you have a usecase in mind, or are you in the learning phase first?
2020-11-30 18:46:31 +0100 <ezzieyguywuf> glguy: I have a use-case
2020-11-30 18:46:47 +0100 <ezzieyguywuf> glguy: I could post an example of what I'm after if you'd like
2020-11-30 18:46:56 +0100 <glguy> sure
2020-11-30 18:47:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 18:48:30 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-30 18:49:47 +0100Iceland_jack(~user@31.124.48.169) (Read error: Connection reset by peer)
2020-11-30 18:49:47 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-30 18:49:56 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 240 seconds)
2020-11-30 18:50:03 +0100Iceland_jack(~user@31.124.48.169)
2020-11-30 18:50:17 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 18:50:22 +0100christo(~chris@81.96.113.213)
2020-11-30 18:51:56 +0100 <ezzieyguywuf> glguy: I think something like this https://dpaste.com/C7QAL6VTG
2020-11-30 18:52:45 +0100 <__monty__> timCF: You can define values of type Type, which is what you'd want to do I think, e.g., https://github.com/dhall-lang/dhall-lang/blob/v19.0.0/Prelude/XML/Type.dhall
2020-11-30 18:53:27 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-11-30 18:53:28 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 260 seconds)
2020-11-30 18:53:52 +0100 <__monty__> timCF: There's no way I know of to derive implementations of functions in dhall.
2020-11-30 18:54:29 +0100 <glguy> ezzieyguywuf: one note, unquoted "atoms" and quoted "strings" are intended to be distinct
2020-11-30 18:54:57 +0100 <glguy> ezzieyguywuf: Are you using this with hledger, perhaps?
2020-11-30 18:55:23 +0100 <ezzieyguywuf> glguy: yes, with hledger. and I'm aware of the atom vs. string distinction, but I didn't think I could use a string as a section name
2020-11-30 18:55:34 +0100 <glguy> I was looking at the MatchStrings
2020-11-30 18:55:47 +0100 <glguy> like line 16 would be a problem
2020-11-30 18:55:48 +0100 <ezzieyguywuf> glguy: ah, yes those should be quoted
2020-11-30 18:56:05 +0100ryantrinkle(~ryan@cpe-68-173-35-198.nyc.res.rr.com) (Remote host closed the connection)
2020-11-30 18:56:05 +0100 <ezzieyguywuf> MatchStrings should be a list of strings, no atoms
2020-11-30 18:56:28 +0100 <ezzieyguywuf> line 3 would be a problem, due to the apostrophe, no?
2020-11-30 18:56:50 +0100 <glguy> Yeah, there were multiple problems, I was just trying to be specific
2020-11-30 18:57:21 +0100 <glguy> You could definitely express that fragment in config-schema, though
2020-11-30 18:58:47 +0100hackplan1(~hackplan@2408:8221:4b10:da30:4410:1b15:c509:bf46) (Ping timeout: 272 seconds)
2020-11-30 18:59:08 +0100 <ezzieyguywuf> glguy: right. (fixed the errors btw https://dpaste.com/CRFUTYMZE). so assocSpec here would return [("walgreens", MyReturnData), ("sheetz", MyReturnData), ("amazon", MyReturnData)]
2020-11-30 18:59:22 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-30 18:59:24 +0100 <ezzieyguywuf> right?
2020-11-30 18:59:38 +0100 <glguy> Yeah
2020-11-30 19:00:02 +0100 <glguy> and then if you wanted to do the "automatically added" part you'd (fmap autoadd) over that list to fold in the name
2020-11-30 19:00:05 +0100chalkmonster(~chalkmons@unaffiliated/chalkmonster)
2020-11-30 19:00:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-11-30 19:00:49 +0100 <ezzieyguywuf> right. well, I'm storing it as a Data.List.NonEmpty, so I take the name as the starting point then concat the (possibly empty) list from MatchStrings
2020-11-30 19:02:25 +0100 <ezzieyguywuf> glguy: what's the difference between, say, optSection and optSection'? I see that one has a "HasSpec" requirement on 'a', but I don't really understand the distinction.
2020-11-30 19:02:59 +0100 <glguy> One uses the element type to pick the schema and the other takes a manually specified one
2020-11-30 19:04:20 +0100 <ezzieyguywuf> glguy: so `name <- reqSection "name" "Full name"` I gues (a) the type of `name` is inferredd to be Text, and (b) Text has a HasSpec instance?
2020-11-30 19:04:32 +0100 <glguy> yeah
2020-11-30 19:04:45 +0100 <ezzieyguywuf> gotcha.
2020-11-30 19:06:03 +0100 <glguy> fmap (\(n,(x,y,z,w)) -> (n NonEmpty.:| x, y, z, w)) <$> assocSpec (sectionsSpec "entry" ((,,,) <$> (fromMaybe [] <$> optSection "MatchStrings" "doc") <*> reqSection "MuxedDescription" "doc" <*> reqSection "DebitAccount" "doc" <*> reqSection "CreditAccount" "doc")) :: ValueSpec [(NonEmpty Text, Text, Text, Text)]
2020-11-30 19:06:32 +0100 <glguy> You'd want to use a record, maybe some ApplicativeDo, real names, etc.
2020-11-30 19:06:54 +0100 <glguy> but that would match the example you pasted
2020-11-30 19:07:10 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-30 19:07:13 +0100 <maerwald> Sono
2020-11-30 19:07:23 +0100 <maerwald> Sonolin: cabal-plan license-report
2020-11-30 19:07:43 +0100 <Sonolin> maerwald thanks!
2020-11-30 19:07:52 +0100 <ezzieyguywuf> glguy: neat thank you!
2020-11-30 19:07:55 +0100 <Sonolin> I don't seem to have cabal installed, can I execute that through stack?
2020-11-30 19:08:10 +0100 <maerwald> probably not
2020-11-30 19:08:20 +0100 <ezzieyguywuf> stack install caball?
2020-11-30 19:08:24 +0100 <ezzieyguywuf> though that's probably a bad idea..
2020-11-30 19:08:32 +0100 <maerwald> I'm suspecting cabal-plan needs the plan.json, which only cabal generates
2020-11-30 19:08:38 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-30 19:09:41 +0100 <Sonolin> hmm ok... I mean I'm pretty sure stack uses cabal somehow under the hood, but I'll look into it thanks for the help
2020-11-30 19:09:59 +0100 <geekosaur> it doesn't in general
2020-11-30 19:10:07 +0100 <geekosaur> it's an alternative to cabal
2020-11-30 19:10:48 +0100 <Sonolin> ah ok
2020-11-30 19:10:57 +0100 <Sonolin> looks like cabal-plan is on stackage I'll try installing that I guess
2020-11-30 19:14:44 +0100 <sm[m]> Sonolin: you can of course stack install cabal-install. But usually it's quicker to find a binary package
2020-11-30 19:16:02 +0100 <maerwald> don't use stack to install cabal, because you don't know whether you will get an up2date version
2020-11-30 19:16:30 +0100 <sm[m]> sigh maerwald you are here to test me :)
2020-11-30 19:16:36 +0100 <maerwald> :D
2020-11-30 19:16:44 +0100texasmynsted(~texasmyns@212.102.45.112)
2020-11-30 19:16:45 +0100 <maerwald> running property tests over you
2020-11-30 19:17:51 +0100 <sm[m]> as with cabal, stack has rules for picking which version to install by default so to be sure of getting the latest you should specify that version
2020-11-30 19:19:15 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 19:19:41 +0100alp_(~alp@2a01:e0a:58b:4920:1595:a7ed:600b:8cb2) (Ping timeout: 272 seconds)
2020-11-30 19:19:55 +0100adm_(~adm@117.208.21.247) (Remote host closed the connection)
2020-11-30 19:19:56 +0100 <sm[m]> neither tool has a "get me the latest" flag alas
2020-11-30 19:20:08 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-30 19:20:21 +0100adm_(~adm@117.208.21.247)
2020-11-30 19:20:38 +0100c0c0(~coco@212-51-146-87.fiber7.init7.net) (Quit: WeeChat 2.9)
2020-11-30 19:20:44 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 19:20:50 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 19:21:09 +0100vg(~vg@139.59.59.230)
2020-11-30 19:21:19 +0100 <monochrom> In the case of cabal-install, that depends on exe vs lib
2020-11-30 19:21:43 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-30 19:22:13 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 19:22:49 +0100 <monochrom> "cabal install <pkg>" (such that it installs the exes of pkg) gets you the latest by default, you have to saying something to override.
2020-11-30 19:23:29 +0100 <monochrom> "cabal install --lib <pkg>" (such that it installs the library of pkg) tends to prefer an installed version and report "up to date".
2020-11-30 19:23:32 +0100knupfer(~Thunderbi@200116b82c77370051b244619a509919.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-11-30 19:24:36 +0100adm_(~adm@117.208.21.247) (Ping timeout: 256 seconds)
2020-11-30 19:25:37 +0100adm_(~adm@117.208.21.247)
2020-11-30 19:25:48 +0100adm_(~adm@117.208.21.247) (Remote host closed the connection)
2020-11-30 19:26:45 +0100adm_(~adm@117.208.21.247)
2020-11-30 19:26:59 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-30 19:27:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 19:28:18 +0100ubert(~Thunderbi@p200300ecdf1e5347e6b318fffe838f33.dip0.t-ipconnect.de)
2020-11-30 19:28:33 +0100 <sm[m]> monochrom: only if you do cabal update first
2020-11-30 19:28:43 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 246 seconds)
2020-11-30 19:28:56 +0100jchia__(~jchia@58.32.37.146) (Quit: Leaving.)
2020-11-30 19:29:15 +0100 <sm[m]> otherwise you can't be sure. Maybe later cabal has changed, I'm speaking of commonly installed versions
2020-11-30 19:29:17 +0100jchia__(~jchia@45.63.70.29)
2020-11-30 19:30:19 +0100jchia__(~jchia@45.63.70.29) (Remote host closed the connection)
2020-11-30 19:30:32 +0100conal(~conal@64.71.133.70)
2020-11-30 19:30:57 +0100jchia__(~jchia@45.63.70.29)
2020-11-30 19:30:59 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-30 19:31:03 +0100urek(~urek@191.35.6.56) (Ping timeout: 256 seconds)
2020-11-30 19:31:25 +0100adm_(~adm@117.208.21.247) (Ping timeout: 264 seconds)
2020-11-30 19:32:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-30 19:33:09 +0100urek(~urek@177.205.229.26.dynamic.adsl.gvt.net.br)
2020-11-30 19:34:34 +0100urek(~urek@177.205.229.26.dynamic.adsl.gvt.net.br) (Remote host closed the connection)
2020-11-30 19:34:56 +0100urek(~urek@2804:7f1:e10a:9644:5510:fc77:d55c:caa7)
2020-11-30 19:35:56 +0100jchia__(~jchia@45.63.70.29) (Remote host closed the connection)
2020-11-30 19:36:00 +0100JJ15(~JJ@host81-133-209-64.in-addr.btopenworld.com)
2020-11-30 19:36:31 +0100jchia__(~jchia@45.63.70.29)
2020-11-30 19:36:52 +0100JJ15__(~JJ@2a00:23a8:4382:a900:9d38:c583:9671:e1dd)
2020-11-30 19:37:16 +0100seveg(~gabriel@2a02-ab04-0249-8d00-7d49-c4e2-4790-91c2.dynamic.v6.chello.sk)
2020-11-30 19:37:51 +0100JJ15_(~JJ@host81-133-209-64.in-addr.btopenworld.com) (Ping timeout: 256 seconds)
2020-11-30 19:38:31 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 246 seconds)
2020-11-30 19:39:26 +0100adm_(~adm@117.208.23.253)
2020-11-30 19:39:57 +0100urek(~urek@2804:7f1:e10a:9644:5510:fc77:d55c:caa7) (Ping timeout: 272 seconds)
2020-11-30 19:40:36 +0100JJ15(~JJ@host81-133-209-64.in-addr.btopenworld.com) (Ping timeout: 260 seconds)
2020-11-30 19:40:39 +0100urek(~urek@179.176.47.245.dynamic.adsl.gvt.net.br)
2020-11-30 19:41:00 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-30 19:42:04 +0100jchia__(~jchia@45.63.70.29) (Remote host closed the connection)
2020-11-30 19:42:23 +0100jchia__(~jchia@58.32.37.146)
2020-11-30 19:44:28 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-11-30 19:45:36 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be) (Quit: avdb)
2020-11-30 19:45:55 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be)
2020-11-30 19:46:14 +0100notzmv(~user@unaffiliated/zmv) (Read error: Connection reset by peer)
2020-11-30 19:46:17 +0100ubert(~Thunderbi@p200300ecdf1e5347e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-30 19:46:30 +0100 <avdb> Is there a way I can use elem on two lists instead of recursing through the first list element by element?
2020-11-30 19:46:41 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 19:46:52 +0100 <koz_> avdb: What do you mean? Do you want to do a list intersection or something?
2020-11-30 19:46:56 +0100notzmv(~user@unaffiliated/zmv)
2020-11-30 19:47:15 +0100 <monochrom> Yeah it depends on what problem you are solving.
2020-11-30 19:47:54 +0100 <monochrom> You should spell out your one single case rather than expecting a 2-hour lecture that covers all cases.
2020-11-30 19:48:01 +0100 <avdb> koz_: I want to know if [1,2,3,4,5] contains any element of [1,2,3] for example, instead of doing `elem 1 [1,2,3] ...` for every single element.
2020-11-30 19:50:27 +0100 <monochrom> That really requires a nested loop. Although you can use library functions so you don't have to handcode your own recursion tediously.
2020-11-30 19:50:49 +0100 <avdb> I don't like the idea of library functions for small programs ...
2020-11-30 19:51:05 +0100 <monochrom> Unless you further know that both lists are sorted under a known total order.
2020-11-30 19:51:14 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 19:51:24 +0100 <koz_> avdb: You can use Sets. Take the set difference between (the Set based on) [1,2,3] and (the Set based on) [1,2,3,4,5,6]. Set diff is 'all elements in A that are not also in B'. If you get back the same as the first set, then there are none; otherwise, the one(s) you're missing are in there.
2020-11-30 19:51:43 +0100vg(~vg@139.59.59.230)
2020-11-30 19:51:46 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-30 19:51:48 +0100 <koz_> avdb: Prelude is a library. containers comes with GHC itself (it's a boot library).
2020-11-30 19:51:51 +0100 <koz_> I don't see the issue.
2020-11-30 19:52:12 +0100vg(~vg@139.59.59.230)
2020-11-30 19:52:32 +0100 <monochrom> You like handcoding your own "mysum [] = 0; mysum (x:xs) = x + mysum xs" boilerplate instead of simply "foldr (+) 0" and be done with it?
2020-11-30 19:52:40 +0100 <avdb> Alright, I wasted enough time on this problem already so let's stop being stubborn.
2020-11-30 19:52:44 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 260 seconds)
2020-11-30 19:52:51 +0100 <koz_> monochrom: You mean foldl' (+) 0 right?
2020-11-30 19:52:54 +0100 <ezzieyguywuf> glguy: in the example you provided, how come `optSection "MatchStrings" "doc"` doesn't need `listSpec` somewhere?
2020-11-30 19:53:13 +0100 <monochrom> well let's say I really like the foldr version for some reason
2020-11-30 19:53:23 +0100 <glguy> ezzieyguywuf: there's an instance HasSpec a => HasSpec [a]
2020-11-30 19:53:28 +0100 <glguy> and instance HasSpec TExt
2020-11-30 19:53:28 +0100 <koz_> monochrom: Sure. This is a demo of why libraries are usually the better call for common problems :P
2020-11-30 19:53:54 +0100 <monochrom> any (`elem` [1,2,3]) [1,2,3,4,5] -- done
2020-11-30 19:54:18 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 19:55:13 +0100 <ezzieyguywuf> glguy: ah, so the `ValueSpec [Text]` is deduced, i get it. if I wanted to write that one line in applicative-do with a type annotanio, it'd be `matches <- optSection "MatchString" "doc" :: Maybe [Text]`, right?
2020-11-30 19:55:27 +0100 <monochrom> another way: not (null (intersect [1,2,3,4,5] [1,2,3]))
2020-11-30 19:55:28 +0100 <ezzieyguywuf> or `Maybe [ValueSpec Text]`?
2020-11-30 19:55:41 +0100 <glguy> ezzieyguywuf: ValueSpec (Maybe [Text])
2020-11-30 19:56:17 +0100 <ezzieyguywuf> hmmm, very nice. glguy thanks again.
2020-11-30 19:56:28 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Ping timeout: 260 seconds)
2020-11-30 19:58:03 +0100conal(~conal@64.71.133.70)
2020-11-30 20:01:16 +0100carlomagno(~cararell@148.87.23.13)
2020-11-30 20:02:01 +0100 <avdb> Jesus Christ. Even with external libraries this exercise is extremely difficult. I need to tell the difference between uppercase messages and lowercase messages. Sounds easy right?
2020-11-30 20:02:27 +0100son0p(~son0p@181.136.122.143)
2020-11-30 20:02:31 +0100adm__(~adm@117.223.60.46)
2020-11-30 20:02:41 +0100 <avdb> Problem is that "1,2,3" should return False while "1,2,3 GO!" should return True (since it doesn't contain lowercase characters).
2020-11-30 20:02:53 +0100 <avdb> Can someone please help me? I already spent more than 5 hours on this problem.
2020-11-30 20:03:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 20:03:16 +0100contiver(~contiver@84-115-64-150.wifi.dynamic.surfer.at)
2020-11-30 20:03:26 +0100 <monochrom> > any isUpper "1,2,3 GO!"
2020-11-30 20:03:28 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-30 20:03:29 +0100 <lambdabot> True
2020-11-30 20:03:37 +0100 <monochrom> isUpper is in Data.Char
2020-11-30 20:03:44 +0100 <avdb> I know.
2020-11-30 20:03:55 +0100 <monochrom> But even writing your own recursion takes only 1 minute. What 5 hours.
2020-11-30 20:03:59 +0100 <avdb> Man I should've asked for help earlier but it feels like cheating.
2020-11-30 20:04:06 +0100 <ezzieyguywuf> (it is cheating)
2020-11-30 20:04:07 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2020-11-30 20:04:08 +0100 <avdb> I didn't know about `any`
2020-11-30 20:04:20 +0100 <ezzieyguywuf> well, asking for help isn't cheating
2020-11-30 20:04:25 +0100 <ezzieyguywuf> asking for answers is cheating
2020-11-30 20:04:43 +0100 <avdb> Not if you tried really hard I guess.
2020-11-30 20:04:46 +0100 <avdb> monochrom: Thanks.
2020-11-30 20:05:20 +0100adm_(~adm@117.208.23.253) (Ping timeout: 260 seconds)
2020-11-30 20:05:22 +0100 <monochrom> Why I'm more successful than you is because I invested those 5 hours on reading Prelude and Data.List and Data.Char from cover to cover, instead of invested in false confidence in my own competence.
2020-11-30 20:06:04 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Read error: Connection reset by peer)
2020-11-30 20:06:05 +0100 <glguy> and then years of using it?
2020-11-30 20:06:05 +0100 <avdb> Where can I learn more about STL functions? There's Hoogle but I find it very difficult to read.
2020-11-30 20:06:32 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2020-11-30 20:06:43 +0100 <monochrom> Yes glguy, years of taking only 1 second to recall "that's just another foldr"
2020-11-30 20:06:52 +0100 <ezzieyguywuf> oh nice, `concat (Maybe [a])` produces an empty list or a list, that's so handy!
2020-11-30 20:07:02 +0100 <glguy> STL is a C++ library. I like using http://cppreference.com/ to read about it
2020-11-30 20:07:04 +0100 <monochrom> GHC comes with complete documentation.
2020-11-30 20:07:26 +0100 <monochrom> It is somewhere on your harddisk already, too.
2020-11-30 20:07:33 +0100 <avdb> glguy: I meant standard library functions in Haskell like (++) and index for example.
2020-11-30 20:07:50 +0100 <monochrom> People spent lifetimes searching hoogle and not even 1 minute searching their own hard disk
2020-11-30 20:08:05 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 20:08:10 +0100 <monochrom> But I guess that's the definition of "I am too proud to be an introvert"
2020-11-30 20:08:19 +0100 <avdb> monochrom: I know, I really do know. Where did you find it?
2020-11-30 20:08:21 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Remote host closed the connection)
2020-11-30 20:08:38 +0100urek__(~urek@191.34.57.159)
2020-11-30 20:08:59 +0100 <xerox_> https://www.stackage.org/haddock/lts-16.23/base-4.13.0.0/Prelude.html
2020-11-30 20:09:11 +0100 <avdb> You can stop making me out for stupid right there by the way, I already acknowledged my mistake.
2020-11-30 20:09:12 +0100urek(~urek@179.176.47.245.dynamic.adsl.gvt.net.br) (Ping timeout: 272 seconds)
2020-11-30 20:10:43 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 20:11:06 +0100inja(~inja@pd9f82e17.dip0.t-ipconnect.de)
2020-11-30 20:11:10 +0100Iceland_jack(~user@31.124.48.169) (Read error: Connection reset by peer)
2020-11-30 20:11:27 +0100Iceland_jack(~user@31.124.48.169)
2020-11-30 20:13:21 +0100Ariakenom_(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
2020-11-30 20:13:42 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
2020-11-30 20:14:01 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 264 seconds)
2020-11-30 20:14:12 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 20:15:06 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 20:15:24 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-11-30 20:15:24 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2020-11-30 20:15:24 +0100neiluj(~jco@unaffiliated/neiluj)
2020-11-30 20:15:38 +0100xff0x(~fox@2001:1a81:5287:f00:f14b:6dc5:5c2:61b2) (Quit: xff0x)
2020-11-30 20:15:50 +0100conal(~conal@64.71.133.70)
2020-11-30 20:15:50 +0100 <maerwald> monochrom: accessing my hard disk takes longer than a HTTP request :p
2020-11-30 20:16:03 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
2020-11-30 20:16:25 +0100 <avdb> maerwald: You can find GHC's documentation in .ghcup/share/doc/ :)
2020-11-30 20:16:38 +0100 <avdb> (If you didn't know already, trying to be helpful)
2020-11-30 20:16:48 +0100 <maerwald> should probably try that :D
2020-11-30 20:17:21 +0100 <maerwald> the vim hoogle plugin is also quite handy
2020-11-30 20:17:32 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
2020-11-30 20:17:39 +0100 <maerwald> so I use vim hoogle and codex (via hasktags)
2020-11-30 20:17:54 +0100 <maerwald> both are limited, but they don't crash my PC like LSP
2020-11-30 20:18:42 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-30 20:18:50 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-30 20:19:52 +0100christian_(~christian@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b)
2020-11-30 20:20:28 +0100christian_(~christian@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) (Client Quit)
2020-11-30 20:20:44 +0100 <frdg> if I move my ~/.stack directory will my existing stack projects get confused?
2020-11-30 20:20:47 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b)
2020-11-30 20:21:01 +0100 <Sonolin> they will probably re-download all the dependencies and stuff
2020-11-30 20:21:14 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it) (Quit: Leaving)
2020-11-30 20:21:20 +0100 <Sonolin> but you can always move it back
2020-11-30 20:21:23 +0100 <frdg> ok that is fine
2020-11-30 20:21:50 +0100carlomagno(~cararell@148.87.23.13) (Ping timeout: 256 seconds)
2020-11-30 20:23:10 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-30 20:23:13 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it)
2020-11-30 20:24:49 +0100urek__(~urek@191.34.57.159) (Ping timeout: 264 seconds)
2020-11-30 20:24:54 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-30 20:25:00 +0100raichoo(~raichoo@dslb-178-009-076-213.178.009.pools.vodafone-ip.de) (Quit: Lost terminal)
2020-11-30 20:25:19 +0100urek(~urek@191.250.144.166)
2020-11-30 20:25:56 +0100 <avdb> monochrom: I finally realize that I could've used filter all along to filter symbols and numbers. Facepalm.
2020-11-30 20:26:11 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-30 20:26:37 +0100carlomagno(~cararell@148.87.23.13)
2020-11-30 20:26:48 +0100 <frdg> Sonolin: you were correct that it is re-downloading all the stuff. My question now is what happened to the old downloaded stuff?
2020-11-30 20:26:49 +0100bliminse(~bliminse@host86-134-63-68.range86-134.btcentralplus.com) (Quit: leaving)
2020-11-30 20:27:04 +0100 <maerwald> frdg: you moved it
2020-11-30 20:27:08 +0100 <Sonolin> yea it goes in .stack
2020-11-30 20:27:12 +0100 <maerwald> :D
2020-11-30 20:28:02 +0100 <frdg> I dont see why if I only moved it, it has to redownload though.
2020-11-30 20:28:20 +0100hexo-(~hexo@83.167.228.130) (Quit: ZNC - http://znc.in)
2020-11-30 20:28:20 +0100_Adluc_(~Adluc@2a01:430:17:1::ffff:328) (Quit: ZNC - http://znc.in)
2020-11-30 20:28:43 +0100 <geekosaur> you mean, you moved it and then moved it back and it's still redownloading?
2020-11-30 20:28:57 +0100 <_deepfire> So, I'm thinking of implementing reifyType :: Typeable a => Q Type myself, because apparently TH doesn't have anything that can be used to make it.
2020-11-30 20:29:07 +0100 <frdg> and by redownload I mean I am trying to run the program and it is compiling everything again
2020-11-30 20:29:57 +0100larou(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2020-11-30 20:30:18 +0100hololeap(~hololeap@unaffiliated/hololeap)
2020-11-30 20:30:35 +0100xff0x(~fox@2001:1a81:5287:f00:3ddc:a797:9dcd:8476)
2020-11-30 20:31:35 +0100Adluc(Adluc@base48.cz)
2020-11-30 20:34:09 +0100 <frdg> oh wait a second I see what is going on now. It compiles into ~/.stack...this directory is not what I thought it was
2020-11-30 20:34:14 +0100 <Sonolin> frdg ~/.stack contains the GHC snapshot & dependencies for stack projects... if you move that folder, then it will redownload everything to a new "~/.stack" folder
2020-11-30 20:34:45 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-11-30 20:34:52 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it) (Ping timeout: 246 seconds)
2020-11-30 20:35:52 +0100 <ezzieyguywuf> glguy: hah, it works! I took your example and prettified it a bit with applicative-do etc, to make it more legible. https://dpaste.com/6H9HE8UVM
2020-11-30 20:36:13 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-30 20:36:20 +0100 <ezzieyguywuf> glguy: I can see now the appeal of the config-value and config-schema approach to configuration. very nice, very neat.
2020-11-30 20:36:36 +0100Adluc(Adluc@base48.cz) (Quit: ZNC - http://znc.in)
2020-11-30 20:37:07 +0100Adluc(Adluc@base48.cz)
2020-11-30 20:37:09 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 20:37:16 +0100 <avdb> I finally fixed my problem but my codebase is a mess since I mixed up pattern matching with guards, how do I create a guard case for an empty list?
2020-11-30 20:37:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-30 20:37:30 +0100 <avdb> `null (x:xs)` doesn't look good
2020-11-30 20:37:35 +0100 <avdb> I doubt it even works lol
2020-11-30 20:37:44 +0100 <geekosaur> that can't be null
2020-11-30 20:37:46 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 20:37:52 +0100 <frdg> Sonolin: this is clear to me now thanks
2020-11-30 20:37:59 +0100Adluc(Adluc@base48.cz) (Client Quit)
2020-11-30 20:38:03 +0100 <avdb> geekosaur: wdym?
2020-11-30 20:38:03 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-30 20:38:04 +0100 <monochrom> Give null the actual list you care about?
2020-11-30 20:38:29 +0100 <geekosaur> because you built a new list (x:xs) which by construction is not null
2020-11-30 20:38:30 +0100Adluc(Adluc@base48.cz)
2020-11-30 20:38:32 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 20:38:38 +0100 <ezzieyguywuf> avdb: "my codebase is a mess since..." maybe clean up the code first?
2020-11-30 20:38:41 +0100 <avdb> Oh. Thanks.
2020-11-30 20:38:49 +0100 <avdb> ezzieyguywuf: That's what I'm asking help for ...
2020-11-30 20:39:06 +0100Adluc(Adluc@base48.cz) (Remote host closed the connection)
2020-11-30 20:39:16 +0100 <avdb> I don't know how to fix most stuff since I only used what I know but I promise to read the documentation on my hard-drive after this!
2020-11-30 20:39:18 +0100 <geekosaur> foo xs | null xs = ... | ... -- although I'd use patterns unless guards are needed (note also that you can combine them)
2020-11-30 20:39:34 +0100 <glguy> ezzieyguywuf: yeah, I think that cleaned up nicely
2020-11-30 20:39:50 +0100 <avdb> I will just go with lst instead of (x:xs) and replace xs with tail
2020-11-30 20:39:58 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 256 seconds)
2020-11-30 20:40:05 +0100 <geekosaur> foo [] = ...; foo (x:xs) | someConditionOn x = ... | otherwise = ...
2020-11-30 20:40:17 +0100Adluc(Adluc@base48.cz)
2020-11-30 20:40:26 +0100JJ15__(~JJ@2a00:23a8:4382:a900:9d38:c583:9671:e1dd) (Read error: Connection reset by peer)
2020-11-30 20:40:27 +0100_Adluc_(~Adluc@83.167.228.130)
2020-11-30 20:40:47 +0100 <ezzieyguywuf> avdb: if you post your code perhaps we can provide some better tips
2020-11-30 20:41:02 +0100 <avdb> geekosaur: What about where xs = tail lst? :)
2020-11-30 20:41:03 +0100 <hololeap> avdb, null (x:xs) = False ; null [] = True
2020-11-30 20:41:05 +0100JJ15__(~JJ@host81-133-209-64.in-addr.btopenworld.com)
2020-11-30 20:41:08 +0100 <avdb> ezzieyguywuf: Second
2020-11-30 20:41:12 +0100 <hololeap> that's all there is to know about `null` (on lists)
2020-11-30 20:41:24 +0100 <ezzieyguywuf> hrm, I'm a bit skeptical of my use of PartialMatch, but it does get the job done...
2020-11-30 20:41:32 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-30 20:41:38 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-30 20:41:42 +0100 <glguy> ezzieyguywuf: if you used (matchSpec = sectionsSpec "match") instead of an "" there, the output of (generateDocs descrMatchSpec) makes more sense
2020-11-30 20:42:14 +0100 <ezzieyguywuf> glguy: I was just about to start messing with generateDocs, so I'll try it both ways to see the differenc
2020-11-30 20:42:20 +0100 <avdb> http://codepad.org/yUeYsJQ4
2020-11-30 20:42:22 +0100 <avdb> Here you go!
2020-11-30 20:43:01 +0100 <ezzieyguywuf> glguy: I must say, very nicely documented and organized code base, quite the pleasure to work with it.
2020-11-30 20:43:40 +0100 <glguy> Thanks, I'll have that message for next time I'm feeling down :)
2020-11-30 20:44:21 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it)
2020-11-30 20:44:25 +0100 <ezzieyguywuf> glguy: lol, no problem
2020-11-30 20:45:01 +0100 <ezzieyguywuf> avdb: I think Data.List.Uncons may help clean that up a bit
2020-11-30 20:45:02 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 20:45:09 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-30 20:45:34 +0100 <ezzieyguywuf> although I wonder whether you truly need to split the list into head and tail...
2020-11-30 20:46:43 +0100 <avdb> ezzieyguywuf: I don't, the solutions about work as well :P
2020-11-30 20:47:01 +0100 <Sonolin> avdb using pattern matching would clean that up
2020-11-30 20:47:12 +0100 <Sonolin> upperString [] = False
2020-11-30 20:47:17 +0100 <Sonolin> upperString (x:xs) = ...
2020-11-30 20:47:23 +0100 <hololeap> avdb: `upperString` could be simplified in a number of different ways
2020-11-30 20:47:40 +0100 <ezzieyguywuf> Sonolin: also ned upperString (x) =...
2020-11-30 20:47:40 +0100 <avdb> Sonolin: Alright, Alright, I first need to make sure it passes `stack test` though
2020-11-30 20:47:55 +0100 <avdb> ned?
2020-11-30 20:48:03 +0100 <ezzieyguywuf> uhrm, upperstring [x] =... well, whatever it is for a singlton
2020-11-30 20:48:04 +0100 <ezzieyguywuf> *need
2020-11-30 20:48:22 +0100 <ezzieyguywuf> also, that was intended for Sonolin sorry.
2020-11-30 20:48:25 +0100 <Sonolin> ezzieyguywuf ? I don't think so, upperString (x:xs) should take care of that since xs can still be an empty list
2020-11-30 20:48:25 +0100conal(~conal@64.71.133.70)
2020-11-30 20:48:33 +0100 <hololeap> % upperString :: String -> Bool ; upperString [] = False ; upperString xs = all isUpper xs
2020-11-30 20:48:33 +0100 <yahb> hololeap:
2020-11-30 20:48:36 +0100hexo|(~hexo@83.167.228.130)
2020-11-30 20:48:43 +0100francesco_(~francesco@host-95-251-103-60.retail.telecomitalia.it)
2020-11-30 20:48:46 +0100 <ezzieyguywuf> Sonolin: ah hah, your type-fu obviously surpasses mine
2020-11-30 20:48:51 +0100 <hololeap> % upperString "ABCD"
2020-11-30 20:48:51 +0100 <yahb> hololeap: True
2020-11-30 20:48:57 +0100 <hololeap> % upperString "aBc"
2020-11-30 20:48:57 +0100 <yahb> hololeap: False
2020-11-30 20:49:00 +0100 <hololeap> % upperString ""
2020-11-30 20:49:00 +0100 <yahb> hololeap: False
2020-11-30 20:49:12 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it) (Ping timeout: 260 seconds)
2020-11-30 20:49:29 +0100 <ezzieyguywuf> %upperString "1,2,3 GO!"
2020-11-30 20:49:35 +0100 <ezzieyguywuf> drat
2020-11-30 20:49:39 +0100 <ezzieyguywuf> % upperString "1,2,3 GO!"
2020-11-30 20:49:39 +0100 <yahb> ezzieyguywuf: False
2020-11-30 20:50:34 +0100 <avdb> hololeap: So there's any and all ... thanks ... didn't know that ...
2020-11-30 20:51:31 +0100gproto23(~gproto23@unaffiliated/gproto23) (Ping timeout: 256 seconds)
2020-11-30 20:51:33 +0100 <hololeap> avdb: yes, and `all f []` always returns True, which is why you need the special case for the empty list
2020-11-30 20:51:43 +0100 <hololeap> if you want the empty list to return False, that is
2020-11-30 20:52:06 +0100_Adluc_(~Adluc@83.167.228.130) (Quit: ZNC - http://znc.in)
2020-11-30 20:52:06 +0100hexo|(~hexo@83.167.228.130) (Client Quit)
2020-11-30 20:52:07 +0100 <monochrom> I wonder if you really benefit from upperString [] = False
2020-11-30 20:52:48 +0100hexo-(hexo@base48.cz)
2020-11-30 20:53:13 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 20:53:56 +0100bergey`(~user@107.181.19.30)
2020-11-30 20:55:10 +0100alp_(~alp@2a01:e0a:58b:4920:c02c:4a68:69f0:7479)
2020-11-30 20:56:19 +0100adm__(~adm@117.223.60.46) (Remote host closed the connection)
2020-11-30 20:57:11 +0100bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2020-11-30 20:57:54 +0100macrover(~macrover@ip68-108-126-211.lv.lv.cox.net) (Remote host closed the connection)
2020-11-30 20:57:58 +0100francesco_(~francesco@host-95-251-103-60.retail.telecomitalia.it) (Ping timeout: 272 seconds)
2020-11-30 21:00:36 +0100dan64-(~dan64@dannyadam.com)
2020-11-30 21:02:36 +0100inja(~inja@pd9f82e17.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-11-30 21:02:39 +0100ambidextrose(~fut-learn@mobile-166-170-49-222.mycingular.net)
2020-11-30 21:02:50 +0100ambidextrose(~fut-learn@mobile-166-170-49-222.mycingular.net) ()
2020-11-30 21:03:12 +0100ambidextrose(~fut-learn@mobile-166-170-49-222.mycingular.net)
2020-11-30 21:03:16 +0100contiver(~contiver@84-115-64-150.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)
2020-11-30 21:03:34 +0100dan64(~dan64@dannyadam.com) (Ping timeout: 265 seconds)
2020-11-30 21:09:25 +0100miguel_clean(~Miguel@89-72-187-203.dynamic.chello.pl)
2020-11-30 21:10:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 21:12:13 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 264 seconds)
2020-11-30 21:13:03 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 272 seconds)
2020-11-30 21:14:52 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-30 21:15:27 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-30 21:15:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-30 21:16:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-30 21:16:13 +0100jollygood2(~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2020-11-30 21:17:01 +0100ambidextrose(~fut-learn@mobile-166-170-49-222.mycingular.net) ()
2020-11-30 21:18:19 +0100 <avdb> > all isUpper ""
2020-11-30 21:18:21 +0100 <lambdabot> True
2020-11-30 21:18:50 +0100 <ezzieyguywuf> > all [isUpper "", not null ""]
2020-11-30 21:18:53 +0100 <lambdabot> error:
2020-11-30 21:18:53 +0100 <lambdabot> • Couldn't match expected type ‘a -> Bool’
2020-11-30 21:18:53 +0100 <lambdabot> with actual type ‘[Bool]’
2020-11-30 21:18:54 +0100 <avdb> Thanks!
2020-11-30 21:18:57 +0100 <avdb> Ouch
2020-11-30 21:19:01 +0100 <ezzieyguywuf> dang
2020-11-30 21:19:19 +0100 <avdb> all isUpper xs && not null xs?
2020-11-30 21:19:45 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds)
2020-11-30 21:19:47 +0100 <ezzieyguywuf> yea that
2020-11-30 21:20:10 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 21:21:14 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-30 21:21:42 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 21:21:58 +0100 <avdb> > upperString xs = (all isUpper $ filter isLetter " ") && (not $ null " ")
2020-11-30 21:22:01 +0100 <lambdabot> <hint>:1:16: error: <hint>:1:16: error: parse error on input ‘=’
2020-11-30 21:22:09 +0100 <avdb> > (all isUpper $ filter isLetter " ") && (not $ null " ")
2020-11-30 21:22:11 +0100 <lambdabot> True
2020-11-30 21:22:27 +0100 <avdb> This is supposed to return false :$
2020-11-30 21:22:43 +0100chaosmasttter(~chaosmast@p200300c4a708ba01009b72ed500751f5.dip0.t-ipconnect.de)
2020-11-30 21:23:39 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-30 21:24:07 +0100conal(~conal@64.71.133.70)
2020-11-30 21:24:08 +0100_Adluc_(~Adluc@2a01:430:17:1::ffff:328)
2020-11-30 21:24:31 +0100 <Sonolin> don't need the filter
2020-11-30 21:24:40 +0100 <avdb> I do for whitespace
2020-11-30 21:24:51 +0100 <Sonolin> > all isUpper " "
2020-11-30 21:24:54 +0100 <lambdabot> False
2020-11-30 21:25:05 +0100 <avdb> Ouch!
2020-11-30 21:26:05 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca) (Read error: Connection reset by peer)
2020-11-30 21:26:12 +0100 <avdb> Nope. I do. Otherwise "WATCH OUT!" won't return True.
2020-11-30 21:26:31 +0100 <Sonolin> well you can do
2020-11-30 21:26:36 +0100 <Sonolin> > any isUpper "WATCH OUT!"
2020-11-30 21:26:38 +0100 <lambdabot> True
2020-11-30 21:26:43 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca)
2020-11-30 21:26:58 +0100 <avdb> > any isUpper "WaTCH OUT!"
2020-11-30 21:27:01 +0100 <lambdabot> True
2020-11-30 21:27:06 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 21:27:12 +0100 <Sonolin> but if you truly want the filter you'll have to refactor that so you're checking not null on the filtered string as well
2020-11-30 21:27:12 +0100 <avdb> Is supposed to return false since one letter is lowercase
2020-11-30 21:28:02 +0100 <Sonolin> something like this
2020-11-30 21:28:04 +0100 <Sonolin> > let xs = filter isLetter "WATCH OUT!" in all isUpper xs && not (null xs)
2020-11-30 21:28:07 +0100 <lambdabot> True
2020-11-30 21:28:14 +0100 <Sonolin> > let xs = filter isLetter " " in all isUpper xs && not (null xs)
2020-11-30 21:28:16 +0100adm(~adm@117.223.60.46)
2020-11-30 21:28:17 +0100 <lambdabot> False
2020-11-30 21:28:54 +0100 <avdb> Now we broke response for numbers only
2020-11-30 21:29:04 +0100 <avdb> all isUpper "12234"
2020-11-30 21:29:06 +0100 <avdb> > all isUpper "12234"
2020-11-30 21:29:09 +0100 <lambdabot> False
2020-11-30 21:29:39 +0100 <Sonolin> you'll have to change the filter than
2020-11-30 21:29:55 +0100 <Sonolin> gotta go but you should be able to figure it out, you're close
2020-11-30 21:30:10 +0100 <avdb> I really am ... what a headache
2020-11-30 21:30:16 +0100urek(~urek@191.250.144.166) (Ping timeout: 272 seconds)
2020-11-30 21:30:16 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-30 21:31:16 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-30 21:31:47 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 21:32:36 +0100adm(~adm@117.223.60.46) (Ping timeout: 240 seconds)
2020-11-30 21:33:11 +0100hexo^(~hexo@2a01:430:17:1::ffff:328)
2020-11-30 21:33:26 +0100ulidtko|k(~ulidtko@194.54.80.38)
2020-11-30 21:33:34 +0100ragemnaughihopeyoudie
2020-11-30 21:34:35 +0100conal(~conal@64.71.133.70)
2020-11-30 21:34:36 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 240 seconds)
2020-11-30 21:34:36 +0100 <sondr3> That's a harsh name change :p
2020-11-30 21:35:19 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-11-30 21:36:17 +0100ulidtko(~ulidtko@193.111.48.79) (Ping timeout: 256 seconds)
2020-11-30 21:36:44 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-30 21:37:28 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 21:37:53 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be) (Ping timeout: 265 seconds)
2020-11-30 21:38:05 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-30 21:39:00 +0100fendor(~fendor@178.165.130.113.wireless.dyn.drei.com) (Remote host closed the connection)
2020-11-30 21:39:46 +0100adm(~adm@117.208.18.165)
2020-11-30 21:40:36 +0100contiver(~contiver@84-115-64-11.wifi.dynamic.surfer.at)
2020-11-30 21:43:01 +0100cads2(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-30 21:43:47 +0100 <sondr3> I'm about to add an environment to my toy language, previously my state has been either `Map String Val` or `[(String, Val)]`. Should I look into using something like the Reader or State monad?
2020-11-30 21:44:34 +0100adm(~adm@117.208.18.165) (Ping timeout: 256 seconds)
2020-11-30 21:46:37 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 246 seconds)
2020-11-30 21:46:51 +0100f-a(~f-a@151.82.199.37)
2020-11-30 21:47:19 +0100 <Rembane> sondr3: State monad is good if you have many functions, otherwise a f :: SomeStateType -> (SomeStateType, a) works for quite a while
2020-11-30 21:48:25 +0100Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
2020-11-30 21:48:34 +0100cads2(~cads@ip-64-72-99-232.lasvegas.net) (Read error: Connection reset by peer)
2020-11-30 21:49:17 +0100 <dminuoso> State monad also helps against accidents. When you write `\x -> let (x', v) = f x in ...` you can easily mix up x and x' over time
2020-11-30 21:49:27 +0100 <dminuoso> Or when you tend to have multiple values of type SomeStateType around
2020-11-30 21:49:37 +0100 <dminuoso> And it can be more expressive
2020-11-30 21:49:56 +0100Iceland_jack(~user@31.124.48.169) (Remote host closed the connection)
2020-11-30 21:50:04 +0100 <dminuoso> Since it opens up the realm of applicative/monad combinators like traverse
2020-11-30 21:50:27 +0100 <solonarv> if your toy language has only immutable bindings then you don't actually need the full power of State, you can continue using Reader
2020-11-30 21:50:39 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) (Quit: Leaving.)
2020-11-30 21:50:55 +0100Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2020-11-30 21:50:59 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-11-30 21:50:59 +0100 <solonarv> note that 'Reader E a' is the same thing as 'E -> a', and 'State S a' is the same thing as 'S -> (a, S)'
2020-11-30 21:53:27 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
2020-11-30 21:54:06 +0100 <monochrom> Environment does not behave like State.
2020-11-30 21:54:46 +0100 <monochrom> You can still use state to emulate environment. But that requires understanding both.
2020-11-30 21:55:05 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-30 21:55:56 +0100Lowl3v3l(~Lowl3v3l@dslb-088-072-167-013.088.072.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2020-11-30 21:56:53 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-30 21:57:06 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
2020-11-30 21:57:43 +0100 <dminuoso> And you can use environment as state if you have IO.
2020-11-30 21:58:25 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-30 21:58:47 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-30 22:00:30 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-30 22:00:58 +0100bliminse(~bliminse@host86-134-63-68.range86-134.btcentralplus.com)
2020-11-30 22:02:53 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it)
2020-11-30 22:03:17 +0100SummerNinja(~SummerNin@185.103.96.147) (Remote host closed the connection)
2020-11-30 22:04:46 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-30 22:05:23 +0100urek(~urek@2804:7f1:e10a:9644:28f0:3bb:caef:43b3)
2020-11-30 22:05:25 +0100chalkmonster(~chalkmons@unaffiliated/chalkmonster) (Quit: WeeChat 2.9)
2020-11-30 22:07:21 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-30 22:07:38 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) (Ping timeout: 272 seconds)
2020-11-30 22:07:50 +0100vg(~vg@139.59.59.230)
2020-11-30 22:08:16 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it) (Ping timeout: 240 seconds)
2020-11-30 22:10:31 +0100alp_(~alp@2a01:e0a:58b:4920:c02c:4a68:69f0:7479) (Remote host closed the connection)
2020-11-30 22:10:35 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-30 22:10:50 +0100alp_(~alp@2a01:e0a:58b:4920:e5b9:c518:2c12:3fb9)
2020-11-30 22:10:54 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-11-30 22:11:37 +0100Mathmoose(~mathias@31-208-78-204.cust.bredband2.com) (Ping timeout: 264 seconds)
2020-11-30 22:11:37 +0100Lowl3v3l(~Lowl3v3l@dslb-088-072-167-020.088.072.pools.vodafone-ip.de)
2020-11-30 22:12:02 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no) (Quit: Leaving)
2020-11-30 22:14:21 +0100ulidtko|kk(~ulidtko@193.111.48.79)
2020-11-30 22:16:39 +0100adm(~adm@117.208.18.165)
2020-11-30 22:16:43 +0100ulidtko|k(~ulidtko@194.54.80.38) (Ping timeout: 246 seconds)
2020-11-30 22:17:45 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 22:18:37 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-30 22:19:05 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 22:19:10 +0100timCF_(~i.tkachuk@m91-129-105-245.cust.tele2.ee)
2020-11-30 22:20:16 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-30 22:20:50 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 22:21:52 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-30 22:22:02 +0100mang0[m](dea223matr@gateway/shell/matrix.org/x-oxzuzzbshfcdgowx)
2020-11-30 22:22:11 +0100adm(~adm@117.208.18.165) (Ping timeout: 256 seconds)
2020-11-30 22:22:24 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 22:22:31 +0100czwartyeon(4d2d3763@77-45-55-99.sta.asta-net.com.pl)
2020-11-30 22:22:32 +0100 <mang0[m]> hi
2020-11-30 22:22:43 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-30 22:23:01 +0100knupfer(~Thunderbi@200116b82c773700a484cefffe15601d.dip.versatel-1u1.de)
2020-11-30 22:23:34 +0100knupfer(~Thunderbi@200116b82c773700a484cefffe15601d.dip.versatel-1u1.de) (Remote host closed the connection)
2020-11-30 22:23:47 +0100knupfer(~Thunderbi@200116b82c773700bd0d2b808d25cbd1.dip.versatel-1u1.de)
2020-11-30 22:26:20 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) ()
2020-11-30 22:26:41 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-30 22:26:44 +0100nehsou^(nehsou@ip98-184-89-2.mc.at.cox.net) ()
2020-11-30 22:27:20 +0100ericsagnes(~ericsagne@2405:6580:0:5100:8dad:fdd3:20dd:4129) (Ping timeout: 268 seconds)
2020-11-30 22:27:56 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2020-11-30 22:30:08 +0100czwartyeon(4d2d3763@77-45-55-99.sta.asta-net.com.pl) (Remote host closed the connection)
2020-11-30 22:32:20 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds)
2020-11-30 22:33:54 +0100vicfred_(~vicfred@unaffiliated/vicfred)
2020-11-30 22:33:56 +0100tlaxkit(~kvirc@185.228.155.198) (Ping timeout: 256 seconds)
2020-11-30 22:34:13 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-30 22:34:20 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 22:34:23 +0100fendor(~fendor@178.165.130.113.wireless.dyn.drei.com)
2020-11-30 22:36:19 +0100Ariakenom_(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Quit: Leaving)
2020-11-30 22:36:51 +0100vicfred(~vicfred@unaffiliated/vicfred) (Ping timeout: 265 seconds)
2020-11-30 22:37:49 +0100 <ezzieyguywuf> is there something like `mGetFile :: FilePath -> Maybe Text` is Base that returns Nothing if the file doesn't exist?
2020-11-30 22:37:50 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-30 22:38:04 +0100 <ezzieyguywuf> I see `Data.Text.IO.readFile` but this just throws an exception
2020-11-30 22:38:30 +0100 <ezzieyguywuf> or rather, should I check for existence of the file some other way?
2020-11-30 22:38:59 +0100 <f-a> ezzieyguywuf: it seems one of those oops which are better handled by- yes, use
2020-11-30 22:39:01 +0100 <f-a> @hoogle FilePath -> IO Bool
2020-11-30 22:39:03 +0100 <lambdabot> System.Directory doesPathExist :: FilePath -> IO Bool
2020-11-30 22:39:03 +0100 <lambdabot> System.Directory doesFileExist :: FilePath -> IO Bool
2020-11-30 22:39:03 +0100 <lambdabot> System.Directory doesDirectoryExist :: FilePath -> IO Bool
2020-11-30 22:39:21 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 22:39:24 +0100 <f-a> if you want the -> Maybe String, capture that exception
2020-11-30 22:39:31 +0100 <maerwald> ezzieyguywuf: no, you catch the excpetion isDoesNotExistError
2020-11-30 22:40:05 +0100 <maerwald> cehcking for existence before accessing the file is an anti-pattern :)
2020-11-30 22:40:06 +0100 <ezzieyguywuf> so I've been operating under the general rule of thumb that I should prefer to use Maybe rather than exceptions when programming is haskell
2020-11-30 22:40:28 +0100 <maerwald> yes, you can turn the exception into a Nothing
2020-11-30 22:40:28 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 22:40:53 +0100vicfred_(~vicfred@unaffiliated/vicfred) (Ping timeout: 256 seconds)
2020-11-30 22:41:04 +0100 <ezzieyguywuf> how do you catch an exception in haskell?
2020-11-30 22:41:22 +0100f-a(~f-a@151.82.199.37) (Read error: Connection reset by peer)
2020-11-30 22:41:25 +0100f-a_(~f-a@151.68.157.93)
2020-11-30 22:41:33 +0100 <maerwald> https://hackage.haskell.org/package/base-4.14.0.0/docs/Control-Exception.html#v:handle
2020-11-30 22:41:45 +0100vicfred(~vicfred@unaffiliated/vicfred) (Client Quit)
2020-11-30 22:41:59 +0100contiver_(~contiver@84-115-64-11.wifi.dynamic.surfer.at)
2020-11-30 22:42:13 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp)
2020-11-30 22:42:20 +0100 <ezzieyguywuf> ah hah, I see
2020-11-30 22:42:25 +0100 <ezzieyguywuf> maerwald: thank you.
2020-11-30 22:43:25 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-11-30 22:44:28 +0100contiver(~contiver@84-115-64-11.wifi.dynamic.surfer.at) (Ping timeout: 260 seconds)
2020-11-30 22:45:29 +0100tlaxkit(~kvirc@185.228.155.198)
2020-11-30 22:45:55 +0100f-a_(~f-a@151.68.157.93) (Client Quit)
2020-11-30 22:46:15 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-11-30 22:47:15 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-30 22:49:48 +0100ulidtko|k(~ulidtko@194.54.80.38)
2020-11-30 22:50:04 +0100neiluj(~jco@unaffiliated/neiluj) (Ping timeout: 272 seconds)
2020-11-30 22:50:37 +0100 <ezzieyguywuf> I'm still struggling - I understand how catch/handle are supposed to work, but how do I know if I'm accounting for every possible exception?
2020-11-30 22:50:42 +0100 <ezzieyguywuf> or is that impractical?
2020-11-30 22:50:54 +0100 <maerwald> ezzieyguywuf: https://hackage.haskell.org/package/base-4.14.0.0/docs/System-IO-Error.html#v:isDoesNotExistError
2020-11-30 22:50:59 +0100 <maerwald> you only care about that one
2020-11-30 22:51:10 +0100 <maerwald> and possibly https://hackage.haskell.org/package/base-4.14.0.0/docs/System-IO-Error.html#v:isPermissionError
2020-11-30 22:51:18 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-11-30 22:51:43 +0100 <maerwald> so you check the error in the handler with those two functions
2020-11-30 22:51:55 +0100 <ezzieyguywuf> isDoesNotExistError returns a bool, but handle expects an `e -> IO a`
2020-11-30 22:52:05 +0100ulidtko|kk(~ulidtko@193.111.48.79) (Ping timeout: 240 seconds)
2020-11-30 22:52:08 +0100 <maerwald> yes, you should be able to figure this out :p
2020-11-30 22:52:57 +0100 <maerwald> look at the whole type signature and specialize the `a`
2020-11-30 22:53:10 +0100 <ezzieyguywuf> lol, I should be able to figure this out...
2020-11-30 22:53:17 +0100chaosmasttter(~chaosmast@p200300c4a708ba01009b72ed500751f5.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
2020-11-30 22:53:25 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-30 22:53:50 +0100 <monochrom> ezzieyguywuf: http://www.vex.net/~trebla/haskell/exception-tutorial.xhtml#subtyping
2020-11-30 22:54:06 +0100 <ezzieyguywuf> hrm, the documentation for catch is helpful here
2020-11-30 22:54:06 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-30 22:54:15 +0100 <ezzieyguywuf> monochrom: ah, I'll have to check that out
2020-11-30 22:54:18 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 22:54:31 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2020-11-30 22:54:31 +0100neiluj(~jco@unaffiliated/neiluj)
2020-11-30 22:56:23 +0100bitmagie(~Thunderbi@200116b8068d1f00e02cf9810b35763a.dip.versatel-1u1.de)
2020-11-30 22:57:44 +0100hexo^(~hexo@2a01:430:17:1::ffff:328) (Quit: ZNC - http://znc.in)
2020-11-30 22:57:44 +0100_Adluc_(~Adluc@2a01:430:17:1::ffff:328) (Quit: ZNC - http://znc.in)
2020-11-30 22:58:22 +0100_Adluc_(~Adluc@83.167.228.130)
2020-11-30 22:59:33 +0100MartinAS1(~MartinAS@195.140.213.38)
2020-11-30 22:59:51 +0100Adluc(Adluc@base48.cz) (Quit: ZNC - http://znc.in)
2020-11-30 22:59:52 +0100hexo-(hexo@base48.cz) (Write error: Connection reset by peer)
2020-11-30 23:00:05 +0100 <maerwald> ezzieyguywuf: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/lib/GHCup/Utils/Prelude.hs#L183 this is similar to what you need to do
2020-11-30 23:00:33 +0100Adluc(Adluc@base48.cz)
2020-11-30 23:01:04 +0100 <maerwald> so instead of `pure ()` you probably want something else
2020-11-30 23:02:24 +0100timCF_(~i.tkachuk@m91-129-105-245.cust.tele2.ee) (Quit: leaving)
2020-11-30 23:04:43 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it)
2020-11-30 23:05:19 +0100hexo-(~hexo@83.167.228.130)
2020-11-30 23:06:25 +0100Amras(~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
2020-11-30 23:06:33 +0100devalot(~ident@mail.pmade.com)
2020-11-30 23:07:53 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-30 23:08:09 +0100Adluc(Adluc@base48.cz) (Quit: ZNC - http://znc.in)
2020-11-30 23:08:35 +0100 <dminuoso> 22:50:37 ezzieyguywuf | I'm still struggling - I understand how catch/handle are supposed to work, but how do I know if I'm accounting for every possible exception?
2020-11-30 23:08:40 +0100Adluc(Adluc@base48.cz)
2020-11-30 23:08:49 +0100Adluc(Adluc@base48.cz) (Remote host closed the connection)
2020-11-30 23:08:58 +0100 <dminuoso> ezzieyguywuf: It depends. Are you catching someone elses exceptions, or is the exception throwing part under your control?
2020-11-30 23:09:20 +0100Adluc(Adluc@base48.cz)
2020-11-30 23:09:44 +0100Adluc(Adluc@base48.cz) (Remote host closed the connection)
2020-11-30 23:10:33 +0100christo(~chris@81.96.113.213)
2020-11-30 23:10:40 +0100 <dminuoso> https://simonmar.github.io/bib/papers/ext-exceptions.pdf is a great read either way. If you get to control the exceptions, you can put them in this hierarchy and then have fine control over how to catch exceptions. If it's someone elses exceptions, it depends on their exception hygiene.
2020-11-30 23:10:41 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2020-11-30 23:11:14 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-11-30 23:11:16 +0100 <dminuoso> That publication is a little more formal and detailed version of monochrom's tutorial
2020-11-30 23:11:24 +0100 <dminuoso> But very readable
2020-11-30 23:11:29 +0100tomku(~tomku@unaffiliated/tomku) (Read error: Connection reset by peer)
2020-11-30 23:12:58 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-30 23:13:19 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-11-30 23:16:55 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp) (Read error: No route to host)
2020-11-30 23:17:30 +0100tomku(~tomku@unaffiliated/tomku)
2020-11-30 23:17:48 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-11-30 23:17:48 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-11-30 23:17:48 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-11-30 23:18:11 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp)
2020-11-30 23:19:57 +0100knupfer(~Thunderbi@200116b82c773700bd0d2b808d25cbd1.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2020-11-30 23:21:48 +0100 <iqubic> monochrom has a tutorial?
2020-11-30 23:25:52 +0100nckxncksneekx
2020-11-30 23:26:03 +0100ncksneekxnckx
2020-11-30 23:27:38 +0100 <iqubic> What's the status on the Monad of No Return proposal?
2020-11-30 23:27:40 +0100 <iqubic> https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/monad-of-no-return
2020-11-30 23:29:55 +0100 <ezzieyguywuf> dminuoso: catching someone else's (base's) exception
2020-11-30 23:30:46 +0100 <dminuoso> ezzieyguywuf: So that's one of the sad parts of Haskell. It's usually not communicated or documented what IO exceptions can be thrown.. :(
2020-11-30 23:30:54 +0100 <dminuoso> There's of course the sledge hammer of catching SomeException...
2020-11-30 23:31:04 +0100 <dminuoso> But then you also must make sure not to recover from async exceptions..
2020-11-30 23:31:13 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-30 23:31:26 +0100 <maerwald> and then you realize there's a library for that... and then you confuse the imports in your codebase
2020-11-30 23:31:39 +0100dminuosojust uses Async.Exception and has banned Control.Exception
2020-11-30 23:31:45 +0100 <dminuoso> That addresses that second part. :p
2020-11-30 23:31:52 +0100 <dminuoso> errr
2020-11-30 23:31:54 +0100 <dminuoso> *UnliftIO.Exception
2020-11-30 23:32:01 +0100 <ezzieyguywuf> I just watch to (a) try to open a file. if fail, tell user. (b) try to Config.parse said file (from config-value). if fail, tell user. (c) try to Config.Schema.loadFile said parsed file (from config-schema). if fail, tell user
2020-11-30 23:32:42 +0100 <ezzieyguywuf> I'd like a different message to the user depending on where the failure occurs. I was thinking of runExceptT since Config.parse and loadFile both return an Either
2020-11-30 23:33:18 +0100 <ezzieyguywuf> but then for the first step, I guess I have to catch/handle, and convert to an IO (Either Text Text)
2020-11-30 23:33:33 +0100 <ezzieyguywuf> and I guess also I need to convert the Left of Config.parse to be consistent
2020-11-30 23:33:45 +0100 <maerwald> yes, please mix ExceptT with IO and open unions and then get confused by your own code
2020-11-30 23:33:58 +0100 <maerwald> I also thought it's cool
2020-11-30 23:34:02 +0100 <ezzieyguywuf> yea already confused
2020-11-30 23:34:06 +0100 <ezzieyguywuf> so I guess this is a bad idea, lol
2020-11-30 23:34:14 +0100 <maerwald> now I need 2 exception handlers, one for IO, one for exceptT
2020-11-30 23:34:24 +0100 <maerwald> and then the code still crashes, lol
2020-11-30 23:34:49 +0100 <dminuoso> Well the question is whether you can recover from it, or whether you just want to produce a sensible diagnostic.
2020-11-30 23:35:23 +0100 <ezzieyguywuf> if any of those three operations fail, the program needs to exit and tell the user why
2020-11-30 23:36:08 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 260 seconds)
2020-11-30 23:37:04 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:6448:a1be:2d68:fad7) (Ping timeout: 240 seconds)
2020-11-30 23:39:16 +0100contiver(~contiver@84-115-65-28.wifi.dynamic.surfer.at)
2020-11-30 23:40:21 +0100 <ezzieyguywuf> actually I think only one of the three, the first, is even an IO action
2020-11-30 23:40:34 +0100 <ezzieyguywuf> the other two are pure functions that return an Either, so ExceptT is definitely not the right call here
2020-11-30 23:40:38 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it) (Quit: Leaving)
2020-11-30 23:41:16 +0100 <ezzieyguywuf> i think I'll just start with the nested case statements
2020-11-30 23:41:24 +0100 <ezzieyguywuf> and then post it and see if we can clean it up any
2020-11-30 23:41:53 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2020-11-30 23:42:00 +0100contiver_(~contiver@84-115-64-11.wifi.dynamic.surfer.at) (Ping timeout: 272 seconds)
2020-11-30 23:42:46 +0100contiver_(~contiver@84-115-65-220.wifi.dynamic.surfer.at)
2020-11-30 23:42:53 +0100joaoh82(~joaoh82@157-131-134-210.dedicated.static.sonic.net)
2020-11-30 23:44:21 +0100dhil(~dhil@195.213.192.34) (Ping timeout: 256 seconds)
2020-11-30 23:45:36 +0100contiver(~contiver@84-115-65-28.wifi.dynamic.surfer.at) (Ping timeout: 260 seconds)
2020-11-30 23:52:50 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-11-30 23:53:45 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-30 23:54:42 +0100kupi(uid212005@gateway/web/irccloud.com/x-wpncqurqfmhlmlcw) (Quit: Connection closed for inactivity)
2020-11-30 23:55:53 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-30 23:56:18 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-11-30 23:56:35 +0100joaoh82_(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
2020-11-30 23:57:58 +0100joaoh82_(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Client Quit)
2020-11-30 23:58:28 +0100notzmv(~user@unaffiliated/zmv) (Read error: No route to host)
2020-11-30 23:58:28 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-30 23:58:47 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-30 23:59:18 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-30 23:59:26 +0100contiver_(~contiver@84-115-65-220.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)