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