2021/09/29

2021-09-29 00:00:04 +0000jlamothe(~jlamothe@104.158.48.100) (Ping timeout: 252 seconds)
2021-09-29 00:00:33 +0000 <monochrom> While everyone takes side privately, no one would want to take side in a leader role to call any of the above "official".
2021-09-29 00:01:02 +0000 <monochrom> Well, either that, or all of the above are official. Same difference.
2021-09-29 00:01:02 +0000 <sclv> the HF has been trying to shephard some stuff through, but the individual webpages are controlled by various teams
2021-09-29 00:01:17 +0000 <sclv> haskell.org controls the downloads page, and there are prs in flight under discussion for improving it
2021-09-29 00:01:36 +0000 <sclv> the ghc downloads page just points to binaries, because its intended as an official source for the binaries and nothing else
2021-09-29 00:02:01 +0000 <sclv> arguably it could say "hey, if you want an installer for your platform and not just the binaries, check here: " but nobody's made a pr to do that
2021-09-29 00:02:04 +0000 <monochrom> And I still get my rustc from "apt-get install", not from rustup, BTW.
2021-09-29 00:02:18 +0000 <sclv> the cabal website would welcome a pr to change the ghcup pointer to a better destination. *shrug*
2021-09-29 00:02:40 +0000 <monochrom> And I was an early adopter of ghcup, long before it was even mentioned on haskell.org
2021-09-29 00:02:59 +0000 <monochrom> When it was still a shell script, I was there.
2021-09-29 00:03:09 +0000 <koala_man> if I do `ghci src/foo/myfile.hs` then I can interactively run any function defined in it. If I do `cabal repl` or `cabal repl src/foo/myfile.hs` with or without `:m +foo.myfile` then I can only run exported ones. Is there a way to run unexported functions for debugging purposes via the cabal repl?
2021-09-29 00:03:13 +0000 <monochrom> Screw "official".
2021-09-29 00:03:33 +0000 <monochrom> Where is the "official website" of C anyway?
2021-09-29 00:04:10 +0000 <monochrom> Did that stop anyone from praising C as if it were the most official language? The standard against all other languages are supposed to look up to?
2021-09-29 00:04:23 +0000 <sclv> koala_man: you should use `:load` to load the file explicitly
2021-09-29 00:04:29 +0000 <monochrom> Where can I download my cup?
2021-09-29 00:04:52 +0000 <koala_man> sclv: perfect, thanks
2021-09-29 00:05:11 +0000 <free_functor> I think for ghcup to recieve the legitimacy of official endorsement, and lower barriers to new adopters, ghcorg should certainly consider officially promoting ghcup on front page. Imo that alone would be a huge - and A/B testable - imrprovement to daily haskell deploys
2021-09-29 00:06:01 +0000 <monochrom> koala_man: :add is a version of :load that doesn't unload existing stuff, btw, in case you need to load multiple modules after the fact.
2021-09-29 00:06:13 +0000 <free_functor> Then with that primary call to action in place, the confusing download page, and somewhat inconsistent install documentation can no longer bite a newb
2021-09-29 00:06:14 +0000 <sclv> new adopters don't go to the ghc homepage, they got to the haskell homepage, which points them to downloads, which points them to ghcup
2021-09-29 00:07:57 +0000tabaqui(~root@46.39.45.162)
2021-09-29 00:08:12 +0000 <tabaqui> Hey all!
2021-09-29 00:08:17 +0000 <tabaqui> It was a long time
2021-09-29 00:08:41 +0000 <monochrom> But everything seems like just yesterday to me. :)
2021-09-29 00:08:52 +0000monochromis old and wise.
2021-09-29 00:09:06 +0000 <free_functor> sclv, I propose that that ghcup is the fifth item on the download page which perplexes new users - me included. New users are given the option to manuall install cabal + ghc before they are given the option to install stack, before they are given the option to install ghcup - then to install ghcup they must click a link, rather than just copying text
2021-09-29 00:09:53 +0000 <sclv> "8:01 PM <sclv> haskell.org controls the downloads page, and there are prs in flight under discussion for improving it"
2021-09-29 00:10:03 +0000 <free_functor> sclv, I have the feeling that the downloads page needs to link to all those things for maintenance reasons - but if the front page itself gives the user the option to copy the ghcup install string, 90% of users will skip the downloads page
2021-09-29 00:10:19 +0000 <sclv> ok, make a pr to the front page, not a bad idea!
2021-09-29 00:11:11 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 246 seconds)
2021-09-29 00:11:51 +0000 <monochrom> You realize that ghcup on Windows is only a recent thing?
2021-09-29 00:12:22 +0000 <monochrom> This is why it was problematic to recommend ghcup at a high priority unconditionally.
2021-09-29 00:12:37 +0000 <free_functor> because of the windows story alone?
2021-09-29 00:12:43 +0000 <koala_man> while I'm asking about cabal, is there an equivalent to `runghc` that lets me run a program in interpreted mode to skip the compilation?
2021-09-29 00:12:59 +0000 <monochrom> Have you been in a tech support role to field questions from Windows users "hi ghcup doesn't work for me?"
2021-09-29 00:13:04 +0000 <sclv> i mean.. that's just "runghc"?
2021-09-29 00:13:14 +0000 <tabaqui> I faced a problem, apparantly requires GC hacking, but I'm not good with it
2021-09-29 00:13:37 +0000 <free_functor> monochrom, yes, with the added bonus that I was the clueless window user, I think.. and I don't think it worked at the time
2021-09-29 00:13:48 +0000 <free_functor> I think at the time not even the choco scripts were reliable
2021-09-29 00:13:53 +0000 <tabaqui> I have a code with high loads on STM.TChan, which causes space leak even when chans are empty
2021-09-29 00:14:04 +0000 <sclv> there's also v2-run and script support https://cabal.readthedocs.io/en/latest/cabal-commands.html#cabal-v2-run
2021-09-29 00:14:06 +0000 <tabaqui> basically, it is like this https://gist.github.com/boris-stepanov/481821f9fdf93cc3076157a1e8b912a9
2021-09-29 00:14:08 +0000 <koala_man> sclv: but runghc doesn't understand cabal, right? so it doesn't generate build files or import packages from the current dir
2021-09-29 00:14:22 +0000 <sclv> koala_man: see my above
2021-09-29 00:14:22 +0000 <tabaqui> 600M leak, be carefull
2021-09-29 00:14:34 +0000 <tabaqui> can anyone help me to tune RTS here?
2021-09-29 00:14:41 +0000pierrot(~pi@user/pierrot) (Ping timeout: 246 seconds)
2021-09-29 00:14:43 +0000 <koala_man> huh interesting
2021-09-29 00:14:44 +0000pierrot_(~pi@user/pierrot)
2021-09-29 00:16:28 +0000 <sclv> i'm not sure what the leak is you're describing. you're writing a ton of stuff to a tchan, and then reading it
2021-09-29 00:16:33 +0000 <sclv> so thats going to... consume memory?
2021-09-29 00:16:45 +0000 <tabaqui> yeah, but memory is still allocated after reading
2021-09-29 00:17:09 +0000 <monochrom> > 600*1000*1000 / 10000000
2021-09-29 00:17:10 +0000 <lambdabot> 60.0
2021-09-29 00:17:20 +0000 <monochrom> > 600*1000*1000 / 10000000 / 8
2021-09-29 00:17:22 +0000 <lambdabot> 7.5
2021-09-29 00:17:32 +0000 <monochrom> Sounds about right.
2021-09-29 00:17:55 +0000 <monochrom> Actually this is even better:
2021-09-29 00:17:57 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Remote host closed the connection)
2021-09-29 00:18:03 +0000 <monochrom> > 600*1000*1000 / 2 / 10000000 / 8
2021-09-29 00:18:05 +0000 <lambdabot> 3.75
2021-09-29 00:18:13 +0000 <free_functor> monochrom, the idea of having a "Install Me!" call to action on the front page is still workable, given 1) People are willing to tolerate that it will reduce traffic to the download page 2) in particular, they accept that it will reduce the number of stack downloads 3) it is permissible to show windows users the choco version of the install script, rather than GHCUP
2021-09-29 00:18:19 +0000 <monochrom> The /2 is because "copying GC" also means double-buffering.
2021-09-29 00:18:33 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-29 00:18:39 +0000 <sclv> we should be recommending ghcup for windows now. its sufficiently tested. that's one of the prs in flight for the downloads page
2021-09-29 00:18:49 +0000 <free_functor> monochrom, then in that way, we give users a 2 click copy-paste installation experience like other lang pages, even if they're windows users
2021-09-29 00:19:15 +0000 <tabaqui> I've just started reading SM and company paper about haskell GC, hope to understand something
2021-09-29 00:19:22 +0000 <monochrom> If you look into the implementation of TChan, you may be able to see that each node can take up say 4 machine words.
2021-09-29 00:19:53 +0000 <tabaqui> as far as I understand, TChan is basically a linked list of TVars
2021-09-29 00:20:13 +0000 <monochrom> Sure.
2021-09-29 00:20:17 +0000 <tabaqui> and when the end is very far from the beginning, gc can't free the head
2021-09-29 00:20:28 +0000 <monochrom> So each list node is already 3 words.
2021-09-29 00:20:36 +0000 <monochrom> Each TVar is 1 or 2 words.
2021-09-29 00:20:55 +0000 <monochrom> That's already 4 to 5.
2021-09-29 00:21:11 +0000 <free_functor> sclv, does GHCUP for windows use WSL II?
2021-09-29 00:21:15 +0000 <koala_man> sclv: it's saying "cabal: The run command can only run an executable as a whole, not files or modules within them, but the target 'test/shellcheck.hs' refers to the file test/shellcheck.hsin the test suite test-shellcheck.". The file is an executable (i.e. has a main method). Is it saying it can't span multiple files?
2021-09-29 00:21:31 +0000 <sclv> nope, no wsl. the standard windows haskell toolchain uses msys
2021-09-29 00:21:54 +0000 <free_functor> sclv, I was noticing that is what the choco package uses
2021-09-29 00:22:22 +0000 <tabaqui> so... Can I force GC to collect the fully read tchan?
2021-09-29 00:22:30 +0000 <sclv> koala_man: yes, the run runs a component, or runs a script. it doesn't run a single file. you can use cabal to create a ghc environment file, and when one of those is around, then the correct package imports will be in scope
2021-09-29 00:22:42 +0000 <sclv> ?hoogle performGC
2021-09-29 00:22:42 +0000 <lambdabot> System.Mem performGC :: IO ()
2021-09-29 00:22:42 +0000 <lambdabot> BasePrelude performGC :: IO ()
2021-09-29 00:22:42 +0000 <lambdabot> Pipes.Concurrent performGC :: IO ()
2021-09-29 00:23:07 +0000 <free_functor> lol, was there ever a version of ghcup that installed on windows via a chocolately wrapper? That feels devious but also kind of cursed!
2021-09-29 00:23:30 +0000 <awpr> are you sure the TChan is actually retaining anything? could it just be that the runtime is holding onto the memory in anticipation of allocating it later?
2021-09-29 00:23:33 +0000 <monochrom> I think if you have like "threadDelay (2 * 10^6)", that will already trigger GC?
2021-09-29 00:23:39 +0000 <sclv> note that ghc does _not_ release memory it allocates, iirc. so performing gc might reduce the active footprint, but you won't necessary see the effect directly in a memory monitor
2021-09-29 00:23:54 +0000 <sclv> also, no, ghcup never did windows any other way than this
2021-09-29 00:24:01 +0000 <tabaqui> nope, didn't help
2021-09-29 00:24:24 +0000 <tabaqui> right, I hope it just collects the first node of the tchan
2021-09-29 00:24:50 +0000 <sclv> in any case, looking at "memory usage" won't tell you what sort of leaks do or don't occur in terms of things not being collected when you expect. you need to profile with heap profiling for that
2021-09-29 00:25:22 +0000 <free_functor> sclv, when a PR goes out to the haskell.org pront page, do they have the metrics to tell if there has been an improvement?
2021-09-29 00:25:46 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-09-29 00:25:54 +0000 <tabaqui> awpr: both tchans are empty. Broadcast is by definition, and read tchan is empty cause I check it later
2021-09-29 00:26:06 +0000 <sclv> there's google metrics, but its hard to judge what "improvement" means. it'll let one figure out "conversion rates to ghcup clickthrus" i guess..??
2021-09-29 00:26:29 +0000 <tabaqui> sclv: I did profiling - as I understood, leak is in TVars (which are TChan nodes)
2021-09-29 00:27:26 +0000 <tabaqui> sclv: btw, you mentioned that ghc does not release memory. So what can be done here?
2021-09-29 00:27:42 +0000 <sclv> idk.. nothing?
2021-09-29 00:27:56 +0000 <sclv> i just mean that if ghc system memory usage hits some high water mark you might not see that released
2021-09-29 00:28:08 +0000 <awpr> I just profiled it. what I'm seeing looks like there is no space leak
2021-09-29 00:28:13 +0000 <free_functor> sclv, in once scenario, the page would serve the new version to 10% of the users, at random, for a week... if rate of downloads increases significantly among the test group, then the change rolls out...
2021-09-29 00:28:25 +0000 <free_functor> doing this on top of a hakyll page would be.... hmmm...
2021-09-29 00:28:29 +0000 <awpr> heap size grows for half a second, then shrinks for 2 seconds, and then it's negligible
2021-09-29 00:28:29 +0000 <sclv> there's no technology for a/b testing vis a vis how the website is built
2021-09-29 00:29:10 +0000 <sclv> ok, sounds like no leak then, just a "trick of the light"
2021-09-29 00:30:06 +0000 <tabaqui> awpr: can you confirm 600M of resident memory after 3 seconds?
2021-09-29 00:30:37 +0000lavaman(~lavaman@98.38.249.169)
2021-09-29 00:31:29 +0000 <awpr> yeah. I think that's just the GHC runtime not handing memory back to the OS
2021-09-29 00:31:46 +0000 <tabaqui> not good
2021-09-29 00:31:49 +0000 <awpr> why?
2021-09-29 00:32:13 +0000 <tabaqui> memory is limited, and this program doesn't use it
2021-09-29 00:32:31 +0000 <sclv> but OSes are designed to let you overallocate memory with no problem
2021-09-29 00:32:37 +0000 <sclv> as long as you don't use it
2021-09-29 00:32:39 +0000 <awpr> if the program exits soon, it has no effect. if it doesn't, it'll probably allocate again soon, and returning memory would make those allocations expensive
2021-09-29 00:32:40 +0000 <sclv> that's why ghc made this choice
2021-09-29 00:32:41 +0000 <tabaqui> it's virtual memory
2021-09-29 00:33:01 +0000 <sclv> right. if you don't use it, it doesn't prevent someone else from using it too
2021-09-29 00:33:01 +0000 <tabaqui> I'm ok that ghc sometimes allocate 1TB of virtual memory
2021-09-29 00:33:14 +0000 <tabaqui> but resident is another case
2021-09-29 00:33:22 +0000 <free_functor> sclv, I suppose that before making any PRs for the front page, it would be helpful to give the site maintainers a believable way to run an AB experiment on a statick hackyll page
2021-09-29 00:33:30 +0000 <monochrom> tabaqui: I decided to try this: rename your main to main2, define my own "main = main2 >> main2". And of course change "100" to "10" so I don't wait that long.
2021-09-29 00:34:02 +0000 <monochrom> It does not occupy 1200MB. It still only occupies 600M, ever. I rest my case.
2021-09-29 00:34:20 +0000 <monochrom> And I have also tried variations in which I reuse r and w, no creating new channels.
2021-09-29 00:35:24 +0000 <tabaqui> 740 in my case, but I catch your point
2021-09-29 00:35:39 +0000 <sclv> tabaqui: with a sufficiently recent ghc you have some tuning options: https://well-typed.com/blog/2021/03/memory-return/
2021-09-29 00:36:33 +0000 <monochrom> Oh, 740M when without -threaded. I had -threaded.
2021-09-29 00:37:05 +0000 <awpr> threads occupy negative memory, I'd never have guessed
2021-09-29 00:37:58 +0000 <monochrom> Oh the flip side, I have seen -threaded causing a bit of slowness for unconcurrent code.
2021-09-29 00:38:45 +0000 <monochrom> But lately I have been brainwashed to always say "-O2 -threaded" because that's what open.kattis.com uses. :)
2021-09-29 00:38:52 +0000 <tabaqui> https://gitlab.haskell.org/ghc/ghc/-/issues/14702
2021-09-29 00:38:55 +0000 <tabaqui> Found this issue
2021-09-29 00:39:13 +0000 <tabaqui> nvm, it doesn't explain
2021-09-29 00:39:25 +0000 <tabaqui> ~0 * 4 < 600Mb
2021-09-29 00:39:47 +0000 <monochrom> And BTW the memoization mistake puzzle I posted earlier, the real problem I made my mistake in is https://open.kattis.com/problems/fixingbugs
2021-09-29 00:41:05 +0000 <tabaqui> https://gitlab.haskell.org/ghc/ghc/-/merge_requests/5036
2021-09-29 00:41:19 +0000 <monochrom> :)
2021-09-29 00:42:42 +0000 <tabaqui> "+RTS -Fd0" shrink it to 100M
2021-09-29 00:43:28 +0000 <tabaqui> uh, any Fd does the same :)
2021-09-29 00:46:56 +0000 <monochrom> I respect being concerned about a program that holds on to space that it has once written to and no longer needs.
2021-09-29 00:47:16 +0000 <tabaqui> docs are saying that Fd is defaulted to 4, but setting -Fd4 manually makes a lot of help still
2021-09-29 00:47:39 +0000 <monochrom> "the OS doesn't allocate the pages anyway" holds only when you have never written to it.
2021-09-29 00:48:07 +0000 <monochrom> But you have. Now the OS thinks it has important data. It goes to swap, at best.
2021-09-29 00:48:49 +0000 <monochrom> Swap is both finite and sucky.
2021-09-29 00:49:16 +0000 <monochrom> If every program decides to cause 600M on swap, you will still run into OOM pretty quickly.
2021-09-29 00:49:20 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 246 seconds)
2021-09-29 00:50:06 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 245 seconds)
2021-09-29 00:50:47 +0000 <Cajun> so a friend of mine is trying to install ghc through ghcup and so far all has worked but when installing ghc, it always failed with `BuildFailed failed in dir [dir]: Process "make" with arguments ["install"] failed with exit code 2`
2021-09-29 00:51:35 +0000 <Axman6> which os?
2021-09-29 00:51:42 +0000 <Cajun> debian on WSL2
2021-09-29 00:51:50 +0000 <Cajun> same thing i run so idk why theres an issue with it
2021-09-29 00:52:11 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-09-29 00:52:25 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-29 00:52:37 +0000 <Axman6> is make installed?
2021-09-29 00:52:43 +0000 <Cajun> yup
2021-09-29 00:52:58 +0000 <tabaqui> It's not "-Fd", but just "-F". I'll stay on -F1, it seems pretty well
2021-09-29 00:53:00 +0000 <Axman6> does the error mention any logs? There should be some somewhere
2021-09-29 00:53:13 +0000 <tabaqui> and probably I should wait for 9.2 on stackage
2021-09-29 00:54:38 +0000alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-09-29 00:55:05 +0000 <Cajun> Axman6: it does. it complains `ghc-pkg: couldnt open database [db] for modification: [omitted]: hLock: invalid argument (invalid argument) ghc.mk:979: recipe for target 'install_packages' failed`
2021-09-29 00:55:07 +0000 <tabaqui> -M also helps
2021-09-29 00:55:15 +0000 <tabaqui> allright, I need to sleep
2021-09-29 00:55:23 +0000 <tabaqui> thanks guys, you've helped a lot!
2021-09-29 00:55:48 +0000 <Cajun> oh and after that Make complains that the `install` recipe failed
2021-09-29 00:56:20 +0000 <Axman6> hmm, something up with package db by the looks of it - no idea how to fix that, it's been a very long time since I've had issues like that!
2021-09-29 00:59:03 +0000tabaqui(~root@46.39.45.162) (Quit: WeeChat 3.2)
2021-09-29 01:02:08 +0000Psybur(~Psybur@mobile-166-170-32-197.mycingular.net) (Remote host closed the connection)
2021-09-29 01:07:17 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 01:07:24 +0000a6a45081-2b83(~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507)
2021-09-29 01:08:03 +0000 <a6a45081-2b83> Hi, I am looking at `memoized_fib = (map fib [0 ..] !!)` So if I call `memoized_fib 10^25` will it allocate/create 10^25 thunks?
2021-09-29 01:08:27 +0000 <a6a45081-2b83> or some other function than fib which does not require computation of all the 10^25-1 thunks?
2021-09-29 01:09:16 +0000geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-29 01:10:47 +0000 <monochrom> Yes. Parse error.
2021-09-29 01:13:26 +0000Robin_Jadoul(~Robin_Jad@152.67.64.160) (Ping timeout: 245 seconds)
2021-09-29 01:13:40 +0000 <seydar> monochrom: yep, apparently network doesn't come with GHC anymore. do you know why that change was made?
2021-09-29 01:14:18 +0000 <monochrom> I don't know.
2021-09-29 01:15:13 +0000geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-29 01:17:07 +0000geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-29 01:17:07 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-29 01:17:55 +0000 <Axman6> a6a45081-2b83: I don't think that will effectively memoise anything
2021-09-29 01:19:13 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-09-29 01:20:19 +0000 <Axman6> if you had: fibs = map fib [0..]; memoise_fibs = (fibs !!) it would. and you would actually take advantage of that memoisation if you defined fib n = memoise_fibs (n-1) + memoise_fibs (n-2) (with appropriate handling of fib 0 and fib 1)
2021-09-29 01:20:33 +0000 <geekosaur> seydar, ghc ships with the minimum needed to build ghc, not with a "batteries included" ecosystem
2021-09-29 01:20:50 +0000xff0x(~xff0x@2001:1a81:534d:3900:7ca7:1f1d:7921:2152) (Ping timeout: 246 seconds)
2021-09-29 01:21:26 +0000 <geekosaur> back in the day it included more of an ecosystem, but that became unsupportable because it meant e.g. network could only be safely upgraded with a ghc upgrade
2021-09-29 01:22:14 +0000 <a6a45081-2b83> Axman6: that sounds bad if I have sparse calls, say only 1000 values in range of 0 to 10^25. Might be better to use a hashmap or something
2021-09-29 01:22:34 +0000MQ-17J(~MQ-17J@8.6.144.233)
2021-09-29 01:22:44 +0000xff0x(~xff0x@2001:1a81:5386:1100:54f2:236a:7bb5:55bf)
2021-09-29 01:22:52 +0000 <a6a45081-2b83> Also, I looked at fix and memoFix from haskellWiki but still confused if that can help if I have a function like `go :: Int128 -> [Int128] -> Int` ...
2021-09-29 01:22:53 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-09-29 01:23:23 +0000 <Axman6> yeah it's a memory-time trade off, if memory is more valuable (and at 10^25 it probably is) then using the "linear" algorithm to compute fibs is probably worthwhile and using a map or something
2021-09-29 01:31:12 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 01:33:51 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-09-29 01:36:16 +0000 <seydar> geekosaur: oh interesting, that makes perfect sense
2021-09-29 01:40:26 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-09-29 01:41:03 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-29 01:41:03 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-29 01:41:03 +0000wroathe(~wroathe@user/wroathe)
2021-09-29 01:42:11 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Ping timeout: 246 seconds)
2021-09-29 01:44:16 +0000 <seydar> okay, so now i'm unable to see `iNADDR_ANY` or `send` from the Network.Socket package. It can see all the other parts (I'm implementing https://wiki.haskell.org/Implement_a_chat_server#Simple_socket_server)
2021-09-29 01:45:55 +0000 <Axman6> it's worth noting that that page was last edited in 2019 and it's likely there's a fair amount that's out of date - you might try loading Network.Socket into GHCi and :browse'ing it to see what is actually there and if it still amtches
2021-09-29 01:46:02 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2021-09-29 01:46:08 +0000 <Axman6> matches*
2021-09-29 01:47:05 +0000goepsilongo(~goepsilon@2603-7000-ab00-62ed-11dd-67ac-2a26-67df.res6.spectrum.com)
2021-09-29 01:47:05 +0000 <geekosaur> network has been pretty much rewritten since then, I think.
2021-09-29 01:48:06 +0000 <geekosaur> in fact I think you want the network-bsd package
2021-09-29 01:48:26 +0000 <glguy> seydar, iNADDR_ANY is old tech. you'd only need network-bsd for some really specific stuff these days
2021-09-29 01:48:52 +0000 <Axman6> And if you're feeling adventurous and find how to fix things, maybe you could update the wiki
2021-09-29 01:50:10 +0000 <glguy> https://hackage.haskell.org/package/network-3.1.2.2/docs/Network-Socket.html has an example at the beginning about how you make make a listening server
2021-09-29 01:50:31 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds)
2021-09-29 01:50:34 +0000 <glguy> sending of bytestrings is in Network.Socket.ByteString over here: https://hackage.haskell.org/package/network-3.1.2.2/docs/Network-Socket-ByteString.html#v:send
2021-09-29 01:51:04 +0000yinghua(~yinghua@2800:2121:1400:1db:c8ff:6a08:d6d8:71db) (Quit: Leaving)
2021-09-29 01:54:37 +0000fef(~thedawn@user/thedawn)
2021-09-29 01:54:39 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-29 01:55:34 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-29 01:55:34 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-29 01:55:34 +0000wroathe(~wroathe@user/wroathe)
2021-09-29 01:56:03 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 01:59:32 +0000alx741(~alx741@186.178.109.237) (Ping timeout: 252 seconds)
2021-09-29 01:59:43 +0000jespada(~jespada@2803:9800:9842:7a62:8558:368:788c:6dc6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-09-29 02:00:53 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-09-29 02:04:41 +0000Carro(~Carro@2806:261:40a:1389:407c:dfb9:3c44:5688)
2021-09-29 02:05:28 +0000td_(~td@muedsl-82-207-238-070.citykom.de) (Ping timeout: 252 seconds)
2021-09-29 02:07:02 +0000 <seydar> glguy: thanks! and I see now at the top of the Network.Socket docs, it says to use ByteString for sending
2021-09-29 02:07:29 +0000td_(~td@muedsl-82-207-238-213.citykom.de)
2021-09-29 02:12:25 +0000alx741(~alx741@186.178.109.205)
2021-09-29 02:12:36 +0000MQ-17J(~MQ-17J@8.6.144.233) (Ping timeout: 245 seconds)
2021-09-29 02:23:32 +0000alx741(~alx741@186.178.109.205) (Quit: alx741)
2021-09-29 02:24:00 +0000seydar(~seydar@154-27-113-252.starry-inc.net) (Quit: leaving)
2021-09-29 02:28:51 +0000goepsilongo(~goepsilon@2603-7000-ab00-62ed-11dd-67ac-2a26-67df.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-09-29 02:28:51 +0000goepsilongo_(~goepsilon@2603-7000-ab00-62ed-c4b5-f493-7437-ddea.res6.spectrum.com)
2021-09-29 02:30:28 +0000DigitalKiwi(~kiwi@192.241.157.119) (Quit: quite.)
2021-09-29 02:31:15 +0000DigitalKiwi(~kiwi@192.241.157.119)
2021-09-29 02:40:00 +0000doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Quit: ERC (IRC client for Emacs 28.0.50))
2021-09-29 02:49:01 +0000Carro(~Carro@2806:261:40a:1389:407c:dfb9:3c44:5688) (Quit: Client closed)
2021-09-29 02:51:54 +0000segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 268 seconds)
2021-09-29 02:56:46 +0000pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 260 seconds)
2021-09-29 02:59:15 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 03:01:59 +0000pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2021-09-29 03:02:36 +0000Carro(~Carro@2806:261:40a:1389:407c:dfb9:3c44:5688)
2021-09-29 03:03:41 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 264 seconds)
2021-09-29 03:04:17 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-09-29 03:05:29 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-09-29 03:16:45 +0000zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-09-29 03:18:11 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-09-29 03:29:36 +0000justsomeguy(~justsomeg@user/justsomeguy)
2021-09-29 03:35:31 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 245 seconds)
2021-09-29 03:35:47 +0000agoraphobic_(~agoraphob@ip11-173.bon.riksnet.se) (Ping timeout: 252 seconds)
2021-09-29 03:36:18 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-09-29 03:37:18 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 03:38:06 +0000tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-09-29 03:42:38 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-09-29 03:42:57 +0000justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-29 03:46:57 +0000fvr(uid503686@id-503686.uxbridge.irccloud.com)
2021-09-29 03:47:40 +0000lavaman(~lavaman@98.38.249.169)
2021-09-29 03:51:01 +0000agoraphobic(~agoraphob@ip11-173.bon.riksnet.se)
2021-09-29 03:52:32 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-09-29 04:05:52 +0000pzuidhoek(~textual@82-95-239-200.ip.xs4all.nl)
2021-09-29 04:10:37 +0000pzuidhoek(~textual@82-95-239-200.ip.xs4all.nl) (Quit: Textual IRC Client: www.textualapp.com)
2021-09-29 04:11:52 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-29 04:14:50 +0000vysn(~vysn@user/vysn)
2021-09-29 04:15:24 +0000Guest20(~textual@82-95-239-200.ip.xs4all.nl)
2021-09-29 04:19:00 +0000Guest20(~textual@82-95-239-200.ip.xs4all.nl) (Client Quit)
2021-09-29 04:19:36 +0000Guest20(~textual@82-95-239-200.ip.xs4all.nl)
2021-09-29 04:21:16 +0000Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-09-29 04:23:39 +0000zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-09-29 04:24:43 +0000zaquest(~notzaques@5.128.210.178)
2021-09-29 04:26:41 +0000tommd(~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 246 seconds)
2021-09-29 04:31:39 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-09-29 04:35:57 +0000slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-09-29 04:38:33 +0000Carro(~Carro@2806:261:40a:1389:407c:dfb9:3c44:5688) (Quit: Client closed)
2021-09-29 04:42:36 +0000oxide(~lambda@user/oxide)
2021-09-29 04:44:40 +0000Guest20(~textual@82-95-239-200.ip.xs4all.nl) (Quit: Textual IRC Client: www.textualapp.com)
2021-09-29 04:56:18 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 04:58:01 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 245 seconds)
2021-09-29 04:59:59 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-09-29 05:00:24 +0000fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-09-29 05:00:31 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-29 05:00:33 +0000iridium__(~iridium@223.235.192.51)
2021-09-29 05:04:50 +0000notzmv(~zmv@user/notzmv) (Ping timeout: 246 seconds)
2021-09-29 05:16:38 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-29 05:17:50 +0000MidAutumnMoon(~MidAutumn@user/midautumnmoon)
2021-09-29 05:22:58 +0000Andrew_(~andrew@user/andrewyu)
2021-09-29 05:23:35 +0000AndrewYu(~andrew@user/andrewyu) (Ping timeout: 252 seconds)
2021-09-29 05:27:07 +0000mei(~mei@user/mei)
2021-09-29 05:38:05 +0000sndr(~sander@user/sander)
2021-09-29 05:38:26 +0000sander(~sander@user/sander) (Ping timeout: 252 seconds)
2021-09-29 05:38:48 +0000sndrsander
2021-09-29 05:46:07 +0000takuan(~takuan@178-116-218-225.access.telenet.be)
2021-09-29 05:56:40 +0000fvr(uid503686@id-503686.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-29 05:59:30 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 265 seconds)
2021-09-29 06:00:09 +0000vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-09-29 06:00:13 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-29 06:01:26 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 06:05:59 +0000ub(~Thunderbi@178.115.72.201.wireless.dyn.drei.com)
2021-09-29 06:07:50 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 06:10:19 +0000a6a45081-2b83(~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection)
2021-09-29 06:11:22 +0000michalz(~michalz@185.246.204.33)
2021-09-29 06:13:20 +0000img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-29 06:19:27 +0000emf(~emf@2620:10d:c090:400::5:8ff1)
2021-09-29 06:19:41 +0000img(~img@user/img)
2021-09-29 06:26:14 +0000emf(~emf@2620:10d:c090:400::5:8ff1) (Quit: emf)
2021-09-29 06:26:32 +0000emf(~emf@2620:10d:c090:400::5:8ff1)
2021-09-29 06:29:20 +0000qbt(~edun@user/edun)
2021-09-29 06:32:47 +0000lavaman(~lavaman@98.38.249.169)
2021-09-29 06:37:14 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 246 seconds)
2021-09-29 06:37:22 +0000 <Axman6> Could you use pattern synonyms to make a pattern like foo (PrefixedBy "Hello" rest), that would be the same as 'H':'e':'l':'l':'o':rest?
2021-09-29 06:40:40 +0000 <c_wraith> Should be able to.
2021-09-29 06:40:47 +0000 <c_wraith> :t stripPrefix
2021-09-29 06:40:48 +0000 <lambdabot> Eq a => [a] -> [a] -> Maybe [a]
2021-09-29 06:41:14 +0000 <c_wraith> Should just be a view pattern involving that
2021-09-29 06:41:47 +0000 <c_wraith> and if you want it to be bidirectional, it's ++ in the other direction
2021-09-29 06:41:58 +0000JeSCaLis23-F(~rizon@188.119.22.153)
2021-09-29 06:42:08 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-09-29 06:43:05 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-29 06:43:23 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-09-29 06:46:04 +0000JeSCaLis23-F(~rizon@188.119.22.153) (Client Quit)
2021-09-29 06:47:51 +0000phma(~phma@host-67-44-208-197.hnremote.net) (Read error: Connection reset by peer)
2021-09-29 06:48:34 +0000phma(~phma@host-67-44-208-52.hnremote.net)
2021-09-29 06:50:02 +0000 <iridium__> is there a way to change the "override" the show method for lists?
2021-09-29 06:50:10 +0000 <iridium__> s/change the//
2021-09-29 06:50:35 +0000 <c_wraith> Nope. Your options are using a different type or using a different function
2021-09-29 06:52:17 +0000 <iridium__> c_wraith: ok. thanks.
2021-09-29 06:57:07 +0000cfricke(~cfricke@user/cfricke)
2021-09-29 07:01:36 +0000max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-09-29 07:05:56 +0000emf(~emf@2620:10d:c090:400::5:8ff1) (Ping timeout: 245 seconds)
2021-09-29 07:08:48 +0000 <Axman6> @hoogle concapMapM
2021-09-29 07:08:48 +0000 <lambdabot> No results found
2021-09-29 07:09:03 +0000gehmehgeh(~user@user/gehmehgeh)
2021-09-29 07:09:19 +0000 <c_wraith> Axman6: guess not. Looks like you can't use pattern arguments as inputs in pattern matches - they're outputs only
2021-09-29 07:09:27 +0000 <Axman6> c_wraith: hmm, interesting. Mostly just a thought, but one day I reckon I might have a use for that
2021-09-29 07:09:38 +0000 <Axman6> hmm, ok
2021-09-29 07:09:47 +0000 <c_wraith> Axman6: I *almost* got there with DataKinds
2021-09-29 07:10:02 +0000chele(~chele@user/chele)
2021-09-29 07:10:02 +0000 <c_wraith> But it turns out to be... uh..
2021-09-29 07:10:20 +0000 <c_wraith> error: Type applications in patterns are not yet supported
2021-09-29 07:10:40 +0000 <c_wraith> And without that... Can't quite work.
2021-09-29 07:11:43 +0000 <c_wraith> Hmm. Maybe a different strategy can work.
2021-09-29 07:16:25 +0000notzmv(~zmv@user/notzmv)
2021-09-29 07:17:30 +0000 <c_wraith> Hmm, the other thing I wanted to try also doesn't work. It feels like something should, I just haven't put it together.
2021-09-29 07:17:34 +0000nehsou^(~nehsou@68.101.50.106) (Remote host closed the connection)
2021-09-29 07:20:27 +0000 <Axman6> Can pattern synonyms be recursive? =)
2021-09-29 07:21:46 +0000xff0x(~xff0x@2001:1a81:5386:1100:54f2:236a:7bb5:55bf) (Ping timeout: 245 seconds)
2021-09-29 07:22:54 +0000xff0x(~xff0x@2001:1a81:5386:1100:29ed:389e:8e87:468f)
2021-09-29 07:23:07 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-29 07:24:52 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:6beb:5bcb:e1d4:764)
2021-09-29 07:26:08 +0000rtjure(~rtjure@bras-79-132-17-74.comnet.bg)
2021-09-29 07:26:35 +0000ub(~Thunderbi@178.115.72.201.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
2021-09-29 07:28:29 +0000emf(~emf@2620:10d:c090:400::5:8ff1)
2021-09-29 07:28:46 +0000nrl^(~nrl@68.101.50.106)
2021-09-29 07:35:58 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 07:40:53 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-09-29 07:42:09 +0000 <c_wraith> Axman6: here. You can think of this as either performance art or a joke: https://paste.tomsmeding.com/KmOT6PZy
2021-09-29 07:45:31 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 07:56:52 +0000acidjnk_new3(~acidjnk@p200300d0c703cb53f8ed89eaeab7169f.dip0.t-ipconnect.de)
2021-09-29 07:56:54 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-09-29 07:59:02 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 265 seconds)
2021-09-29 07:59:36 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-09-29 07:59:38 +0000emf(~emf@2620:10d:c090:400::5:8ff1) (Ping timeout: 260 seconds)
2021-09-29 08:00:05 +0000 <Axman6> =| amazing, but what did it cost?
2021-09-29 08:00:11 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 08:00:13 +0000iridium__(~iridium@223.235.192.51) ()
2021-09-29 08:00:46 +0000dyeplexer(~dyeplexer@user/dyeplexer)
2021-09-29 08:02:23 +0000fvr(uid503686@id-503686.uxbridge.irccloud.com)
2021-09-29 08:03:10 +0000gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-09-29 08:05:20 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-09-29 08:05:50 +0000acidjnk_new(~acidjnk@p200300d0c703cb53c55fe893eb04092a.dip0.t-ipconnect.de)
2021-09-29 08:05:55 +0000hendursa1(~weechat@user/hendursaga)
2021-09-29 08:08:17 +0000 <c_wraith> only sanity
2021-09-29 08:08:54 +0000hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-09-29 08:09:14 +0000acidjnk_new3(~acidjnk@p200300d0c703cb53f8ed89eaeab7169f.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-09-29 08:12:16 +0000NinjaTrappeur(~ninja@user/ninjatrappeur) (Quit: WeeChat 3.1)
2021-09-29 08:13:07 +0000NinjaTrappeur(~ninja@user/ninjatrappeur)
2021-09-29 08:16:28 +0000gehmehgeh(~user@user/gehmehgeh)
2021-09-29 08:16:36 +0000Heisen(~Heisen@77.240.67.20)
2021-09-29 08:17:10 +0000geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-29 08:17:33 +0000geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-29 08:18:54 +0000hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-29 08:21:42 +0000econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-09-29 08:22:17 +0000siraben(~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:17 +0000MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:17 +0000Arathorn(~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:17 +0000kadoban(~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:17 +0000peddie(~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:17 +0000psydroid(~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:17 +0000Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000fgaz(~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000jophish(~jophish@2001:470:69fc:105::670) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000kar1(~kar1@2001:470:69fc:105::c308) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000PotatoHatsue(~berberman@2001:470:69fc:105::b488) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000ericson2314(~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000zfnmxt(~zfnmxtzfn@user/zfnmxt) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000carmysilna(~brightly-@2001:470:69fc:105::2190) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000amesgen[m](~amesgenm]@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000Ollie[m](~ollieocha@2001:470:69fc:105::41a5) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000SawyerBergeron[m(~sawyerber@2001:470:69fc:105::3036) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000moats(~oats@user/oats) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000aidy(~aidy@2001:470:69fc:105::c7b4) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000schuelermine[m](~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000bitonic(~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000soft(~soft-matr@2001:470:69fc:105::c75) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000thomasjm[m](~thomasjmm@2001:470:69fc:105::c6d9) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000bakinonion[m](~bakinonio@2001:470:69fc:105::ddb3) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000erinvanderveen[m(~erinvande@2001:470:69fc:105::e8f3) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000zwro[m](~zwromatri@2001:470:69fc:105::1d4) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:18 +0000jchia[m](~jchiamatr@2001:470:69fc:105::c50b) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000Magnus[m](~magthetch@2001:470:69fc:105::d1a7) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000wysteriary[m](~wysteriar@2001:470:69fc:105::a42e) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000Topik[m](~topikmatr@2001:470:69fc:105::a082) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000cloudy(~cloudy@2001:470:69fc:105::50c0) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000srid[m](~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000dualinverter[m](~dualinver@2001:470:69fc:105::16a7) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000ManofLetters[m](~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000hjulle[m](~hjullemat@2001:470:69fc:105::1dd) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:19 +0000unclechu(~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:20 +0000reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:21 +0000fcortesi(~fcortesi@2001:470:69fc:105::f3a9) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:24 +0000shiraeeshi[m](~shiraeesh@2001:470:69fc:105::1:77) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:24 +0000commuswift[m](~commuswif@2001:470:69fc:105::e862) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:26 +0000jesser[m](~jessermat@2001:470:69fc:105::d5ae) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:26 +0000stoicswe[m](~deadlette@2001:470:69fc:105::d277) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:27 +0000smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000craige[m](~craigemcw@2001:470:69fc:105::35f1) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000ixlun(~ixlun@2001:470:69fc:105::41b3) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000afotgkmnzj7asv3r(~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000unrooted(~unrooted@2001:470:69fc:105::a4a) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000asdofindia-m(~akshaymat@2001:470:69fc:105::831) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000dexmad[m](~dexmadmat@2001:470:69fc:105::e056) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000ongy[m](~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000fendor[m](~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:28 +0000hsek[m](~hsekmatri@2001:470:69fc:105::d18f) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:29 +0000hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:29 +0000jneira[m](~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:29 +0000infinisil(~infinisil@2001:470:69fc:105::ff8) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:29 +0000Tisoxin(~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:29 +0000cdsmith(~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:29 +0000ormaaj(~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:29 +0000rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:30 +0000ServerStatsDisco(~serversta@2001:470:69fc:105::1a) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:30 +0000sm(~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:30 +0000Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:30 +0000lwe[m](~dendrumat@2001:470:69fc:105::2f9b) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:30 +0000Drew[m](~drewefenw@2001:470:69fc:105::c8c4) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:30 +0000IgnatInsarov[m](~kindaroma@2001:470:69fc:105::f5d9) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:32 +0000ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:32 +0000OndejSkup[m](~mimivxmat@2001:470:69fc:105::c300) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:32 +0000bb010g(~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:32 +0000denbrahe[m](~denbrahem@2001:470:69fc:105::19c0) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:32 +0000Deewiant(~deewiant@2001:470:69fc:105::2fd3) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:32 +0000sky_lounge[m](~skylounge@2001:470:69fc:105::efa6) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000quantum(~quantum@user/quantum/x-8556232) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000monadfritz[m](~ahdytmatr@2001:470:69fc:105::e1f1) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000fakehacker[m](~fakehacke@2001:470:69fc:105::b5f0) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000kevin[m]1(~pnotequal@2001:470:69fc:105::a54) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000YoungChiefBTW(~youngchie@user/youngchiefbtw) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000reddishblue[m](~reddishbl@2001:470:69fc:105::21eb) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000justosophy[m](~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000sam[m]1(~sammtopoi@2001:470:69fc:105::e887) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000Deide(~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:33 +0000rosariopulella[m(~rosariopu@2001:470:69fc:105::a57) (Quit: Bridge terminating on SIGTERM)
2021-09-29 08:22:41 +0000acidjnk_new3(~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
2021-09-29 08:23:28 +0000 <Heisen> Hello, I am trying to print out each element in my list with the same principles as I did with my for loop however I don't get it to work, could someone give me a helping hand?:] https://paste.tomsmeding.com/p0LlFz2c
2021-09-29 08:24:46 +0000 <c_wraith> you're testing to see if the tail of the list is empty
2021-09-29 08:25:25 +0000 <c_wraith> Though more initially problematic, the type you provided doesn't match the type it has
2021-09-29 08:25:42 +0000acidjnk_new(~acidjnk@p200300d0c703cb53c55fe893eb04092a.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-09-29 08:25:44 +0000jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef)
2021-09-29 08:26:45 +0000 <Heisen> oh wow, thank yo
2021-09-29 08:26:48 +0000 <Heisen> -u
2021-09-29 08:26:59 +0000maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2021-09-29 08:27:11 +0000jchia[m](~jchiamatr@2001:470:69fc:105::c50b)
2021-09-29 08:27:11 +0000MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22)
2021-09-29 08:27:23 +0000dualinverter[m](~dualinver@2001:470:69fc:105::16a7)
2021-09-29 08:27:23 +0000fgaz(~fgaz@2001:470:69fc:105::842)
2021-09-29 08:27:23 +0000peddie(~peddie@2001:470:69fc:105::25d)
2021-09-29 08:27:23 +0000cdsmith(~cdsmithma@2001:470:69fc:105::284)
2021-09-29 08:27:23 +0000Morrow[m](~morrowmma@2001:470:69fc:105::1d0)
2021-09-29 08:27:35 +0000thomasjm[m](~thomasjmm@2001:470:69fc:105::c6d9)
2021-09-29 08:27:35 +0000hsek[m](~hsekmatri@2001:470:69fc:105::d18f)
2021-09-29 08:27:35 +0000ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2)
2021-09-29 08:27:50 +0000bb010g(~bb010g@2001:470:69fc:105::9a5)
2021-09-29 08:27:50 +0000vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2021-09-29 08:27:50 +0000Las[m](~lasmatrix@2001:470:69fc:105::74e)
2021-09-29 08:27:50 +0000ServerStatsDisco(~serversta@2001:470:69fc:105::1a)
2021-09-29 08:27:50 +0000amesgen[m](~amesgenm]@2001:470:69fc:105::82b)
2021-09-29 08:27:50 +0000the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-09-29 08:27:50 +0000moats(~oats@user/oats)
2021-09-29 08:28:02 +0000soft(~soft-matr@2001:470:69fc:105::c75)
2021-09-29 08:28:02 +0000zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2021-09-29 08:28:16 +0000oak-(~oakuniver@2001:470:69fc:105::fcd)
2021-09-29 08:28:16 +0000kadoban(~kadoban@user/kadoban)
2021-09-29 08:28:16 +0000bitonic(~bitonic@2001:470:69fc:105::1812)
2021-09-29 08:28:16 +0000ericson2314(~ericson23@2001:470:69fc:105::70c)
2021-09-29 08:28:17 +0000jophish(~jophish@2001:470:69fc:105::670)
2021-09-29 08:28:17 +0000Arathorn(~arathorn@2001:470:69fc:105::1f)
2021-09-29 08:28:17 +0000Ollie[m](~ollieocha@2001:470:69fc:105::41a5)
2021-09-29 08:28:17 +0000PotatoHatsue(~berberman@2001:470:69fc:105::b488)
2021-09-29 08:28:17 +0000ixlun(~ixlun@2001:470:69fc:105::41b3)
2021-09-29 08:28:17 +0000unclechu(~unclechu@2001:470:69fc:105::354)
2021-09-29 08:28:31 +0000Deewiant(~deewiant@2001:470:69fc:105::2fd3)
2021-09-29 08:28:31 +0000unrooted(~unrooted@2001:470:69fc:105::a4a)
2021-09-29 08:28:31 +0000rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70)
2021-09-29 08:28:31 +0000maralorn(~maralorn@2001:470:69fc:105::251)
2021-09-29 08:28:32 +0000SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd)
2021-09-29 08:28:32 +0000denbrahe[m](~denbrahem@2001:470:69fc:105::19c0)
2021-09-29 08:28:32 +0000lwe[m](~dendrumat@2001:470:69fc:105::2f9b)
2021-09-29 08:28:44 +0000jesser[m](~jessermat@2001:470:69fc:105::d5ae)
2021-09-29 08:28:59 +0000erinvanderveen[m(~erinvande@2001:470:69fc:105::e8f3)
2021-09-29 08:29:20 +0000reza[m](~rezaphone@2001:470:69fc:105::3eda)
2021-09-29 08:29:20 +0000quantum(~quantum@user/quantum/x-8556232)
2021-09-29 08:29:20 +0000marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2021-09-29 08:29:20 +0000hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4)
2021-09-29 08:29:33 +0000Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2021-09-29 08:29:45 +0000craige[m](~craigemcw@2001:470:69fc:105::35f1)
2021-09-29 08:29:57 +0000afotgkmnzj7asv3r(~afotgkmnz@2001:470:69fc:105::c24b)
2021-09-29 08:29:58 +0000schuelermine[m](~schuelerm@user/schuelermine)
2021-09-29 08:29:58 +0000sm(~sm@plaintextaccounting/sm)
2021-09-29 08:29:59 +0000reddishblue[m](~reddishbl@2001:470:69fc:105::21eb)
2021-09-29 08:30:11 +0000justosophy[m](~justosoph@2001:470:69fc:105::572f)
2021-09-29 08:30:11 +0000kevin[m]1(~pnotequal@2001:470:69fc:105::a54)
2021-09-29 08:30:11 +0000Deide(~deide@user/deide)
2021-09-29 08:30:23 +0000fakehacker[m](~fakehacke@2001:470:69fc:105::b5f0)
2021-09-29 08:30:23 +0000hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d)
2021-09-29 08:30:35 +0000IgnatInsarov[m](~kindaroma@2001:470:69fc:105::f5d9)
2021-09-29 08:30:35 +0000srid[m](~sridmatri@2001:470:69fc:105::1c2)
2021-09-29 08:30:35 +0000psydroid(~psydroid@user/psydroid)
2021-09-29 08:30:47 +0000wysteriary[m](~wysteriar@2001:470:69fc:105::a42e)
2021-09-29 08:30:47 +0000Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2021-09-29 08:30:47 +0000zwro[m](~zwromatri@2001:470:69fc:105::1d4)
2021-09-29 08:30:59 +0000stoicswe[m](~deadlette@2001:470:69fc:105::d277)
2021-09-29 08:31:11 +0000sam[m]1(~sammtopoi@2001:470:69fc:105::e887)
2021-09-29 08:31:23 +0000Topik[m](~topikmatr@2001:470:69fc:105::a082)
2021-09-29 08:31:23 +0000OndejSkup[m](~mimivxmat@2001:470:69fc:105::c300)
2021-09-29 08:31:23 +0000kar1(~kar1@2001:470:69fc:105::c308)
2021-09-29 08:31:23 +0000ongy[m](~ongymatri@2001:470:69fc:105::5018)
2021-09-29 08:31:23 +0000YoungChiefBTW(~youngchie@2001:470:69fc:105::214c)
2021-09-29 08:31:23 +0000alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2021-09-29 08:31:23 +0000asdofindia-m(~akshaymat@2001:470:69fc:105::831)
2021-09-29 08:31:23 +0000ormaaj(~ormaaj@user/ormaaj)
2021-09-29 08:31:23 +0000hjulle[m](~hjullemat@2001:470:69fc:105::1dd)
2021-09-29 08:31:37 +0000infinisil(~infinisil@2001:470:69fc:105::ff8)
2021-09-29 08:31:37 +0000Drew[m](~drewefenw@2001:470:69fc:105::c8c4)
2021-09-29 08:31:37 +0000jneira[m](~jneiramat@2001:470:69fc:105::d729)
2021-09-29 08:31:37 +0000Magnus[m](~magthetch@2001:470:69fc:105::d1a7)
2021-09-29 08:31:37 +0000siraben(~siraben@user/siraben)
2021-09-29 08:31:49 +0000dexmad[m](~dexmadmat@2001:470:69fc:105::e056)
2021-09-29 08:31:49 +0000smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2021-09-29 08:31:50 +0000SawyerBergeron[m(~sawyerber@2001:470:69fc:105::3036)
2021-09-29 08:32:02 +0000sky_lounge[m](~skylounge@2001:470:69fc:105::efa6)
2021-09-29 08:32:02 +0000Tisoxin(~ikosit@user/ikosit)
2021-09-29 08:32:14 +0000monadfritz[m](~ahdytmatr@2001:470:69fc:105::e1f1)
2021-09-29 08:32:14 +0000bakinonion[m](~bakinonio@2001:470:69fc:105::ddb3)
2021-09-29 08:32:26 +0000rosariopulella[m(~rosariopu@2001:470:69fc:105::a57)
2021-09-29 08:32:28 +0000fcortesi(~fcortesi@2001:470:69fc:105::f3a9)
2021-09-29 08:32:28 +0000ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2021-09-29 08:32:28 +0000cloudy(~cloudy@2001:470:69fc:105::50c0)
2021-09-29 08:32:40 +0000commuswift[m](~commuswif@2001:470:69fc:105::e862)
2021-09-29 08:32:40 +0000carmysilna(~brightly-@2001:470:69fc:105::2190)
2021-09-29 08:32:40 +0000fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2021-09-29 08:32:40 +0000aidy(~aidy@2001:470:69fc:105::c7b4)
2021-09-29 08:32:40 +0000shiraeeshi[m](~shiraeesh@2001:470:69fc:105::1:77)
2021-09-29 08:33:56 +0000werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 250 seconds)
2021-09-29 08:41:15 +0000zincy_(~tom@2a00:23c8:970c:4801:e07c:c539:ea16:90d3)
2021-09-29 08:41:34 +0000kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2021-09-29 08:43:21 +0000jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-09-29 08:44:01 +0000 <zincy_> What is the correct data structure to use if you have 2 grids of alphabetical chars and you want to flip and shift one of them - essentially creating a caeser cipher but with a grid instead of a list
2021-09-29 08:44:36 +0000 <kuribas> zincy_: list of lists?
2021-09-29 08:45:21 +0000 <zincy_> Yeah
2021-09-29 08:45:25 +0000 <Rembane> Data.Map! :D
2021-09-29 08:46:16 +0000 <zincy_> Rembane: How then do you do a transformation on say the x rows of the grid?
2021-09-29 08:46:43 +0000 <zincy_> [1,2][3,4]] -> [1,2][4,3]]
2021-09-29 08:47:04 +0000 <zincy_> i.e map doesnt know about position
2021-09-29 08:47:08 +0000 <Rembane> zincy_: One cell at the time. :: Data.Map (Int, Int) Int
2021-09-29 08:47:40 +0000 <Rembane> But it seems like you have a dense matrix, so a list of lists or vector of vectors are probably better.
2021-09-29 08:48:46 +0000 <zincy_> Rembane: Out of curiosity what do the keys and value types denote
2021-09-29 08:48:51 +0000 <zincy_> in your type sig
2021-09-29 08:48:52 +0000 <dminuoso> vector of vectors is always good :)
2021-09-29 08:48:58 +0000 <zincy_> Yeah
2021-09-29 08:49:34 +0000 <pavonia> Why not an MArray instead, which might be easier to handle for random access?
2021-09-29 08:49:53 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-09-29 08:50:54 +0000 <zincy_> pavonia: You mean nicer interface for random access?
2021-09-29 08:51:11 +0000 <zincy_> Interesting never heard of MArray before
2021-09-29 08:51:14 +0000 <pavonia> Also faster than Map, I guess
2021-09-29 08:51:47 +0000 <dminuoso> pavonia: It's a French commune.
2021-09-29 08:51:51 +0000 <dminuoso> Err, zincy_!
2021-09-29 08:52:54 +0000 <Heisen> Is using head and tail always bad even though I know that the list isn't empty? Also why doesn't my second solution work? https://paste.tomsmeding.com/YvFHcd6N
2021-09-29 08:52:58 +0000 <zincy_> dminuso: Is that surprise you are feeling?
2021-09-29 08:53:09 +0000 <kuribas> Heisen: yes
2021-09-29 08:53:18 +0000 <kuribas> Heisen: if you know it isn't empty, you can pattern match.
2021-09-29 08:53:38 +0000 <Heisen> How would I go about pattern matching there?
2021-09-29 08:53:39 +0000 <dminuoso> And since you're in IO, you can also simply use exitFailure or throw an exception in case the list is, unexpectedly, empty
2021-09-29 08:53:44 +0000 <dminuoso> printList (x:xs) = ...
2021-09-29 08:53:47 +0000 <dminuoso> printList [] = ...
2021-09-29 08:53:52 +0000 <kuribas> Heisen: don't write "if length l > 0"
2021-09-29 08:54:11 +0000 <kuribas> Heisen: instead, write: case l of [] -> ...; x:xs -> ...
2021-09-29 08:54:46 +0000 <kuribas> Heisen: or better: printList [] = ...; printList (x:xs) = ...
2021-09-29 08:57:57 +0000dminuosoalways starts with the more likely condition first
2021-09-29 08:58:19 +0000 <dminuoso> Just a very cheap force of habit that avoids unnecessary pattern matches in the general case. :)
2021-09-29 08:58:35 +0000azeem(~azeem@2a00:801:2d5:6b0b:3559:4c30:7a57:5531) (Read error: Connection reset by peer)
2021-09-29 08:59:37 +0000azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-29 09:00:01 +0000 <kuribas> ghc will warn about those, no?
2021-09-29 09:00:57 +0000 <Heisen> This is good? =) https://paste.tomsmeding.com/whUMkJ6j
2021-09-29 09:01:06 +0000 <Heisen> Also thank you for your time
2021-09-29 09:01:39 +0000 <kuribas> Heisen: better, but I prefer matching in the function declaration.
2021-09-29 09:04:30 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 09:06:52 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Remote host closed the connection)
2021-09-29 09:18:08 +0000arpl(~arpl@84-107-171-239.cable.dynamic.v4.ziggo.nl)
2021-09-29 09:26:41 +0000nfd(~nfd@user/nfd)
2021-09-29 09:27:04 +0000norskalm(~norskalm@101.175.64.73)
2021-09-29 09:29:53 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-29 09:30:56 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 09:32:57 +0000zer0bitz(~zer0bitz@dsl-hkibng31-54fafc-123.dhcp.inet.fi)
2021-09-29 09:34:29 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-29 09:34:50 +0000arpl(~arpl@84-107-171-239.cable.dynamic.v4.ziggo.nl) (Quit: Client closed)
2021-09-29 09:35:29 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-29 09:35:36 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-29 09:36:55 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 09:38:42 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-29 09:39:41 +0000tinwood(~tinwood@canonical/tinwood) (Remote host closed the connection)
2021-09-29 09:40:15 +0000goepsilongo(~goepsilon@2603-7000-ab00-62ed-f17d-df99-d880-46ae.res6.spectrum.com)
2021-09-29 09:40:33 +0000Guest557(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-29 09:41:32 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-29 09:42:11 +0000goepsilongo_(~goepsilon@2603-7000-ab00-62ed-c4b5-f493-7437-ddea.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-09-29 09:42:39 +0000tinwood(~tinwood@general.default.akavanagh.uk0.bigv.io)
2021-09-29 09:42:39 +0000tinwood(~tinwood@general.default.akavanagh.uk0.bigv.io) (Changing host)
2021-09-29 09:42:39 +0000tinwood(~tinwood@canonical/tinwood)
2021-09-29 09:45:30 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 09:46:16 +0000Heisen(~Heisen@77.240.67.20) (Quit: Client closed)
2021-09-29 09:48:16 +0000spruit11(~quassel@2a02:a467:ccd6:1:ed67:f262:991e:7f5) (Ping timeout: 265 seconds)
2021-09-29 09:49:41 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 09:51:05 +0000rtjure(~rtjure@bras-79-132-17-74.comnet.bg) (Ping timeout: 264 seconds)
2021-09-29 09:52:32 +0000xff0x(~xff0x@2001:1a81:5386:1100:29ed:389e:8e87:468f) (Ping timeout: 246 seconds)
2021-09-29 09:53:11 +0000iridium__(~iridium@223.235.192.51)
2021-09-29 09:54:37 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-29 09:57:43 +0000iridium__(~iridium@223.235.192.51) (Quit: leaving)
2021-09-29 09:57:47 +0000spruit11(~quassel@2a02:a467:ccd6:1:ed67:f262:991e:7f5)
2021-09-29 10:01:13 +0000phma(~phma@host-67-44-208-52.hnremote.net) (Read error: Connection reset by peer)
2021-09-29 10:01:52 +0000phma(~phma@host-67-44-208-25.hnremote.net)
2021-09-29 10:03:43 +0000xff0x(~xff0x@2001:1a81:5386:1100:29ed:389e:8e87:468f)
2021-09-29 10:08:26 +0000azeem(~azeem@emp-180-222.eduroam.uu.se) (Read error: Connection reset by peer)
2021-09-29 10:08:43 +0000azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-29 10:08:53 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 10:10:42 +0000azeem(~azeem@emp-180-222.eduroam.uu.se) (Read error: Connection reset by peer)
2021-09-29 10:11:27 +0000azeem(~azeem@2a00:801:2d5:6b0b:3559:4c30:7a57:5531)
2021-09-29 10:13:00 +0000arpl(~arpl@84-107-171-239.cable.dynamic.v4.ziggo.nl)
2021-09-29 10:13:01 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-29 10:13:11 +0000Heisen(~Heisen@77.240.67.20)
2021-09-29 10:15:00 +0000 <Heisen> When I type for example fold in GHCi and then tab, can I somehow choose which one I want with my arrow keys or something?
2021-09-29 10:17:14 +0000img_(~img@user/img)
2021-09-29 10:17:34 +0000jpds(~jpds@gateway/tor-sasl/jpds)
2021-09-29 10:18:22 +0000img(~img@user/img) (Ping timeout: 250 seconds)
2021-09-29 10:19:10 +0000ubert1(~Thunderbi@178.115.55.159.wireless.dyn.drei.com)
2021-09-29 10:20:31 +0000ubert(~Thunderbi@178.115.72.201.wireless.dyn.drei.com) (Ping timeout: 245 seconds)
2021-09-29 10:20:31 +0000ubert1ubert
2021-09-29 10:21:18 +0000shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-09-29 10:21:20 +0000azeem(~azeem@2a00:801:2d5:6b0b:3559:4c30:7a57:5531) (Read error: Connection reset by peer)
2021-09-29 10:21:28 +0000cods(~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 265 seconds)
2021-09-29 10:21:46 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 245 seconds)
2021-09-29 10:23:03 +0000azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-29 10:24:50 +0000Heisen(~Heisen@77.240.67.20) (Quit: Client closed)
2021-09-29 10:27:42 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 10:31:31 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-29 10:32:06 +0000goepsilongo_(~goepsilon@2603-7000-ab00-62ed-9cf3-4260-a35d-73be.res6.spectrum.com)
2021-09-29 10:32:08 +0000mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-29 10:32:11 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 10:33:10 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-29 10:33:37 +0000cods(~fred@82-65-232-44.subs.proxad.net)
2021-09-29 10:34:41 +0000goepsilongo(~goepsilon@2603-7000-ab00-62ed-f17d-df99-d880-46ae.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-09-29 10:41:42 +0000enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2021-09-29 10:42:03 +0000alzgh(~alzgh@user/alzgh)
2021-09-29 10:43:19 +0000ph88(~ph88@2a02:8109:9e00:7e5c:5435:afc4:e6b4:ce6b)
2021-09-29 10:44:38 +0000arpl(~arpl@84-107-171-239.cable.dynamic.v4.ziggo.nl) (Quit: Client closed)
2021-09-29 10:45:34 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 10:46:14 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 10:47:16 +0000 <dminuoso> No.
2021-09-29 10:47:45 +0000 <dminuoso> If you want this type of interactive writing, consider using haskell-language-server.
2021-09-29 10:48:01 +0000 <dminuoso> Since it exposes LSP, it integrates with many editors well.
2021-09-29 10:48:10 +0000 <dminuoso> Most offer some kind of "narrowing"
2021-09-29 10:48:40 +0000hololeap(~hololeap@user/hololeap)
2021-09-29 10:48:55 +0000 <dminuoso> Strictly speaking this could also with just with just say hasktags, but the HLS experience is quite good in general.
2021-09-29 10:50:41 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2021-09-29 10:50:50 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-29 10:50:52 +0000benin036932301(~benin@183.82.176.107) (Quit: The Lounge - https://thelounge.chat)
2021-09-29 10:50:54 +0000iridium__(~iridium@223.235.192.51)
2021-09-29 10:51:46 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 10:53:53 +0000benin036932301(~benin@183.82.176.107) (Client Quit)
2021-09-29 10:54:49 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 10:56:59 +0000benin036932301(~benin@183.82.176.107) (Client Quit)
2021-09-29 10:57:09 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-29 10:58:28 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 10:58:49 +0000iridium__(~iridium@223.235.192.51) (Quit: leaving)
2021-09-29 11:00:04 +0000azeem(~azeem@emp-180-222.eduroam.uu.se) (Ping timeout: 252 seconds)
2021-09-29 11:00:54 +0000alx741(~alx741@186.178.109.205)
2021-09-29 11:03:02 +0000azeem(~azeem@emp-180-222.eduroam.uu.se)
2021-09-29 11:06:59 +0000benin036932301(~benin@183.82.176.107) (Quit: The Lounge - https://thelounge.chat)
2021-09-29 11:07:53 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 11:08:19 +0000nfd(~nfd@user/nfd) (Ping timeout: 252 seconds)
2021-09-29 11:08:33 +0000Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: Reconnecting)
2021-09-29 11:10:26 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:6beb:5bcb:e1d4:764) (Ping timeout: 265 seconds)
2021-09-29 11:10:29 +0000 <arahael> Do we have a library that, for a given dtd, can generate random xmls? (Eg, for testing with quickcheck)?
2021-09-29 11:10:46 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 265 seconds)
2021-09-29 11:11:09 +0000AlexNoo_(~AlexNoo@178.34.161.150)
2021-09-29 11:11:17 +0000 <sshine> I haven't seen that before.
2021-09-29 11:11:50 +0000 <Cajun> there was a `random-data` package or something like that, but im not sure if it dealt with xml (and i dont know what a dtd is)
2021-09-29 11:12:42 +0000benin036932301(~benin@183.82.176.107) (Client Quit)
2021-09-29 11:12:59 +0000 <sshine> Cajun, a DTD is a document type definition. sort of like JSON Schema, but from the W3C days.
2021-09-29 11:13:16 +0000Alex_test(~al_test@178.34.161.193) (Ping timeout: 252 seconds)
2021-09-29 11:13:24 +0000Soanvig(~Soanvig@80.49.217.249.ipv4.supernova.orange.pl)
2021-09-29 11:13:26 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds)
2021-09-29 11:13:34 +0000 <arahael> I'm thinking I'll just write it myself (though by manually interpreting the dtd). This particular one is simple enough.
2021-09-29 11:13:46 +0000 <sshine> Cajun, DTDs are written in SGML, which is a meta-syntax for specifying HTML and XML.
2021-09-29 11:13:49 +0000 <arahael> (Ie, hardcoding it)
2021-09-29 11:13:52 +0000AlexZenon(~alzenon@178.34.161.193) (Ping timeout: 252 seconds)
2021-09-29 11:14:29 +0000AlexNoo(~AlexNoo@178.34.161.193) (Ping timeout: 252 seconds)
2021-09-29 11:15:42 +0000 <Soanvig> Hello guys. I have question about Parsec in that case I cannot really solve by myself. So my application uses Parsec and I want to show Parsec errors to the user. However Parsec heavily relies on `show` to print it's errors (https://hackage.haskell.org/package/parsec-3.1.14.0/docs/src/Text.Parsec.Error.html#showErrorMessa…), and I need normal,
2021-09-29 11:15:43 +0000 <Soanvig> non-escaped String as error message. Any idea how to handle that (except creating error formatter by myself)?
2021-09-29 11:15:44 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-29 11:15:47 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 11:16:26 +0000 <sshine> Cajun, so the <!DOCTYPE ...> part of XML is the DTD header :) and the <!...> tags in general is SGML.
2021-09-29 11:16:55 +0000 <Cajun> interesting, today i learned :)
2021-09-29 11:18:05 +0000 <hpc> you'll wish you didn't learn - it means parsing xml is an impure operation, since the sgml lives behind an http url
2021-09-29 11:18:19 +0000 <hpc> there have been some pretty entertaining CVEs based on that
2021-09-29 11:18:33 +0000 <arahael> Not to mention entity expansion.
2021-09-29 11:18:52 +0000 <sshine> Cajun, do you mean 'generic-random'? (can't find 'random-data')
2021-09-29 11:18:54 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:1256:fdab:1396:c482)
2021-09-29 11:19:25 +0000AlexZenon(~alzenon@178.34.161.150)
2021-09-29 11:19:26 +0000Alex_test(~al_test@178.34.161.150)
2021-09-29 11:19:56 +0000 <Cajun> that wasnt it, ill have to search for it. it used a dataset and generated random names and stuff but it may have also included file formats. didnt read into it beyond the readme
2021-09-29 11:19:59 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-29 11:20:02 +0000cunne(~cunne@user/cunne) (Ping timeout: 246 seconds)
2021-09-29 11:20:17 +0000 <hololeap> is it possible to coerce inside some container `f`, even if it isn't a Functor, specifically a TVar?
2021-09-29 11:20:19 +0000benin036932301(~benin@183.82.176.107) (Client Quit)
2021-09-29 11:21:05 +0000 <hpc> does it need to be generic wrt f?
2021-09-29 11:21:14 +0000 <hpc> the various *Vars have their own modify functions
2021-09-29 11:21:18 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 11:21:40 +0000 <Cajun> `fakedata` and `fakedata-quickcheck` sshine
2021-09-29 11:22:25 +0000 <Cajun> seems its more for data than files sadly
2021-09-29 11:22:38 +0000 <hololeap> newtype FunctorMap map f k a = FunctorMap { getFunctorMap :: map k (f a) }
2021-09-29 11:22:59 +0000 <hololeap> newtype Trie map f k a = Trie { getTrie :: Cofree (FunctorMap map f k) a }
2021-09-29 11:23:16 +0000CiaoSen(~Jura@p200300c9571be1002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-09-29 11:23:39 +0000 <hololeap> unwrap :: Trie map f k a -> FunctorMap map f k (Trie map f k a)
2021-09-29 11:23:45 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 11:24:02 +0000benin036932301(~benin@183.82.176.107) (Client Quit)
2021-09-29 11:24:37 +0000 <hololeap> i need this: FunctorMap map f k (Cofree (FunctorMap map f k) a) -> FunctorMap map f k (Trie map f k a)
2021-09-29 11:25:03 +0000 <hololeap> the Cofree there should be coercable into a Trie
2021-09-29 11:25:14 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 11:25:51 +0000 <hololeap> but if `f` isn't a Functor (in the case of TVar) I stop being able to use `unwrap`
2021-09-29 11:26:40 +0000 <hololeap> if I just `fmap` the Trie constructor into the FunctorMap
2021-09-29 11:28:01 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 11:34:00 +0000 <hololeap> http://sprunge.us/GAC2hR
2021-09-29 11:36:36 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-29 11:38:55 +0000 <arahael> Oh, I could use a RELAX NG schema instead.
2021-09-29 11:39:09 +0000benin036932301(~benin@183.82.176.107) (Quit: The Lounge - https://thelounge.chat)
2021-09-29 11:40:03 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 11:41:03 +0000AlexNoo_AlexNoo
2021-09-29 11:41:05 +0000 <sshine> Cajun, fakedata seems pretty nice. but it seems to generate predefined types, and generally not deeply nested stuff, even though those predefined types compose nicely.
2021-09-29 11:41:31 +0000 <sshine> Cajun, I'll have to remember to use fakedata for something fun soon, or I'll forget it exists. there are too many interesting packages.
2021-09-29 11:42:11 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-29 11:42:28 +0000CiaoSen(~Jura@p200300c9571be1002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-09-29 11:43:09 +0000CiaoSen(~Jura@p5dcc145a.dip0.t-ipconnect.de)
2021-09-29 11:43:52 +0000 <hololeap> hm, it looks like if I specify `map` as HashMap and `f` as TVar, it works. is there any way to constrain a type variable as "not nominal"?
2021-09-29 11:44:35 +0000enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2021-09-29 11:48:02 +0000mestre(~mestre@191.177.175.57) (Quit: Lost terminal)
2021-09-29 11:50:56 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 245 seconds)
2021-09-29 11:55:04 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-09-29 11:59:35 +0000michalz(~michalz@185.246.204.33) (Read error: No route to host)
2021-09-29 12:00:44 +0000max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-09-29 12:01:21 +0000CiaoSen(~Jura@p5dcc145a.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-09-29 12:01:31 +0000 <hololeap> We cannot know what roles the parameters to ‘map k’ have; we must assume that the role is nominal
2021-09-29 12:01:47 +0000benin036932301(~benin@183.82.176.107) (Quit: The Lounge - https://thelounge.chat)
2021-09-29 12:01:59 +0000lavaman(~lavaman@98.38.249.169)
2021-09-29 12:02:39 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 12:03:22 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-09-29 12:04:16 +0000mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 245 seconds)
2021-09-29 12:10:13 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 12:10:20 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 12:12:10 +0000Soanvig(~Soanvig@80.49.217.249.ipv4.supernova.orange.pl) (Quit: Client closed)
2021-09-29 12:14:41 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 12:14:52 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-29 12:16:24 +0000xiongxin(~quassel@119.123.100.167)
2021-09-29 12:28:50 +0000mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-29 12:30:49 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-29 12:32:36 +0000goepsilongo(~goepsilon@2603-7000-ab00-62ed-11e5-eaf7-be1f-d354.res6.spectrum.com)
2021-09-29 12:33:26 +0000goepsilongo_(~goepsilon@2603-7000-ab00-62ed-9cf3-4260-a35d-73be.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-09-29 12:34:44 +0000Psybur(~Psybur@mobile-166-170-32-197.mycingular.net)
2021-09-29 12:34:49 +0000hololeap. o (RoleAnnotations ?)
2021-09-29 12:37:28 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-09-29 12:38:56 +0000 <xerox> on mac do you have CTRL+arrows and CTRL+A or CTRL+E to move between words, to the beginning of the line, to the end of line work?
2021-09-29 12:40:25 +0000 <geekosaur> hololeap, RoleAnnotations work when declaring types, but not when constraining them
2021-09-29 12:40:36 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 12:40:59 +0000 <geekosaur> you can't say e.g. role t ~ nominal => ...
2021-09-29 12:41:38 +0000mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 265 seconds)
2021-09-29 12:42:15 +0000mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-29 12:42:29 +0000 <geekosaur> xerox, haskeline should work the same way on all platforms, which is part of why ghci uses it. same with readline or editline (Mac "built-in" line editing)
2021-09-29 12:42:59 +0000 <geekosaur> none of them work with a bare getLine, except within ghci where I think haskeline is always used
2021-09-29 12:43:05 +0000 <xerox> geekosaur: it is extremely broken here
2021-09-29 12:45:06 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 12:47:06 +0000pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net)
2021-09-29 12:47:42 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 12:48:44 +0000 <geekosaur> with getLine in Haskell you will get only very basic line editing (backspace for delete, ^W deletes previous word, ^U deletes back to the beginning of the line; no arrows or other control keys)
2021-09-29 12:49:22 +0000 <geekosaur> you need to explicitly use haskeline or readline to get real line editing
2021-09-29 12:49:54 +0000 <xerox> geekosaur: I'm not trying to make a prompt myself, I'm using ghci
2021-09-29 12:50:50 +0000 <geekosaur> odd. do you have a haskeline config file (https://downloads.haskell.org/ghc/latest/docs/html/users_guide/ghci.html#the-haskeline-file) ?
2021-09-29 12:52:06 +0000fvr(uid503686@id-503686.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-29 12:52:11 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-29 12:52:33 +0000jespada(~jespada@2803:9800:9842:7a62:9cdc:f08c:7ab8:bd6a)
2021-09-29 12:54:28 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-09-29 12:55:44 +0000 <geekosaur> in particular you might have (perhaps accidentally) switched haskeline to vi emulation mode (I think that works these days?)
2021-09-29 12:56:46 +0000 <geekosaur> in which case it starts out in insert mode and you have to press esc to use commands
2021-09-29 12:57:24 +0000 <xerox> hmm I have ghc 8.10.7 not 9
2021-09-29 12:57:48 +0000 <geekosaur> you might not have noticed previously because iirc vi emulation was broken/ignored for a while
2021-09-29 12:58:17 +0000 <xerox> ok, I do not have that file
2021-09-29 12:59:20 +0000 <xerox> making one with editMode: Emacs does not change the brokennes
2021-09-29 12:59:26 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 246 seconds)
2021-09-29 12:59:33 +0000 <xerox> it does work but the display of what is doing is rong
2021-09-29 12:59:35 +0000 <xerox> *wrong
2021-09-29 13:00:17 +0000 <geekosaur> weird. but that sounds more like a terminal issue than a ghci / editline issue
2021-09-29 13:00:57 +0000 <geekosaur> do you have something like colors in the prompt?
2021-09-29 13:01:04 +0000 <xerox> this is macos terminal.app
2021-09-29 13:01:19 +0000 <xerox> nope
2021-09-29 13:01:42 +0000michalz(~michalz@185.246.204.72)
2021-09-29 13:02:11 +0000 <xerox> for example ctrl+left arrow goes back 1 char visually, but functionally it seems to do the right thing and go back a word, or CTRL+A also goes back 1 char visually, but CTRL+K correctly functionally deletes the whole line such that if I type '2' and RET it evaluates to 2 no matter what was on the line before, does that make sense?
2021-09-29 13:02:29 +0000 <geekosaur> this is sounding very bizarre
2021-09-29 13:02:47 +0000 <geekosaur> actually this is starting to sound like a bad terminfo entry
2021-09-29 13:02:58 +0000 <geekosaur> except it takes quite a lot of work to get that :)
2021-09-29 13:03:41 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-29 13:04:07 +0000 <geekosaur> even if you somehow selected the wrong terminfo entry it should mostly work as expected these days, since almost all terminals emulate VT240 / xterm
2021-09-29 13:04:29 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-09-29 13:05:04 +0000 <xerox> geekosaur: https://i.imgur.com/HYJRDMC.mp4
2021-09-29 13:05:29 +0000 <xerox> geekosaur: every other program that is not ghci has correct line editing, where these work as expected
2021-09-29 13:05:52 +0000 <xerox> see how that CTRL+A goes back 1 char not all 3 of them
2021-09-29 13:06:09 +0000 <geekosaur> yeh, I understood your description, that was what made me think terminfo
2021-09-29 13:06:23 +0000 <xerox> wouldn't that mean the other line editing programs would also be broken?
2021-09-29 13:06:49 +0000 <geekosaur> hm, yes
2021-09-29 13:07:24 +0000 <geekosaur> except there's like 6 ways to do that particular positioning operation and other programs might use a different one from haskeline
2021-09-29 13:08:01 +0000 <geekosaur> terminals are muy complicated
2021-09-29 13:08:22 +0000 <geekosaur> lots of ways for things to go wrong :(
2021-09-29 13:09:47 +0000jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef) (Ping timeout: 240 seconds)
2021-09-29 13:10:53 +0000maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Ping timeout: 264 seconds)
2021-09-29 13:10:59 +0000infinisil(~infinisil@2001:470:69fc:105::ff8) (Ping timeout: 246 seconds)
2021-09-29 13:11:15 +0000vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Ping timeout: 268 seconds)
2021-09-29 13:11:29 +0000ormaaj(~ormaaj@user/ormaaj) (Ping timeout: 264 seconds)
2021-09-29 13:12:03 +0000 <geekosaur> hm, I'm on 8.10.7 and it works here, so presumably not a haskeline bug
2021-09-29 13:12:10 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-29 13:12:45 +0000 <xerox> darn! :)
2021-09-29 13:13:08 +0000 <xerox> I cannot try 9.0.1 as it is not available on arm
2021-09-29 13:13:59 +0000 <geekosaur> pretty sure it works under rosetta
2021-09-29 13:14:13 +0000 <geekosaur> but yes, native awaits 9.2.1
2021-09-29 13:14:44 +0000 <xerox> right but then I need a x64 ghcup in parallel if I want to manage nonnative bins as well
2021-09-29 13:15:21 +0000 <maerwald> xerox: 9.0.1 is not available where?
2021-09-29 13:15:32 +0000 <geekosaur> M1 Mac, native
2021-09-29 13:15:46 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-29 13:16:11 +0000 <xerox> maerwald: https://i.imgur.com/8bIrzlz.png
2021-09-29 13:16:26 +0000 <xerox> on M1 yes
2021-09-29 13:16:39 +0000nvmd(~nvmd@user/nvmd)
2021-09-29 13:16:58 +0000 <maerwald> 9.2.0.20210821 is though
2021-09-29 13:17:05 +0000 <maerwald> it just appears to be missing from ghcup metadata
2021-09-29 13:17:07 +0000Morrow(~Morrow@37.142.145.18)
2021-09-29 13:17:09 +0000 <xerox> ah neat
2021-09-29 13:17:13 +0000 <maerwald> I'll add it
2021-09-29 13:17:19 +0000 <xerox> I'll give it a whirl
2021-09-29 13:19:12 +0000 <maerwald> ghcup install ghc -u https://downloads.haskell.org/~ghc/9.2.1-rc1/ghc-9.2.0.20210821-aarch64-apple-darwin.tar.xz 9.2.0.20210821
2021-09-29 13:20:47 +0000Organizers|Robin(~Robin_Jad@152.67.64.160)
2021-09-29 13:21:45 +0000Morrow(~Morrow@37.142.145.18) (Ping timeout: 265 seconds)
2021-09-29 13:21:59 +0000 <xerox> hmpf, that one is broken on my system as well
2021-09-29 13:22:00 +0000 <dminuoso> • A_Lens cannot be composed with A_Lens
2021-09-29 13:22:05 +0000 <dminuoso> Mmm, optics diagnostic fail. :(
2021-09-29 13:26:28 +0000yinghua(~yinghua@2800:2121:1400:1db:2dd5:711:7e56:f9f7)
2021-09-29 13:33:51 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 245 seconds)
2021-09-29 13:36:05 +0000 <xerox> I wonder what can I bang my head against to fix this
2021-09-29 13:36:21 +0000 <dminuoso> Concrete walls are good.
2021-09-29 13:37:12 +0000doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-09-29 13:37:15 +0000 <Psybur> xerox, a button that when pressed gives me money
2021-09-29 13:37:23 +0000shaprhugs xerox
2021-09-29 13:37:32 +0000 <xerox> hey shapr :-)
2021-09-29 13:37:38 +0000 <shapr> how you doin xerox ?
2021-09-29 13:37:43 +0000 <xerox> p good!!
2021-09-29 13:37:50 +0000 <xerox> how about you
2021-09-29 13:37:50 +0000 <shapr> Any cool projects lately?
2021-09-29 13:38:25 +0000 <xerox> yeah I'm doing stuff, related to wood and agricolture, a whole other domain of things, it's good
2021-09-29 13:38:25 +0000 <shapr> I'm writing small fun things for my own use: https://github.com/shapr/bloohm and https://github.com/shapr/sandwatch and https://github.com/shapr/takedouble
2021-09-29 13:38:43 +0000xeroxtakes a look
2021-09-29 13:39:52 +0000 <shapr> xerox: do you write about your wood / agriculture adventures? blog or place to post things?
2021-09-29 13:40:12 +0000 <xerox> shapr: not yet, just started out, that's a good idea tho I'll see what I can do
2021-09-29 13:40:20 +0000 <shapr> cool, I'd read for sure!
2021-09-29 13:41:07 +0000 <shapr> I want to tune sandwatch and publish it, and I don't know how to publish bloohm so that many can use it.
2021-09-29 13:41:13 +0000brandonh(brandonh@gateway/vpn/protonvpn/brandonh)
2021-09-29 13:41:47 +0000 <shapr> xerox: will you visit north america anytime soon?
2021-09-29 13:41:52 +0000 <shapr> would be nice to see you again
2021-09-29 13:42:17 +0000 <xerox> shapr: I doubt it, but I would love to meet again for sure, you foresee coming to this side of the atlantic anytime in the future?
2021-09-29 13:42:35 +0000 <shapr> hm, thinking of visiting scandinavia again
2021-09-29 13:42:40 +0000 <shapr> might could visit the south too
2021-09-29 13:44:13 +0000 <xerox> that'd be nice, how many years has it been, I think it was something like 2006-7-8 for the MSR meets
2021-09-29 13:44:24 +0000 <shapr> might have been 2005
2021-09-29 13:44:28 +0000 <xerox> !
2021-09-29 13:44:30 +0000 <shapr> I think that's when AngloHaskell happened
2021-09-29 13:44:41 +0000 <xerox> I have fond memories of that time
2021-09-29 13:44:43 +0000 <shapr> so, fifteen or sixteen years?
2021-09-29 13:44:44 +0000 <shapr> me too!
2021-09-29 13:45:05 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 13:45:13 +0000 <xerox> Heffalump yelling "duck!!" and I could see no duck, only to learn it is also a verb and my head was saved from a hanging branch on the cam river
2021-09-29 13:45:33 +0000 <shapr> :-D
2021-09-29 13:45:37 +0000 <shapr> punting was fun
2021-09-29 13:46:01 +0000 <xerox> with duncan bridge-hopping
2021-09-29 13:46:19 +0000 <shapr> yeah, good adventures!
2021-09-29 13:46:27 +0000 <xerox> :)))
2021-09-29 13:46:52 +0000 <xerox> have you been at other haskell related meets afterwards? I had some issues and fell off the map for a while afterwards
2021-09-29 13:49:16 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 13:49:22 +0000epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-09-29 13:54:14 +0000 <shapr> I fell off the map for a few years myself, but I have a haskell job for the past two years, yay!
2021-09-29 13:56:29 +0000Lycurgus(~juan@98.4.112.204)
2021-09-29 13:56:44 +0000unmanbearpig(~unmanbear@user/unmanbearpig) (Quit: unmanbearpig)
2021-09-29 13:57:12 +0000unmanbearpig(~unmanbear@45.76.95.141)
2021-09-29 13:57:39 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 13:58:39 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-29 13:58:39 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-29 13:58:39 +0000wroathe(~wroathe@user/wroathe)
2021-09-29 13:59:35 +0000max22-(~maxime@2a01cb0883359800129990ac0bc95b23.ipv6.abo.wanadoo.fr)
2021-09-29 14:01:16 +0000MQ-17J(~MQ-17J@35.50.53.58)
2021-09-29 14:02:33 +0000Sgeo(~Sgeo@user/sgeo)
2021-09-29 14:02:40 +0000xsperry(~xs@user/xsperry) (Ping timeout: 252 seconds)
2021-09-29 14:03:02 +0000brandonh(brandonh@gateway/vpn/protonvpn/brandonh) (Quit: brandonh)
2021-09-29 14:04:17 +0000slack1256(~slack1256@191.125.154.227)
2021-09-29 14:06:32 +0000 <slack1256> I got the impression that TH made compilation slower and memory usage bigger. I remember some folk advice to control that, such as separating TH heavy modules in multiple submodule so GHC has an easier time. Is that still valid?
2021-09-29 14:07:30 +0000 <slack1256> I am using multiple graphql queries/mutations and I am generating the corresponding ADTs via TH. But I am at the border where memory usage is too much.
2021-09-29 14:08:16 +0000shriekingnoise(~shrieking@186.137.144.80)
2021-09-29 14:11:53 +0000 <dminuoso> slack1256: It's really hard to say in general.
2021-09-29 14:12:13 +0000 <dminuoso> Without knowing the details of what your TH code generates, and without GHC profiling options enabled.
2021-09-29 14:12:35 +0000 <dminuoso> GHC has a bunch of flags that make it tell you a lot of information about its internals
2021-09-29 14:13:48 +0000 <Lycurgus> really at the border or just ghc prealloced to the maz?
2021-09-29 14:13:56 +0000 <Lycurgus> *max
2021-09-29 14:14:27 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.3)
2021-09-29 14:14:28 +0000 <Lycurgus> out the kazoo, or whatever quanta
2021-09-29 14:14:35 +0000 <slack1256> No, border of what my machine and peers can give it. Which is 3Gb.
2021-09-29 14:15:14 +0000 <dminuoso> 3Gb is quite.. slim..
2021-09-29 14:15:20 +0000 <Lycurgus> so you have 3GB RAM and it's swapping with nothing else running?
2021-09-29 14:15:30 +0000hendursa1(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-09-29 14:15:39 +0000 <dminuoso> For Haskell I wouldn't pick a machine without 8G of ram for non-trivial projects. It's so easy to blow up memory usage.. :(
2021-09-29 14:15:47 +0000 <slack1256> Well it is a 4 gb machine.
2021-09-29 14:15:47 +0000 <dminuoso> s/without/with less than/
2021-09-29 14:16:15 +0000 <slack1256> I was thinking on advice in the line of https://www.parsonsmatt.org/2019/11/27/keeping_compilation_fast.html . There it shows that GHC is superlinear on module size respect to memory usage.
2021-09-29 14:16:26 +0000 <Lycurgus> peers?
2021-09-29 14:16:32 +0000 <slack1256> Given that TH expands before compilation, that can be a source of slowness.
2021-09-29 14:16:40 +0000 <slack1256> Lycurgus: closed source project.
2021-09-29 14:16:45 +0000 <Lycurgus> ah
2021-09-29 14:16:55 +0000Flonk(~Flonk@ec2-52-40-29-25.us-west-2.compute.amazonaws.com)
2021-09-29 14:16:55 +0000 <Lycurgus> so the group has set a limit
2021-09-29 14:17:13 +0000 <dminuoso> slack1256: But yes, module size has a notable impact on compilation time.
2021-09-29 14:17:20 +0000hendursa1(~weechat@user/hendursaga)
2021-09-29 14:17:26 +0000 <janus> lortabac: i found out my issue with DataKinds was due to TemplateHaskell and DataKinds somehow interacting
2021-09-29 14:17:31 +0000 <dminuoso> It's part of why, for the code generator Im working on right now, carefully generates many small modules.
2021-09-29 14:17:47 +0000 <dminuoso> (or rather, notable impact on memory usage)
2021-09-29 14:18:17 +0000 <slack1256> More like, we are distributed through the world and everybody has different machines. They have in average around 4GB for compiling projects. If haskell uses more memory than that, people will try to avoid to compile it or use it. Which is a shame because is the interaction with the compiler while programming that is soo useful.
2021-09-29 14:18:53 +0000 <dminuoso> slack1256: And in fact, this is why I dont use TH for code generation, but rather a separate haskell program with a bunch of tooling to make that task easier.
2021-09-29 14:19:05 +0000 <Lycurgus> most phones have 4X that these days
2021-09-29 14:19:09 +0000 <slack1256> dminuoso: So it seems reasonable to try to break the big TH module on a series of little one and see if it get better?
2021-09-29 14:19:20 +0000 <slack1256> Lycurgus: in the US.
2021-09-29 14:19:21 +0000 <dminuoso> slack1256: Yeah.
2021-09-29 14:19:27 +0000 <dminuoso> slack1256: Or even just not doing this in TH at all.
2021-09-29 14:19:32 +0000 <janus> slack1256: where did you get the 4gb figure from?
2021-09-29 14:19:48 +0000Lycurgussuspects hs is first world thing
2021-09-29 14:19:49 +0000 <slack1256> myself and my other peer in the philiphines.
2021-09-29 14:20:21 +0000Lycurgus... with outliers
2021-09-29 14:20:34 +0000 <slack1256> I am develop on a phenom II from 2008 with 5.3 Gb, kill me.
2021-09-29 14:20:54 +0000 <Lycurgus> janus e said it was an arbitrary group decided limit
2021-09-29 14:21:18 +0000 <dminuoso> slack1256: Then perhaps indeed, consider a separate code generator program
2021-09-29 14:21:32 +0000 <dminuoso> And generate smaller modules.
2021-09-29 14:21:38 +0000 <slack1256> Arbitrary in the sense I don't decide the machine of the remote workers. Yet the usage should be reasonable even for them.
2021-09-29 14:21:52 +0000 <slack1256> dminuoso: Awesome. Any tool I should be looking at?
2021-09-29 14:21:57 +0000 <Lycurgus> hs, in general, is not the skinny
2021-09-29 14:22:01 +0000 <janus> hmm so you have 5.3 gb, the average is 4gb though. so your buddy must have 2.7 gb. interesting
2021-09-29 14:22:09 +0000 <dminuoso> slack1256: I use haskell-src-exts together with haskell-src-exts-qq
2021-09-29 14:22:12 +0000 <Lycurgus> ghcjs and the like notwithstandig
2021-09-29 14:22:33 +0000 <dminuoso> slack1256: oh and haskell-src-exts-simple
2021-09-29 14:22:35 +0000 <slack1256> janus: There is other people. So far the one with problems is the one from the philiphines.
2021-09-29 14:22:41 +0000 <dminuoso> these three fit nicely together, it's mostly similar to TH
2021-09-29 14:22:50 +0000 <dminuoso> Except you dont have any ambient state, you have to manage that yourself
2021-09-29 14:22:56 +0000 <slack1256> Awesome, thanks dminuoso !
2021-09-29 14:23:35 +0000 <dminuoso> Note that the -qq package likely needs to used from https://github.com/bezirg/haskell-src-exts-qq
2021-09-29 14:23:45 +0000 <dminuoso> Because the original package is no longer maintained, a really minor issue
2021-09-29 14:23:55 +0000 <dminuoso> Someone ought to just take over the original package and push that update..
2021-09-29 14:24:00 +0000 <Lycurgus> send the Phillipenes some memory
2021-09-29 14:24:27 +0000 <Lycurgus> prolly cheaper
2021-09-29 14:24:27 +0000 <slack1256> Instead of fixing what is broken on our project? come on Lycurgus.
2021-09-29 14:24:54 +0000 <Lycurgus> yeah I wasn't clear if it was broken or normal ghc ops
2021-09-29 14:24:59 +0000 <Lycurgus> on a big codebase
2021-09-29 14:25:48 +0000 <dminuoso> slack1256: In case you're curious, https://github.com/bezirg/haskell-src-exts-qq/commit/226e1268c372b6b1f8ec807873f1df23383a1faa is the sole reason why. :)
2021-09-29 14:26:06 +0000slack1256reads
2021-09-29 14:27:20 +0000 <dminuoso> So for our code generator I work inside some `StateT G IO` where G is a record that keeps track of a buch of things, like definitions, imports, pragmas, etc, and at certain points I have a monadic `flush` action that builds a haskell-src-exts module based on all the currently built stuff
2021-09-29 14:27:29 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-29 14:28:17 +0000 <Lycurgus> there's ur solution slack1256
2021-09-29 14:28:58 +0000 <slack1256> Oh, you do the "buffering" yourself. Neat.
2021-09-29 14:30:16 +0000ec(~ec@gateway/tor-sasl/ec)
2021-09-29 14:30:51 +0000ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-09-29 14:31:10 +0000slowButPresent(~slowButPr@user/slowbutpresent)
2021-09-29 14:31:15 +0000ec(~ec@gateway/tor-sasl/ec)
2021-09-29 14:37:17 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-29 14:38:19 +0000ub(~Thunderbi@178.115.55.159.wireless.dyn.drei.com)
2021-09-29 14:38:35 +0000cheater(~Username@user/cheater) (Remote host closed the connection)
2021-09-29 14:38:36 +0000MQ-17J(~MQ-17J@35.50.53.58) (Read error: Connection reset by peer)
2021-09-29 14:39:50 +0000MQ-17J(~MQ-17J@35.50.53.58)
2021-09-29 14:43:20 +0000hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-09-29 14:45:19 +0000cheater(~Username@user/cheater)
2021-09-29 14:49:19 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 14:50:31 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-09-29 14:51:54 +0000ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-09-29 14:52:47 +0000goepsilongo_(~goepsilon@2603-7000-ab00-62ed-509b-8499-b4b2-d246.res6.spectrum.com)
2021-09-29 14:53:57 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-29 14:54:42 +0000goepsilongo(~goepsilon@2603-7000-ab00-62ed-11e5-eaf7-be1f-d354.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-09-29 14:55:10 +0000dyeplexer(~dyeplexer@user/dyeplexer) (Read error: Connection reset by peer)
2021-09-29 14:58:05 +0000acidjnk_new3(~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-09-29 14:59:29 +0000Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-09-29 15:04:42 +0000azeem(~azeem@emp-180-222.eduroam.uu.se) (Ping timeout: 265 seconds)
2021-09-29 15:05:48 +0000azeem(~azeem@2a00:801:42e:f0c5:54bc:9505:1b65:51ec)
2021-09-29 15:05:55 +0000xsperry(~xs@cpe-188-129-101-182.dynamic.amis.hr)
2021-09-29 15:05:55 +0000xsperry(~xs@cpe-188-129-101-182.dynamic.amis.hr) (Changing host)
2021-09-29 15:05:55 +0000xsperry(~xs@user/xsperry)
2021-09-29 15:06:10 +0000Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-09-29 15:06:53 +0000gdhffd[m](~gdhffdmat@2001:470:69fc:105::1:799)
2021-09-29 15:08:43 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 15:09:20 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 15:09:28 +0000goepsilongo(~goepsilon@2603-7000-ab00-62ed-79c3-eb84-501d-4a08.res6.spectrum.com)
2021-09-29 15:11:46 +0000goepsilongo_(~goepsilon@2603-7000-ab00-62ed-509b-8499-b4b2-d246.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-09-29 15:13:26 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 15:14:13 +0000xff0x(~xff0x@2001:1a81:5386:1100:29ed:389e:8e87:468f) (Ping timeout: 252 seconds)
2021-09-29 15:14:58 +0000gdhffd[m](~gdhffdmat@2001:470:69fc:105::1:799) ()
2021-09-29 15:15:11 +0000xff0x(~xff0x@2001:1a81:5386:1100:ed62:9085:5098:b430)
2021-09-29 15:15:56 +0000xiongxin(~quassel@119.123.100.167) (Ping timeout: 252 seconds)
2021-09-29 15:16:30 +0000Guest2(~Guest2@86.57.234.195)
2021-09-29 15:16:34 +0000xiongxin(~quassel@119.123.100.167)
2021-09-29 15:17:20 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-29 15:19:29 +0000ub(~Thunderbi@178.115.55.159.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-09-29 15:19:46 +0000ub(~Thunderbi@178.115.55.159.wireless.dyn.drei.com)
2021-09-29 15:19:51 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 15:22:18 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 15:22:26 +0000ilkecan[m](~ilkecanma@2001:470:69fc:105::1:79b)
2021-09-29 15:23:05 +0000ub(~Thunderbi@178.115.55.159.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-09-29 15:23:05 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-29 15:23:11 +0000ub1(~Thunderbi@178.115.55.159.wireless.dyn.drei.com)
2021-09-29 15:23:32 +0000segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-09-29 15:23:51 +0000geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2021-09-29 15:24:26 +0000Guest2(~Guest2@86.57.234.195) ()
2021-09-29 15:24:41 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-29 15:25:29 +0000ub1ub
2021-09-29 15:26:21 +0000geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-29 15:34:32 +0000hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-09-29 15:34:58 +0000hendursaga(~weechat@user/hendursaga)
2021-09-29 15:35:20 +0000xiongxin(~quassel@119.123.100.167) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-09-29 15:36:27 +0000byorgey(~byorgey@155.138.238.211) (Quit: leaving)
2021-09-29 15:36:34 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:1256:fdab:1396:c482) (Quit: WeeChat 2.8)
2021-09-29 15:36:35 +0000byorgey(~byorgey@155.138.238.211)
2021-09-29 15:38:07 +0000norskalm(~norskalm@101.175.64.73) (Ping timeout: 256 seconds)
2021-09-29 15:38:43 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Remote host closed the connection)
2021-09-29 15:40:43 +0000doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-09-29 15:42:54 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-09-29 15:44:08 +0000 <fryguybob> tabaqui, sclv: I have no idea if this is actually related to your problem, but the RTS does hang on to trec chunks to recycle them with the idea that they are hot in the cache.
2021-09-29 15:45:04 +0000chris(~chris@81.96.113.213)
2021-09-29 15:45:08 +0000chrisGuest3846
2021-09-29 15:46:11 +0000 <fryguybob> If you touch *a lot* of TVars once and then not much after that, this is clearly not ideal. We shouldn't be keeping more than would be resident in cache anyway. Maybe a workaround would be to set the number of capabilities to 1, GC, then set it back up to N.
2021-09-29 15:51:09 +0000cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2.1)
2021-09-29 15:58:01 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-09-29 15:59:30 +0000benin036932301(~benin@183.82.176.107) (Quit: The Lounge - https://thelounge.chat)
2021-09-29 15:59:35 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 16:03:10 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-09-29 16:03:47 +0000ub(~Thunderbi@178.115.55.159.wireless.dyn.drei.com) (Remote host closed the connection)
2021-09-29 16:03:51 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 16:04:56 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 16:07:00 +0000slac42908(~slack1256@191.126.227.219)
2021-09-29 16:09:10 +0000slack1256(~slack1256@191.125.154.227) (Ping timeout: 252 seconds)
2021-09-29 16:09:55 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-09-29 16:11:09 +0000max22-(~maxime@2a01cb0883359800129990ac0bc95b23.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-09-29 16:11:59 +0000max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-09-29 16:13:38 +0000slack1256(~slack1256@181.203.20.152)
2021-09-29 16:14:44 +0000Guest3846(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-29 16:15:31 +0000slac42908(~slack1256@191.126.227.219) (Ping timeout: 245 seconds)
2021-09-29 16:19:59 +0000nfd(~nfd@user/nfd)
2021-09-29 16:20:19 +0000chris(~chris@81.96.113.213)
2021-09-29 16:20:23 +0000chrisGuest1239
2021-09-29 16:24:52 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 16:24:56 +0000Guest1239(~chris@81.96.113.213) (Ping timeout: 265 seconds)
2021-09-29 16:24:59 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 16:27:15 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-29 16:29:16 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Ping timeout: 245 seconds)
2021-09-29 16:29:46 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-29 16:29:47 +0000_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-09-29 16:33:36 +0000kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2021-09-29 16:35:18 +0000mc47(~mc47@xmonad/TheMC47)
2021-09-29 16:36:48 +0000boxscape_(~boxscape_@i577BCBE7.versanet.de)
2021-09-29 16:43:21 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Remote host closed the connection)
2021-09-29 16:45:39 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-29 16:50:51 +0000Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-09-29 16:51:02 +0000chele(~chele@user/chele) (Remote host closed the connection)
2021-09-29 16:54:08 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-29 16:59:15 +0000cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2021-09-29 16:59:52 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 17:00:49 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2) (Remote host closed the connection)
2021-09-29 17:00:58 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f920:a9dd:18bc:fca2)
2021-09-29 17:01:24 +0000lavaman(~lavaman@98.38.249.169)
2021-09-29 17:01:25 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 17:02:20 +0000notzmv(~zmv@user/notzmv) (Ping timeout: 246 seconds)
2021-09-29 17:05:31 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-09-29 17:05:56 +0000cheater(~Username@user/cheater)
2021-09-29 17:17:11 +0000MQ-17J(~MQ-17J@35.50.53.58) (Ping timeout: 245 seconds)
2021-09-29 17:17:29 +0000ystael(~ystael@user/ystael) (Ping timeout: 252 seconds)
2021-09-29 17:18:20 +0000ystael(~ystael@user/ystael)
2021-09-29 17:21:02 +0000 <segfaultfizzbuzz> i have a bit of a philosophical question here, feel free to have me not ask this due to it being too fuzzy:
2021-09-29 17:22:09 +0000 <segfaultfizzbuzz> when i was introduced to groups for the first time i felt that the concept of a group was fundamentally descriptive, and by this i mean that the group does not "exist" and is not "as real" as other mathematical objects
2021-09-29 17:22:33 +0000 <segfaultfizzbuzz> in the same way that the color red does not exist, there are only red cars and red buildings and soforth
2021-09-29 17:23:12 +0000 <segfaultfizzbuzz> i never had a mechanism to justify this view until recently, where i came across a discussion of the monster group
2021-09-29 17:23:43 +0000 <segfaultfizzbuzz> and a clear presentation of the various "unnatural" objects which satisfy the laws of a group
2021-09-29 17:23:49 +0000 <monochrom> Ah, if this will not involve Haskell, then #haskell-offtopic is a good place.
2021-09-29 17:23:56 +0000 <segfaultfizzbuzz> okay i will jump over there
2021-09-29 17:24:31 +0000econo(uid147250@user/econo)
2021-09-29 17:28:20 +0000emf(~emf@2601:602:9401:b660:47d:d5f4:4143:7c05)
2021-09-29 17:29:55 +0000MQ-17J(~MQ-17J@2607:fb90:8848:a516:92d8:c446:e2f1:d98e)
2021-09-29 17:31:11 +0000MQ-17J(~MQ-17J@2607:fb90:8848:a516:92d8:c446:e2f1:d98e) (Read error: Connection reset by peer)
2021-09-29 17:31:18 +0000notzmv(~zmv@user/notzmv)
2021-09-29 17:32:12 +0000MQ-17J(~MQ-17J@35.50.53.58)
2021-09-29 17:32:41 +0000emf(~emf@2601:602:9401:b660:47d:d5f4:4143:7c05) (Quit: emf)
2021-09-29 17:33:48 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Remote host closed the connection)
2021-09-29 17:34:01 +0000emf(~emf@2620:10d:c090:400::5:d028)
2021-09-29 17:34:16 +0000tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-09-29 17:34:34 +0000YoungChiefBTW(~youngchie@2001:470:69fc:105::214c) (Changing host)
2021-09-29 17:34:34 +0000YoungChiefBTW(~youngchie@user/youngchiefbtw)
2021-09-29 17:35:01 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-29 17:35:56 +0000nrl^(~nrl@68.101.50.106) (Ping timeout: 245 seconds)
2021-09-29 17:38:56 +0000nrl^(~nrl@68.101.50.106)
2021-09-29 17:40:02 +0000 <nf> > let 1 = 0 in ()
2021-09-29 17:40:04 +0000 <lambdabot> ()
2021-09-29 17:40:06 +0000 <nf> how does this parse?
2021-09-29 17:41:53 +0000lbseale(~lbseale@user/ep1ctetus) (Ping timeout: 246 seconds)
2021-09-29 17:42:09 +0000 <Taneb> It parses because "1" is valid in pattern contexts. This is useful for things like case 0 -> 0; 1 -> 1; n -> n + 4
2021-09-29 17:43:03 +0000 <boxscape_> nf it's desugared to `let x | x == 1 = 0 in ()`
2021-09-29 17:43:14 +0000 <boxscape_> more or less
2021-09-29 17:43:22 +0000 <nf> ooh, right
2021-09-29 17:43:43 +0000YoungChiefBTW(~youngchie@user/youngchiefbtw) (Quit: Reconnecting)
2021-09-29 17:43:46 +0000 <Taneb> The more surprising thing is it executes. That's because (I believe) the pattern is only executed if a bound symbol is used, and there's no bound symbols to use
2021-09-29 17:43:57 +0000YoungChiefBTW(~youngchie@2001:470:69fc:105::214c)
2021-09-29 17:43:58 +0000 <boxscape_> > let !1 = 0 in ()
2021-09-29 17:44:00 +0000 <lambdabot> *Exception: <interactive>:3:5-10: Non-exhaustive patterns in 1
2021-09-29 17:44:04 +0000YoungChiefBTW(~youngchie@2001:470:69fc:105::214c) (Changing host)
2021-09-29 17:44:04 +0000YoungChiefBTW(~youngchie@user/youngchiefbtw)
2021-09-29 17:44:29 +0000 <boxscape_> > let Just x = Nothing in ()
2021-09-29 17:44:30 +0000 <lambdabot> ()
2021-09-29 17:45:25 +0000BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-09-29 17:45:28 +0000nilof(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-09-29 17:45:40 +0000nilof(~olofs@90-227-86-119-no542.tbcn.telia.com) (Remote host closed the connection)
2021-09-29 17:46:05 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-29 17:51:21 +0000 <monochrom> case 0 of ~1 -> ()
2021-09-29 17:51:40 +0000 <boxscape_> hm I'm actually not sure what a good desugaring of `let !1 = 0 in ()` would be
2021-09-29 17:52:00 +0000 <monochrom> case 0 of 1 -> ()
2021-09-29 17:52:25 +0000 <monochrom> Everything is nicer with "case" and irrefutable patterns :)
2021-09-29 17:52:41 +0000 <tomsmeding> boxscape_: let !x | x == 1 = 0 in () ? :p
2021-09-29 17:52:48 +0000 <monochrom> Indeed the Haskell Report also has this inclination of reducing everything to "case".
2021-09-29 17:52:56 +0000 <boxscape_> > let !x | x == 1 = 0 in ()
2021-09-29 17:52:58 +0000 <lambdabot> ()
2021-09-29 17:53:00 +0000 <tomsmeding> oh
2021-09-29 17:53:12 +0000 <tomsmeding> wut
2021-09-29 17:53:13 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 17:53:20 +0000 <tomsmeding> how does that even work
2021-09-29 17:53:26 +0000 <boxscape_> er
2021-09-29 17:53:44 +0000 <boxscape_> > let !x | x == 1 = 0 in x `seq` ()
2021-09-29 17:53:47 +0000 <lambdabot> *Exception: <<loop>>
2021-09-29 17:54:20 +0000MQ-17J(~MQ-17J@35.50.53.58) (Ping timeout: 252 seconds)
2021-09-29 17:55:11 +0000MQ-17J(~MQ-17J@2607:fb90:8848:a516:92d8:c446:e2f1:d98e)
2021-09-29 17:55:21 +0000 <boxscape_> not really sure where the loop there comes from either
2021-09-29 17:56:31 +0000 <monochrom> You probably should desuger "x | x==1 = 0" first.
2021-09-29 17:56:54 +0000 <monochrom> something equiv to "x = if x==1 then 0 else undefined"
2021-09-29 17:57:44 +0000fresheyeball(~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net)
2021-09-29 17:57:53 +0000 <monochrom> Mixing bang pattern with guard probably requires a very careful reading of the GHC user's guide.
2021-09-29 17:59:01 +0000 <boxscape_> looks like it, yeah
2021-09-29 17:59:16 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 245 seconds)
2021-09-29 18:00:36 +0000Guest41(~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-09-29 18:01:12 +0000 <monochrom> Ugh why does the GHC user's guide still links to Haskell 98 not Haskell 2010 haha
2021-09-29 18:01:16 +0000 <boxscape_> wait, I think I'm confused because I'm mixing up pattern and function bindings
2021-09-29 18:01:27 +0000goepsilongo(~goepsilon@2603-7000-ab00-62ed-79c3-eb84-501d-4a08.res6.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com)
2021-09-29 18:01:33 +0000 <boxscape_> to have `x | x == 1 = 0`, you need to know what x is (for the guard), to find out what x is
2021-09-29 18:01:35 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-09-29 18:01:38 +0000 <boxscape_> which is the loop
2021-09-29 18:02:38 +0000tabaqui(~root@46.39.45.162)
2021-09-29 18:02:42 +0000 <boxscape_> `let 1 = 0` should actually be desugared to something more like `let 1 | 1 == 0 = 0`
2021-09-29 18:02:45 +0000 <boxscape_> I think
2021-09-29 18:03:07 +0000 <boxscape_> er, `let _ | 1 == 0 = 0`
2021-09-29 18:03:10 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-29 18:03:23 +0000 <tabaqui> sort of
2021-09-29 18:03:52 +0000 <boxscape_> % let !_ | 1 == 0 = 0 in () -- tomsmeding this does work
2021-09-29 18:03:52 +0000 <yahb> boxscape_: *** Exception: <interactive>:99:5-19: Non-exhaustive guards in
2021-09-29 18:04:57 +0000 <Guest41> hello. I seem to be misunderstanding parser combinators in Megaparsec. I have a parser of the form `choice [pNumber, try pBool, pString], `
2021-09-29 18:05:03 +0000 <tomsmeding> boxscape_: fascinating
2021-09-29 18:05:05 +0000 <monochrom> No, it really is better to translate "let 1=0 in foo" to "case".
2021-09-29 18:05:06 +0000 <Guest41> but even though I'm using the try primitive, the pBool parser keeps consuming input and triggering errors (eof not found) down the line
2021-09-29 18:05:25 +0000 <tomsmeding> I shall continue to avoid ! in let bindings, and reach for a case or pattern guards or explicit seq
2021-09-29 18:05:32 +0000 <boxscape_> monochrom but the part I'm interested in translating is the `1` pattern, your case desugaring still contains that
2021-09-29 18:05:50 +0000 <monochrom> But it also has ~
2021-09-29 18:06:22 +0000 <Guest41> I was following the pattern described here: https://markkarpov.com/tutorial/megaparsec.html#controlling-backtracking-with-try
2021-09-29 18:06:25 +0000 <tomsmeding> Guest41: "eof not found" -- does pBool call eof?
2021-09-29 18:06:37 +0000 <boxscape_> I do agree that with case it's easier to follow what happens than with bang patterns
2021-09-29 18:06:41 +0000emf_(~emf@2620:10d:c090:400::5:b24f)
2021-09-29 18:06:45 +0000 <boxscape_> in let
2021-09-29 18:07:01 +0000 <Guest41> tomsmeding: no it's called after the parser as in: `myParser <* eof`
2021-09-29 18:07:03 +0000fresheyeball(~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-09-29 18:07:03 +0000 <tomsmeding> boxscape_: case also corresponds more closely to the form in Core, so there's less semantics translation going on
2021-09-29 18:07:12 +0000 <boxscape_> right, yeah
2021-09-29 18:07:27 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 18:07:52 +0000 <tomsmeding> Guest41: then are you sure it's pBool that's failing? If pBool fails properly, it shouldn't even reach that 'eof' parser
2021-09-29 18:08:08 +0000 <Guest41> tomsmeding: I have it set that way because some strings are special, ie: "true" and "false", otherwise I want to fallback to parsing Text
2021-09-29 18:08:33 +0000 <tomsmeding> (parsing yaml?)
2021-09-29 18:09:09 +0000 <tomsmeding> Guest41: try putting 'getInput >>= \s -> traceIO ("Remaining: <" ++ s ++ ">")' right after that 'choice'
2021-09-29 18:09:14 +0000 <tomsmeding> with 'import Debug.Trace'
2021-09-29 18:09:15 +0000 <Guest41> tomsmeding: that makes sense, how would I make pBool fail if it parses something like "trueAAAAA"
2021-09-29 18:09:33 +0000 <monochrom> "!var = e" and even "!(Ctor pat1 pat2) = e" are pretty unsurprising. You don't have to avoid these use cases of bang patterns.
2021-09-29 18:09:34 +0000 <tomsmeding> Guest41: what's the definition of pBool?
2021-09-29 18:09:48 +0000 <tomsmeding> monochrom: true, I guess
2021-09-29 18:09:52 +0000 <Guest41> you are right, pBool isn't failing: `pBool = True <$ string "true" <|> False <$ string "false"`
2021-09-29 18:10:02 +0000emf(~emf@2620:10d:c090:400::5:d028) (Ping timeout: 260 seconds)
2021-09-29 18:10:07 +0000 <monochrom> But "!var | cond = e" is the one that surprised me. This one is reasonable to avoid.
2021-09-29 18:10:12 +0000 <tomsmeding> Guest41: because of megaparsec's semantics of 'string', that shouldn't even need 'try' I think
2021-09-29 18:10:30 +0000 <tomsmeding> it's parsec that has a 'string' that needs to be wrapped in 'try'; megaparsec changed that
2021-09-29 18:10:36 +0000 <boxscape_> monochrom yes, I'm still trying to figure out why `let !x | x == 1 = 0` *doesn't* loop
2021-09-29 18:10:39 +0000 <monochrom> Now I have to be a lawyer and follow the GHC user's guide and Haskell 2010 to desugar what's going on with that. :)
2021-09-29 18:11:55 +0000 <Guest41> tomsmeding: yes you are right, "Note that as of Megaparsec 4.4.0, string backtracks automatically (see tokens), so it does not need try. However, the examples above demonstrate the idea behind try so well that it was decided to keep them. You still need to use try when your alternatives are complex, composite parsers."
2021-09-29 18:12:00 +0000 <Guest41> https://hackage.haskell.org/package/megaparsec-9.2.0/docs/Text-Megaparsec.html
2021-09-29 18:12:14 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-09-29 18:12:24 +0000 <tomsmeding> ah, so I remembered correctly
2021-09-29 18:13:03 +0000 <Guest41> I still can't see how to force pBool to fail, it should expect whitespace after a Bool
2021-09-29 18:13:08 +0000 <boxscape_> FWIW, `f = () where !x | x == True = False` is desugared into Core as `f = case x_r1kw of { __DEFAULT -> break<2>() GHC.Tuple.() }`
2021-09-29 18:13:15 +0000chris(~chris@81.96.113.213)
2021-09-29 18:13:19 +0000chrisGuest2478
2021-09-29 18:13:23 +0000 <tomsmeding> Guest41: what about that definition you gave forces whitespace?
2021-09-29 18:13:28 +0000 <boxscape_> oh wait I guess that's only part of it
2021-09-29 18:14:03 +0000 <Guest41> tomsmeding: nothing, I tried adding `<* space` at the end but it didn't change the behaviour
2021-09-29 18:14:50 +0000 <boxscape_> (this is the full Core https://paste.tomsmeding.com/rsvN5Uml )
2021-09-29 18:14:52 +0000 <Guest41> Wait, I was wrong, it does complain about expecting whitespace
2021-09-29 18:14:59 +0000 <tomsmeding> Guest41: could you try: pBool = (True <$ string "true" <|> False <$ string "false") <* lookAhead space
2021-09-29 18:15:08 +0000 <Guest41> but it doesn't move on to the _next_ choice
2021-09-29 18:15:26 +0000 <boxscape_> oh but wait calling f *does* loop...
2021-09-29 18:15:32 +0000 <tomsmeding> Guest41: yeah with that '<* space', with or without lookAhead, you do now need the 'try'
2021-09-29 18:16:11 +0000 <boxscape_> % let !x | x == True = False
2021-09-29 18:16:16 +0000 <yahb> boxscape_: [Timed out]
2021-09-29 18:16:17 +0000 <boxscape_> % let !x | x == 1 = 0
2021-09-29 18:16:18 +0000 <yahb> boxscape_:
2021-09-29 18:16:22 +0000 <boxscape_> it's a dictionary thing, apparently
2021-09-29 18:16:41 +0000 <Guest41> tomsmeding: because combining primitives doesn't give auto-backtracking parsers, yes?
2021-09-29 18:16:42 +0000 <boxscape_> x is a function that takes a dictionary, so the bang pattern only forces it to be a lambda (is my hypothesis)
2021-09-29 18:16:49 +0000 <boxscape_> ^ monochrom
2021-09-29 18:17:23 +0000 <monochrom> > let !x = case () of () | x==1 -> 0 in () -- this is following Haskell 2010 4.4.3.2 to desugar guards in a pattern binding.
2021-09-29 18:17:25 +0000 <lambdabot> ()
2021-09-29 18:17:37 +0000 <monochrom> Hrm
2021-09-29 18:17:45 +0000 <tomsmeding> Guest41: indeed, nothing is backtracking by default except when explicitly made backtracking with 'try', or if it's a special case, of which 'string' is one
2021-09-29 18:17:58 +0000 <monochrom> > let !x = case () of () | x==False -> True in () -- this is following Haskell 2010 4.4.3.2 to desugar guards in a pattern binding.
2021-09-29 18:18:00 +0000 <lambdabot> *Exception: <<loop>>
2021-09-29 18:18:27 +0000 <tomsmeding> wonky
2021-09-29 18:18:29 +0000MQ-17J(~MQ-17J@2607:fb90:8848:a516:92d8:c446:e2f1:d98e) (Read error: Connection reset by peer)
2021-09-29 18:18:37 +0000 <monochrom> > let !x | x = False in ()
2021-09-29 18:18:40 +0000 <lambdabot> *Exception: <<loop>>
2021-09-29 18:18:47 +0000MQ-17J(~MQ-17J@35.50.53.58)
2021-09-29 18:18:58 +0000 <boxscape_> > !x | x == x in ()
2021-09-29 18:18:59 +0000 <monochrom> That theory does hold water.
2021-09-29 18:19:00 +0000 <lambdabot> <hint>:1:4: error: parse error on input ‘|’
2021-09-29 18:19:05 +0000 <boxscape_> > let !x | x == x in ()
2021-09-29 18:19:06 +0000 <lambdabot> <hint>:1:17: error: parse error on input ‘in’
2021-09-29 18:19:08 +0000 <Guest41> tomsmeding: the parser /still/ doesn't refrain from consuming "true" in "trueAAAA". I will simply Paste the code now so you can see it :P
2021-09-29 18:19:10 +0000epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-29 18:19:12 +0000 <boxscape_> egh
2021-09-29 18:19:19 +0000 <monochrom> !x | x==x = not x ?
2021-09-29 18:19:37 +0000 <boxscape_> > let !x | x == x = () in ()
2021-09-29 18:19:38 +0000 <monochrom> !x | x = x ?
2021-09-29 18:19:40 +0000 <lambdabot> *Exception: <<loop>>
2021-09-29 18:19:54 +0000 <boxscape_> > let !x | x == x = undefined in ()
2021-09-29 18:19:55 +0000 <Guest41> tomsmeding: https://paste.tomsmeding.com/F8u1rsRa
2021-09-29 18:19:56 +0000 <lambdabot> ()
2021-09-29 18:20:03 +0000 <Guest41> (forgive the use of parseTest)
2021-09-29 18:20:04 +0000 <boxscape_> okay yeah this makes sense I think
2021-09-29 18:21:45 +0000aegon(~mike@174.127.249.180)
2021-09-29 18:22:01 +0000jlamothe(~jlamothe@104.158.48.100)
2021-09-29 18:22:11 +0000xff0x(~xff0x@2001:1a81:5386:1100:ed62:9085:5098:b430) (Ping timeout: 245 seconds)
2021-09-29 18:22:36 +0000 <tomsmeding> Guest41: what's that L import?
2021-09-29 18:22:44 +0000 <tomsmeding> oh Lexer
2021-09-29 18:22:53 +0000 <Guest41> yes `import qualified Text.Megaparsec.Char.Lexer as L`
2021-09-29 18:23:02 +0000xff0x(~xff0x@2001:1a81:5386:1100:51ce:15a:f28:e4d7)
2021-09-29 18:24:30 +0000 <Guest41> what I don't understand is why doesn't choice fallback to the third parser when pBool fails
2021-09-29 18:24:34 +0000 <tomsmeding> Guest41: when I give that trueAAAA I get back 'unexpected A, expecting end of input', which makes sense to me?
2021-09-29 18:24:39 +0000 <tomsmeding> oh wait no it doesn't
2021-09-29 18:24:56 +0000tomsmedingis confused
2021-09-29 18:24:57 +0000Guest2478(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-29 18:25:14 +0000kuribas(~user@ptr-25vy0i8j07s3q8yomww.18120a2.ip6.access.telenet.be)
2021-09-29 18:25:24 +0000 <Guest41> it should get a `StringValue` right?
2021-09-29 18:25:38 +0000werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-09-29 18:25:56 +0000emf_(~emf@2620:10d:c090:400::5:b24f) (Quit: emf_)
2021-09-29 18:25:59 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-29 18:28:44 +0000 <tomsmeding> oooooooh
2021-09-29 18:28:50 +0000 <tomsmeding> space: Skip zero or more white space characters.
2021-09-29 18:29:13 +0000 <tomsmeding> Guest41: should use spaceChar
2021-09-29 18:29:29 +0000qbt(~edun@user/edun) (Ping timeout: 246 seconds)
2021-09-29 18:29:31 +0000gensyst(gensyst@user/gensyst)
2021-09-29 18:29:34 +0000chris(~chris@81.96.113.213)
2021-09-29 18:29:36 +0000 <Guest41> *facepalm*
2021-09-29 18:29:38 +0000chrisGuest4418
2021-09-29 18:29:43 +0000 <tomsmeding> dumb megaparsec, shouldn't have changed the meaning of 'space' from the original parsec meaning
2021-09-29 18:29:52 +0000emf(~emf@2620:10d:c090:400::5:b24f)
2021-09-29 18:30:35 +0000 <gensyst> Can someone quickly please do this? "mkdir testproj; cd testproj; cabal init; vim testproj.cabal", add "Chart-chairo" dependency, and "cabal build"? Do you also get the error "(conflict: pkg-config package cairo>=1.2.0, not found in the pkg-config database)" ?
2021-09-29 18:30:39 +0000 <gensyst> How to solve this?
2021-09-29 18:30:58 +0000Guest4418(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-29 18:31:01 +0000 <tomsmeding> gensyst: install cairo with your system package manager :p
2021-09-29 18:31:05 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Remote host closed the connection)
2021-09-29 18:31:11 +0000 <sclv> also possibly cairo-dev
2021-09-29 18:31:22 +0000 <tomsmeding> apparently that has a dependency on the cairo C library that you don't have installed (or the pkg-config file isn't installed for some reason)
2021-09-29 18:31:24 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-29 18:31:27 +0000 <sclv> its not a haskell lib, its a c lib that the haskell lib depends on
2021-09-29 18:32:27 +0000max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2021-09-29 18:33:31 +0000acidjnk_new3(~acidjnk@p200300d0c703cb53c55fe893eb04092a.dip0.t-ipconnect.de)
2021-09-29 18:33:39 +0000 <Guest41> tomsmeding: thank you very much
2021-09-29 18:34:52 +0000 <tomsmeding> Guest41: cheers :)
2021-09-29 18:36:13 +0000chris(~chris@81.96.113.213)
2021-09-29 18:36:17 +0000chrisGuest6556
2021-09-29 18:40:27 +0000Guest6556(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-09-29 18:45:53 +0000justsomeguy(~justsomeg@user/justsomeguy)
2021-09-29 18:46:22 +0000MarsIronPI(~MarsIronP@107.117.175.35)
2021-09-29 18:47:40 +0000MarsIronPI(~MarsIronP@107.117.175.35) (Client Quit)
2021-09-29 18:50:26 +0000nfd(~nfd@user/nfd) (Ping timeout: 252 seconds)
2021-09-29 18:51:08 +0000 <c_wraith> I think it was too late last night when I unleashed my latest abomination upon this channel.
2021-09-29 18:51:29 +0000 <c_wraith> So I present it again now. Look upon my works, and despair: https://paste.tomsmeding.com/KmOT6PZy
2021-09-29 18:52:44 +0000 <tomsmeding> c_wraith: should call that pattern synonym :++ instead
2021-09-29 18:53:25 +0000 <c_wraith> I'm just "happy" that using it is more work than... not.
2021-09-29 18:53:31 +0000 <tomsmeding> c_wraith: you don't need the provided constraints () => to be listed explicitly, right?
2021-09-29 18:53:54 +0000 <tomsmeding> I like it :p
2021-09-29 18:53:56 +0000 <c_wraith> I'm not sure. Didn't look at the grammar for pattern signatures too closely.
2021-09-29 18:54:08 +0000 <tomsmeding> iirc provided constraints are optional
2021-09-29 18:54:25 +0000 <c_wraith> On the other hand, it doesn't really hurt anything
2021-09-29 18:54:59 +0000 <tomsmeding> how do you _use_ this though? 'f (PrefixedBy (Proxy @"prefix") suffix) = print suffix'?
2021-09-29 18:55:17 +0000 <c_wraith> No, I had an earlier version that would work like that.
2021-09-29 18:55:20 +0000 <monochrom> "is this dependent typing?" meme
2021-09-29 18:55:33 +0000 <c_wraith> except ghc doesn't allow type applications inside patterns
2021-09-29 18:55:44 +0000 <c_wraith> it even has a fun error message saying "yet"
2021-09-29 18:55:44 +0000 <tomsmeding> rip
2021-09-29 18:55:47 +0000 <tomsmeding> lol
2021-09-29 18:56:01 +0000max22-(~maxime@2a01cb088335980073a4b4db0ef417b5.ipv6.abo.wanadoo.fr)
2021-09-29 18:56:17 +0000 <c_wraith> So this is like.... PrefixedBy (Proxy :: Proxy "prefix") suffix
2021-09-29 18:56:45 +0000 <c_wraith> and even that requires enabling ScopedTypeVariables
2021-09-29 18:56:55 +0000 <tomsmeding> blegh
2021-09-29 18:57:03 +0000 <c_wraith> it's a horrible mess!
2021-09-29 18:57:06 +0000 <c_wraith> I'm so proud!
2021-09-29 18:57:11 +0000 <tomsmeding> :D
2021-09-29 19:01:25 +0000ircbrowse_tom(~ircbrowse@2a01:4f8:1c1c:9319::1) (ZNC 1.7.5+deb4 - https://znc.in)
2021-09-29 19:03:10 +0000ircbrowse_tom(~ircbrowse@2a01:4f8:1c1c:9319::1)
2021-09-29 19:03:10 +0000Server+Cnt
2021-09-29 19:04:11 +0000tabaqui(~root@46.39.45.162) (Ping timeout: 252 seconds)
2021-09-29 19:05:11 +0000gensyst(gensyst@user/gensyst) (Quit: Leaving)
2021-09-29 19:07:47 +0000 <boxscape_> c_wraith neat, I was wondering if it's possible to write something like this without having to do `PrefixOf "prefix" -> Just suffix` when using the pattern synonym. Will be interesting to see if Proxy is still necessary once visible forall is a thing
2021-09-29 19:08:30 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-09-29 19:08:33 +0000 <c_wraith> boxscape_: it almost works now, except for type applications not being allowed in patterns.
2021-09-29 19:09:14 +0000 <c_wraith> err, works without the Proxy argument
2021-09-29 19:09:44 +0000 <boxscape_> right, I suppose it's quite possible that that restriction will also extend to visible type applications
2021-09-29 19:10:00 +0000 <boxscape_> or, "visible-by-default" type applications, not sure what the proper terminology is
2021-09-29 19:10:39 +0000 <kuribas> c_wraith: what does that do?
2021-09-29 19:11:15 +0000 <c_wraith> it's a pattern for matching a string with a specific prefix and binding the rest to a name
2021-09-29 19:11:47 +0000 <c_wraith> kind of like Erlang's pattern matching on strings can do
2021-09-29 19:12:07 +0000 <c_wraith> except the syntax for using it is atrocious
2021-09-29 19:12:23 +0000 <boxscape_> there is/was some ongoing work (not sure if complete) that makes it possible to have patterns like (Just @Int 4), not sure if that applies to pattern synonyms as well
2021-09-29 19:13:11 +0000 <c_wraith> if it does, it would allow using something like (PrefixedBy @"prefix" suffix) with no other changes
2021-09-29 19:13:40 +0000 <c_wraith> err. no other ghc changes
2021-09-29 19:13:42 +0000k(~user@152.1.137.158)
2021-09-29 19:15:50 +0000 <boxscape_> it's in 9.2.1, let me check if it works for synonyms
2021-09-29 19:16:09 +0000fendor(~fendor@178.165.164.78.wireless.dyn.drei.com)
2021-09-29 19:16:21 +0000mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 245 seconds)
2021-09-29 19:16:29 +0000 <k> Say I have a class like `Monad m` with methods `(>>=)` and `(>>)` , and a default definition in terms of `(>>=)` is given for `(>>)`. Does GHC inline the default definition everywhere it appears? Or does it specialize the definition to the type of each instance, and then use its usual heuristic to decide whether to inline the specialized version? Or does it just use it's usual heuristic to decide whether to inline a fully polymorphic
2021-09-29 19:16:29 +0000 <k> version?
2021-09-29 19:16:55 +0000 <k> Sorry about the apostrophe in 'its'.
2021-09-29 19:18:32 +0000 <kuribas> c_wraith: why not just: myFun pref s | Just rest <- stripPrefix pref s = rest | otherwise = ""
2021-09-29 19:18:32 +0000mikoto-chan(~mikoto-ch@83.137.2.251)
2021-09-29 19:19:42 +0000 <c_wraith> because that's not a pattern. it is a lot easier to use right now, but it's sort of missing the point.
2021-09-29 19:20:17 +0000 <boxscape_> c_wraith seems to work just fine with pattern synonyms in master
2021-09-29 19:20:42 +0000 <c_wraith> yeah, 9.2 fixed some other type application bug I ran into recently.
2021-09-29 19:20:52 +0000 <c_wraith> seems like it got improved a bunch.
2021-09-29 19:21:10 +0000 <kuribas> c_wraith: ok, so obfuscation is the point...
2021-09-29 19:21:28 +0000 <c_wraith> no, the point is that you can use it as pattern matching.
2021-09-29 19:21:38 +0000chris(~chris@81.96.113.213)
2021-09-29 19:21:42 +0000chrisGuest6826
2021-09-29 19:22:17 +0000 <c_wraith> looks like in GHC 9.2 it will actually be useable sanely.
2021-09-29 19:22:27 +0000Guest6826(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-29 19:22:28 +0000 <c_wraith> instead of how you have to use that version
2021-09-29 19:23:09 +0000 <boxscape_> I think there might be a bug though, since `f (PrefixedBy (Proxy @GHC.Types.Symbol @"prefix") suffix) = suffix` works
2021-09-29 19:23:18 +0000 <boxscape_> whereas leaving out the @GHC.Types.Symbol doesn't
2021-09-29 19:23:30 +0000 <boxscape_> but I think it should be the other way around, since Proxy only has one specified type argument?
2021-09-29 19:23:39 +0000 <c_wraith> oh, it's the kind argument.
2021-09-29 19:23:49 +0000 <c_wraith> can you just leave it at @_ ?
2021-09-29 19:23:52 +0000 <boxscape_> yeah but it's inferred, you shouldn't be able to provide it via type application
2021-09-29 19:24:29 +0000 <boxscape_> yes, @_ works, but I would expect to get the same error I get if I try `Proxy @_ @"test"` in an expression instead of in a pattern
2021-09-29 19:24:29 +0000Guest41(~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
2021-09-29 19:24:34 +0000 <boxscape_> % Proxy @_ @"test"
2021-09-29 19:24:34 +0000 <yahb> boxscape_: ; <interactive>:2:1: error:; * Cannot apply expression of type `Proxy w0'; to a visible type argument `"test"'; * In the expression: Proxy @_ @"test"; In an equation for `it': it = Proxy @_ @"test"
2021-09-29 19:24:58 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-09-29 19:25:00 +0000 <kuribas> c_wraith: or do: myFun (stripPrefix "myPrefix" -> Just rest) = rest; myFun _ = ""
2021-09-29 19:25:05 +0000 <c_wraith> hah, ok. that is certainly unexpected
2021-09-29 19:25:25 +0000 <kuribas> c_wraith: I don't see what you gain with a Pattern...
2021-09-29 19:25:42 +0000 <kuribas> unless it's some weird "challenge".
2021-09-29 19:25:42 +0000 <c_wraith> you gain not having to write a view pattern
2021-09-29 19:25:47 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-29 19:25:47 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-29 19:25:47 +0000wroathe(~wroathe@user/wroathe)
2021-09-29 19:25:54 +0000 <boxscape_> kuribas if you have to do this a bunch of times for different prefixes it's a lot less visual clutter
2021-09-29 19:25:55 +0000Guest41(~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-09-29 19:26:07 +0000 <tomsmeding> and you gain the ability to say "my latest abomination"
2021-09-29 19:26:11 +0000 <tomsmeding> which is clearly an advantage
2021-09-29 19:26:22 +0000 <Guest41> any ideas on how one might write a test suite for a parser written in (mega)parsec ?
2021-09-29 19:26:32 +0000 <c_wraith> like, the whole reason pattern synonyms were added to GHC is that view patterns are rerrible
2021-09-29 19:26:36 +0000 <c_wraith> *terrible
2021-09-29 19:26:36 +0000 <Guest41> I've never written a proper test suite before
2021-09-29 19:26:47 +0000 <shapr> Guest41: property based tests?
2021-09-29 19:27:18 +0000chris(~chris@81.96.113.213)
2021-09-29 19:27:22 +0000chrisGuest816
2021-09-29 19:27:23 +0000 <Guest41> shapr: I'll look it up
2021-09-29 19:27:34 +0000 <Guest41> (first time hearing the term)
2021-09-29 19:27:40 +0000 <shapr> I like doing round trip tests for parsers, where I can generate a random value of the type, turn that into text, and then parse it back out and see if it's the same thing.
2021-09-29 19:27:57 +0000 <shapr> Guest41: you could start with straight up unit tests using hspec
2021-09-29 19:28:47 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-09-29 19:29:11 +0000 <Guest41> shapr: what you said sounds very interesting. How would hspec differ/
2021-09-29 19:29:22 +0000 <Guest41> s;/;?
2021-09-29 19:30:00 +0000 <kuribas> boxscape_: that looks perfectly clear to my eyes...
2021-09-29 19:30:06 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2021-09-29 19:30:49 +0000 <boxscape_> ¯\_(ツ)_/¯ it's two more tokens, which isn't a lot but adds up
2021-09-29 19:31:12 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 19:31:43 +0000Guest816(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-09-29 19:31:46 +0000oxide(~lambda@user/oxide) (Ping timeout: 245 seconds)
2021-09-29 19:32:37 +0000 <shapr> Guest41: if you've written some Haskell before, what do you think about the tutorial? https://hspec.github.io/
2021-09-29 19:33:08 +0000 <shapr> Guest41: I don't understand the question, how would hspec differ from? oh, do you mean differ from property based tests?
2021-09-29 19:33:24 +0000 <Guest41> shapr: sorry, yes that's I meant
2021-09-29 19:33:55 +0000 <shapr> unit tests are where you declare that a particular input should match a particular output.
2021-09-29 19:33:57 +0000takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-09-29 19:34:14 +0000 <shapr> Property based tests are where you say some class of inputs should match some class of outputs.
2021-09-29 19:34:23 +0000 <shapr> oh, I've forgotten how to use @check
2021-09-29 19:34:52 +0000 <shapr> @help check
2021-09-29 19:34:52 +0000 <lambdabot> check <expr>
2021-09-29 19:34:52 +0000 <lambdabot> You have QuickCheck and 3 seconds. Prove something.
2021-09-29 19:35:15 +0000 <Guest41> oh so in your example "class of inputs" is just type correctness, yes?
2021-09-29 19:35:49 +0000 <shapr> it can be something as simple as "the length of a list should be the same after sorting the list"
2021-09-29 19:35:50 +0000 <Guest41> if the outputs are the correct type then they pass the tests
2021-09-29 19:36:11 +0000 <tomsmeding> @check \l -> length (sort l) == length (l :: [Int])
2021-09-29 19:36:12 +0000 <lambdabot> +++ OK, passed 100 tests.
2021-09-29 19:36:15 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
2021-09-29 19:36:23 +0000 <tomsmeding> @check \l -> sort l == (l :: [Int])
2021-09-29 19:36:25 +0000 <lambdabot> *** Failed! Falsifiable (after 6 tests and 5 shrinks):
2021-09-29 19:36:25 +0000 <lambdabot> [-3,3,3,3,-4]
2021-09-29 19:36:28 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-09-29 19:36:33 +0000 <shapr> when I'm giving a talk on property based testing I ask whether everyone in the audience believes that a * (b * c) is the same as (a * b) * c
2021-09-29 19:36:51 +0000emf(~emf@2620:10d:c090:400::5:b24f) (Quit: emf)
2021-09-29 19:36:59 +0000 <shapr> I also ask whether every number can be saved to json, and will be the same when it's loaded from json
2021-09-29 19:37:21 +0000 <shapr> @check \a b c -> a * (b * c) == (a * b) * c
2021-09-29 19:37:22 +0000 <lambdabot> +++ OK, passed 100 tests.
2021-09-29 19:37:42 +0000 <shapr> Guest41: does the associativity of multiplication seem like a reasonable property?
2021-09-29 19:37:51 +0000 <Guest41> Wait how does lambdabot generate its tests?
2021-09-29 19:37:52 +0000 <shapr> tomsmeding: thanks for that example :-)
2021-09-29 19:38:21 +0000 <Guest41> shapr: well I think you could overload your operator some horrible way and break it
2021-09-29 19:38:22 +0000y04nn(~y04nn@193.32.127.238)
2021-09-29 19:38:29 +0000 <kuribas> @check \a b c -> (a::Double) * (b * c) == (a * b) * c
2021-09-29 19:38:29 +0000 <shapr> Guest41: lambdabot uses QuickCheck, which has a definition for how to generate the values for each type.
2021-09-29 19:38:31 +0000 <lambdabot> *** Failed! Falsifiable (after 4 tests and 8 shrinks):
2021-09-29 19:38:31 +0000 <lambdabot> -0.16831687903971976 0.7961839001969537 0.28952502728872787
2021-09-29 19:38:44 +0000 <Hecate> :O
2021-09-29 19:38:52 +0000 <shapr> Guest41: also, floating point numbers in computers aren't what you think!
2021-09-29 19:38:56 +0000 <shapr> as kuribas just demonstrated
2021-09-29 19:39:00 +0000 <tomsmeding> for some conservative definition of "each" in "each type" :p
2021-09-29 19:39:11 +0000 <shapr> heh, yes
2021-09-29 19:39:16 +0000 <Guest41> aha, interesting how it didn't try that many DOubles the first time
2021-09-29 19:39:28 +0000 <Guest41> it had to be nudged a bit
2021-09-29 19:40:02 +0000 <Guest41> shapr: so does hspec "allow" writing property based tests?
2021-09-29 19:40:18 +0000 <Guest41> Also, what numbers break JSON :^)
2021-09-29 19:40:22 +0000 <shapr> in Haskell, if your parser produces a data structure like an abstract syntax tree, you could turn that data structure into the matching text, and then see if the parser gets the right result!
2021-09-29 19:40:56 +0000 <shapr> Guest41: surprisingly many numbers break JSON, but the most common is that dividing by zero gives you NaN which is a floating point value, and is saved into JSON as the string "NaN"
2021-09-29 19:41:41 +0000 <shapr> you'd also think that all values of numbers should equal themselves, but NaN == NaN is false
2021-09-29 19:41:43 +0000 <boxscape_> > read "NaN" :: Double
2021-09-29 19:41:44 +0000 <lambdabot> NaN
2021-09-29 19:42:20 +0000 <justsomeguy> Floating point as a whole is really confusing and unintuitive to me.
2021-09-29 19:42:26 +0000 <shapr> > let nan = read "NaN" :: Double in nan == nan
2021-09-29 19:42:28 +0000 <lambdabot> False
2021-09-29 19:42:53 +0000 <Guest41> shapr: thank you for the information
2021-09-29 19:43:07 +0000 <shapr> Guest41: yes, hspec allows you to write both unit tests and property based tests
2021-09-29 19:43:33 +0000 <shapr> Guest41: got any other fun questions?
2021-09-29 19:43:36 +0000 <Guest41> I think a mix of both is what I'll go for
2021-09-29 19:43:46 +0000 <tomsmeding> > (0.0 == -0.0, show 0.0 == show "-0.0")
2021-09-29 19:43:48 +0000 <lambdabot> (True,False)
2021-09-29 19:43:53 +0000 <Guest41> shapr: What a thing to say :^)
2021-09-29 19:43:54 +0000 <boxscape_> "NaN" being stored as a string in JSON doesn't seem to imply that storing it in JSON doesn't preserve the information, after all, JSON generally doesn't store type information and you always have to know as what type you want to decode it, and you can with `read @Double`
2021-09-29 19:43:56 +0000 <tomsmeding> > (0.0 == -0.0, show 0.0 == show (-0.0))
2021-09-29 19:43:57 +0000 <lambdabot> (True,False)
2021-09-29 19:44:06 +0000 <boxscape_> or well
2021-09-29 19:44:07 +0000 <shapr> boxscape_: oh that's a good point
2021-09-29 19:44:26 +0000 <boxscape_> I guess technically for read in particular to work, regular numbers would also have to have ""
2021-09-29 19:44:28 +0000 <boxscape_> but close enough
2021-09-29 19:45:56 +0000 <tomsmeding> > round (fromIntegral (2 ^ 55 + 1 :: Int) :: Double) == 2 ^ 55 + 1
2021-09-29 19:45:57 +0000 <lambdabot> False
2021-09-29 19:46:06 +0000 <shapr> fromIntegral can bite you hard
2021-09-29 19:46:35 +0000_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-09-29 19:46:46 +0000 <tomsmeding> > round (fromIntegral (2 ^ 55 + 1 :: Int) :: Double) :: Int == 2 ^ 55 + 1
2021-09-29 19:46:47 +0000 <lambdabot> error:
2021-09-29 19:46:47 +0000 <lambdabot> Not in scope: type constructor or class ‘==’error:
2021-09-29 19:46:47 +0000 <lambdabot> Not in scope: type constructor or class ‘^’error:
2021-09-29 19:46:57 +0000 <tomsmeding> > (round (fromIntegral (2 ^ 55 + 1 :: Int) :: Double) :: Int) == 2 ^ 55 + 1
2021-09-29 19:46:58 +0000 <lambdabot> False
2021-09-29 19:47:02 +0000ec(~ec@gateway/tor-sasl/ec)
2021-09-29 19:47:04 +0000 <tomsmeding> there, all types specified
2021-09-29 19:47:10 +0000 <tomsmeding> nice error message btw
2021-09-29 19:47:14 +0000 <shapr> heh
2021-09-29 19:47:17 +0000 <Guest41> well, probably not a fun question, but I'm struggling to write a parser that can consume a sequence of interspersed value types. Something like `A 1 2 "hello" True 5.6 False` I would need to store each list of values in a record field. I have no idea how to do this :P
2021-09-29 19:47:36 +0000 <tomsmeding> Guest41: do you have a parser that parses one such value?
2021-09-29 19:47:43 +0000 <Guest41> Yes I do
2021-09-29 19:47:51 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
2021-09-29 19:47:54 +0000 <tomsmeding> 'pValue `sepBy` spaces1' ?
2021-09-29 19:48:04 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-09-29 19:48:06 +0000 <Guest41> I have one parser foreach type I want to parse
2021-09-29 19:48:27 +0000 <shapr> do you know the order of the types in the string you want to parse?
2021-09-29 19:48:27 +0000 <Guest41> wait I asked the question wrong
2021-09-29 19:48:54 +0000 <shapr> Guest41: sounds like you are taking an especially fun class
2021-09-29 19:49:07 +0000 <Guest41> well I'm trying to write a parser for: https://github.com/kdl-org/kdl/blob/main/SPEC.md#node
2021-09-29 19:50:05 +0000 <Guest41> it's a doc language where a node can be in the form `node 123 { emptyNode; } prop=value`
2021-09-29 19:50:36 +0000 <Guest41> the spec insists you can have values, sub-nodes, and key-value pairs interspersed in any order
2021-09-29 19:50:57 +0000 <Guest41> so much for an XML-like language
2021-09-29 19:51:07 +0000 <tomsmeding> perhaps make an ADT, something like 'data Thing = ValueThing Value | SubNodeThing SubNode | KeyValueThing Key Value'
2021-09-29 19:51:22 +0000 <shapr> yeah, I like that
2021-09-29 19:51:29 +0000 <tomsmeding> and make a pThing = ValueThing <$> pValue <|> ...
2021-09-29 19:51:35 +0000 <tomsmeding> and then the sepBy thing :p
2021-09-29 19:51:50 +0000 <tomsmeding> and then build your record from the grouped values in the resulting list
2021-09-29 19:52:12 +0000tomsmedingfinds that linked description very hard to read
2021-09-29 19:52:37 +0000 <Guest41> I swear those algebraic data types are amazing
2021-09-29 19:52:45 +0000 <shapr> they are!
2021-09-29 19:52:56 +0000 <Guest41> such a simple one-liner to solve a rather tricky issue
2021-09-29 19:53:06 +0000 <shapr> but really you can say "this holds one of these things" or you can say "this holds several things"
2021-09-29 19:53:27 +0000hexfive(~eric@50.35.83.177)
2021-09-29 19:53:56 +0000 <shapr> Guest41: if it were me, I'd start by writing a parser that does some of the things and doesn't do the rest
2021-09-29 19:53:57 +0000 <Guest41> well only now do I see the latter
2021-09-29 19:54:08 +0000 <kuribas> Or you can make a record data ThingMaybe = ThingMaybe (Maybe Value) (Maybe SubNode) (Maybe KeyValue)
2021-09-29 19:54:10 +0000 <shapr> but that's because I get more motivation from incremental small successes
2021-09-29 19:54:23 +0000 <kuribas> and parse into (Endo ThingMaybe)
2021-09-29 19:54:42 +0000 <kuribas> then check in the end if all values are "Just".
2021-09-29 19:54:44 +0000 <Guest41> shapr: That's good idea for me too, because I will probably write some nonesense the first time around
2021-09-29 19:54:51 +0000 <shapr> I certainly do that
2021-09-29 19:55:46 +0000 <tomsmeding> kuribas: in this case probably replace Maybe by [] since there maybe be more than one
2021-09-29 19:55:46 +0000 <kuribas> I almost always start my code with nonsense.
2021-09-29 19:56:14 +0000 <tomsmeding> but that's kind of a clever solution; the sum type approach that I suggested is more accessible to a non-advanced haskeller, I think
2021-09-29 19:56:16 +0000 <kuribas> tomsmeding: in that case your ADT would be more useful.
2021-09-29 19:56:18 +0000doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-09-29 19:57:18 +0000hexfive(~eric@50.35.83.177) (Client Quit)
2021-09-29 19:57:36 +0000tomsmedingwonders if someone has written a generic function that takes a [Thing] and returns a ThingList, but then using Generics so it works for all suhc types
2021-09-29 19:57:41 +0000 <tomsmeding> s/suhc/such/
2021-09-29 19:57:56 +0000 <tomsmeding> like generalised 'partition'
2021-09-29 19:58:03 +0000 <tomsmeding> um, 'partitionEithers'
2021-09-29 20:00:39 +0000kuribas(~user@ptr-25vy0i8j07s3q8yomww.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-09-29 20:01:17 +0000mcfrdy(~mcfrdy@user/mcfrdy) (Quit: quit)
2021-09-29 20:02:07 +0000mcfrdy(~mcfrdy@user/mcfrdy)
2021-09-29 20:02:26 +0000emf(~emf@2620:10d:c090:400::5:b24f)
2021-09-29 20:03:35 +0000emf(~emf@2620:10d:c090:400::5:b24f) (Client Quit)
2021-09-29 20:03:37 +0000dixie_(~dixie@real.wilbury.sk) (Ping timeout: 252 seconds)
2021-09-29 20:05:02 +0000oxide(~lambda@user/oxide)
2021-09-29 20:05:29 +0000juhp(~juhp@128.106.188.220) (Ping timeout: 265 seconds)
2021-09-29 20:05:40 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-29 20:07:22 +0000juhp(~juhp@128.106.188.220)
2021-09-29 20:10:15 +0000dixie(~dixie@real.wilbury.sk)
2021-09-29 20:11:42 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net)
2021-09-29 20:12:54 +0000acidjnk_new(~acidjnk@p200300d0c703cb53d06c99722a203ed2.dip0.t-ipconnect.de)
2021-09-29 20:13:44 +0000acidjnk(~acidjnk@p200300d0c703cb532872c69d6a5a30e0.dip0.t-ipconnect.de)
2021-09-29 20:14:36 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
2021-09-29 20:14:42 +0000Morrow_(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-09-29 20:15:56 +0000yauhsien(~yauhsien@118-167-48-21.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-29 20:16:21 +0000acidjnk_new3(~acidjnk@p200300d0c703cb53c55fe893eb04092a.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-09-29 20:16:58 +0000mht(~mht@mht.wtf) (Ping timeout: 260 seconds)
2021-09-29 20:17:11 +0000connrs(~connrs@user/connrs) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-29 20:17:31 +0000connrs(~connrs@user/connrs)
2021-09-29 20:17:54 +0000acidjnk_new(~acidjnk@p200300d0c703cb53d06c99722a203ed2.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-09-29 20:17:54 +0000Morrow_(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
2021-09-29 20:18:01 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-09-29 20:19:18 +0000sshine(~simon@hubris.eta.solutions) (Ping timeout: 260 seconds)
2021-09-29 20:19:18 +0000zzz(~yin@user/yin) (Ping timeout: 260 seconds)
2021-09-29 20:19:46 +0000rookie101(~rookie@207.154.204.166) (Ping timeout: 260 seconds)
2021-09-29 20:19:47 +0000janus(janus@anubis.0x90.dk) (Ping timeout: 240 seconds)
2021-09-29 20:21:20 +0000nrl^(~nrl@68.101.50.106) (Remote host closed the connection)
2021-09-29 20:22:11 +0000sshine(~simon@hubris.eta.solutions)
2021-09-29 20:23:44 +0000mht(~mht@mht.wtf)
2021-09-29 20:23:45 +0000zzz(~yin@user/yin)
2021-09-29 20:28:54 +0000justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-29 20:29:29 +0000 <Guest41> hmm, if I have a type like Int wrapped in some data constructor like Constructor Int, is there an "idiomatic" way to "flatten" it?
2021-09-29 20:30:11 +0000 <Guest41> sometthing like `flatten :: AnyConstructor a -> a`
2021-09-29 20:30:51 +0000 <Guest41> I know I can pattern match against what I need but I think this would be common (no?)
2021-09-29 20:30:51 +0000 <geekosaur> look at the Data.Coerce module?
2021-09-29 20:31:18 +0000 <geekosaur> otherwise no, there's no shortcut. but you can pattern match in more places than you might think
2021-09-29 20:31:33 +0000janus(janus@anubis.0x90.dk)
2021-09-29 20:32:11 +0000rookie101(~rookie@207.154.204.166)
2021-09-29 20:32:46 +0000slack1256(~slack1256@181.203.20.152) (Ping timeout: 252 seconds)
2021-09-29 20:34:24 +0000 <Guest41> geekosaur: the doc is unreadable for me ... how should I use coerce exactly?
2021-09-29 20:35:17 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Remote host closed the connection)
2021-09-29 20:35:28 +0000 <geekosaur> given your example, a valid use of coerce would be coerce :: Constructor Int -> Int (not that you have to write the signature, that's just what a use of coerce under those circumstances would do)
2021-09-29 20:35:50 +0000 <geekosaur> it would also be able to go the other way, coerce on an Int can produce a Constructor Int
2021-09-29 20:38:44 +0000 <Guest41> oh no I made a silly mistake. Constructor isn't a type: `data Type = Constructor Int | Constructor1 String` ...
2021-09-29 20:39:09 +0000 <geekosaur> no, you need to pattern match for that
2021-09-29 20:39:23 +0000 <Guest41> no way to use coerce right?
2021-09-29 20:39:35 +0000 <geekosaur> nope
2021-09-29 20:39:46 +0000 <geekosaur> coerce operates on types, not data constructors
2021-09-29 20:40:11 +0000 <geekosaur> what type would a hypothetical dataCoerce have with respect to type Type?
2021-09-29 20:40:54 +0000 <awpr> you could make it a record constructor and use the field selector function. but then it's a partial function, with all the associated issues (like, you need to already know it's the right constructor, which means you probably already pattern-matched it, and thus already have the contents from the pattern match and don't need the selector function)
2021-09-29 20:43:05 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-29 20:43:38 +0000alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-09-29 20:44:00 +0000alzgh(~alzgh@user/alzgh)
2021-09-29 20:45:08 +0000 <Guest41> awpr: well in fact I already pattern matched it to exclude unwanted constructors, which means a field selector is just the right thing for me
2021-09-29 20:45:44 +0000 <Guest41> I hadn't written field selectors the first time I wrote the type definition and I seemingly forgot they exis
2021-09-29 20:45:55 +0000 <geekosaur> if you pattern matched it, it's trivial to extract the value at the same time
2021-09-29 20:46:01 +0000 <Guest41> it's always the simple things with haskell :^)
2021-09-29 20:46:02 +0000 <awpr> but if you're inside a pattern match for that constructor, then the contents are already in scope, unless you _'d the
2021-09-29 20:46:03 +0000 <awpr> m
2021-09-29 20:47:54 +0000 <Guest41> geekosaur: I used `filter isRightConstructor list` where isRightConstructor x = case x of RightConstructor _ -> True ....
2021-09-29 20:47:58 +0000Guest79(~Guest79@247.158-248-49.customer.lyse.net)
2021-09-29 20:48:01 +0000 <Guest79> Howdy
2021-09-29 20:48:01 +0000vysn(~vysn@user/vysn) (Ping timeout: 245 seconds)
2021-09-29 20:48:01 +0000mei(~mei@user/mei) (Quit: mei)
2021-09-29 20:48:18 +0000 <geekosaur> right, so just change the _ to a variable name and you have your value
2021-09-29 20:48:18 +0000 <Guest41> wait yes
2021-09-29 20:48:29 +0000 <Guest41> *facepalm*
2021-09-29 20:48:44 +0000 <awpr> try `mapMaybe` in place of `filter`
2021-09-29 20:48:51 +0000MQ-17J(~MQ-17J@35.50.53.58) (Ping timeout: 245 seconds)
2021-09-29 20:48:56 +0000 <Guest79> Can I ask a noob question? I found " foldl " and according to zvon.org it is Prelude, but when I run the examples in ghci I just get errors
2021-09-29 20:49:00 +0000 <Guest79> http://zvon.org/other/haskell/Outputprelude/foldl_f.html
2021-09-29 20:49:28 +0000MQ-17J(~MQ-17J@2607:fb90:8848:a516:92d8:c446:e2f1:d98e)
2021-09-29 20:50:46 +0000 <Guest41> awpr: Amazing!
2021-09-29 20:50:48 +0000geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca)
2021-09-29 20:50:59 +0000 <Guest41> I should learn more about these functions
2021-09-29 20:52:18 +0000 <geekosaur> > foldl (/) 64 [4,2,4]
2021-09-29 20:52:23 +0000 <lambdabot> 2.0
2021-09-29 20:54:17 +0000 <Guest79> https://i.imgur.com/RZDUpzi.png
2021-09-29 20:54:20 +0000 <Guest79> oh god
2021-09-29 20:54:20 +0000 <Guest79> nevermind...
2021-09-29 20:54:20 +0000 <geekosaur> so what errors heh
2021-09-29 20:54:20 +0000 <Guest79> i guess i redefined the function in my .hs file
2021-09-29 20:54:20 +0000 <Guest79> hehe, ty tho
2021-09-29 20:54:20 +0000 <monochrom> This is why remote tech support is impossible.
2021-09-29 20:55:15 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Remote host closed the connection)
2021-09-29 20:55:15 +0000 <Guest79> Well it helped me within 1 minute
2021-09-29 20:55:15 +0000 <monochrom> That's just rubber duck working.
2021-09-29 20:55:28 +0000 <Guest79> it's a bit cozier having cyber humans instead of rubber ducks tho
2021-09-29 20:55:37 +0000zer0bitz(~zer0bitz@dsl-hkibng31-54fafc-123.dhcp.inet.fi) (Ping timeout: 265 seconds)
2021-09-29 20:55:47 +0000 <monochrom> My TA and I came up with this crazy idea that we should distribute rubber ducks to our students.
2021-09-29 20:56:33 +0000awprwishes Haskell had a cute mascot like the Go-pher or the Rust crab
2021-09-29 20:57:12 +0000 <monochrom> I then came up with this next idea that the rubber ducks should contain smart circuitry to automatically escalate their questions to me when appropriate.
2021-09-29 20:57:24 +0000 <geekosaur> overengineered
2021-09-29 20:57:37 +0000 <monochrom> My TA pointed out "therefore it just needs the null circuitry".
2021-09-29 20:58:16 +0000 <monochrom> We had a Da Lamb mascot.
2021-09-29 20:58:25 +0000 <monochrom> But it didn't take off.
2021-09-29 20:58:48 +0000 <monochrom> We're now stuck with the bind-lambda logo.
2021-09-29 20:59:07 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-29 20:59:08 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-29 20:59:08 +0000wroathe(~wroathe@user/wroathe)
2021-09-29 20:59:24 +0000 <awpr> because it's an infix of lambda or because it's a popular ingredient in curry
2021-09-29 21:00:04 +0000 <monochrom> I think it began as simply the letter game of permuting "lambda"
2021-09-29 21:00:38 +0000 <monochrom> But I used to say "applicative is curried burrito"
2021-09-29 21:00:45 +0000 <monochrom> err "curry burrito"
2021-09-29 21:00:47 +0000 <awpr> just brainstorming more potential mascots here: C++thulhu
2021-09-29 21:01:03 +0000 <monochrom> https://currito.com/
2021-09-29 21:02:09 +0000emf(~emf@2620:10d:c090:400::5:2507)
2021-09-29 21:03:00 +0000lavaman(~lavaman@98.38.249.169)
2021-09-29 21:04:01 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-29 21:04:37 +0000 <boxscape_> awpr https://pbs.twimg.com/media/EXBVdPuWoAIt2K2?format=jpg&name=large
2021-09-29 21:05:02 +0000 <monochrom> Nice.
2021-09-29 21:06:47 +0000yinghua(~yinghua@2800:2121:1400:1db:2dd5:711:7e56:f9f7) (Ping timeout: 240 seconds)
2021-09-29 21:07:41 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-09-29 21:08:54 +0000yinghua(~yinghua@181.228.40.183)
2021-09-29 21:09:46 +0000jaitoon(~Jaitoon@2a02:c7f:a5f:1d00:f43d:e16d:5d40:5652)
2021-09-29 21:10:25 +0000 <Guest41> is that an unofficial mascot?
2021-09-29 21:10:51 +0000 <boxscape_> there's a big wiki page with logo suggestions where that was one https://wiki.haskell.org/Haskell_logos/New_logo_ideas
2021-09-29 21:11:03 +0000 <boxscape_> (before the current logo was chosen, though I believe it was born in that thread)
2021-09-29 21:13:40 +0000 <monochrom> The radioactivity one came from the 1st and worst monad analogy.
2021-09-29 21:13:46 +0000Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-09-29 21:14:14 +0000 <monochrom> Perhaps it's time you young lads hear the long-forgotten cautionary tale.
2021-09-29 21:14:36 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2021-09-29 21:15:06 +0000Lord_of_Life_Lord_of_Life
2021-09-29 21:15:44 +0000emf(~emf@2620:10d:c090:400::5:2507) (Quit: emf)
2021-09-29 21:17:03 +0000 <monochrom> Don Stewart (IRC nick dons) was a prominent contributor to Haskell libraries back then. You have him to thank for bytestring, plugins (not GHC plugin, rather the "can my haskell exe load a plugin dynamically?" kind), and others.
2021-09-29 21:18:34 +0000 <Hecate> monochrom: what's the state of plugins anyway?
2021-09-29 21:18:58 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-09-29 21:19:06 +0000 <monochrom> So one day he blogged that he finally thought up the perfect analogy for monad or the IO monad (I forgot which): a spacesuit with hazardous nuclear waste inside, you are outside so you are safe.
2021-09-29 21:19:18 +0000emf(~emf@2620:10d:c090:400::5:2507)
2021-09-29 21:19:22 +0000 <monochrom> I think miraculous it still builds today. I haven't really checked.
2021-09-29 21:19:51 +0000 <monochrom> The problem is that, if anything, you should be inside, the nuclear waste should be outside.
2021-09-29 21:20:12 +0000 <geekosaur> someone seems to be keeping it up to date
2021-09-29 21:20:13 +0000 <monochrom> And this analogy works for IO only, if anything.
2021-09-29 21:20:33 +0000 <monochrom> There is nothing unsafe about even the [] monad.
2021-09-29 21:21:02 +0000michalz(~michalz@185.246.204.72) (Remote host closed the connection)
2021-09-29 21:21:16 +0000SquidDev(~SquidDev@autoclave.squiddev.cc) (Quit: Bye!)
2021-09-29 21:21:41 +0000SquidDev(~SquidDev@autoclave.squiddev.cc)
2021-09-29 21:22:30 +0000emf(~emf@2620:10d:c090:400::5:2507) (Client Quit)
2021-09-29 21:23:34 +0000 <boxscape_> there's a whole wikibooks page using the nuclear waste analogy https://en.wikibooks.org/w/index.php?title=Haskell/Understanding_monads&oldid=933545
2021-09-29 21:23:38 +0000 <boxscape_> (removed in the current version)
2021-09-29 21:23:38 +0000oxide(~lambda@user/oxide) (Ping timeout: 265 seconds)
2021-09-29 21:24:12 +0000 <monochrom> Yeah good riddance.
2021-09-29 21:25:42 +0000 <monochrom> The Haskell Wikibook restored my faith in the wiki way of doing things because someone was rude enough to just delete a whole chapter wholesale.
2021-09-29 21:25:46 +0000 <monochrom> "rude"
2021-09-29 21:26:13 +0000 <monochrom> You look at the haskell wiki and you can still see that everyone is too polite to delete outdated, obsolete, wrong stuff.
2021-09-29 21:26:35 +0000 <monochrom> This politeness makes the whole thing useless.
2021-09-29 21:26:49 +0000 <geekosaur> never assume "too polite" when "doesn't give a damn" is sufficient
2021-09-29 21:26:59 +0000 <boxscape_> whose razor is that
2021-09-29 21:26:59 +0000gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-09-29 21:27:07 +0000 <geekosaur> which, sadly, is a recurrent disease of wikis
2021-09-29 21:27:08 +0000 <awpr> wow some of those logos are so bad they're actually amazing
2021-09-29 21:27:13 +0000 <awpr> "HELL ASK"
2021-09-29 21:27:28 +0000 <boxscape_> oh I didn't even notice that's an anagram when I saw the logo
2021-09-29 21:28:35 +0000 <monochrom> OK, I was speaking for and about myself. I gave a damn, but too afraid to delete.
2021-09-29 21:29:55 +0000pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Ping timeout: 265 seconds)
2021-09-29 21:32:50 +0000emf(~emf@2620:10d:c090:400::5:2507)
2021-09-29 21:34:23 +0000Guest4176(~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-09-29 21:34:27 +0000cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2021-09-29 21:35:32 +0000mestre(~mestre@191.177.175.57)
2021-09-29 21:36:04 +0000emf(~emf@2620:10d:c090:400::5:2507) (Client Quit)
2021-09-29 21:36:28 +0000y04nn(~y04nn@193.32.127.238) (Ping timeout: 252 seconds)
2021-09-29 21:38:31 +0000Guest41(~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2021-09-29 21:39:34 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 260 seconds)
2021-09-29 21:40:09 +0000Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-09-29 21:41:23 +0000cheater(~Username@user/cheater)
2021-09-29 21:44:14 +0000emf(~emf@2620:10d:c090:400::5:2507)
2021-09-29 21:45:03 +0000Guest2934(~Guest29@206.12.14.124)
2021-09-29 21:47:44 +0000MQ-17J(~MQ-17J@2607:fb90:8848:a516:92d8:c446:e2f1:d98e) (Read error: Connection reset by peer)
2021-09-29 21:48:42 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-29 21:48:57 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-29 21:49:32 +0000makrus(~makrus@206.12.14.124)
2021-09-29 21:50:22 +0000makrus(~makrus@206.12.14.124) ()
2021-09-29 21:50:32 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e) (Remote host closed the connection)
2021-09-29 21:51:39 +0000 <sclv> monochrom: i had no idea that dons was responsible for the nuclear waste metaphor, lol
2021-09-29 21:52:08 +0000 <monochrom> :)
2021-09-29 21:52:17 +0000dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-09-29 21:52:53 +0000 <Hecate> awpr: oh yeah it's fantastic
2021-09-29 21:53:03 +0000Null_A(~null_a@2601:645:8700:2290:91f2:4a69:be9c:a77e)
2021-09-29 21:53:21 +0000 <boxscape_> (https://wiki.haskell.org/Monad_tutorials_timeline claims Eric Kow came up with space suits and Paul Johnson with nuclear waste)
2021-09-29 21:55:12 +0000Guest79(~Guest79@247.158-248-49.customer.lyse.net) (Quit: Client closed)
2021-09-29 21:55:14 +0000myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-09-29 21:57:25 +0000 <monochrom> Ah, the one I saw was "2007-01 Think of a monad - Don Stewart (reposted on Eric Kow's blog)"
2021-09-29 21:57:37 +0000max22-(~maxime@2a01cb088335980073a4b4db0ef417b5.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-09-29 21:57:59 +0000y04nn(~y04nn@193.32.127.238)
2021-09-29 21:59:15 +0000 <monochrom> I admit error in attributing the 1st monad analogy.
2021-09-29 21:59:29 +0000Guest2934(~Guest29@206.12.14.124) (Quit: Client closed)
2021-09-29 22:00:04 +0000 <monochrom> But may I attribute the 1st monad analogy stack? SpaceSuitT NuclearWaste or something... :)
2021-09-29 22:01:58 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-29 22:07:11 +0000xff0x(~xff0x@2001:1a81:5386:1100:51ce:15a:f28:e4d7) (Ping timeout: 245 seconds)
2021-09-29 22:07:35 +0000mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-09-29 22:08:13 +0000xff0x(~xff0x@2001:1a81:5386:1100:959c:7ba1:9c0e:1cbf)
2021-09-29 22:11:16 +0000benin036932301(~benin@183.82.176.107) (Quit: The Lounge - https://thelounge.chat)
2021-09-29 22:14:11 +0000Guest4176(~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
2021-09-29 22:16:15 +0000benin036932301(~benin@183.82.176.107)
2021-09-29 22:20:43 +0000yauhsien(~yauhsien@118-167-50-28.dynamic-ip.hinet.net)
2021-09-29 22:25:22 +0000yauhsien(~yauhsien@118-167-50-28.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-29 22:25:29 +0000cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-09-29 22:25:39 +0000cheater(~Username@user/cheater)
2021-09-29 22:25:47 +0000random-jellyfish(~random-je@user/random-jellyfish)
2021-09-29 22:25:53 +0000azimut(~azimut@gateway/tor-sasl/azimut)
2021-09-29 22:26:16 +0000unmanbearpig(~unmanbear@45.76.95.141) (Changing host)
2021-09-29 22:26:16 +0000unmanbearpig(~unmanbear@user/unmanbearpig)
2021-09-29 22:26:44 +0000random-jellyfish(~random-je@user/random-jellyfish) (Client Quit)
2021-09-29 22:27:08 +0000azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2021-09-29 22:34:17 +0000mikoto-chan(~mikoto-ch@83.137.2.251) (Ping timeout: 252 seconds)
2021-09-29 22:36:07 +0000mikoto-chan(~mikoto-ch@83.137.2.252)
2021-09-29 22:36:21 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-09-29 22:37:36 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds)
2021-09-29 22:39:50 +0000waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-09-29 22:43:15 +0000pavonia(~user@user/siracusa)
2021-09-29 22:43:48 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-09-29 22:44:16 +0000Organizers|Robin(~Robin_Jad@152.67.64.160) (Ping timeout: 245 seconds)
2021-09-29 22:45:50 +0000acidjnk(~acidjnk@p200300d0c703cb532872c69d6a5a30e0.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-09-29 22:50:10 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-29 22:50:43 +0000mikoto-chan(~mikoto-ch@83.137.2.252) (Ping timeout: 252 seconds)
2021-09-29 22:50:44 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-29 22:56:10 +0000ubert(~Thunderbi@178.115.55.159.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-09-29 22:56:37 +0000yauhsien(~yauhsien@118-167-50-28.dynamic-ip.hinet.net)
2021-09-29 22:57:28 +0000yauhsien(~yauhsien@118-167-50-28.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-29 22:59:44 +0000tsmc[m](~tsmcmatri@2001:470:69fc:105::1:7e1)
2021-09-29 23:00:31 +0000hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-09-29 23:01:00 +0000hendursaga(~weechat@user/hendursaga)
2021-09-29 23:03:59 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-09-29 23:04:41 +0000CnnibisIndica(~herb@user/mesaboogie) (Ping timeout: 245 seconds)
2021-09-29 23:04:51 +0000codygman[m](~codygman@2001:470:69fc:105::b4ba)
2021-09-29 23:05:03 +0000CnnibisIndica(~herb@user/mesaboogie)
2021-09-29 23:06:22 +0000pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 260 seconds)
2021-09-29 23:08:58 +0000Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-09-29 23:09:38 +0000Guest79(~Guest79@47.186.214.206)
2021-09-29 23:12:03 +0000 <Guest79> Can anyone help? I'm stuck trying to use a custom Logging monad transformer inside of my App monad. I don't know how to go from LoggingOrville -> App here: https://github.com/codygman/smol-monadorville-example/blob/a95261633eed1b9df9bf1d4df8255cec92fecc2…
2021-09-29 23:13:07 +0000 <Guest79> Maybe with MonadIO? I want my soon to be custom instance of `runningQuery` to be used
2021-09-29 23:13:42 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
2021-09-29 23:14:36 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-29 23:14:40 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-09-29 23:17:06 +0000euandreh(~euandreh@2804:14c:33:9fe5:6daf:7cb1:25f6:bef8) (Ping timeout: 260 seconds)
2021-09-29 23:20:47 +0000emf_(~emf@2601:602:9401:b660:47d:d5f4:4143:7c05)
2021-09-29 23:20:51 +0000xsperry(~xs@user/xsperry) (Remote host closed the connection)
2021-09-29 23:21:14 +0000xsperry(~xs@cpe-188-129-101-182.dynamic.amis.hr)
2021-09-29 23:22:29 +0000euandreh(~euandreh@2804:14c:33:9fe5:2810:3afa:c444:8029)
2021-09-29 23:23:10 +0000emf(~emf@2620:10d:c090:400::5:2507) (Ping timeout: 260 seconds)
2021-09-29 23:28:05 +0000Guest79(~Guest79@47.186.214.206) (Quit: Ping timeout (120 seconds))
2021-09-29 23:28:16 +0000Guest79(~Guest79@47.186.214.206)
2021-09-29 23:28:27 +0000yauhsien(~yauhsien@118-167-50-28.dynamic-ip.hinet.net)
2021-09-29 23:29:30 +0000mestre(~mestre@191.177.175.57) (Quit: leaving)
2021-09-29 23:29:47 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-29 23:32:55 +0000Guest79(~Guest79@47.186.214.206) (Client Quit)
2021-09-29 23:33:08 +0000yauhsien(~yauhsien@118-167-50-28.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-29 23:35:35 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 265 seconds)
2021-09-29 23:37:04 +0000mestre(~mestre@191.177.175.57)
2021-09-29 23:40:43 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-29 23:40:59 +0000Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2021-09-29 23:45:52 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-29 23:45:52 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-29 23:45:52 +0000wroathe(~wroathe@user/wroathe)
2021-09-29 23:49:07 +0000BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds)
2021-09-29 23:50:11 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-29 23:50:40 +0000ph88(~ph88@2a02:8109:9e00:7e5c:5435:afc4:e6b4:ce6b) (Ping timeout: 252 seconds)
2021-09-29 23:52:33 +0000benin0369323016(~benin@183.82.30.62)
2021-09-29 23:53:25 +0000aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-09-29 23:53:38 +0000zebrag(~chris@user/zebrag)
2021-09-29 23:54:16 +0000benin036932301(~benin@183.82.176.107) (Ping timeout: 245 seconds)
2021-09-29 23:54:16 +0000benin0369323016benin036932301
2021-09-29 23:55:57 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)