2024/01/22

2024-01-22 00:02:23 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-01-22 00:19:47 +0100acidjnk(~acidjnk@p200300d6e737e7801d66593b084f6414.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2024-01-22 00:27:54 +0100czy(~user@114.226.59.181)
2024-01-22 00:28:37 +0100foul_owl(~kerry@174-21-148-34.tukw.qwest.net) (Ping timeout: 264 seconds)
2024-01-22 00:33:39 +0100Tuplanolla(~Tuplanoll@91-159-68-95.elisa-laajakaista.fi) (Quit: Leaving.)
2024-01-22 00:40:39 +0100foul_owl(~kerry@185.216.231.180)
2024-01-22 00:42:13 +0100Guest|71(~Guest|71@host-89-240-137-154.as13285.net)
2024-01-22 00:42:59 +0100Guest|71(~Guest|71@host-89-240-137-154.as13285.net) (Client Quit)
2024-01-22 00:46:06 +0100jargon(~jargon@211.sub-174-205-225.myvzw.com) (Remote host closed the connection)
2024-01-22 00:48:38 +0100Lycurgus(~georg@user/Lycurgus)
2024-01-22 00:49:13 +0100 <cheater> i'd like for cabal to be able to run packages with a Main in them
2024-01-22 00:49:37 +0100 <cheater> just like cabal run packagename -x -y "blah" --my-arg -foo
2024-01-22 00:49:55 +0100 <cheater> or idk
2024-01-22 00:49:59 +0100 <cheater> cabal main packagename
2024-01-22 00:50:14 +0100 <cheater> or whatever keyword isn't being used yet and makes sense
2024-01-22 00:50:23 +0100 <cheater> cabal exec packagename?
2024-01-22 00:50:45 +0100 <Lycurgus> why? what's wrong with ghcrun and stuff?
2024-01-22 00:51:15 +0100 <cheater> well idk that ghcrun will download a package and build it in the background given just the package name and then just run the main
2024-01-22 00:51:24 +0100 <Lycurgus> i c
2024-01-22 00:51:30 +0100 <cheater> also you could do like
2024-01-22 00:51:48 +0100 <cheater> cabal exec https://path/to/github/repo/containing/package
2024-01-22 00:51:53 +0100 <cheater> that'd be nice
2024-01-22 00:52:17 +0100 <cheater> and even cabal exec /path/to/package or cabal exec ../path/to/package
2024-01-22 00:52:52 +0100 <cheater> and you could do -x executablename or -t testname
2024-01-22 00:52:59 +0100 <cheater> that'd be nice
2024-01-22 00:53:04 +0100 <Lycurgus> stack runghc maybe
2024-01-22 00:54:21 +0100 <cheater> stack 🤮
2024-01-22 00:56:43 +0100 <geekosaur> cabal has scripts too these days
2024-01-22 00:57:51 +0100 <geekosaur> https://cabal.readthedocs.io/en/3.8/cabal-commands.html#cabal-run see at "supports running script files"
2024-01-22 01:05:52 +0100 <geekosaur> as to the original question: cabal exec program -b package -- args ?
2024-01-22 01:06:18 +0100 <geekosaur> (remember that a package may have multiple executables)
2024-01-22 01:06:45 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2024-01-22 01:07:35 +0100 <geekosaur> oh, if the package has exactly one executable, cabal run package already does what you want
2024-01-22 01:08:09 +0100 <geekosaur> otherwise you have to select one, looks like cabal run <package>:exe:<programname>
2024-01-22 01:08:49 +0100 <geekosaur> you do need the -- to distingush between cabal and program options
2024-01-22 01:17:54 +0100jargon(~jargon@211.sub-174-205-225.myvzw.com)
2024-01-22 01:24:23 +0100ph88(~ph88@ip5b403f30.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2024-01-22 01:26:36 +0100gooba_(~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection)
2024-01-22 01:27:03 +0100gooba(~gooba@90-231-13-185-no3430.tbcn.telia.com)
2024-01-22 01:30:12 +0100alexherbo2(~alexherbo@2a02-8440-3240-7a11-1531-9b44-c763-5134.rev.sfr.net) (Ping timeout: 250 seconds)
2024-01-22 01:39:26 +0100 <cheater> geekosaur: i don't mean scripts, i mean executing the main of a package
2024-01-22 01:39:41 +0100 <cheater> like eg a http server could just serve a directory of html and other files
2024-01-22 01:39:48 +0100TonyStone(~TonyStone@074-076-057-186.res.spectrum.com) (Quit: Leaving)
2024-01-22 01:39:52 +0100 <geekosaur> everything from "as to the original question" above
2024-01-22 01:39:54 +0100 <cheater> a json parser could do some json stuff
2024-01-22 01:40:19 +0100 <cheater> "cabal run package already does what you want" really?
2024-01-22 01:40:44 +0100 <cheater> interesting
2024-01-22 01:41:04 +0100 <cheater> maybe we should just have more libraries provide useful executables then
2024-01-22 01:41:16 +0100 <cheater> that sort of thing is popular in python and it actually works pretty well
2024-01-22 01:46:41 +0100 <newsham> `stack run module`
2024-01-22 01:47:00 +0100 <newsham> https://docs.haskellstack.org/en/stable/
2024-01-22 01:47:24 +0100 <newsham> that might give you an experience closer to some of the JS and python package tools
2024-01-22 02:04:55 +0100 <geekosaur> there is one other thing. you can't arbitrarily execute a library, because Haskell is compiled to native code and the OS imposes a strict distinction between executables and libraries.
2024-01-22 02:05:40 +0100 <geekosaur> (shared libraries can be executable, but this requires building in a special executable stub which can't be written in Haskell)
2024-01-22 02:06:39 +0100 <geekosaur> Python is interpreted, so both libraries and programs are scripts and can be executed
2024-01-22 02:07:11 +0100 <geekosaur> same with JS. this is also true of runghc, but you need -main-is to override ghc looking for Main.main as the entry point
2024-01-22 02:07:42 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 02:12:02 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 256 seconds)
2024-01-22 02:12:49 +0100average(uid473595@user/average)
2024-01-22 02:13:45 +0100 <shapr> howdy newsham, long time no see
2024-01-22 02:18:59 +0100 <newsham> hey shapr. indeed.  i dont jump on irc too often anymore.  howdy?
2024-01-22 02:22:15 +0100 <cheater> geekosaur: that's why i suggested putting this in the package manager instead of making it like some sort of OS-level thing
2024-01-22 02:23:33 +0100 <geekosaur> the package manager can't override the OS here
2024-01-22 02:23:51 +0100 <geekosaur> if you want to execute the library, it has to be rebuilt as an application
2024-01-22 02:24:14 +0100 <geekosaur> or interpreted
2024-01-22 02:25:21 +0100 <geekosaur> also note that neither cabal nor stack knows if a library has a "main" hidden in it somewhere, you would have to specify where to look (again, main-is)
2024-01-22 02:25:50 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a989:ba9c:c8d7:9054) (Remote host closed the connection)
2024-01-22 02:26:23 +0100 <haskellbridge> 05<i​rregularsphere> cheater: "popular in python and it actually works pretty well" hmm, python uses venvs nowadays
2024-01-22 02:26:52 +0100 <cheater> i don't see how that's relevant
2024-01-22 02:27:24 +0100 <haskellbridge> 05<i​rregularsphere> I think you wanted the package manager to provide binaries system-wide?
2024-01-22 02:27:31 +0100 <cheater> geekosaur: you'd just look at the cabal file and load the first listed executable.
2024-01-22 02:27:45 +0100 <cheater> irregular: not really
2024-01-22 02:28:01 +0100 <haskellbridge> 05<i​rregularsphere> ah, I missed the point then
2024-01-22 02:28:12 +0100 <haskellbridge> 05<i​rregularsphere> your point*
2024-01-22 02:28:13 +0100 <geekosaur> cabal and stack already support that, I'm talking about trying to execute a library as is, like you were talking about earlier
2024-01-22 02:31:17 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a989:ba9c:c8d7:9054)
2024-01-22 02:32:36 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2024-01-22 02:33:16 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2024-01-22 02:35:17 +0100 <haskellbridge> 05<i​rregularsphere> can a library also have Main.main?
2024-01-22 02:35:18 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a989:ba9c:c8d7:9054) (Read error: Connection reset by peer)
2024-01-22 02:36:37 +0100 <cheater> geekosaur: i wasn't talking about anything like that :)
2024-01-22 02:39:46 +0100 <geekosaur> oh sorry, I thought I'd seen mention of Python's __main__ thing
2024-01-22 02:41:18 +0100 <haskellbridge> 05<i​rregularsphere> ...yeah i don't get what you two were saying, sorry
2024-01-22 02:43:50 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-01-22 02:45:19 +0100 <geekosaur> irregularsphere, a library can't usefully have a Main module because it would take quite a lot of work to convince either cabal or stack to build an executable from it
2024-01-22 02:46:02 +0100 <geekosaur> and if you tried to build a normal executable using the library it would lead to a linker error because Main.main was defined twice
2024-01-22 02:47:08 +0100 <haskellbridge> 14<m​aerwald> That's a bug due to text package using C++
2024-01-22 02:47:45 +0100 <geekosaur> hm, actually I'm not sure of that, it might work as long as there were no external references to anything defined in the library's Main
2024-01-22 02:56:44 +0100 <cheater> can y'all report this repository with an AI-generated "haskell book"? it's full of bullshit and the guy's just trying to get clout in the community by creating disinformation. https://github.com/dogweather/forkful (here's how you can report it: https://imgur.com/a/YKup5w7 )
2024-01-22 02:58:52 +0100 <cheater> he literally just had chat gpt generate a book with no work put into it and posted it without any fact checking
2024-01-22 02:59:20 +0100 <cheater> but he didn't forget to post his linkedin url
2024-01-22 03:01:54 +0100 <shapr> newsham: howdy!
2024-01-22 03:01:57 +0100shaprhops quietly
2024-01-22 03:02:16 +0100 <shapr> newsham: do you ever end up in the Boston area?
2024-01-22 03:02:46 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 03:03:01 +0100 <newsham> i havent been there since the early 2000s.
2024-01-22 03:03:58 +0100 <newsham> i used to work for a couple companies based there and had to travel there occasionally for work.. that was a long time ago.
2024-01-22 03:05:57 +0100tri_(~tri@2607:fb90:555e:511c:45c4:7a0:b2dd:b24a)
2024-01-22 03:06:03 +0100tri_(~tri@2607:fb90:555e:511c:45c4:7a0:b2dd:b24a) (Client Quit)
2024-01-22 03:08:55 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a989:ba9c:c8d7:9054)
2024-01-22 03:09:41 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 252 seconds)
2024-01-22 03:28:23 +0100 <shapr> aw, too bad
2024-01-22 03:33:31 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2024-01-22 03:34:17 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2024-01-22 03:36:48 +0100lockywolf(~lockywolf@public.lockywolf.net) (Quit: ZNC 1.8.2 - https://znc.in)
2024-01-22 03:39:12 +0100 <haskellbridge> 05<i​rregularsphere> cheater: the "Deep Dives" on that repo don't feel like deep dives at all
2024-01-22 03:40:12 +0100 <cheater> irregular: dude, it's ALL chat gpt. the "creator" of this crap posted it on the subreddit and admitted to it.
2024-01-22 03:40:29 +0100 <cheater> there's zero actual lucid thought behind this, it's all just computer generated spam
2024-01-22 03:40:36 +0100 <cheater> please report the repo to github
2024-01-22 03:40:44 +0100lockywolf(~lockywolf@public.lockywolf.net)
2024-01-22 03:40:52 +0100 <haskellbridge> 05<i​rregularsphere> I'm not sure how LLMs can even nail links to documentation at all
2024-01-22 03:41:04 +0100 <cheater> doesn't matter
2024-01-22 03:41:15 +0100 <newsham> i'm on oahu.  let me know if you visit.  its a nice place to visit. :)
2024-01-22 03:41:27 +0100 <haskellbridge> 05<i​rregularsphere> Also I'm unsure of what to report it _for_
2024-01-22 03:41:58 +0100 <haskellbridge> 05<i​rregularsphere> yeah I don't feel good about reporting
2024-01-22 03:42:14 +0100 <cheater> i posted the imgur link, that shows you what to report it for
2024-01-22 03:42:21 +0100 <cheater> github has an explicit anti-disinformation policy
2024-01-22 03:42:41 +0100 <cheater> https://docs.github.com/en/site-policy/acceptable-use-policies/github-misinformation-and-disinform…
2024-01-22 03:43:00 +0100 <cheater> "You may not post content that presents a distorted view of reality, whether it is inaccurate or false (misinformation) or is intentionally deceptive (disinformation), where such content is likely to result in harm to the public"
2024-01-22 03:43:19 +0100 <cheater> here's the "how to report" link again: https://imgur.com/a/YKup5w7
2024-01-22 03:43:32 +0100 <cheater> idk what you're not feeling good about, it's just chat gpt generated garbage
2024-01-22 03:45:14 +0100mima(~mmh@aftr-62-216-211-125.dynamic.mnet-online.de) (Ping timeout: 260 seconds)
2024-01-22 03:45:19 +0100 <cheater> https://www.reddit.com/r/haskell/comments/19bw1zi/my_difficulty_with_haskell_documentation_led_me/
2024-01-22 03:45:27 +0100 <cheater> here's the original thread (thankfully deleted by mods)
2024-01-22 03:46:02 +0100 <cheater> this guy's logic is basically he'll create some gpt diarrhea, post it for everyone to contend with, and then he expects useful gnomes from the haskell community will push PR's to fix the idiocy contained within
2024-01-22 03:46:29 +0100 <cheater> direct quote:
2024-01-22 03:46:32 +0100 <cheater> "Yep, I'm using an LLM to write the initial article which is stored in a public repo. There, readers can submit PRs. Every page has an "Edit on GitHub" link for it. "
2024-01-22 03:49:09 +0100 <cheater> "I'm a former editor of an academic journal" *headdesk*
2024-01-22 03:50:50 +0100 <haskellbridge> 05<i​rregularsphere> Not sure if it was intentionally deceptive, but yes it's inaccurate on some occasions. I still don't feel good about reporting at all though.
2024-01-22 03:50:59 +0100 <haskellbridge> 05<i​rregularsphere> cheater: _where did he say that?_
2024-01-22 03:51:05 +0100 <haskellbridge> 05<i​rregularsphere> _what?_
2024-01-22 03:51:12 +0100 <cheater> he said that on the reddit link i posted.
2024-01-22 03:51:27 +0100 <cheater> his replies are collapsed because he's been mass-downvoted. you'll have to expand them.
2024-01-22 03:51:45 +0100 <cheater> don't be naive. he just wants clout for auto-generated spam.
2024-01-22 03:52:37 +0100 <cheater> if we allow this garbage to stay online we'll soon enough have people coming in here with bad preconceptions, it'll be w3schools all over again (i'm sure there are some people here who remember *that* battle)
2024-01-22 04:08:53 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 240 seconds)
2024-01-22 04:11:07 +0100 <cheater> after searching far and wide i have indeed confirmed that this guy was an editor of an academic journal
2024-01-22 04:11:14 +0100 <cheater> for two years
2024-01-22 04:11:28 +0100 <cheater> one year editing for spelling mistakes and one year being "managing editor"
2024-01-22 04:11:34 +0100 <cheater> 15 years ago
2024-01-22 04:11:43 +0100 <cheater> for an animal law review journal.
2024-01-22 04:11:44 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-01-22 04:12:00 +0100 <haskellbridge> 05<i​rregularsphere> ...yeah that's a me problem, I'm naive.
2024-01-22 04:12:18 +0100 <cheater> you'd think he'd make less of a fuss about having edited the spelling in a few boring articles nearly two decades ago
2024-01-22 04:12:48 +0100 <cheater> just fyi that guy's a coder by education, he has nothing to do with either law nor animals
2024-01-22 04:13:01 +0100 <cheater> so it's not like he was doing high-fly scientific editing there
2024-01-22 04:13:38 +0100 <haskellbridge> 05<i​rregularsphere> Will check the reddit first, it's blocked in my country but there's a workaround in my laptop (i'm on mobile rn)
2024-01-22 04:14:22 +0100 <cheater> try just using something like redective
2024-01-22 04:15:54 +0100 <haskellbridge> 05<i​rregularsphere> nevermind i know a libreddit instance
2024-01-22 04:16:11 +0100roboguy_(~roboguy_@2605:a601:ac73:5e00:1dfa:9d7b:ec47:6fda)
2024-01-22 04:22:37 +0100average(uid473595@user/average) (Quit: Connection closed for inactivity)
2024-01-22 04:22:56 +0100trev(~trev@user/trev)
2024-01-22 04:26:10 +0100 <haskellbridge> 05<i​rregularsphere> yeah sorry can't handle this burden
2024-01-22 04:26:57 +0100roboguy_(~roboguy_@2605:a601:ac73:5e00:1dfa:9d7b:ec47:6fda) (Quit: Leaving...)
2024-01-22 04:27:47 +0100foul_owl(~kerry@185.216.231.180) (Ping timeout: 252 seconds)
2024-01-22 04:30:13 +0100 <haskellbridge> 05<i​rregularsphere> i never have had experience in reporting something*
2024-01-22 04:42:12 +0100foul_owl(~kerry@157.97.134.168)
2024-01-22 04:42:22 +0100terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
2024-01-22 04:45:14 +0100terrorjack(~terrorjac@2a01:4f8:c17:87f8::)
2024-01-22 04:51:38 +0100emmanuelux_(~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
2024-01-22 04:52:19 +0100emmanuelux_(~emmanuelu@user/emmanuelux)
2024-01-22 04:52:59 +0100emmanuelux_(~emmanuelu@user/emmanuelux) (Remote host closed the connection)
2024-01-22 04:55:59 +0100td_(~td@i5387090B.versanet.de) (Ping timeout: 268 seconds)
2024-01-22 04:56:45 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2024-01-22 04:57:15 +0100td_(~td@i53870929.versanet.de)
2024-01-22 04:59:35 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2024-01-22 05:00:43 +0100img(~img@user/img)
2024-01-22 05:16:25 +0100tri(~tri@172.58.228.124)
2024-01-22 05:17:11 +0100 <tri> good evening, I am trying to add a new haskell file to a cabal project but cabal isn't letting me to
2024-01-22 05:18:13 +0100 <tri> https://paste.tomsmeding.com/BkDn0P4p
2024-01-22 05:18:31 +0100 <tri> these are my cabal project file and the Monad.hs file im trying to add to the project
2024-01-22 05:19:11 +0100aforemny(~aforemny@i59F516D1.versanet.de)
2024-01-22 05:20:15 +0100aforemny_(~aforemny@i59F516DB.versanet.de) (Ping timeout: 256 seconds)
2024-01-22 05:21:13 +0100 <monochrom> Is Monad.hs under app/ ?
2024-01-22 05:21:42 +0100 <tri> yes
2024-01-22 05:21:48 +0100 <tri> hmm actually...
2024-01-22 05:22:09 +0100 <tri> i changed it from exposed-modules to other-modules and it works 95% now
2024-01-22 05:22:26 +0100 <tri> i can import a function in Monad.hs into the Main.hs and use it there
2024-01-22 05:22:40 +0100 <monochrom> Oh! exposed-modules makes no sense in an executable. It's other-modules.
2024-01-22 05:22:41 +0100 <tri> and when i run cabal build, cabal sees the 2 modules
2024-01-22 05:22:44 +0100czy`(~user@114.226.59.181)
2024-01-22 05:22:47 +0100 <tri> however*
2024-01-22 05:23:04 +0100 <tri> the compiler, haskell language server, is still having red squiggly line
2024-01-22 05:23:13 +0100 <tri> let me restart vscode and see
2024-01-22 05:24:18 +0100 <tri> oh it's gone after the restart, i guess it's a glitch
2024-01-22 05:24:24 +0100 <tri> thank you for your help
2024-01-22 05:25:01 +0100 <tri> how do you add a hackage into your cabal project?
2024-01-22 05:25:21 +0100 <tri> i manually add a hackage by editing the cabal file
2024-01-22 05:25:31 +0100 <monochrom> package? build-depends
2024-01-22 05:25:43 +0100 <tri> i googled a bit and see that i could use cabal install
2024-01-22 05:25:48 +0100 <tri> yes, add a package from Hackage
2024-01-22 05:26:46 +0100 <tri> but i somehow remember that cabal install actually install the cabal project into my PATH or something like that, and it's night time, im tired to run it and having to go clean up if it's actually install into my PATH
2024-01-22 05:26:54 +0100 <tri> so i figure i should ask someone
2024-01-22 05:27:07 +0100 <monochrom> Right, add to build-depends instead.
2024-01-22 05:27:43 +0100 <tri> yes, as you said, i manually edit the cabal config file to add a package
2024-01-22 05:27:54 +0100 <tri> but could you tell me what's the cabal command for it?
2024-01-22 05:28:20 +0100 <monochrom> None. Edit the cabal file.
2024-01-22 05:28:28 +0100 <tri> holy cow
2024-01-22 05:28:31 +0100 <tri> oh ok thank you
2024-01-22 05:28:59 +0100 <tri> by the way, thank you for being active here, i see you day and night here
2024-01-22 05:29:17 +0100Square(~Square@user/square) (Ping timeout: 268 seconds)
2024-01-22 05:38:34 +0100roboguy_(~roboguy_@2605:a601:ac73:5e00:1dfa:9d7b:ec47:6fda)
2024-01-22 05:39:48 +0100jargon(~jargon@211.sub-174-205-225.myvzw.com) (Remote host closed the connection)
2024-01-22 05:40:34 +0100roboguy_(~roboguy_@2605:a601:ac73:5e00:1dfa:9d7b:ec47:6fda) (Client Quit)
2024-01-22 05:43:26 +0100 <tri> https://paste.tomsmeding.com/BbHBf2PZ
2024-01-22 05:43:55 +0100 <tri> is there anyway i can print the value of x inside this do notation?
2024-01-22 05:44:25 +0100 <tri> it's a do of List monad, so i figured i cannot put an IO inside
2024-01-22 05:44:52 +0100 <tri> but is there a way to get it working?, i want to see what value of x is
2024-01-22 05:50:02 +0100 <tri> actually this is what i have so far
2024-01-22 05:50:02 +0100 <tri> https://paste.tomsmeding.com/Jluwq2t4
2024-01-22 05:50:27 +0100 <tri> but it's still not printing, i guess because that IO () is lazily evalulated, so it's not running
2024-01-22 05:51:00 +0100 <tri> and because it's being wrapped inside a list monad do notation, there is no way to get it out to have it run
2024-01-22 05:55:03 +0100newsham(~newsham@2603-800c-2c01-6825-e4e3-3d73-a50d-4edf.res6.spectrum.com) (Quit: Client closed)
2024-01-22 06:03:52 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2024-01-22 06:04:56 +0100 <jackdk> tri: https://hackage.haskell.org/package/base-4.17.0.0/docs/Debug-Trace.html#v:traceShowM might be what you want but might also be unexpected
2024-01-22 06:07:53 +0100 <tri> jackdk: that works for me. Thank you
2024-01-22 06:08:11 +0100michalz(~michalz@185.246.207.221)
2024-01-22 06:12:04 +0100 <jackdk> tri: note that this subverts the whole "purity" thing that Haskell is going for, and is strictly a debugging tool
2024-01-22 06:12:25 +0100 <tri> i understand. thank you
2024-01-22 06:22:58 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2024-01-22 06:26:37 +0100michalz(~michalz@185.246.207.221) (Quit: ZNC 1.8.2 - https://znc.in)
2024-01-22 06:29:29 +0100michalz(~michalz@185.246.207.197)
2024-01-22 06:32:53 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 240 seconds)
2024-01-22 06:41:38 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-01-22 06:42:22 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 06:46:47 +0100tri(~tri@172.58.228.124) (Remote host closed the connection)
2024-01-22 06:51:27 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 06:57:48 +0100igemnace(~ian@user/igemnace)
2024-01-22 06:58:17 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 256 seconds)
2024-01-22 07:00:04 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 07:04:32 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 252 seconds)
2024-01-22 07:05:55 +0100qqq(~qqq@92.43.167.61)
2024-01-22 07:06:09 +0100causal(~eric@50.35.85.7) (Quit: WeeChat 4.1.1)
2024-01-22 07:08:22 +0100shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 264 seconds)
2024-01-22 07:11:33 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-01-22 07:12:30 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 07:17:06 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2024-01-22 07:20:41 +0100acidjnk(~acidjnk@p200300d6e737e732388182bf15709a86.dip0.t-ipconnect.de)
2024-01-22 07:25:07 +0100sroso(~sroso@user/SrOso)
2024-01-22 07:28:29 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2024-01-22 07:29:09 +0100euleritian(~euleritia@dynamic-176-006-179-031.176.6.pool.telefonica.de)
2024-01-22 07:35:36 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2024-01-22 07:40:21 +0100CiaoSen(~Jura@2a05:5800:2c2:a100:ca4b:d6ff:fec1:99da)
2024-01-22 07:51:05 +0100igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2024-01-22 08:06:23 +0100 <haskellbridge> 05<i​rregularsphere> tri: can't you just do this: seq expr expr
2024-01-22 08:08:51 +0100igemnace(~ian@user/igemnace)
2024-01-22 08:12:37 +0100 <haskellbridge> 05<i​rregularsphere> otherwise jackdk's advice is more idiomatic i guess
2024-01-22 08:13:11 +0100 <haskellbridge> 05<i​rregularsphere> jackdk: well, if the only side effect is printing a string it should be good enough
2024-01-22 08:13:41 +0100 <jackdk> I mean sure but I've had to help people unlearn an over-reliance on Debug.Trace as an application logging tool.
2024-01-22 08:14:05 +0100 <haskellbridge> 05<i​rregularsphere> wait, what!?
2024-01-22 08:14:20 +0100 <haskellbridge> 05<i​rregularsphere> ha fair lol :P
2024-01-22 08:14:33 +0100sroso(~sroso@user/SrOso) (Ping timeout: 268 seconds)
2024-01-22 08:16:22 +0100sroso(~sroso@user/SrOso)
2024-01-22 08:17:19 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2024-01-22 08:18:32 +0100 <EvanR> seq expr expr = expr
2024-01-22 08:21:17 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 08:22:57 +0100califax(~califax@user/califx)
2024-01-22 08:31:14 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 08:32:48 +0100califax(~califax@user/califx)
2024-01-22 08:35:29 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 08:37:55 +0100califax(~califax@user/califx)
2024-01-22 08:40:55 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 08:41:29 +0100califax(~califax@user/califx)
2024-01-22 08:42:10 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2024-01-22 08:45:06 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 08:46:42 +0100califax(~califax@user/califx)
2024-01-22 08:47:07 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-01-22 08:48:59 +0100 <mauke> yeah, this is not a matter of laziness
2024-01-22 08:49:08 +0100 <mauke> > let x = putStrLn "hi" in length [x, x, x]
2024-01-22 08:49:10 +0100 <lambdabot> 3
2024-01-22 08:49:15 +0100 <mauke> > let x = putStrLn "hi" in x `seq` length [x, x, x]
2024-01-22 08:49:16 +0100 <lambdabot> 3
2024-01-22 08:52:19 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2024-01-22 08:52:42 +0100 <haskellbridge> 05<i​rregularsphere> right
2024-01-22 08:52:51 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-01-22 08:53:10 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-01-22 08:53:31 +0100 <haskellbridge> 05<i​rregularsphere> yeah i remembered there being a `unsafePerformIO` function but, well, it's unsafe
2024-01-22 08:56:01 +0100 <int-e> Maybe don't look at how Debug.Trace.trace is implemented then :)
2024-01-22 08:59:10 +0100 <dminuoso_> unsafePerformIO is unsafe in some really funny ways.
2024-01-22 09:00:47 +0100 <dminuoso_> For instance, in some situations it can lead do things like aliasing IORefs unexpectedly.
2024-01-22 09:01:20 +0100oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2024-01-22 09:01:36 +0100 <dminuoso_> And such things is what unsafe is really alludes to. Not that the mere presence of `unsafePerformIO` is unsafe, but if program correctness somehow depends on the effects, thats when you should be paying maximum attention and understand the internals.
2024-01-22 09:02:10 +0100cfricke(~cfricke@user/cfricke)
2024-01-22 09:02:35 +0100 <int-e> . o O ( The next lecture will be about reallyUnsafePtrEquality# )
2024-01-22 09:03:18 +0100fendor(~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
2024-01-22 09:06:41 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2024-01-22 09:07:07 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-01-22 09:08:28 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2024-01-22 09:08:56 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-01-22 09:15:50 +0100phma(phma@2001:5b0:211f:a328:df89:a9c1:b8f3:9c33) (Quit: Konversation terminated!)
2024-01-22 09:16:43 +0100phma(phma@2001:5b0:211f:a328:df89:a9c1:b8f3:9c33)
2024-01-22 09:19:40 +0100 <phma> There's a strange bug in Wring https://github.com/phma/wring-twistree : it hangs encrypting a 59049-byte file when compiled without optimization.
2024-01-22 09:20:13 +0100 <phma> If I run it in ghci, it works fine, just takes several seconds longer.
2024-01-22 09:20:28 +0100 <phma> If I compile it with -O2, it works fine.
2024-01-22 09:20:46 +0100 <phma> Any idea how to troubleshoot this bug?
2024-01-22 09:22:04 +0100CiaoSen(~Jura@2a05:5800:2c2:a100:ca4b:d6ff:fec1:99da) (Ping timeout: 268 seconds)
2024-01-22 09:23:18 +0100 <phma> I'm using stack with ghc 9.4.5.
2024-01-22 09:24:28 +0100euleritian(~euleritia@dynamic-176-006-179-031.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-01-22 09:24:45 +0100econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-01-22 09:24:45 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 09:24:53 +0100 <dminuoso_> phma: Debug symbols, attach lldb, and interrupt?
2024-01-22 09:26:19 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-01-22 09:27:38 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 09:27:43 +0100 <haskellbridge> 05<i​rregularsphere> int-e: no i saw unsafePerformIO before Debug.Trace.trace's impl
2024-01-22 09:27:54 +0100 <phma> can I attach gdb? I don't know lldb well
2024-01-22 09:27:58 +0100 <dminuoso_> phma: Sure.
2024-01-22 09:28:17 +0100 <dminuoso_> See https://ghc.gitlab.haskell.org/ghc/doc/users_guide/debug-info.html
2024-01-22 09:28:49 +0100mima(~mmh@aftr-62-216-211-136.dynamic.mnet-online.de)
2024-01-22 09:28:56 +0100 <dminuoso_> phma: Keep note of sections 9.2 and 9.3 of that website.
2024-01-22 09:29:19 +0100 <phma> do I put -g in ghc-options in package.yaml?
2024-01-22 09:30:30 +0100 <dminuoso_> I dont use stack/hpack, so I cant say.
2024-01-22 09:31:37 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2024-01-22 09:34:26 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 09:34:46 +0100califax(~califax@user/califx)
2024-01-22 09:35:08 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2024-01-22 09:37:48 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 09:38:05 +0100califax(~califax@user/califx)
2024-01-22 09:38:32 +0100Batzy(~quassel@user/batzy) (Ping timeout: 252 seconds)
2024-01-22 09:41:32 +0100 <phma> diminuoso_: It got up to 59049, I attached gdb, and it said 0x0000000000d03c44 in ?? ().
2024-01-22 09:41:56 +0100 <phma> I said where, the backtrace is uninformative.
2024-01-22 09:42:21 +0100 <phma> #0 0x0000000000d03c44 in ?? ()
2024-01-22 09:42:23 +0100 <phma> #1 0x0000000000000000 in ?? ()
2024-01-22 09:44:06 +0100kuribas(~user@2a02:1808:86:1b83:b509:a89:6607:72d4)
2024-01-22 09:49:10 +0100yoneda(~mike@193.206.102.122)
2024-01-22 09:54:17 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-01-22 09:54:59 +0100 <phma> When I run file, it does not say "with debug info". ghc-options in WringTwistree.cabal says -g2.
2024-01-22 09:55:04 +0100kuribas(~user@2a02:1808:86:1b83:b509:a89:6607:72d4) (Ping timeout: 268 seconds)
2024-01-22 10:03:14 +0100m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 260 seconds)
2024-01-22 10:04:25 +0100kuribas(~user@2a02:1808:86:1b83:7770:d0e2:fe93:8b14)
2024-01-22 10:05:06 +0100m5zs7k(aquares@web10.mydevil.net)
2024-01-22 10:07:11 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-01-22 10:09:17 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
2024-01-22 10:12:01 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-01-22 10:21:43 +0100mmhat(~mmh@p200300f1c724f915ee086bfffe095315.dip0.t-ipconnect.de)
2024-01-22 10:23:45 +0100 <phma> diminuoso_: I got it to not strip the binary (and everything else, which took quite a while), then ran the binary from the command line (not the shell script), and got this:
2024-01-22 10:24:07 +0100 <phma> 0x0000000000cfbf21 in containerszm0zi6zi7_DataziSequenceziInternal_zdwtake_info ()
2024-01-22 10:25:26 +0100 <phma> No idea what that means. where still says just two lines, #1 being 0 (??).
2024-01-22 10:29:15 +0100 <phma> I did "n" and found myself in stg_BLACKHOLE_info.
2024-01-22 10:31:21 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2024-01-22 10:31:35 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds)
2024-01-22 10:31:54 +0100ft(~ft@p508dbda4.dip0.t-ipconnect.de) (Quit: leaving)
2024-01-22 10:32:26 +0100yeahitsme(~bob@user/yeahitsme)
2024-01-22 10:33:25 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-01-22 10:40:13 +0100gehmehgeh(~user@user/gehmehgeh)
2024-01-22 10:40:59 +0100tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
2024-01-22 10:43:05 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-01-22 10:53:27 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a989:ba9c:c8d7:9054) (Remote host closed the connection)
2024-01-22 11:00:06 +0100kuribas`(~user@ip-188-118-57-242.reverse.destiny.be)
2024-01-22 11:01:10 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
2024-01-22 11:01:25 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 276 seconds)
2024-01-22 11:01:57 +0100kuribas(~user@2a02:1808:86:1b83:7770:d0e2:fe93:8b14) (Ping timeout: 256 seconds)
2024-01-22 11:02:55 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-01-22 11:32:17 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c)
2024-01-22 11:52:27 +0100alexherbo2(~alexherbo@2a02-8440-3341-1bdb-4d7f-e84a-cae7-751c.rev.sfr.net)
2024-01-22 12:08:22 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 246 seconds)
2024-01-22 12:24:27 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Read error: Connection reset by peer)
2024-01-22 12:24:38 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
2024-01-22 12:26:58 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Read error: Connection reset by peer)
2024-01-22 12:28:07 +0100fansly(~fansly@182.0.167.78)
2024-01-22 12:31:03 +0100fansly(~fansly@182.0.167.78) (Read error: Connection reset by peer)
2024-01-22 12:33:16 +0100fansly(~fansly@103.3.221.236)
2024-01-22 12:34:50 +0100jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2024-01-22 12:34:59 +0100sroso(~sroso@user/SrOso) (Quit: Leaving :))
2024-01-22 12:37:54 +0100jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2024-01-22 12:47:25 +0100FeuermagierGuest1022
2024-01-22 12:47:25 +0100Feuermagier_(~Feuermagi@user/feuermagier)
2024-01-22 12:47:25 +0100Guest1022(~Feuermagi@user/feuermagier) (Killed (lithium.libera.chat (Nickname regained by services)))
2024-01-22 12:47:25 +0100Feuermagier_Feuermagier
2024-01-22 12:56:05 +0100fansly(~fansly@103.3.221.236) (Ping timeout: 240 seconds)
2024-01-22 12:56:27 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
2024-01-22 12:57:28 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-01-22 13:00:21 +0100picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Ping timeout: 245 seconds)
2024-01-22 13:02:09 +0100Axman6(~Axman6@user/axman6) (Remote host closed the connection)
2024-01-22 13:02:19 +0100ph88(~ph88@ip5b403f30.dynamic.kabel-deutschland.de)
2024-01-22 13:03:22 +0100ph88(~ph88@ip5b403f30.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2024-01-22 13:07:46 +0100qrpnxz(~qrpnxz@fsf/member/qrpnxz) (Quit: Leaving.)
2024-01-22 13:18:34 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-01-22 13:18:59 +0100euleritian(~euleritia@77.22.252.56)
2024-01-22 13:19:08 +0100Axman6(~Axman6@user/axman6)
2024-01-22 13:25:43 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2024-01-22 13:28:02 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-01-22 13:34:11 +0100ph88(~ph88@ip5b403f30.dynamic.kabel-deutschland.de)
2024-01-22 13:34:21 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-01-22 13:34:58 +0100 <ph88> How can i make function allPredicate :: [a -> Bool] -> (a -> Bool) ? to be used with all :: (a -> Bool) -> [a] -> Bool later on
2024-01-22 13:35:56 +0100 <nullie> ph88: id?
2024-01-22 13:35:57 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
2024-01-22 13:36:10 +0100 <nullie> oh, nevermind
2024-01-22 13:37:23 +0100 <nullie> ph88: https://hackage.haskell.org/package/swish-0.10.7.0/docs/src/Swish.RDF.Query.html#allp
2024-01-22 13:37:26 +0100 <kuribas`> ph88: what does it do?
2024-01-22 13:38:36 +0100mechap(~mechap@user/mechap)
2024-01-22 13:38:38 +0100 <kuribas`> :t getAll . foldmap (fmap All)
2024-01-22 13:38:39 +0100 <lambdabot> error:
2024-01-22 13:38:39 +0100 <lambdabot> • Variable not in scope: foldmap :: (f0 Bool -> f0 All) -> a -> All
2024-01-22 13:38:39 +0100 <lambdabot> • Perhaps you meant one of these:
2024-01-22 13:38:47 +0100 <kuribas`> :t getAll . foldMap (fmap All)
2024-01-22 13:38:48 +0100 <lambdabot> error:
2024-01-22 13:38:48 +0100 <lambdabot> • Couldn't match type ‘f All’ with ‘All’
2024-01-22 13:38:48 +0100 <lambdabot> Expected type: t (f Bool) -> All
2024-01-22 13:39:08 +0100 <kuribas`> :t fmap getAll . foldMap (fmap All)
2024-01-22 13:39:09 +0100 <lambdabot> (Functor f, Foldable t, Monoid (f All)) => t (f Bool) -> f Bool
2024-01-22 13:40:14 +0100 <ph88> interesting monoid ^^
2024-01-22 13:40:38 +0100 <kuribas`> :t even <> odd
2024-01-22 13:40:39 +0100 <lambdabot> error:
2024-01-22 13:40:39 +0100 <lambdabot> • Could not deduce (Semigroup Bool) arising from a use of ‘<>’
2024-01-22 13:40:40 +0100 <lambdabot> from the context: Integral a
2024-01-22 13:40:50 +0100 <ph88> i'm looking for a solution without a monoid if possible, let me look in the implementation to see if i can extract how it works from there
2024-01-22 13:41:35 +0100 <ph88> hhmm looks too complicated for me
2024-01-22 13:41:57 +0100 <haskellbridge> 05<i​rregularsphere> you can do something with foldl' and &&
2024-01-22 13:42:31 +0100 <kuribas`> :t fmap All even <> fmap All odd
2024-01-22 13:42:33 +0100 <lambdabot> Integral a => a -> All
2024-01-22 13:42:56 +0100 <kuribas`> ph88: you can write a trivial "boring" implementation.
2024-01-22 13:43:29 +0100 <ph88> with fold' and && as i​rregularsphere suggested ?
2024-01-22 13:43:39 +0100 <kuribas`> for example
2024-01-22 13:43:44 +0100 <nullie> and and map maybe
2024-01-22 13:43:51 +0100 <haskellbridge> 05<i​rregularsphere> you can do this boringly: allPredicate fs a = foldl' (&&) $ map (a &) fs
2024-01-22 13:43:55 +0100 <haskellbridge> 05<i​rregularsphere> let me test for one moment
2024-01-22 13:44:14 +0100 <haskellbridge> 05<i​rregularsphere> whoops first error
2024-01-22 13:45:05 +0100 <ph88> foldl' && id xs ?
2024-01-22 13:45:06 +0100 <haskellbridge> 05<i​rregularsphere> allPredicate fs a = foldl' (&&) True $ map (a &) fs
2024-01-22 13:45:43 +0100 <haskellbridge> 05<i​rregularsphere> you can't && functions
2024-01-22 13:45:49 +0100 <ph88> oh ye that's true
2024-01-22 13:45:50 +0100 <haskellbridge> 05<i​rregularsphere> (&&) :: Bool -> Bool -> Bool
2024-01-22 13:46:50 +0100 <nullie> :t \ps -> \x -> and [p x | p < ps]
2024-01-22 13:46:51 +0100 <lambdabot> error:
2024-01-22 13:46:51 +0100 <lambdabot> • Couldn't match expected type ‘t -> Bool’ with actual type ‘Expr’
2024-01-22 13:46:51 +0100 <lambdabot> • The function ‘p’ is applied to one argument,
2024-01-22 13:47:07 +0100 <nullie> :t \ps -> \x -> and [p x | p <- ps]
2024-01-22 13:47:07 +0100 <haskellbridge> 05<i​rregularsphere> (though for my solution it's pretty clear that allPredicate [] a = True)
2024-01-22 13:47:07 +0100 <ph88> foldl' (\b a -> (\x -> b x && a x)) id xs
2024-01-22 13:47:08 +0100 <lambdabot> [t -> Bool] -> t -> Bool
2024-01-22 13:47:31 +0100Batzy(~quassel@user/batzy)
2024-01-22 13:48:05 +0100 <haskellbridge> 05<i​rregularsphere> ah wait
2024-01-22 13:48:20 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2024-01-22 13:48:22 +0100 <haskellbridge> 05<i​rregularsphere> right, allPredicate fs a = and $ map (a &) fs
2024-01-22 13:49:24 +0100 <ph88> never seen & before, have to look it up what it does
2024-01-22 13:49:41 +0100 <haskellbridge> 05<i​rregularsphere> yeah it's the inverse of $ in terms of application
2024-01-22 13:49:43 +0100 <probie> It's just `flip ($)`
2024-01-22 13:49:57 +0100 <haskellbridge> 05<i​rregularsphere> yeah
2024-01-22 13:50:08 +0100 <haskellbridge> 05<i​rregularsphere> so ($ a) works fine as well as (a &)
2024-01-22 13:50:18 +0100 <haskellbridge> 15<J​ade> which is just `flip id` ;)
2024-01-22 13:51:01 +0100 <nullie> :t ($)
2024-01-22 13:51:03 +0100 <lambdabot> (a -> b) -> a -> b
2024-01-22 13:51:22 +0100 <haskellbridge> 05<i​rregularsphere> yeah $ is basically id with infix 0
2024-01-22 13:51:30 +0100 <haskellbridge> 15<J​ade> yep
2024-01-22 13:51:42 +0100fansly(~fansly@103.3.221.236)
2024-01-22 13:51:46 +0100 <haskellbridge> 15<J​ade> I just added those to the docs of $
2024-01-22 13:51:55 +0100 <haskellbridge> 05<i​rregularsphere> oh, nice!
2024-01-22 13:52:26 +0100 <ph88> thanks guys :)
2024-01-22 13:52:39 +0100 <haskellbridge> 05<i​rregularsphere> ~~jade: ...shouldn't it be obvious given the type of $~~
2024-01-22 13:52:56 +0100 <haskellbridge> 05<i​rregularsphere> ph88: yw, good luck!
2024-01-22 13:54:59 +0100 <haskellbridge> 15<J​ade> I gave a small explanation that `a -> a` is the same as `(a -> b) -> (a -> b)` by substitution and then trivially `(a -> b) -> a -> b` because of associativity :)
2024-01-22 13:55:32 +0100 <haskellbridge> 15<J​ade> s/the same as//
2024-01-22 13:56:21 +0100AlexZenon(~alzenon@94.233.241.143) (Ping timeout: 256 seconds)
2024-01-22 13:57:42 +0100 <dminuoso_> Jade: It is not the same.
2024-01-22 14:01:39 +0100 <haskellbridge> 05<i​rregularsphere> Jade: I would prefer if you just explained that `$` is just `id` restricted to `(a -> b) -> (a -> b)`.
2024-01-22 14:02:10 +0100 <haskellbridge> 05<i​rregularsphere> (or `id` but only for `a -> b`)
2024-01-22 14:04:04 +0100 <dminuoso_> Jade: They are unifiable. If you want to call them the same, you'd have to define what equality on types is exactly.
2024-01-22 14:04:57 +0100gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2024-01-22 14:04:57 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2024-01-22 14:04:58 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 14:05:31 +0100califax(~califax@user/califx)
2024-01-22 14:05:54 +0100gehmehgeh(~user@user/gehmehgeh)
2024-01-22 14:06:17 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-01-22 14:06:40 +0100 <haskellbridge> 05<i​rregularsphere> "`a -> a` is the same as `(b -> c) -> (b -> c)`" can be abused to conclude "for any `a -> a` it must be a `(b -> c) -> (b -> c)`", which in this case, has trivial counterexamples, such as: `() -> ()` is not a form of `(b -> c) -> (b -> c)`.
2024-01-22 14:07:41 +0100fansly(~fansly@103.3.221.236) (Ping timeout: 256 seconds)
2024-01-22 14:07:43 +0100califax(~califax@user/califx) (Read error: Connection reset by peer)
2024-01-22 14:08:21 +0100califax(~califax@user/califx)
2024-01-22 14:08:29 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
2024-01-22 14:11:07 +0100AlexZenon(~alzenon@94.233.241.143)
2024-01-22 14:15:52 +0100iakov(~user@2a02:8106:244:b000:57f6:37d4:b4f4:dc14)
2024-01-22 14:19:58 +0100 <iakov> Hello ! I have a https://github.com/obsidiansystems/obelisk project running, and i whould like to use rhyolite as a dependency. I have a 'hetzner' nixos instance running, which I created with nixos-infect. Building and running on my local machine works fine, but when deploying using obelisk with `ob deploy push`, the process on the remote nixos machine complains that it cannot find the rhyolite package.
2024-01-22 14:20:21 +0100 <iakov> error: opening file '/nix/store/jlyfl0n6a36r6sw2rnk2aic8zz6i08z1-rhyolite/default.nix': No such file or directory
2024-01-22 14:20:28 +0100 <dminuoso_> irregularsphere: What does "is the same as" mean, exactly?
2024-01-22 14:21:26 +0100 <dminuoso_> If we consider Leibnitz equality, they are absolutely not the same.
2024-01-22 14:21:40 +0100 <dminuoso_> There's terms that will type check with a type of `a -> a` but not with `(b -> c) -> (b -> c)`
2024-01-22 14:22:00 +0100 <iakov> (sorry for not asking a fully detailed question, i'm not used to IRC - and pressed 'Enter' prematurely, before finishing the question and elaborating on the details.)
2024-01-22 14:22:04 +0100 <dminuoso_> As the simplest example
2024-01-22 14:23:06 +0100 <dminuoso_> % :t (id :: (b -> c) -> (b -> c)) () -- irregularsphere
2024-01-22 14:23:06 +0100 <yahb2> <interactive>:1:30: error: ; • Couldn't match expected type ‘b -> c’ with actual type ‘()’ ; • In the first argument of ‘id :: (b -> c) -> (b -> c)’, namely ; ‘()’ ; In the ex...
2024-01-22 14:23:18 +0100 <iakov> Currently, as described in the 'deployment' section of the obelisk readme, it's required to create a module.nix which is supposed to contain the configuration for the machine. Do I have to pass the rhyolite dependency to the module.nix too ?
2024-01-22 14:23:36 +0100 <dminuoso_> % :t (id :: a -> a) () -- c.f.
2024-01-22 14:23:36 +0100 <yahb2> (id :: a -> a) () -- c.f. :: ()
2024-01-22 14:23:45 +0100 <haskellbridge> 05<i​rregularsphere> dminuoso: yeah I thought "`t0` is the same as `t1`" as in "for any `x: t0`, then x is in `t1` and vice versa"
2024-01-22 14:23:52 +0100 <haskellbridge> 05<i​rregularsphere> similar to set equality
2024-01-22 14:23:59 +0100 <haskellbridge> 05<i​rregularsphere> dunno, never that experienced with philosophy
2024-01-22 14:29:05 +0100siw5ohs0(~aiw5ohs0@user/aiw5ohs0)
2024-01-22 14:29:14 +0100siw5ohs0(~aiw5ohs0@user/aiw5ohs0) (Leaving)
2024-01-22 14:29:18 +0100 <dminuoso_> irregularsphere: The comparison works only for monotypes.
2024-01-22 14:29:27 +0100 <dminuoso_> Quantified types are.. well quantified.
2024-01-22 14:29:48 +0100 <dminuoso_> That is, the `a` in `id :: a -> a` is not a single type
2024-01-22 14:29:52 +0100aljazmc(~aljazmc@user/aljazmc)
2024-01-22 14:30:05 +0100 <dminuoso_> It might be more obvious if you include the implicit quantification: id :: forall a. a -> a`
2024-01-22 14:30:53 +0100 <haskellbridge> 05<i​rregularsphere> ...it might take a year or two to get myself comfortable with these terms
2024-01-22 14:31:26 +0100shriekingnoise(~shrieking@186.137.175.87)
2024-01-22 14:31:44 +0100 <dminuoso_> irregularsphere: Its also called a type schema. You can really interpret that line as reading `forall choices choices of a, id has type a -> a`
2024-01-22 14:32:24 +0100 <dminuoso_> And you can make any such choice, `for a ~ Int, id has type Int -> Int`
2024-01-22 14:32:30 +0100 <dminuoso_> So you can think of this as id having many types.
2024-01-22 14:32:45 +0100 <haskellbridge> 05<i​rregularsphere> yeah actually to make myself clearer what i actually mean is that "`s0` is the same thing `s1`", to me, means "for any type `x` with the form `s0` then `x` also has the form `s1` and vice versa"
2024-01-22 14:33:09 +0100 <dminuoso_> I think you might enjoy a dive into type theory.
2024-01-22 14:33:17 +0100 <haskellbridge> 05<i​rregularsphere> wow the terminology in this functional programming universe is wild
2024-01-22 14:33:38 +0100 <haskellbridge> 05<i​rregularsphere> way different from where I came from (imperative/object-oriented)
2024-01-22 14:33:41 +0100 <dminuoso_> irregularsphere: This is not just theoretic nonsense, by the way.
2024-01-22 14:33:53 +0100 <dminuoso_> In GHC, there's a direct correspondence to how this is compiled.
2024-01-22 14:34:10 +0100 <haskellbridge> 05<i​rregularsphere> I know, I usually look up terminology whenever I enounter a new one.
2024-01-22 14:35:33 +0100 <kuribas`> polymorphic id is a function from a type to a monomorphic function.
2024-01-22 14:35:56 +0100 <kuribas`> But you don't apply it directly, the type inference engine derives the type then applies it.
2024-01-22 14:36:28 +0100 <kuribas`> (forall a.a -> a) applied to Int becomes Int -> Int
2024-01-22 14:36:50 +0100 <haskellbridge> 05<i​rregularsphere> does monomorphic basically mean "unique type"
2024-01-22 14:37:15 +0100 <dminuoso_> In System F lingo, you would write: /\a. \x^a -> x : ∀a. a -> a
2024-01-22 14:37:25 +0100 <dminuoso_> So there's even a binder there.
2024-01-22 14:37:36 +0100 <dminuoso_> Which demonstrates its a kind of abstraction over a type.
2024-01-22 14:38:37 +0100picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur)
2024-01-22 14:39:08 +0100 <haskellbridge> 05<i​rregularsphere> I feel dumbfounded right now
2024-01-22 14:39:31 +0100 <dminuoso_> And this translates directly to GHC Haskell too.
2024-01-22 14:39:43 +0100 <dminuoso_> So if there's a binder over a type, we should be able to apply `id` to a type. Lets do that:
2024-01-22 14:39:47 +0100 <dminuoso_> % :set -XTypeApplications
2024-01-22 14:39:47 +0100 <yahb2> <no output>
2024-01-22 14:39:49 +0100 <dminuoso_> % :t id
2024-01-22 14:39:49 +0100 <yahb2> id :: a -> a
2024-01-22 14:39:51 +0100 <dminuoso_> % :t id @Int
2024-01-22 14:39:51 +0100 <yahb2> id @Int :: Int -> Int
2024-01-22 14:39:54 +0100 <dminuoso_> % :t id @Int 10
2024-01-22 14:39:54 +0100 <yahb2> id @Int 10 :: Int
2024-01-22 14:40:19 +0100 <dminuoso_> See how we apply id to two arguments here? One is a type argument, the other a value level argument.
2024-01-22 14:40:34 +0100 <dminuoso_> And that's what instantiates `a` of `a -> a` at a particular type.
2024-01-22 14:40:43 +0100 <dminuoso_> GHC inserts these applications automatically and transparently for you everywhere.
2024-01-22 14:41:24 +0100 <haskellbridge> 05<i​rregularsphere> to be fair I'm never getting the gist (of entire meaning of words) with examples, it's probably better for me if I looked them up. Thanks though!
2024-01-22 14:42:21 +0100 <haskellbridge> 05<i​rregularsphere> Is Stanford Encyclopedia of Philosophy a good resource?
2024-01-22 14:42:31 +0100 <dminuoso_> What for, exactly?
2024-01-22 14:43:04 +0100 <dminuoso_> Anyway. All I wanted to get across, is that in most senses of the word "equality", `a` is not equal to `b -> c`
2024-01-22 14:43:23 +0100 <haskellbridge> 05<i​rregularsphere> Various stuff. It appeared when I searched "lambda calculus" or "type theory".
2024-01-22 14:43:36 +0100 <dminuoso_> However, with a bit more careful definitions one could say that they are unifiable, but not in general (because we need to be careful about quantifiers here)
2024-01-22 14:44:29 +0100 <dminuoso_> If you want to learn about type theory, Benjamin C. Pierce's Types and Programming Languages is probably one of the most widely read books.
2024-01-22 14:44:37 +0100 <dminuoso_> It's a good entry into practical type theory
2024-01-22 14:44:50 +0100 <exarkun> One thing I realized at some point is that in the Haskell space, words have meaning and learning the actually meaning is extremely valuable. This, in contrast to a lot of imperative spaces where words are vague and used to mean either a lot of different things or nothing at all and you can hand-wave your way through most of it.
2024-01-22 14:45:26 +0100 <exarkun> So the imperative programming technique of just charging forward without a firm understanding doesn't lead to much success in Haskell.
2024-01-22 14:45:35 +0100 <exarkun> (That's my personal experience, anyway)
2024-01-22 14:45:43 +0100Lycurgus(~georg@user/Lycurgus) (Quit: leaving)
2024-01-22 14:45:59 +0100azimut_(~azimut@gateway/tor-sasl/azimut)
2024-01-22 14:46:07 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2024-01-22 14:46:31 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2024-01-22 14:47:55 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-01-22 14:48:02 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2024-01-22 14:48:43 +0100azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2024-01-22 14:49:28 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2024-01-22 14:51:50 +0100alexherbo2(~alexherbo@2a02-8440-3341-1bdb-4d7f-e84a-cae7-751c.rev.sfr.net) (Remote host closed the connection)
2024-01-22 14:52:09 +0100alexherbo2(~alexherbo@2a02-8440-3341-1bdb-4d7f-e84a-cae7-751c.rev.sfr.net)
2024-01-22 14:55:43 +0100xiliuya(~xiliuya@user/xiliuya)
2024-01-22 14:57:10 +0100xiliuya(~xiliuya@user/xiliuya) (Client Quit)
2024-01-22 14:57:31 +0100xiliuya(~xiliuya@user/xiliuya)
2024-01-22 14:58:38 +0100iakov(~user@2a02:8106:244:b000:57f6:37d4:b4f4:dc14) (Quit: rcirc on GNU Emacs 28.3)
2024-01-22 15:07:06 +0100 <haskellbridge> 15<J​ade> this is why I removed the "is the same as" ^^
2024-01-22 15:07:07 +0100 <haskellbridge> 15<J​ade> I didn't find the right phrasing in that moment, but yes, I wanted to say that in the specific case of `$`, the type variable `a` takes the form of `b -> c`
2024-01-22 15:07:14 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-01-22 15:12:31 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2024-01-22 15:13:38 +0100 <dminuoso_> Im pondering how to express this concisely.
2024-01-22 15:15:47 +0100 <haskellbridge> 05<i​rregularsphere> any `(b -> c) -> (b -> c)` is an `a -> a`
2024-01-22 15:16:44 +0100 <dminuoso_> I am wondering whether it is that rabbit hole leading down to homotopy type theory that somehow describes this relationship `id = ($)`
2024-01-22 15:16:56 +0100 <dminuoso_> Because that's what you're reallying trying to say, here.
2024-01-22 15:17:37 +0100 <dminuoso_> From a Damas Milner type inference perspective, getting from `a` to `b -> c` here is two separate steps. Substitution and generalization.
2024-01-22 15:17:41 +0100 <haskellbridge> 05<i​rregularsphere> I thought searching terminology would be _fun_, not lead me down to _4 different rabbitholes at once!_
2024-01-22 15:17:49 +0100 <dminuoso_> But Im not sure whether that gives any sort of relationships between the types themselves.
2024-01-22 15:17:58 +0100 <ncf> you don't need homotopy type theory to be explicit about type arguments
2024-01-22 15:18:03 +0100 <dminuoso_> Other than "they are unifiable"
2024-01-22 15:18:11 +0100 <ncf> ($) {x} {y} = id {x → y}
2024-01-22 15:19:58 +0100 <ncf> or, if you like, ($) = id ∘ (→)
2024-01-22 15:20:10 +0100 <dminuoso_> ncf: Mmm, maybe the real problem here is that this is only implicitly described by `id = ($)` and all attempts above are just a rather verbose way of describingthat.
2024-01-22 15:20:27 +0100 <dminuoso_> Or `($) = id` rather, since we are in Haskell.
2024-01-22 15:22:24 +0100tt1231(~tt123@2603-6010-8700-4a81-219f-50d3-618a-a6ee.res6.spectrum.com) (Quit: The Lounge - https://thelounge.chat)
2024-01-22 15:24:36 +0100tt1231(~tt123@2603-6010-8700-4a81-219f-50d3-618a-a6ee.res6.spectrum.com)
2024-01-22 15:27:08 +0100 <haskellbridge> 05<i​rregularsphere> apparently i discovered an interesting thing
2024-01-22 15:27:27 +0100 <haskellbridge> 05<i​rregularsphere> `main = print (map (-1) [1,2,3] :: [Integer])` is invalid (where - is taken as a negation sign)
2024-01-22 15:27:33 +0100 <haskellbridge> 05<i​rregularsphere> `main = print (map (+ (-1)) [1,2,3] :: [Integer])` is valid
2024-01-22 15:28:34 +0100dsrt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 276 seconds)
2024-01-22 15:31:38 +0100Square(~Square@user/square)
2024-01-22 15:31:45 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
2024-01-22 15:34:08 +0100thegeekinside(~thegeekin@189.180.85.240)
2024-01-22 15:37:12 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
2024-01-22 15:41:16 +0100 <tomsmeding> yeah, that's why `subtract` exists
2024-01-22 15:41:23 +0100 <tomsmeding> map (subtract 1)
2024-01-22 15:42:18 +0100 <haskellbridge> 05<i​rregularsphere> ah right
2024-01-22 15:42:54 +0100 <tomsmeding> it's a bit of an infelicity in the syntax :p
2024-01-22 15:47:01 +0100michalz_(~michalz@185.246.207.218)
2024-01-22 15:48:02 +0100michalz(~michalz@185.246.207.197) (Ping timeout: 256 seconds)
2024-01-22 15:48:37 +0100igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2024-01-22 15:49:02 +0100 <yushyin> maybe unpopular opinion, but I'm actually ok with -XLexicalNegation
2024-01-22 15:49:11 +0100igemnace(~ian@user/igemnace)
2024-01-22 15:52:32 +0100Square2(~Square4@user/square)
2024-01-22 15:54:31 +0100califax(~califax@user/califx) (Ping timeout: 240 seconds)
2024-01-22 15:54:50 +0100earthy(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Ping timeout: 256 seconds)
2024-01-22 15:55:41 +0100califax(~califax@user/califx)
2024-01-22 15:55:49 +0100Square(~Square@user/square) (Ping timeout: 268 seconds)
2024-01-22 15:56:31 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2024-01-22 15:58:22 +0100mmhat(~mmh@p200300f1c724f915ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2024-01-22 15:58:44 +0100mmhat(~mmh@p200300f1c724f91bee086bfffe095315.dip0.t-ipconnect.de)
2024-01-22 15:58:47 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-01-22 15:59:28 +0100alexherbo2(~alexherbo@2a02-8440-3341-1bdb-4d7f-e84a-cae7-751c.rev.sfr.net) (Remote host closed the connection)
2024-01-22 15:59:39 +0100sadie72(~sadie@199.96.187.158)
2024-01-22 16:02:57 +0100dsrt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net)
2024-01-22 16:03:16 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2024-01-22 16:03:34 +0100sadie72(~sadie@199.96.187.158) (Client Quit)
2024-01-22 16:03:52 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2024-01-22 16:04:23 +0100dsrt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
2024-01-22 16:07:46 +0100azimut_(~azimut@gateway/tor-sasl/azimut)
2024-01-22 16:08:31 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2024-01-22 16:08:49 +0100azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2024-01-22 16:09:19 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2024-01-22 16:10:27 +0100xiliuya(~xiliuya@user/xiliuya) (Quit: bye)
2024-01-22 16:10:39 +0100average(uid473595@user/average)
2024-01-22 16:14:37 +0100 <tomsmeding> % :set -XLexicalNegation
2024-01-22 16:14:37 +0100 <yahb2> <no output>
2024-01-22 16:14:43 +0100 <tomsmeding> % :t ((-1), (- 1))
2024-01-22 16:14:43 +0100 <yahb2> ((-1), (- 1)) :: (Num a1, Num a2) => (a1, a2 -> a2)
2024-01-22 16:15:06 +0100tomsmedingis okay with that too
2024-01-22 16:17:17 +0100euleritian(~euleritia@77.22.252.56) (Ping timeout: 252 seconds)
2024-01-22 16:17:43 +0100euleritian(~euleritia@dynamic-176-006-199-114.176.6.pool.telefonica.de)
2024-01-22 16:18:39 +0100noumenon(~noumenon@113.51-175-156.customer.lyse.net)
2024-01-22 16:19:41 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 16:20:06 +0100califax(~califax@user/califx)
2024-01-22 16:24:30 +0100iakov2(~iakov@2a02:8106:244:b000:57f6:37d4:b4f4:dc14)
2024-01-22 16:26:09 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 16:26:40 +0100califax(~califax@user/califx)
2024-01-22 16:31:37 +0100elkcl(~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Ping timeout: 276 seconds)
2024-01-22 16:34:27 +0100 <monochrom> MultiwayIf
2024-01-22 16:35:06 +0100 <tomsmeding> hm?
2024-01-22 16:35:21 +0100 <monochrom> That's another of my favourite unpopular extension!
2024-01-22 16:36:05 +0100 <tomsmeding> is it unpopular? I love it
2024-01-22 16:36:14 +0100xacktm(xacktm@user/xacktm) (Remote host closed the connection)
2024-01-22 16:36:22 +0100 <monochrom> Not enough to make it into GHC2021.
2024-01-22 16:36:32 +0100 <tomsmeding> I don't use it very often, but I have no qualms about using it when it's convenient
2024-01-22 16:38:13 +0100elkcl(~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru)
2024-01-22 16:40:45 +0100 <dminuoso_> OrPatterns to me is dead on arrival.
2024-01-22 16:41:03 +0100 <tomsmeding> wasn't that the thing where you couldn't bind variables in the alternatives?
2024-01-22 16:41:04 +0100 <dminuoso_> I dislike it so much because of what Im missing out.
2024-01-22 16:41:07 +0100 <dminuoso_> tomsmeding: Right!
2024-01-22 16:41:14 +0100 <tomsmeding> then it's pointless (ha!)
2024-01-22 16:41:15 +0100 <dminuoso_> The one thing that made the whole thing interesting in the first place.
2024-01-22 16:42:11 +0100 <tomsmeding> although it's easy to extend it to include binding, I guess
2024-01-22 16:42:37 +0100 <dminuoso_> tomsmeding: It was pulled out for some reasons.
2024-01-22 16:42:53 +0100 <dminuoso_> As far as I gathered it, it would have been massively complicated for.. reasons?
2024-01-22 16:43:19 +0100 <tomsmeding> there were probably reasons
2024-01-22 16:43:29 +0100 <dminuoso_> Oh there definitely were. It was part of the original proposal.
2024-01-22 16:43:38 +0100 <dminuoso_> They just werent discussed in detail on the issue tracker
2024-01-22 16:44:37 +0100 <dminuoso_> I think this is one of the examples where Haskell is at the end more of a research base that just doesnt compromise for utility.
2024-01-22 16:45:07 +0100 <tomsmeding> we got a surprising amount of utility for being a research base, then :)
2024-01-22 16:45:51 +0100 <dminuoso_> Oh sure, Im not saying these two things cant be compatible.
2024-01-22 16:46:28 +0100 <dminuoso_> But the interests arent quite aligned with average joe fixing bug reports on some haskell clump.
2024-01-22 16:47:15 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
2024-01-22 16:47:20 +0100 <tomsmeding> yeah
2024-01-22 16:51:03 +0100 <kuribas`> I really miss guards in idris.
2024-01-22 16:51:03 +0100ystael(~ystael@user/ystael)
2024-01-22 16:51:13 +0100 <kuribas`> But I suppose it is hard to implement with dependent types.
2024-01-22 16:51:22 +0100 <tomsmeding> why would it be?
2024-01-22 16:51:33 +0100 <dminuoso_> Its just syntax in the end.
2024-01-22 16:51:35 +0100 <tomsmeding> what's difficult about pattern matching on a boolean
2024-01-22 16:52:17 +0100 <tomsmeding> I suspect it's more that "if everything has intrinsic type information, boolean blindness is even worse so pattern matching on booleans is almost never useful"
2024-01-22 16:52:47 +0100 <tomsmeding> perhaps for you that assumption on "everything" is false ;)
2024-01-22 16:54:28 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
2024-01-22 17:01:56 +0100 <tomsmeding> I have just one problem with MultiwayIf and that's that I can never remember which of Multi{w,W}ayIf{,s} it is
2024-01-22 17:05:39 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-01-22 17:09:48 +0100 <c_wraith> eh. GHC suggests the right one if you get it wrong
2024-01-22 17:09:49 +0100 <tomsmeding> dminuoso_: I see this text in the proposal: "Correctly specifying the semantics is hard and caused the parent proposal to become dormant after no progress has been made."
2024-01-22 17:09:58 +0100 <tomsmeding> c_wraith: true
2024-01-22 17:10:11 +0100 <dminuoso_> tomsmeding: Yeah, it was rather nebulous.
2024-01-22 17:10:58 +0100 <tomsmeding> I would've said "just disallow OrPatterns with GADT-like constructors or use of ExistentialQuantification"
2024-01-22 17:11:05 +0100 <tomsmeding> can always fix that later
2024-01-22 17:11:16 +0100 <tomsmeding> I get that making that work nicely would've been hard
2024-01-22 17:12:09 +0100 <ph88> does anyone know a haskell equivelant of this function? https://pursuit.purescript.org/packages/purescript-foldable-traversable/6.0.0/docs/Data.Foldable#v…
2024-01-22 17:12:35 +0100 <tomsmeding> :t and
2024-01-22 17:12:36 +0100 <dminuoso_> tomsmeding: But yeah, its a difficult one opposed to Der{iving,ive}Strategies, Der{iving,ive}Via, EmptyDataDecl{s,arations}, ImplicitParam{s,eters}, MonadComprehensions but ParallelListComp, or Non{D,d}ecreasingIndention (things I learn...)
2024-01-22 17:12:36 +0100 <lambdabot> Foldable t => t Bool -> Bool
2024-01-22 17:12:57 +0100 <tomsmeding> dminuoso_: point taken :p
2024-01-22 17:14:18 +0100euleritian(~euleritia@dynamic-176-006-199-114.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-01-22 17:14:24 +0100 <tomsmeding> ph88: did you want anything more than what 'and' already does?
2024-01-22 17:14:31 +0100 <dminuoso_> At least GHC seems to accept alternate British spelling which is great, because Im consistently inconsistent with my z's and s's.
2024-01-22 17:14:38 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 17:14:45 +0100 <dminuoso_> Generali{s,z}edNewtypeDeriving are both valid. :)
2024-01-22 17:15:12 +0100 <tomsmeding> I'm consistently consistent with s but have grudgingly accepted that elements of syntax and built-in names are conventionally z
2024-01-22 17:15:31 +0100 <c_wraith> I suppose given that it's the *Glasgow* Haskell compiler, we're lucky it accepts z at all
2024-01-22 17:15:40 +0100 <tomsmeding> you will see me write `color: #000; # black colour` in css
2024-01-22 17:16:01 +0100 <tomsmeding> (not in this instance because the comment is superfluous, but you get the point)
2024-01-22 17:16:36 +0100 <dminuoso_> c_wraith: Even more surprising that the American spelling was there first, then.
2024-01-22 17:16:55 +0100 <dminuoso_> But maybe the American spelling was deemed to cause less bikeshedding on the proposal?
2024-01-22 17:16:57 +0100 <ph88> tomsmeding, yes to accept function f (a -> Bool) -> (a -> Bool)
2024-01-22 17:17:23 +0100 <tomsmeding> ph88: then you're essentially asking for the HeytingAlgebra type class
2024-01-22 17:17:33 +0100 <ph88> is it available in haskell ?
2024-01-22 17:17:35 +0100 <tomsmeding> because the folding logic is already there in foldMap
2024-01-22 17:17:48 +0100 <tomsmeding> if you write the type class, then you can use foldMap to use it
2024-01-22 17:18:01 +0100 <ph88> oh ok nothing out of the box, np
2024-01-22 17:18:14 +0100 <tomsmeding> yeah no I haven't seen such a type class before in haskell
2024-01-22 17:18:29 +0100 <tomsmeding> but no reason it couldn't be written
2024-01-22 17:18:43 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
2024-01-22 17:19:11 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2024-01-22 17:19:17 +0100euleritian(~euleritia@dynamic-176-006-199-114.176.6.pool.telefonica.de)
2024-01-22 17:21:44 +0100 <tomsmeding> :t (and .) . sequence -- ph88
2024-01-22 17:21:45 +0100 <lambdabot> Traversable t => t (a -> Bool) -> a -> Bool
2024-01-22 17:22:16 +0100 <tomsmeding> sequence the `t (a -> Bool)` to `a -> t Bool`, then `and` it
2024-01-22 17:22:40 +0100 <tomsmeding> if you don't need the generality of the type class, this gets you the functionality of that particular instance concisely
2024-01-22 17:25:19 +0100 <ph88> tomsmeding, interesting solution :)))
2024-01-22 17:27:06 +0100billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
2024-01-22 17:28:30 +0100target_i(~target_i@217.175.14.39)
2024-01-22 17:28:49 +0100euleritian(~euleritia@dynamic-176-006-199-114.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-01-22 17:29:07 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 17:30:22 +0100 <kuribas`> tomsmeding: it's not just a trivial compile to "if", since guards interact with pattern matching.
2024-01-22 17:30:25 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.1.2)
2024-01-22 17:31:05 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-01-22 17:31:06 +0100 <kuribas`> foo (Bar x) | fun(x) = ... ; foo y = ...
2024-01-22 17:31:34 +0100 <c_wraith> that doesn't add too much complexity
2024-01-22 17:31:38 +0100 <tomsmeding> kuribas`: that's true. I guess it becomes harder if you want the evidence that guards are false to influence coverage checking
2024-01-22 17:31:53 +0100 <tomsmeding> but I guess one could just not do that
2024-01-22 17:31:53 +0100 <kuribas`> tomsmeding: and idris is already buggy when it comes to coverage checking.
2024-01-22 17:31:55 +0100 <kuribas`> yeah
2024-01-22 17:31:56 +0100 <tomsmeding> haskell also doesn't really do that
2024-01-22 17:32:03 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 17:32:05 +0100 <c_wraith> Though IIRC Haskell2010 makes PatternGuards on by default?
2024-01-22 17:32:45 +0100 <tomsmeding> can't you just let coverage checking ignore boolean guards?
2024-01-22 17:32:50 +0100 <tomsmeding> I think that would be sound
2024-01-22 17:33:28 +0100 <tomsmeding> actually, let it ignore all guards, would still be sound
2024-01-22 17:34:10 +0100 <tomsmeding> doing something more intelligent with pattern guards would perhaps be harder, but there it would even be unclear to what extent you want that evidence to be taken into account
2024-01-22 17:34:14 +0100 <c_wraith> sound in what sense? totality checking?
2024-01-22 17:34:19 +0100 <tomsmeding> yes
2024-01-22 17:34:28 +0100 <c_wraith> You can't ignore guards for that
2024-01-22 17:38:18 +0100 <c_wraith> and I retract my earlier statement. In the context of totality checking, that example from kuribas` *does* add a ton of complexity
2024-01-22 17:38:49 +0100 <tomsmeding> only if you want to determine total functions as being total, right?
2024-01-22 17:39:03 +0100 <tomsmeding> not if you just want that if you declare a function to be total, it really is total
2024-01-22 17:39:10 +0100 <tomsmeding> the first I could call completeness, the second soundness
2024-01-22 17:41:19 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
2024-01-22 17:43:19 +0100 <tomsmeding> totality checking is best-effort in any case
2024-01-22 17:44:02 +0100 <tomsmeding> completeness is impossible to achieve, so being a bit more incomplete in the presence of boolean guards sounds okay to me
2024-01-22 17:44:22 +0100 <tomsmeding> though if you also have pattern guards it might be nice to be able to get some evidence from that, which is indeed harder
2024-01-22 17:44:45 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-01-22 17:47:25 +0100 <c_wraith> I would say completeness is getting the correct answer for everything (known impossible) and soundness is not accepting any incorrect program (at the cost of rejecting some correct ones). If you just ignore guards, you've lost soundness.
2024-01-22 17:47:52 +0100 <c_wraith> If you treat all guards as never matching, you retain soundness, but it's not very useful!
2024-01-22 17:48:59 +0100 <tomsmeding> oh right, yes, what I meant (but didn't say) is indeed to treat guards as never-matching
2024-01-22 17:49:07 +0100 <tomsmeding> well, for boolean guards it's almost impossible to do better
2024-01-22 17:49:14 +0100 <tomsmeding> pattern guards I'm not sure about
2024-01-22 17:49:18 +0100Square(~Square@user/square)
2024-01-22 17:49:46 +0100 <tomsmeding> the information you get from a boolean guard is a single equality (of the boolean expression with true/false depending on in which branch you area)
2024-01-22 17:49:48 +0100 <tomsmeding> *are
2024-01-22 17:50:25 +0100 <tomsmeding> I guess you could use that as another fact you can re-check in all subsequent situations to detect contradictions
2024-01-22 17:51:05 +0100 <tomsmeding> that wouldn't be too hard I feel (though disclaimer, I know nothing about how dependently-typed coverage checkers actually work), and doing anything better would suddenly involve serious analysis of your program
2024-01-22 17:51:07 +0100 <tomsmeding> beyond the types
2024-01-22 17:52:45 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2024-01-22 17:53:17 +0100Square2(~Square4@user/square) (Ping timeout: 268 seconds)
2024-01-22 17:53:34 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
2024-01-22 17:56:35 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2024-01-22 17:56:54 +0100econo_(uid147250@id-147250.tinside.irccloud.com)
2024-01-22 17:57:11 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2024-01-22 17:57:43 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
2024-01-22 17:58:07 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2024-01-22 17:58:08 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 17:59:27 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
2024-01-22 18:00:05 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
2024-01-22 18:00:28 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 18:04:24 +0100 <kuribas`> tomsmeding: so you assume the guard never matches, and look if it still is total? Wouldn't that make any function with guards automatically non-total?
2024-01-22 18:06:35 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 264 seconds)
2024-01-22 18:06:56 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 18:07:08 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2024-01-22 18:07:19 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 18:08:49 +0100califax(~califax@user/califx)
2024-01-22 18:08:51 +0100 <tomsmeding> kuribas`: do you have an example of a function where my cowardly policy of "assume guards never match" would not be usable?
2024-01-22 18:10:46 +0100iakov2(~iakov@2a02:8106:244:b000:57f6:37d4:b4f4:dc14) (Ping timeout: 250 seconds)
2024-01-22 18:11:12 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 18:11:34 +0100califax(~califax@user/califx)
2024-01-22 18:11:46 +0100 <kuribas`> tomsmeding: you just remove all clauses, no?
2024-01-22 18:12:02 +0100 <kuribas`> foo x | x = 1 | otherwise = 2
2024-01-22 18:12:14 +0100 <kuribas`> no clauses remain...
2024-01-22 18:12:22 +0100 <tomsmeding> right, I assume that all guards never match unless they simplify to 'true' :p
2024-01-22 18:12:39 +0100 <kuribas`> How do I know if they simplify to true?
2024-01-22 18:13:23 +0100 <kuribas`> That sounds wrong... foo x | x = partial_fun x | otherwise = 2
2024-01-22 18:13:25 +0100 <tomsmeding> do the WHNF evaluation process that the type checker will need to do anyhow when checking a dependently-typed program?
2024-01-22 18:13:42 +0100 <kuribas`> It's partial, but ignoring guard 1 makes it total...
2024-01-22 18:13:51 +0100 <tomsmeding> how would partial_fun have typechecked
2024-01-22 18:14:07 +0100 <tomsmeding> like, you still need to check the right-hand sides
2024-01-22 18:14:16 +0100 <tomsmeding> you only do this for coverage checking, not for reachability checking
2024-01-22 18:14:24 +0100 <kuribas`> tomsmeding: partial_fun : Bool -> Int
2024-01-22 18:14:38 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 18:14:41 +0100 <kuribas`> hmm
2024-01-22 18:15:24 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c) (Remote host closed the connection)
2024-01-22 18:15:41 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2024-01-22 18:15:51 +0100 <kuribas`> right, so this covers, but is not total...
2024-01-22 18:16:06 +0100 <kuribas`> So the ignored clauses still need to be total.
2024-01-22 18:16:07 +0100 <tomsmeding> the 'otherwise' branch makes it total
2024-01-22 18:16:13 +0100califax(~califax@user/califx)
2024-01-22 18:17:18 +0100 <tomsmeding> yes, I'm imagining the algorithm to be this: 1. desugar `foo x | guard1 = rhs1 | guard2 = rhs2` to `foo x | guard1 = rhs1 ; foo x | guard2 = rhs2`
2024-01-22 18:17:40 +0100 <tomsmeding> 2. when encountering a case with a guard, typecheck it as if the guard weren't there
2024-01-22 18:17:56 +0100 <tomsmeding> 3. then continue with the rest of the cases as if that guard-having case weren't there
2024-01-22 18:18:07 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
2024-01-22 18:18:20 +0100 <tomsmeding> oh 1.5. rewrite `foo x | guard = rhs` to `foo x = rhs` if `guard` evaluates to `true`
2024-01-22 18:18:46 +0100 <kuribas`> tomsmeding: well, type check the guard as 'bool' :)
2024-01-22 18:18:53 +0100 <tomsmeding> and that
2024-01-22 18:19:40 +0100 <tomsmeding> that's not the difficult part of the algorithm ;)
2024-01-22 18:20:50 +0100 <kuribas`> tomsmeding: that's missing an `else` ...
2024-01-22 18:23:43 +0100 <tomsmeding> s/if/whenever/
2024-01-22 18:24:03 +0100 <tomsmeding> when (guard evaluates to true) $ do the rewrite
2024-01-22 18:25:13 +0100 <kuribas`> gtg
2024-01-22 18:25:26 +0100kuribas`(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
2024-01-22 18:27:22 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-01-22 18:28:43 +0100tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net)
2024-01-22 18:31:10 +0100 <shapr> @quote
2024-01-22 18:31:10 +0100 <lambdabot> EFF says: Making surveillance part of a holiday tradition is essentially setting up a plush police state in your own home.
2024-01-22 18:31:42 +0100wlhn(~wenzel@dl5fq-8yqkt42rsn1837y-3.rev.dnainternet.fi) (Quit: Leaving)
2024-01-22 18:36:24 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-01-22 18:36:44 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 18:41:07 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2024-01-22 18:43:34 +0100billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Ping timeout: 276 seconds)
2024-01-22 18:49:20 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-01-22 18:51:53 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 18:53:23 +0100califax(~califax@user/califx)
2024-01-22 18:56:11 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2024-01-22 18:56:49 +0100euleritian(~euleritia@dynamic-176-006-199-114.176.6.pool.telefonica.de)
2024-01-22 18:57:16 +0100euleritian(~euleritia@dynamic-176-006-199-114.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-01-22 18:57:39 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 19:01:43 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
2024-01-22 19:02:45 +0100euleritian(~euleritia@dynamic-046-114-104-075.46.114.pool.telefonica.de)
2024-01-22 19:03:50 +0100euleritian(~euleritia@dynamic-046-114-104-075.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2024-01-22 19:04:03 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 19:06:42 +0100earthy(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net)
2024-01-22 19:07:17 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-01-22 19:08:24 +0100califax(~califax@user/califx)
2024-01-22 19:12:41 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
2024-01-22 19:17:16 +0100mc47(~mc47@xmonad/TheMC47)
2024-01-22 19:31:45 +0100billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
2024-01-22 19:35:30 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2024-01-22 19:37:33 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2024-01-22 19:39:45 +0100billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Ping timeout: 256 seconds)
2024-01-22 19:43:44 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2024-01-22 19:53:59 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2024-01-22 19:55:01 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
2024-01-22 20:01:45 +0100target_i(~target_i@217.175.14.39) (Quit: leaving)
2024-01-22 20:10:29 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-01-22 20:12:27 +0100michalz_(~michalz@185.246.207.218) (Quit: ZNC 1.8.2 - https://znc.in)
2024-01-22 20:12:57 +0100Tuplanolla(~Tuplanoll@91-159-68-95.elisa-laajakaista.fi)
2024-01-22 20:16:35 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2024-01-22 20:17:31 +0100euleritian(~euleritia@dynamic-046-114-104-075.46.114.pool.telefonica.de)
2024-01-22 20:18:59 +0100APic(apic@apic.name) (Ping timeout: 256 seconds)
2024-01-22 20:20:00 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-01-22 20:21:45 +0100sadie-sorceress(~sadie-sor@199.96.191.158)
2024-01-22 20:28:14 +0100dtman34_(~dtman34@2601:447:d000:93c9:ad99:f215:9ba0:8a79) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in)
2024-01-22 20:28:35 +0100dtman34(~dtman34@2601:447:d000:93c9:26e6:4184:3fb9:5726)
2024-01-22 20:31:27 +0100iakov(~iakov@2a02:8106:244:b000:57f6:37d4:b4f4:dc14)
2024-01-22 20:36:05 +0100euleritian(~euleritia@dynamic-046-114-104-075.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2024-01-22 20:36:21 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-01-22 20:43:18 +0100sadie-sorceress(~sadie-sor@199.96.191.158) (Ping timeout: 250 seconds)
2024-01-22 20:43:53 +0100sadie-sorceress(~sadie-sor@199.96.187.158)
2024-01-22 20:45:45 +0100 <cheater> when i have a bunch of packages called aaa, bbb, ccc inside a directory called top, and in top i have cabal.project that does "packages: ./aaa \n ./bbb \n ./ccc", and aaa lists bbb as a dependency, should aaa be able to find bbb inside ../bbb relative to where aaa.cabal is located?
2024-01-22 20:46:41 +0100 <tomsmeding> cheater: yes
2024-01-22 20:47:02 +0100 <tomsmeding> assuming that the cabal file inside bbb/ gives package name bbb
2024-01-22 20:47:10 +0100 <cheater> yeah
2024-01-22 20:47:19 +0100 <cheater> how far is cabal.project searched for?
2024-01-22 20:47:28 +0100 <cheater> just the parent directory, or up to fs root?
2024-01-22 20:47:45 +0100 <tomsmeding> more than just parent directory, may well be fs root
2024-01-22 20:47:57 +0100 <tomsmeding> perhaps it stops at ~, not sure
2024-01-22 20:49:50 +0100 <haskellbridge> 15<J​ade (@jade_m.org> does anyone know what, if any, tooling uses the output of `-fshow-loaded-modules` in ghci?
2024-01-22 20:52:50 +0100sadie-sorceress(~sadie-sor@199.96.187.158) (Ping timeout: 250 seconds)
2024-01-22 20:53:20 +0100FeuermagierGuest1958
2024-01-22 20:53:20 +0100Feuermagier_(~Feuermagi@user/feuermagier)
2024-01-22 20:53:20 +0100Guest1958(~Feuermagi@user/feuermagier) (Killed (tungsten.libera.chat (Nickname regained by services)))
2024-01-22 20:53:20 +0100Feuermagier_Feuermagier
2024-01-22 20:53:29 +0100 <cheater> thanks tom
2024-01-22 20:55:29 +0100APic(apic@apic.name)
2024-01-22 20:55:31 +0100tabemann_(~tabemann@2600:1700:7990:24e0:8418:7d48:7fca:df7f) (Remote host closed the connection)
2024-01-22 20:55:45 +0100tabemann_(~tabemann@2600:1700:7990:24e0:aad7:ae4:6df1:f3e8)
2024-01-22 21:02:05 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2024-01-22 21:04:33 +0100xacktm(xacktm@user/xacktm)
2024-01-22 21:04:37 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-01-22 21:07:35 +0100earthy(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Ping timeout: 256 seconds)
2024-01-22 21:08:37 +0100earthy(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net)
2024-01-22 21:17:12 +0100coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2024-01-22 21:19:30 +0100iakov(~iakov@2a02:8106:244:b000:57f6:37d4:b4f4:dc14) (Quit: Client closed)
2024-01-22 21:21:20 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-01-22 21:23:25 +0100stilgart(~Christoph@chezlefab.net)
2024-01-22 21:31:57 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2024-01-22 21:32:26 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
2024-01-22 21:33:26 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 21:35:45 +0100trev(~trev@user/trev) (Quit: trev)
2024-01-22 21:37:33 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c)
2024-01-22 21:38:14 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 256 seconds)
2024-01-22 21:38:15 +0100sadie-sorceress(~sadie-sor@199.96.187.158)
2024-01-22 21:41:58 +0100thegeekinside(~thegeekin@189.180.85.240) (Ping timeout: 264 seconds)
2024-01-22 21:42:11 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c) (Ping timeout: 260 seconds)
2024-01-22 21:42:51 +0100gooba(~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection)
2024-01-22 21:43:13 +0100gooba(~gooba@90-231-13-185-no3430.tbcn.telia.com)
2024-01-22 21:44:28 +0100jargon(~jargon@211.sub-174-205-225.myvzw.com)
2024-01-22 21:51:23 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-01-22 21:51:57 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2024-01-22 21:52:10 +0100noumenon(~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving)
2024-01-22 21:53:48 +0100ft(~ft@p508dbda4.dip0.t-ipconnect.de)
2024-01-22 21:58:01 +0100causal(~eric@50.35.85.7)
2024-01-22 22:02:29 +0100 <dminuoso_> tomsmeding: Stopping at ~ seems quite arbitrary, especially since not all paths have ~ as an intermediate directory.
2024-01-22 22:02:45 +0100 <tomsmeding> yeah it probably doesn't
2024-01-22 22:02:58 +0100 <tomsmeding> I think git by default stops at ~
2024-01-22 22:03:33 +0100 <tomsmeding> was just mentioning the possibility in case it helps someone debug weird stuff :)
2024-01-22 22:04:07 +0100sadie-sorceress(~sadie-sor@199.96.187.158) (Quit: Client closed)
2024-01-22 22:07:09 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 22:09:07 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2024-01-22 22:10:45 +0100siw5ohs0(~aiw5ohs0@user/aiw5ohs0)
2024-01-22 22:11:06 +0100siw5ohs0(~aiw5ohs0@user/aiw5ohs0) (Leaving)
2024-01-22 22:13:37 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
2024-01-22 22:16:18 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2024-01-22 22:16:37 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2024-01-22 22:24:08 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2024-01-22 22:24:17 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Remote host closed the connection)
2024-01-22 22:24:33 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f)
2024-01-22 22:28:16 +0100iakov(~iakov@2a02:8106:244:b000:bb8c:d849:459b:3c4)
2024-01-22 22:28:17 +0100fansly(~fansly@2001:448a:2010:476e:5d30:627d:73c3:a75f) (Read error: Connection reset by peer)
2024-01-22 22:31:43 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c)
2024-01-22 22:34:10 +0100thegeekinside(~thegeekin@189.180.85.240)
2024-01-22 22:37:41 +0100elkcl(~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Ping timeout: 240 seconds)
2024-01-22 22:43:22 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 22:44:30 +0100Square2(~Square4@user/square)
2024-01-22 22:44:52 +0100elkcl(~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru)
2024-01-22 22:47:19 +0100Square(~Square@user/square) (Ping timeout: 276 seconds)
2024-01-22 22:47:58 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 264 seconds)
2024-01-22 22:49:58 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-01-22 22:57:18 +0100actioninja7(~actioninj@user/actioninja)
2024-01-22 22:58:39 +0100actioninja(~actioninj@user/actioninja) (Ping timeout: 256 seconds)
2024-01-22 22:58:40 +0100actioninja7actioninja
2024-01-22 22:58:57 +0100tomboy64(~tomboy64@user/tomboy64) (Read error: Connection reset by peer)
2024-01-22 22:59:20 +0100tomboy64(~tomboy64@user/tomboy64)
2024-01-22 23:00:22 +0100Square2Square
2024-01-22 23:01:59 +0100tomboy64(~tomboy64@user/tomboy64) (Client Quit)
2024-01-22 23:02:17 +0100tomboy64(~tomboy64@user/tomboy64)
2024-01-22 23:02:58 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2024-01-22 23:19:31 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-01-22 23:21:53 +0100aljazmc(~aljazmc@user/aljazmc) (Quit: Leaving)
2024-01-22 23:28:37 +0100CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2024-01-22 23:42:17 +0100 <ph88> what's the easiest way to crash a program from anywhere in the code? I want to make absolutely sure some section of the code is being hit
2024-01-22 23:42:32 +0100 <Rembane> ph88: error "AAA"
2024-01-22 23:42:41 +0100 <ph88> thanks
2024-01-22 23:42:56 +0100 <Rembane> np!
2024-01-22 23:43:33 +0100 <haskellbridge> 15<J​ade> depending on strictness and the structure of your code, you might want to `seq` that
2024-01-22 23:44:19 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2024-01-22 23:45:16 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2024-01-22 23:46:07 +0100Guest15(~Guest29@86-82-248-239.fixed.kpn.net)
2024-01-22 23:46:07 +0100igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2024-01-22 23:47:55 +0100 <tri> do i use the async package to work with asynchronous and multithreading in haskell?
2024-01-22 23:48:23 +0100 <tri> just like in c#, before people have to work with thread directly, now most things are done via async await
2024-01-22 23:50:11 +0100 <geekosaur> yes
2024-01-22 23:50:15 +0100 <geekosaur> @where parconc
2024-01-22 23:50:15 +0100 <lambdabot> https://www.safaribooksonline.com/library/view/parallel-and-concurrent/9781449335939/
2024-01-22 23:50:41 +0100 <EvanR> async is great
2024-01-22 23:50:55 +0100 <EvanR> esp when your thread strategies become anything other than trivial
2024-01-22 23:50:59 +0100 <ph88> how can i send debug output to something else than stdout and stderr and then capture it ?
2024-01-22 23:51:12 +0100 <tri> than kyou
2024-01-22 23:51:17 +0100fendor(~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
2024-01-22 23:51:23 +0100 <ph88> capture it, i mean save stdout, stderr and other output together to a file
2024-01-22 23:51:25 +0100 <EvanR> pipe stderr to another process or file when running the program xD
2024-01-22 23:51:36 +0100 <EvanR> with the shell
2024-01-22 23:51:47 +0100 <ph88> from the haskell program i want to send output to new pipe not stdout or stderr
2024-01-22 23:52:05 +0100 <Rembane> Open file, write all the stuff, close file?
2024-01-22 23:52:05 +0100 <EvanR> System.Process has the means to do that but it's somewhat more involved than shell
2024-01-22 23:52:14 +0100 <EvanR> or that
2024-01-22 23:52:53 +0100 <Guest15> Can someone help me write a function with the accelerate libary, so I have this function of form ''propagateL :: Elt a => Acc (Vector Bool) -> Acc (Vector a) -> Acc (Vector a)''   with for example  input acc vector bool of form (True, False, False, True, False) and input acc vector int of form (2, 3, 4, 5, 6). Then it would generate output (2,
2024-01-22 23:52:53 +0100 <Guest15> 2, 2, 5, 5). I now have this https://paste.tomsmeding.com/84SCGJXN but the shapes are wrong because the indices are not in correct shape, and a reshape function doesnt owrk
2024-01-22 23:52:59 +0100 <EvanR> I've used a logger thread to over-engineer the task of handling logs from various components
2024-01-22 23:53:21 +0100 <ph88> https://hackage.haskell.org/package/base-4.19.0.0/docs/src/GHC.IO.FD.html#stdin can i do it like this and make pipe number 3 ?
2024-01-22 23:53:36 +0100 <EvanR> it just loops waiting on an MVar to become not empty and logs the contents
2024-01-22 23:54:37 +0100 <geekosaur> ph88, fd 3 might already be in use
2024-01-22 23:55:04 +0100 <geekosaur> 0, 1, 2 are passed in by the OS (and on Windows, 3 and 4)
2024-01-22 23:55:35 +0100 <ph88> maybe i should use this? https://hackage.haskell.org/package/base-4.19.0.0/docs/GHC-IO-Handle.html#v:mkFileHandle
2024-01-22 23:55:37 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2024-01-22 23:55:40 +0100 <geekosaur> files opened by the application will start with the next available fd
2024-01-22 23:56:10 +0100 <ph88> can i send output directly to console over a new pipe?
2024-01-22 23:56:29 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 240 seconds)
2024-01-22 23:56:46 +0100 <geekosaur> but you also have that any part of the code that writes to stdout or stderr will do exactly that; the only way to intervene is to reopen those on some other resource
2024-01-22 23:58:22 +0100 <ph88> like this https://stackoverflow.com/q/26153251/1833322