2021/01/12

2021-01-12 00:01:31 +0100 <sm[m]> ep1ctetus: #haskell-ide-engine is probably the best place
2021-01-12 00:01:40 +0100 <sm[m]> the Haskell extension is supposed to take care of that for you
2021-01-12 00:01:48 +0100 <ep1ctetus> sm[m] thank you
2021-01-12 00:03:04 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-12 00:03:09 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer)
2021-01-12 00:03:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-01-12 00:05:36 +0100Widget(~widget@213.55.241.60) (Ping timeout: 272 seconds)
2021-01-12 00:06:32 +0100Widget(~widget@2a04:ee41:6:7207:b1c1:81ec:60ca:398c)
2021-01-12 00:07:11 +0100 <ij> how can a calculation on a record cause allocations? score c = created c + (choices c) * 5
2021-01-12 00:07:23 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2021-01-12 00:08:03 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
2021-01-12 00:08:17 +0100mikevdg(a30781b2@163.7.129.178)
2021-01-12 00:08:33 +0100LKoen(~LKoen@152.172.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.”)
2021-01-12 00:08:50 +0100 <mikevdg> Hi all. How do you debug stuff in Haskell? I'm getting an exception in a library, but I can't work out how to get a stack trace.
2021-01-12 00:09:02 +0100 <mikevdg> Links to a tutorial would be great. I'm not having much luck finding one.
2021-01-12 00:09:02 +0100ericsagnes(~ericsagne@2405:6580:0:5100:a978:5a86:791:f563) (Ping timeout: 264 seconds)
2021-01-12 00:09:24 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-01-12 00:11:33 +0100 <sm[m]> mikevdg: it's a bit complicated. It might involve building the profiling version of that library, and rebuilding your app in profiling mode. Often it's quicker to narrow things down with trace (Debug.Trace)
2021-01-12 00:11:51 +0100 <sm[m]> if you want to master it, the GHC User Guide is a good place to start
2021-01-12 00:11:58 +0100 <monochrom> mikevdg: I start with "printf debugging": http://www.vex.net/~trebla/haskell/tracing.html
2021-01-12 00:13:19 +0100 <mikevdg> I've already recompiled for profiling.
2021-01-12 00:14:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-12 00:14:37 +0100 <monochrom> My brief experience with "turn on profiling to get a backtrace" is that after code optimization (GHC can rewrite your code to beyond recognition) the backtrace is informationless.
2021-01-12 00:14:50 +0100mikevdgfinds https://downloads.haskell.org/ghc/latest/docs/html/users_guide/debug-info.html#requesting-a-stack-…
2021-01-12 00:15:17 +0100 <monochrom> Not to mention that laziness is extremely jumpy.
2021-01-12 00:15:45 +0100 <sm[m]> well if you have a profiling build, it's no harm to try the backtrace you'll get from running with +RTS -xc (IIRC)
2021-01-12 00:16:17 +0100debclair(~debclair@host-181-39-120-169.netlife.ec) (Ping timeout: 256 seconds)
2021-01-12 00:16:26 +0100 <mikevdg> +RTC -xc don't seem to be recognised in the GHC options in package.yaml. GHC barfed at them (?!)
2021-01-12 00:17:03 +0100 <monochrom> My most successful debugging sessions have all been: formulate a really informative hypothesis, use "printf debugging" to accept or reject the hypothesis, repeat.
2021-01-12 00:17:18 +0100 <sm[m]> +RTS -xc, and these are run-time options for your program, not build time options for ghc
2021-01-12 00:18:14 +0100 <mikevdg> ahh.
2021-01-12 00:18:39 +0100 <sm[m]> they might require that you built it with the -rtsopts ghc option though
2021-01-12 00:19:18 +0100 <monochrom> Yeah, -rtsopts in build-time ghc-options
2021-01-12 00:19:48 +0100 <monochrom> This is why you have to learn how to use GHC directly, even when normally you use stack or cabal-install.
2021-01-12 00:20:05 +0100 <monochrom> The abstraction leaks.
2021-01-12 00:20:17 +0100 <sm[m]> stack hides that stuff pretty well actually. stack build --profile
2021-01-12 00:20:49 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2021-01-12 00:20:52 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e8e1:98ae:f4d8:7ab5)
2021-01-12 00:21:54 +0100 <monochrom> Well, when one day you don't have to know "+RTS -xc" and you don't have to know "oh you mean give it to my exe, not to GHC", only then you can call it well-hidden.
2021-01-12 00:22:16 +0100klardotsh(~klardotsh@c-71-231-242-112.hsd1.wa.comcast.net)
2021-01-12 00:22:45 +0100inkbottle(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-12 00:22:49 +0100 <monochrom> i.e., some kind of "stack/cabal run --backtrace" and "stack/cabal run --memory-profile" and ...
2021-01-12 00:23:04 +0100inkbottle(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 00:23:31 +0100 <monochrom> I wouldn't hold my breath.
2021-01-12 00:24:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-12 00:25:49 +0100son0p(~son0p@181.136.122.143) (Quit: leaving)
2021-01-12 00:25:57 +0100plutoniix(~q@node-ufb.pool-125-24.dynamic.totinternet.net)
2021-01-12 00:26:50 +0100debclair(~debclair@host-181-39-120-169.netlife.ec)
2021-01-12 00:27:10 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2021-01-12 00:27:46 +0100 <ij> is it easy to make a statically linked executable?
2021-01-12 00:28:12 +0100 <ij> for copying onto a fresh, empty server
2021-01-12 00:28:57 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Remote host closed the connection)
2021-01-12 00:30:29 +0100 <mikevdg> I've come to the conclusion that Haskell does not have a usable debugger. At all. Screw this.
2021-01-12 00:31:03 +0100 <mikevdg> I'm *trying really hard* to like this language but everything I try is far more difficult than it needs to be.
2021-01-12 00:32:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-12 00:32:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 00:32:59 +0100conal(~conal@64.71.133.70)
2021-01-12 00:34:25 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-01-12 00:35:26 +0100heronwr(~heronwr@198.52.165.210)
2021-01-12 00:36:12 +0100heronwr(~heronwr@198.52.165.210) (Client Quit)
2021-01-12 00:36:30 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-12 00:36:46 +0100TheCommieDuck(~mark@host-78-146-136-48.as13285.net) (Quit: WeeChat 3.0)
2021-01-12 00:36:51 +0100conal_(~conal@198.8.81.80)
2021-01-12 00:37:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-01-12 00:37:56 +0100conal(~conal@64.71.133.70) (Ping timeout: 240 seconds)
2021-01-12 00:38:54 +0100 <sm[m]> mikevdg: it doesn't. Nobody said it did. :)
2021-01-12 00:39:13 +0100 <sm[m]> but there are compensating strengths. Don't give up too soon!
2021-01-12 00:39:43 +0100 <sm[m]> It takes longer than you expect.
2021-01-12 00:39:52 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 246 seconds)
2021-01-12 00:39:59 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 00:43:34 +0100 <mikevdg> What strengths? Either I'm waiting for a 6-minute compilation to finish, or I'm lost in a maze of monad transformers.
2021-01-12 00:44:00 +0100 <mikevdg> It's all very well that there are no side effects, but I'm having huge trouble even just getting code to run.
2021-01-12 00:45:02 +0100pavonia(~user@unaffiliated/siracusa)
2021-01-12 00:45:04 +0100 <mikevdg> In the same amount of time it took me to get haskell-language-server running, I had downloaded and learned the entire Smalltalk language.
2021-01-12 00:45:30 +0100darjeeling_(~darjeelin@115.215.40.96) (Ping timeout: 272 seconds)
2021-01-12 00:46:43 +0100 <mikevdg> I'm trying to get Haskell to work with webdriver. I've seen bug reports of "Never mind. We switch to python and it works now."
2021-01-12 00:47:19 +0100 <ij> with nix it took me a minute
2021-01-12 00:47:26 +0100AWizzArd(~code@gehrels.uberspace.de) (Changing host)
2021-01-12 00:47:27 +0100AWizzArd(~code@unaffiliated/awizzard)
2021-01-12 00:48:50 +0100 <mikevdg> Never mind. It works now. Haskell is amazing.
2021-01-12 00:49:02 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-12 00:49:16 +0100 <mikevdg> It appears that chromedriver is broken.
2021-01-12 00:49:31 +0100loli(~loli@024-171-017-003.res.spectrum.com) (Read error: Connection reset by peer)
2021-01-12 00:50:07 +0100loli(~loli@024-171-017-003.res.spectrum.com)
2021-01-12 00:50:14 +0100 <sm[m]> mikevdg: https://www.foxhound.systems/blog/why-haskell-for-production/ is a nice recent description of some strengths. They are more apparent with bigger and longer-lasting projects
2021-01-12 00:50:50 +0100 <sm[m]> it's certainly no Smalltalk. (I'm a Squeaker)
2021-01-12 00:52:09 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-12 00:53:20 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2021-01-12 00:53:48 +0100tama00(~tama@unaffiliated/tama00) (Quit: WeeChat 3.0)
2021-01-12 00:54:02 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-01-12 00:54:47 +0100aidecoe(~aidecoe@unaffiliated/aidecoe) (Remote host closed the connection)
2021-01-12 00:55:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 00:57:41 +0100debclair(~debclair@host-181-39-120-169.netlife.ec) (Quit: Leaving)
2021-01-12 00:59:16 +0100ep1ctetus(b8bba2a3@ip184-187-162-163.sb.sd.cox.net) ()
2021-01-12 00:59:51 +0100ep1ctetus(~luke@ip184-187-162-163.sb.sd.cox.net)
2021-01-12 01:01:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-12 01:01:52 +0100acidjnk_new(~acidjnk@p200300d0c704e7934412496f05d02b0d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-12 01:02:44 +0100 <dolio> Maybe the lesson is that smalltalk had nothing significant to teach you.
2021-01-12 01:05:01 +0100zaquest(~notzaques@5.128.210.178)
2021-01-12 01:05:08 +0100ep1ctetus(~luke@ip184-187-162-163.sb.sd.cox.net) (Quit: Leaving.)
2021-01-12 01:06:51 +0100 <koz_> I've done some profiling and discovered that one function does 24% of my allocations. This is a bit baffling, and I'd like to investigate why. What do?
2021-01-12 01:07:31 +0100 <ij> show the function
2021-01-12 01:07:44 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-01-12 01:08:08 +0100 <koz_> ij: It wouldn't make any sense on its own, and then I'd have to show you our entire web framework. :P
2021-01-12 01:08:21 +0100 <koz_> I'd like to investigate what thing that this function is calling that's allocating.
2021-01-12 01:09:14 +0100 <dolio> 24% inherited?
2021-01-12 01:09:20 +0100 <dolio> Or 24% itself?
2021-01-12 01:09:28 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-12 01:09:36 +0100 <ij> what does inherited mean?
2021-01-12 01:09:37 +0100 <koz_> I only have a -p profile. Do I need a -h profile for this?
2021-01-12 01:09:44 +0100ep1ctetus(~marcus_au@ip184-187-162-163.sb.sd.cox.net)
2021-01-12 01:09:50 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-01-12 01:10:03 +0100 <koz_> I'm going by its cost centre entry at the top.
2021-01-12 01:10:40 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 246 seconds)
2021-01-12 01:11:00 +0100 <mikevdg> dolio: Smalltalk is all about tooling. The debugger is amazing.
2021-01-12 01:11:16 +0100ep1ctetus(~marcus_au@ip184-187-162-163.sb.sd.cox.net) (Client Quit)
2021-01-12 01:11:26 +0100ystael(~ystael@209.6.50.55)
2021-01-12 01:11:34 +0100 <dolio> Inherited means that 24% of allocations occur in any cost center transitively referenced from the given cost center. As opposed to attributable directly to the given cost center.
2021-01-12 01:11:49 +0100 <koz_> dolio: How do I establish which this is?
2021-01-12 01:12:15 +0100rajivr(uid269651@gateway/web/irccloud.com/x-gnedumgsvnojinhm)
2021-01-12 01:12:40 +0100ep1ctetus(~marcus_au@ip184-187-162-163.sb.sd.cox.net)
2021-01-12 01:13:10 +0100tbqdrn[m](tbqdrnmatr@gateway/shell/matrix.org/x-uepjwqvijalwxvgx)
2021-01-12 01:13:24 +0100 <dolio> koz_: The profiles I'm familiar with have columns for inherited and direct cost. But I don't remember which profiles that is, because I haven't done it in a long time.
2021-01-12 01:13:42 +0100 <koz_> dolio: I'll try a -h profile and see if that helps.
2021-01-12 01:13:42 +0100 <dolio> If yours doesn't, you need to do something different.
2021-01-12 01:14:42 +0100 <sm[m]> koz_: profiterole makes profiles more readable
2021-01-12 01:14:58 +0100 <sm[m]> ie, more hierarchical
2021-01-12 01:15:33 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-12 01:15:40 +0100 <koz_> sm[m]: profiterole doesn't seem to do allocation - only time.
2021-01-12 01:17:01 +0100 <dolio> koz_: Another thing to consider is that if you don't have libraries built with relevant profiling, I think all costs from those calls will be attributed directly to whatever cost center is calling them.
2021-01-12 01:17:20 +0100 <koz_> dolio: I used 'stack build --profile', which I _guess_ handles this?
2021-01-12 01:17:28 +0100 <dolio> Hopefully.
2021-01-12 01:17:31 +0100 <exarkun> I think it does
2021-01-12 01:17:38 +0100 <exarkun> You may have noticed it spending an hour rebuilding all your deps?
2021-01-12 01:18:02 +0100 <dolio> I guess my point is, check if you actually see cost centers for libraries.
2021-01-12 01:18:03 +0100 <koz_> Lol.
2021-01-12 01:18:23 +0100 <koz_> dolio: My very first cost centre is from Network.Socket.Buffer.
2021-01-12 01:18:23 +0100 <dolio> At least, if they're relevant.
2021-01-12 01:19:02 +0100tbqdrn[m](tbqdrnmatr@gateway/shell/matrix.org/x-uepjwqvijalwxvgx) ("User left")
2021-01-12 01:19:58 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2021-01-12 01:20:18 +0100 <dolio> But like, if you look at your expensive function, and you don't see any cost centers under it for potentially expensive library calls, that's suspicious.
2021-01-12 01:21:15 +0100 <sm[m]> koz_: I guess you're right, but the two often correlate
2021-01-12 01:21:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-12 01:22:01 +0100 <sm[m]> I usually flip between the original and profiterole's
2021-01-12 01:22:04 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-12 01:22:45 +0100inkbottle(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-12 01:23:06 +0100inkbottle(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 01:23:12 +0100 <sm[m]> but there are fancier graphical heap profiling tools, better for some things
2021-01-12 01:23:43 +0100hiroaki(~hiroaki@ip4d16b6b9.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2021-01-12 01:23:53 +0100Tario(~Tario@201.192.165.173)
2021-01-12 01:24:34 +0100 <koz_> sm[m]: profiteur helped. dolio: What is the difference between an entry called 'foo', and one called 'foo (indiv)'?
2021-01-12 01:24:51 +0100tbqdrn[m](tbqdrnmatr@gateway/shell/matrix.org/x-uepjwqvijalwxvgx)
2021-01-12 01:24:57 +0100 <dolio> I've never used profiterole.
2021-01-12 01:25:37 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2021-01-12 01:25:40 +0100 <dolio> indiv might be the direct cost, and the other one the inherited cost.
2021-01-12 01:26:03 +0100 <koz_> OK, found the guilty parties.
2021-01-12 01:26:10 +0100 <koz_> Still weird, but it's _definitely_ inherited.
2021-01-12 01:26:11 +0100 <koz_> Thanks all!
2021-01-12 01:26:17 +0100 <sm[m]> \o/
2021-01-12 01:26:28 +0100 <sm[m]> https://mpickering.github.io/eventlog2html looks good too
2021-01-12 01:26:41 +0100 <ij> I wrote this code to put smallest elements in front of the list, but it seems to be slower than sortOn score and then taking the head http://sprunge.us/SIzMWU
2021-01-12 01:27:28 +0100tbqdrn[m](tbqdrnmatr@gateway/shell/matrix.org/x-uepjwqvijalwxvgx) ("User left")
2021-01-12 01:27:28 +0100slewis(~slewis@84.39.117.57) (Remote host closed the connection)
2021-01-12 01:27:45 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-01-12 01:28:19 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e)
2021-01-12 01:28:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 01:28:44 +0100 <dolio> koz_: -h is not the one I was thinking of, although it might have helped. I think maybe -P is the one I was talking about.
2021-01-12 01:30:04 +0100 <koz_> That's the one I had, and it turned out to have what I needed.
2021-01-12 01:30:25 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: leaving)
2021-01-12 01:30:27 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds)
2021-01-12 01:33:40 +0100 <ij> here's a ghci runnable example http://sprunge.us/kKy7IE
2021-01-12 01:37:42 +0100 <ij> it would make sense if sort is some optimized C
2021-01-12 01:38:03 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 01:38:16 +0100aveltras(uid364989@gateway/web/irccloud.com/x-xykekrezuzwmeque) (Quit: Connection closed for inactivity)
2021-01-12 01:39:34 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-01-12 01:41:06 +0100threestrikes(~threestri@cpe-24-243-229-2.hot.res.rr.com)
2021-01-12 01:42:11 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-01-12 01:42:49 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 264 seconds)
2021-01-12 01:45:10 +0100plutoniix(~q@node-ufb.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
2021-01-12 01:45:16 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 01:46:16 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
2021-01-12 01:46:30 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-01-12 01:46:35 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-12 01:49:31 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2021-01-12 01:54:06 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 01:55:00 +0100aerium(~aerium@51.194.80.91) (Ping timeout: 265 seconds)
2021-01-12 01:56:26 +0100zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-01-12 01:56:54 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
2021-01-12 01:57:37 +0100 <glguy> ij: why "minRest m [] t = (m, [], t)" instead of "minRest m [] t = (m, t)"?
2021-01-12 01:57:48 +0100zaquest(~notzaques@5.128.210.178)
2021-01-12 01:58:30 +0100 <ij> I (for no reason whatsoever) thought the arguments have to match the return type
2021-01-12 01:58:35 +0100 <ij> let's try it
2021-01-12 01:59:15 +0100 <ij> still slower than sortOn
2021-01-12 01:59:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-01-12 01:59:37 +0100 <ij> it looks like it is using less memory, though
2021-01-12 02:02:07 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 246 seconds)
2021-01-12 02:02:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-01-12 02:05:29 +0100danso(~dan@23-233-104-25.cpe.pppoe.ca) (Ping timeout: 260 seconds)
2021-01-12 02:05:46 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:55e4:e64e:d0d2:62ce) (Read error: Connection reset by peer)
2021-01-12 02:07:28 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-01-12 02:11:12 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-01-12 02:12:18 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-01-12 02:15:17 +0100christo(~chris@81.96.113.213)
2021-01-12 02:16:58 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 02:19:25 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-12 02:19:34 +0100danso(~dan@23-233-104-25.cpe.pppoe.ca)
2021-01-12 02:19:40 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-12 02:21:26 +0100jmchael(~jmchael@87.112.235.234) (Ping timeout: 256 seconds)
2021-01-12 02:21:49 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 264 seconds)
2021-01-12 02:23:23 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2021-01-12 02:25:19 +0100columbarius1(~columbari@87.123.198.160) (Ping timeout: 260 seconds)
2021-01-12 02:26:23 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-01-12 02:27:23 +0100columbarius1(~columbari@muedsl-82-207-236-249.citykom.de)
2021-01-12 02:28:25 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 264 seconds)
2021-01-12 02:29:02 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 256 seconds)
2021-01-12 02:30:08 +0100thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2021-01-12 02:31:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 02:32:18 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net)
2021-01-12 02:32:24 +0100argento(~argent0@168.227.97.34)
2021-01-12 02:33:31 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-01-12 02:34:25 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2021-01-12 02:34:48 +0100argento(~argent0@168.227.97.34) (Client Quit)
2021-01-12 02:36:15 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-12 02:37:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-12 02:39:11 +0100 <slack1256> I remember to have read a blogpost on r/haskell called "the greatest refactor technique you have never heard of" which was about defunctionalization on a DFS algorithm for a tree. I've tried the reddit search but I guess the name isn't correct. Does anyone have a link?
2021-01-12 02:41:31 +0100pmxb0t(~pmxb0t@185.204.1.185)
2021-01-12 02:43:23 +0100 <texasmynsted> I guess I have never heard of it.
2021-01-12 02:44:01 +0100juri_(~juri@178.63.35.222) (Ping timeout: 264 seconds)
2021-01-12 02:46:29 +0100 <monochrom> would it be https://www.reddit.com/r/programming/comments/6wt7w/defunctionalized_lists_reifying_continuations/ (view the archived discussion, not the blog)
2021-01-12 02:51:49 +0100 <slack1256> Mmm it is the same idea certainly. But no, this one was published like 2 months ago.
2021-01-12 02:52:09 +0100jedws(~jedws@121.209.139.157)
2021-01-12 02:54:48 +0100 <texasmynsted> hmm. can't find it but darn I am finding all kinds of cool refactoring articles
2021-01-12 02:57:30 +0100epicte7us(~marcus_au@ip184-187-162-163.sb.sd.cox.net)
2021-01-12 02:57:40 +0100thefybe(~thefybe@249-147-161-N2.customer.vsm.sh) (Remote host closed the connection)
2021-01-12 02:57:53 +0100thefybe(~thefybe@249-147-161-N2.customer.vsm.sh)
2021-01-12 02:59:03 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-12 02:59:10 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 246 seconds)
2021-01-12 02:59:48 +0100jlamothe(~jlamothe@198.251.55.207) (Quit: leaving)
2021-01-12 03:00:18 +0100 <DigitalKiwi> haskells killer app is refactoring
2021-01-12 03:00:36 +0100ep1ctetus(~marcus_au@ip184-187-162-163.sb.sd.cox.net) (Ping timeout: 256 seconds)
2021-01-12 03:01:35 +0100abhixec_(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-12 03:07:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 03:09:13 +0100epicte7us(~marcus_au@ip184-187-162-163.sb.sd.cox.net) (Quit: Leaving)
2021-01-12 03:09:17 +0100texasmynstedshrug
2021-01-12 03:09:36 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 240 seconds)
2021-01-12 03:09:39 +0100 <texasmynsted> I have still never seen a more beautiful language than haskell
2021-01-12 03:10:24 +0100thefybe(~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 256 seconds)
2021-01-12 03:10:56 +0100SoundLogic_(~SoundLogi@075-134-016-017.res.spectrum.com)
2021-01-12 03:11:18 +0100SoundLogic_SoundLogic
2021-01-12 03:12:07 +0100SoundLogic(~SoundLogi@075-134-016-017.res.spectrum.com) (Client Quit)
2021-01-12 03:14:14 +0100Dark_Ethereal(~Drew@84.93.106.197) (Quit: Leaving.)
2021-01-12 03:15:09 +0100ADG1089__(~aditya@122.163.165.143) (Remote host closed the connection)
2021-01-12 03:18:18 +0100sm2n(~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca)
2021-01-12 03:19:39 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-12 03:20:22 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Client Quit)
2021-01-12 03:20:27 +0100dyeplexer(~lol@unaffiliated/terpin)
2021-01-12 03:21:27 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-01-12 03:24:59 +0100xff0x(~xff0x@2001:1a81:53ed:d500:fb41:db64:748c:e168) (Ping timeout: 272 seconds)
2021-01-12 03:25:31 +0100xff0x(~xff0x@2001:1a81:53ed:d500:b20b:19e8:9626:e2df)
2021-01-12 03:25:49 +0100darjeeling_(~darjeelin@115.215.40.96)
2021-01-12 03:26:45 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2021-01-12 03:28:04 +0100danso(~dan@23-233-104-25.cpe.pppoe.ca) (Quit: WeeChat 3.0)
2021-01-12 03:29:10 +0100conal_(~conal@198.8.81.80) (Quit: Computer has gone to sleep.)
2021-01-12 03:29:16 +0100jespada(~jespada@90.254.245.49)
2021-01-12 03:29:52 +0100conal(~conal@198.8.81.80)
2021-01-12 03:29:52 +0100conal(~conal@198.8.81.80) (Client Quit)
2021-01-12 03:30:28 +0100conal(~conal@198.8.81.80)
2021-01-12 03:34:25 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2021-01-12 03:35:12 +0100justsomeguy(~Srain@unaffiliated/--/x-3805311)
2021-01-12 03:35:18 +0100xff0x(~xff0x@2001:1a81:53ed:d500:b20b:19e8:9626:e2df) (Ping timeout: 260 seconds)
2021-01-12 03:35:37 +0100conal(~conal@198.8.81.80) (Ping timeout: 264 seconds)
2021-01-12 03:36:50 +0100xff0x(~xff0x@2001:1a81:5220:500:dba:8115:2558:810b)
2021-01-12 03:39:25 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds)
2021-01-12 03:41:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-12 03:41:37 +0100conal(~conal@198.8.81.80)
2021-01-12 03:45:18 +0100threestrikes(~threestri@cpe-24-243-229-2.hot.res.rr.com) (Quit: Leaving)
2021-01-12 03:45:29 +0100plutoniix(~q@184.82.192.193)
2021-01-12 03:51:12 +0100conal(~conal@198.8.81.80) (Quit: Computer has gone to sleep.)
2021-01-12 03:51:43 +0100mikevdg(a30781b2@163.7.129.178) (Quit: Connection closed)
2021-01-12 03:55:05 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 03:55:31 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-upuqeneqybvqnswn) (Quit: Connection closed for inactivity)
2021-01-12 03:59:53 +0100conal(~conal@198.8.81.80)
2021-01-12 04:00:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2021-01-12 04:01:50 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-12 04:05:20 +0100Sgeo_(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-12 04:05:39 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-01-12 04:06:20 +0100Mzg(Mzg@s1.ct8.pl) (Ping timeout: 256 seconds)
2021-01-12 04:06:31 +0100Mzg(Mzg@s1.ct8.pl)
2021-01-12 04:07:11 +0100 <nshepperd> slack1256: https://www.joachim-breitner.de/blog/778-Don%E2%80%99t_think%2C_just_defunctionalize ?
2021-01-12 04:07:24 +0100darjeeling_(~darjeelin@115.215.40.96) (Ping timeout: 260 seconds)
2021-01-12 04:08:16 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-01-12 04:08:47 +0100darjeeling_(~darjeelin@115.215.40.96)
2021-01-12 04:10:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 04:10:37 +0100 <nshepperd> that's basically a blog post version of "the best refactoring you've never heard of" which is a video from a year ago
2021-01-12 04:13:14 +0100DTZUZU_(~DTZUZU@207.81.119.43)
2021-01-12 04:13:34 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer)
2021-01-12 04:15:13 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net)
2021-01-12 04:15:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-12 04:15:49 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-12 04:17:42 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 04:17:46 +0100conal(~conal@198.8.81.80) (Quit: Computer has gone to sleep.)
2021-01-12 04:17:54 +0100DTZUZU_(~DTZUZU@207.81.119.43) (Ping timeout: 260 seconds)
2021-01-12 04:17:57 +0100ransom_(~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
2021-01-12 04:23:24 +0100 <ukari> why this code cannot get the argument in template haskell? https://gist.github.com/ukari/11bc6327ff26fef3db31b4543a87ece6
2021-01-12 04:23:50 +0100ransom_(~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 04:26:20 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2021-01-12 04:26:59 +0100 <glguy> ukari, The name "input" would be match where you splice that in
2021-01-12 04:27:02 +0100 <glguy> matched
2021-01-12 04:27:09 +0100 <glguy> not when you define it
2021-01-12 04:27:13 +0100darjeeling_(~darjeelin@115.215.40.96) (Ping timeout: 264 seconds)
2021-01-12 04:27:23 +0100 <ephemient> test = $(id [| 1 |])
2021-01-12 04:27:32 +0100 <ephemient> that would work, btw
2021-01-12 04:28:09 +0100drbean(~drbean@TC210-63-209-185.static.apol.com.tw)
2021-01-12 04:28:24 +0100 <glguy> *Help> let input = 5 in $(idTH ())
2021-01-12 04:28:25 +0100 <glguy> 5
2021-01-12 04:28:54 +0100 <glguy> <interactive>:6:20-26: Splicing expression
2021-01-12 04:28:54 +0100 <glguy> idTH () ======> (\ x -> x) input
2021-01-12 04:29:08 +0100 <glguy> so you get: let input = 5 in (\ x -> x) input
2021-01-12 04:32:08 +0100 <justsomeguy> What does it mean when someone says a type is "lifted" or "unlifted"?
2021-01-12 04:32:41 +0100 <ukari> is it possible to pass 5 at the positon test = $(idTH **here**)? with idTH signature idTH :: a -> Q Exp
2021-01-12 04:33:01 +0100plateau_(~plateau@51.194.80.91)
2021-01-12 04:33:29 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 04:33:48 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-12 04:34:05 +0100sagax(~sagax_nb@213.138.71.146)
2021-01-12 04:35:00 +0100 <glguy> You could have: $(idTH [| 5 |])
2021-01-12 04:35:32 +0100 <ephemient> not with forall a. a. if you picked a specific type, you could embed a literal, or you could use quasiquotes which always work
2021-01-12 04:35:52 +0100Welkin(~Welkin@216.243.35.47)
2021-01-12 04:36:49 +0100 <ephemient> justsomeguy: the specifics depend on what content you're talking about, but in general it means something like unlifted :: a, lifted :: f a
2021-01-12 04:37:30 +0100 <glguy> or, idTH :: Lift a => a -> Q Exp
2021-01-12 04:37:30 +0100 <glguy> idTH input = appE helper [| input |]
2021-01-12 04:38:32 +0100 <ukari> $(idTH [|5|]) makes idTH signature turns to be idTH:: Q Exp -> Q Exp
2021-01-12 04:40:04 +0100 <glguy> Yes, your choices are either: idTH :: Lift a => a -> ExpQ -- or the more useful idTH :: ExpQ -> ExpQ
2021-01-12 04:41:10 +0100 <ephemient> either way (mkName "input") doesn't work; it's just not in scope at the point of the splice
2021-01-12 04:42:07 +0100 <ukari> thanks, i get it why that not works
2021-01-12 04:42:24 +0100darjeeling_(~darjeelin@115.215.40.96)
2021-01-12 04:43:06 +0100mirrorbird(~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Remote host closed the connection)
2021-01-12 04:44:52 +0100 <glguy> justsomeguy, "lifted" types can also mean "has bottom"
2021-01-12 04:45:03 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net)
2021-01-12 04:45:21 +0100 <glguy> Haskell ran out of words so lift gets overloaded
2021-01-12 04:46:25 +0100theDon(~td@94.134.91.199) (Ping timeout: 264 seconds)
2021-01-12 04:46:34 +0100 <glguy> http://hackage.haskell.org/package/base-4.14.1.0/docs/GHC-Exts.html#t:RuntimeRep
2021-01-12 04:46:44 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-01-12 04:47:18 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 04:47:39 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-12 04:47:48 +0100theDon(~td@muedsl-82-207-238-062.citykom.de)
2021-01-12 04:49:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 04:49:32 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-12 04:50:25 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-12 04:52:18 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 04:52:18 +0100Marissa(Marissa@33.anserq.com)
2021-01-12 04:52:57 +0100matryoshka(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 04:53:15 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-12 04:53:29 +0100conal(~conal@107.181.166.211)
2021-01-12 04:54:46 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds)
2021-01-12 04:57:59 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2021-01-12 04:57:59 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (rothfuss.freenode.net (Nickname regained by services)))
2021-01-12 04:57:59 +0100xirhtogallagothrix
2021-01-12 04:58:27 +0100Raito_Bezarius(~Raito@unaffiliated/raito-bezarius/x-8764578) (Ping timeout: 260 seconds)
2021-01-12 04:58:34 +0100matryoshka(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 04:58:53 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-12 04:59:05 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Remote host closed the connection)
2021-01-12 04:59:08 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-12 04:59:28 +0100ystael(~ystael@209.6.50.55) (Ping timeout: 272 seconds)
2021-01-12 05:00:42 +0100Raito_Bezarius(~Raito@unaffiliated/raito-bezarius/x-8764578)
2021-01-12 05:01:14 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2021-01-12 05:01:24 +0100Rudd0(~Rudd0@185.189.115.108)
2021-01-12 05:01:36 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2021-01-12 05:02:15 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2021-01-12 05:04:09 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-12 05:07:42 +0100justsomeguy(~Srain@unaffiliated/--/x-3805311) (Remote host closed the connection)
2021-01-12 05:09:07 +0100danso(~dan@23-233-104-25.cpe.pppoe.ca)
2021-01-12 05:09:36 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2021-01-12 05:09:54 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-12 05:11:39 +0100sagax(~sagax_nb@213.138.71.146) (Quit: Konversation terminated!)
2021-01-12 05:14:08 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-12 05:16:33 +0100cmcma20(~cmcma20@l37-192-2-125.novotelecom.ru) (Quit: leaving)
2021-01-12 05:17:26 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-12 05:20:01 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-12 05:20:25 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2021-01-12 05:20:54 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2021-01-12 05:23:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-12 05:23:32 +0100matryoshka(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 05:23:56 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-12 05:26:53 +0100sagax(~sagax_nb@213.138.71.146)
2021-01-12 05:28:48 +0100mosq(b8b05cbe@ip184-176-92-190.ph.ph.cox.net)
2021-01-12 05:29:01 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 264 seconds)
2021-01-12 05:30:28 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-01-12 05:32:27 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-12 05:32:31 +0100mosq(b8b05cbe@ip184-176-92-190.ph.ph.cox.net) (Quit: Connection closed)
2021-01-12 05:36:00 +0100conal(~conal@107.181.166.211) (Quit: Computer has gone to sleep.)
2021-01-12 05:36:02 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
2021-01-12 05:36:16 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-01-12 05:37:39 +0100conal(~conal@107.181.166.211)
2021-01-12 05:41:07 +0100conal(~conal@107.181.166.211) (Client Quit)
2021-01-12 05:41:48 +0100conal(~conal@107.181.166.211)
2021-01-12 05:41:50 +0100conal(~conal@107.181.166.211) (Client Quit)
2021-01-12 05:43:42 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-01-12 05:43:51 +0100Tario(~Tario@201.192.165.173)
2021-01-12 05:46:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-01-12 05:47:26 +0100conal(~conal@107.181.166.211)
2021-01-12 05:48:37 +0100 <slack1256> nshepperd: This one is! Thank you!
2021-01-12 05:49:01 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 05:49:42 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection)
2021-01-12 05:51:13 +0100xff0x(~xff0x@2001:1a81:5220:500:dba:8115:2558:810b) (Ping timeout: 260 seconds)
2021-01-12 05:51:39 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-12 05:52:11 +0100xff0x(~xff0x@2001:1a81:5220:500:b2be:2371:a702:1834)
2021-01-12 05:52:20 +0100christo(~chris@81.96.113.213)
2021-01-12 05:54:19 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net)
2021-01-12 05:54:45 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-01-12 05:55:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 05:56:46 +0100christo(~chris@81.96.113.213) (Ping timeout: 256 seconds)
2021-01-12 05:59:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 05:59:59 +0100inkbottle(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-12 06:01:09 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-01-12 06:04:04 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds)
2021-01-12 06:05:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-12 06:05:49 +0100glguy(x@freenode/staff/haskell.developer.glguy) (Quit: Quit)
2021-01-12 06:06:49 +0100glguy(x@freenode/staff/haskell.developer.glguy)
2021-01-12 06:10:26 +0100matryoshka(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 06:10:50 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-12 06:10:50 +0100 <hyiltiz> Not necessarily directly relevant to haskell, but I think I'd get answers I am looking for here. A tutoring company asked me to write them a website that allows studetns to take GMAT practice exams. They can provide the GMAT question pool but nothing else. How much should they pay (New York)?
2021-01-12 06:14:25 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 240 seconds)
2021-01-12 06:15:09 +0100eacameron(uid256985@gateway/web/irccloud.com/x-ccigqlpvwahmrvhs) (Quit: Connection closed for inactivity)
2021-01-12 06:15:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-12 06:17:27 +0100pmxb0t(~pmxb0t@185.204.1.185) (Remote host closed the connection)
2021-01-12 06:19:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-01-12 06:21:29 +0100 <maerwald> pay?
2021-01-12 06:21:48 +0100Tops21(~Tobias@dyndsl-095-033-022-123.ewe-ip-backbone.de)
2021-01-12 06:24:13 +0100Tops2(~Tobias@dyndsl-091-249-083-248.ewe-ip-backbone.de) (Ping timeout: 264 seconds)
2021-01-12 06:25:40 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-12 06:26:10 +0100phaul(~phaul@ruby/staff/phaul)
2021-01-12 06:26:14 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-12 06:26:16 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-12 06:27:32 +0100Welkin(~Welkin@216.243.35.47) (Quit: leaving)
2021-01-12 06:28:39 +0100xff0x(~xff0x@2001:1a81:5220:500:b2be:2371:a702:1834) (Ping timeout: 272 seconds)
2021-01-12 06:29:24 +0100xff0x(~xff0x@2001:1a81:5220:500:b1ba:36b1:fd0d:1ab4)
2021-01-12 06:32:23 +0100TheCavalry(~TheCavalr@139.28.218.148)
2021-01-12 06:33:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 06:39:48 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 06:42:00 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 06:46:19 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-01-12 06:49:59 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-12 06:51:50 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-12 06:52:02 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-12 06:54:26 +0100 <edwardk> clearly you are supposed to do it for free, for the exposure.
2021-01-12 06:54:43 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-01-12 06:56:25 +0100 <ukari> https://gist.github.com/ukari/5dbbd51bc4e82317c9e625293f0ed5c8
2021-01-12 06:56:26 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-01-12 06:56:47 +0100 <edwardk> hyiltiz: anyways, my answer is i'd walk away. they don't know what they need. probably don't have an existing web presence to build on, or way for users to log in and pay for the experience, a realistic quote will cause them to choke or will leave you strung out trying to meet an impossible shifting set of goal-posts.
2021-01-12 06:57:48 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 06:57:57 +0100 <edwardk> ukari: you probably want a ' before the first undefined in nil'
2021-01-12 06:58:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Remote host closed the connection)
2021-01-12 06:59:01 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 264 seconds)
2021-01-12 06:59:26 +0100 <ukari> I make two functions nil, nil' :: a -> Q Exp, nil is a QuasiQuotes version of nil'. But I run `runQ $ nil 1` it works, run `runQ $ nil' 1` it occurs a runtime error
2021-01-12 06:59:28 +0100 <edwardk> hyiltiz: the only way both parties wind up happy in this arrangement is if you set up a decent set of expectations, get someone to negotiate a contract with an appropriate kill fee to avoid you getting setup to do a ton of effort for no return and do it as time and materials (and have prior experience dealing with clients to manage the relationship) which from the phrasing of your question, i don't think you do.
2021-01-12 06:59:40 +0100 <hyiltiz> maerwald edwardk: they are either trying to use me as cheap labor or don't know what they are doing; they did offer $5k but I don't think building and maintaining a new fullly blown web app is way beyond $5k
2021-01-12 06:59:53 +0100 <edwardk> hyiltiz: run away
2021-01-12 07:00:24 +0100 <edwardk> 5k won't match the kill for for early termination for doing contract work, let alone the cost of doing the actual job.
2021-01-12 07:00:50 +0100 <edwardk> its small enough its not worth the negotiation and large enough to hang you out to dry indefinitely
2021-01-12 07:01:19 +0100 <maerwald> I'd just make a bold counteroffer to see the reaction
2021-01-12 07:01:47 +0100 <hyiltiz> Yeah I told them they can hire a real software developer company or a full-stack web dev freelancer.
2021-01-12 07:01:50 +0100 <edwardk> i wouldn't even do that. the time spent talking to them costs you as well, and if they are floating something that low from the get go there's no respect
2021-01-12 07:02:09 +0100 <ukari> edwardk, I add a ' in nil' but it occurs the new error "SigE (VarE GHC.Err.undefined) (VarT *** Exception: Prelude.undefined"
2021-01-12 07:02:20 +0100 <edwardk> ukari: i meant 'undefined
2021-01-12 07:02:29 +0100 <hyiltiz> If they really want to hire someone like that and is willing to pay me as that someone, maybe I could consider; though not sure how much should I/anyone should even expect though.
2021-01-12 07:02:34 +0100 <hyiltiz> kinda my first gig
2021-01-12 07:02:34 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2021-01-12 07:02:41 +0100 <edwardk> you also have to fix the varT, but thats step two
2021-01-12 07:02:43 +0100 <ukari> nil' _ = sigE (varE 'Err.undefined) (varT (undefined::a))
2021-01-12 07:02:49 +0100 <edwardk> hyiltiz: this is a bad gig
2021-01-12 07:03:19 +0100 <hyiltiz> yeah as I said not gonna take it unless it is worth it but not sure what is minimum for it to be worth it
2021-01-12 07:03:38 +0100 <edwardk> ukari: sigE (varE 'undefined) (varT (mkName "a"))
2021-01-12 07:04:10 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-12 07:04:20 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2021-01-12 07:04:24 +0100 <edwardk> hyiltiz: given a typical ask for something that requires basic design is hitting $20k before you hit having some complicated login system, and having the form, and having to figure out how to format a gajillion GMAT questions to fit the web?
2021-01-12 07:05:32 +0100 <hyiltiz> yeah I thought they'd pay a freelancer or a dev company at the cheapest least $20k just to throw a early prototype out
2021-01-12 07:05:35 +0100 <ukari> edwardk, why this works? does mkName could capture a type variable 'a' in the signature?
2021-01-12 07:05:37 +0100 <edwardk> and then dealing with them because it won't be a toss it over the fence affair? A "realistic" model would be to price it at 6months work in time and materials, but because they don't have a realistic model of how pricing works, the whole thing is toxic
2021-01-12 07:05:51 +0100 <hyiltiz> I dont think they'd want to go up from $5k to $20k tho
2021-01-12 07:06:03 +0100 <edwardk> ukari: 'undefined makes the name undefined that references whatever undefined is currently in scope
2021-01-12 07:06:12 +0100 <hyiltiz> and yes u r right; there is either no respect or they don't know what they are asking
2021-01-12 07:06:18 +0100 <edwardk> hyiltiz: 20k doesn't get you a form, let alone a big GMAT test site
2021-01-12 07:06:33 +0100 <ukari> thank you, edwardk
2021-01-12 07:06:33 +0100 <edwardk> they are off over an order of magnitude from day 1. its a bad sign
2021-01-12 07:07:22 +0100 <hyiltiz> Yeah; this gig was from a friend of a friend who knew I was working on a prototype like this based on python but the web
2021-01-12 07:07:43 +0100 <edwardk> sigE foo bar expands to something like (foo :: bar) varE here is the variable expression. which we want to expand to reference the undefined that is in scope. on the other hand we want the bar to expand to just "some name that is syntactically 'a' that has no special significance" hence why i used mkName there.
2021-01-12 07:08:02 +0100 <edwardk> this is a recipe for losing a friend of a friend and probably a friend ;)
2021-01-12 07:08:09 +0100nikozas(uid482085@gateway/web/irccloud.com/x-imtxkdrjsszxrrgt)
2021-01-12 07:08:11 +0100 <hyiltiz> yeah i should just avoid thx
2021-01-12 07:08:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-12 07:09:19 +0100 <edwardk> my realistic estimate would be something like $60k for a thing where the developer might even be able to walk out of this with their shirt intact. if i had to do it without time and materials i'd pad that out more, and i'd honestly dig up a lawyer because shit is going to go wrong with that kind of deal.
2021-01-12 07:09:49 +0100 <edwardk> the only real way to fix it is to get paid by the hour as an actual employee, then they can see what is being done as its being done and any moving goalposts just costs them more hours
2021-01-12 07:10:06 +0100 <edwardk> they don't get the insulation of having you contracted to do a fixed task, but you aren't hung out to dry either.
2021-01-12 07:10:38 +0100ADG1089__(~aditya@122.163.165.143)
2021-01-12 07:10:47 +0100 <edwardk> and all of that is ignoring the fact that you said "New York" so everything probably realistically balloons even further in. just a bad bet
2021-01-12 07:10:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 07:11:18 +0100 <edwardk> should definitely move this off channel though
2021-01-12 07:13:58 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 07:15:48 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 260 seconds)
2021-01-12 07:16:45 +0100TheCavalry(~TheCavalr@139.28.218.148) (Remote host closed the connection)
2021-01-12 07:20:39 +0100 <hyiltiz> yeah thx for the valuable advice; I get you. If you have more tips, we can go haskell-offtopic
2021-01-12 07:23:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 07:28:09 +0100 <Squarism> theres no trick to declare that type A will get an instance of C up the compiler dependency tree =D
2021-01-12 07:28:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds)
2021-01-12 07:36:22 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 246 seconds)
2021-01-12 07:39:36 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2021-01-12 07:39:55 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2021-01-12 07:41:48 +0100jespada(~jespada@90.254.245.49)
2021-01-12 07:42:03 +0100Grim4d(42879b5a@66.135.155.90)
2021-01-12 07:42:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 07:46:12 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-12 07:47:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-12 07:48:25 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 07:50:25 +0100Grim4d(42879b5a@66.135.155.90) (Quit: Connection closed)
2021-01-12 07:52:25 +0100phasespace(~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 264 seconds)
2021-01-12 07:53:08 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 260 seconds)
2021-01-12 07:55:47 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 256 seconds)
2021-01-12 07:56:52 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 07:57:21 +0100adwin(~adwin@os3-384-25380.vs.sakura.ne.jp)
2021-01-12 07:58:11 +0100adwin(~adwin@os3-384-25380.vs.sakura.ne.jp) (Client Quit)
2021-01-12 07:58:41 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-12 07:59:48 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-01-12 08:01:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-01-12 08:06:10 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-12 08:08:36 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
2021-01-12 08:09:11 +0100nyaomin(~naomi@cpe-74-75-6-125.maine.res.rr.com)
2021-01-12 08:09:40 +0100nyaomi(~naomi@2603-7080-c43e-59ad-c878-29ff-fedf-ce89.res6.spectrum.com) (Ping timeout: 268 seconds)
2021-01-12 08:12:06 +0100knupfer(~Thunderbi@200116b82c27b7003ce18a741a86a926.dip.versatel-1u1.de)
2021-01-12 08:13:11 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 08:13:55 +0100phasespace(~sar@80-89-47-117.inet.signal.no)
2021-01-12 08:16:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 08:17:18 +0100christo(~chris@81.96.113.213)
2021-01-12 08:17:36 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-12 08:17:56 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-01-12 08:18:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds)
2021-01-12 08:19:43 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-01-12 08:25:14 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) (Ping timeout: 264 seconds)
2021-01-12 08:27:15 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net)
2021-01-12 08:32:06 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 08:32:24 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-12 08:34:34 +0100haritz(~hrtz@unaffiliated/haritz) (Ping timeout: 260 seconds)
2021-01-12 08:36:02 +0100haritz(~hrtz@62.3.70.206)
2021-01-12 08:36:02 +0100haritz(~hrtz@62.3.70.206) (Changing host)
2021-01-12 08:36:02 +0100haritz(~hrtz@unaffiliated/haritz)
2021-01-12 08:37:39 +0100 <Squarism> oh, you could add constraint to instances to accomplish "pre declared instances"
2021-01-12 08:48:47 +0100howdoi(uid224@gateway/web/irccloud.com/x-yjigqeaqwzhgddjd) (Quit: Connection closed for inactivity)
2021-01-12 08:50:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-12 08:51:48 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-01-12 08:54:55 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2021-01-12 08:55:36 +0100nineonine(~nineonine@50.216.62.2)
2021-01-12 08:58:34 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 09:00:42 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl)
2021-01-12 09:01:13 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-12 09:02:49 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
2021-01-12 09:05:16 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 240 seconds)
2021-01-12 09:05:33 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-12 09:07:33 +0100turion(~turion@2a02:810d:8abf:c4a8:d43a:b21:28bf:441a)
2021-01-12 09:07:33 +0100guest111`(~user@49.5.6.87) (Read error: Connection reset by peer)
2021-01-12 09:07:44 +0100guest111`(~user@49.5.6.87)
2021-01-12 09:09:15 +0100 <dminuoso> Mmm, is there something like monad-logger but polymorphic over logstrings? I'd really like something where I can feed prettyprinter `Doc T` as logstrings
2021-01-12 09:12:03 +0100 <dminuoso> (Such that I can move layouting/rendering to one or multiple logger backends)
2021-01-12 09:17:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 09:21:08 +0100danso(~dan@23-233-104-25.cpe.pppoe.ca) (Quit: WeeChat 3.0)
2021-01-12 09:21:08 +0100knupfer(~Thunderbi@200116b82c27b7003ce18a741a86a926.dip.versatel-1u1.de) (Quit: knupfer)
2021-01-12 09:21:17 +0100knupfer(~Thunderbi@200116b82c27b7001413b21f98fb9610.dip.versatel-1u1.de)
2021-01-12 09:21:40 +0100knupfer(~Thunderbi@200116b82c27b7001413b21f98fb9610.dip.versatel-1u1.de) (Client Quit)
2021-01-12 09:21:48 +0100knupfer(~Thunderbi@200116b82c27b70054a7594c04f8dbe7.dip.versatel-1u1.de)
2021-01-12 09:21:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-12 09:27:03 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e8e1:98ae:f4d8:7ab5) (Ping timeout: 260 seconds)
2021-01-12 09:27:53 +0100nineonin_(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-12 09:30:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 09:31:10 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 272 seconds)
2021-01-12 09:33:49 +0100cgfbee(~bot@oc1.itim-cj.ro) (Ping timeout: 256 seconds)
2021-01-12 09:34:31 +0100Sgeo_(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-12 09:35:29 +0100wqsz7xn(~wqsz7xn@125-237-49-103-fibre.sparkbb.co.nz)
2021-01-12 09:37:26 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2021-01-12 09:38:29 +0100 <wqsz7xn> Hi, just wondering on this "Inside IO" article if there is a mistake here? http://wiki.haskell.org/IO_inside . Particularly for the first definition of bind in the article. They define bine to use `k` but it seems to be using `f`
2021-01-12 09:38:44 +0100 <wqsz7xn> *bind
2021-01-12 09:38:50 +0100cgfbee(~bot@oc1.itim-cj.ro)
2021-01-12 09:39:22 +0100ericsagnes(~ericsagne@2405:6580:0:5100:831f:8b96:1f06:89e1)
2021-01-12 09:41:04 +0100 <opqdonut> wqsz7xn: yes f should be k
2021-01-12 09:41:14 +0100 <wqsz7xn> sweet, thanks
2021-01-12 09:41:39 +0100 <wqsz7xn> I never know how 'official' any of these resources are. I think I'll try stick to books
2021-01-12 09:41:51 +0100 <opqdonut> yeah that doesn't look like a particularly good monad tutorial
2021-01-12 09:41:56 +0100 <wqsz7xn> but there seem to be some gems like this one
2021-01-12 09:42:15 +0100 <wqsz7xn> I'm trying to understand IO properly
2021-01-12 09:42:27 +0100 <wqsz7xn> Or rather what makes it tick
2021-01-12 09:50:45 +0100bitmagie(~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de)
2021-01-12 09:54:29 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 09:55:28 +0100juri_(~juri@79.140.122.154)
2021-01-12 09:56:58 +0100m4lvin(~m4lvin@w4eg.de) (Quit: m4lvin)
2021-01-12 09:57:15 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-12 09:57:21 +0100m4lvin(~m4lvin@w4eg.de)
2021-01-12 09:57:44 +0100turion(~turion@2a02:810d:8abf:c4a8:d43a:b21:28bf:441a) (Quit: Leaving.)
2021-01-12 09:57:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 09:58:19 +0100tabemann(~travisb@2600:1700:7990:24e0:d38d:9905:5d15:b54) (Remote host closed the connection)
2021-01-12 09:59:11 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
2021-01-12 10:01:43 +0100fendor(~fendor@77.119.128.187.wireless.dyn.drei.com)
2021-01-12 10:05:33 +0100nrh^(~hph@ip98-184-89-2.mc.at.cox.net) ()
2021-01-12 10:07:09 +0100xff0x(~xff0x@2001:1a81:5220:500:b1ba:36b1:fd0d:1ab4) (Ping timeout: 272 seconds)
2021-01-12 10:07:38 +0100xff0x(~xff0x@2001:1a81:5220:500:fff1:399c:a2f4:dff6)
2021-01-12 10:08:13 +0100banner(~banner@116-255-17-174.ip4.superloop.com)
2021-01-12 10:08:13 +0100banner(~banner@116-255-17-174.ip4.superloop.com) (Client Quit)
2021-01-12 10:09:56 +0100juri__(~juri@178.63.35.222)
2021-01-12 10:11:25 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 10:12:56 +0100juri_(~juri@79.140.122.154) (Ping timeout: 240 seconds)
2021-01-12 10:17:13 +0100 <merijn> wqsz7xn: "understanding" (as in using effectively) and "how it *actually* works" are two fairly orthogonal goals
2021-01-12 10:17:49 +0100 <merijn> And I'd highly recommend doing the first one *first* and *then* moving onto the implementation later (optionally *much* later)
2021-01-12 10:19:56 +0100bitmagie(~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-12 10:20:31 +0100 <wqsz7xn> thanks. book I'm going though goes into enough depth and covers some exercises so I should be set
2021-01-12 10:20:35 +0100tsrt^(~hph@ip98-184-89-2.mc.at.cox.net)
2021-01-12 10:21:13 +0100 <ski> you've already covered monads ?
2021-01-12 10:22:23 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2021-01-12 10:22:32 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-01-12 10:22:32 +0100juri__(~juri@178.63.35.222) (Ping timeout: 256 seconds)
2021-01-12 10:22:46 +0100 <merijn> wqsz7xn: Two relevant (and good) blog posts about IO are: https://blog.jle.im/entry/the-compromiseless-reconciliation-of-i-o-and-purity.html and https://blog.jle.im/entry/io-monad-considered-harmful.html
2021-01-12 10:23:04 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2021-01-12 10:23:24 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2021-01-12 10:23:24 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds)
2021-01-12 10:23:37 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-12 10:23:43 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2021-01-12 10:23:48 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-12 10:26:16 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 10:29:51 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-01-12 10:31:13 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 260 seconds)
2021-01-12 10:34:41 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-12 10:39:34 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 272 seconds)
2021-01-12 10:41:13 +0100 <Profpatsch> I have a record constructor Foo { a, b, c, … } and a bunch of functions that create Foo, but always set a and b to the same value.
2021-01-12 10:41:54 +0100 <Profpatsch> What’s the best way to have some ad-hoc record polymorphism? I tried defaultFoo = Foo { a = …, b = … } but of course then you get a warning that the record isn’t fully initialized
2021-01-12 10:42:12 +0100 <Profpatsch> Maybe turn off the warning for the one function?
2021-01-12 10:43:01 +0100 <Profpatsch> I mean I guess I could have an ad-hoc extra data that has all fields but the ones I default to.
2021-01-12 10:49:22 +0100 <ephemient> fooWithDefaults c ... = Foo { a = defaultA, b = defaultB, c = c, ... } -- maybe, depending on your usage
2021-01-12 10:49:24 +0100dandart(~Thunderbi@home.dandart.co.uk) (Read error: Connection reset by peer)
2021-01-12 10:49:25 +0100juri_(~juri@178.63.35.222)
2021-01-12 10:49:35 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-12 10:49:51 +0100 <ephemient> I don't know if there's a great solution to this, though
2021-01-12 10:51:08 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 10:51:15 +0100kuribas(~user@ptr-25vy0iaexs88rik0imq.18120a2.ip6.access.telenet.be)
2021-01-12 10:53:21 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-12 10:54:46 +0100 <Profpatsch> ephemient: yeah, I don’t think there is
2021-01-12 10:55:00 +0100 <Profpatsch> Now I’m running into DuplicateRecordLabel ambiguity issues …
2021-01-12 10:55:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds)
2021-01-12 10:56:03 +0100locrian9(~mike@99-153-255-194.lightspeed.irvnca.sbcglobal.net)
2021-01-12 10:57:24 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds)
2021-01-12 10:57:30 +0100Wuzzy(~Wuzzy@p5790e691.dip0.t-ipconnect.de)
2021-01-12 10:59:19 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 10:59:33 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead)
2021-01-12 11:00:29 +0100borne(~fritjof@200116b86411c700aa0a83b5acfe977f.dip.versatel-1u1.de)
2021-01-12 11:01:52 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2021-01-12 11:03:34 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
2021-01-12 11:03:50 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-12 11:04:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Ping timeout: 264 seconds)
2021-01-12 11:04:25 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 11:05:13 +0100bitmagie(~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de)
2021-01-12 11:05:16 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 256 seconds)
2021-01-12 11:06:49 +0100ddere(uid110888@gateway/web/irccloud.com/x-qihpsouqwjjvfzge) (Quit: Connection closed for inactivity)
2021-01-12 11:06:49 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Excess Flood)
2021-01-12 11:07:41 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-01-12 11:08:22 +0100 <dminuoso> Profpatsch: Is moving a and b into a sum type an option perhaps?
2021-01-12 11:08:31 +0100 <dminuoso> Oh, product type of course.
2021-01-12 11:09:01 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds)
2021-01-12 11:10:27 +0100xsperry(~as@unaffiliated/xsperry)
2021-01-12 11:10:29 +0100wqsz7xn(~wqsz7xn@125-237-49-103-fibre.sparkbb.co.nz) (Remote host closed the connection)
2021-01-12 11:10:38 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-12 11:13:38 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-12 11:14:45 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-12 11:14:58 +0100 <kuribas> Profpatsch: when I have DuplicateRecordLabels on, I usually use NamedFieldPuns or RecordWildCards to get and set the fields.
2021-01-12 11:15:52 +0100 <kuribas> lenses are also possible of course
2021-01-12 11:16:03 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 11:16:28 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-12 11:16:35 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-lyrlgqqxxqbznztz) (Quit: Connection closed for inactivity)
2021-01-12 11:17:28 +0100 <Profpatsch> kuribas: yes, I did that in the end
2021-01-12 11:17:46 +0100 <Profpatsch> mostly works, apart from some places where the field selectors need type annotations
2021-01-12 11:18:12 +0100 <kuribas> why do you need type annotations with NamedFieldPuns?
2021-01-12 11:19:28 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 272 seconds)
2021-01-12 11:19:54 +0100LKoen(~LKoen@152.172.9.109.rev.sfr.net)
2021-01-12 11:21:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds)
2021-01-12 11:23:32 +0100knupfer(~Thunderbi@200116b82c27b70054a7594c04f8dbe7.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-12 11:23:40 +0100knupfer(~Thunderbi@200116b82c27b70061a216d5084abddd.dip.versatel-1u1.de)
2021-01-12 11:23:53 +0100ArsenArsen(~Arsen@fsf/member/ArsenArsen) (Ping timeout: 265 seconds)
2021-01-12 11:23:58 +0100 <ephemient> it's because of DuplicateRecordLabel, not NamedFieldPuns
2021-01-12 11:24:03 +0100 <kuribas> Brrr, it's cold... Must be the FP winter approaching!
2021-01-12 11:24:21 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-12 11:25:13 +0100acidjnk_new(~acidjnk@p200300d0c704e7426836b2ca9660f737.dip0.t-ipconnect.de)
2021-01-12 11:25:29 +0100jmchael(~jmchael@87.112.235.234)
2021-01-12 11:26:36 +0100ADG1089__(~aditya@122.163.165.143) (Remote host closed the connection)
2021-01-12 11:27:41 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2021-01-12 11:28:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-12 11:28:51 +0100bitmagie(~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-12 11:30:35 +0100thc202(~thc202@unaffiliated/thc202)
2021-01-12 11:31:55 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2021-01-12 11:32:34 +0100ulidtko|kk(~ulidtko@194.54.80.38)
2021-01-12 11:33:01 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-12 11:33:27 +0100sigmacool[m](sigmacoolm@gateway/shell/matrix.org/x-fywwkproowrcadql)
2021-01-12 11:35:18 +0100dyeplexer(~lol@unaffiliated/terpin) (Ping timeout: 272 seconds)
2021-01-12 11:36:28 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2021-01-12 11:37:49 +0100 <wz1000> Profpatsch: I once hacked up a very "interesting" "solution" to something like this based on Generics and unsafeCoerce
2021-01-12 11:38:34 +0100 <wz1000> In my case, there was a massive record type which took a type paramater, and depending on the type parameter, most of the fields would be a default value
2021-01-12 11:38:47 +0100 <wz1000> s/default value/unit type
2021-01-12 11:39:02 +0100 <sigmacool[m]> Hi is this the right place to ask beginner question about haskell
2021-01-12 11:39:05 +0100 <sigmacool[m]> * Hi is this the right place to ask beginner question about haskell?
2021-01-12 11:39:33 +0100 <wz1000> So I wrote a function that would take the record constructor, and supply default arguments for each of the unit fields
2021-01-12 11:39:40 +0100 <ski> sigmacool[m] : yes, here is fine
2021-01-12 11:40:36 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 240 seconds)
2021-01-12 11:41:04 +0100sigmacool[m]sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/jyqritNMDynBOZYnoQTHennU/message.txt >
2021-01-12 11:43:38 +0100 <kuribas> sigmacool[m]: you can write a loop using tail recursion
2021-01-12 11:43:40 +0100 <ski> i think usually you're not supposed to be comparing floating-point values for equality
2021-01-12 11:44:42 +0100 <ski> is `Dir' an `enum' type having two values ?
2021-01-12 11:44:56 +0100 <sigmacool[m]> data Dir = R | L
2021-01-12 11:44:57 +0100 <ski> why're you dividing `cursor' by ten ?
2021-01-12 11:45:17 +0100 <ski> wouldn't the idea be to get closer to `l', rather than closer to zero ?
2021-01-12 11:45:18 +0100 <sigmacool[m]> I'm abusing the rounding logic of float to figure the limit
2021-01-12 11:45:59 +0100 <ski> i think it's quite possible that you'll never terminate, if you check for exact equality
2021-01-12 11:46:07 +0100sigmacool[m]sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/toeIlZwAmVCBDQPNDKqPGoNC/message.txt >
2021-01-12 11:46:26 +0100 <sigmacool[m]> obviously I'm not sure if this is sound, it just what I came up with
2021-01-12 11:46:29 +0100 <ski> what if `f(x)' is `y', and `f(y)' is `x', where `x' and `y' are almost exactly equal ?
2021-01-12 11:46:54 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) ()
2021-01-12 11:47:13 +0100 <ski> ok, so you tested it with `l' being zero, and didn't notice the bug therefore
2021-01-12 11:48:28 +0100 <ski> anyway, it would be pretty easy to translate your code to Haskell (e.g. like kuribas said) ..
2021-01-12 11:48:59 +0100 <sigmacool[m]> Thats where I'm stuck xD
2021-01-12 11:49:01 +0100 <ski> .. however, i'm not so sure it's a generally good idea to try to learn a language, by attempting to translate code from another language into it
2021-01-12 11:49:27 +0100 <ski> how about starting by learning the basics of the language, without thinking of translation ?
2021-01-12 11:49:28 +0100 <ephemient> somebody wrote a `converge` function in this room a couple days ago IIRC. but it's pretty easy to write by hand
2021-01-12 11:49:37 +0100 <kuribas> it's also a good idea to implement something that you know works.
2021-01-12 11:49:53 +0100 <ephemient> that being said, doing this on floating point is somewhat questionable
2021-01-12 11:50:31 +0100 <ephemient> it may be more interesting to try implementing https://en.wikipedia.org/wiki/Automatic_differentiation in Haskell, if you're up for it
2021-01-12 11:50:51 +0100 <sigmacool[m]> I read a couple of haskell book years earlier, I just want to remember some basics
2021-01-12 11:51:22 +0100 <sigmacool[m]> like is the a haskell by example book (like rust one if you know of it)
2021-01-12 11:51:44 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
2021-01-12 11:51:56 +0100 <ski> @type until
2021-01-12 11:51:58 +0100 <lambdabot> (a -> Bool) -> (a -> a) -> a -> a
2021-01-12 11:52:02 +0100 <sigmacool[m]> I like the syntax a lot thats what I'm intereted in currently, y x = 2x is really nice
2021-01-12 11:52:13 +0100 <ski> is also a looping combinator that could probably be used
2021-01-12 11:53:07 +0100plutoniix(~q@184.82.192.193) (Quit: Leaving)
2021-01-12 11:53:39 +0100 <ski> well, Haskell doesn't use that syntax, quite
2021-01-12 11:53:51 +0100 <kuribas> sigmacool[m]: except that doesn't work :-P
2021-01-12 11:53:52 +0100 <ski> it uses an explicit multiplication sign
2021-01-12 11:54:09 +0100 <sigmacool[m]> ah yes xD I get the error each time
2021-01-12 11:54:10 +0100 <sigmacool[m]> then rembere
2021-01-12 11:54:13 +0100 <sigmacool[m]> * then rember
2021-01-12 11:54:18 +0100 <sigmacool[m]> * then remeber
2021-01-12 11:54:27 +0100 <kuribas> one more
2021-01-12 11:54:28 +0100 <ski> > let y x = 2x in y 2
2021-01-12 11:54:30 +0100 <lambdabot> 2
2021-01-12 11:54:57 +0100ADG1089__(~aditya@122.163.165.143)
2021-01-12 11:55:01 +0100 <sigmacool[m]> what is this magic
2021-01-12 11:55:06 +0100 <sigmacool[m]> doesnt work in ghci
2021-01-12 11:55:23 +0100 <ski> > 2 3 4
2021-01-12 11:55:25 +0100 <lambdabot> 2
2021-01-12 11:55:43 +0100 <sigmacool[m]> > let y x = 2x in y
2021-01-12 11:55:45 +0100 <lambdabot> error:
2021-01-12 11:55:45 +0100 <lambdabot> • No instance for (Typeable t0)
2021-01-12 11:55:45 +0100 <lambdabot> arising from a use of ‘show_M39766163928361039658’
2021-01-12 11:55:47 +0100 <ephemient> I suppose you could define `instance Num a => Num (a -> a) where fromInteger = (*) . fromInteger` and then `2 x` would work
2021-01-12 11:55:51 +0100 <ephemient> that would be pretty evil though
2021-01-12 11:55:51 +0100 <ski> "magic" numeric instance for functions
2021-01-12 11:56:12 +0100 <sigmacool[m]> How do I write multiline function in ghci btw
2021-01-12 11:56:33 +0100 <sigmacool[m]> limit f l dir = |multiline here
2021-01-12 11:56:47 +0100 <ephemient> start multiline mode with :{ alone, end multiline with :}
2021-01-12 11:56:48 +0100 <ski> (a) put the defining equations (with type signature, if you include it), in a single command, separated by `;'s
2021-01-12 11:56:54 +0100 <ski> or (b), what ephemient said
2021-01-12 11:57:15 +0100 <ski> but usually best is to define them in your source file
2021-01-12 11:57:37 +0100 <sigmacool[m]> this repl programming is really nice though
2021-01-12 11:57:43 +0100nly(~user@unaffiliated/nly)
2021-01-12 11:57:51 +0100 <ski> not really that nice
2021-01-12 11:57:54 +0100 <ephemient> semicolons work, but if you end up with nested let/where etc. you need to understand the syntactic rules
2021-01-12 11:58:05 +0100 <nly> once you get IO somthing are you stuck with IO ... ?
2021-01-12 11:58:11 +0100 <ski> yes
2021-01-12 11:58:14 +0100 <nly> ah ok
2021-01-12 11:58:42 +0100 <ephemient> it is also easy to write a *.hs file and use `:load file.hs` to get it into ghci, and `:reload` to ... reload
2021-01-12 11:58:53 +0100 <ephemient> `:l` and `:r` shorthand also available
2021-01-12 11:59:22 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 272 seconds)
2021-01-12 12:00:00 +0100 <sigmacool[m]> ok thanks anyway I guess I'm a level under beginner currently xD I need to fix that first I geuss
2021-01-12 12:00:14 +0100 <sigmacool[m]> Is there an equivalant to the rust book?
2021-01-12 12:00:15 +0100 <ski> sigmacool[m] : anyway, if i wanted to translate that `limit' to Haskell, i'd define a helper function (e.g. called `loop'), taking `cursor' and `f_val' as parameters
2021-01-12 12:00:29 +0100 <ski> there are several Haskell books
2021-01-12 12:01:11 +0100skidoesn't know about "the rust book", doesn't know what it covers, what its style is, &c.
2021-01-12 12:01:26 +0100bitmagie(~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de)
2021-01-12 12:01:34 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl)
2021-01-12 12:01:41 +0100 <sigmacool[m]> ah what I mean if a beignner comes to rust there is unified answer, read the rust book
2021-01-12 12:01:49 +0100 <sigmacool[m]> * ah what I mean if a beginner comes to rust there is unified answer, read the rust book
2021-01-12 12:02:16 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 12:02:22 +0100 <ephemient> the Haskell report is canonical (but probably not good for beginners)
2021-01-12 12:02:23 +0100 <ski> (why do you repeat the same message, with ` * ' placed in front of it ? you already did this, once before)
2021-01-12 12:02:26 +0100 <ephemient> Rust doesn't have an equivalent
2021-01-12 12:02:35 +0100 <ephemient> Matrix / IRC interaction is bad
2021-01-12 12:02:56 +0100 <ski> @where PIH
2021-01-12 12:02:57 +0100 <lambdabot> "Programming in Haskell" by Graham Hutton in 2007-01-15,2016-09-01 at <http://www.cs.nott.ac.uk/~pszgmh/pih.html>
2021-01-12 12:03:06 +0100 <ski> is liked/suggested by some
2021-01-12 12:03:22 +0100 <sigmacool[m]> thanks I'll check it out
2021-01-12 12:03:27 +0100 <ski> i learned from "Haskell: The Craft of Functional Programming" by Simon Thompson
2021-01-12 12:03:46 +0100 <ski> @where HPFFP
2021-01-12 12:03:46 +0100 <lambdabot> "Haskell Programming: from first principles - Pure functional programming without fear or frustration" by Chistopher Allen (bitemyapp),Julie Moronuki at <http://haskellbook.com/>,#haskell-beginners
2021-01-12 12:04:30 +0100 <ski> is often suggested it seems. it's quite long, wordy, tries to start from very basics (doesn't assume you know anything about programming). some people like it, some not so much
2021-01-12 12:04:38 +0100 <ski> @where HTAC
2021-01-12 12:04:38 +0100 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
2021-01-12 12:04:41 +0100 <ski> @where wikibook
2021-01-12 12:04:41 +0100 <lambdabot> http://en.wikibooks.org/wiki/Haskell
2021-01-12 12:05:06 +0100 <ephemient> I learned from the Haskell report and wiki. not the easiest route, maybe only worked due to prior experience with ML, but it worked
2021-01-12 12:05:44 +0100 <ski> yea, if you've already seen one of the MLs (or Miranda or Clean, say), then the report would probably work ok
2021-01-12 12:06:09 +0100 <ski> (same for the "gentle" introduction)
2021-01-12 12:06:13 +0100cstrahan(sid36118@gateway/web/irccloud.com/x-zgbgvkugvrztuagh) (Ping timeout: 244 seconds)
2021-01-12 12:06:30 +0100darthThorik(sid39589@gateway/web/irccloud.com/x-tegdxlrjfjitucof) (Ping timeout: 246 seconds)
2021-01-12 12:06:51 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 272 seconds)
2021-01-12 12:06:52 +0100 <sigmacool[m]> thanks for all the recommendations!, it should be a good starting point so I'll work it out
2021-01-12 12:06:58 +0100darthThorik(sid39589@gateway/web/irccloud.com/x-dlhuozqdfhpxyasn)
2021-01-12 12:07:02 +0100cstrahan(sid36118@gateway/web/irccloud.com/x-eoawfxwbhlcltxpm)
2021-01-12 12:07:12 +0100 <ski> oh, and this link has exercises you could try :
2021-01-12 12:07:16 +0100 <ski> @where CIS194
2021-01-12 12:07:16 +0100 <lambdabot> https://www.seas.upenn.edu/~cis194/spring13/lectures.html
2021-01-12 12:07:36 +0100 <ski> (i think it also has some explanatory material you could check out)
2021-01-12 12:07:44 +0100 <ski> sometimes
2021-01-12 12:07:48 +0100 <ski> @where LYAH
2021-01-12 12:07:48 +0100 <lambdabot> http://www.learnyouahaskell.com/
2021-01-12 12:07:51 +0100 <ski> is suggested
2021-01-12 12:08:26 +0100 <ski> however, while it does have pretty pictures, it doesn't go that in-depth (has sometimes been likened to a four-hour long trailer), and suffers from the lack of exercises
2021-01-12 12:08:31 +0100 <sigmacool[m]> thats what I read before
2021-01-12 12:08:40 +0100 <ski> you could try looking at it, if you want to, but i'd suggest not using only that
2021-01-12 12:08:48 +0100 <sigmacool[m]> I liked it actually , it was a nice intro to functional world
2021-01-12 12:09:25 +0100 <ephemient> I don't think it's a very good intro
2021-01-12 12:09:41 +0100bitmagie(~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-12 12:10:59 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 12:11:05 +0100 <ephemient> https://haskellbook.com/ is much longer, but is both deeper and broader than LYAH
2021-01-12 12:11:15 +0100michalz(~user@185.246.204.78)
2021-01-12 12:12:02 +0100daGrevis(~daGrevis@unaffiliated/dagrevis) (Remote host closed the connection)
2021-01-12 12:13:29 +0100 <sigmacool[m]> ok appreciated!
2021-01-12 12:13:30 +0100daGrevis(~daGrevis@unaffiliated/dagrevis)
2021-01-12 12:15:36 +0100nly(~user@unaffiliated/nly) ("ERC (IRC client for Emacs 27.1)")
2021-01-12 12:15:53 +0100sigmacool[m]sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/BzhlPlNyiEWAHgMudBUSZKTp/message.txt >
2021-01-12 12:16:32 +0100sigmacool[m]sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/eULBHdxKcAazjVxTCTfMOKDL/message.txt >
2021-01-12 12:16:40 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds)
2021-01-12 12:17:01 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 12:17:30 +0100 <ski> y dir = if dir == R then True else False -- assuming you put `deriving Eq' after `data Dir = L | R'
2021-01-12 12:17:37 +0100 <ski> of course, that could be simplified to just
2021-01-12 12:17:45 +0100 <ski> y dir = dir == R
2021-01-12 12:17:53 +0100 <ephemient> Matrix lets you, but IRC doesn't support multi-line messages and doesn't support correcting messages so the interop is ugly. could you try not to?
2021-01-12 12:17:58 +0100 <ski> another way to do it, without equality comparision is
2021-01-12 12:18:05 +0100 <ski> y dir = case dir of
2021-01-12 12:18:10 +0100 <ski> R -> True
2021-01-12 12:18:15 +0100 <ski> L -> False
2021-01-12 12:18:19 +0100 <ski> or simply
2021-01-12 12:18:23 +0100 <ski> y R = True
2021-01-12 12:18:26 +0100 <ski> r L = False
2021-01-12 12:18:36 +0100 <ski> (er, should be `y', not `r')
2021-01-12 12:18:37 +0100 <sigmacool[m]> ok I see thanks!
2021-01-12 12:19:26 +0100 <ski> (btw, apparently Matrix again decided to send the same (in this case, long) message again, with ` * ' added in front of it the second time)
2021-01-12 12:20:07 +0100 <ephemient> because sigmacool[m] corrected their message, which means Matrix re-sends the entire thing to IRC
2021-01-12 12:20:08 +0100 <ski> (.. ooh, i see. i think it does that, when you go back and correct some mistake in a previous message)
2021-01-12 12:20:13 +0100 <ski> right
2021-01-12 12:20:23 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
2021-01-12 12:20:43 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds)
2021-01-12 12:21:35 +0100 <sigmacool[m]> is there some guideline on how to use this chat? (not correct message) or there is no technical issues?
2021-01-12 12:21:58 +0100 <ski> not quite sure what you're asking for
2021-01-12 12:22:03 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-12 12:22:20 +0100 <alp> respectful communications, "don't ask to ask, just ask", things like this, nothing out of the ordinary I suspect
2021-01-12 12:22:22 +0100 <ephemient> https://wiki.haskell.org/IRC_channel + general IRC etiquette
2021-01-12 12:22:28 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-12 12:22:36 +0100 <ski> the general rule in here has been "Be nice, or else.", for many years
2021-01-12 12:23:32 +0100 <sigmacool[m]> yeah not those rules (obviously those are important) but I think that my messages causes issue with irc?
2021-01-12 12:24:00 +0100 <ski> "Don't ask to ask." (and be patient), and "Try to be at least somewhat on-topic, especially if there's on-topic conversation, or if you're asked to." is also good things to keep in mind
2021-01-12 12:24:37 +0100 <ephemient> IRC does not support amending messages. IRC does not support multi-line messages. IRC does not support code formatting. hence, doing any of those things in Matrix looks ugly on the IRC side. it's readable, but ideally avoided
2021-01-12 12:25:05 +0100 <sigmacool[m]> Ok makes sense
2021-01-12 12:25:45 +0100 <dminuoso> sigmacool[m] connects via matrix though
2021-01-12 12:25:45 +0100 <ski> it's quite likely that some people won't bother to check the link that Matrix sends when you do a long message
2021-01-12 12:27:04 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 12:28:03 +0100philopsos(~caecilius@45.133.192.108)
2021-01-12 12:29:09 +0100__monty__(~toonn@unaffiliated/toonn)
2021-01-12 12:29:24 +0100 <ski> (hm, also i don't completely agree with the description of the principles on the Wiki page. in particular, i'd prefer if people did not award karma points (including to me, of course))
2021-01-12 12:30:10 +0100nineonin_(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-12 12:30:19 +0100 <sigmacool[m]> I would appreciate if someone tells me how close I am
2021-01-12 12:30:19 +0100 <sigmacool[m]> limit f l dir = let c = if dir == R then l +1 else l -1; let n_v = Nothing; in until x == n_v let x = Maybe(f(c)); return x
2021-01-12 12:30:37 +0100 <ephemient> if you use a paste service or github gist for sharing multi-line code, at least that gives you space to write a message so that people can have some idea of what it is without clicking through. if you use matrix to send it, it hides the entire thing behind a link
2021-01-12 12:30:47 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-12 12:31:18 +0100 <ski> remove middle `let', or put an `in' before it
2021-01-12 12:31:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds)
2021-01-12 12:31:51 +0100 <ski> `until' takes two functions as arguments
2021-01-12 12:32:09 +0100 <ephemient> function application binds more tightly than you seem to expect there, too
2021-01-12 12:32:23 +0100 <ski> you don't want to use `return' (`return' is not a general keyword for specifying the output value of a function call. `return' is a function)
2021-01-12 12:32:41 +0100 <ephemient> f x + y (for any operator +) always means (f x) + y, not f (x + y)
2021-01-12 12:32:51 +0100 <ephemient> (e.g. == in your code)
2021-01-12 12:33:20 +0100 <ski> you haven't declared the `x' variable
2021-01-12 12:33:40 +0100 <ski> (or rather, not before the `x == n_v' part)
2021-01-12 12:34:21 +0100 <ski> sigmacool[m] : are you familiar with function abstractions / anonymous functions / lambda expressions ?
2021-01-12 12:34:33 +0100 <sigmacool[m]> yes
2021-01-12 12:34:42 +0100 <ephemient> honestly `return` should probably be removed, if not for legacy reasons. it confuses beginners and is supplanted by `pure`
2021-01-12 12:34:51 +0100 <ephemient> *removed from the language
2021-01-12 12:34:59 +0100 <sigmacool[m]> yeah I remembered now
2021-01-12 12:35:34 +0100 <ski> perhaps you want to pass something like `\x -> x == n_v' as first parameter to `until' ?
2021-01-12 12:35:37 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds)
2021-01-12 12:36:17 +0100skithinks the confusion it causes beginners might actually be a plus
2021-01-12 12:36:32 +0100 <ephemient> or declare functions separately, e.g. let isDone x = ...; step x = ...; in until isDone step initial
2021-01-12 12:36:33 +0100 <ski> (encouraging them to let go of comparisions with other languages they might've seen)
2021-01-12 12:36:53 +0100 <ski> yes
2021-01-12 12:43:57 +0100andi-(~andi-@NixOS/user/andi-) (Ping timeout: 260 seconds)
2021-01-12 12:44:18 +0100jedws(~jedws@121.209.139.157)
2021-01-12 12:46:25 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-12 12:47:21 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it)
2021-01-12 12:48:00 +0100 <ephemient> hmm. https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/monad-of-no-return hasn't been updated in a while
2021-01-12 12:51:53 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 12:52:45 +0100 <sigmacool[m]> map (\x -> 2) x
2021-01-12 12:52:57 +0100 <sigmacool[m]> a fucntion that ignore its argument and assign a value
2021-01-12 12:53:05 +0100 <sigmacool[m]> is that how it looks?
2021-01-12 12:54:33 +0100 <lortabac> sigmacool[m]: there is no assignment in Haskell, maybe you mean "returns a value"?
2021-01-12 12:55:50 +0100 <sigmacool[m]> yes I think
2021-01-12 12:55:54 +0100 <sigmacool[m]> limit f l dir = let c = if dir == R then l +1 else l -1; n_v = Nothing; x = Just 5145641; in until (x == n_v) (Just $ f l) x
2021-01-12 12:56:13 +0100 <ski> > let xs = [2,3,5,7] in map (\x -> 2) xs
2021-01-12 12:56:15 +0100 <lambdabot> [2,2,2,2]
2021-01-12 12:56:51 +0100 <sigmacool[m]> I think I'm getting closer, that x = Just randomnum is incorrect, also I know until aplies the second argument to the third but I'm not sure how to use that to assing x to the second argument
2021-01-12 12:56:56 +0100 <ski> you're still not passing two functions to `until'
2021-01-12 12:57:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds)
2021-01-12 12:57:32 +0100 <sigmacool[m]> yeah I'm thinking about the second function
2021-01-12 12:57:38 +0100 <sigmacool[m]> the first is the cond is easy x == n_v
2021-01-12 12:57:47 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 12:57:54 +0100 <ski> `x == n_v' is a `Bool', not a function
2021-01-12 12:57:55 +0100 <sigmacool[m]> but I want the second to somehow change x value
2021-01-12 12:58:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 12:58:25 +0100 <ski> the first function should be a function that, given a state, tells whether to stop looping or not
2021-01-12 12:58:57 +0100 <ski> the second function should also take a state, and compute as result the next state (in case we're continuing looping, as determined by the first function)
2021-01-12 12:59:33 +0100 <ski> > until (\x -> x >= 1000) (\x -> 2 * x) 1
2021-01-12 12:59:35 +0100 <lambdabot> 1024
2021-01-12 13:00:03 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 13:00:09 +0100 <ski> that doubles the state, starting from the initial state `1', until it reaches at least a thousand
2021-01-12 13:01:05 +0100 <ski> the `\x ->' part declares the variable `x'
2021-01-12 13:01:26 +0100 <ski> (declares it as being the parameter of the function)
2021-01-12 13:02:55 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2021-01-12 13:03:50 +0100andi-(~andi-@NixOS/user/andi-)
2021-01-12 13:04:19 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
2021-01-12 13:05:48 +0100drbean_(~drbean@TC210-63-209-150.static.apol.com.tw)
2021-01-12 13:06:02 +0100lep-delete(~lep@94.31.81.93) (Ping timeout: 264 seconds)
2021-01-12 13:08:58 +0100ph88(~ph88@ip5f5af71a.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-01-12 13:09:24 +0100ph88(~ph88@95.90.247.26)
2021-01-12 13:11:16 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-12 13:11:26 +0100jedws(~jedws@121.209.139.157)
2021-01-12 13:14:34 +0100 <ij> are all space leaks just because of data accidentally left as used somewhere in the 'live' structures from gc perspective?
2021-01-12 13:15:45 +0100 <opqdonut> yeah, but that's a bit simplistic
2021-01-12 13:16:16 +0100 <ij> I don't know, I haven't debugged any, but I know they're around, so I want to know more
2021-01-12 13:16:18 +0100 <opqdonut> but the difference between a memory leak and a space leak is indeed that a memory leak is about not freeing unused memory, while a space leak is about inadvertently using too much memory
2021-01-12 13:16:19 +0100 <dminuoso> I think it doesn't properly describe it
2021-01-12 13:16:51 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 13:17:18 +0100 <opqdonut> there are many differen types space leaks: unevaluated thunks in a fold, unevaluated thunks in Data.Map values, hanging on to the head of a lazy sequence
2021-01-12 13:17:26 +0100 <opqdonut> I don't think there's one definition that can capture all of these
2021-01-12 13:17:32 +0100 <dminuoso> A space leak could be transient too
2021-01-12 13:17:42 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
2021-01-12 13:17:54 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 272 seconds)
2021-01-12 13:17:56 +0100 <dminuoso> (introducing unnecessary thunks, which costs heap space)
2021-01-12 13:18:09 +0100 <dminuoso> even if they are collected shortly after, it does create pressure
2021-01-12 13:18:22 +0100 <ij> meaning you have to spend time collecting it?
2021-01-12 13:18:29 +0100 <dminuoso> It depends on how you define the term, and afaik it's not well defined
2021-01-12 13:18:41 +0100 <dminuoso> ij: collecting is essentially for free in GHC GCs.
2021-01-12 13:18:48 +0100 <merijn> opqdonut: Have you heard the glorious news?
2021-01-12 13:18:57 +0100 <opqdonut> merijn: probably not
2021-01-12 13:19:01 +0100 <merijn> opqdonut: How the heavens opened up and shined their glorious light on us!
2021-01-12 13:19:13 +0100 <ij> dminuoso, probably beacuse of copy, but garbage will still cost becasuse of marking
2021-01-12 13:19:24 +0100 <merijn> opqdonut: minimum/maximum/sum/product are being made strict ;)
2021-01-12 13:19:24 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 13:19:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 13:19:56 +0100 <dminuoso> ij: We dont have marking exactly
2021-01-12 13:20:06 +0100 <dminuoso> ij: In the old GC, we just copy live objects.
2021-01-12 13:20:10 +0100 <merijn> "And god looked upon it and said: 'Fucking finally...'"
2021-01-12 13:20:12 +0100 <opqdonut> merijn: right, I had actually heard about this. IME strictness analysis has made them strict for me when needed
2021-01-12 13:20:14 +0100 <dminuoso> Anything not copied gets lost
2021-01-12 13:20:29 +0100 <merijn> ij: There is no marking
2021-01-12 13:20:30 +0100 <dminuoso> But yeah, it adds gc pressure this way
2021-01-12 13:20:42 +0100 <merijn> ij: GHC doesn't use mark&sweep
2021-01-12 13:20:59 +0100 <ij> merijn, dminuoso, I know it's copying, I just didn't know a better word
2021-01-12 13:21:03 +0100 <merijn> (Well, I guess the new GC does do a form of mark&sweep, but very few people use that)
2021-01-12 13:21:29 +0100 <merijn> ij: Garbage isn't copied so garbage is free in GHC's collector
2021-01-12 13:21:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 258 seconds)
2021-01-12 13:21:38 +0100 <merijn> ij: In fact, that's one of the reasons behind its design
2021-01-12 13:21:44 +0100 <dminuoso> merijn: You misunderstand
2021-01-12 13:21:53 +0100 <merijn> lazy evaluation produces *lots* of garbage
2021-01-12 13:21:55 +0100Entertainment(~entertain@104.246.132.210)
2021-01-12 13:22:08 +0100 <dminuoso> merijn: Im confident by "garbage" they meant "it's not needed, but something keeps it alive"
2021-01-12 13:22:11 +0100 <ij> ah, of course!
2021-01-12 13:22:37 +0100ggole(~ggole@2001:8003:8119:7200:541f:f655:3fda:a8bb)
2021-01-12 13:22:41 +0100 <ij> only live data spends time, I didn't understand it right the first time
2021-01-12 13:23:01 +0100lep-delete(~lep@94.31.81.93)
2021-01-12 13:23:39 +0100 <dminuoso> But producing garbage is still not free, since you still pay for allocations
2021-01-12 13:23:51 +0100 <merijn> dminuoso: barely :p
2021-01-12 13:23:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-01-12 13:24:28 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2021-01-12 13:25:03 +0100 <merijn> ij: The simplest explanation of a space leak is: Suppose we wanna sum 5 billion numbers. Do we *first* wanna allocate 5 billion additions worth of thunks (huge amounts of memory) and then when they get forced evaluate them to a single Int
2021-01-12 13:25:03 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 13:25:21 +0100 <merijn> ij: Or do we just wanna force it immediately, never allocating any thunks and only ever having 1 Int?
2021-01-12 13:25:34 +0100 <ij> makes sense
2021-01-12 13:25:39 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-12 13:25:50 +0100 <merijn> ij: And generally the answer is never "we want 5 billion thunks" when it comes to stuff like sum/product :p
2021-01-12 13:26:04 +0100 <merijn> ij: That's what people generally refer to with "space leak"
2021-01-12 13:26:10 +0100 <opqdonut> that's merely one (but fairly common) class of space leak
2021-01-12 13:26:43 +0100 <ij> opqdonut, but it's just a simple explanation that might serve as good analogy to all others
2021-01-12 13:27:04 +0100 <opqdonut> another one is doing something like `sum longLazySequence / length longLazySequence`. Even if sum and length don't allocate excess thunks, the problem is that longLazySequence stays in memory
2021-01-12 13:27:39 +0100 <ij> couldn't this specific one be optimized?
2021-01-12 13:27:50 +0100 <opqdonut> this latter one is a hard problem in general
2021-01-12 13:28:29 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 13:28:29 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-12 13:28:36 +0100 <merijn> ij: Well, how would you detect it?
2021-01-12 13:28:53 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-12 13:31:19 +0100 <ij> merijn, well they both traverse lLS forward at the same time
2021-01-12 13:31:46 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2021-01-12 13:31:53 +0100 <merijn> ij: Ok, so we "just" need a way for the compiler to recognise any traversal and anything that resembles a sequence?
2021-01-12 13:32:04 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-12 13:32:25 +0100 <opqdonut> and sometimes it might be the wanted behaviour. say longLazyList is some set of data and you do lots of different statistics over it
2021-01-12 13:32:30 +0100 <opqdonut> keeping it in memory might be what you want
2021-01-12 13:33:37 +0100 <ij> merijn, well, ghc knows already that sum and length separately don't need to hold on to the whole list, so they could just be traversed at the same time
2021-01-12 13:33:48 +0100 <merijn> ij: How does it know that?
2021-01-12 13:34:00 +0100 <ij> I'm not sure, but it is true, right?
2021-01-12 13:34:05 +0100 <merijn> No?
2021-01-12 13:34:26 +0100 <merijn> At least, not in any way I can see
2021-01-12 13:35:08 +0100 <opqdonut> I think you could define sum, length and / such that multiple traversals automatically get fused
2021-01-12 13:35:09 +0100 <merijn> It's a compiler, it doesn't "know" anything. It just follows patterns "we" have defined/programmed. So you need to be able to define *exactly* what it is that it should do.
2021-01-12 13:35:38 +0100 <opqdonut> but that would only help with this case, another case would be computing length and sum in very different parts of the code, without any direct link between them
2021-01-12 13:35:44 +0100 <ij> merijn, it's a two way street – what we know we can figure out if we can make computers know
2021-01-12 13:35:57 +0100 <ij> but alright sum [0..] is consuming memory
2021-01-12 13:36:02 +0100sheaf(~sheaf@2a01:cb19:80cc:7e00:c198:142c:b408:800e)
2021-01-12 13:36:04 +0100 <merijn> ij: That part turns out to be *surprisingly* hard :p
2021-01-12 13:36:08 +0100mirrorbird(~psutcliff@2a00:801:446:b70b:607:9995:9930:4d27)
2021-01-12 13:36:20 +0100 <opqdonut> patterns like iteratees/pipes are aimed at guaranteeing constant memory usage, i.e. not keeping the whole data in memory
2021-01-12 13:36:25 +0100 <merijn> ij: There are many things *I* know that I don't know how to implement in a compiler
2021-01-12 13:36:34 +0100 <ij> I believe that!
2021-01-12 13:37:05 +0100 <ij> I thought sum [0..] would only keep a single (but probably increasingly bigger) integer
2021-01-12 13:38:08 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-12 13:38:20 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-zfmzrhpcnpxmksjd)
2021-01-12 13:38:39 +0100 <__monty__> Wasn't this fixed by using strict folds instead?
2021-01-12 13:38:55 +0100 <merijn> __monty__: It will be
2021-01-12 13:38:56 +0100geekosaur(ac3a547a@172.58.84.122)
2021-01-12 13:39:12 +0100 <merijn> __monty__: But the question wasn't "why can't GHC just optimise that?"
2021-01-12 13:39:22 +0100 <dminuoso> ij: GHC does have a strictness analyzer, that determines whether it can add strictness (when it knows some value will definitely be used)
2021-01-12 13:39:25 +0100 <merijn> Which is, of course, because we don't know how to define "that"
2021-01-12 13:39:28 +0100 <dminuoso> ij: It's just... very poor and lackluster.
2021-01-12 13:40:18 +0100 <ij> merijn, :) I understand (it's not that I expect it to be easy)
2021-01-12 13:40:35 +0100shf(~sheaf@2a01:cb19:80cc:7e00:ed22:5b3a:3fa:a0b7) (Ping timeout: 272 seconds)
2021-01-12 13:43:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 13:44:51 +0100 <ij> in fact, I don't know anything about compilers
2021-01-12 13:47:42 +0100Bergle_1(~Bergle_4@101.165.90.119) (Read error: Connection reset by peer)
2021-01-12 13:48:01 +0100 <dminuoso> In principle they aren't complicated.
2021-01-12 13:49:23 +0100 <dminuoso> The main principle by which GHC's simplifier gains performance, is just inlining.
2021-01-12 13:49:32 +0100 <dminuoso> So a lot of the transformation GHC does, is to facilitate more inlining.
2021-01-12 13:49:39 +0100Bergle_1(~Bergle_4@101.165.90.119)
2021-01-12 13:49:47 +0100 <dminuoso> (It does plenty of other things, but the main concern is just that)
2021-01-12 13:50:01 +0100 <kuribas> and inlining is done to facilitate more optimizations
2021-01-12 13:56:08 +0100 <kuribas> like deforestation
2021-01-12 13:57:23 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 13:57:43 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-uvziyudvcbiadite)
2021-01-12 14:01:19 +0100Tario(~Tario@201.192.165.173)
2021-01-12 14:02:43 +0100urodna(~urodna@unaffiliated/urodna)
2021-01-12 14:02:44 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-12 14:03:09 +0100jedws(~jedws@121.209.139.157)
2021-01-12 14:04:25 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds)
2021-01-12 14:10:13 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 14:11:01 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
2021-01-12 14:11:22 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-12 14:11:52 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 14:13:35 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
2021-01-12 14:13:59 +0100sheaf(~sheaf@2a01:cb19:80cc:7e00:c198:142c:b408:800e) (Read error: Connection reset by peer)
2021-01-12 14:14:17 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2021-01-12 14:15:30 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-12 14:17:56 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-01-12 14:21:34 +0100mastarija(~mastarija@188.252.197.30)
2021-01-12 14:25:37 +0100jedws(~jedws@121.209.139.157)
2021-01-12 14:25:51 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-01-12 14:26:16 +0100LKoen(~LKoen@152.172.9.109.rev.sfr.net) (Remote host closed the connection)
2021-01-12 14:26:41 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 14:27:02 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-12 14:27:31 +0100jedws(~jedws@121.209.139.157) (Client Quit)
2021-01-12 14:29:23 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-12 14:29:36 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-01-12 14:29:36 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2021-01-12 14:29:36 +0100neiluj(~jco@unaffiliated/neiluj)
2021-01-12 14:31:11 +0100cmcma20(~cmcma20@l37-192-2-125.novotelecom.ru)
2021-01-12 14:31:32 +0100 <cmcma20> singletons ux is infuriating
2021-01-12 14:31:36 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 14:31:54 +0100 <merijn> cmcma20: Well yes, there's a reason why the original paper was called Hasochism
2021-01-12 14:31:57 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-12 14:32:14 +0100jedws(~jedws@121.209.139.157)
2021-01-12 14:32:14 +0100son0p(~son0p@181.136.122.143)
2021-01-12 14:32:18 +0100 <merijn> Fortunately, I have one simple trick for dealing with this!
2021-01-12 14:32:22 +0100 <cmcma20> I've tried to buy into it only because it has some TH stuff
2021-01-12 14:32:31 +0100 <cmcma20> and it doesn't even work in my case
2021-01-12 14:32:43 +0100LKoen(~LKoen@152.172.9.109.rev.sfr.net)
2021-01-12 14:32:43 +0100 <cmcma20> merijn: what trick?
2021-01-12 14:32:50 +0100 <merijn> cmcma20: I don't use singletons ;)
2021-01-12 14:33:55 +0100 <cmcma20> merijn: do you feel the void breathing into your neck when your types have values that don't represent anything meaningful in your semantics?
2021-01-12 14:33:58 +0100 <merijn> The gospel of Merijn: Dependent Haskell is probably a kinda bad idea and the sooner you accept this, the happier you will be writing Haskell :)
2021-01-12 14:34:28 +0100 <cmcma20> fix: The Void
2021-01-12 14:35:34 +0100 <merijn> cmcma20: No, because I try to avoid types that do not represent meaningful values :p
2021-01-12 14:35:34 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer)
2021-01-12 14:35:38 +0100niekvand_(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 14:36:16 +0100 <cmcma20> ah can I borrow some of your wisdom because my is clearly lacking
2021-01-12 14:36:45 +0100 <merijn> Dependent Types are cool. If you have language designed having them from the beginning. I fear that many people who think -XDependentHaskell will magically make dependent types/singletons "not suck" are overly optimistic
2021-01-12 14:36:46 +0100olligobber1(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-12 14:37:08 +0100 <merijn> cmcma20: I mean, there's nothing wrong with fucking around with dependent types and what not, but just, like, download Idris or Agda then :p
2021-01-12 14:37:25 +0100 <merijn> You'll be infinitely happier!
2021-01-12 14:37:37 +0100 <cmcma20> merijn: I had been! But this project is in Haskell.
2021-01-12 14:37:58 +0100 <merijn> cmcma20: Ah...someone else succumbed to Dependent Haskell...
2021-01-12 14:38:07 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds)
2021-01-12 14:38:31 +0100 <cmcma20> Agda and Idris are young but irrelevant in indstry
2021-01-12 14:38:36 +0100 <merijn> In that case I recommend "rolling up a newspaper, thwapping them on the nose and putting them in timeout until they come to their senses" :)
2021-01-12 14:38:48 +0100 <__monty__> Agda's not irrelevant.
2021-01-12 14:39:02 +0100 <merijn> Hear ye, the second Gospel of Merijn: Dependent Haskell is also irrelevant in industry ;)
2021-01-12 14:39:07 +0100 <__monty__> It's just used as a proof assistant rather than an implementation language.
2021-01-12 14:39:37 +0100 <kuribas> stronger = more specific?
2021-01-12 14:39:48 +0100 <cmcma20> I mean industry like "medium sized corpos tryna' get some money", not "tech gargantuas devouring the world" or "sipping tea in the ivory tower" stuff
2021-01-12 14:41:05 +0100 <__monty__> kuribas: I don't know the context but I think there's kind of a variant/contravariant parallel. A statement is stronger if it either tells you more or if it tells you the same property applies to more objects.
2021-01-12 14:41:25 +0100 <merijn> cmcma20: Dependent Haskell is *very much* sipping tea in the ivory tower stuff :p
2021-01-12 14:41:29 +0100 <__monty__> cmcma20: I think IOHK is still firmly in the former category : )
2021-01-12 14:41:35 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2021-01-12 14:41:46 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-12 14:41:48 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th)
2021-01-12 14:41:57 +0100 <kuribas> __monty__: is Monad stronger than Applicative?
2021-01-12 14:42:16 +0100 <cmcma20> merijn: and what about Galois? They've done a ton of singletons for something defense related I guess
2021-01-12 14:42:22 +0100 <__monty__> Yes, because Monad implies Applicative.
2021-01-12 14:42:53 +0100 <kuribas> right
2021-01-12 14:42:53 +0100 <__monty__> Galois is more in that too big to fail category afaict.
2021-01-12 14:43:22 +0100 <__monty__> kuribas: It's stronger in the former sense, it tells you more about an object.
2021-01-12 14:43:26 +0100 <merijn> I feel like imitating Galois is like imitating Facebook/Google
2021-01-12 14:43:39 +0100 <merijn> What works for them is far from guaranteed to work for you
2021-01-12 14:44:00 +0100 <cmcma20> merijn: most definitely
2021-01-12 14:45:25 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2021-01-12 14:45:28 +0100 <ski> kuribas : stronger statements imply weaker ones
2021-01-12 14:45:40 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-12 14:46:00 +0100 <kuribas> ok, that makes sense
2021-01-12 14:46:09 +0100 <merijn> As much as I dislike both the name and rhetoric around "boring Haskell" I do very much feel that the influx of new Haskell programmers in the past decade have been overly obsessed with type level stuff. Type level stuff is like spices. A little goes a long way and you gotta make sure the cost is worth the benefit
2021-01-12 14:46:30 +0100 <merijn> Many of these type level death machines can be replaced by "just writing a bit of code"
2021-01-12 14:46:33 +0100 <ski> e.g. `forall a. P a -> Q a' implies `(forall a. P a) -> (forall a. Q a)'
2021-01-12 14:46:50 +0100 <ski> therefore the former is stronger, and the latter weaker
2021-01-12 14:49:33 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 14:49:59 +0100silvers-(~silvers-@178.162.209.171)
2021-01-12 14:50:14 +0100drbean_(~drbean@TC210-63-209-150.static.apol.com.tw) (Ping timeout: 260 seconds)
2021-01-12 14:50:46 +0100 <kuribas> merijn: word
2021-01-12 14:51:01 +0100 <kuribas> merijn: I feel there's a lot of XY in it.
2021-01-12 14:51:14 +0100 <merijn> kuribas: Well also just naive enthusiasm
2021-01-12 14:51:20 +0100 <cmcma20> merijn: Mostly agree with you. Yet there are some things that are impossible to do without type trickery.
2021-01-12 14:51:25 +0100 <merijn> "Types are great, therefore *more* types must be better!"
2021-01-12 14:52:02 +0100ski. o O ( "A little knowledge is dangerous." ? )
2021-01-12 14:53:37 +0100silvers-(~silvers-@178.162.209.171) (Remote host closed the connection)
2021-01-12 14:54:40 +0100 <kuribas> cmcma20: some things also don't need to be done often...
2021-01-12 14:54:43 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-12 14:54:46 +0100 <kuribas> like getting 100% type safety
2021-01-12 14:55:00 +0100 <kuribas> or coding business logic into types.
2021-01-12 14:55:11 +0100 <__monty__> I like people experimenting/pushing the envelope on what a type system can do and haskell seems like a great playground for this. I see boring haskell more as a way to indicate what is practical and what may be interesting but comes at considerable cost.
2021-01-12 14:55:29 +0100 <kuribas> exactly
2021-01-12 14:55:36 +0100 <merijn> __monty__: I dislike boring Haskell, because a lot of extensions do have a lot of use
2021-01-12 14:55:43 +0100 <__monty__> I don't want boring haskell to be a "movement" of people trying to discourage such experimentation.
2021-01-12 14:55:45 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
2021-01-12 14:55:50 +0100 <merijn> But you gotta think hard on whether the cost is worth the benefit
2021-01-12 14:56:16 +0100 <merijn> Like, are GADTs *extremely* useful? Yes! Should you use them everywhere? Probably not!
2021-01-12 14:56:25 +0100 <cmcma20> merijn: And spice must flow. Once you've had a taste of deptypes you sometimes get stuck not being able to bite the bullet and write code in a simple way.
2021-01-12 14:57:10 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 14:57:32 +0100 <cmcma20> Then you find yourself in a sea of pain because there's no language with a linear dependent homotopy type theory...
2021-01-12 14:57:49 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
2021-01-12 14:59:00 +0100 <kuribas> merijn: yeah, especially many of the little syntax improvement extensions.
2021-01-12 14:59:08 +0100ADG1089__(~aditya@122.163.165.143) (Remote host closed the connection)
2021-01-12 14:59:16 +0100 <kuribas> merijn: they take 10 seconds to understand.
2021-01-12 14:59:17 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds)
2021-01-12 15:00:51 +0100 <kuribas> merijn: and it still doesn't come close to the synactic complexity of C++
2021-01-12 15:01:09 +0100 <cmcma20> kuribas: Understanding haskell extensions is not always composable though. When you have 20 extensions in your project, you know that understanding it won't take 200 extr seconds.
2021-01-12 15:01:10 +0100 <merijn> kuribas: Because that's impossible :p
2021-01-12 15:01:21 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2021-01-12 15:01:55 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
2021-01-12 15:01:56 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-12 15:03:18 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-12 15:04:20 +0100 <kuribas> cmcma20: point them to here: http://dev.stephendiehl.com/hask/#language-extensions
2021-01-12 15:04:45 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-01-12 15:04:59 +0100 <kuribas> cmcma20: I just have a hard time to believe that a project will fail because of enabling one of these.
2021-01-12 15:05:31 +0100 <kuribas> rather than using them when there is no need or improvement.
2021-01-12 15:06:24 +0100 <kuribas> I still wonder what this guy means with "FP winter"
2021-01-12 15:06:42 +0100 <kuribas> https://twitter.com/smdiehl/status/1348349511706554368
2021-01-12 15:07:05 +0100 <cmcma20> it's a reference to AI winter, i.e. end of the hype cycle
2021-01-12 15:07:12 +0100 <merijn> He already wrote a huge thread about that
2021-01-12 15:07:17 +0100 <merijn> but yeah, AI Winter reference
2021-01-12 15:07:39 +0100ClaudiusMaximus(~claude@196.67.6.51.dyn.plus.net)
2021-01-12 15:07:44 +0100ClaudiusMaximus(~claude@196.67.6.51.dyn.plus.net) (Changing host)
2021-01-12 15:07:44 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2021-01-12 15:07:56 +0100ystael(~ystael@209.6.50.55)
2021-01-12 15:08:09 +0100 <cmcma20> winters are beneficial in any area because the unfits perish
2021-01-12 15:09:06 +0100 <cmcma20> I still hope for a generl programming winter
2021-01-12 15:09:17 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!)
2021-01-12 15:09:56 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-01-12 15:10:02 +0100ericsagnes(~ericsagne@2405:6580:0:5100:831f:8b96:1f06:89e1) (Ping timeout: 260 seconds)
2021-01-12 15:12:23 +0100 <kuribas> right. In that case I hope for FP winter as well :)
2021-01-12 15:12:46 +0100mastarija(~mastarija@188.252.197.30) (Quit: Leaving)
2021-01-12 15:13:46 +0100 <cmcma20> wasn't there a suggestion to make a metaextension that enables a bunch of them?
2021-01-12 15:14:14 +0100 <cmcma20> so you can just -XFancyHaskell -XWizardHaskell and be fine
2021-01-12 15:14:47 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-12 15:15:28 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-12 15:15:50 +0100knupfer(~Thunderbi@200116b82c27b70061a216d5084abddd.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2021-01-12 15:18:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-12 15:19:20 +0100 <ski> would people agree on which extensions to put into those ?
2021-01-12 15:19:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 15:20:38 +0100 <cmcma20> ski: most probably, Haskell's no tower of Babel
2021-01-12 15:21:24 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-01-12 15:21:25 +0100LKoen(~LKoen@152.172.9.109.rev.sfr.net) (Remote host closed the connection)
2021-01-12 15:21:41 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 265 seconds)
2021-01-12 15:22:20 +0100ericsagnes(~ericsagne@2405:6580:0:5100:7525:3d36:8cf7:15dd)
2021-01-12 15:23:28 +0100zariuq(~zar@fw1.ciirc.cvut.cz) (Remote host closed the connection)
2021-01-12 15:23:39 +0100zariuq(~zar@fw1.ciirc.cvut.cz)
2021-01-12 15:24:04 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-01-12 15:24:06 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 15:26:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 15:28:35 +0100RedNifre(~michael@dslb-002-203-247-083.002.203.pools.vodafone-ip.de)
2021-01-12 15:29:13 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 15:30:03 +0100berberman_(~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
2021-01-12 15:30:12 +0100 <RedNifre> Heya. What's the Haskell way of doing some sort of stream that emits values, like Rx reactive coroutine flow channel stuff?
2021-01-12 15:30:26 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-12 15:32:03 +0100 <dminuoso> RedNifre: Depends on the exact usage case.
2021-01-12 15:32:09 +0100 <dminuoso> We have a plethora of libraries in that domain
2021-01-12 15:32:19 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-01-12 15:32:30 +0100ArsenArsen(~Arsen@fsf/member/ArsenArsen)
2021-01-12 15:32:49 +0100alx741(~alx741@186.178.110.185) (Quit: alx741)
2021-01-12 15:32:55 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-12 15:33:44 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 15:33:46 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-01-12 15:34:15 +0100lep-deleteGuest18945
2021-01-12 15:34:31 +0100alx741(~alx741@186.178.110.185)
2021-01-12 15:35:28 +0100zariuq(~zar@fw1.ciirc.cvut.cz) (Read error: Connection reset by peer)
2021-01-12 15:35:37 +0100piezoid(~piezoid@82-64-150-32.subs.proxad.net)
2021-01-12 15:35:40 +0100zariuq(~zar@fw1.ciirc.cvut.cz)
2021-01-12 15:36:00 +0100Guest18945lep-delete
2021-01-12 15:37:04 +0100 <kuribas> RedNifre: conduit, streamly, pipes, etc...
2021-01-12 15:37:08 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-01-12 15:37:44 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
2021-01-12 15:37:56 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-12 15:38:49 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-12 15:39:01 +0100darjeeling_(~darjeelin@115.215.40.96) (Ping timeout: 246 seconds)
2021-01-12 15:39:13 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 264 seconds)
2021-01-12 15:39:56 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-01-12 15:40:48 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-12 15:41:26 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-12 15:43:27 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-01-12 15:44:44 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 15:44:55 +0100zariuq(~zar@fw1.ciirc.cvut.cz) (Read error: Connection reset by peer)
2021-01-12 15:45:09 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-12 15:45:26 +0100geekosaur(ac3a547a@172.58.84.122) (Quit: Connection closed)
2021-01-12 15:45:39 +0100LKoen(~LKoen@152.172.9.109.rev.sfr.net)
2021-01-12 15:45:49 +0100zariuq(~zar@fw1.ciirc.cvut.cz)
2021-01-12 15:46:24 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-01-12 15:46:55 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-12 15:47:51 +0100niko(~niko@freenode/staff/ubuntu.member.niko) (Ping timeout: 633 seconds)
2021-01-12 15:51:55 +0100darjeeling_(~darjeelin@122.245.120.137)
2021-01-12 15:52:23 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-01-12 15:52:33 +0100sigmacool[m]sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/kHwSqgEQYYLfxSLBNjoCeBDt/message.txt >
2021-01-12 15:52:40 +0100is_null(~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 246 seconds)
2021-01-12 15:53:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds)
2021-01-12 15:53:52 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
2021-01-12 15:54:30 +0100 <ski> would seem to do the same as the previous code
2021-01-12 15:54:37 +0100 <cmcma20> RedNifre: what is your usecase?
2021-01-12 15:54:46 +0100 <ski> (there is no need to name `nv' in `limit')
2021-01-12 15:55:05 +0100 <ski> cmcma20 : translate <https://matrix.org/_matrix/media/r0/download/matrix.org/jyqritNMDynBOZYnoQTHennU/message.txt> to Haskell
2021-01-12 15:55:52 +0100 <ski> oh actually, sorry. i didn't notice you were responding to another message/person
2021-01-12 15:56:38 +0100 <ski> sigmacool[m] : if you declare `r' as a function local to `limit' (e.g. using `where'), then you don't need to pass around the `f' parameter to `r'
2021-01-12 15:57:28 +0100 <sigmacool[m]> I thought about it but I didnt know where
2021-01-12 15:57:45 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 15:57:50 +0100 <ski> (i'd probably define `c' in the `where' as well)
2021-01-12 15:58:02 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-12 15:58:07 +0100 <sigmacool[m]> how would that look
2021-01-12 15:58:14 +0100 <RedNifre> cmcma20: well, my usecase just evaporated in the last meeting, but it was this: Imagine you have a GUI that has an Editor that is fixed to a month. You now want to switch the month in the GUI, which requires a new Editor, which must be created asynchronously. The GUI also has a "do something with the Editor of this month" button. If you update the GUI instantly, the button must not be able to get the old
2021-01-12 15:58:15 +0100 <ski> oh, also ..
2021-01-12 15:58:16 +0100 <RedNifre> editor, if the new one hasn't arrived yet, it would have to wait.
2021-01-12 15:58:17 +0100poljar1(~poljar@93-139-24-194.adsl.net.t-com.hr) (Remote host closed the connection)
2021-01-12 15:58:22 +0100 <ski> .. don't use `do' like that
2021-01-12 15:58:42 +0100 <dminuoso> Mmm, wow the OOM killer just rampaged through my system...
2021-01-12 15:58:43 +0100 <sigmacool[m]> I'm using do just to use multiline I think?
2021-01-12 15:58:47 +0100 <dminuoso> And I think HLS was the cause...
2021-01-12 15:58:48 +0100poljar1(~poljar@93-139-24-194.adsl.net.t-com.hr)
2021-01-12 15:58:55 +0100 <RedNifre> I was looking into solutions in Kotlin, but I thought it might help me understanding it in Haskell first, because it's a much clearer language to me.
2021-01-12 15:58:56 +0100 <dminuoso> interestingly, it took down my X server..
2021-01-12 15:59:41 +0100dyeplexer(~lol@unaffiliated/terpin)
2021-01-12 15:59:58 +0100 <ski> sigmacool[m] : you're not actually using any monad here, so it's arguably confusing to use `do'
2021-01-12 16:00:23 +0100 <sigmacool[m]> without do It complains when I split it into multiple lines
2021-01-12 16:00:39 +0100 <ski> just add `in', after the `let' binding
2021-01-12 16:00:46 +0100 <ski> (or use `where')
2021-01-12 16:02:03 +0100 <RedNifre> So I guess the way to do it with pipes/conduits would be that when you update the Editor, you push a Nothing into the conduit/pipe and asynchronously create the new Editor, then push it as a Just editor into the pipe/conduit and the consuming code would... start listening to the pipe... and wait for the first Just to get the Editor? Or what?
2021-01-12 16:02:09 +0100 <ski> limit f l d = r c Nothing
2021-01-12 16:02:12 +0100 <ski> where
2021-01-12 16:02:21 +0100 <ski> c = ..d..l..
2021-01-12 16:02:32 +0100 <ski> r c nv f
2021-01-12 16:02:35 +0100 <sigmacool[m]> ah that looks nice
2021-01-12 16:02:42 +0100 <ski> | Just x == nv = x
2021-01-12 16:03:02 +0100 <ski> | otherwise = r (c / 10) (Just x)
2021-01-12 16:03:09 +0100 <ski> where
2021-01-12 16:03:16 +0100 <ski> x = f c
2021-01-12 16:03:39 +0100 <ski> (er, should be `r c nv', not `r c nv f')
2021-01-12 16:04:24 +0100 <ski> (i might also rename the first `c' to `c0', to make it clearer that it's the initial value for the later `c')
2021-01-12 16:05:03 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-12 16:05:09 +0100 <ski> (an alternative could be to fold/inline it ..)
2021-01-12 16:05:24 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 16:05:29 +0100phasespace(~sar@80-89-47-117.inet.signal.no) (Ping timeout: 260 seconds)
2021-01-12 16:05:31 +0100 <sigmacool[m]> the problem is that the initial assignment of c should be outside of the recursion
2021-01-12 16:06:05 +0100 <ski> it's a binding, not an assignment. and it already is outside of the recursion
2021-01-12 16:06:24 +0100 <ski> (also, you reproduced the bug in the Haskell version)
2021-01-12 16:06:30 +0100 <merijn> ski: You shadowed 'c'?
2021-01-12 16:06:39 +0100 <ski> yes
2021-01-12 16:06:54 +0100 <ski> (hence why i suggested a rename to `c0')
2021-01-12 16:07:42 +0100 <ski> (there already were two distinct `c' in the original source. me making the definition of `r' local to `limit' introduced the shadowing)
2021-01-12 16:09:07 +0100darjeeling_(~darjeelin@122.245.120.137) (Ping timeout: 246 seconds)
2021-01-12 16:10:00 +0100 <sigmacool[m]> thanks @ski that looks better!
2021-01-12 16:10:27 +0100 <ski> fwiw, `Just x == nv' could be replaced by `all (x ==) nv' or `maybe False (x ==) nv' .. not sure whether you think any of those are clearer
2021-01-12 16:10:47 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat)
2021-01-12 16:10:57 +0100 <ski> (er, actually, that would be `any', not `all' ..)
2021-01-12 16:11:04 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 16:11:19 +0100 <sigmacool[m]> nope I can't parse those xD
2021-01-12 16:11:43 +0100 <ski> > all (> 3) [5,7]
2021-01-12 16:11:45 +0100 <lambdabot> True
2021-01-12 16:11:48 +0100 <ski> > all (> 3) [5,2,7]
2021-01-12 16:11:50 +0100 <lambdabot> False
2021-01-12 16:11:51 +0100 <ski> > all (> 3) []
2021-01-12 16:11:54 +0100 <lambdabot> True
2021-01-12 16:11:58 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-01-12 16:12:02 +0100 <ski> > all (> 3) (Just 5)
2021-01-12 16:12:05 +0100 <lambdabot> True
2021-01-12 16:12:07 +0100 <ski> > all (> 3) Nothing
2021-01-12 16:12:10 +0100 <lambdabot> True
2021-01-12 16:12:15 +0100 <ski> > any (> 3) (Just 5)
2021-01-12 16:12:17 +0100 <lambdabot> True
2021-01-12 16:12:18 +0100 <ski> > any (> 3) Nothing
2021-01-12 16:12:20 +0100 <lambdabot> False
2021-01-12 16:12:39 +0100 <sigmacool[m]> ah so you can iterate over Maybe
2021-01-12 16:12:44 +0100 <sigmacool[m]> same with option in rust
2021-01-12 16:12:55 +0100 <sigmacool[m]> it always seems weird but its useful
2021-01-12 16:13:20 +0100 <ski> `all' checks that all elements of a collection satisfy a predicate. `any' checks that there exists at least one element that does. a `Maybe T' can be thought of as a collection that contains at most one `T'
2021-01-12 16:14:34 +0100 <ski> it's occasionally useful to use e.g. `for_ mx print', which is `print x', if `mx = Just x', and which does nothing in case `mx = Nothing'
2021-01-12 16:14:59 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-01-12 16:15:06 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection)
2021-01-12 16:15:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35)
2021-01-12 16:15:36 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-12 16:15:47 +0100 <sigmacool[m]> whats this trick maybe False (x ==)
2021-01-12 16:15:54 +0100 <sigmacool[m]> I replaced with True and it still works
2021-01-12 16:16:00 +0100 <ski> `for_' in this case would have type `Maybe T -> (T -> IO ()) -> IO ()', where `T' is the type of `x' (so `mx' has type `Maybe T')
2021-01-12 16:16:35 +0100 <ski> `maybe' is just a quick way to do something with `x', in case you get `Just x', and to specify a default result, in case you get `Nothing'
2021-01-12 16:17:19 +0100 <ski> so `maybe False (x ==) nv' says to answer `False' if `nv = Nothing', and to check `x == v', in case `nv = Just v'
2021-01-12 16:18:08 +0100 <ski> in your code you had `Just x == nv' .. in case `nv = Nothing', that check will be `False', which was why i used `False' with `maybe' above
2021-01-12 16:18:33 +0100 <sigmacool[m]> I see thanks
2021-01-12 16:18:38 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2021-01-12 16:19:29 +0100 <ski> (so, replacing it with `True' in place of `False' will mean that your recursion will terminate immediately, since the initial value of `nv' is `Nothing' ..)
2021-01-12 16:19:32 +0100dfreedm(~dfreedm@137.63.71.51)
2021-01-12 16:19:48 +0100 <cmcma20> RedNifre: Doesn't look like a something to discuss without delving into details. Have you modeled your system? Like not in Haskell but any other language etc?
2021-01-12 16:20:25 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-12 16:21:56 +0100is_null(~jpic@pdpc/supporter/professional/is-null)
2021-01-12 16:22:48 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-12 16:23:08 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 16:23:16 +0100phasespace(~sar@89-162-33-21.fiber.signal.no)
2021-01-12 16:23:21 +0100fendor_(~fendor@178.115.130.17.wireless.dyn.drei.com)
2021-01-12 16:23:56 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-12 16:25:47 +0100fendor(~fendor@77.119.128.187.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
2021-01-12 16:26:08 +0100darjeeling_(~darjeelin@122.245.120.137)
2021-01-12 16:29:55 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-12 16:31:45 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-01-12 16:32:20 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-01-12 16:35:55 +0100 <RedNifre> cmcma20: not yet, I'm still in the figuring it out phase.
2021-01-12 16:36:00 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-12 16:43:15 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2021-01-12 16:43:25 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 264 seconds)
2021-01-12 16:45:17 +0100jespada(~jespada@90.254.245.49)
2021-01-12 16:45:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-12 16:46:13 +0100 <cmcma20> Considering what you have said, I'd say reflex can be useful but it's not a developer friendly library.
2021-01-12 16:46:30 +0100faustind(0e0843e1@M014008067225.v4.enabler.ne.jp)
2021-01-12 16:48:53 +0100 <xerox_> ski: what's the rationale behind all working differently on [] and Nothing
2021-01-12 16:50:44 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-12 16:50:56 +0100 <merijn> xerox_: It doesn't?
2021-01-12 16:51:01 +0100 <merijn> :t all
2021-01-12 16:51:03 +0100 <lambdabot> Foldable t => (a -> Bool) -> t a -> Bool
2021-01-12 16:51:07 +0100 <merijn> > all even Nothing
2021-01-12 16:51:09 +0100 <lambdabot> True
2021-01-12 16:51:13 +0100 <merijn> > all even []
2021-01-12 16:51:15 +0100 <lambdabot> True
2021-01-12 16:52:06 +0100 <xerox_> oh I misread, that one was "any", scratch that :D
2021-01-12 16:53:12 +0100justsomeguy(~Srain@unaffiliated/--/x-3805311)
2021-01-12 16:55:05 +0100conal(~conal@107.181.166.211) (Ping timeout: 240 seconds)
2021-01-12 16:58:25 +0100conal(~conal@107.181.166.211)
2021-01-12 17:02:42 +0100danso(~dan@23-233-104-25.cpe.pppoe.ca)
2021-01-12 17:04:35 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead)
2021-01-12 17:06:13 +0100dfreedm(~dfreedm@137.63.71.51) (Ping timeout: 264 seconds)
2021-01-12 17:07:51 +0100Guest_96(5bbbc13b@91.187.193.59)
2021-01-12 17:08:04 +0100Guest_96(5bbbc13b@91.187.193.59) (Client Quit)
2021-01-12 17:09:04 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Ping timeout: 240 seconds)
2021-01-12 17:10:40 +0100 <dminuoso> RedNifre: So for something like an editor, it's quite possible that, if you want to explore the functional paradigms, something like reflex might be better suited
2021-01-12 17:10:44 +0100ubert(~Thunderbi@p200300ecdf1ee08ce6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-12 17:11:01 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-12 17:11:06 +0100 <dminuoso> But that's quite a deep rabbit hole..
2021-01-12 17:11:51 +0100 <dminuoso> Libraries like conduit/pipes are not for building interactive systems, they are just streaming solutions (like working on a list, but with constant space and arbitrary effects interleaved)
2021-01-12 17:13:06 +0100 <dminuoso> But for an interactive system like you described, FRP is how we'd describe it - and reflex is one of the more prominent libraries for that.
2021-01-12 17:16:03 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 260 seconds)
2021-01-12 17:16:42 +0100FrontSevens(~FrontSeve@185.204.1.185)
2021-01-12 17:21:10 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-12 17:21:10 +0100carlomagno(~cararell@148.87.23.13) (Remote host closed the connection)
2021-01-12 17:21:19 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 260 seconds)
2021-01-12 17:21:41 +0100carlomagno(~cararell@148.87.23.6)
2021-01-12 17:23:00 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds)
2021-01-12 17:23:01 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-01-12 17:23:10 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-12 17:25:12 +0100 <RedNifre> Thanks for the info. I'll postpone it for now, the current solution in the project is one big fat state thing that gets filled with all the stuff you need (e.g. the Editor) and only when it's complete it gets send to the GUI to trigger an update. This means that the GUI is slow (because when you click something it has to wait for the big fat state thing to arrive before updating), but oh well.
2021-01-12 17:25:18 +0100Natch(~natch@85.226.113.180) (Remote host closed the connection)
2021-01-12 17:26:28 +0100is_null(~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 246 seconds)
2021-01-12 17:27:24 +0100ubert(~Thunderbi@p200300ecdf1ee08ce6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-01-12 17:27:54 +0100ubert(~Thunderbi@p200300ecdf1ee031e6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-12 17:28:08 +0100vicfred(~vicfred@unaffiliated/vicfred)
2021-01-12 17:28:37 +0100tv(~tv@unaffiliated/tv) (Ping timeout: 260 seconds)
2021-01-12 17:31:43 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds)
2021-01-12 17:31:52 +0100 <dminuoso> RedNifre: Yeah, this is sort of what reflex is good for.
2021-01-12 17:32:20 +0100 <dminuoso> It let's you avoid gigantic single state you need to feed to everything in a sensible way
2021-01-12 17:32:42 +0100 <dminuoso> But it's not just something you can "add-on", you need to write the entire thing around it.
2021-01-12 17:37:17 +0100plutoniix(~q@node-ulo.pool-125-24.dynamic.totinternet.net)
2021-01-12 17:37:25 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 264 seconds)
2021-01-12 17:37:31 +0100 <cmcma20> btw I've managed to do my lambdas with singletons
2021-01-12 17:37:39 +0100 <cmcma20> https://github.com/cmcmA20/plzoo-hs/blob/feature/lang_lambda/src/lambda/Syntax.hs
2021-01-12 17:37:51 +0100hiroaki(~hiroaki@ip4d16b6b9.dynamic.kabel-deutschland.de)
2021-01-12 17:38:12 +0100jlamothe(~jlamothe@198.251.55.207)
2021-01-12 17:39:23 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 260 seconds)
2021-01-12 17:40:06 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2021-01-12 17:40:08 +0100Natch(~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se)
2021-01-12 17:40:09 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead)
2021-01-12 17:40:47 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-12 17:41:01 +0100mmmattyx(uid17782@gateway/web/irccloud.com/x-lkskfelenbjwxgkl)
2021-01-12 17:41:05 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-12 17:41:09 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 17:42:34 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-12 17:46:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2021-01-12 17:47:13 +0100acidjnk_new(~acidjnk@p200300d0c704e7426836b2ca9660f737.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2021-01-12 17:48:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-01-12 17:49:34 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-12 17:50:50 +0100olligobber1(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 256 seconds)
2021-01-12 17:51:38 +0100ubert(~Thunderbi@p200300ecdf1ee031e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-12 17:53:00 +0100ADG1089__(~aditya@122.163.165.143)
2021-01-12 17:53:22 +0100geekosaur(42d52137@66.213.33.55)
2021-01-12 17:53:31 +0100 <ski> cmcma20 : `Show' instance is incorrect. did you try `deriving Show (Fin n)' ?
2021-01-12 17:53:41 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 17:53:57 +0100Rudd0^(~Rudd0@185.189.115.108)
2021-01-12 17:54:10 +0100 <cmcma20> ski: why do you think it's incorrect?
2021-01-12 17:54:27 +0100 <dminuoso> It's only morally incorrect.
2021-01-12 17:54:47 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:255c:8c1d:42fb:24ab:a8e9)
2021-01-12 17:54:48 +0100 <ski> show (FS (FS FZ)) = "FS FS FZ"
2021-01-12 17:54:53 +0100 <cmcma20> do you think unary numbers need parentheses?
2021-01-12 17:55:04 +0100abhixec_(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-01-12 17:55:10 +0100 <ski> they do, in Haskell
2021-01-12 17:55:33 +0100 <ski> `Show' is intended to produce a valid `String' representation of a Haskell expression
2021-01-12 17:55:42 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-12 17:55:47 +0100 <dminuoso> To be fair, that characterization is an interpretation.
2021-01-12 17:55:56 +0100 <dminuoso> The Haskell report only demands this of deriving generated instances
2021-01-12 17:56:04 +0100landonf(landonf@mac68k.info) (Quit: ZNC - http://znc.sourceforge.net)
2021-01-12 17:56:07 +0100 <dminuoso> It does not hint that manually written instances should adhere to this
2021-01-12 17:56:28 +0100 <dminuoso> The fact that half of hackage breaks this anyway, means the battle is already lost
2021-01-12 17:56:30 +0100 <ski> true, but i think it's pretty reasonable to expect to not get nonsensical instances automatically generated for you (which *will* happen if you allow this)
2021-01-12 17:56:52 +0100 <cmcma20> ski: this instance's result is actually isomorphic to the _truly_ correct one so I don't bother
2021-01-12 17:57:19 +0100 <dminuoso> cmcma20: isomorphic in what sense? `FS FS FZ` is not well typed.
2021-01-12 17:57:52 +0100 <dolio> show (Just (FS (FS FZ))) = "Just FS FS FZ" no?
2021-01-12 17:58:02 +0100 <ski> yes
2021-01-12 17:58:28 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 272 seconds)
2021-01-12 17:59:00 +0100 <cmcma20> I guess there is a unique function that can be composed with this particular instance show function to produce correct results
2021-01-12 17:59:18 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-kaqotuxjmriehlgf)
2021-01-12 17:59:20 +0100 <cmcma20> And this function is invertible
2021-01-12 17:59:31 +0100 <cmcma20> So it's not an interesting exercise
2021-01-12 17:59:31 +0100 <ski> it's only rarely that making a `Show' instance by defining `show' is correct. usually you want to define `showsPrec'
2021-01-12 17:59:39 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:255c:8c1d:42fb:24ab:a8e9) (Ping timeout: 246 seconds)
2021-01-12 17:59:57 +0100ep1ctetus(~marcus_au@ip184-187-162-163.sb.sd.cox.net)
2021-01-12 18:00:40 +0100 <cmcma20> Anyway thanks for pointing out the deficiency in this instance
2021-01-12 18:01:09 +0100 <ski> what is the intended meaning of `substOut' ?
2021-01-12 18:01:14 +0100 <c_wraith> fun fact about defining your own showsPrec - Prelude has a bunch of helper functions for exactly that.
2021-01-12 18:01:26 +0100justsomeguy(~Srain@unaffiliated/--/x-3805311) (Remote host closed the connection)
2021-01-12 18:01:41 +0100 <ski> (`showParen',`showChar',`showString',`shows',..)
2021-01-12 18:02:06 +0100danso(~dan@23-233-104-25.cpe.pppoe.ca) (Quit: WeeChat 3.0)
2021-01-12 18:02:12 +0100 <cmcma20> ski: it's a useful primitive for different reduction strategies
2021-01-12 18:06:04 +0100 <cmcma20> I like locally nameless because alpha-equivalence and de Brujin shifts are an absolute artificil bullshit
2021-01-12 18:06:31 +0100 <cmcma20> this way equality is syntactical
2021-01-12 18:07:20 +0100 <cmcma20> hmm, structural's a better word, sorry
2021-01-12 18:08:13 +0100landonf(landonf@mac68k.info)
2021-01-12 18:08:41 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-12 18:08:46 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-12 18:08:58 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2021-01-12 18:09:15 +0100denisse_(~spaceCat@gateway/tor-sasl/alephzer0)
2021-01-12 18:10:46 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
2021-01-12 18:12:02 +0100 <ski> so `substOut rep t' substitutes `rep' for all the `TBound idx's with the highest `idx's (relative to the current level) ?
2021-01-12 18:12:17 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b)
2021-01-12 18:12:23 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-12 18:12:28 +0100ransom(~c4264035@138.67.97.198)
2021-01-12 18:12:32 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 244 seconds)
2021-01-12 18:13:01 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-12 18:13:06 +0100nineonine(~nineonine@50.216.62.2)
2021-01-12 18:13:47 +0100gxt(~gxt@gateway/tor-sasl/gxt)
2021-01-12 18:14:31 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 18:15:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 18:16:58 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-12 18:17:36 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-01-12 18:17:43 +0100 <cmcma20> ski: with the lowest
2021-01-12 18:18:58 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
2021-01-12 18:19:14 +0100 <cmcma20> Consider all the terms of type Term 0. They are actually closed so you can never substitute into them.
2021-01-12 18:20:24 +0100 <cmcma20> But every lambda bumps a level for it's body.
2021-01-12 18:20:57 +0100niekvand_(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-12 18:21:31 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 18:21:37 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-12 18:21:51 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 18:21:57 +0100 <ski> it looks to me like `decOut' will transform say `FZ',`FS FZ',`FS (FS FZ)' of type Fin ('S ('S ('S 'Z))) to, respectively, `Just FZ',`Just (FS FZ)',`Nothing' of type Maybe (Fin ('S ('S 'Z)))
2021-01-12 18:22:23 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-12 18:22:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-12 18:22:51 +0100christo(~chris@81.96.113.213)
2021-01-12 18:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 18:24:10 +0100 <cmcma20> btw "closed" is again a wrong word here, hmm
2021-01-12 18:24:49 +0100knupfer(~Thunderbi@200116b82c27b700501e28fffefae5b3.dip.versatel-1u1.de)
2021-01-12 18:25:48 +0100knupfer(~Thunderbi@200116b82c27b700501e28fffefae5b3.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-12 18:25:57 +0100 <cmcma20> ski: Yes, you're right. Basically it gives Nothing if your index is last in your Fin.
2021-01-12 18:26:00 +0100knupfer(~Thunderbi@200116b82c27b7006458ac017ad1180f.dip.versatel-1u1.de)
2021-01-12 18:26:05 +0100 <ski> so, highest
2021-01-12 18:27:07 +0100 <cmcma20> OK, it's highest. I have a hard time distinguishing dual things, sorry.
2021-01-12 18:27:17 +0100 <ski> so, in `TApp (TBound FZ) (TLam (TBound (FS FZ)))' of type Term ('S 'Z) both `TBound (..)'s will be substituted for
2021-01-12 18:27:43 +0100 <ski> (despite having differing indices .. not sure whether this was by design or not)
2021-01-12 18:28:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35) (Remote host closed the connection)
2021-01-12 18:29:04 +0100 <cmcma20> Term ('S 'Z) means that this expression is under one lambda. So both will be substituted as they both point to the same lambda.
2021-01-12 18:29:19 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-12 18:29:34 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35)
2021-01-12 18:30:00 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35) (Remote host closed the connection)
2021-01-12 18:30:06 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35)
2021-01-12 18:30:10 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds)
2021-01-12 18:30:23 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-12 18:30:24 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection)
2021-01-12 18:30:41 +0100 <cmcma20> It's much better if you draw them. Term n is a box with n input wires.
2021-01-12 18:31:25 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
2021-01-12 18:33:10 +0100 <ski> i was thinking that you wanted instances of the same bound variable to be represented in the same way (structurally equal, as you said). if so, then `substOut' will (e.g. in the above case) substitute for multiple different variables
2021-01-12 18:33:27 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead)
2021-01-12 18:34:51 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-01-12 18:35:32 +0100Wuzzy(~Wuzzy@p5790e691.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-01-12 18:36:14 +0100geekosaur(42d52137@66.213.33.55) (Quit: Connection closed)
2021-01-12 18:37:11 +0100geekosaur(42d52137@66.213.33.55)
2021-01-12 18:37:15 +0100locrian9(~mike@99-153-255-194.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-01-12 18:37:15 +0100DavidEichmann(~david@98.27.93.209.dyn.plus.net) (Ping timeout: 256 seconds)
2021-01-12 18:37:48 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-12 18:41:12 +0100 <ukari> I need to add a " $( return [] )" manully to prevent template haskell error like‘Foo’ is not in the type environment at a reify in code `foz=$(foo ''Foo)` with foo::Name -> Q Exp
2021-01-12 18:42:57 +0100geekosaur(42d52137@66.213.33.55) (Ping timeout: 248 seconds)
2021-01-12 18:43:12 +0100 <ukari> but when I import package Lens and write `makeLenses ''Bar` in the same file of `foo` and `Foo`, the "not in the type environment " error auto disappear and there is no need to add `$( return [] )` any more
2021-01-12 18:43:32 +0100 <ukari> why?
2021-01-12 18:44:03 +0100 <glguy> ukari: because one is a declaration splice and the other is an expression splice
2021-01-12 18:44:11 +0100 <merijn> ukari: oooh, did you put "makeLenses" somewhere in the middle?
2021-01-12 18:44:24 +0100 <glguy> also you can shorten $(return []) to pure []
2021-01-12 18:44:28 +0100tito_04(~taurux@net-109-115-33-214.cust.vodafonedsl.it)
2021-01-12 18:44:42 +0100 <glguy> you don't need $() for declaration splices
2021-01-12 18:44:56 +0100 <ukari> and how could lens `makeLenses::Name -> DecsQ` a pure function do something like a $()
2021-01-12 18:44:58 +0100 <merijn> anymore :p
2021-01-12 18:45:04 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-12 18:45:16 +0100 <glguy> all functions are pure
2021-01-12 18:45:27 +0100 <merijn> ukari: You don't need $() at the top level anymore as glguy says
2021-01-12 18:45:58 +0100taurux(~taurux@net-109-115-33-214.cust.vodafonedsl.it) (Ping timeout: 272 seconds)
2021-01-12 18:46:48 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-01-12 18:47:20 +0100tv(~tv@unaffiliated/tv)
2021-01-12 18:47:31 +0100howdoi(uid224@gateway/web/irccloud.com/x-hhcvifznrcarwudg)
2021-01-12 18:47:32 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-12 18:47:43 +0100 <dminuoso> Some consider it good style to always use $() for splices though.
2021-01-12 18:47:45 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-12 18:47:54 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 18:48:30 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-12 18:48:40 +0100 <ukari> I try pure [] and it works as well as $( return [] )
2021-01-12 18:48:54 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-01-12 18:49:38 +0100 <ukari> but how could do things like `makeLenses`? It seems don't need add a `pure []`
2021-01-12 18:50:00 +0100nitrix(~nitrix@haskell/developer/nitrix) (Remote host closed the connection)
2021-01-12 18:50:01 +0100rajivr(uid269651@gateway/web/irccloud.com/x-gnedumgsvnojinhm) (Quit: Connection closed for inactivity)
2021-01-12 18:50:06 +0100 <glguy> ukari: a top level makeLenses is a *declaration splice*. these behave differently from *expression splices*
2021-01-12 18:50:12 +0100 <glguy> this why you're seeing different behaviors
2021-01-12 18:50:57 +0100 <glguy> A declaration splice can only see declarations above it, and it generates declarations that will be in scope below it
2021-01-12 18:52:04 +0100DavidEichmann(~david@82-132-217-213.dab.02.net)
2021-01-12 18:53:49 +0100 <dminuoso> Side-note, this only applies to TH declaration splices, not to QQ declaration splices.
2021-01-12 18:54:15 +0100david__(~david@234.109.45.217.dyn.plus.net)
2021-01-12 18:54:19 +0100 <dminuoso> I think?
2021-01-12 18:54:20 +0100nitrix(~nitrix@haskell/developer/nitrix)
2021-01-12 18:54:28 +0100 <dminuoso> My head spins when I read the manual;
2021-01-12 18:54:32 +0100 <cmcma20> ski: nah I meant that for example identity combinator is uniquely represented by (λ.0) or (TLam (TBound FZ) :: Term 'Z) here
2021-01-12 18:55:08 +0100 <ski> oic
2021-01-12 18:55:22 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-01-12 18:55:34 +0100 <ski> (also for `forall n. Term n' ?)
2021-01-12 18:55:55 +0100DavidEichmann(~david@82-132-217-213.dab.02.net) (Read error: Connection reset by peer)
2021-01-12 18:56:23 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-12 18:57:46 +0100pera(pera@gateway/vpn/mullvad/pera)
2021-01-12 18:57:48 +0100 <Feuermagier> how do i deconstruct a data x = String String String in a Lambda?
2021-01-12 18:58:55 +0100 <cmcma20> ski: I don't think so. Term n potentially has access to n inputs.
2021-01-12 18:58:58 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2021-01-12 18:59:13 +0100 <cmcma20> Feuermagier: data X = MkX String String String
2021-01-12 18:59:17 +0100 <ukari> thank you, glguy, it helps a lot. both of `pure []` and `makeLenses` has a signature with Q [Dec], and write in top level could omit $(...), and they will be treated as declaration splice
2021-01-12 18:59:27 +0100 <cmcma20> Feuermagier: \(MkX a b c) -> _
2021-01-12 18:59:53 +0100 <Feuermagier> thx!
2021-01-12 19:00:47 +0100ransom(~c4264035@138.67.97.198) (Quit: Textual IRC Client: www.textualapp.com)
2021-01-12 19:01:14 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-01-12 19:01:37 +0100 <ski> cmcma20 : so you can't uniquely identify weakened identity combinators, inside lambdas ?
2021-01-12 19:02:44 +0100 <cmcma20> ski: you can but user will be spared of dealing with anything besides Term 'Z
2021-01-12 19:03:22 +0100 <ski> ok
2021-01-12 19:03:36 +0100 <cmcma20> ski: This type family just encodes correct lambda scoping so you can never construct a bound variable pointing into nothingness.
2021-01-12 19:04:15 +0100locrian9(~mike@99-153-255-194.lightspeed.irvnca.sbcglobal.net)
2021-01-12 19:04:50 +0100 <cmcma20> ski: The whole point of using singletons was to get not just any encoding of lambda terms inside Haskell, but a _tight_ one.
2021-01-12 19:05:16 +0100skinods
2021-01-12 19:05:26 +0100 <Feuermagier> cmcma20, what is Mkx in your example?
2021-01-12 19:05:44 +0100 <cmcma20> Feuermagier: it's a constructor for the type X
2021-01-12 19:05:54 +0100geekosaur(42d52137@66.213.33.55)
2021-01-12 19:07:00 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:4908:2cb1:4b68:c89e)
2021-01-12 19:08:15 +0100 <cmcma20> Feuermagier: MkX :: String -> String -> String -> X
2021-01-12 19:09:25 +0100 <Feuermagier> thx. i got it now :)
2021-01-12 19:09:56 +0100 <Feuermagier> I forgot that the last one is the return type and not a variable
2021-01-12 19:10:09 +0100 <Feuermagier> mixed up number of arguments
2021-01-12 19:10:45 +0100tv(~tv@unaffiliated/tv) (Ping timeout: 256 seconds)
2021-01-12 19:12:26 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-12 19:13:59 +0100rmk236(~lcampos@2a02:908:3616:b100:99fa:b935:779b:e172)
2021-01-12 19:14:17 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-12 19:17:42 +0100reyu(~reyu@znc.reyuzenfold.com) (Quit: Fox Out!)
2021-01-12 19:21:49 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-01-12 19:22:45 +0100debclair(~debclair@host-181-39-120-169.netlife.ec)
2021-01-12 19:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-12 19:23:08 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 19:23:34 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-12 19:23:42 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-12 19:26:07 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 260 seconds)
2021-01-12 19:27:11 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-12 19:27:28 +0100alexcleac(~alex@213.111.86.105)
2021-01-12 19:27:52 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Client Quit)
2021-01-12 19:28:21 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-12 19:28:25 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-12 19:29:27 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-01-12 19:34:25 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds)
2021-01-12 19:35:19 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection)
2021-01-12 19:37:54 +0100faustind(0e0843e1@M014008067225.v4.enabler.ne.jp) (Quit: Connection closed)
2021-01-12 19:39:58 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead)
2021-01-12 19:40:00 +0100cmcma20(~cmcma20@l37-192-2-125.novotelecom.ru) (Quit: leaving)
2021-01-12 19:40:19 +0100geekosaur(42d52137@66.213.33.55) (Quit: Connection closed)
2021-01-12 19:40:42 +0100is_null(~jpic@pdpc/supporter/professional/is-null)
2021-01-12 19:41:35 +0100geekosaur(42d52137@66.213.33.55)
2021-01-12 19:45:24 +0100knupfer(~Thunderbi@200116b82c27b7006458ac017ad1180f.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
2021-01-12 19:51:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection)
2021-01-12 19:55:34 +0100maxsu(~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 246 seconds)
2021-01-12 19:55:40 +0100pera(pera@gateway/vpn/mullvad/pera) (Ping timeout: 256 seconds)
2021-01-12 19:55:57 +0100matryoshka(~matryoshk@184.75.223.227) (Read error: Connection reset by peer)
2021-01-12 19:56:13 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-12 19:57:22 +0100pera(~pera@unaffiliated/pera)
2021-01-12 19:57:53 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer)
2021-01-12 19:58:02 +0100matryoshka`(~matryoshk@184.75.223.227)
2021-01-12 19:58:04 +0100borne(~fritjof@200116b86411c700aa0a83b5acfe977f.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
2021-01-12 19:58:54 +0100rmk236(~lcampos@2a02:908:3616:b100:99fa:b935:779b:e172) (Quit: Leaving.)
2021-01-12 19:59:29 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-01-12 20:00:13 +0100debclair(~debclair@host-181-39-120-169.netlife.ec) (Ping timeout: 264 seconds)
2021-01-12 20:02:37 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds)
2021-01-12 20:02:41 +0100Lord_of_Life_Lord_of_Life
2021-01-12 20:02:43 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:4908:2cb1:4b68:c89e) (Max SendQ exceeded)
2021-01-12 20:02:50 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-12 20:03:12 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:4908:2cb1:4b68:c89e)
2021-01-12 20:03:30 +0100berberman_(~berberman@unaffiliated/berberman)
2021-01-12 20:04:31 +0100ggole(~ggole@2001:8003:8119:7200:541f:f655:3fda:a8bb) (Quit: Leaving)
2021-01-12 20:04:38 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2021-01-12 20:04:40 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-12 20:06:52 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-01-12 20:07:43 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2021-01-12 20:08:13 +0100manmachineman(~manmachin@93-172-48-98.bb.netvision.net.il)
2021-01-12 20:11:53 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-01-12 20:12:02 +0100tv(~tv@unaffiliated/tv)
2021-01-12 20:14:55 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it)
2021-01-12 20:15:15 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 20:15:32 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-01-12 20:16:28 +0100ukari(~ukari@unaffiliated/ukari)
2021-01-12 20:17:47 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-zfmzrhpcnpxmksjd) (Quit: Connection closed for inactivity)
2021-01-12 20:18:04 +0100dandart(~Thunderbi@home.dandart.co.uk) (Quit: dandart)
2021-01-12 20:18:10 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-12 20:18:19 +0100ph88(~ph88@95.90.247.26) (Ping timeout: 246 seconds)
2021-01-12 20:18:46 +0100christo(~chris@81.96.113.213)
2021-01-12 20:19:52 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2021-01-12 20:21:56 +0100b4er(~b4er@193.27.14.141)
2021-01-12 20:22:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-12 20:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 20:23:37 +0100christo(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2021-01-12 20:25:24 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 272 seconds)
2021-01-12 20:27:16 +0100christo(~chris@81.96.113.213)
2021-01-12 20:29:39 +0100matryoshka`(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-12 20:29:58 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-12 20:32:31 +0100Wuzzy(~Wuzzy@p5790e10f.dip0.t-ipconnect.de)
2021-01-12 20:32:57 +0100manmachineman(~manmachin@93-172-48-98.bb.netvision.net.il) ()
2021-01-12 20:33:03 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-12 20:33:24 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-01-12 20:35:56 +0100kuribas(~user@ptr-25vy0iaexs88rik0imq.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-01-12 20:36:08 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2021-01-12 20:36:37 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-12 20:38:14 +0100alexcleac(~alex@213.111.86.105) (Quit: leaving)
2021-01-12 20:38:52 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
2021-01-12 20:38:57 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2021-01-12 20:40:12 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-01-12 20:43:51 +0100danso(~dan@23-233-104-25.cpe.pppoe.ca)
2021-01-12 20:44:33 +0100geekosaur(42d52137@66.213.33.55) (Ping timeout: 248 seconds)
2021-01-12 20:45:49 +0100mmfood(~mmfood@45.91.21.48)
2021-01-12 20:46:40 +0100locrian9(~mike@99-153-255-194.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
2021-01-12 20:46:40 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 246 seconds)
2021-01-12 20:47:01 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-12 20:50:09 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 260 seconds)
2021-01-12 20:50:28 +0100ph88(~ph88@2a02:8109:9e00:7e5c:6525:380:35f5:9d2f)
2021-01-12 20:51:12 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer)
2021-01-12 20:51:17 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-12 20:51:35 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead)
2021-01-12 20:51:36 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 20:51:38 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 20:54:02 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:4908:2cb1:4b68:c89e) (Ping timeout: 264 seconds)
2021-01-12 20:54:05 +0100Deide(~Deide@217.155.19.23)
2021-01-12 20:56:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Ping timeout: 264 seconds)
2021-01-12 20:57:04 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2021-01-12 20:57:47 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-12 21:02:08 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 272 seconds)
2021-01-12 21:02:22 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-12 21:03:07 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-01-12 21:04:06 +0100 <idnar> @type (maybe retry pure =<<)
2021-01-12 21:04:08 +0100 <lambdabot> error: Variable not in scope: retry :: m b
2021-01-12 21:05:36 +0100 <idnar> @type (maybe Control.Concurrent.STM.retry pure =<<)
2021-01-12 21:05:38 +0100 <lambdabot> GHC.Conc.Sync.STM (Maybe b) -> GHC.Conc.Sync.STM b
2021-01-12 21:06:22 +0100 <idnar> @hoogle STM (Maybe b) -> STM b
2021-01-12 21:06:23 +0100 <lambdabot> Control.Monad.Extra untilJustM :: Monad m => m (Maybe a) -> m a
2021-01-12 21:06:23 +0100 <lambdabot> Extra untilJustM :: Monad m => m (Maybe a) -> m a
2021-01-12 21:06:23 +0100 <lambdabot> Control.Monad.Loops untilJust :: Monad m => m (Maybe a) -> m a
2021-01-12 21:06:37 +0100 <idnar> hmm actually
2021-01-12 21:06:55 +0100 <idnar> @type (maybe empty pure =<<)
2021-01-12 21:06:56 +0100 <lambdabot> (Monad m, Alternative m) => m (Maybe b) -> m b
2021-01-12 21:07:36 +0100 <idnar> @type (maybe mzero pure =<<)
2021-01-12 21:07:37 +0100 <lambdabot> MonadPlus m => m (Maybe b) -> m b
2021-01-12 21:07:58 +0100 <idnar> @hoogle MonadPlus m => m (Maybe b) -> m b
2021-01-12 21:07:59 +0100 <lambdabot> Control.Monad.Extra untilJustM :: Monad m => m (Maybe a) -> m a
2021-01-12 21:07:59 +0100 <lambdabot> Extra untilJustM :: Monad m => m (Maybe a) -> m a
2021-01-12 21:07:59 +0100 <lambdabot> Control.Monad.Loops untilJust :: Monad m => m (Maybe a) -> m a
2021-01-12 21:08:00 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-01-12 21:08:14 +0100 <idnar> bah
2021-01-12 21:10:31 +0100acidjnk_new(~acidjnk@p200300d0c704e7426836b2ca9660f737.dip0.t-ipconnect.de)
2021-01-12 21:10:49 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2021-01-12 21:12:57 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-12 21:13:18 +0100 <idnar> is there a nicer way to write that (=<<) section?
2021-01-12 21:18:09 +0100geekosaur(42d52137@66.213.33.55)
2021-01-12 21:18:09 +0100lambda-11235(~lambda-11@108-237-120-58.lightspeed.frokca.sbcglobal.net)
2021-01-12 21:22:50 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer)
2021-01-12 21:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 21:24:05 +0100 <tomsmeding> :t (>>= fromMaybe empty)
2021-01-12 21:24:07 +0100 <lambdabot> (Monad m, Alternative m) => m (Maybe (m b)) -> m b
2021-01-12 21:24:32 +0100 <tomsmeding> scratch that
2021-01-12 21:25:59 +0100 <tomsmeding> @hoogle Control.Monad.Extra.liftMaybe
2021-01-12 21:25:59 +0100 <lambdabot> Control.Monad.Extra liftMaybe :: MonadPlus m => Maybe a -> m a
2021-01-12 21:26:37 +0100 <tomsmeding> idnar: (>>= liftMaybe)
2021-01-12 21:26:44 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 21:28:06 +0100esph(~weechat@unaffiliated/esph) (Ping timeout: 272 seconds)
2021-01-12 21:28:30 +0100esph(~weechat@unaffiliated/esph)
2021-01-12 21:28:35 +0100 <idnar> tomsmeding: ooh; I might just use that inline
2021-01-12 21:28:35 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead)
2021-01-12 21:29:09 +0100 <tomsmeding> to all who care to look: do these line numbers line up nicely? https://paste.tomsmeding.com/nzAlJVxG
2021-01-12 21:29:42 +0100 <tomsmeding> they do for me, but I didn't try on weird browsers :p
2021-01-12 21:30:28 +0100 <__monty__> They do for me in firefox.
2021-01-12 21:30:56 +0100 <tomsmeding> because then the paste thing now has line numbers :)
2021-01-12 21:31:48 +0100 <idnar> @type either fail pure -- what about this?
2021-01-12 21:31:50 +0100 <lambdabot> MonadFail m => Either String a -> m a
2021-01-12 21:31:58 +0100thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2021-01-12 21:32:25 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-12 21:32:57 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 21:33:13 +0100 <tomsmeding> that MonadFail usage is far less likely to have a nice generic function in some common library I think
2021-01-12 21:33:46 +0100 <tomsmeding> I mean, you could write liftEither = either fail pure :p
2021-01-12 21:33:47 +0100 <sm[m]> alignment looks good in IOS safari & brave, tomsmeding
2021-01-12 21:33:59 +0100 <tomsmeding> good to hear sm[m], thanks
2021-01-12 21:34:13 +0100 <tomsmeding> those are two browsers I didn't test :)
2021-01-12 21:34:14 +0100 <Rembane> tomsmeding: Looking good in Firefox. What are weird browsers to you? :)
2021-01-12 21:34:24 +0100 <tomsmeding> I tried pc firefox, android firefox+chrome :p
2021-01-12 21:34:36 +0100 <tomsmeding> I don't care much about IE
2021-01-12 21:34:55 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-12 21:35:18 +0100 <tomsmeding> apparently in CSS, 'line-height: normal' means something different than an actual fixed line-height
2021-01-12 21:35:32 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-12 21:36:37 +0100 <Rembane> tomsmeding: That's interesting. In my experience, nothing in CSS means what I think it means. :)
2021-01-12 21:37:05 +0100 <tomsmeding> while 'nothing' is perhaps an overstatement, I agree with the sentiment
2021-01-12 21:37:20 +0100 <ski> @type either throwError return
2021-01-12 21:37:21 +0100 <lambdabot> MonadError e m => Either e a -> m a
2021-01-12 21:37:35 +0100 <Rembane> For big values of nothing...
2021-01-12 21:37:36 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 272 seconds)
2021-01-12 21:37:43 +0100 <tomsmeding> font-weight: bold
2021-01-12 21:40:01 +0100ph88(~ph88@2a02:8109:9e00:7e5c:6525:380:35f5:9d2f) (Ping timeout: 272 seconds)
2021-01-12 21:40:21 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net)
2021-01-12 21:42:45 +0100TMA(tma@twin.jikos.cz)
2021-01-12 21:46:54 +0100 <carbolymer> can I use stack script with HLS/hie-bios?
2021-01-12 21:46:59 +0100 <carbolymer> how should I define it in yaml?
2021-01-12 21:47:05 +0100 <carbolymer> hie.yaml
2021-01-12 21:49:43 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-12 21:50:05 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 21:51:36 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 21:52:25 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 264 seconds)
2021-01-12 21:52:29 +0100 <sm[m]> I'm not sure that's possible yet carbolymer
2021-01-12 21:52:36 +0100 <sm[m]> I'd like that too
2021-01-12 21:52:41 +0100 <carbolymer> :/
2021-01-12 21:53:24 +0100 <sm[m]> ask #haskell-ide-engine
2021-01-12 21:54:19 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
2021-01-12 21:55:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2021-01-12 21:57:51 +0100juri_(~juri@178.63.35.222) (Ping timeout: 256 seconds)
2021-01-12 22:00:02 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-01-12 22:00:56 +0100LiamD(43aae10c@c-67-170-225-12.hsd1.ca.comcast.net)
2021-01-12 22:03:14 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-01-12 22:03:51 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-12 22:04:21 +0100son0p(~son0p@181.136.122.143)
2021-01-12 22:04:28 +0100iteratee(~kyle@162.211.154.4) (Remote host closed the connection)
2021-01-12 22:04:44 +0100Tops21(~Tobias@dyndsl-095-033-022-123.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-01-12 22:05:00 +0100Bergle_1(~Bergle_4@101.165.90.119) (Quit: Leaving)
2021-01-12 22:08:56 +0100 <adamCS> should I need to do anything but specify "ghc-options: -eventlog -rtsopts" in my executable cabal stanza to then be able to run with "+RTS -l" ? I tried that and I am getting a long error message which begins "the flag -l requires the program to be built with -eventlog or -debug". And I verified with "cabal -v" that "-eventlog" is present at compile and link.
2021-01-12 22:09:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-01-12 22:09:47 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2021-01-12 22:10:05 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-12 22:13:28 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-12 22:14:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-01-12 22:15:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 22:16:00 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-12 22:16:41 +0100 <Uniaika> bi_functor: heya :)
2021-01-12 22:18:25 +0100euler(49f187de@c-73-241-135-222.hsd1.ca.comcast.net)
2021-01-12 22:19:35 +0100euler(49f187de@c-73-241-135-222.hsd1.ca.comcast.net) (Client Quit)
2021-01-12 22:19:55 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-12 22:20:40 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2021-01-12 22:20:44 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 265 seconds)
2021-01-12 22:21:09 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-12 22:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-12 22:23:08 +0100zebrag(~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr)
2021-01-12 22:23:54 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-01-12 22:24:41 +0100juri_(~juri@79.140.122.154)
2021-01-12 22:24:54 +0100knupfer(~Thunderbi@87.123.206.120)
2021-01-12 22:25:49 +0100borne(~fritjof@200116b86411c700aa0a83b5acfe977f.dip.versatel-1u1.de)
2021-01-12 22:26:43 +0100juri_(~juri@79.140.122.154) (Read error: Connection reset by peer)
2021-01-12 22:27:02 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2021-01-12 22:29:28 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-12 22:30:26 +0100mmmattyx(uid17782@gateway/web/irccloud.com/x-lkskfelenbjwxgkl) (Quit: Connection closed for inactivity)
2021-01-12 22:33:25 +0100debclair(~debclair@host-181-39-120-169.netlife.ec)
2021-01-12 22:34:36 +0100juri_(~juri@178.63.35.222)
2021-01-12 22:35:22 +0100abrar(~abrar@static-108-30-103-121.nycmny.fios.verizon.net) (Quit: WeeChat 2.9)
2021-01-12 22:36:21 +0100neiluj(~jco@unaffiliated/neiluj) (Quit: leaving)
2021-01-12 22:36:34 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Ping timeout: 246 seconds)
2021-01-12 22:36:38 +0100cheater(~user@unaffiliated/cheater)
2021-01-12 22:36:48 +0100mmmattyx(uid17782@gateway/web/irccloud.com/x-tzsvjcfzpzlemwdx)
2021-01-12 22:36:55 +0100ransom(~c4264035@8.48.134.54)
2021-01-12 22:37:12 +0100abrar(~abrar@static-108-30-103-121.nycmny.fios.verizon.net)
2021-01-12 22:41:53 +0100eliteyawuy(~eliteyawu@130.70.130.244)
2021-01-12 22:44:01 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com)
2021-01-12 22:45:45 +0100eliteyawuy(~eliteyawu@130.70.130.244) (Read error: Connection reset by peer)
2021-01-12 22:47:18 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
2021-01-12 22:47:56 +0100debclair(~debclair@host-181-39-120-169.netlife.ec) (Quit: Leaving)
2021-01-12 22:48:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 22:50:16 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl)
2021-01-12 22:50:41 +0100ubert(~Thunderbi@p200300ecdf1ee031e6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-12 22:50:47 +0100geekosaur(42d52137@66.213.33.55) (Quit: Connection closed)
2021-01-12 22:53:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-12 22:54:31 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Remote host closed the connection)
2021-01-12 22:58:25 +0100conal(~conal@107.181.166.211) (Quit: Computer has gone to sleep.)
2021-01-12 22:58:33 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-01-12 22:58:44 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-12 22:59:00 +0100conal(~conal@107.181.166.211)
2021-01-12 22:59:06 +0100conal(~conal@107.181.166.211) (Client Quit)
2021-01-12 22:59:39 +0100conal(~conal@107.181.166.211)
2021-01-12 23:00:14 +0100Guest94505(~textual@mskresolve-a.mskcc.org) (Ping timeout: 256 seconds)
2021-01-12 23:01:23 +0100LKoen(~LKoen@152.172.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.”)
2021-01-12 23:01:43 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-12 23:01:52 +0100mmfood(~mmfood@45.91.21.48) (Quit: Leaving)
2021-01-12 23:02:56 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-01-12 23:02:56 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-01-12 23:02:56 +0100mouseghost(~draco@wikipedia/desperek)
2021-01-12 23:03:38 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-01-12 23:04:09 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-01-12 23:04:29 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-01-12 23:05:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection)
2021-01-12 23:05:29 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead)
2021-01-12 23:05:31 +0100nineonine(~nineonine@50.216.62.2)
2021-01-12 23:06:04 +0100Elliott(~textual@ip68-12-87-70.ok.ok.cox.net)
2021-01-12 23:06:15 +0100Elliott(~textual@ip68-12-87-70.ok.ok.cox.net) ()
2021-01-12 23:08:47 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-01-12 23:09:03 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-01-12 23:10:01 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-12 23:10:04 +0100ericsagnes(~ericsagne@2405:6580:0:5100:7525:3d36:8cf7:15dd) (Ping timeout: 240 seconds)
2021-01-12 23:12:21 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2021-01-12 23:12:31 +0100ransom(~c4264035@8.48.134.54) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-12 23:12:48 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-01-12 23:13:13 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net)
2021-01-12 23:13:16 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-12 23:14:46 +0100 <jfe> hi all
2021-01-12 23:15:16 +0100knupfer(~Thunderbi@87.123.206.120) (Ping timeout: 240 seconds)
2021-01-12 23:16:57 +0100ph88(~ph88@2a02:8109:9e00:7e5c:6525:380:35f5:9d2f)
2021-01-12 23:17:44 +0100noob_on_rails(~kvirc@ppp-2-86-127-175.home.otenet.gr)
2021-01-12 23:17:45 +0100fendor_(~fendor@178.115.130.17.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2021-01-12 23:18:19 +0100 <noob_on_rails> hey all, is there a channel dedicated to TidalCycles?
2021-01-12 23:20:16 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt)
2021-01-12 23:20:22 +0100michalz(~user@185.246.204.78) (Remote host closed the connection)
2021-01-12 23:20:42 +0100ransom(~c4264035@2a09:bac0:98::830:8636)
2021-01-12 23:22:53 +0100ericsagnes(~ericsagne@2405:6580:0:5100:15:4fbd:9a97:4e33)
2021-01-12 23:25:04 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-01-12 23:26:06 +0100faustind(0e0843e1@M014008067225.v4.enabler.ne.jp)
2021-01-12 23:26:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-12 23:28:20 +0100faustind(0e0843e1@M014008067225.v4.enabler.ne.jp) (Client Quit)
2021-01-12 23:29:03 +0100dcoutts(~dcoutts@unaffiliated/dcoutts) (Remote host closed the connection)
2021-01-12 23:31:17 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-12 23:31:30 +0100dcoutts(~dcoutts@unaffiliated/dcoutts)
2021-01-12 23:31:54 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 23:32:30 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-12 23:32:42 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 23:34:37 +0100RedNifre(~michael@dslb-002-203-247-083.002.203.pools.vodafone-ip.de) ("WeeChat 1.9.1")
2021-01-12 23:36:34 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-01-12 23:38:08 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-12 23:43:22 +0100conal(~conal@107.181.166.211) (Quit: Computer has gone to sleep.)
2021-01-12 23:43:58 +0100 <ski> apparently there's a #tidal channel .. dunno whether it's related
2021-01-12 23:44:50 +0100 <ski> in the second link, there seems to be more noise in the MP3 spectrogram
2021-01-12 23:45:16 +0100pavonia(~user@unaffiliated/siracusa)
2021-01-12 23:45:16 +0100conal(~conal@107.181.166.211)
2021-01-12 23:45:31 +0100conal(~conal@107.181.166.211) (Client Quit)
2021-01-12 23:47:01 +0100heatsink(~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection)
2021-01-12 23:47:51 +0100cyphase(~cyphase@unaffiliated/cyphase) (Ping timeout: 256 seconds)
2021-01-12 23:48:14 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-12 23:48:39 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-12 23:50:49 +0100 <noob_on_rails> ski: hmm thanks, it has only one guy init :D
2021-01-12 23:51:16 +0100 <noob_on_rails> so prolly no channel for it :(
2021-01-12 23:51:45 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it)
2021-01-12 23:51:53 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it) (Remote host closed the connection)
2021-01-12 23:52:43 +0100cyphase(~cyphase@unaffiliated/cyphase)
2021-01-12 23:56:32 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-12 23:59:27 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)