2022/10/24

2022-10-24 00:02:00 +0200tog(~tog@196.sub-75-245-142.myvzw.com) (Quit: Connection closed)
2022-10-24 00:04:36 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 258 seconds)
2022-10-24 00:05:02 +0200finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2022-10-24 00:05:02 +0200bilegeek(~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6)
2022-10-24 00:08:17 +0200random-jellyfish(~random-je@user/random-jellyfish)
2022-10-24 00:09:12 +0200mastarija(~mastarija@2a05:4f46:e03:6000:1c72:188f:b3b3:3a5b) (Quit: Leaving)
2022-10-24 00:09:26 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-10-24 00:10:05 +0200Tuplanolla(~Tuplanoll@91-159-68-210.elisa-laajakaista.fi)
2022-10-24 00:12:47 +0200zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-10-24 00:13:53 +0200acidjnk(~acidjnk@p200300d6e7137a39185a556c4ffa1a9f.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2022-10-24 00:15:12 +0200birdgoose(~birdgoose@151.210.175.160) (Quit: Iridium IRC Client)
2022-10-24 00:15:21 +0200birdgoose(~birdgoose@151.210.175.160)
2022-10-24 00:19:19 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-10-24 00:23:17 +0200axeman(~quassel@2a02:8109:a380:78:55ee:b3a8:1110:20bb) (Ping timeout: 272 seconds)
2022-10-24 00:26:29 +0200axeman(~quassel@2a02:8109:a380:78:75a8:c262:9acb:200a)
2022-10-24 00:27:27 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2022-10-24 00:28:45 +0200Guest51(~Guest51@50.47.90.28)
2022-10-24 00:29:44 +0200birdgoose(~birdgoose@151.210.175.160) (Quit: Iridium IRC Client)
2022-10-24 00:29:55 +0200birdgoose(~birdgoose@151.210.175.160)
2022-10-24 00:34:52 +0200Tuplanolla(~Tuplanoll@91-159-68-210.elisa-laajakaista.fi) (Quit: Leaving.)
2022-10-24 00:38:36 +0200 <Guest51> I'm new to the `machines` library. `Tee` lets me write a machine that uses two input streams. What's the best way to write one that uses three or more? I assume there's a better way than just rewriting `tee` to use `data T3 = C1 | C2 | C3` but idk what it would be
2022-10-24 00:38:42 +0200Guest51(~Guest51@50.47.90.28) (Quit: Client closed)
2022-10-24 00:40:28 +0200 <dsal> I was going to ask if one of the things could be a Tee, but missed my chance.
2022-10-24 00:41:48 +0200Guest51(~Guest51@50.47.90.28)
2022-10-24 00:41:50 +0200 <jackdk> I would combine tees, but I know nothing of this library. If I was combining way more than three, I might make an effort to produce a balanced tree of tees instead of a big list
2022-10-24 00:45:03 +0200 <Guest51> I don't think that would work in the general case. My reasoning is that, once you combine two input streams with one Tee, you can no longer choose the order in which you take values from them. (You can think of a machine as being a conduit but with the ability to read more than 1 input stream)
2022-10-24 00:46:34 +0200beteigeuze1(~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73)
2022-10-24 00:47:41 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 276 seconds)
2022-10-24 00:47:41 +0200beteigeuze1beteigeuze
2022-10-24 00:50:03 +0200Feuermagier(~Feuermagi@user/feuermagier)
2022-10-24 00:55:57 +0200emanon42(~emanon42@103.120.19.44) (Ping timeout: 272 seconds)
2022-10-24 00:56:02 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-10-24 01:01:01 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2022-10-24 01:05:59 +0200 <dsal> If that works for two, then why wouldn't it work if one of the two was also two?
2022-10-24 01:07:05 +0200 <dsal> In any case, yeah, making a special type for N is probably a good step after 2. I don't think I'd do anything special for 3.
2022-10-24 01:09:33 +0200paulpaul1076(~paulpaul1@95-29-5-52.broadband.corbina.ru)
2022-10-24 01:10:11 +0200 <paulpaul1076> hey everyone, i started learning haskell, and when i type in an example from the book by Graham Hutton I get an error saying "non-exhaustive patterns in function"
2022-10-24 01:10:25 +0200 <paulpaul1076> sum [] = 0
2022-10-24 01:10:30 +0200Topsi(~Topsi@dyndsl-037-138-064-075.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-10-24 01:10:31 +0200 <paulpaul1076> sum (x:xs) = x + sum xs
2022-10-24 01:10:40 +0200 <paulpaul1076> what is non-exhaustive about this definition?
2022-10-24 01:10:49 +0200random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-10-24 01:10:54 +0200 <c_wraith> ghci treats each line as a separate definition
2022-10-24 01:11:10 +0200 <c_wraith> The example is intended to be put in a file, not entered into ghci
2022-10-24 01:11:17 +0200 <paulpaul1076> oh, i see, let me try
2022-10-24 01:11:37 +0200redmp(~redmp@mobile-166-137-178-164.mycingular.net)
2022-10-24 01:13:02 +0200 <hpc> you can do multiline inputs with :{ and :}, but bleh
2022-10-24 01:13:04 +0200 <paulpaul1076> it worked thanks! i was using haskell for mac IDE's playground, it uses ghci
2022-10-24 01:13:14 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-10-24 01:14:32 +0200 <c_wraith> yeah, ghci works a bit differently from ghc, in terms of how definitions are entered there. It's often good to use a file for definitions plus ghci for experimenting with them.
2022-10-24 01:15:09 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:d4cb:6221:97a6:c0bc)
2022-10-24 01:15:58 +0200 <paulpaul1076> https://stackoverflow.com/questions/2846050/how-to-define-a-function-in-ghci-across-multiple-lines
2022-10-24 01:16:07 +0200 <paulpaul1076> seems like you can do ":set +m"
2022-10-24 01:16:24 +0200 <geekosaur> yes, that's a different kind of multiline input mode
2022-10-24 01:16:34 +0200 <geekosaur> it requires you to hit enter twice in most cases
2022-10-24 01:16:53 +0200 <c_wraith> Or you can use :{ and :} to start end end multiline mode in ghci. Or you can use semicolons to put everything on one line.
2022-10-24 01:16:56 +0200 <geekosaur> otherwise it just keeps adding to the current "definition"
2022-10-24 01:17:22 +0200 <c_wraith> But I really like having a file. It makes restarting your experiments much easier
2022-10-24 01:17:24 +0200 <hpc> ultimately :r is the easiest
2022-10-24 01:17:32 +0200 <hpc> yeah
2022-10-24 01:17:35 +0200Kaipei(~Kaiepi@108.175.84.104) (Ping timeout: 276 seconds)
2022-10-24 01:18:10 +0200 <paulpaul1076> thanks, i will try it out as well
2022-10-24 01:18:10 +0200 <geekosaur> also if you enter stuff at the prompt the only way to go back and collect it later is to dig it out of the history file
2022-10-24 01:18:24 +0200 <paulpaul1076> how do you guys code in haskell, do you use text editors or some ide?
2022-10-24 01:18:28 +0200 <geekosaur> can't save source, can't save current workspace, etc.
2022-10-24 01:19:01 +0200 <geekosaur> I switch between emacs (with haskell-mode but no IDE support) and vscode (with IDE support)
2022-10-24 01:19:04 +0200 <hpc> all vim all the time
2022-10-24 01:19:35 +0200 <hpc> no plugins or anything
2022-10-24 01:19:55 +0200 <paulpaul1076> and you use haskell professionally? I use scala, but i find myself writing non-functional code all the time, so I decided to learn a bit of haskell
2022-10-24 01:21:26 +0200 <c_wraith> Many of us have at one point or another. Most probably aren't at this moment.
2022-10-24 01:22:30 +0200mmhat(~mmh@p200300f1c7307610ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1)
2022-10-24 01:22:55 +0200 <dsal> I do Haskell professionally. Just emacs.
2022-10-24 01:23:02 +0200 <dsal> I keep meaning to do something with vscode, but it's never stuck.
2022-10-24 01:24:39 +0200zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
2022-10-24 01:25:14 +0200 <hpc> dsal: same, i never quite get to the point where more IDE-like features would help me more than just being brutally efficient at text editing
2022-10-24 01:25:25 +0200 <paulpaul1076> I've always wondered why people use emacs and vim. Isn't vscode better and easier to use? (sorry, I've only been a programmer for 5 years professionally, maybe most of you have been programming for a long time and vim and emacs is what you're used to)
2022-10-24 01:25:31 +0200 <hpc> (plus i write in too many other languages)
2022-10-24 01:25:58 +0200 <geekosaur> I've been using vi and variants since 1982 and emacs since 1987
2022-10-24 01:26:03 +0200Guest7754polo
2022-10-24 01:26:07 +0200 <hpc> i can't speak for emacs, but vim's command language is an entire... language
2022-10-24 01:26:23 +0200 <dsal> hpc: yeah. I never really learned most of emacs. heh. But I can remember my goals
2022-10-24 01:26:26 +0200 <geekosaur> emacs has its own bloody lisp dialect
2022-10-24 01:26:57 +0200 <dsal> The only time I felt that I *needed* an IDE professionally was when I was doing Java and the ecosystem basically pushed requirements into tooling.
2022-10-24 01:27:01 +0200 <hpc> as you learn it, the amount of stuff you can do instantly just grows and grows
2022-10-24 01:27:36 +0200 <dsal> I've been using vscode for tla+ because it's a lot better at it than the tla+ tools.
2022-10-24 01:27:42 +0200 <geekosaur> also vscode is, quite honestly, *slower*
2022-10-24 01:28:30 +0200 <hpc> and vim/emacs are at full power without any configuration, and more likely to be pre-installed
2022-10-24 01:28:47 +0200 <paulpaul1076> I recently had to search for text in a 4 gb text file, vscode wasn't able to open it, the only text editor that worked was sublime text (i didn't try vim or emacs)
2022-10-24 01:29:11 +0200 <dsal> Pretty sure I just wouldn't try that in a text editor.
2022-10-24 01:29:22 +0200 <hpc> at that point i would just grep it
2022-10-24 01:29:58 +0200 <paulpaul1076> true, but i was asked to help a non-technical person with this text searching stuff
2022-10-24 01:30:08 +0200 <paulpaul1076> who uses windows
2022-10-24 01:31:28 +0200 <dsal> emacs has this cool feature where if you try to open a large file, it just says "seriously?" and then you can tell it that you want to do things that aren't good ideas. :) I use it with tens of megs. I do have some pretty good tools for that sort of thing, but I'd probably just fix the "I have a 4GB text file" thing first. :)
2022-10-24 01:32:11 +0200 <geekosaur> sometimes the right tool for the job is split
2022-10-24 01:34:12 +0200 <olivermead[m]> <paulpaul1076> "I recently had to search for..." <- yeh vim would have been fine, emacs would have chugged a bit
2022-10-24 01:34:46 +0200 <geekosaur> (I also remember bfs from before the visual editor days. ed but read only and worked in chunks. then again, 4GB was bigger than your disk back then…)
2022-10-24 01:35:34 +0200 <paulpaul1076> I see, maybe I'll learn it if I have the time, although I don't know if it'll be useful for me. The only argument I've heard for learning vim is that we have to ssh into servers nowadays and have to be able to edit files there, but I already do that with nano.
2022-10-24 01:36:00 +0200 <dsal> I use emacs on my mac to edit files remotely on my other machines.
2022-10-24 01:36:20 +0200 <dsal> Or emacs there. Or sometimes vi. Depends on what I'm doing.
2022-10-24 01:37:07 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 272 seconds)
2022-10-24 01:38:30 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:3df4:aa3e:43b0:5de8) (Remote host closed the connection)
2022-10-24 01:38:42 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com)
2022-10-24 01:39:07 +0200redmp(~redmp@mobile-166-137-178-164.mycingular.net) (Ping timeout: 260 seconds)
2022-10-24 01:40:59 +0200danza(~francesco@151.43.90.41) (Ping timeout: 276 seconds)
2022-10-24 01:43:24 +0200 <yushyin> paulpaul1076: the text editing features of vim are useful if you don't have a decent IDE support for the language you're writing for yet or if the language doesn't benefit much from it. also there are languages i wouldn't want to write without IDE features either.
2022-10-24 01:43:58 +0200jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2022-10-24 01:45:17 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-10-24 01:45:47 +0200 <jle`> nshepperd2: hey, how's it going :) saw your name show up in a blog post and was wondering if i could ask about a haskell snippet
2022-10-24 01:46:11 +0200 <paulpaul1076> 👍🏻 thanks. I'll look into it, does that mean that vim supports some kind of config files that can define keywords to highlight syntax?
2022-10-24 01:46:18 +0200 <jle`> in https://www.gwern.net/Problem-14#haskell is this solution correctly labeled as O(l) space? as soon as you call the nested generate we're already in O(l^2) right?
2022-10-24 01:51:26 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds)
2022-10-24 01:53:17 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-10-24 01:53:34 +0200danza(~francesco@151.43.239.176)
2022-10-24 01:54:31 +0200Guest62(~Guest62@43.21.135.77.rev.sfr.net)
2022-10-24 01:54:40 +0200 <Guest62> hello, i have a question
2022-10-24 01:54:43 +0200frost1(~frost@user/frost)
2022-10-24 01:55:18 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-10-24 01:56:00 +0200 <Guest62> is there a way to use a fold but to work on two consecutive elements of a list instead of one?
2022-10-24 01:57:19 +0200 <Guest62> for instance, [1,2,3,4] turned into [1-0, 2-1, 3-2, 4-3] through a fold ?
2022-10-24 01:57:53 +0200 <jle`> Guest62: simplest way for lists is probably to zip with its tail
2022-10-24 01:57:55 +0200 <jackdk> I generally zip the list against its own tail
2022-10-24 01:58:04 +0200 <Guest62> ok ty
2022-10-24 01:58:04 +0200 <jle`> > let xs = [1,2,3,4] in zip xs (drop 1 xs)
2022-10-24 01:58:06 +0200 <lambdabot> [(1,2),(2,3),(3,4)]
2022-10-24 01:58:10 +0200 <hpc> @quote aztec.god
2022-10-24 01:58:10 +0200 <lambdabot> quicksilver says: zip`ap`tail - the Aztec god of consecutive numbers
2022-10-24 01:58:32 +0200 <jle`> > let xs = [1,2,3,4] in map (\(a, b) -> b - a) (zip xs (drop 1 xs))
2022-10-24 01:58:33 +0200 <lambdabot> [1,1,1]
2022-10-24 01:58:44 +0200 <jle`> or you could fold instead of map
2022-10-24 01:59:21 +0200 <Guest62> great
2022-10-24 01:59:24 +0200 <Guest62> ty
2022-10-24 02:00:03 +0200 <jle`> np! yup it's the power of stream combinators, and it should only take O(1) space in most circumstances bc you're never allocating the actual zipped list
2022-10-24 02:00:16 +0200 <Guest62> interesting
2022-10-24 02:00:48 +0200 <Guest62> it must be better than my pattern matching recursion
2022-10-24 02:01:13 +0200 <jle`> readability-wise, probably. but in the end it basically simplifies down to pattern matching recursion in the source code
2022-10-24 02:01:24 +0200 <jle`> if we're talking performance- or space-wise
2022-10-24 02:03:32 +0200 <Guest62> ok
2022-10-24 02:03:43 +0200 <Guest62> tyvm
2022-10-24 02:04:00 +0200wonko(~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 250 seconds)
2022-10-24 02:07:14 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 02:13:29 +0200beteigeuze(~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73) (Ping timeout: 276 seconds)
2022-10-24 02:13:46 +0200birdgoose(~birdgoose@151.210.175.160) (Quit: Iridium IRC Client)
2022-10-24 02:13:47 +0200Kaipei(~Kaiepi@108.175.84.104)
2022-10-24 02:13:56 +0200birdgoose(~birdgoose@151.210.175.160)
2022-10-24 02:14:19 +0200Guest62(~Guest62@43.21.135.77.rev.sfr.net) (Quit: Client closed)
2022-10-24 02:15:21 +0200Kaipei(~Kaiepi@108.175.84.104) (Remote host closed the connection)
2022-10-24 02:15:45 +0200Kaipei(~Kaiepi@108.175.84.104)
2022-10-24 02:17:02 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
2022-10-24 02:22:19 +0200bilegeek(~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6) (Remote host closed the connection)
2022-10-24 02:22:39 +0200bilegeek(~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6)
2022-10-24 02:24:44 +0200hgolden(~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
2022-10-24 02:25:41 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 02:28:45 +0200hgolden(~hgolden@cpe-172-251-233-141.socal.res.rr.com)
2022-10-24 02:29:08 +0200birdgoose(~birdgoose@151.210.175.160) (Ping timeout: 250 seconds)
2022-10-24 02:31:53 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-10-24 02:31:53 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-10-24 02:31:53 +0200wroathe(~wroathe@user/wroathe)
2022-10-24 02:33:22 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
2022-10-24 02:36:51 +0200paulpaul1076(~paulpaul1@95-29-5-52.broadband.corbina.ru) (Remote host closed the connection)
2022-10-24 02:36:53 +0200axeman(~quassel@2a02:8109:a380:78:75a8:c262:9acb:200a) (Ping timeout: 276 seconds)
2022-10-24 02:37:09 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 02:41:05 +0200redmp(~redmp@mobile-166-137-178-099.mycingular.net)
2022-10-24 02:58:59 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Read error: Connection timed out)
2022-10-24 03:02:24 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2022-10-24 03:05:47 +0200redmp(~redmp@mobile-166-137-178-099.mycingular.net) (Ping timeout: 272 seconds)
2022-10-24 03:07:08 +0200redmp(~redmp@mobile-166-137-178-099.mycingular.net)
2022-10-24 03:08:22 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-10-24 03:10:25 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-10-24 03:13:46 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
2022-10-24 03:14:11 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-10-24 03:15:31 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:3df4:aa3e:43b0:5de8)
2022-10-24 03:16:11 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 03:16:32 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-10-24 03:21:12 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2022-10-24 03:28:50 +0200xff0x(~xff0x@2405:6580:b080:900:5aef:465a:6bf7:395b) (Ping timeout: 272 seconds)
2022-10-24 03:29:32 +0200Kaipei(~Kaiepi@108.175.84.104) (Ping timeout: 276 seconds)
2022-10-24 03:30:45 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
2022-10-24 03:36:31 +0200birdgoose(~birdgoose@151.210.175.160)
2022-10-24 03:37:17 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 03:37:28 +0200BananaKing69441(~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 03:37:52 +0200BananaKing69441j4cc3b
2022-10-24 03:38:13 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 03:42:38 +0200jbayardo(~jbayardo@20.83.116.49) (Remote host closed the connection)
2022-10-24 03:43:26 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2022-10-24 03:43:57 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
2022-10-24 03:48:25 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-10-24 03:54:49 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-10-24 03:57:07 +0200ski(~ski@remote11.chalmers.se) (Remote host closed the connection)
2022-10-24 03:58:10 +0200 <j4cc3b> can you create a data type that has a subset of integers? For example, something like this - data Id = 100 | ... | 999
2022-10-24 03:58:57 +0200Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2022-10-24 03:59:14 +0200Feuermagier(~Feuermagi@user/feuermagier)
2022-10-24 04:02:46 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2022-10-24 04:03:21 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 04:03:21 +0200 <dsal> j4cc3b: You can create a data type with a constructor that isn't exported and only allow whatever you want.
2022-10-24 04:04:06 +0200 <dsal> But there's also this:
2022-10-24 04:04:10 +0200 <dsal> @hoogle Data.Finite
2022-10-24 04:04:10 +0200 <lambdabot> Database.PostgreSQL.Simple.Time Finite :: a -> Unbounded a
2022-10-24 04:04:10 +0200 <lambdabot> Data.Universe.Class class Universe a => Finite a
2022-10-24 04:04:10 +0200 <lambdabot> Data.Monoid.Inf Finite :: a -> Inf p a
2022-10-24 04:04:22 +0200 <dsal> @hackage finite-typelits
2022-10-24 04:04:22 +0200 <lambdabot> https://hackage.haskell.org/package/finite-typelits
2022-10-24 04:04:22 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-10-24 04:04:40 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2022-10-24 04:05:12 +0200 <j4cc3b> Thank you so much
2022-10-24 04:06:01 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-10-24 04:07:14 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2022-10-24 04:08:11 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-10-24 04:10:57 +0200jargon(~jargon@184.101.208.112)
2022-10-24 04:13:00 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-10-24 04:13:34 +0200td_(~td@83.135.9.27) (Ping timeout: 250 seconds)
2022-10-24 04:14:03 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2022-10-24 04:14:44 +0200birdgoose(~birdgoose@151.210.175.160) (Quit: Iridium IRC Client)
2022-10-24 04:14:57 +0200birdgoose(~birdgoose@151.210.175.160)
2022-10-24 04:15:33 +0200td_(~td@83.135.9.20)
2022-10-24 04:18:27 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-10-24 04:22:08 +0200finsternis(~X@23.226.237.192)
2022-10-24 04:23:10 +0200bilegeek_(~bilegeek@43.sub-174-209-36.myvzw.com)
2022-10-24 04:25:26 +0200redmp(~redmp@mobile-166-137-178-099.mycingular.net) (Ping timeout: 276 seconds)
2022-10-24 04:25:47 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-10-24 04:25:47 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-10-24 04:25:47 +0200finn_elijaFinnElija
2022-10-24 04:25:48 +0200birdgoose(~birdgoose@151.210.175.160) (Remote host closed the connection)
2022-10-24 04:25:51 +0200bilegeek(~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6) (Ping timeout: 272 seconds)
2022-10-24 04:27:47 +0200zaquest(~notzaques@5.130.79.72)
2022-10-24 04:28:37 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-10-24 04:29:39 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Read error: Connection timed out)
2022-10-24 04:32:43 +0200Guest51(~Guest51@50.47.90.28) (Quit: Client closed)
2022-10-24 04:38:16 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 250 seconds)
2022-10-24 04:40:32 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-10-24 04:47:10 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-10-24 04:49:23 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-10-24 04:50:44 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-10-24 04:51:42 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds)
2022-10-24 04:54:26 +0200Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2022-10-24 04:55:11 +0200Feuermagier(~Feuermagi@user/feuermagier)
2022-10-24 04:55:52 +0200Feuermagier(~Feuermagi@user/feuermagier) (Max SendQ exceeded)
2022-10-24 04:56:33 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection)
2022-10-24 04:56:44 +0200Feuermagier(~Feuermagi@user/feuermagier)
2022-10-24 05:00:52 +0200j4cc3b(~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds)
2022-10-24 05:01:14 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 250 seconds)
2022-10-24 05:02:22 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-10-24 05:04:52 +0200king_gs(~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0)
2022-10-24 05:05:09 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-10-24 05:08:13 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-10-24 05:08:33 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 05:09:49 +0200bilegeek_(~bilegeek@43.sub-174-209-36.myvzw.com) (Remote host closed the connection)
2022-10-24 05:10:10 +0200bilegeek_(~bilegeek@43.sub-174-209-36.myvzw.com)
2022-10-24 05:13:22 +0200boxscape_(~boxscape_@81.191.27.107) (Remote host closed the connection)
2022-10-24 05:17:35 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 05:18:09 +0200boxscape_(~boxscape_@81.191.27.107)
2022-10-24 05:19:00 +0200nate2(~nate@98.45.169.16) (Ping timeout: 250 seconds)
2022-10-24 05:28:37 +0200nate2(~nate@98.45.169.16)
2022-10-24 05:32:52 +0200nate2(~nate@98.45.169.16) (Ping timeout: 250 seconds)
2022-10-24 05:33:59 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 272 seconds)
2022-10-24 05:37:02 +0200boxscape_(~boxscape_@81.191.27.107) (Ping timeout: 244 seconds)
2022-10-24 05:38:04 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds)
2022-10-24 05:42:13 +0200Guest51(~Guest51@50.47.90.28)
2022-10-24 05:43:36 +0200danza(~francesco@151.43.239.176) (Read error: Connection reset by peer)
2022-10-24 05:43:58 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 05:45:08 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-10-24 05:49:56 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 276 seconds)
2022-10-24 05:59:03 +0200redmp(~redmp@mobile-166-137-178-116.mycingular.net)
2022-10-24 05:59:30 +0200danza(~francesco@ca-18-216-127.service.infuturo.it)
2022-10-24 06:00:32 +0200nate2(~nate@98.45.169.16)
2022-10-24 06:04:35 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-10-24 06:05:56 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 06:06:02 +0200 <Unicorn_Princess> hoogle generate "Found 7569 warnings when processing items", and also gave me a list of packages that are missing documentation. are these errors caused by something on my system, or is it simply a report on the packages themselves?
2022-10-24 06:06:17 +0200nate2(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-10-24 06:06:55 +0200 <Unicorn_Princess> (i installed hoogle by first installing ghcup, then `cabal install hoogle`, and finally `hoogle generate`)
2022-10-24 06:07:29 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds)
2022-10-24 06:08:27 +0200biberu(~biberu@user/biberu)
2022-10-24 06:08:41 +0200 <Unicorn_Princess> it reports in total 30 packages missing docs. stuff like 'lzma-clib' and 'rocksdb-haskell'
2022-10-24 06:09:49 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-24 06:09:50 +0200 <Unicorn_Princess> ah, https://hackage.haskell.org/package/lzma-clib says "docs not available", so maybe it's the pacakges
2022-10-24 06:10:52 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-24 06:11:26 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 250 seconds)
2022-10-24 06:11:32 +0200 <Unicorn_Princess> ah, but https://hackage.haskell.org/package/minisat-solver has "docs uploaded by user", so who knows. but it's another abandoned package it seems
2022-10-24 06:12:02 +0200 <Unicorn_Princess> (minisat-solver being another of the packages that hoogle generate reports are missing docs)
2022-10-24 06:12:46 +0200 <jackdk> When you installed your packages locally, they were probably built without documentation. I don't remember how to coerce cabal to rebuild installed packages with documentation.
2022-10-24 06:13:12 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-10-24 06:17:56 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-24 06:17:58 +0200 <Unicorn_Princess> oh i never installed any of them really. installing ghcup, `cabal install hoogle` and `hoogle generate` are the only haskell-related commands i ran on this system. just installed ubuntu 22.04 from scratch, so it's quite fresh
2022-10-24 06:18:18 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-24 06:18:27 +0200 <jackdk> Those packages are probably the dependencies of hoogle
2022-10-24 06:19:53 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 06:20:36 +0200king_gs(~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0) (Quit: king_gs)
2022-10-24 06:20:54 +0200nate2(~nate@98.45.169.16)
2022-10-24 06:23:40 +0200Kaipei(~Kaiepi@108.175.84.104)
2022-10-24 06:24:46 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 06:25:12 +0200Guest51(~Guest51@50.47.90.28) (Quit: Client closed)
2022-10-24 06:27:44 +0200bilegeek_(~bilegeek@43.sub-174-209-36.myvzw.com) (Quit: Leaving)
2022-10-24 06:29:05 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 272 seconds)
2022-10-24 06:29:51 +0200Guest7606(~aaa@49.207.231.197)
2022-10-24 06:31:37 +0200nate2(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-10-24 06:32:00 +0200 <Unicorn_Princess> hmmm, thanks
2022-10-24 06:34:50 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds)
2022-10-24 06:35:05 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2022-10-24 06:43:11 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 06:43:46 +0200Lumia(~Lumia@user/Lumia)
2022-10-24 06:51:53 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 272 seconds)
2022-10-24 06:57:54 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 06:59:37 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-10-24 07:06:16 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
2022-10-24 07:13:41 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-10-24 07:13:58 +0200birdgoose(~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe)
2022-10-24 07:26:06 +0200chomwitt(~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1)
2022-10-24 07:38:59 +0200Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Quit: BRB)
2022-10-24 07:40:43 +0200Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-10-24 07:45:28 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds)
2022-10-24 07:50:07 +0200michalz(~michalz@185.246.207.193)
2022-10-24 07:50:45 +0200Neuromancer(~Neuromanc@user/neuromancer) (Quit: Going offline, see ya! (www.adiirc.com))
2022-10-24 07:53:37 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 07:54:01 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-10-24 07:55:19 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2022-10-24 07:58:39 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 07:59:48 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2022-10-24 08:03:11 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 276 seconds)
2022-10-24 08:04:40 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 08:06:14 +0200nate2(~nate@98.45.169.16)
2022-10-24 08:10:52 +0200chomwitt(~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
2022-10-24 08:11:16 +0200chomwitt(~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1)
2022-10-24 08:11:38 +0200nate2(~nate@98.45.169.16) (Ping timeout: 276 seconds)
2022-10-24 08:12:07 +0200Lumia(~Lumia@user/Lumia) (Quit: ,-)
2022-10-24 08:19:28 +0200rembo10(~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-10-24 08:20:33 +0200redmp(~redmp@mobile-166-137-178-116.mycingular.net) (Ping timeout: 272 seconds)
2022-10-24 08:20:47 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-10-24 08:21:37 +0200rembo10(~rembo10@main.remulis.com)
2022-10-24 08:26:40 +0200causal(~user@50.35.83.177) (Quit: WeeChat 3.6)
2022-10-24 08:29:11 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds)
2022-10-24 08:33:17 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 08:37:10 +0200mmhat(~mmh@p200300f1c7307610ee086bfffe095315.dip0.t-ipconnect.de)
2022-10-24 08:38:33 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-10-24 08:41:51 +0200shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-10-24 08:46:05 +0200mncheck(~mncheck@193.224.205.254)
2022-10-24 08:47:39 +0200acidjnk(~acidjnk@p200300d6e7137a39185a556c4ffa1a9f.dip0.t-ipconnect.de)
2022-10-24 08:47:51 +0200 <Clinton[m]> just checking is there an extension that allows me to have record field names of the same name but different types in the same module?
2022-10-24 08:48:24 +0200 <Clinton[m]> like... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/018c991b074f6aa3afe4ec1ab06076fa4352…>)
2022-10-24 08:48:46 +0200 <Clinton[m]> Or is that just very naughty.
2022-10-24 08:52:32 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:ad98:9d00:b84f:455)
2022-10-24 08:53:04 +0200birdgoose(~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Read error: Connection reset by peer)
2022-10-24 08:53:19 +0200birdgoose(~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe)
2022-10-24 08:54:53 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-10-24 08:55:47 +0200 <c_wraith> DuplicateRecordFields should do that
2022-10-24 09:06:25 +0200 <Clinton[m]> c_wraith: yep, that did the job. Although I've got another issue more like this:... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/b2de1ff05816fa066d62b0d6181a0a0c9b7e…>)
2022-10-24 09:06:57 +0200 <c_wraith> Oh. I don't think that's gonna work.
2022-10-24 09:12:55 +0200random-jellyfish(~random-je@user/random-jellyfish)
2022-10-24 09:19:01 +0200Lycurgus(~juan@user/Lycurgus)
2022-10-24 09:19:56 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-10-24 09:19:57 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 09:24:19 +0200titibandit(~titibandi@xdsl-87-78-36-34.nc.de)
2022-10-24 09:30:56 +0200 <dminuoso> How would one write a rewrite rule for say `pure a`
2022-10-24 09:31:12 +0200 <dminuoso> Specifically, I cant figure out how to specify a type annmotation for it.
2022-10-24 09:31:15 +0200 <Clinton[m]> c_wraith: all good I've just put them subtypes now
2022-10-24 09:31:39 +0200 <dminuoso> `"foo" forall a. pure a = XXX` is not good enough, I want to constrain it to a particualr type of `a`
2022-10-24 09:31:47 +0200 <dminuoso> Or rather, that example is not good enough
2022-10-24 09:31:57 +0200 <dminuoso> Say rewriting `a >> b`
2022-10-24 09:33:48 +0200 <dminuoso> https://play-haskell.tomsmeding.com/saved/3Nts9F5o
2022-10-24 09:37:32 +0200 <dminuoso> Or do I have to define a top level binding, say choice, define <+> = choice, specify INLINE[0] on the instance, and specify the rewrite rule in terms of `choice`?
2022-10-24 09:38:07 +0200 <nshepperd2> jle`: hey! you're right, that solution is O(l^2) space. I do have a O(l) version though, that does it as a fold
2022-10-24 09:38:25 +0200 <dminuoso> Mmm, no. Inlining on (<+>) prevents the rule from firing.
2022-10-24 09:40:27 +0200 <dminuoso> This also causes weird type errors: "flatparse/reassoc-alt" forall l m r. (l :: Maybe a) <+> m <+> r = Nothing :: Maybe a
2022-10-24 09:40:41 +0200 <dminuoso> Or dropping that final `:: Maybe a` too.
2022-10-24 09:42:38 +0200 <nshepperd2> jle`: https://paste.zlkj.in/uploads/e4d73710d9d7e786/fourteen.txt
2022-10-24 09:42:47 +0200danza(~francesco@ca-18-216-127.service.infuturo.it) (Read error: Connection reset by peer)
2022-10-24 09:44:32 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-24 09:45:10 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org)
2022-10-24 09:49:43 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 09:50:52 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 09:51:25 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:3df4:aa3e:43b0:5de8) (Remote host closed the connection)
2022-10-24 09:51:44 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-10-24 09:54:37 +0200kuribas(~user@ptr-17d51emnxyldefiap63.18120a2.ip6.access.telenet.be)
2022-10-24 09:56:42 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
2022-10-24 09:57:12 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 250 seconds)
2022-10-24 09:59:14 +0200danza(~francesco@151.34.187.38)
2022-10-24 10:05:20 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-10-24 10:09:46 +0200jakalx(~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection)
2022-10-24 10:09:47 +0200jakalx(~jakalx@base.jakalx.net)
2022-10-24 10:13:14 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 10:15:50 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 250 seconds)
2022-10-24 10:17:55 +0200titibandit(~titibandi@xdsl-87-78-36-34.nc.de) (Remote host closed the connection)
2022-10-24 10:24:54 +0200fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
2022-10-24 10:25:04 +0200fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
2022-10-24 10:25:18 +0200fserucas_eod(~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
2022-10-24 10:25:25 +0200fserucas_eod(~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
2022-10-24 10:25:40 +0200fserucas_eod(~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
2022-10-24 10:25:51 +0200fserucas_eod(~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
2022-10-24 10:26:06 +0200fserucas|eod(~fserucas|@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
2022-10-24 10:29:37 +0200birdgoose(~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Quit: Konversation terminated!)
2022-10-24 10:29:49 +0200birdgoose(~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe)
2022-10-24 10:30:15 +0200akegalj(~akegalj@93-138-77-86.adsl.net.t-com.hr)
2022-10-24 10:32:28 +0200nschoe(~q@141.101.51.197)
2022-10-24 10:34:42 +0200gmg(~user@user/gehmehgeh)
2022-10-24 10:37:19 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-10-24 10:37:32 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 10:41:28 +0200shapr(~user@net-5-88-239-29.cust.vodafonedsl.it)
2022-10-24 10:46:37 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-10-24 10:51:28 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 10:51:42 +0200thyriaen(~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
2022-10-24 10:51:53 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8908:183b:c2f1:b2ec)
2022-10-24 10:56:05 +0200Guest65(~Guest65@206.119.125.191)
2022-10-24 10:56:08 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8908:183b:c2f1:b2ec) (Ping timeout: 250 seconds)
2022-10-24 10:57:19 +0200random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-10-24 11:00:01 +0200 <dminuoso> RULES are officially magical.
2022-10-24 11:00:06 +0200polykernel[m](~polykerne@user/polykernel) (Quit: You have been kicked for being idle)
2022-10-24 11:09:09 +0200 <lyxia> dminuoso: How about "forall (a :: Int)" ?
2022-10-24 11:10:02 +0200 <lyxia> or using TypeApplications
2022-10-24 11:10:14 +0200 <dminuoso> Well so Ive came up with: https://play-haskell.tomsmeding.com/saved/KqLymSwL
2022-10-24 11:10:28 +0200 <dminuoso> Which I think is the right specification, but it may be that the diagnostic is just a false positive
2022-10-24 11:11:02 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 276 seconds)
2022-10-24 11:11:10 +0200arahael(~arahael@14-202-55-135.tpgi.com.au)
2022-10-24 11:11:12 +0200 <dminuoso> I guess the mere type annotation does not cause GHC to look for whether a NOINLINE exists at the specific instance for (<+>), that would be selected after type unification
2022-10-24 11:13:12 +0200Guest65(~Guest65@206.119.125.191) (Quit: Client closed)
2022-10-24 11:14:04 +0200 <dminuoso> I cant also make heads or tails of this: https://play-haskell.tomsmeding.com/saved/vsW3F1R8
2022-10-24 11:14:18 +0200 <dminuoso> Im beginning to suspect the diagnostic is a very sketchy heuristic
2022-10-24 11:14:35 +0200ubert1(~Thunderbi@91.141.49.34.wireless.dyn.drei.com)
2022-10-24 11:15:21 +0200ubert(~Thunderbi@178.115.71.141.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2022-10-24 11:15:21 +0200ubert1ubert
2022-10-24 11:17:56 +0200 <dminuoso> What I really want is something like:
2022-10-24 11:19:42 +0200 <dminuoso> {-# RULES "flatparse/reassoc-alt" [1] forall a. forall l m r. l (<|> @Maybe) m (<|> @Maybe) r = Nothing #-}
2022-10-24 11:21:34 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 11:26:34 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:d960:d98a:f624:8ef)
2022-10-24 11:26:45 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 272 seconds)
2022-10-24 11:30:04 +0200Guest51(~Guest51@50.47.90.28)
2022-10-24 11:33:06 +0200wonko(~wjc@2a0e:1c80:2:0:45:15:19:130)
2022-10-24 11:36:15 +0200__monty__(~toonn@user/toonn)
2022-10-24 11:37:24 +0200ft(~ft@p3e9bc845.dip0.t-ipconnect.de) (Quit: leaving)
2022-10-24 11:39:29 +0200Guest7606(~aaa@49.207.231.197) (Quit: Leaving)
2022-10-24 11:39:38 +0200acidjnk(~acidjnk@p200300d6e7137a39185a556c4ffa1a9f.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2022-10-24 11:40:08 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 11:47:59 +0200 <lyxia> What's confusing about the diagnostic? if choice gets inlined first, the rule won't apply since there is no choice to match.
2022-10-24 11:51:19 +0200 <dminuoso> Ah, I must specify INLINE[~0] on the instance method
2022-10-24 11:51:27 +0200 <dminuoso> That makes sense, lyxia.
2022-10-24 11:52:24 +0200Guest16(~Guest16@p200300ef971835b5517f7031904fbb79.dip0.t-ipconnect.de) (Quit: Client closed)
2022-10-24 11:54:38 +0200acidjnk(~acidjnk@p200300d6e7137a390804478ada777c16.dip0.t-ipconnect.de)
2022-10-24 11:55:17 +0200 <dminuoso> Or ~1 rather I suppose
2022-10-24 11:56:52 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 12:05:21 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-10-24 12:07:30 +0200nate2(~nate@98.45.169.16)
2022-10-24 12:10:20 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 12:12:47 +0200nate2(~nate@98.45.169.16) (Ping timeout: 276 seconds)
2022-10-24 12:15:05 +0200 <dminuoso> lyxia: Ah but hold on, the rewrite rule starts from phase 1, but choice cant get inlined until phase 2.
2022-10-24 12:19:20 +0200 <dminuoso> I mean yeah, I can set the `choice` inline phase to 2, and the rewrite rule to ~1
2022-10-24 12:19:55 +0200 <dminuoso> But whats slightly absurd, is that not specifying a phase for the rule makes the diagnostic go away too.
2022-10-24 12:20:47 +0200 <dminuoso> That is, why does the diagnostic fire for one but not the other https://play-haskell.tomsmeding.com/saved/sBjYWK7T
2022-10-24 12:20:54 +0200 <dminuoso> In either case choice might get inlined first.
2022-10-24 12:26:58 +0200axeman(~quassel@2a02:8109:a380:78:e069:1455:8f12:523c)
2022-10-24 12:30:20 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 276 seconds)
2022-10-24 12:31:40 +0200shapr`(~user@net-5-88-239-29.cust.vodafonedsl.it)
2022-10-24 12:33:12 +0200shapr(~user@net-5-88-239-29.cust.vodafonedsl.it) (Ping timeout: 250 seconds)
2022-10-24 12:33:20 +0200shapr`shapr
2022-10-24 12:36:03 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds)
2022-10-24 12:38:24 +0200Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Ping timeout: 250 seconds)
2022-10-24 12:41:29 +0200axeman(~quassel@2a02:8109:a380:78:e069:1455:8f12:523c) (Quit: No Ping reply in 180 seconds.)
2022-10-24 12:42:25 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-10-24 12:42:39 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-10-24 12:42:45 +0200axeman(~quassel@2a02:8109:a380:78:47a:28c0:4f2:c5d2)
2022-10-24 12:44:01 +0200biberu(~biberu@user/biberu)
2022-10-24 12:44:30 +0200Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-10-24 12:48:13 +0200gmg(~user@user/gehmehgeh)
2022-10-24 12:49:13 +0200yaroot(~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (Remote host closed the connection)
2022-10-24 12:50:18 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-10-24 12:50:57 +0200yaroot(~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c)
2022-10-24 12:54:48 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
2022-10-24 12:55:43 +0200freeside_(~mengwong@103.252.202.193)
2022-10-24 12:56:41 +0200freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2022-10-24 12:57:02 +0200birdgoose(~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Ping timeout: 250 seconds)
2022-10-24 12:57:35 +0200Kaipei(~Kaiepi@108.175.84.104) (Remote host closed the connection)
2022-10-24 12:57:58 +0200Kaipei(~Kaiepi@108.175.84.104)
2022-10-24 12:59:21 +0200shapr(~user@net-5-88-239-29.cust.vodafonedsl.it) (Remote host closed the connection)
2022-10-24 12:59:29 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Ping timeout: 272 seconds)
2022-10-24 13:00:53 +0200acidjnk(~acidjnk@p200300d6e7137a390804478ada777c16.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2022-10-24 13:06:42 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-24 13:07:59 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-24 13:12:48 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2022-10-24 13:19:07 +0200 <Profpatsch> partitionEithers returns ([left], [right]), and then is usually matched like ([], rights) -> … ; (errs, _) -> errs
2022-10-24 13:19:10 +0200xff0x(~xff0x@2405:6580:b080:900:274f:8858:84b:2f95)
2022-10-24 13:19:36 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 13:19:57 +0200 <Profpatsch> I usually like to go via Validation instead, traversing the [Either left right] with a (Either left right -> Validation (NonEmpty left) right)
2022-10-24 13:20:16 +0200shriekingnoise(~shrieking@186.137.167.202)
2022-10-24 13:20:18 +0200 <Profpatsch> So I get back a `Validation (NonEmpty left) right` and can just match on it
2022-10-24 13:21:00 +0200 <Profpatsch> But I always wonder how efficient using the Semigroup instance of NonEmpty is in this case, first wrapping every error in a NonEmpty.singleton and then (<>) those
2022-10-24 13:22:09 +0200acidjnk(~acidjnk@p200300d6e7137a399c67b611784f46e2.dip0.t-ipconnect.de)
2022-10-24 13:22:32 +0200 <Profpatsch> Intuitively, do I have to worry about performance here?
2022-10-24 13:23:24 +0200 <Profpatsch> I always have to traverse the list afaik, be it via partitionEithers or Validation, because otherwise I can’t figure out if the list of errors is empty
2022-10-24 13:24:22 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 13:27:19 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-10-24 13:28:11 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 276 seconds)
2022-10-24 13:28:46 +0200jakalx(~jakalx@base.jakalx.net)
2022-10-24 13:35:35 +0200axeman(~quassel@2a02:8109:a380:78:47a:28c0:4f2:c5d2) (Ping timeout: 272 seconds)
2022-10-24 13:39:00 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 13:40:49 +0200random-jellyfish(~random-je@user/random-jellyfish)
2022-10-24 13:45:09 +0200danza(~francesco@151.34.187.38) (Read error: Connection reset by peer)
2022-10-24 13:49:37 +0200 <dminuoso> f the non-empty list of error is empty?
2022-10-24 13:51:05 +0200 <dminuoso> Profpatsch: I think you meant `Validation [left]` rather than `Validation (NonEmpty left)`, right?
2022-10-24 13:51:28 +0200Midjak(~Midjak@82.66.147.146)
2022-10-24 13:57:01 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 13:58:43 +0200 <Profpatsch> dminuoso: NonEmpty
2022-10-24 13:59:04 +0200danza(~francesco@151.43.124.110)
2022-10-24 13:59:36 +0200 <dminuoso> That NonEmpty will never be empty.
2022-10-24 13:59:59 +0200 <Profpatsch> because Semigroup e => instance Applicative (Validation e a)
2022-10-24 14:00:05 +0200frost1(~frost@user/frost) (Quit: Client closed)
2022-10-24 14:00:07 +0200 <dminuoso> Yes, but that NonEmpty will never be empty.
2022-10-24 14:00:11 +0200 <Profpatsch> dminuoso: exactly
2022-10-24 14:00:15 +0200 <Profpatsch> that’s the idea
2022-10-24 14:00:17 +0200 <dminuoso> What exactly?
2022-10-24 14:00:21 +0200 <dminuoso> Profpatsch | I always have to traverse the list afaik, be it via partitionEithers or Validation, because otherwise I can’t figure out if the list of errors is empty
2022-10-24 14:00:36 +0200 <dminuoso> Im just telling you, on `Validation (NonEmpty T)` there is no need to figure out iof the list of errors is empty
2022-10-24 14:00:44 +0200 <Profpatsch> dminuoso: Ah, I was referring to the pattern match after partitionEithers
2022-10-24 14:01:02 +0200 <Profpatsch> which is ([], vals) -> … ; (errs, _) -> …;
2022-10-24 14:01:10 +0200 <dminuoso> `(Either left right -> Validation (NonEmpty left) right)` is partial.
2022-10-24 14:01:24 +0200 <dminuoso> Ah hold on!
2022-10-24 14:01:26 +0200 <dminuoso> I see what you mean
2022-10-24 14:01:40 +0200 <Profpatsch> basically it’s “collect all errors \/ success”
2022-10-24 14:01:43 +0200 <dminuoso> Yeah
2022-10-24 14:01:55 +0200 <dminuoso> So I wouldnt worry about performance unless this was measurably in a hotspot.
2022-10-24 14:02:02 +0200 <Profpatsch> but partitionEither’s codomain is “too big”
2022-10-24 14:02:10 +0200 <Profpatsch> it could in theory also have both errors and successes
2022-10-24 14:02:32 +0200 <Profpatsch> the only real difference is one gives you a nonEmpty error list
2022-10-24 14:02:32 +0200 <dminuoso> If constant memory usage and short cut fusion was highly desirable, I would just write a CPS'ed state monad on the spot
2022-10-24 14:02:37 +0200 <dminuoso> And use it instead of Either
2022-10-24 14:02:53 +0200 <dminuoso> (with either a difference list, or a reveresed list of errors as state)
2022-10-24 14:02:59 +0200 <Profpatsch> err, sorry, *neither* errors nor successes
2022-10-24 14:03:03 +0200 <Profpatsch> so ([], [])
2022-10-24 14:03:35 +0200 <Profpatsch> dminuoso: yeah, I guess it’s at most constant overhead
2022-10-24 14:03:41 +0200constxd(~brad@47.55.121.233)
2022-10-24 14:04:13 +0200 <Profpatsch> cause [a] <> ([b] <> [c]) is relatively efficient
2022-10-24 14:04:30 +0200 <Profpatsch> as compared to ([a] <> [b]) <> [c]
2022-10-24 14:04:39 +0200 <dminuoso> THe latter is fine with DList though
2022-10-24 14:04:43 +0200 <Profpatsch> yep
2022-10-24 14:05:01 +0200 <dminuoso> Lately Ive become quite comfortable with continuations, so I would just use that instead
2022-10-24 14:05:51 +0200 <Profpatsch> dminuoso: I mean, there’s a non-empty Seq as well
2022-10-24 14:05:59 +0200wonko(~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 272 seconds)
2022-10-24 14:06:33 +0200 <Profpatsch> which has O(1) on both ends, so you don’t have to worry whether all your stuff is bracketed the right way
2022-10-24 14:06:46 +0200 <Profpatsch> tho even more constant overhead
2022-10-24 14:07:10 +0200 <Profpatsch> I default to non-empty lists right now, might have to benchmark once that becomes an actual problem
2022-10-24 14:09:22 +0200 <Profpatsch> but in general, non-empty lists are a very good pragmatic datastructure, more Haskell code should use them.
2022-10-24 14:09:32 +0200 <dminuoso> Profpatsch: https://gist.github.com/dminuoso/3452157cebdbb2397b914e02f3a17cb4
2022-10-24 14:09:36 +0200 <Profpatsch> removes a bunch of unnecessary branches from most code
2022-10-24 14:09:50 +0200 <dminuoso> Here, gives you a CPS state monad in which you can just collect errors as you go.
2022-10-24 14:10:52 +0200 <Profpatsch> dminuoso: hm, Validation is not in Monad cause there is no mempty in NonEmpty
2022-10-24 14:11:21 +0200 <Profpatsch> the missing mempty for the error list really removes a bunch of non-branches from the state-space
2022-10-24 14:11:22 +0200 <dminuoso> Profpatsch: Yes, but you are producing [Either a b], which means the error-free case exists.
2022-10-24 14:12:01 +0200 <dminuoso> This is just a CPSed `State [s]` with a newtype wrapper (such that you cant accidentally modify the state)
2022-10-24 14:12:12 +0200 <Profpatsch> it’s nice yep
2022-10-24 14:12:13 +0200 <dminuoso> (Or StateT [s] even)
2022-10-24 14:12:29 +0200 <Profpatsch> Is there no CPSed State in base?
2022-10-24 14:12:34 +0200 <Profpatsch> or transformers?
2022-10-24 14:12:48 +0200 <dminuoso> There is not
2022-10-24 14:13:16 +0200 <dminuoso> Ill have to do actual analysis whether it actually matters
2022-10-24 14:13:35 +0200 <Profpatsch> there’s one for WriterT at least https://hackage.haskell.org/package/transformers-0.6.0.4/docs/Control-Monad-Trans-Writer-CPS.html#…
2022-10-24 14:13:41 +0200 <dminuoso> Yeah but thats not really CPSed
2022-10-24 14:13:46 +0200Guest1875(~a@49.207.231.197)
2022-10-24 14:13:48 +0200 <dminuoso> Or not fully anyway
2022-10-24 14:13:49 +0200 <Profpatsch> which is—incidentally—the only one that does not always leak memory :P
2022-10-24 14:13:50 +0200 <dminuoso> newtype WriterT w m a = WriterT { unWriterT :: w -> m (a, w) }
2022-10-24 14:14:01 +0200 <Profpatsch> ah, it’s just StateT
2022-10-24 14:14:06 +0200 <dminuoso> Yup
2022-10-24 14:14:35 +0200freeside_(~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
2022-10-24 14:14:42 +0200 <dminuoso> I mean in most cases either is fine
2022-10-24 14:14:55 +0200 <Profpatsch> dminuoso: do you always pro-actively apply INLINE(ABLE) pragmas to things?
2022-10-24 14:15:02 +0200 <dminuoso> Its just that with the CPS variant you can easily just introduce an error case
2022-10-24 14:15:15 +0200 <dminuoso> Profpatsch: Only for things I *expect* to be inlined, such that I dont have to rely on the mood of the simplifier.
2022-10-24 14:15:17 +0200 <Profpatsch> I’ve been not keen on doing that as long as it’s not performance-crical
2022-10-24 14:16:12 +0200 <Profpatsch> e.g. most of the stuff in https://hackage.haskell.org/package/error-1.0.0.0/docs/src/Data.Error.html should probably have an INLINEABLE
2022-10-24 14:16:20 +0200 <dminuoso> Profpatsch: so continuations allow for introduction of error cases (or multiple modes) which can assist stream fusion in some cases.
2022-10-24 14:16:37 +0200 <dminuoso> if you dont ever care for that, might as well use State/StateT (possibly newtyped)
2022-10-24 14:16:52 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
2022-10-24 14:16:53 +0200biberu\(~biberu@user/biberu)
2022-10-24 14:16:55 +0200 <dminuoso> Profpatsch: INLINEABLE is definitely good for such things, yes.
2022-10-24 14:17:27 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-10-24 14:18:56 +0200 <dminuoso> Profpatsch: Another option by the way, to maintain fatal/non-fatal errors, if you have ST or IO available, is to keep `data Env = Env { fatal :: IORef [FatalError]; nonFatal :: IORef [Error]; warnings :: IORef [Warning]`
2022-10-24 14:19:09 +0200 <dminuoso> This is more imperative, and perhaps sometimes an overlooked option
2022-10-24 14:19:26 +0200 <Profpatsch> dminuoso: Ah, that’s probably the most performant one?
2022-10-24 14:19:32 +0200 <Profpatsch> depends on how many errors happen
2022-10-24 14:19:33 +0200 <dminuoso> Not necessarily
2022-10-24 14:19:49 +0200 <Profpatsch> Also the errors will be in reverse order :P
2022-10-24 14:20:04 +0200 <dminuoso> You can fix that with a DList or Seq
2022-10-24 14:20:11 +0200 <dminuoso> Or just accept to reverse them at the end ocne
2022-10-24 14:20:16 +0200 <dminuoso> (I just accept to reverse them)
2022-10-24 14:20:37 +0200 <dminuoso> Profpatsch: the beauty of this, is that you get write IO heavy code, but not use StateT.
2022-10-24 14:20:41 +0200 <dminuoso> So MonadUnliftIO is available
2022-10-24 14:20:42 +0200 <Profpatsch> I’d probably newtype to ErrorList
2022-10-24 14:20:46 +0200 <dminuoso> (And dont need to rely on MonadBaseControl)
2022-10-24 14:20:47 +0200 <Profpatsch> then I can’t forget
2022-10-24 14:20:55 +0200biberu(~biberu@user/biberu) (Ping timeout: 272 seconds)
2022-10-24 14:20:55 +0200biberu\biberu
2022-10-24 14:20:59 +0200 <Profpatsch> dminuoso: ah, yeah
2022-10-24 14:21:21 +0200 <dminuoso> We use this in our SDN compiler precisely for that reason.
2022-10-24 14:21:29 +0200 <Profpatsch> what’s a SDN?
2022-10-24 14:21:33 +0200 <dminuoso> Networking stuff
2022-10-24 14:21:44 +0200 <Profpatsch> Ah
2022-10-24 14:22:09 +0200 <Profpatsch> yeah my use-case here is mostly parsing, which is as pure as it gets
2022-10-24 14:22:20 +0200 <dminuoso> We even have combinators like >|> that sequence only if there are no errors set
2022-10-24 14:22:31 +0200 <dminuoso> Or combinators that degrade fatal errors into non-fatal errors temporarily
2022-10-24 14:22:38 +0200 <dminuoso> Bunch of tools to get fine flow control
2022-10-24 14:22:40 +0200 <Profpatsch> wow so cool
2022-10-24 14:22:43 +0200 <Profpatsch> I love Haskell
2022-10-24 14:22:47 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 276 seconds)
2022-10-24 14:22:55 +0200 <dminuoso> Well I mean you can do this in any language, honestly
2022-10-24 14:23:40 +0200 <Profpatsch> the “combinators” part is where most other static languages fail with the type inference though
2022-10-24 14:23:42 +0200jonathanx__(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 250 seconds)
2022-10-24 14:23:56 +0200 <dminuoso> Profpatsch: https://gist.github.com/dminuoso/a29d323eb25c8a6d48bdbf982c0892e2
2022-10-24 14:24:05 +0200 <dminuoso> Well *this* does not need type infereence
2022-10-24 14:24:06 +0200jonathanx(~jonathan@c-5eea678b-74736162.cust.telenor.se)
2022-10-24 14:24:18 +0200 <dminuoso> The only cute part is that we can define arbitrary combinators?
2022-10-24 14:24:48 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-24 14:25:02 +0200 <dminuoso> And condemn just inspects the errors, and throws a BailOut exception by the way. :)
2022-10-24 14:25:24 +0200 <Profpatsch> I tend not to go heavy on the operators but yeah
2022-10-24 14:25:34 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 14:26:27 +0200 <Profpatsch> My fav thing currently is newtype FieldParser err from to = FieldParser (from -> Either err to) instance Profunctor, Category, Semigroupoid
2022-10-24 14:26:41 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-24 14:28:06 +0200 <Profpatsch> Might submit it to hackage at one point
2022-10-24 14:28:12 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 14:28:38 +0200 <dminuoso> Meaning I have to depend on semigroupoids to use it? :S
2022-10-24 14:28:50 +0200 <Profpatsch> utf8 >>> unsignedDecimal >>> clamp 1 10 :: FieldParser ByteString Natural
2022-10-24 14:28:54 +0200 <Profpatsch> it’s really not much more than that
2022-10-24 14:29:06 +0200 <Profpatsch> But I think the concept & UX is pretty good
2022-10-24 14:29:15 +0200dminuososhrugs
2022-10-24 14:29:31 +0200 <dminuoso> Im not sure I like Category as a user interface much
2022-10-24 14:29:54 +0200 <dminuoso> Is it really better than >>= here?
2022-10-24 14:30:10 +0200 <Profpatsch> dminuoso: that’s what I’m trying to figure out yeah
2022-10-24 14:30:12 +0200shriekingnoise(~shrieking@186.137.167.202) (Ping timeout: 250 seconds)
2022-10-24 14:30:32 +0200 <Profpatsch> which is why I’ve not pushed it to hackage yeg
2022-10-24 14:30:34 +0200 <Profpatsch> *yet
2022-10-24 14:30:46 +0200shriekingnoise(~shrieking@186.137.167.202)
2022-10-24 14:32:14 +0200 <Profpatsch> it just composes nicely with other things, e.g. jsonString :: FieldParser Json.Value Text or attoparsecText :: Atto.Parser a -> FieldParser Text a
2022-10-24 14:33:37 +0200jonathanx(~jonathan@c-5eea678b-74736162.cust.telenor.se) (Remote host closed the connection)
2022-10-24 14:34:00 +0200axeman(~quassel@2a02:8109:a380:78:bc30:5eb7:62c9:6689)
2022-10-24 14:38:04 +0200vglfr(~vglfr@145.224.100.190)
2022-10-24 14:40:36 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 250 seconds)
2022-10-24 14:43:22 +0200 <dminuoso> And it will make inlining *much* harder
2022-10-24 14:44:17 +0200freeside(~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
2022-10-24 14:45:39 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-10-24 14:45:39 +0200 <Profpatsch> dminuoso: newtypes influence inlining?
2022-10-24 14:45:47 +0200Guest1875(~a@49.207.231.197) (Remote host closed the connection)
2022-10-24 14:45:48 +0200 <Profpatsch> that’s a first
2022-10-24 14:46:34 +0200 <dminuoso> Well no, but each such combinator better be inlineable or inline'd
2022-10-24 14:46:46 +0200 <dminuoso> Though.. for attoparsec I dont think it matters much
2022-10-24 14:47:29 +0200 <Profpatsch> dminuoso: Ah, well, but they all specify an error message in the Left case, so idk if inlining is a good idea
2022-10-24 14:47:47 +0200 <dminuoso> Oh right, there's that Either
2022-10-24 14:47:59 +0200 <dminuoso> *that* will definitely ruin performance in a lot of examples
2022-10-24 14:48:12 +0200 <dminuoso> It will prevent short cut fusion, it will make inlining hard
2022-10-24 14:48:15 +0200 <Profpatsch> yes, the price to pay for good error messages :P
2022-10-24 14:48:21 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 14:49:28 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-10-24 14:49:54 +0200 <[Leary]> I don't think it needs to go on hackage; we have `Kleisli` in base.
2022-10-24 14:49:56 +0200 <Profpatsch> dminuoso: I’m guessing CPSsing would help here as well?
2022-10-24 14:50:11 +0200stackdroid18(14094@user/stackdroid)
2022-10-24 14:50:16 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-10-24 14:50:28 +0200 <dminuoso> Oh right, FieldParser ~ Kleisli Either
2022-10-24 14:50:32 +0200 <dminuoso> Profpatsch: Perhaps.
2022-10-24 14:50:55 +0200 <dminuoso> It will still make inlining more difficult for some types of parsers.
2022-10-24 14:51:04 +0200 <Profpatsch> [Leary]: yes, it’s a specialised thing which solidifies a good practice
2022-10-24 14:51:21 +0200 <Profpatsch> I personally think that’s a useful thing to have
2022-10-24 14:52:26 +0200 <Profpatsch> [Leary]: also Kleisli has a lot of Arrow a => operators for legacy reasons
2022-10-24 14:52:52 +0200 <Profpatsch> well, it’s from Control.Arrow
2022-10-24 14:53:15 +0200 <Profpatsch> Personally, I’m more fond of Bifunctor, Profunctor etc
2022-10-24 14:53:32 +0200 <Profpatsch> But I can understand that some people might prefer Arrows
2022-10-24 14:53:35 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 14:55:19 +0200 <[Leary]> It may be in Control.Arrow, but that doesn't mean you need to use Arrow. It has all the other instances you want, Profunctor etc.
2022-10-24 14:56:14 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
2022-10-24 14:56:15 +0200 <dminuoso> Nobody prefers arrows. :>
2022-10-24 14:56:16 +0200 <[Leary]> I would at least derive all that via Kleisli.
2022-10-24 14:56:33 +0200 <Profpatsch> [Leary]: why though? It makes it harder to understand
2022-10-24 14:56:54 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 14:57:09 +0200 <[Leary]> I don't see how. Most people understand Kleisli, so they'll know what you're doing at a glance.
2022-10-24 14:57:22 +0200 <[Leary]> A new type requires inspection.
2022-10-24 14:57:22 +0200 <dminuoso> "most" depends on your target audience.
2022-10-24 14:57:22 +0200 <Profpatsch> Part of a production codebase is reducing the mental overhead of how things work
2022-10-24 14:57:46 +0200 <Profpatsch> I wouldn’t want to explain to a new hire what Kleisli is if they want to understand FieldParser
2022-10-24 14:57:56 +0200axeman(~quassel@2a02:8109:a380:78:bc30:5eb7:62c9:6689) (Ping timeout: 250 seconds)
2022-10-24 14:58:05 +0200 <dminuoso> Yes, but now you have to explain FieldParser to them
2022-10-24 14:58:14 +0200 <Profpatsch> It’s the classic “Having problem understanding 4 dimensions? Just imagine n dimensions and set n=4!”
2022-10-24 14:58:16 +0200 <dminuoso> And why you have a separate type from Parser (from say attoparseec)
2022-10-24 14:58:32 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 276 seconds)
2022-10-24 14:59:53 +0200 <Profpatsch> dminuoso: one parses horizontally (i.e. from a stream of tokens to a structure), the other vertically (from a bounded value to a smaller bounded value)
2022-10-24 15:00:18 +0200 <Profpatsch> both are mostly orthogonal concepts
2022-10-24 15:00:27 +0200alternateved(~user@staticline-31-183-175-205.toya.net.pl)
2022-10-24 15:00:40 +0200 <dminuoso> My flatparse parser does this by keeping combinators in separate modules. *shrugs*
2022-10-24 15:00:40 +0200Guest16(~Guest16@p200300ef971835175dc5e8e509d3babc.dip0.t-ipconnect.de)
2022-10-24 15:00:53 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-24 15:01:05 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Ping timeout: 272 seconds)
2022-10-24 15:01:10 +0200 <dminuoso> That is, I have a Foo.Lexer module which exposes `Get T` type of things that parse tokens, and Foo.Parser that uses Foo.Lexer combinators to produce high level things
2022-10-24 15:01:18 +0200 <dminuoso> It's all just `Get a`
2022-10-24 15:01:27 +0200freeside(~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
2022-10-24 15:01:50 +0200 <Profpatsch> dminuoso: is flatparse a Haskell version of nom?
2022-10-24 15:01:55 +0200 <dminuoso> Yes
2022-10-24 15:02:02 +0200 <Profpatsch> dminuoso: pretty cool, I might want to use that
2022-10-24 15:02:48 +0200alternateved(~user@staticline-31-183-175-205.toya.net.pl) (Remote host closed the connection)
2022-10-24 15:03:00 +0200 <Profpatsch> dminuoso: Ah, I had never mapped your IRC nick to your github handle before
2022-10-24 15:03:18 +0200 <Profpatsch> dminuoso: were you at Zurihac and/or Munihac?
2022-10-24 15:03:42 +0200 <dminuoso> We met at Zurihac
2022-10-24 15:04:05 +0200 <Profpatsch> Me and my brain are best frens
2022-10-24 15:04:47 +0200 <Profpatsch> dminuoso: the good thing, this way my brain can meet you next Zurihac, for the first time, all over again!
2022-10-24 15:06:09 +0200alternateved(~user@staticline-31-183-175-205.toya.net.pl)
2022-10-24 15:06:13 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-10-24 15:06:30 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 15:12:11 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 276 seconds)
2022-10-24 15:12:47 +0200Guest51(~Guest51@50.47.90.28) (Quit: Client closed)
2022-10-24 15:13:22 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Read error: Connection timed out)
2022-10-24 15:15:36 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 15:16:01 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:d960:d98a:f624:8ef) (Read error: Connection reset by peer)
2022-10-24 15:16:11 +0200sameer(~sameer@2409:4070:2d3d:53f6::c049:8101)
2022-10-24 15:18:19 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-10-24 15:23:51 +0200Guest16(~Guest16@p200300ef971835175dc5e8e509d3babc.dip0.t-ipconnect.de) (Quit: Client closed)
2022-10-24 15:24:03 +0200 <tdammers> heh... I, for one, am not always on speaking terms with my brain :D
2022-10-24 15:24:22 +0200 <merijn> tdammers: facts
2022-10-24 15:24:30 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
2022-10-24 15:24:45 +0200 <merijn> Hell, most of my body tends to occasionally not be on speaking terms :p
2022-10-24 15:25:19 +0200geekosaurresembles that one
2022-10-24 15:26:35 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-10-24 15:28:09 +0200beteigeuze1(~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73)
2022-10-24 15:29:44 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 276 seconds)
2022-10-24 15:29:44 +0200beteigeuze1beteigeuze
2022-10-24 15:31:06 +0200chomwitt(~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
2022-10-24 15:31:30 +0200chomwitt(~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1)
2022-10-24 15:32:17 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-10-24 15:32:42 +0200freeside(~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
2022-10-24 15:32:45 +0200ystael(~ystael@user/ystael)
2022-10-24 15:33:38 +0200acidjnk(~acidjnk@p200300d6e7137a399c67b611784f46e2.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2022-10-24 15:34:39 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 15:34:43 +0200mrvdb(~mrvdb@2001:19f0:5000:8582:5400:ff:fe07:3df5) (Quit: ZNC 1.8.2 - https://znc.in)
2022-10-24 15:35:30 +0200mrvdb(~mrvdb@185.92.221.186)
2022-10-24 15:35:57 +0200 <Profpatsch> Okay, weird error: I changed some -> IO a to Applicative m => … -> m a
2022-10-24 15:36:09 +0200 <Profpatsch> And suddenly a TypeApplication does not type check anymore
2022-10-24 15:36:59 +0200 <Profpatsch> foo @Bar a b <- “Cannot apply expression of type a0 -> b -> a0 to visible type argument Bar”
2022-10-24 15:37:22 +0200 <Profpatsch> Is this some weird interaction between the ApplicativeDo desugaring and TypeApplications?
2022-10-24 15:37:36 +0200 <Profpatsch> the definition of `foo` is in a let-block above the code that fails
2022-10-24 15:37:45 +0200 <Profpatsch> I will try moving it into a where clause, maybe this helps
2022-10-24 15:38:15 +0200 <Profpatsch> Removing the type application seems to work, but that’s bad for code readability
2022-10-24 15:39:06 +0200 <lortabac> are there other type variables in the signature before 'm'?
2022-10-24 15:39:15 +0200 <Profpatsch> oh huh moving it to the where seems to work
2022-10-24 15:39:28 +0200 <Profpatsch> lortabac: no, just the m
2022-10-24 15:39:46 +0200 <Profpatsch> I’m a bit too lazy to produce a minimal example right now
2022-10-24 15:40:13 +0200 <Profpatsch> It might interact with the enabled extensions in a weird way
2022-10-24 15:40:20 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-10-24 15:41:06 +0200 <Profpatsch> I guess GHC removes the `a` from the definition of `foo` before it actually does the TypeApplication, so it’s gone at that point
2022-10-24 15:43:07 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 15:45:35 +0200 <Profpatsch> funny, interspersing a `let` between the last _ <- ma and the final `pure $ …` will also switch from Applicative to Monad
2022-10-24 15:45:40 +0200random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 244 seconds)
2022-10-24 15:45:43 +0200 <Profpatsch> ApplicativeDo is really unstable holy crap
2022-10-24 15:47:22 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection)
2022-10-24 15:47:34 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 15:48:17 +0200 <Profpatsch> Ah, the algorithm is O(n^2) well
2022-10-24 15:51:57 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds)
2022-10-24 15:52:32 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-10-24 15:52:32 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-10-24 15:52:32 +0200wroathe(~wroathe@user/wroathe)
2022-10-24 15:56:21 +0200BananaKing69441(~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 15:56:38 +0200BananaKing69441(~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Client Quit)
2022-10-24 15:57:04 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) ()
2022-10-24 15:57:20 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 15:57:40 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 15:58:16 +0200j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 15:58:56 +0200BananaKing694j4cc3b_
2022-10-24 15:59:29 +0200j4cc3b_(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Client Quit)
2022-10-24 16:01:08 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 16:02:29 +0200 <kuribas> Profpatsch: maybe the `m` is not the first type argument of foo?
2022-10-24 16:02:32 +0200 <kuribas> now
2022-10-24 16:03:57 +0200akegalj(~akegalj@93-138-77-86.adsl.net.t-com.hr) (Quit: leaving)
2022-10-24 16:04:33 +0200 <Profpatsch> kuribas: I had foo defined as let foo :: Read a -> a -> Maybe Text -> a
2022-10-24 16:04:39 +0200 <Profpatsch> So m did not even appear in foo’s signature
2022-10-24 16:04:48 +0200 <Profpatsch> I wanted to instantiate the `a`
2022-10-24 16:05:30 +0200BananaKing694(~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection)
2022-10-24 16:05:31 +0200 <Profpatsch> Which is why I’m confused why the `a` suddenly disappears when you switch the m of the do-block outside from IO to Applicative m
2022-10-24 16:05:43 +0200 <Profpatsch> and switch on ApplicativeDo
2022-10-24 16:05:54 +0200 <geekosaur> is one of those ->s supposed to be a =>?
2022-10-24 16:05:59 +0200 <Profpatsch> geekosaur: yes
2022-10-24 16:06:02 +0200 <Profpatsch> the first
2022-10-24 16:06:29 +0200 <Profpatsch> I thought maybe ScopedTypeVariables might fix it, but it doesn’t look like it does
2022-10-24 16:06:32 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2022-10-24 16:06:40 +0200 <Profpatsch> moving the definition of foo from let to a where fixes it
2022-10-24 16:06:48 +0200 <Profpatsch> I guess I can live with that
2022-10-24 16:07:19 +0200 <geekosaur> istr that applicativedo has issues whth lets
2022-10-24 16:07:33 +0200 <Profpatsch> geekosaur: is that a well-known fact?
2022-10-24 16:07:58 +0200 <geekosaur> it's well known that it has lots of oddities and failure modes that "ought to" work
2022-10-24 16:08:02 +0200 <Profpatsch> I’d prefer a separate `ado` tbh
2022-10-24 16:08:07 +0200 <geekosaur> it's really fragile
2022-10-24 16:08:09 +0200 <Profpatsch> or something along those lines
2022-10-24 16:08:42 +0200 <tdammers> I'm still pretty convinced that there's no fundamental reason why applicative do couldn't work, but the problem seems to be that it's an afterthought
2022-10-24 16:08:48 +0200Sgeo(~Sgeo@user/sgeo)
2022-10-24 16:09:00 +0200nate2(~nate@98.45.169.16)
2022-10-24 16:09:29 +0200 <kuribas> Profpatsch: ApplicativeDo is quit buggy.
2022-10-24 16:09:39 +0200 <Profpatsch> Hrm, maybe I’m gonna do Overloaded-Do and have a module for Applicative
2022-10-24 16:09:42 +0200 <Profpatsch> Applicative.do
2022-10-24 16:09:45 +0200 <Profpatsch> should work, no?
2022-10-24 16:10:19 +0200 <kuribas> it also doesn't handle some obvious stuff, like let bindings.
2022-10-24 16:10:36 +0200 <kuribas> Still, it's pretty handy with records.
2022-10-24 16:11:07 +0200 <Profpatsch> Ah no, QualifiedDo just converts <- to >>=
2022-10-24 16:12:31 +0200 <Profpatsch> You can always “prove” that it’s not Monad by returning `Applicative m => … -> m` and passing all required functions in `m` as arguments
2022-10-24 16:12:42 +0200 <Profpatsch> I think that’s okay-ish
2022-10-24 16:13:57 +0200 <Profpatsch> although … hm … that might not work with mtl-style class functions since they always depend on Monad
2022-10-24 16:14:14 +0200 <Profpatsch> nvm it does
2022-10-24 16:14:26 +0200j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Quit: Client closed)
2022-10-24 16:14:35 +0200nate2(~nate@98.45.169.16) (Ping timeout: 276 seconds)
2022-10-24 16:14:37 +0200j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 16:18:04 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-24 16:19:35 +0200LukeHoersten_(~LukeHoers@user/lukehoersten)
2022-10-24 16:20:47 +0200LukeHoersten__(~LukeHoers@user/lukehoersten)
2022-10-24 16:21:06 +0200glguy(~glguy@libera/staff-emeritus/glguy) (Ping timeout: 260 seconds)
2022-10-24 16:23:47 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 272 seconds)
2022-10-24 16:24:10 +0200LukeHoersten_(~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds)
2022-10-24 16:27:19 +0200Guest51(~Guest51@50.47.90.28)
2022-10-24 16:28:33 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-24 16:30:31 +0200 <kuribas> :t ask
2022-10-24 16:30:32 +0200 <lambdabot> MonadReader r m => m r
2022-10-24 16:31:32 +0200LukeHoersten__(~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds)
2022-10-24 16:31:52 +0200 <kuribas> Profpatsch: why do you need to prove it's not a Monad? A Monad is an Applicative too :)
2022-10-24 16:32:46 +0200Guest51(~Guest51@50.47.90.28) (Quit: Client closed)
2022-10-24 16:37:56 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-10-24 16:40:08 +0200rembo10(~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-10-24 16:40:56 +0200jonathanx(~jonathan@94.234.103.139)
2022-10-24 16:42:21 +0200rembo10(~rembo10@main.remulis.com)
2022-10-24 16:43:27 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-10-24 16:43:29 +0200glguy(~glguy@libera/staff-emeritus/glguy)
2022-10-24 16:44:18 +0200alternateved(~user@staticline-31-183-175-205.toya.net.pl) (Remote host closed the connection)
2022-10-24 16:46:50 +0200freeside(~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
2022-10-24 16:47:05 +0200jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-24 16:48:33 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-10-24 16:49:03 +0200edrx(~Eduardo@2804:56c:d2d8:400:7ffb:83a1:5d67:a122)
2022-10-24 16:49:44 +0200jonathanx(~jonathan@94.234.103.139) (Ping timeout: 250 seconds)
2022-10-24 16:50:43 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: Textual IRC Client: www.textualapp.com)
2022-10-24 16:51:55 +0200sameer(~sameer@2409:4070:2d3d:53f6::c049:8101) (Ping timeout: 272 seconds)
2022-10-24 16:52:50 +0200sameer(~sameer@2409:4070:6e10:74c0::81c8:d301)
2022-10-24 17:03:43 +0200 <edrx> hi all... this is slightly off-topic, but right now this channel is the only in which I think I can an answer in less than one hour... =/ I'm trying to learn Tikz - mostly to draw string diagrams - and I'm mostly trying to translate its high-level constructs into lower-level ones...
2022-10-24 17:04:52 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 17:05:24 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 17:06:19 +0200 <edrx> but 1) I don't know if the two notions of "rectangle" below can be integrated, and how... and 2) I don't know any chats in which I can ask those questions. Any ideas?
2022-10-24 17:07:03 +0200 <edrx> http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf#page=34
2022-10-24 17:07:11 +0200 <edrx> http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf#page=785
2022-10-24 17:08:50 +0200Guest51(~Guest51@50.47.90.28)
2022-10-24 17:11:38 +0200axeman(~quassel@2a02:8109:a380:78:7810:2127:b425:57c7)
2022-10-24 17:13:05 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 276 seconds)
2022-10-24 17:15:38 +0200Guest2956(~Guest29@pool-108-54-69-191.nycmny.fios.verizon.net)
2022-10-24 17:15:55 +0200 <Guest2956> why is this outputting an error?
2022-10-24 17:16:00 +0200 <Guest2956> *Main> mapMaybe (+2) [Just 10, Nothing]
2022-10-24 17:16:01 +0200 <Guest2956> <interactive>:15:1: error:
2022-10-24 17:16:01 +0200 <Guest2956>     • Non type-variable argument in the constraint: Num (Maybe b)
2022-10-24 17:16:02 +0200 <Guest2956>       (Use FlexibleContexts to permit this)
2022-10-24 17:16:02 +0200 <Guest2956>     • When checking the inferred type
2022-10-24 17:16:03 +0200 <Guest2956>         it :: forall b. (Num b, Num (Maybe b)) => [b]
2022-10-24 17:16:50 +0200 <merijn> :t mapMaybe
2022-10-24 17:16:51 +0200 <lambdabot> (a -> Maybe b) -> [a] -> [b]
2022-10-24 17:17:08 +0200 <merijn> (+2) does not return a Maybe
2022-10-24 17:17:30 +0200 <merijn> Or rather
2022-10-24 17:17:37 +0200 <geekosaur> I think you have the sense of mapMaybe reversed
2022-10-24 17:17:38 +0200 <merijn> :t (+2)
2022-10-24 17:17:39 +0200 <lambdabot> Num a => a -> a
2022-10-24 17:18:09 +0200 <merijn> It's interpreting "(+2)" as having type "Num (Maybe b) => Maybe b -> Maybe b"
2022-10-24 17:18:46 +0200Guest51(~Guest51@50.47.90.28) (Quit: Client closed)
2022-10-24 17:19:03 +0200Everything(~Everythin@static.208.206.21.65.clients.your-server.de)
2022-10-24 17:22:53 +0200 <Guest2956> can you give an example of a correct function using mapMaybe?
2022-10-24 17:22:56 +0200mvk(~mvk@2607:fea8:5ce3:8500::a80f)
2022-10-24 17:26:32 +0200 <ridcully> Data.Maybe.mapMaybe Data.Maybe.listToMaybe [[], [1]]
2022-10-24 17:26:33 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 17:28:47 +0200juri_(~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 260 seconds)
2022-10-24 17:29:00 +0200j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds)
2022-10-24 17:30:03 +0200motherfsck(~motherfsc@user/motherfsck)
2022-10-24 17:30:04 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:ad98:9d00:b84f:455) (Quit: WeeChat 2.8)
2022-10-24 17:32:11 +0200Tuplanolla(~Tuplanoll@91-159-69-240.elisa-laajakaista.fi)
2022-10-24 17:33:02 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-10-24 17:33:30 +0200axeman(~quassel@2a02:8109:a380:78:7810:2127:b425:57c7) (Ping timeout: 250 seconds)
2022-10-24 17:37:46 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-10-24 17:40:27 +0200 <merijn> > let x `divBy` y | y == 0 = Nothing; | otherwise = Just (x `div` y) in 5 `divBy` 2
2022-10-24 17:40:37 +0200 <lambdabot> <hint>:1:37: error: parse error on input ‘|’
2022-10-24 17:40:43 +0200 <merijn> bah
2022-10-24 17:40:45 +0200 <merijn> ok, I don't know how to do guards to an easy example :p
2022-10-24 17:44:02 +0200boxscape_(~boxscape_@81.191.27.107)
2022-10-24 17:44:21 +0200jespada(~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2022-10-24 17:46:04 +0200danza(~francesco@151.43.124.110) (Ping timeout: 250 seconds)
2022-10-24 17:46:46 +0200jakalx(~jakalx@base.jakalx.net)
2022-10-24 17:48:11 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-10-24 17:49:15 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7)
2022-10-24 17:49:36 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-24 17:49:40 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
2022-10-24 17:50:26 +0200nate2(~nate@98.45.169.16)
2022-10-24 17:51:58 +0200wonko(~wjc@2a0e:1c80:2:0:45:15:19:130)
2022-10-24 17:52:02 +0200 <geekosaur> drop the semicolon
2022-10-24 17:52:15 +0200 <geekosaur> > let x `divBy` y | y == 0 = Nothing | otherwise = Just (x `div` y) in 5 `divBy` 2
2022-10-24 17:52:17 +0200 <lambdabot> Just 2
2022-10-24 17:53:23 +0200 <Profpatsch> kuribas: because I can do more with an Applicative than what I can do with a Monad
2022-10-24 17:56:28 +0200darkstardevx(~darkstard@50.126.124.156) (Ping timeout: 250 seconds)
2022-10-24 17:57:20 +0200merijn(~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-10-24 17:58:53 +0200danza(~francesco@rm-19-18-125.service.infuturo.it)
2022-10-24 17:59:30 +0200juri_(~juri@79.140.114.58)
2022-10-24 18:06:11 +0200edrx(~Eduardo@2804:56c:d2d8:400:7ffb:83a1:5d67:a122) (Killed buffer)
2022-10-24 18:07:00 +0200merijn(~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl)
2022-10-24 18:07:18 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-10-24 18:10:11 +0200freeside(~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
2022-10-24 18:10:17 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 276 seconds)
2022-10-24 18:11:09 +0200erisco_(~erisco@d24-141-66-165.home.cgocable.net)
2022-10-24 18:11:42 +0200econo(uid147250@user/econo)
2022-10-24 18:13:28 +0200erisco(~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 268 seconds)
2022-10-24 18:13:28 +0200erisco_erisco
2022-10-24 18:14:56 +0200j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 18:18:41 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 18:23:28 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 18:23:37 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 18:24:46 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 18:31:47 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 18:34:27 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 18:36:56 +0200wonko(~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 276 seconds)
2022-10-24 18:38:23 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection)
2022-10-24 18:39:31 +0200acidjnk(~acidjnk@p54ad5adb.dip0.t-ipconnect.de)
2022-10-24 18:40:06 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
2022-10-24 18:41:04 +0200cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107)
2022-10-24 18:41:07 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-24 18:43:37 +0200j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Quit: Client closed)
2022-10-24 18:44:01 +0200siraben(~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:01 +0200ormaaj(~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:01 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:01 +0200RosarioPulella[m(~rosariopu@2001:470:69fc:105::a57) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:01 +0200ongy[m](~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:01 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:01 +0200mekeor[m](~mekeormat@2001:470:69fc:105::17e4) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:01 +0200peddie(~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200famubu[m](~famubumat@2001:470:69fc:105::1081) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200sm(~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200Tisoxin(~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200vladan[m](~vladanmat@2001:470:69fc:105::2:24df) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200jinsun_(~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200nicmollel[m](~nicmollel@2001:470:69fc:105::1:feeb) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200aviladev[m](~aviladevm@2001:470:69fc:105::1:cbc7) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200cp1313[m](~cp1313mat@2001:470:69fc:105::2:9293) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200loosh[m](~looshchat@2001:470:69fc:105::2:5ddd) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200SeanKing[m](~seankingm@2001:470:69fc:105::cf9c) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200Deide(~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200chreekat(~chreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200geekosaur[m](~geekosaur@xmonad/geekosaur) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200sektor[m](~sektor@2001:470:69fc:105::2:3f60) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200fr33domlover[m](~fr33domlo@2001:470:69fc:105::1:3bb6) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200lawt(~lawtonmat@2001:470:69fc:105::2:97b8) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200BB[m](~cashmagem@2001:470:69fc:105::f6dc) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200jmcantrell(~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200schuelermine[m](~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:02 +0200olivermead[m](~olivermea@2001:470:69fc:105::2:4289) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200SridharRatnakuma(~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200romes[m](~romesmatr@2001:470:69fc:105::2:1660) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200aaronv(~aaronv@user/aaronv) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200baaash[m](~baaashmat@2001:470:69fc:105::2:1e90) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200jz99[m](~jz99matri@2001:470:69fc:105::1:d5f1) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200elvishjerricco(~elvishjer@2001:470:69fc:105::6172) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200foghorn(~foghorn@user/foghorn) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200ozkutuk[m](~ozkutuk@2001:470:69fc:105::2:9af8) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200drsooch[m](~drsoochma@2001:470:69fc:105::1:c8a1) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200july541[m](~july541ma@2001:470:69fc:105::1:e416) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200expipiplus1(~expipiplu@2001:470:69fc:105::d713) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200sibnull[m](~sibnullma@2001:470:69fc:105::1:1291) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200silky[m](~noonvande@2001:470:69fc:105::2:943c) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200rockymarine[m](~rockymari@2001:470:69fc:105::2:9a0c) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200CeNiEi[m](~cenieimat@2001:470:69fc:105::1:894c) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200cafkafk[m](~cafkafkma@2001:470:69fc:105::1:cea8) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200bb010g(~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200jbggs[m](~jbggsmatr@2001:470:69fc:105::2:995f) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200M3g-mentok[m](~M3g-mento@2001:470:69fc:105::2:9a49) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:03 +0200weeezes[m](~weeezesma@2001:470:69fc:105::1:da65) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:04 +0200Neosake[m](~neosakema@2001:470:69fc:105::2:989e) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:04 +0200afotgkmnzj7asv3r(~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:04 +0200Clinton[m](~clintonme@2001:470:69fc:105::2:31d4) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:05 +0200disco-dave[m](~disco-dav@2001:470:69fc:105::2:1892) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:05 +0200JensPetersen[m](~juhp@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:05 +0200kiri1606[m](~kiri1606m@2001:470:69fc:105::2:8ec9) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:05 +0200aidy(~aidy@2001:470:69fc:105::c7b4) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:05 +0200JonathanWatson[m(~jjwmatrix@2001:470:69fc:105::2:a544) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:13 +0200mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:13 +0200psydroid(~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:13 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:14 +0200Matthew|m(~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:14 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:14 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:14 +0200MangoIV[m](~mangoivma@2001:470:69fc:105::2:8417) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:14 +0200mesaoptimizer2(~mesaoptim@user/PapuaHardyNet) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:14 +0200kadoban(~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:18 +0200RowanG[m](~rowang077@2001:470:69fc:105::1:ca9f) (Quit: Bridge terminating on SIGTERM)
2022-10-24 18:44:22 +0200 <cheater> what's your favourite clean way to do this without writing your own recursion? myLoop acc = do { ended <- ioIsEnded; if ended { putStrLn "ended" } else { x <- myIO; let acc = pureFun acc x; myLoop acc; }
2022-10-24 18:45:17 +0200danza(~francesco@rm-19-18-125.service.infuturo.it) (Read error: Connection reset by peer)
2022-10-24 18:45:29 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 18:45:41 +0200danza(~francesco@rm-19-18-125.service.infuturo.it)
2022-10-24 18:45:41 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-10-24 18:46:52 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-24 18:48:16 +0200 <Rembane> cheater: Perhaps using whileM? https://hackage.haskell.org/package/monad-loops-0.4.3/docs/Control-Monad-Loops.html
2022-10-24 18:48:24 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2022-10-24 18:48:36 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-24 18:48:42 +0200nate2(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-10-24 18:49:28 +0200 <cheater> i'm just wondering what everyone uses since it's a good idea to ask about simple stuff like that
2022-10-24 18:49:30 +0200peddie(~peddie@2001:470:69fc:105::25d)
2022-10-24 18:49:30 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2022-10-24 18:49:30 +0200famubu[m](~famubumat@2001:470:69fc:105::1081)
2022-10-24 18:49:30 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2022-10-24 18:49:30 +0200sm(~sm@plaintextaccounting/sm)
2022-10-24 18:49:42 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2022-10-24 18:49:42 +0200ongy[m](~ongymatri@2001:470:69fc:105::5018)
2022-10-24 18:49:56 +0200kiri1606[m](~kiri1606m@2001:470:69fc:105::2:8ec9)
2022-10-24 18:49:56 +0200siraben(~siraben@user/siraben)
2022-10-24 18:50:08 +0200july541[m](~july541ma@2001:470:69fc:105::1:e416)
2022-10-24 18:50:09 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2022-10-24 18:50:21 +0200SridharRatnakuma(~sridmatri@2001:470:69fc:105::1c2)
2022-10-24 18:50:22 +0200chreekat(~chreekat@2001:470:69fc:105::16b5)
2022-10-24 18:50:23 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection)
2022-10-24 18:50:28 +0200 <cheater> whileM keeps a partial list around
2022-10-24 18:50:43 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 272 seconds)
2022-10-24 18:50:49 +0200 <cheater> but i guess i actually do need to keep one hmm
2022-10-24 18:50:56 +0200sibnull[m](~sibnullma@2001:470:69fc:105::1:1291)
2022-10-24 18:51:10 +0200expipiplus1(~expipiplu@2001:470:69fc:105::d713)
2022-10-24 18:51:22 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2022-10-24 18:51:22 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2022-10-24 18:51:37 +0200bb010g(~bb010g@2001:470:69fc:105::9a5)
2022-10-24 18:51:37 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2022-10-24 18:51:37 +0200jmcantrell(~jmcantrel@user/jmcantrell)
2022-10-24 18:51:38 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2022-10-24 18:51:38 +0200jinsun_(~jinsun@user/jinsun)
2022-10-24 18:51:38 +0200romes[m](~romesmatr@2001:470:69fc:105::2:1660)
2022-10-24 18:51:38 +0200JensPetersen[m](~juhp@2001:470:69fc:105::6e9)
2022-10-24 18:51:38 +0200ormaaj(~ormaaj@user/ormaaj)
2022-10-24 18:51:38 +0200cp1313[m](~cp1313mat@2001:470:69fc:105::2:9293)
2022-10-24 18:51:38 +0200kadoban(~kadoban@user/kadoban)
2022-10-24 18:51:38 +0200BB[m](~cashmagem@2001:470:69fc:105::f6dc)
2022-10-24 18:51:39 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac)
2022-10-24 18:51:53 +0200silky[m](~noonvande@2001:470:69fc:105::2:943c)
2022-10-24 18:51:54 +0200nicmollel[m](~nicmollel@2001:470:69fc:105::1:feeb)
2022-10-24 18:51:54 +0200RosarioPulella[m(~rosariopu@2001:470:69fc:105::a57)
2022-10-24 18:51:54 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2022-10-24 18:51:54 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729)
2022-10-24 18:51:54 +0200Matthew|m(~arathorn@2001:470:69fc:105::1f)
2022-10-24 18:51:54 +0200lawt(~lawtonmat@2001:470:69fc:105::2:97b8)
2022-10-24 18:51:54 +0200RowanG[m](~rowang077@2001:470:69fc:105::1:ca9f)
2022-10-24 18:51:54 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0)
2022-10-24 18:51:54 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2022-10-24 18:52:06 +0200CeNiEi[m](~cenieimat@2001:470:69fc:105::1:894c)
2022-10-24 18:52:08 +0200drsooch[m](~drsoochma@2001:470:69fc:105::1:c8a1)
2022-10-24 18:52:08 +0200olivermead[m](~olivermea@2001:470:69fc:105::2:4289)
2022-10-24 18:52:21 +0200Neosake[m](~neosakema@2001:470:69fc:105::2:989e)
2022-10-24 18:52:34 +0200aidy(~aidy@2001:470:69fc:105::c7b4)
2022-10-24 18:52:46 +0200jbggs[m](~jbggsmatr@2001:470:69fc:105::2:995f)
2022-10-24 18:52:58 +0200rockymarine[m](~rockymari@2001:470:69fc:105::2:9a0c)
2022-10-24 18:52:58 +0200loosh[m](~looshchat@2001:470:69fc:105::2:5ddd)
2022-10-24 18:53:10 +0200M3g-mentok[m](~M3g-mento@2001:470:69fc:105::2:9a49)
2022-10-24 18:53:24 +0200disco-dave[m](~disco-dav@2001:470:69fc:105::2:1892)
2022-10-24 18:53:25 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2022-10-24 18:53:25 +0200Tisoxin(~ikosit@user/ikosit)
2022-10-24 18:53:25 +0200ozkutuk[m](~ozkutuk@2001:470:69fc:105::2:9af8)
2022-10-24 18:53:25 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2022-10-24 18:53:26 +0200foghorn(~foghorn@user/foghorn)
2022-10-24 18:53:26 +0200unclechu(~unclechu@2001:470:69fc:105::354)
2022-10-24 18:53:26 +0200baaash[m](~baaashmat@2001:470:69fc:105::2:1e90)
2022-10-24 18:53:26 +0200mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d)
2022-10-24 18:53:26 +0200sektor[m](~sektor@2001:470:69fc:105::2:3f60)
2022-10-24 18:53:38 +0200Clinton[m](~clintonme@2001:470:69fc:105::2:31d4)
2022-10-24 18:53:38 +0200mekeor[m](~mekeormat@2001:470:69fc:105::17e4)
2022-10-24 18:53:38 +0200vladan[m](~vladanmat@2001:470:69fc:105::2:24df)
2022-10-24 18:53:38 +0200elvishjerricco(~elvishjer@2001:470:69fc:105::6172)
2022-10-24 18:53:39 +0200geekosaur[m](~geekosaur@xmonad/geekosaur)
2022-10-24 18:53:39 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d)
2022-10-24 18:53:39 +0200jz99[m](~jz99matri@2001:470:69fc:105::1:d5f1)
2022-10-24 18:53:39 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0)
2022-10-24 18:53:39 +0200jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab)
2022-10-24 18:53:39 +0200aviladev[m](~aviladevm@2001:470:69fc:105::1:cbc7)
2022-10-24 18:53:39 +0200Deide(~deide@user/deide)
2022-10-24 18:53:39 +0200fr33domlover[m](~fr33domlo@2001:470:69fc:105::1:3bb6)
2022-10-24 18:53:54 +0200afotgkmnzj7asv3r(~afotgkmnz@2001:470:69fc:105::c24b)
2022-10-24 18:53:55 +0200cafkafk[m](~cafkafkma@2001:470:69fc:105::1:cea8)
2022-10-24 18:53:56 +0200VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad)
2022-10-24 18:54:10 +0200juri_(~juri@79.140.114.58) (Read error: Connection reset by peer)
2022-10-24 18:54:31 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f)
2022-10-24 18:54:34 +0200SeanKing[m](~seankingm@2001:470:69fc:105::cf9c)
2022-10-24 18:54:35 +0200aaronv(~aaronv@user/aaronv)
2022-10-24 18:54:35 +0200MangoIV[m](~mangoivma@2001:470:69fc:105::2:8417)
2022-10-24 18:54:35 +0200psydroid(~psydroid@user/psydroid)
2022-10-24 18:54:35 +0200schuelermine[m](~schuelerm@user/schuelermine)
2022-10-24 18:54:35 +0200mesaoptimizer2(~mesaoptim@user/PapuaHardyNet)
2022-10-24 18:54:47 +0200JonathanWatson[m(~jjwmatrix@2001:470:69fc:105::2:a544)
2022-10-24 18:54:59 +0200weeezes[m](~weeezesma@2001:470:69fc:105::1:da65)
2022-10-24 18:57:57 +0200juri_(~juri@79.140.114.58)
2022-10-24 19:00:08 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-10-24 19:01:01 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-24 19:01:52 +0200Guest2956(~Guest29@pool-108-54-69-191.nycmny.fios.verizon.net) (Quit: Client closed)
2022-10-24 19:02:36 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
2022-10-24 19:03:10 +0200juri_(~juri@79.140.114.58) (Ping timeout: 252 seconds)
2022-10-24 19:03:12 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:f433:1323:4e67:752d)
2022-10-24 19:04:04 +0200j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-10-24 19:04:21 +0200rockystone(~rocky@user/rockymarine)
2022-10-24 19:04:52 +0200juri_(~juri@84-19-175-179.pool.ovpn.com)
2022-10-24 19:06:50 +0200rockystone(~rocky@user/rockymarine) (Read error: Connection reset by peer)
2022-10-24 19:07:32 +0200nschoe(~q@141.101.51.197) (Ping timeout: 250 seconds)
2022-10-24 19:08:14 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-24 19:09:27 +0200jakalx(~jakalx@base.jakalx.net)
2022-10-24 19:10:08 +0200boxscape_(~boxscape_@81.191.27.107) (Remote host closed the connection)
2022-10-24 19:10:11 +0200zer0bitz_(~zer0bitz@2001:2003:f748:2000:48a6:74bf:500d:5c90)
2022-10-24 19:10:24 +0200boxscape_(~boxscape_@81.191.27.107)
2022-10-24 19:11:37 +0200littlefinger(~littlefin@pool-100-15-237-121.washdc.fios.verizon.net)
2022-10-24 19:12:19 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:f433:1323:4e67:752d) (Ping timeout: 255 seconds)
2022-10-24 19:12:45 +0200kuribas(~user@ptr-17d51emnxyldefiap63.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
2022-10-24 19:13:15 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-10-24 19:15:00 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: Reconnecting)
2022-10-24 19:15:16 +0200oak-(~oak-@2001:470:69fc:105::fcd)
2022-10-24 19:17:05 +0200darkstardevx(~darkstard@50.126.124.156)
2022-10-24 19:17:36 +0200kimjetwav(~user@2607:fea8:235e:b600:b115:f56:940e:2252)
2022-10-24 19:22:45 +0200ghoulpine(xfnw@tilde.team) (Quit: Connection reset by purr)
2022-10-24 19:24:14 +0200boxscape_(~boxscape_@81.191.27.107) (Remote host closed the connection)
2022-10-24 19:24:31 +0200boxscape_(~boxscape_@81.191.27.107)
2022-10-24 19:25:44 +0200merijn(~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-10-24 19:26:20 +0200beteigeuze(~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73) (Ping timeout: 276 seconds)
2022-10-24 19:30:07 +0200freeside(~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
2022-10-24 19:30:29 +0200axeman(~quassel@2a02:8109:a380:78:dcd3:d662:889b:778e)
2022-10-24 19:34:04 +0200zebrag(~chris@user/zebrag)
2022-10-24 19:35:36 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-10-24 19:35:37 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-24 19:36:42 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-10-24 19:36:55 +0200boxscape_(~boxscape_@81.191.27.107) (Remote host closed the connection)
2022-10-24 19:37:12 +0200boxscape_(~boxscape_@81.191.27.107)
2022-10-24 19:37:29 +0200slack1256(~slack1256@186.11.46.162)
2022-10-24 19:37:59 +0200zer0bitz_(~zer0bitz@2001:2003:f748:2000:48a6:74bf:500d:5c90) (Read error: Connection reset by peer)
2022-10-24 19:40:54 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 250 seconds)
2022-10-24 19:41:01 +0200gentauro(~gentauro@user/gentauro)
2022-10-24 19:43:25 +0200 <slack1256> Nixos by default compiles libraries dynamically for haskell projects. IIRC this made monomorphization difficult, is that right?
2022-10-24 19:43:56 +0200cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107) (Ping timeout: 250 seconds)
2022-10-24 19:45:45 +0200zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-10-24 19:47:17 +0200 <dminuoso> lyxia: Oh gosh! All my mistakes were in assuming the phases went from 0 to 2, but they go backwards. clearly.
2022-10-24 19:47:34 +0200 <[exa]> slack1256: by "monomorphization" you mean "making optimized non-polymorphic variants of functions" right? if so, information for inlining is actually present in .hi files and so the dynamic status of the library doesn't really make much difference
2022-10-24 19:47:39 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:99dc:7f1f:c53d:641d)
2022-10-24 19:49:45 +0200 <dolio> Dynamic linking doesn't prevent any optimizations, I think.
2022-10-24 19:50:48 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection)
2022-10-24 19:50:48 +0200 <monochrom> The optimizer stage and the code generator stage are not told about linking options.
2022-10-24 19:51:02 +0200 <monochrom> IOW orthogonal and independent etc.
2022-10-24 19:51:13 +0200 <jle`> nshepperd2: ah, thanks! was curious how it'd look in haskell :) it's a pretty interesting/neat dynamic programming problem
2022-10-24 19:51:27 +0200 <dolio> Which could mean that 'dynamic linking' is meaningless, because all the code from the library has been inlined already.
2022-10-24 19:51:56 +0200 <dolio> Although that's somewhat unlikely in most cases.
2022-10-24 19:51:57 +0200merijn(~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl)
2022-10-24 19:52:29 +0200 <monochrom> Oh, in practice inlining happens more often than pessimists think and less often than optimists think. :)
2022-10-24 19:53:36 +0200 <dminuoso> In other words, everybody is wrong?
2022-10-24 19:53:45 +0200 <Rembane> The best kind of wrong!
2022-10-24 19:53:46 +0200 <monochrom> The RTS is never inlined. This is how exe size can be much smaller under dynamic linking.
2022-10-24 19:53:47 +0200 <[exa]> safe assumption.
2022-10-24 19:55:16 +0200 <monochrom> Or rather, this puts an upper bound.
2022-10-24 19:57:37 +0200zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 246 seconds)
2022-10-24 19:58:17 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 19:58:50 +0200fserucas|eod(~fserucas|@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 276 seconds)
2022-10-24 20:00:46 +0200 <[exa]> are there any vital alternatives to haskeline?
2022-10-24 20:01:38 +0200 <dminuoso> There's wizards
2022-10-24 20:01:52 +0200 <dminuoso> Which I guess is just a higher level wrapper around haskeline, but its there.
2022-10-24 20:03:57 +0200freeside(~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
2022-10-24 20:06:36 +0200zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-10-24 20:07:52 +0200boxscape_(~boxscape_@81.191.27.107) (Remote host closed the connection)
2022-10-24 20:08:09 +0200boxscape_(~boxscape_@81.191.27.107)
2022-10-24 20:08:52 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-10-24 20:09:21 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a)
2022-10-24 20:14:57 +0200Kaipei(~Kaiepi@108.175.84.104) (Ping timeout: 272 seconds)
2022-10-24 20:16:13 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 20:17:03 +0200 <[exa]> ah ok, let's go haskeline then, thanks :]
2022-10-24 20:24:06 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-10-24 20:24:33 +0200ec(~ec@gateway/tor-sasl/ec)
2022-10-24 20:26:21 +0200merijn(~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-10-24 20:29:32 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-10-24 20:32:01 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-24 20:39:13 +0200barak(~barak@2a0d:6fc2:68c0:ce00:ef5e:afee:320:8603)
2022-10-24 20:40:20 +0200Everything(~Everythin@static.208.206.21.65.clients.your-server.de) (Quit: leaving)
2022-10-24 20:45:44 +0200nate2(~nate@98.45.169.16)
2022-10-24 20:50:14 +0200nate2(~nate@98.45.169.16) (Ping timeout: 250 seconds)
2022-10-24 20:50:55 +0200barak(~barak@2a0d:6fc2:68c0:ce00:ef5e:afee:320:8603) (Quit: WeeChat 3.7.1)
2022-10-24 20:52:25 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-10-24 20:58:45 +0200Kaipei(~Kaiepi@108.175.84.104)
2022-10-24 21:04:29 +0200gqplox(~textual@147.188.245.207)
2022-10-24 21:04:51 +0200 <gqplox> hi ive made a funcitno recursiveConcat :: [[a]] -> [a]
2022-10-24 21:04:57 +0200 <gqplox> recursiveconcat [] = []
2022-10-24 21:05:20 +0200 <gqplox> reucsriveconcat xxs = head xxs ++ recursiveconcat (tail xxs)
2022-10-24 21:05:34 +0200 <gqplox> it works fine but i don't understand why
2022-10-24 21:05:52 +0200 <gqplox> recursiveconcat xxs = head xxs ++ recursiveconcat $ tail xxs
2022-10-24 21:05:54 +0200 <gqplox> is wrong
2022-10-24 21:10:58 +0200 <monochrom> Oh probably because "foo ++ bar $ x" means "(foo ++ bar) x" not "foo ++ (bar x)"
2022-10-24 21:11:35 +0200 <monochrom> This is why "$ replaces ()" is a naïve model.
2022-10-24 21:12:05 +0200 <gqplox> Wait what
2022-10-24 21:12:23 +0200 <gqplox> i didn't expect that
2022-10-24 21:12:52 +0200 <gqplox> thanks for the reply
2022-10-24 21:12:57 +0200 <gqplox> where should I look to find the 'correct' way of looking at $ then?
2022-10-24 21:13:22 +0200P1RATEZ(piratez@user/p1ratez)
2022-10-24 21:13:47 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:8c46:781f:98f3:6c99)
2022-10-24 21:13:51 +0200danza(~francesco@rm-19-18-125.service.infuturo.it) (Ping timeout: 272 seconds)
2022-10-24 21:14:07 +0200ec(~ec@gateway/tor-sasl/ec)
2022-10-24 21:14:17 +0200 <monochrom> A combination of operator precedence ($ is lower than all other operators) and the equation (f) $ (x) = (f) (x).
2022-10-24 21:15:06 +0200 <monochrom> If that is too complicated, a simple rule of thumb is "just don't use $". :)
2022-10-24 21:15:29 +0200ft(~ft@p3e9bc845.dip0.t-ipconnect.de)
2022-10-24 21:15:43 +0200 <monochrom> $ is extremely optional, you can ignore it until you're ready.
2022-10-24 21:16:40 +0200 <monochrom> Explicit parentheses is more explicit and requires less memorizing operator precedence levels.
2022-10-24 21:17:36 +0200 <gqplox> Oh cool I wrote it out and understand how it gets there, thanks
2022-10-24 21:17:52 +0200 <gqplox> Although i think ill only use it for when its completely obvious for now
2022-10-24 21:19:13 +0200vulpine(xfnw@tilde.team)
2022-10-24 21:20:38 +0200zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
2022-10-24 21:22:06 +0200redmp(~redmp@airbears2-136-152-143-223.airbears2.berkeley.edu)
2022-10-24 21:22:27 +0200vulpineghoulpine
2022-10-24 21:22:57 +0200ralu1(~ralu@static.211.245.203.116.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
2022-10-24 21:22:58 +0200mvk(~mvk@2607:fea8:5ce3:8500::a80f) (Ping timeout: 272 seconds)
2022-10-24 21:32:02 +0200redmp(~redmp@airbears2-136-152-143-223.airbears2.berkeley.edu) (Ping timeout: 260 seconds)
2022-10-24 21:33:44 +0200pavonia(~user@user/siracusa)
2022-10-24 21:33:46 +0200 <dminuoso> monochrom: Mmm, that statement `"foo ++ bar $ x" means "(foo ++ bar) x" not "foo ++ (bar x)"` by itself can be confusing too.
2022-10-24 21:34:42 +0200 <monochrom> How?
2022-10-24 21:35:03 +0200 <dminuoso> I would, for clarity sake, add parens around `x` as well.
2022-10-24 21:36:38 +0200mc47(~mc47@xmonad/TheMC47)
2022-10-24 21:37:58 +0200merijn(~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl)
2022-10-24 21:40:14 +0200MajorBiscuit(~MajorBisc@mob-109-118-119-253.net.vodafone.it)
2022-10-24 21:44:01 +0200 <davean> monochrom: uh, didn't you just describe the "$ replaces ()" model and then said that was why it was naive?
2022-10-24 21:44:33 +0200 <monochrom> How?
2022-10-24 21:44:51 +0200 <davean> Because "foo ++ bar $ x" => "(foo ++ bar) (x)"
2022-10-24 21:45:23 +0200 <davean> which you then simplified and said "means \"(foo ++ bar) x\""
2022-10-24 21:45:52 +0200 <monochrom> "$ replaces ()" includes both that and "foo ++ (bar x)".
2022-10-24 21:46:20 +0200 <monochrom> Err no.
2022-10-24 21:46:23 +0200 <davean> I was told "put parents around the full expression on both sides of the $"
2022-10-24 21:46:31 +0200 <monochrom> Err yes.
2022-10-24 21:48:15 +0200 <monochrom> That's never how people use "$ replaces ()".
2022-10-24 21:48:26 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection)
2022-10-24 21:48:42 +0200 <davean> It isn't? Thats what this channel gave me when I first learned haskell
2022-10-24 21:48:49 +0200 <dminuoso> davean: That leaves us just to talk about right and left associativity, and how ($) should be infixl and not infixr!
2022-10-24 21:48:59 +0200 <monochrom> How people use it: Start with an expression that has some () but no $, then replace all () by $. That direction doesn't work.
2022-10-24 21:49:16 +0200 <davean> oh huh, ok, thats NOT what I ever heard
2022-10-24 21:50:26 +0200 <monochrom> This is a special case of how people never proofread their own writing.
2022-10-24 21:50:34 +0200 <dminuoso> What do you folks think. Is the fixity of ($) wrong?
2022-10-24 21:50:46 +0200 <dolio> Yes.
2022-10-24 21:50:56 +0200 <dolio> But it's too late to fix it.
2022-10-24 21:51:42 +0200 <monochrom> I.e., people never work this backward crosscheck direction: "Now that I have code that uses $, let me replace $ by (), impartially, and see if it really means what I want".
2022-10-24 21:52:09 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-24 21:52:39 +0200 <monochrom> In general people never check what their wording actually comes across to other people/computer.
2022-10-24 21:52:58 +0200ec(~ec@gateway/tor-sasl/ec)
2022-10-24 21:53:06 +0200dextaa(~DV@user/dextaa)
2022-10-24 21:53:38 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-10-24 21:54:01 +0200mokee(~mokee@37.228.215.235) (Quit: off)
2022-10-24 21:57:40 +0200littlefinger(~littlefin@pool-100-15-237-121.washdc.fios.verizon.net) (Ping timeout: 244 seconds)
2022-10-24 21:59:08 +0200axeman(~quassel@2a02:8109:a380:78:dcd3:d662:889b:778e) (Ping timeout: 250 seconds)
2022-10-24 21:59:29 +0200Guest51(~Guest51@205.175.106.104)
2022-10-24 21:59:50 +0200gqplox(~textual@147.188.245.207) (Quit: Textual IRC Client: www.textualapp.com)
2022-10-24 22:02:59 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:d4cb:6221:97a6:c0bc) (Quit: caryhartline)
2022-10-24 22:03:02 +0200Guest51(~Guest51@205.175.106.104) (Client Quit)
2022-10-24 22:04:16 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2022-10-24 22:04:41 +0200Guest51(~Guest51@205.175.106.104)
2022-10-24 22:05:39 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:8c46:781f:98f3:6c99) (Quit: WeeChat 2.8)
2022-10-24 22:05:56 +0200j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds)
2022-10-24 22:07:02 +0200merijn(~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-10-24 22:09:45 +0200cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107)
2022-10-24 22:12:20 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-10-24 22:15:18 +0200birdgoose(~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac)
2022-10-24 22:15:55 +0200birdgoose(~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac) (Client Quit)
2022-10-24 22:16:03 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-10-24 22:16:13 +0200birdgoose(~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac)
2022-10-24 22:19:30 +0200m5zs7k(aquares@web10.mydevil.net) (*.net *.split)
2022-10-24 22:19:30 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) (*.net *.split)
2022-10-24 22:19:30 +0200Ranhir(~Ranhir@157.97.53.139) (*.net *.split)
2022-10-24 22:19:30 +0200taeaad(~taeaad@user/taeaad) (*.net *.split)
2022-10-24 22:19:30 +0200stefan-_(~cri@42dots.de) (*.net *.split)
2022-10-24 22:19:30 +0200Inoperable(~PLAYER_1@fancydata.science) (*.net *.split)
2022-10-24 22:19:30 +0200asm(~alexander@user/asm) (*.net *.split)
2022-10-24 22:19:30 +0200zachel(~zachel@user/zachel) (*.net *.split)
2022-10-24 22:19:30 +0200codedmart(codedmart@2600:3c01::f03c:92ff:fefe:8511) (*.net *.split)
2022-10-24 22:19:30 +0200cods(~fred@82-65-232-44.subs.proxad.net) (*.net *.split)
2022-10-24 22:19:30 +0200eL_Bart0(eL_Bart0@dietunichtguten.org) (*.net *.split)
2022-10-24 22:19:30 +0200Igloo(~ian@matrix.chaos.earth.li) (*.net *.split)
2022-10-24 22:19:30 +0200dcoutts__(~duncan@host86-163-164-210.range86-163.btcentralplus.com) (*.net *.split)
2022-10-24 22:19:30 +0200AkechiShiro(~licht@user/akechishiro) (*.net *.split)
2022-10-24 22:19:30 +0200gnyeki(~gnyeki@user/gnyeki) (*.net *.split)
2022-10-24 22:19:31 +0200spaced(uid572193@user/spaced) (*.net *.split)
2022-10-24 22:19:31 +0200stilgart(~Christoph@chezlefab.net) (*.net *.split)
2022-10-24 22:19:31 +0200GoldsteinQ(~goldstein@goldstein.rs) (*.net *.split)
2022-10-24 22:19:31 +0200phileasfogg(~phileasfo@user/phileasfogg) (*.net *.split)
2022-10-24 22:19:31 +0200nshepperd(nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split)
2022-10-24 22:19:31 +0200Ram-Z(~Ram-Z@li1814-254.members.linode.com) (*.net *.split)
2022-10-24 22:19:31 +0200spider_(~spider@vps-951ce37a.vps.ovh.ca) (*.net *.split)
2022-10-24 22:19:31 +0200DigitalKiwi(~kiwi@2604:a880:400:d0::1ca0:e001) (*.net *.split)
2022-10-24 22:19:31 +0200ddb(~ddb@tilde.club) (*.net *.split)
2022-10-24 22:19:31 +0200lieven(~mal@ns2.wyrd.be) (*.net *.split)
2022-10-24 22:19:31 +0200kaskal(~kaskal@2001:4bb8:2dc:7b0e:55ee:692c:e44d:a4b0) (*.net *.split)
2022-10-24 22:19:31 +0200meinside(uid24933@id-24933.helmsley.irccloud.com) (*.net *.split)
2022-10-24 22:19:31 +0200earthy(~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) (*.net *.split)
2022-10-24 22:19:31 +0200kristjansson(sid126207@id-126207.tinside.irccloud.com) (*.net *.split)
2022-10-24 22:19:31 +0200APic(apic@apic.name) (*.net *.split)
2022-10-24 22:19:31 +0200siers(~ij@user/ij) (*.net *.split)
2022-10-24 22:19:31 +0200hugo(znc@verdigris.lysator.liu.se) (*.net *.split)
2022-10-24 22:19:31 +0200mimmy(~mimmy@2604:a880:cad:d0::3e:1001) (*.net *.split)
2022-10-24 22:19:39 +0200Igloo(~ian@matrix.chaos.earth.li)
2022-10-24 22:19:41 +0200eL_Bart0(eL_Bart0@dietunichtguten.org)
2022-10-24 22:19:44 +0200APic(apic@apic.name)
2022-10-24 22:19:44 +0200cods(~fred@82-65-232-44.subs.proxad.net)
2022-10-24 22:19:44 +0200meinside(uid24933@id-24933.helmsley.irccloud.com)
2022-10-24 22:19:47 +0200codedmart(codedmart@2600:3c01::f03c:92ff:fefe:8511)
2022-10-24 22:19:48 +0200kaskal(~kaskal@2001:4bb8:2dc:7b0e:55ee:692c:e44d:a4b0)
2022-10-24 22:19:52 +0200dcoutts__(~duncan@host86-163-164-210.range86-163.btcentralplus.com)
2022-10-24 22:19:53 +0200asm(~alexander@burner.asm89.io)
2022-10-24 22:19:53 +0200spider_(~spider@vps-951ce37a.vps.ovh.ca)
2022-10-24 22:19:56 +0200 <Profpatsch> Is there a way to see which HasField instances are defined?
2022-10-24 22:19:58 +0200Ranhir(~Ranhir@157.97.53.139)
2022-10-24 22:19:59 +0200kristjansson(sid126207@id-126207.tinside.irccloud.com)
2022-10-24 22:19:59 +0200spaced(uid572193@user/spaced)
2022-10-24 22:20:01 +0200nshepperd(nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
2022-10-24 22:20:02 +0200lieven(~mal@ns2.wyrd.be)
2022-10-24 22:20:05 +0200earthy(~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net)
2022-10-24 22:20:05 +0200stilgart(~Christoph@chezlefab.net)
2022-10-24 22:20:08 +0200ddb(~ddb@tilde.club)
2022-10-24 22:20:08 +0200 <Profpatsch> I have a type newtype AtLeast (min :: Natural) num = AtLeast {unAtLeast :: num}
2022-10-24 22:20:19 +0200zachel(~zachel@user/zachel)
2022-10-24 22:20:21 +0200 <Profpatsch> and `unAtLeast` seems to not have a HasField instance for some reason
2022-10-24 22:20:23 +0200markasoftware(~quassel@107.161.26.124)
2022-10-24 22:20:51 +0200hugo(znc@verdigris.lysator.liu.se)
2022-10-24 22:20:59 +0200Ram-Z(~Ram-Z@li1814-254.members.linode.com)
2022-10-24 22:21:01 +0200stefan-_(~cri@42dots.de)
2022-10-24 22:21:05 +0200mimmy(~mimmy@2604:a880:cad:d0::3e:1001)
2022-10-24 22:21:05 +0200siers(~ij@user/ij)
2022-10-24 22:21:09 +0200phileasfogg(~phileasfo@user/phileasfogg)
2022-10-24 22:21:10 +0200beteigeuze(~Thunderbi@89.187.168.47)
2022-10-24 22:21:17 +0200m5zs7k(aquares@web10.mydevil.net)
2022-10-24 22:21:21 +0200taeaad(~taeaad@user/taeaad)
2022-10-24 22:21:33 +0200DigitalKiwi(~kiwi@2604:a880:400:d0::1ca0:e001)
2022-10-24 22:23:01 +0200Guest51(~Guest51@205.175.106.104) (Quit: Client closed)
2022-10-24 22:23:42 +0200GoldsteinQ(~goldstein@goldstein.rs)
2022-10-24 22:24:40 +0200gnyeki(~gnyeki@li578-216.members.linode.com)
2022-10-24 22:24:41 +0200gnyeki(~gnyeki@li578-216.members.linode.com) (Changing host)
2022-10-24 22:24:41 +0200gnyeki(~gnyeki@user/gnyeki)
2022-10-24 22:24:46 +0200 <Profpatsch> I guess the phantom type make the instance not obvious?
2022-10-24 22:25:39 +0200Inoperable(~PLAYER_1@fancydata.science)
2022-10-24 22:26:34 +0200 <Profpatsch> Ah, the trick is to remove the destructor and to manuall implement HasField
2022-10-24 22:26:41 +0200 <Profpatsch> instance HasField "unAtLeast" (AtLeast min num) num where
2022-10-24 22:26:43 +0200 <Profpatsch> getField (AtLeast num) = num
2022-10-24 22:26:48 +0200 <Profpatsch> makes sens
2022-10-24 22:26:49 +0200 <Profpatsch> e
2022-10-24 22:27:02 +0200 <Profpatsch> thank you for rubber-ducking, #haskell :P
2022-10-24 22:27:14 +0200slac13256(~slack1256@191.125.99.71)
2022-10-24 22:29:51 +0200slack1256(~slack1256@186.11.46.162) (Ping timeout: 272 seconds)
2022-10-24 22:37:58 +0200 <sm> 🦆
2022-10-24 22:38:27 +0200 <geekosaur> about all I could do was quack along, sadly
2022-10-24 22:38:56 +0200wonko(~wjc@2a0e:1c80:2:0:45:15:19:130)
2022-10-24 22:39:08 +0200 <Hecate> Profpatsch: heya :)
2022-10-24 22:48:56 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-10-24 22:49:08 +0200mmhat(~mmh@p200300f1c7307610ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2022-10-24 22:53:55 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-10-24 22:54:11 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2022-10-24 22:57:54 +0200 <Profpatsch> Hecate: :)
2022-10-24 22:59:35 +0200danza(~francesco@151.82.219.40)
2022-10-24 23:00:39 +0200 <[exa]> Megaparsec question: I'm parsing a stream of tokens that can be reconstructed into a line for pretty error printing via TraversableStream
2022-10-24 23:00:52 +0200 <[exa]> ... how do I tell it the error position in a line?
2022-10-24 23:01:31 +0200MajorBiscuit(~MajorBisc@mob-109-118-119-253.net.vodafone.it) (Ping timeout: 272 seconds)
2022-10-24 23:02:00 +0200 <[exa]> in `reachOffset` I can only report 1] the line contents 2] a new PosState, which can't be "rewinded" to the error position because that could break potential next attempts for getting the contents of the line (I'd be missing the beginning)
2022-10-24 23:02:11 +0200mmhat(~mmh@2003:f1:c730:762d:ee08:6bff:fe09:5315)
2022-10-24 23:03:37 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 260 seconds)
2022-10-24 23:06:41 +0200axeman(~quassel@2a02:8109:a380:78:967e:8a87:718a:1361)
2022-10-24 23:06:43 +0200 <[exa]> (as in, the only way that displays to me right is that i keep the pstateOffset at the beginning of the line (to be able to reconstruct it) but move the sourcePos to a column that is not at that offset (possibly breaking sourcePos information for other stuff at that line)
2022-10-24 23:07:43 +0200slac13256slack1256
2022-10-24 23:07:52 +0200stackdroid18(14094@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-10-24 23:11:01 +0200mixfix41(~sdenynine@user/mixfix41) (Ping timeout: 272 seconds)
2022-10-24 23:11:32 +0200yahb2(~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection)
2022-10-24 23:11:44 +0200yahb2(~yahb2@2a01:4f8:c0c:5c7b::2)
2022-10-24 23:15:34 +0200yahb2(~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection)
2022-10-24 23:15:46 +0200yahb2(~yahb2@2a01:4f8:c0c:5c7b::2)
2022-10-24 23:17:11 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-24 23:18:09 +0200mvk(~mvk@2607:fea8:5ce3:8500::a80f)
2022-10-24 23:18:27 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-10-24 23:18:48 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-10-24 23:23:55 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-10-24 23:24:34 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-10-24 23:24:42 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-10-24 23:30:01 +0200freeside(~mengwong@103.252.202.193) (Ping timeout: 272 seconds)
2022-10-24 23:30:17 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 258 seconds)
2022-10-24 23:33:07 +0200wonko(~wjc@2a0e:1c80:2:0:45:15:19:130) (Read error: Connection reset by peer)
2022-10-24 23:33:30 +0200wonko(~wjc@user/wonko)
2022-10-24 23:34:18 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-10-24 23:42:09 +0200freeside(~mengwong@103.252.202.193)
2022-10-24 23:43:26 +0200gqplox(~textual@147.188.245.207)
2022-10-24 23:48:15 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-10-24 23:56:11 +0200zmt00(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2022-10-24 23:57:25 +0200zmt00(~zmt00@user/zmt00)
2022-10-24 23:57:58 +0200thyriaen(~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)