Home freenode/#haskell: Logs Calendar

Logs on 2020-11-30 (freenode/#haskell)

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

All times are in UTC on 2020-11-30.