2022/03/24

2022-03-24 00:03:48 +0100gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
2022-03-24 00:07:55 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-03-24 00:09:11 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2022-03-24 00:10:32 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection)
2022-03-24 00:11:12 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-03-24 00:11:52 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si)
2022-03-24 00:13:01 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds)
2022-03-24 00:14:43 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-03-24 00:17:24 +0100leah2(~leah@vuxu.org) (Ping timeout: 240 seconds)
2022-03-24 00:26:15 +0100Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-03-24 00:26:41 +0100cosimone(~user@93-44-187-176.ip98.fastwebnet.it)
2022-03-24 00:27:00 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-24 00:27:37 +0100machinedgod(~machinedg@mtrlpq02-1168108095.sdsl.bell.ca) (Ping timeout: 240 seconds)
2022-03-24 00:31:47 +0100vorpuni(~pvorp@2001:861:3881:c690:653f:80d3:c158:3650) (Ping timeout: 260 seconds)
2022-03-24 00:32:37 +0100leah2(~leah@vuxu.org)
2022-03-24 00:32:59 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-03-24 00:33:35 +0100catch22(~catch22@204.40.96.58.static.exetel.com.au)
2022-03-24 00:33:47 +0100acidjnk(~acidjnk@p200300d0c7049f94c956cb44f746ab1f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-03-24 00:33:58 +0100Crash0verrid3(~IceChat95@2601:151:4500:17b:981f:f251:77de:55e5)
2022-03-24 00:38:59 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-03-24 00:44:08 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-03-24 00:44:29 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
2022-03-24 00:45:01 +0100dsrt^(~dsrt@96-67-120-105-static.hfc.comcastbusiness.net) (Ping timeout: 240 seconds)
2022-03-24 00:45:23 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
2022-03-24 00:45:57 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 00:46:37 +0100Everything(~Everythin@37.115.210.35)
2022-03-24 00:48:22 +0100slack1256(~slack1256@186.11.118.121)
2022-03-24 00:49:45 +0100 <Axman6> koala_man: how have I never connected that you are _the_ shellcheck koalaman. Love you work my friend, Shellcheck is a godsend
2022-03-24 00:49:46 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-03-24 00:49:56 +0100 <koala_man> aww, I'm happy you find it useful!
2022-03-24 00:50:55 +0100slac45879(~slack1256@191.126.227.64) (Ping timeout: 260 seconds)
2022-03-24 00:53:38 +0100 <Axman6> I've been subscribed to the infamous zsh ticket for years and live in hope but understanding =)
2022-03-24 00:53:38 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-03-24 00:54:10 +0100 <koala_man> haha yup, zsh is quite different from the rest both syntactically and semantically
2022-03-24 00:55:18 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 00:56:03 +0100 <geekosaur> zsh is nice for those of us who know both tcsh and sh/bash, but yes, the combination is … interesting
2022-03-24 00:57:03 +0100slac45998(~slack1256@191.125.227.64)
2022-03-24 00:57:15 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-03-24 00:57:28 +0100 <Axman6> I wish all languages had tools as nice as shellcheck, imagine having something that nice for Haskell
2022-03-24 00:58:27 +0100 <hpc> but what language would it be written in? :P
2022-03-24 00:59:07 +0100slack1256(~slack1256@186.11.118.121) (Ping timeout: 256 seconds)
2022-03-24 01:00:12 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-24 01:00:48 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2022-03-24 01:00:50 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2022-03-24 01:04:09 +0100slac45998(~slack1256@191.125.227.64) (Remote host closed the connection)
2022-03-24 01:04:48 +0100zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) (Quit: Konversation terminated!)
2022-03-24 01:05:22 +0100Crash0verrid3(~IceChat95@2601:151:4500:17b:981f:f251:77de:55e5) (Quit: For Sale: Parachute. Only used once, never opened, small stain.)
2022-03-24 01:07:03 +0100xff0x(~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 256 seconds)
2022-03-24 01:07:30 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
2022-03-24 01:07:31 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
2022-03-24 01:10:07 +0100 <dons> shellcheck is excellent.
2022-03-24 01:10:57 +0100dsrt^(~dsrt@96-67-120-105-static.hfc.comcastbusiness.net)
2022-03-24 01:11:00 +0100 <koala_man> praise from caesar
2022-03-24 01:11:35 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
2022-03-24 01:18:11 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 01:20:56 +0100machinedgod(~machinedg@24.105.81.50)
2022-03-24 01:25:14 +0100pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2022-03-24 01:25:24 +0100pavonia(~user@user/siracusa)
2022-03-24 01:27:39 +0100 <sm> Axman6: I was in here saying the same thing a few weeks ago. Conclusion: that's GHC plus hlint, isn't it ?
2022-03-24 01:32:26 +0100mvk(~mvk@2607:fea8:5cc3:7e00::7980)
2022-03-24 01:32:40 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-24 01:33:05 +0100mud(~mud@user/kadoban) (Quit: quit)
2022-03-24 01:33:18 +0100 <Axman6> I've never really felt like the experiences are really comparable, but the problem is also significantly more difficult in Haskell IMO
2022-03-24 01:33:57 +0100 <Axman6> adding a type system where things aren't just nearly always strings makes things much harder to automate good advice
2022-03-24 01:36:45 +0100 <sm> what makes the experience different ? shellcheck can give more definite concrete advice ?
2022-03-24 01:37:19 +0100 <sm> I think hlint is pretty good at that, but GHC less so - unless you restrict to some kind of Simple Haskell maybe
2022-03-24 01:38:03 +0100 <sm> that's why we need racket-like language levels (I think Helium does that)
2022-03-24 01:38:53 +0100chenqisu1(~chenqisu1@183.217.201.88)
2022-03-24 01:42:08 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-24 01:42:57 +0100nautical(~nautical@2601:602:900:1630::7cbb)
2022-03-24 01:43:37 +0100gardnan(~max@c-75-70-252-201.hsd1.co.comcast.net)
2022-03-24 01:45:10 +0100phma(phma@2001:5b0:2172:dab8:f6f:c543:829a:340a) (Read error: Connection reset by peer)
2022-03-24 01:46:32 +0100Akiva(~Akiva@user/Akiva)
2022-03-24 01:46:45 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-24 01:47:28 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
2022-03-24 01:50:15 +0100phma(~phma@host-67-44-209-94.hnremote.net)
2022-03-24 01:52:45 +0100phma(~phma@host-67-44-209-94.hnremote.net) (Read error: Connection reset by peer)
2022-03-24 01:53:56 +0100nautical(~nautical@2601:602:900:1630::7cbb) (Quit: WeeChat 3.4)
2022-03-24 01:54:49 +0100phma(~phma@host-67-44-209-94.hnremote.net)
2022-03-24 01:56:49 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2022-03-24 01:58:17 +0100nicbk(~nicbk@user/nicbk)
2022-03-24 02:00:57 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds)
2022-03-24 02:05:12 +0100dsrt^(~dsrt@96-67-120-105-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2022-03-24 02:09:57 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 256 seconds)
2022-03-24 02:10:32 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 240 seconds)
2022-03-24 02:11:18 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-03-24 02:12:20 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-24 02:15:02 +0100Everything(~Everythin@37.115.210.35) ()
2022-03-24 02:17:25 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-03-24 02:18:30 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-03-24 02:22:33 +0100meinside(uid24933@id-24933.helmsley.irccloud.com)
2022-03-24 02:22:39 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-24 02:26:33 +0100Benzi-Junior(~BenziJuni@88-149-64-179.du.xdsl.is) (Quit: ZNC 1.8.2 - https://znc.in)
2022-03-24 02:28:05 +0100 <abastro[m]> What language is shellcheck made in?
2022-03-24 02:31:24 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-2420-4733-60a5-9d17.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-03-24 02:34:40 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-0874-3206-ce5b-fa50.res6.spectrum.com)
2022-03-24 02:35:16 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-0874-3206-ce5b-fa50.res6.spectrum.com) (Remote host closed the connection)
2022-03-24 02:41:24 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-03-24 02:41:49 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection)
2022-03-24 02:42:37 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si)
2022-03-24 02:45:48 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2022-03-24 02:48:18 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-0874-3206-ce5b-fa50.res6.spectrum.com)
2022-03-24 02:49:08 +0100 <boxscape_> abastro[m] haskell
2022-03-24 02:49:24 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-0874-3206-ce5b-fa50.res6.spectrum.com) (Read error: Connection reset by peer)
2022-03-24 02:50:06 +0100 <abastro[m]> ?!?!? Wait
2022-03-24 02:50:06 +0100 <lambdabot> Unknown command, try @list
2022-03-24 02:50:09 +0100 <abastro[m]> How?
2022-03-24 02:50:46 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-0874-3206-ce5b-fa50.res6.spectrum.com)
2022-03-24 02:51:03 +0100 <boxscape_> abastro[m] haskell is typically well suited to parsing languages and handling ASTs (in this case a bash AST), so it kind of makes sense
2022-03-24 02:51:31 +0100 <abastro[m]> I see. Seems it would be hard to gather contributors though.
2022-03-24 02:51:50 +0100 <boxscape_> https://github.com/koalaman/shellcheck says there are 126 contributors
2022-03-24 02:52:54 +0100 <boxscape_> though of course as with all repos almost all of them have only a couple of commits
2022-03-24 02:52:57 +0100alp(~alp@user/alp) (Ping timeout: 252 seconds)
2022-03-24 02:53:49 +0100 <abastro[m]> Wow, impressive
2022-03-24 02:54:59 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-03-24 03:01:50 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-03-24 03:03:49 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-03-24 03:05:48 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-03-24 03:06:27 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-24 03:07:38 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-24 03:09:47 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-24 03:14:33 +0100catch22(~catch22@204.40.96.58.static.exetel.com.au) (Quit: Client closed)
2022-03-24 03:20:36 +0100notzmv(~zmv@user/notzmv)
2022-03-24 03:29:27 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 03:31:14 +0100Guest39(~Guest39@49.207.207.238)
2022-03-24 03:32:37 +0100Guest39(~Guest39@49.207.207.238) (Client Quit)
2022-03-24 03:32:52 +0100cyphase(~cyphase@user/cyphase)
2022-03-24 03:34:12 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 03:34:53 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-03-24 03:39:27 +0100xff0x(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp)
2022-03-24 03:40:07 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-24 03:45:23 +0100mud(~mud@user/kadoban)
2022-03-24 03:46:50 +0100vglfr(~vglfr@88.155.118.203) (Ping timeout: 252 seconds)
2022-03-24 03:54:04 +0100 <sm> why would it be hard ? everyone who ever wrote a shell script needs this tool :)
2022-03-24 03:55:41 +0100 <sm> well maintained, well documented, highly practical haskell code - what could be more pleasant
2022-03-24 03:56:06 +0100fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving)
2022-03-24 03:58:48 +0100[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-03-24 03:58:57 +0100 <sm> oh, you mean why would haskellers sully themselves enabling the writing of more shell scripts. Well yes.. they're just too useful and we can't live without them
2022-03-24 04:00:40 +0100 <abastro[m]> Oh, that as well. Shell scripts are painful
2022-03-24 04:01:49 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds)
2022-03-24 04:02:35 +0100 <sm> they kind of magically became not so painful when I noticed my editor showing errors and advice in real time
2022-03-24 04:02:41 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-03-24 04:02:41 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-03-24 04:02:41 +0100wroathe(~wroathe@user/wroathe)
2022-03-24 04:03:17 +0100 <sm> I never even configured it, AFAIK. What ? It's unheard of
2022-03-24 04:03:35 +0100 <abastro[m]> Wow, I should use that as well then
2022-03-24 04:03:55 +0100 <abastro[m]> But mostly I meant how many ppl don't know haskell
2022-03-24 04:04:33 +0100 <abastro[m]> As haskell is relatively unpopular language, it is harder for people to volunteer. A price to pay.
2022-03-24 04:04:47 +0100 <sm> there's a great https://github.com/koalaman/shellcheck/wiki/DevGuide, and it looks like you could contribute to this knowing very little haskell
2022-03-24 04:10:33 +0100 <sm> also, haskell might be relatively unpopular in industry, but it's highly popular among curious software devs. One of the largest IRC channels, etc
2022-03-24 04:11:14 +0100 <sm> lots of high quality free support, relative to some languages
2022-03-24 04:13:27 +0100 <sm> ok I suppose python, javascript, C sharp, Java, C++ are not lacking in support
2022-03-24 04:15:56 +0100abradabara(~abradabar@185.183.97.187) (Quit: Lost terminal)
2022-03-24 04:17:12 +0100 <koala_man> boxscape_: yeah there's basically 2-3 people who have made substantial Haskell improvements
2022-03-24 04:17:26 +0100 <boxscape_> I see
2022-03-24 04:18:20 +0100 <sm> have there been similar shell-checking tools built in other languages ?
2022-03-24 04:18:38 +0100 <koala_man> shfmt in Go
2022-03-24 04:20:36 +0100 <sm> shfmt related projects doesn't mention ShellCheck. Because it doesn't reformat things I suppose
2022-03-24 04:22:01 +0100 <koala_man> ShellCheck never cared about formatting except as it relates to correctness, and shfmt filled in that gap. It's since added some checking functionality of its own which is neat
2022-03-24 04:22:01 +0100 <abastro[m]> I wonder how you guys think about block/visual coding, would it make stuffs easier?
2022-03-24 04:22:36 +0100 <boxscape_> I definitely think coding by writing an ASCII string isn't the pinnacle of user experience, but I'm not sure what a better interface would actually look like
2022-03-24 04:23:04 +0100[_][itchyjunk]
2022-03-24 04:23:10 +0100 <sm> it seems usually not to abastro, with a few exceptions with constrained scope (scratch.. that lab ide thing..)
2022-03-24 04:24:05 +0100 <abastro[m]> Oh, so it should be like, Domain-specific. Right?
2022-03-24 04:25:13 +0100 <sm> yes, that can be a better fit
2022-03-24 04:25:17 +0100 <sm> have you tried https://code.world/blocks ?
2022-03-24 04:25:48 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 272 seconds)
2022-03-24 04:25:53 +0100 <sm> it looks like scratch in haskell
2022-03-24 04:26:09 +0100 <koala_man> one such formatting issue is one of my favorite checks that never triggers, SC2262. If you run alias f='echo foo'; f; then it won't print 'foo' the first time
2022-03-24 04:26:18 +0100 <koala_man> but it will the second time
2022-03-24 04:26:28 +0100 <sm> yikes
2022-03-24 04:26:31 +0100 <koala_man> yup
2022-03-24 04:27:05 +0100 <sm> as a shell user, I'd never try something that crazy of course
2022-03-24 04:27:38 +0100 <sm> though, now with flycheck and shellcheck at my back, I totally would 👍️
2022-03-24 04:28:08 +0100 <koala_man> haha
2022-03-24 04:28:26 +0100 <sm> you made me dangerous with bash, koala_man
2022-03-24 04:29:37 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 04:29:46 +0100 <koala_man> haha
2022-03-24 04:29:48 +0100 <koala_man> oof
2022-03-24 04:31:56 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-03-24 04:31:57 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-03-24 04:31:57 +0100finn_elijaFinnElija
2022-03-24 04:34:03 +0100machinedgod(~machinedg@24.105.81.50)
2022-03-24 04:34:45 +0100 <abastro[m]> How have you felf about haskell, koala_man?
2022-03-24 04:38:02 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-24 04:42:51 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-24 04:42:54 +0100Codaraxis(~Codaraxis@user/codaraxis) (Ping timeout: 272 seconds)
2022-03-24 04:42:57 +0100terrorjack(~terrorjac@static.3.200.12.49.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
2022-03-24 04:43:49 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-03-24 04:44:11 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-03-24 04:48:01 +0100dsrt^(~dsrt@96-67-120-105-static.hfc.comcastbusiness.net)
2022-03-24 04:50:37 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-24 04:52:58 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 04:53:28 +0100 <jackdk> koala_man: that makes sense - I assume alias expansion happens before the first command in a compound is evaluated?
2022-03-24 04:59:59 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
2022-03-24 05:00:33 +0100kilolympus(~kilolympu@31.205.200.235)
2022-03-24 05:02:57 +0100 <Axman6> oh ouch, yeah I was trying to figure out whyit would be the case. that's very gross
2022-03-24 05:04:05 +0100awpr(uid446117@id-446117.lymington.irccloud.com)
2022-03-24 05:04:22 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 05:04:38 +0100 <Axman6> so, semicolons are not the same as new lines. that's so gross
2022-03-24 05:05:26 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 05:07:05 +0100 <Axman6> koala_man: you've ruined my day now, I'm mad about this and I've never even run into the problem, because it now complicated my mental model of the already insane nature of bash
2022-03-24 05:07:21 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si) (Quit: Leaving)
2022-03-24 05:08:06 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 05:12:25 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-03-24 05:13:15 +0100nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-03-24 05:15:48 +0100deadmarshal_(~deadmarsh@95.38.112.219)
2022-03-24 05:18:39 +0100 <hololeap> shellcheck has lsp support?
2022-03-24 05:24:22 +0100 <abastro[m]> I found it in VSCode, tho it says nothing about lsp
2022-03-24 05:24:32 +0100 <abastro[m]> https://marketplace.visualstudio.com/items?itemName=timonwong.shellcheck&ssr=false#overview
2022-03-24 05:25:07 +0100Codaraxis(~Codaraxis@user/codaraxis)
2022-03-24 05:25:20 +0100 <Axman6> I wonder how shellcheck handles those fun files where someone decides that storing binaries in shell scripts is a good idea...
2022-03-24 05:25:48 +0100 <abastro[m]> Ewwww
2022-03-24 05:26:24 +0100euandreh(~euandreh@2804:14c:33:9fe5:2b3e:70f8:165f:be99) (Ping timeout: 252 seconds)
2022-03-24 05:31:25 +0100 <monochrom> I hope it is a "utf-8 decoding error" >:)
2022-03-24 05:31:48 +0100 <Axman6> last time I saw it it was base64'd
2022-03-24 05:31:59 +0100 <Axman6> I think the vmwaretools installer does this
2022-03-24 05:32:00 +0100 <monochrom> "switching to EBCDIC mode"
2022-03-24 05:32:46 +0100 <monochrom> OK, base64 may be just forgiven and ignored.
2022-03-24 05:33:31 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-24 05:34:33 +0100 <Axman6> looking at https://kb.vmware.com/s/article/1018414 it might actually be a perl script
2022-03-24 05:37:05 +0100 <monochrom> ooohhhh now I wonder what shellcheck would complain about a perl script >:)
2022-03-24 05:37:25 +0100 <jackdk> Axman6: I find that bash is more predictable if you imagine a rushed C programmer wrote the interpreter. The same is true for Python
2022-03-24 05:39:41 +0100 <abastro[m]> When I somehow unironically like C :<
2022-03-24 05:40:29 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 05:41:05 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 05:44:04 +0100rvbcldud(~rvbcldud@2601:602:87f:4220:c526:c452:c7e1:199e)
2022-03-24 05:44:14 +0100 <Axman6> C is mostly fine for what it is and the time it comes from
2022-03-24 05:45:51 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-03-24 05:47:01 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2022-03-24 05:47:06 +0100 <abastro[m]> Yea, I mean for low-level / embedded dev
2022-03-24 05:47:19 +0100 <abastro[m]> Granted, it might be due to my lack of affinity with rust.
2022-03-24 05:47:28 +0100dsrt^(~dsrt@96-67-120-105-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2022-03-24 05:47:40 +0100 <Axman6> If I did have to do that sort of work these days though, I would probably use it as an excuse to learn rust
2022-03-24 05:47:43 +0100vglfr(~vglfr@88.155.118.203) (Ping timeout: 260 seconds)
2022-03-24 05:48:50 +0100jack-fs(~textual@125-209-162-166.tpgi.com.au)
2022-03-24 05:49:14 +0100 <Axman6> So stackoverflow gave me access to review queues... and they put in tests to make sure you're up to the task; like showing posts which are spam and making sure you flag them, but also posts from communities you're familliar with which have been already accepted as good, to make sure you also keep the good stuff. it's a kinda cool system
2022-03-24 05:50:29 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-03-24 05:51:06 +0100 <abastro[m]> I wonder how mainstream rust would have become in embedded/driver dev space
2022-03-24 05:51:30 +0100 <abastro[m]> I mean, how is rust fairing now there?
2022-03-24 05:53:05 +0100euandreh(~euandreh@2804:14c:33:9fe5:16b7:58d0:d6fd:f99c)
2022-03-24 05:53:51 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Remote host closed the connection)
2022-03-24 05:54:16 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-24 05:55:44 +0100jack-fs(~textual@125-209-162-166.tpgi.com.au) (Ping timeout: 272 seconds)
2022-03-24 05:56:12 +0100mbuf(~Shakthi@223.178.127.254)
2022-03-24 06:02:39 +0100monochrom(trebla@216.138.220.146)
2022-03-24 06:03:06 +0100 <Axman6> Aren't they allowing Rust in the linux kernel these days?
2022-03-24 06:05:15 +0100 <abastro[m]> Did they? How?
2022-03-24 06:06:03 +0100 <Axman6> https://security.googleblog.com/2021/04/rust-in-linux-kernel.html looks like it would give some good answers tot hat
2022-03-24 06:06:42 +0100quintasan(~quassel@quintasan.pl) ()
2022-03-24 06:07:15 +0100quintasan(~quassel@quintasan.pl)
2022-03-24 06:07:39 +0100 <abastro[m]> Oh, so rust got actually afloat
2022-03-24 06:07:51 +0100 <abastro[m]> I envy them a bit
2022-03-24 06:07:58 +0100 <Axman6> well, it's been in Firefox for years now
2022-03-24 06:08:06 +0100 <Axman6> it'as not exactly a toy language these days
2022-03-24 06:08:50 +0100 <abastro[m]> Eek, that implies haskell is toy language :<
2022-03-24 06:09:13 +0100 <Axman6> why?
2022-03-24 06:09:26 +0100 <Axman6> It's being used in lots of places commercially
2022-03-24 06:09:45 +0100 <abastro[m]> Haskell is comparably less popular than rust, you know
2022-03-24 06:09:54 +0100 <abastro[m]> So if rust is not exactly a toy language.. haskell is..
2022-03-24 06:09:54 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-03-24 06:10:04 +0100 <Axman6> If you've used Facebook in the past few years your posts were filtered through the Haskell based spam filtering system there
2022-03-24 06:12:14 +0100 <abastro[m]> <del>Yea but I do not use facebook so apparently that does not count</del>
2022-03-24 06:12:54 +0100 <abastro[m]> Btw, does facebook employ haskell/FP programmers then?
2022-03-24 06:16:16 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-03-24 06:16:51 +0100 <Axman6> yes, some of the best. dons is one of them
2022-03-24 06:16:59 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-24 06:17:37 +0100deadmarshal_(~deadmarsh@95.38.112.219) (Ping timeout: 240 seconds)
2022-03-24 06:18:00 +0100 <jackdk> abastro[m]: I don't have anything against C or C programmers. But imagining how a C programmer would've implemented something is often a great way to predict its behaviour
2022-03-24 06:19:03 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
2022-03-24 06:19:12 +0100 <abastro[m]> Yea, I agree, it is hard
2022-03-24 06:19:54 +0100 <Axman6> Aww geez, more strings? better do the most confusing thing for the user I can think of...
2022-03-24 06:20:54 +0100Me-me(~me-me@user/me-me) (Quit: Disconnecting on purpose.)
2022-03-24 06:20:56 +0100 <abastro[m]> Hm on a different note, FunctionalDependencies did not make it to GHC2021 it seems
2022-03-24 06:21:33 +0100 <Axman6> probably they're not clearly a better choice than associated type families or something
2022-03-24 06:22:59 +0100Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net)
2022-03-24 06:24:15 +0100 <abastro[m]> Associated type families?
2022-03-24 06:24:29 +0100Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host)
2022-03-24 06:24:29 +0100Me-me(~me-me@user/me-me)
2022-03-24 06:29:42 +0100deadmarshal_(~deadmarsh@95.38.112.219)
2022-03-24 06:30:29 +0100 <Axman6> class Request a where type family Response a :: Type; send :: a -> IO (Response a); instance Request GetObject where type instance Responce GetObject = GetObjectResponse; send :: GetObject -> IO (Response GetObject) -- a.k.a send :: GetObject -> IO GetObjectResponse
2022-03-24 06:30:46 +0100 <Axman6> stealing an example from jackdk from a day or so ago
2022-03-24 06:33:13 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-03-24 06:33:30 +0100 <abastro[m]> Oh, the one using type families?
2022-03-24 06:33:41 +0100 <abastro[m]> IIRC type families are also not in GHC2021
2022-03-24 06:34:36 +0100 <Axman6> right, they're mostly equivalent to fundeps, so choosing which should be enabled by default makes sense; and IMO it's the sort of extension I would want to know is being used in a file by having a LANGUAGE pragma
2022-03-24 06:36:01 +0100 <jackdk> I don't think you can do bidirectional inference through an associated TF?
2022-03-24 06:36:14 +0100 <jackdk> whereas you can do `class C a b | a -> b, b -> a`
2022-03-24 06:37:08 +0100 <abastro[m]> I see, good rationale
2022-03-24 06:38:45 +0100Codaraxis_(~Codaraxis@user/codaraxis)
2022-03-24 06:40:05 +0100benin(~benin@183.82.207.30) (Quit: The Lounge - https://thelounge.chat)
2022-03-24 06:40:15 +0100amino_(~amino@94.13.111.159) (Ping timeout: 256 seconds)
2022-03-24 06:41:20 +0100bahamas(~lucian@84.232.140.158)
2022-03-24 06:41:37 +0100 <Axman6> yeah they're not completely equivalent
2022-03-24 06:43:14 +0100Codaraxis(~Codaraxis@user/codaraxis) (Ping timeout: 272 seconds)
2022-03-24 06:43:45 +0100benin(~benin@183.82.207.30)
2022-03-24 06:45:48 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 240 seconds)
2022-03-24 06:46:09 +0100_xor(~xor@74.215.232.169) (Quit: WeeChat 3.4)
2022-03-24 06:52:27 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-24 06:58:25 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 07:01:09 +0100inversed(~inversed@94.13.111.159)
2022-03-24 07:05:10 +0100Akiva(~Akiva@user/Akiva)
2022-03-24 07:08:32 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-24 07:08:41 +0100vysn(~vysn@user/vysn)
2022-03-24 07:19:08 +0100pnotequalnp(~pnotequal@207-118-121-128.dyn.centurytel.net)
2022-03-24 07:23:46 +0100leungbk`(~user@2603-8000-1201-2dd2-1c2f-c4f4-0d21-a4ac.res6.spectrum.com)
2022-03-24 07:25:17 +0100Hash(~Hash@hey.howstoned.ru) (Ping timeout: 240 seconds)
2022-03-24 07:26:12 +0100leungbk(~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-03-24 07:28:28 +0100Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-03-24 07:33:44 +0100Pickchea(~private@user/pickchea)
2022-03-24 07:34:09 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-03-24 07:34:11 +0100 <abastro[m]> I just found the moment where I thought my algorithm was wrong
2022-03-24 07:34:31 +0100 <abastro[m]> But actually it was typo in input
2022-03-24 07:42:31 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 260 seconds)
2022-03-24 07:42:50 +0100 <abastro[m]> I wonder if this code is standard haskell enough:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/497e661378c1c8fecaea658f6eab322cb7ae…)
2022-03-24 07:42:59 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-24 07:46:46 +0100tadyshev(uid547048@id-547048.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-24 07:49:37 +0100Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-03-24 07:50:35 +0100acidjnk(~acidjnk@p200300d0c7049f7644ba050f51358f71.dip0.t-ipconnect.de)
2022-03-24 07:51:10 +0100 <Axman6> this feels like that brackets problem from a few days ago, but using a queue instead of a stack
2022-03-24 07:51:48 +0100karim(~karim@156.200.223.2)
2022-03-24 07:52:16 +0100 <Axman6> it looks fine as far as it is Haskell, but I am struggling a lot with what it actually does
2022-03-24 07:53:21 +0100Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
2022-03-24 07:53:59 +0100Maxdamantus(~Maxdamant@user/maxdamantus)
2022-03-24 07:57:03 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-24 07:59:14 +0100Hash(~Hash@hey.howstoned.ru)
2022-03-24 08:01:53 +0100 <abastro[m]> Yep, brackets problem
2022-03-24 08:02:05 +0100 <abastro[m]> Hmm, perhaps I am bad at writing readable code.. :<
2022-03-24 08:02:34 +0100 <Axman6> if it's for matching pairs of brackets, then you probably want a stack/list no?
2022-03-24 08:02:54 +0100 <Axman6> I don't really understand why k is there though, so I probably don't understand the problem at all
2022-03-24 08:03:44 +0100 <abastro[m]> Oh, I see.
2022-03-24 08:04:08 +0100 <abastro[m]> It is to exhaustively consume a list into (n, n+k) pairs
2022-03-24 08:04:39 +0100 <abastro[m]> So, for k = 5 and [1,3,4,6,6,8,9,11], it gives [(1,6),(3,8),(4,9),(6,11)]
2022-03-24 08:05:49 +0100 <rvbcldud> Hello! I have a function that inserts an element into a list that does not work how I want it to. Currently it can start at an a singleton, go to a Tree with 3 elements, but after this I want to alternate which side I want to add to.
2022-03-24 08:06:05 +0100 <rvbcldud> treeInsert _ x (Node num left elem right)
2022-03-24 08:06:06 +0100 <rvbcldud> | left == Leaf = Node num (Node (num-1) Leaf x Leaf) elem right
2022-03-24 08:06:08 +0100 <rvbcldud> | right == Leaf = Node num left elem (Node (num-1) Leaf x Leaf)
2022-03-24 08:06:10 +0100 <rvbcldud> | otherwise = Node num newLeft elem right
2022-03-24 08:06:12 +0100 <rvbcldud> where newLeft = treeInsert 0 x left
2022-03-24 08:06:14 +0100 <rvbcldud> newRight = treeInsert 0 x right
2022-03-24 08:06:16 +0100 <rvbcldud> This is my current function
2022-03-24 08:06:18 +0100 <abastro[m]> (Guess I have to delay my explanation)
2022-03-24 08:06:23 +0100 <rvbcldud> Sorry!
2022-03-24 08:06:25 +0100 <Axman6> @where paste
2022-03-24 08:06:25 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2022-03-24 08:06:26 +0100 <abastro[m]> (I mean on my problem)
2022-03-24 08:06:40 +0100zaquest(~notzaques@5.130.79.72) (Quit: Leaving)
2022-03-24 08:06:45 +0100 <abastro[m]> Sorry for confusion, I was describing my algorithm when you came in.
2022-03-24 08:07:19 +0100 <rvbcldud> https://paste.tomsmeding.com/blIuVvbM
2022-03-24 08:07:20 +0100 <abastro[m]> I meant to say, I'll explain my algorithm later. What was your problem, rvbcldud? As suggested above, could you make a paste?
2022-03-24 08:07:33 +0100 <abastro[m]> (Oops, bridge delay)
2022-03-24 08:08:19 +0100zaquest(~notzaques@5.130.79.72)
2022-03-24 08:08:40 +0100 <abastro[m]> You want a criteria to decide which side you'd add the element to, I think.
2022-03-24 08:08:43 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 08:08:45 +0100 <rvbcldud> Basically, after it sees that both the right and left are not Leaves ... I want it to add the element to the right and left, alternating
2022-03-24 08:08:50 +0100 <rvbcldud> Basically
2022-03-24 08:09:18 +0100 <Axman6> is it possible to do this from the bottom up?
2022-03-24 08:09:19 +0100 <rvbcldud> Perhaps that is not the best explanation or implementation of what I want to accomplish, but I hope you get what I am saying
2022-03-24 08:09:24 +0100 <Axman6> rather than top down?
2022-03-24 08:09:42 +0100 <abastro[m]> What is "alternating" here? So you insert into the tree many times?
2022-03-24 08:09:50 +0100 <rvbcldud> I am sure, what would you do?
2022-03-24 08:10:20 +0100 <Axman6> given treeInsert 0 [1,2,3,4,5], what should we get back?
2022-03-24 08:11:07 +0100 <rvbcldud> I apologize, I did not include my type signature
2022-03-24 08:11:29 +0100 <Axman6> uh yeah, that's definitely not the right way to call that
2022-03-24 08:11:33 +0100pottsy(~pottsy@2400:4050:b560:3700:95a9:bb69:4209:aa9b)
2022-03-24 08:11:49 +0100 <rvbcldud> treeInsert takes an Integer, which we don't have to worry about right now, the element we want to add, and the current list
2022-03-24 08:12:15 +0100 <Axman6> list? not tree?
2022-03-24 08:12:37 +0100 <rvbcldud> So I would call something like: treeInsert 0 "B" (Node 1 Leaf "A" Leaf)
2022-03-24 08:12:40 +0100 <rvbcldud> Tree, my bad
2022-03-24 08:13:19 +0100mvk(~mvk@2607:fea8:5cc3:7e00::7980) (Ping timeout: 260 seconds)
2022-03-24 08:13:43 +0100mmhat(~mmh@55d4e56a.access.ecotel.net)
2022-03-24 08:13:57 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:4b28:938b:c022:9725)
2022-03-24 08:13:59 +0100 <rvbcldud> Does that make sense? The output would be (Node 1 (Node 0 Leaf "B" Leaf) "A" Leaf)
2022-03-24 08:14:30 +0100 <Axman6> sure - what should happen if you insert "C" into that result?
2022-03-24 08:15:00 +0100 <rvbcldud> We would then have (Node 1 (Node 0 Leaf "B" Leaf) "A" (Node 0 Leaf "C" Leaf)
2022-03-24 08:15:15 +0100 <Axman6> and then "D"?
2022-03-24 08:15:16 +0100 <rvbcldud> But NOW I want to add "D" to the left of B
2022-03-24 08:15:22 +0100 <abastro[m]> Oh, so you want some kind of balance?
2022-03-24 08:15:26 +0100 <rvbcldud> Exactly
2022-03-24 08:15:39 +0100 <Axman6> and "E" would go to the right of "B"?
2022-03-24 08:15:54 +0100 <Axman6> or somewhere right of "A"?
2022-03-24 08:16:05 +0100 <rvbcldud> I would probably want to put it to the left or right of "c"
2022-03-24 08:16:39 +0100 <Axman6> this feels a lot like a finger tree
2022-03-24 08:16:50 +0100 <Axman6> which Data.Sequence is built on
2022-03-24 08:17:06 +0100 <abastro[m]> Do you have a specific kind of balance you need? Like https://en.wikipedia.org/wiki/AVL_tree or something
2022-03-24 08:17:13 +0100 <abastro[m]> Oh wait. Finger tree?
2022-03-24 08:18:13 +0100 <rvbcldud> I don't need a specific balance, I just want balance ... preferably one that isn't too difficult to understand
2022-03-24 08:18:20 +0100 <Axman6> rvbcldud: if you stored the size of each side, then you could do this pretty easily
2022-03-24 08:18:21 +0100 <rvbcldud> I am learning haskell, after all
2022-03-24 08:18:57 +0100 <rvbcldud> like writing a function that calculates the height, given the side
2022-03-24 08:18:57 +0100 <Axman6> each Node stoores how many elements are in it and below it, and then you always inset into the side with the smaller size
2022-03-24 08:19:09 +0100 <Axman6> use a smart constructor to ensure those sizes are always kepy up to date
2022-03-24 08:19:12 +0100 <Axman6> kept*
2022-03-24 08:19:40 +0100vorpuni(~pvorp@2001:861:3881:c690:72bf:4d2e:4b07:eb6c)
2022-03-24 08:21:41 +0100 <Axman6> data Tree a = Node { size :: Int, num :: Int, left :: Tree a, elem :: a, right :: Tree a } | Leaf; node :: Int -> a -> Tree a -> Tree a -> Tree a; node n a l r = Node {size = 1 + s l + s r, num = n, left = l, elem = a, right = r} where s Leaf = 0; s Node{size} = size
2022-03-24 08:23:32 +0100 <Axman6> then to insert, you so something like: insert a (Node s n l e r) | if s l <= s r = node n a (insert a l) r (a lot missing here because I need to leave)
2022-03-24 08:24:38 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-03-24 08:25:50 +0100mmhat(~mmh@55d4e56a.access.ecotel.net) (Ping timeout: 272 seconds)
2022-03-24 08:25:52 +0100 <rvbcldud> I think I figured out a similar implementation ... although yours is a bit tricky to read for me
2022-03-24 08:26:16 +0100 <rvbcldud> https://paste.tomsmeding.com/DMmBJMZQ
2022-03-24 08:32:47 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-03-24 08:36:35 +0100 <rvbcldud> Thanks for all your help guys!! It works
2022-03-24 08:37:40 +0100neurocyte0917090(~neurocyte@IP-094046076012.dynamic.medianet-world.de)
2022-03-24 08:37:41 +0100neurocyte0917090(~neurocyte@IP-094046076012.dynamic.medianet-world.de) (Changing host)
2022-03-24 08:37:41 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-03-24 08:38:19 +0100Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
2022-03-24 08:42:08 +0100gehmehgeh(~user@user/gehmehgeh)
2022-03-24 08:43:26 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-24 08:43:41 +0100Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se)
2022-03-24 08:44:08 +0100ccntrq(~Thunderbi@2a01:c22:8401:2f00:927:6de8:e589:73f0)
2022-03-24 08:45:20 +0100lainon(~lainon@2601:7c0:c500:4d20::ffef)
2022-03-24 08:47:51 +0100Pickchea(~private@user/pickchea) (Ping timeout: 260 seconds)
2022-03-24 08:49:43 +0100machinedgod(~machinedg@24.105.81.50)
2022-03-24 08:52:34 +0100zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94)
2022-03-24 08:54:59 +0100mikoto-chan(~mikoto-ch@84.199.144.235)
2022-03-24 08:58:14 +0100cfricke(~cfricke@user/cfricke)
2022-03-24 09:00:21 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2022-03-24 09:02:39 +0100july541[m](~july541ma@2001:470:69fc:105::1:e416)
2022-03-24 09:03:15 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-03-24 09:04:24 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-24 09:06:27 +0100pnotequalnp(~pnotequal@207-118-121-128.dyn.centurytel.net) (Ping timeout: 256 seconds)
2022-03-24 09:11:41 +0100alp(~alp@user/alp)
2022-03-24 09:13:44 +0100MajorBiscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e)
2022-03-24 09:15:18 +0100michalz(~michalz@185.246.204.61)
2022-03-24 09:15:33 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-24 09:16:08 +0100Major_Biscuit(~MajorBisc@c-001-015-045.client.tudelft.eduvpn.nl)
2022-03-24 09:19:56 +0100MajorBiscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Ping timeout: 245 seconds)
2022-03-24 09:24:55 +0100lainon(~lainon@2601:7c0:c500:4d20::ffef) (Ping timeout: 256 seconds)
2022-03-24 09:25:17 +0100fendor(~fendor@178.115.46.236.wireless.dyn.drei.com)
2022-03-24 09:27:22 +0100mc47(~mc47@xmonad/TheMC47)
2022-03-24 09:31:59 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-03-24 09:32:15 +0100ccntrq(~Thunderbi@2a01:c22:8401:2f00:927:6de8:e589:73f0) (Ping timeout: 252 seconds)
2022-03-24 09:32:33 +0100ccntrq(~Thunderbi@2a01:c22:897f:4a00:b1c:1884:168b:a47f)
2022-03-24 09:36:22 +0100mmhat(~mmh@55d4e56a.access.ecotel.net)
2022-03-24 09:38:37 +0100jpds1(~jpds@gateway/tor-sasl/jpds)
2022-03-24 09:38:55 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-03-24 09:42:10 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-03-24 09:42:18 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-03-24 09:44:09 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-24 09:48:31 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 260 seconds)
2022-03-24 09:48:48 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-03-24 09:48:59 +0100acidjnk(~acidjnk@p200300d0c7049f7644ba050f51358f71.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-24 09:54:30 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 272 seconds)
2022-03-24 09:58:52 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 09:59:51 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 10:00:26 +0100FernandoChu[m](~ryunaqmat@2001:470:69fc:105::1:4dc0) (Quit: You have been kicked for being idle)
2022-03-24 10:00:26 +0100MosheTeutsch[m](~moteutsch@2001:470:69fc:105::1:c250) (Quit: You have been kicked for being idle)
2022-03-24 10:04:12 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-24 10:06:27 +0100dcoutts__(~duncan@host86-167-90-249.range86-167.btcentralplus.com)
2022-03-24 10:07:34 +0100gardnan(~max@c-75-70-252-201.hsd1.co.comcast.net) (Quit: Lost terminal)
2022-03-24 10:08:57 +0100dcoutts_(~duncan@host86-167-90-249.range86-167.btcentralplus.com) (Ping timeout: 240 seconds)
2022-03-24 10:09:50 +0100_xor(~xor@74.215.232.169)
2022-03-24 10:12:43 +0100AlexZenon(~alzenon@178.34.150.116)
2022-03-24 10:12:54 +0100hsw(~hsw@112-104-141-52.adsl.dynamic.seed.net.tw) (Remote host closed the connection)
2022-03-24 10:13:10 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 10:13:24 +0100hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
2022-03-24 10:14:39 +0100hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Client Quit)
2022-03-24 10:14:51 +0100hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
2022-03-24 10:16:19 +0100_xor(~xor@74.215.232.169) (Quit: brb)
2022-03-24 10:21:40 +0100vglfr(~vglfr@88.155.118.203) (Read error: Connection reset by peer)
2022-03-24 10:21:53 +0100acidjnk(~acidjnk@p200300d0c7049f76ad7ddf43206a2c16.dip0.t-ipconnect.de)
2022-03-24 10:22:52 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 10:23:31 +0100karim(~karim@156.200.223.2) (Ping timeout: 260 seconds)
2022-03-24 10:23:46 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-24 10:29:32 +0100Alex_test(~al_test@178.34.150.116)
2022-03-24 10:29:43 +0100AlexNoo(~AlexNoo@178.34.150.116)
2022-03-24 10:31:14 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Quit: Leaving)
2022-03-24 10:34:47 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-24 10:37:46 +0100 <siers> is it possible to write code that would make a list that would contain all the cases of an ADT and verify this at compile time? you can check that all inputs of an ADT are handled, but I assume not this
2022-03-24 10:40:10 +0100 <merijn> siers: What is the use case, exactly?
2022-03-24 10:41:58 +0100 <siers> merijn, I want the compiler to remind me to write tests about each case for code that handles that data structure
2022-03-24 10:42:25 +0100 <merijn> -Wall warns about missed cases already?
2022-03-24 10:46:19 +0100 <lortabac> siers: what do you want to do with all the constructors? just print them?
2022-03-24 10:49:39 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-03-24 10:50:07 +0100vglfr(~vglfr@88.155.118.203) (Read error: Connection reset by peer)
2022-03-24 10:50:19 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 10:51:23 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 10:55:29 +0100toulene9(~toulene@user/toulene)
2022-03-24 10:55:49 +0100toulene(~toulene@user/toulene) (Ping timeout: 240 seconds)
2022-03-24 10:55:49 +0100toulene9toulene
2022-03-24 10:59:16 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-03-24 11:01:00 +0100Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 272 seconds)
2022-03-24 11:11:18 +0100romesrf(~romes@2001:8a0:6d13:9700:6d76:5070:aa75:b09)
2022-03-24 11:12:51 +0100haskl(~haskl@user/haskl) (Ping timeout: 245 seconds)
2022-03-24 11:13:26 +0100Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se)
2022-03-24 11:15:48 +0100vglfr(~vglfr@88.155.118.203) (Read error: Connection reset by peer)
2022-03-24 11:15:55 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 11:16:48 +0100notzmv(~zmv@user/notzmv)
2022-03-24 11:19:19 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
2022-03-24 11:19:20 +0100vglfr(~vglfr@88.155.118.203) (Read error: Connection reset by peer)
2022-03-24 11:19:34 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 11:21:07 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-03-24 11:23:18 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-03-24 11:23:37 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-24 11:29:48 +0100vglfr(~vglfr@88.155.118.203) (Read error: Connection reset by peer)
2022-03-24 11:29:57 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 11:30:00 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 11:30:30 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 11:32:13 +0100vglfr(~vglfr@88.155.118.203) (Read error: Connection reset by peer)
2022-03-24 11:32:44 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 11:33:23 +0100zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) (Quit: Konversation terminated!)
2022-03-24 11:35:11 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-03-24 11:35:46 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-24 11:36:12 +0100haskl(~haskl@user/haskl)
2022-03-24 11:37:55 +0100mmhat(~mmh@55d4e56a.access.ecotel.net) (Quit: WeeChat 3.4.1)
2022-03-24 11:39:13 +0100 <maerwald> don't worry, technically the compiler fills out missed cases for you :D
2022-03-24 11:39:49 +0100 <maerwald> hey, I wonder if you could hook wingman into GHC such that it tries to fill out those instead of throwing error
2022-03-24 11:40:04 +0100vglfr(~vglfr@88.155.118.203) (Read error: Connection reset by peer)
2022-03-24 11:40:16 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 11:42:17 +0100vglfr(~vglfr@88.155.118.203) (Read error: Connection reset by peer)
2022-03-24 11:42:48 +0100vglfr(~vglfr@88.155.118.203)
2022-03-24 11:45:04 +0100 <dminuoso> Haha
2022-03-24 11:45:37 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2022-03-24 11:45:50 +0100 <dminuoso> Who wouldn't want their compiler to provide a guessed implementation for missing code paths.
2022-03-24 11:46:31 +0100 <kuribas> What was the limitation again with higher kinded types? That type families have to be fully applied?
2022-03-24 11:46:37 +0100 <maerwald> dminuoso: a truly lazy language
2022-03-24 11:47:06 +0100 <dminuoso> maerwald: Why not rig GPT3 into the runtime, and all you do is just write a README.md?
2022-03-24 11:47:23 +0100vglfr(~vglfr@88.155.118.203) (Ping timeout: 256 seconds)
2022-03-24 11:47:33 +0100 <dminuoso> This is where we are headed already.
2022-03-24 11:47:42 +0100 <tomsmeding> not into the runtime, hopefully
2022-03-24 11:47:56 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
2022-03-24 11:47:57 +0100 <kuribas> Does that include data families?
2022-03-24 11:48:02 +0100 <[exa]> tomsmeding: adds situational awareness
2022-03-24 11:48:30 +0100xff0x(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
2022-03-24 11:48:32 +0100 <kuribas> like MyHKD f = MyHKD {field1 :: f Int, field2 :: f Double}
2022-03-24 11:49:27 +0100 <kuribas> f cannot be a type family?
2022-03-24 11:49:52 +0100 <tomsmeding> f cannot be a type family that does case analysis on its argument
2022-03-24 11:50:04 +0100 <maerwald> dminuoso: does it mean I won't have to code anymore?
2022-03-24 11:50:23 +0100 <tomsmeding> like, you could have `type family F a where F a = a` and then `MyHKD (F Maybe)`
2022-03-24 11:50:30 +0100 <kuribas> tomsmeding: so that excludes a data family?
2022-03-24 11:50:47 +0100 <tomsmeding> because then F is fully applied, even though it resolves to something of kind * -> *
2022-03-24 11:50:56 +0100 <tomsmeding> I guess so
2022-03-24 11:50:58 +0100 <romesrf> program synthesis is a real thing :) it does just the kind of thing you mentioined
2022-03-24 11:51:24 +0100 <kuribas> tomsmeding: now I wrap it with a newtype, and that works :)
2022-03-24 11:51:29 +0100 <tomsmeding> precisely :)
2022-03-24 11:51:31 +0100 <maerwald> alright, I'll look for another job then
2022-03-24 11:51:33 +0100 <tomsmeding> that's the fix usually
2022-03-24 11:51:37 +0100 <dminuoso> maerwald: To be fair, this already exists. It's called management position. :p
2022-03-24 11:52:07 +0100 <tomsmeding> it will be many years until I attain a management position
2022-03-24 11:52:18 +0100 <dminuoso> If you want it at all.
2022-03-24 11:52:25 +0100 <tomsmeding> many could be >100
2022-03-24 11:52:29 +0100Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 256 seconds)
2022-03-24 11:52:35 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-03-24 11:52:43 +0100 <maerwald> so Haskell is dying after all!
2022-03-24 11:55:03 +0100Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se)
2022-03-24 11:56:03 +0100 <abastro[m]> Whhh
2022-03-24 11:56:36 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-24 11:56:39 +0100 <maerwald> an AI will be doing our work and this channel will be occupied by managers instead
2022-03-24 11:58:02 +0100 <abastro[m]> Indeed
2022-03-24 11:59:05 +0100 <dminuoso> Heck, if we have plugged GPT into writing code, we might as well go all the way and have just a bunch of GPT3 bots talk to each other here in IRC.
2022-03-24 11:59:11 +0100 <maerwald> maybe we need to destroy all AI technology to save Haskell
2022-03-24 11:59:13 +0100 <dminuoso> No need to converse either.
2022-03-24 11:59:42 +0100 <dminuoso> We already have the occasional markov chain bot :)
2022-03-24 12:01:19 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-03-24 12:02:26 +0100 <jackdk> dminuoso: Why is it you say that We already have the occasional markov chain bot :)?
2022-03-24 12:03:24 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-03-24 12:06:40 +0100razetime(~quassel@117.193.6.156)
2022-03-24 12:07:21 +0100chenqisu1(~chenqisu1@183.217.201.88) (Quit: Leaving)
2022-03-24 12:07:26 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-03-24 12:09:56 +0100 <abastro[m]> I mean
2022-03-24 12:10:07 +0100 <abastro[m]> AI would not only threaten haskell
2022-03-24 12:10:22 +0100 <abastro[m]> It would threaten most fields of study!
2022-03-24 12:10:41 +0100 <abastro[m]> Clearly, only looks would matter afterwards
2022-03-24 12:12:40 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-24 12:12:47 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-24 12:13:33 +0100In0perable(~PLAYER_1@fancydata.science) (Quit: All your buffer are belong to us!)
2022-03-24 12:14:18 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-24 12:20:23 +0100Inoperable(~PLAYER_1@fancydata.science)
2022-03-24 12:28:12 +0100 <romesrf> dminuoso: that's a funny idea for an IRC channel. Imagine the conversations
2022-03-24 12:29:23 +0100xff0x(~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
2022-03-24 12:29:29 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-24 12:29:36 +0100 <kuribas> I don't think AI will threaten anything. Except democracy, through facebook...
2022-03-24 12:29:37 +0100 <geekosaur> M-x psychoanalyze-pinhead
2022-03-24 12:29:51 +0100 <Franciman> M-x cure-rsi
2022-03-24 12:30:00 +0100 <Franciman> too futuristic?
2022-03-24 12:32:25 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
2022-03-24 12:33:21 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
2022-03-24 12:33:53 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 12:39:57 +0100 <abastro[m]> I thought we were talking satiristically
2022-03-24 12:40:07 +0100 <abastro[m]> Satirically*
2022-03-24 12:41:35 +0100romesrf(~romes@2001:8a0:6d13:9700:6d76:5070:aa75:b09) (Quit: WeeChat 3.4)
2022-03-24 12:43:41 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 245 seconds)
2022-03-24 12:44:18 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-24 12:44:48 +0100 <dminuoso> jackdk: Recall fog?
2022-03-24 12:45:54 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-24 12:47:47 +0100Midjak(~Midjak@82.66.147.146)
2022-03-24 12:48:39 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-03-24 12:50:16 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 12:51:34 +0100acidjnk(~acidjnk@p200300d0c7049f76ad7ddf43206a2c16.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-24 12:54:05 +0100lainon(~lainon@2601:7c0:c500:4d20::ffef)
2022-03-24 12:54:13 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-03-24 12:54:31 +0100Major_Biscuit(~MajorBisc@c-001-015-045.client.tudelft.eduvpn.nl) (Ping timeout: 245 seconds)
2022-03-24 12:54:49 +0100alp(~alp@user/alp) (Ping timeout: 256 seconds)
2022-03-24 12:57:38 +0100Pickchea(~private@user/pickchea)
2022-03-24 12:59:13 +0100Major_Biscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e)
2022-03-24 13:00:12 +0100euandreh(~euandreh@2804:14c:33:9fe5:16b7:58d0:d6fd:f99c) (Ping timeout: 240 seconds)
2022-03-24 13:03:35 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-03-24 13:03:52 +0100 <siers> merijn, Wall warns about code that is not added, but not about tests, because the test is dependent on the values which, if a new case is added, won't show a warning, because the types would be satisfied
2022-03-24 13:05:40 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 13:07:46 +0100boxscape_(~boxscape_@vpn-44-78.hq.eso.org)
2022-03-24 13:07:57 +0100 <lortabac> siers: can you give an example? I don't understand what you mean
2022-03-24 13:09:11 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-03-24 13:09:19 +0100 <siers> "data X = A | B; f A = 1; f B = 2". if you add "| C" to X later, you'll be reminded by the compiler to update f, but not reminded to add a C case in tests
2022-03-24 13:09:19 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 13:09:54 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 13:11:08 +0100 <lortabac> siers: what's the difference between tests and the rest?
2022-03-24 13:11:24 +0100 <abastro[m]> Which tests?
2022-03-24 13:11:32 +0100 <lortabac> maybe they don't do pattern-matching?
2022-03-24 13:11:37 +0100 <abastro[m]> The test project?
2022-03-24 13:11:47 +0100 <siers> unit tests
2022-03-24 13:11:58 +0100 <siers> the test code would be "f A `assert` 1; f B `assert` 2".
2022-03-24 13:12:09 +0100vglfr(~vglfr@46.96.167.246)
2022-03-24 13:12:17 +0100 <abastro[m]> (I mean, yourproject:test or something)
2022-03-24 13:12:22 +0100 <lortabac> maybe you forgot to enable -Wall in the tests
2022-03-24 13:12:45 +0100 <siers> what would the test code look like? if the tests look like I wrote, Wall won't help
2022-03-24 13:12:57 +0100 <siers> am I completely off base?
2022-03-24 13:13:09 +0100 <lortabac> oh sorry I misread your tests :D
2022-03-24 13:13:15 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-03-24 13:13:18 +0100 <lortabac> now I understand
2022-03-24 13:13:37 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-03-24 13:13:55 +0100 <siers> suppose you had a list of [(X, Int)] for test cases – I would like to know that the Xs had all possible values exactly
2022-03-24 13:13:59 +0100 <abastro[m]> Oh, ya that is not pattern matching
2022-03-24 13:14:06 +0100 <abastro[m]> If you are just testing concrete cases
2022-03-24 13:14:08 +0100 <siers> I am here to be told "no can do"
2022-03-24 13:14:17 +0100 <lortabac> siers: it's doable
2022-03-24 13:14:22 +0100 <abastro[m]> Perhaps assert is not a good way to test that
2022-03-24 13:14:23 +0100 <siers> template haskell?
2022-03-24 13:14:39 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-03-24 13:14:39 +0100 <lortabac> in fact we have a similar problem in my team
2022-03-24 13:14:39 +0100 <siers> abastro[m], tests are literally all asserts
2022-03-24 13:14:42 +0100 <abastro[m]> Though `f` is possibly too simple to test imho
2022-03-24 13:14:57 +0100 <lortabac> and the solution is simply that these cases must be checked during code reviews
2022-03-24 13:15:28 +0100 <siers> lortabac, haha, yeah, that's a soft solution. I am just checking that there is no obvious way to get the compiler to tell you
2022-03-24 13:15:48 +0100 <lortabac> you can use Data.Data
2022-03-24 13:15:50 +0100vysn(~vysn@user/vysn)
2022-03-24 13:15:55 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-03-24 13:16:20 +0100 <lortabac> find the number of constructors with Data.Data and compare with the number of unique constructors in the tests
2022-03-24 13:16:38 +0100 <abastro[m]> Oh, I thought those tests are like equivalent to..
2022-03-24 13:17:00 +0100acidjnk(~acidjnk@p200300d0c7049f76ad7ddf43206a2c16.dip0.t-ipconnect.de)
2022-03-24 13:17:03 +0100 <siers> lortabac, I guess that is the solution, yeah
2022-03-24 13:17:14 +0100 <abastro[m]> g A = fA
2022-03-24 13:17:14 +0100 <abastro[m]> g B = fB
2022-03-24 13:17:14 +0100 <abastro[m]> g C = fC
2022-03-24 13:17:14 +0100 <abastro[m]> And tests that f == g
2022-03-24 13:17:23 +0100 <siers> that is kind of what I was thinking was the only way
2022-03-24 13:17:56 +0100 <abastro[m]> Uhm tests are asserts? Oh wait it is.. duh me
2022-03-24 13:18:01 +0100 <lortabac> there is a function called 'dataTypeConstrs', it should do the job
2022-03-24 13:18:04 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-24 13:18:43 +0100 <abastro[m]> Right, if the ADT is complex, approach of defining g and testing against it might not work
2022-03-24 13:18:58 +0100 <siers> lortabac, nice
2022-03-24 13:19:56 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Client Quit)
2022-03-24 13:21:28 +0100 <lortabac> however the solution proposed by abastro[m] is simpler
2022-03-24 13:21:29 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Read error: Connection reset by peer)
2022-03-24 13:21:48 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2022-03-24 13:21:48 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-03-24 13:21:52 +0100allbery_bgeekosaur
2022-03-24 13:21:56 +0100 <siers> complex meaning nested?
2022-03-24 13:22:09 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-24 13:22:15 +0100 <lortabac> erm no, you still need to verify that all constructors are fed to 'g'
2022-03-24 13:22:27 +0100 <lortabac> so you are back to square 1
2022-03-24 13:22:59 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fbf8-224.dhcp.inet.fi)
2022-03-24 13:24:26 +0100 <abastro[m]> I mean, g is pattern matching function.
2022-03-24 13:24:34 +0100 <abastro[m]> So it is subjected to exhaustiveness checker
2022-03-24 13:24:46 +0100 <abastro[m]> Problem is, ofc, when you dislike having a function g
2022-03-24 13:25:02 +0100 <lortabac> yes, but if you want to test all the cases you need to do 'g A', 'g B', 'g C'
2022-03-24 13:25:13 +0100 <lortabac> and the compiler doesn't check that
2022-03-24 13:25:44 +0100 <siers> you write map assert listTestCases and that's kind of taken care of, because it don't need changing the next time something's added to the ADT and you just check that the list of test cases is long enough
2022-03-24 13:25:51 +0100vglfr(~vglfr@46.96.167.246) (Read error: Connection reset by peer)
2022-03-24 13:26:04 +0100vglfr(~vglfr@46.96.167.246)
2022-03-24 13:26:27 +0100 <lortabac> yeah, so at some point you need some trick like the one with Data.Data
2022-03-24 13:27:15 +0100 <lortabac> otherwise you can't check that listTestCases contains all the constructors
2022-03-24 13:27:46 +0100 <siers> yes, that's the puzzle piece I was wondering about, so my inquiry is resolved
2022-03-24 13:28:19 +0100 <jackdk> dminuoso: I think so, but mostly I was LARPing the chatty doctor program I had in my emacs once
2022-03-24 13:29:09 +0100CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-24 13:30:10 +0100 <abastro[m]> I guess I need to learn more about testing
2022-03-24 13:34:20 +0100mmhat(~mmh@55d4e56a.access.ecotel.net)
2022-03-24 13:34:50 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 13:37:07 +0100mmhat(~mmh@55d4e56a.access.ecotel.net) (Client Quit)
2022-03-24 13:38:37 +0100mmhat(~mmh@55d4e56a.access.ecotel.net)
2022-03-24 13:42:37 +0100vglfr(~vglfr@46.96.167.246) (Read error: Connection reset by peer)
2022-03-24 13:42:48 +0100vglfr(~vglfr@46.96.167.246)
2022-03-24 13:43:00 +0100dispater(~dispater@user/brprice) (Ping timeout: 240 seconds)
2022-03-24 13:43:00 +0100orcus(~orcus@user/brprice) (Ping timeout: 240 seconds)
2022-03-24 13:43:02 +0100lambdabot(~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
2022-03-24 13:44:12 +0100dispater(~dispater@user/brprice)
2022-03-24 13:44:44 +0100orcus(~orcus@user/brprice)
2022-03-24 13:45:10 +0100lambdabot(~lambdabot@silicon.int-e.eu)
2022-03-24 13:45:10 +0100lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2022-03-24 13:45:10 +0100lambdabot(~lambdabot@haskell/bot/lambdabot)
2022-03-24 13:46:31 +0100Major_Biscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Ping timeout: 260 seconds)
2022-03-24 13:48:26 +0100Major_Biscuit(~MajorBisc@c-001-015-045.client.tudelft.eduvpn.nl)
2022-03-24 13:48:42 +0100jakalx(~jakalx@base.jakalx.net)
2022-03-24 13:49:49 +0100vglfr(~vglfr@46.96.167.246) (Read error: Connection reset by peer)
2022-03-24 13:50:24 +0100vglfr(~vglfr@46.96.167.246)
2022-03-24 13:50:43 +0100belphegor666(~satan@user/belphegor666) (Ping timeout: 260 seconds)
2022-03-24 13:50:58 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-24 13:55:11 +0100vglfr(~vglfr@46.96.167.246) (Read error: Connection reset by peer)
2022-03-24 13:55:20 +0100vglfr(~vglfr@46.96.167.246)
2022-03-24 13:57:30 +0100vglfr(~vglfr@46.96.167.246) (Read error: Connection reset by peer)
2022-03-24 13:57:42 +0100vglfr(~vglfr@46.96.167.246)
2022-03-24 14:02:47 +0100vglfr(~vglfr@46.96.167.246) (Read error: Connection reset by peer)
2022-03-24 14:03:09 +0100vglfr(~vglfr@46.96.167.246)
2022-03-24 14:04:18 +0100fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
2022-03-24 14:04:40 +0100deadmarshal_(~deadmarsh@95.38.112.219) (Ping timeout: 272 seconds)
2022-03-24 14:05:39 +0100acidjnk(~acidjnk@p200300d0c7049f76ad7ddf43206a2c16.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-24 14:06:36 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-24 14:07:27 +0100ystael(~ystael@user/ystael) (Quit: Lost terminal)
2022-03-24 14:07:31 +0100vglfr(~vglfr@46.96.167.246) (Ping timeout: 260 seconds)
2022-03-24 14:08:05 +0100vglfr(~vglfr@46.96.132.108)
2022-03-24 14:08:05 +0100__monty__(~toonn@user/toonn)
2022-03-24 14:08:54 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 14:10:08 +0100boxscape_25(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-03-24 14:10:34 +0100vglfr(~vglfr@46.96.132.108) (Read error: Connection reset by peer)
2022-03-24 14:10:46 +0100vglfr(~vglfr@46.96.132.108)
2022-03-24 14:11:43 +0100boxscape_(~boxscape_@vpn-44-78.hq.eso.org) (Ping timeout: 260 seconds)
2022-03-24 14:13:07 +0100__monty__(~toonn@user/toonn) (Ping timeout: 260 seconds)
2022-03-24 14:14:03 +0100vysn(~vysn@user/vysn) (Ping timeout: 260 seconds)
2022-03-24 14:15:47 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 14:15:59 +0100vysn(~vysn@user/vysn)
2022-03-24 14:16:21 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 14:17:19 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-03-24 14:19:16 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 14:19:21 +0100vglfr(~vglfr@46.96.132.108) (Ping timeout: 252 seconds)
2022-03-24 14:25:43 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 260 seconds)
2022-03-24 14:30:07 +0100alp(~alp@user/alp)
2022-03-24 14:32:31 +0100pottsy(~pottsy@2400:4050:b560:3700:95a9:bb69:4209:aa9b) (Remote host closed the connection)
2022-03-24 14:34:35 +0100pottsy(~pottsy@2400:4050:b560:3700:95a9:bb69:4209:aa9b)
2022-03-24 14:35:49 +0100deadmarshal_(~deadmarsh@95.38.112.219)
2022-03-24 14:40:03 +0100deadmarshal_(~deadmarsh@95.38.112.219) (Ping timeout: 250 seconds)
2022-03-24 14:48:58 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-24 14:49:31 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-03-24 14:49:31 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-03-24 14:49:31 +0100wroathe(~wroathe@user/wroathe)
2022-03-24 14:53:15 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-03-24 14:54:09 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-03-24 14:55:14 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-03-24 15:00:35 +0100zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94)
2022-03-24 15:01:46 +0100lainon(~lainon@2601:7c0:c500:4d20::ffef) (Quit: WeeChat 3.4)
2022-03-24 15:03:55 +0100lumberjack123(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-03-24 15:05:02 +0100Major_Biscuit(~MajorBisc@c-001-015-045.client.tudelft.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-24 15:07:25 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-03-24 15:16:26 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 15:19:44 +0100Major_Biscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e)
2022-03-24 15:21:43 +0100mikoto-chan(~mikoto-ch@84.199.144.235) (Ping timeout: 260 seconds)
2022-03-24 15:22:29 +0100vysn(~vysn@user/vysn) (Ping timeout: 256 seconds)
2022-03-24 15:24:17 +0100vysn(~vysn@user/vysn)
2022-03-24 15:25:06 +0100benin(~benin@183.82.207.30) (Quit: Ping timeout (120 seconds))
2022-03-24 15:27:34 +0100dextaa_(~dextaa@user/dextaa)
2022-03-24 15:30:07 +0100benin(~benin@183.82.207.30)
2022-03-24 15:33:54 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-03-24 15:33:54 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2022-03-24 15:33:57 +0100allbery_bgeekosaur
2022-03-24 15:34:53 +0100Sgeo(~Sgeo@user/sgeo)
2022-03-24 15:40:35 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2022-03-24 15:40:53 +0100nicbk(~nicbk@user/nicbk)
2022-03-24 15:42:13 +0100CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-03-24 15:47:51 +0100Pickchea(~private@user/pickchea) (Ping timeout: 260 seconds)
2022-03-24 15:49:52 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Quit: Connection closed)
2022-03-24 15:50:11 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-03-24 15:50:11 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-03-24 15:50:11 +0100wroathe(~wroathe@user/wroathe)
2022-03-24 15:50:16 +0100rkrishnan(~user@2402:e280:215c:2cd:4a3a:c3a9:68b9:db9a)
2022-03-24 15:50:20 +0100Digit(~user@user/digit) (Read error: Connection reset by peer)
2022-03-24 15:50:26 +0100acidjnk(~acidjnk@p200300d0c7049f76ad7ddf43206a2c16.dip0.t-ipconnect.de)
2022-03-24 15:56:24 +0100benin(~benin@183.82.207.30) (Quit: Ping timeout (120 seconds))
2022-03-24 15:59:25 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-03-24 16:01:17 +0100benin(~benin@183.82.207.30)
2022-03-24 16:11:55 +0100jpds1(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-03-24 16:12:48 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-03-24 16:13:22 +0100euandreh(~euandreh@2804:14c:33:9fe5:966d:f1e8:4bae:826f)
2022-03-24 16:14:03 +0100benin(~benin@183.82.207.30) (Quit: Ping timeout (120 seconds))
2022-03-24 16:14:22 +0100benin(~benin@183.82.207.30)
2022-03-24 16:14:53 +0100jpds1(~jpds@gateway/tor-sasl/jpds)
2022-03-24 16:15:05 +0100__monty__(~toonn@user/toonn)
2022-03-24 16:16:28 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-24 16:16:53 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-24 16:20:40 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 16:21:41 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 16:26:13 +0100bahamas(~lucian@84.232.140.158)
2022-03-24 16:26:45 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-03-24 16:27:26 +0100euandreh(~euandreh@2804:14c:33:9fe5:966d:f1e8:4bae:826f) (Ping timeout: 245 seconds)
2022-03-24 16:28:38 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-03-24 16:28:41 +0100euandreh(~euandreh@2804:14c:33:9fe5:4042:4584:26e0:bc36)
2022-03-24 16:31:15 +0100xkuru(~xkuru@user/xkuru)
2022-03-24 16:33:07 +0100Major_Biscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Ping timeout: 260 seconds)
2022-03-24 16:33:51 +0100cfricke(~cfricke@user/cfricke)
2022-03-24 16:34:44 +0100Major_Biscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e)
2022-03-24 16:34:57 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-24 16:36:38 +0100jpds1jpds
2022-03-24 16:41:55 +0100Pickchea(~private@user/pickchea)
2022-03-24 16:44:01 +0100ec(~ec@gateway/tor-sasl/ec)
2022-03-24 16:46:51 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 16:48:16 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-03-24 16:48:17 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:4b28:938b:c022:9725) (Quit: WeeChat 2.8)
2022-03-24 16:49:22 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-03-24 16:51:15 +0100nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-03-24 16:53:24 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-03-24 16:54:51 +0100nicbk(~nicbk@user/nicbk)
2022-03-24 17:00:46 +0100Pickchea(~private@user/pickchea) (Ping timeout: 245 seconds)
2022-03-24 17:03:20 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-03-24 17:04:06 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2022-03-24 17:04:46 +0100belphegor666(~satan@ip-046-223-003-068.um13.pools.vodafone-ip.de)
2022-03-24 17:04:55 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2022-03-24 17:05:48 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 272 seconds)
2022-03-24 17:08:20 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 17:08:54 +0100kilolympus(~kilolympu@31.205.200.235) (Quit: Quitting IRC :()
2022-03-24 17:08:55 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 17:09:12 +0100kilolympus(~kilolympu@31.205.200.235)
2022-03-24 17:10:09 +0100belphegor666(~satan@ip-046-223-003-068.um13.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2022-03-24 17:10:42 +0100razetime(~quassel@117.193.6.156) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-03-24 17:12:07 +0100belphegor666(~satan@ip-046-223-003-068.um13.pools.vodafone-ip.de)
2022-03-24 17:12:49 +0100Major_Biscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Ping timeout: 250 seconds)
2022-03-24 17:14:02 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-03-24 17:14:58 +0100Major_Biscuit(~MajorBisc@c-001-015-045.client.tudelft.eduvpn.nl)
2022-03-24 17:16:20 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 17:22:05 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-03-24 17:22:50 +0100Digit(~user@user/digit)
2022-03-24 17:23:41 +0100pottsy(~pottsy@2400:4050:b560:3700:95a9:bb69:4209:aa9b) (Ping timeout: 265 seconds)
2022-03-24 17:24:45 +0100maroloccio(~marolocci@pousada3ja.mma.com.br)
2022-03-24 17:26:19 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-03-24 17:28:24 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 17:29:05 +0100Codaraxis_(~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
2022-03-24 17:29:49 +0100acidjnk(~acidjnk@p200300d0c7049f76ad7ddf43206a2c16.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-03-24 17:29:52 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-03-24 17:30:17 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-03-24 17:31:39 +0100michalz(~michalz@185.246.204.61) (Read error: No route to host)
2022-03-24 17:33:18 +0100alp_(~alp@user/alp)
2022-03-24 17:33:43 +0100michalz(~michalz@185.246.204.109)
2022-03-24 17:33:56 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-24 17:34:11 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-24 17:34:26 +0100bahamas(~lucian@84.232.140.158)
2022-03-24 17:35:49 +0100alp(~alp@user/alp) (Ping timeout: 268 seconds)
2022-03-24 17:36:01 +0100ccntrq(~Thunderbi@2a01:c22:897f:4a00:b1c:1884:168b:a47f) (Remote host closed the connection)
2022-03-24 17:36:55 +0100nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-03-24 17:37:26 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-24 17:38:44 +0100gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net)
2022-03-24 17:42:11 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-24 17:45:02 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-03-24 17:45:25 +0100ec(~ec@gateway/tor-sasl/ec)
2022-03-24 17:45:35 +0100jtm(~jtm@user/jtm)
2022-03-24 17:46:21 +0100jiribenes(~jiribenes@rosa.jiribenes.com)
2022-03-24 17:46:57 +0100rkrishnan(~user@2402:e280:215c:2cd:4a3a:c3a9:68b9:db9a) (Ping timeout: 240 seconds)
2022-03-24 17:47:04 +0100alp(~alp@user/alp)
2022-03-24 17:48:29 +0100benin0(~benin@183.82.207.30)
2022-03-24 17:49:11 +0100alp_(~alp@user/alp) (Ping timeout: 260 seconds)
2022-03-24 17:50:01 +0100Hanicef(~gustaf@81-229-9-108-no92.tbcn.telia.com)
2022-03-24 17:50:03 +0100benin(~benin@183.82.207.30) (Ping timeout: 256 seconds)
2022-03-24 17:50:03 +0100benin0benin
2022-03-24 17:50:31 +0100belphegor666(~satan@ip-046-223-003-068.um13.pools.vodafone-ip.de) (Changing host)
2022-03-24 17:50:31 +0100belphegor666(~satan@user/belphegor666)
2022-03-24 17:51:00 +0100Guest94(~Guest94@94.54.249.160)
2022-03-24 17:51:31 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.4.1)
2022-03-24 17:51:31 +0100Guest9446(~Guest94@94.54.249.160)
2022-03-24 17:52:03 +0100Akiva(~Akiva@user/Akiva)
2022-03-24 17:52:28 +0100Guest94(~Guest94@94.54.249.160) (Client Quit)
2022-03-24 17:53:08 +0100Guest9446(~Guest94@94.54.249.160) ()
2022-03-24 17:53:14 +0100Guest9446(~Guest94@94.54.249.160)
2022-03-24 17:56:10 +0100gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
2022-03-24 17:58:48 +0100ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-03-24 17:59:07 +0100ec(~ec@gateway/tor-sasl/ec)
2022-03-24 17:59:31 +0100shiraeeshi(~shiraeesh@77.94.25.181)
2022-03-24 18:00:08 +0100ec(~ec@gateway/tor-sasl/ec) (Client Quit)
2022-03-24 18:00:20 +0100ec(~ec@gateway/tor-sasl/ec)
2022-03-24 18:09:17 +0100mbuf(~Shakthi@223.178.127.254) (Quit: Leaving)
2022-03-24 18:11:17 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 240 seconds)
2022-03-24 18:14:36 +0100cdsmith(~cdsmithma@2001:470:69fc:105::284)
2022-03-24 18:15:09 +0100 <cdsmith> Is there a way to get cabal to print the commands that it's running? I'm trying to get a different build system to do things that I know how to do with cabal.
2022-03-24 18:16:54 +0100 <cdsmith> (Specifically, building an so file for a c++ library that uses foreign exports from Haskell)
2022-03-24 18:17:08 +0100 <maerwald> cabal -v3?
2022-03-24 18:17:35 +0100 <cdsmith> Ah, I should have just tried --verbose before asking. That does it!
2022-03-24 18:18:37 +0100raym(~raym@user/raym) (Read error: Connection reset by peer)
2022-03-24 18:19:21 +0100raym(~raym@user/raym)
2022-03-24 18:19:31 +0100erts(~erts@user/erts)
2022-03-24 18:22:58 +0100fendor_(~fendor@178.115.44.78.wireless.dyn.drei.com)
2022-03-24 18:24:20 +0100boxscape_25boxscape__
2022-03-24 18:25:21 +0100fendor(~fendor@178.115.46.236.wireless.dyn.drei.com) (Ping timeout: 245 seconds)
2022-03-24 18:25:56 +0100vglfr(~vglfr@46.96.132.108)
2022-03-24 18:28:15 +0100Guest9446(~Guest94@94.54.249.160) (Quit: Client closed)
2022-03-24 18:28:32 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2022-03-24 18:29:17 +0100alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-03-24 18:29:41 +0100Benzi-Junior(~BenziJuni@dsl-149-64-179.hive.is)
2022-03-24 18:34:31 +0100Pickchea(~private@user/pickchea)
2022-03-24 18:34:51 +0100econo(uid147250@user/econo)
2022-03-24 18:41:58 +0100gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net)
2022-03-24 18:44:27 +0100Hanicef(~gustaf@81-229-9-108-no92.tbcn.telia.com) (Quit: leaving)
2022-03-24 18:45:14 +0100 <Putonlalla> How do you open issues or submit pull requests for this package? It doesn't have a `pngcairo` terminal and the author has made it impossible to add new instances. https://hackage.haskell.org/package/gnuplot
2022-03-24 18:47:25 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-24 18:47:28 +0100fendor_(~fendor@178.115.44.78.wireless.dyn.drei.com) (Remote host closed the connection)
2022-03-24 18:49:19 +0100 <geekosaur> email henning thielemann, I guess, since the listed repo and issue tracker both went away some years ago
2022-03-24 18:49:45 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 18:50:32 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 18:50:42 +0100 <Putonlalla> I need a few days to gather enough politeness to do that.
2022-03-24 18:51:40 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 18:52:54 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-03-24 18:53:16 +0100 <Putonlalla> The author should look at the `graphviz` package to learn how to make proper bindings.
2022-03-24 18:53:18 +0100 <geekosaur> yeh, I know that one only too well
2022-03-24 18:53:39 +0100 <geekosaur> henning is … opinionated about such things
2022-03-24 18:54:58 +0100chomwitt(~chomwitt@2a02:587:dc0d:b200:f874:1c07:de06:7cf8)
2022-03-24 18:55:32 +0100pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 240 seconds)
2022-03-24 18:56:25 +0100pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2022-03-24 18:57:59 +0100 <Putonlalla> Even looking past the stupid programming style, this issue would have never arisen if the package was engineered properly.
2022-03-24 18:58:20 +0100 <opqdonut> now I'm curious, how is it impossible to add new instances?
2022-03-24 18:58:42 +0100 <Putonlalla> The class is exported, but its methods are not.
2022-03-24 18:59:13 +0100 <opqdonut> ah
2022-03-24 18:59:28 +0100 <Putonlalla> It's the difference between `C` and `C (..)`.
2022-03-24 18:59:36 +0100 <opqdonut> yeah
2022-03-24 18:59:48 +0100fef(~thedawn@user/thedawn)
2022-03-24 19:02:42 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-03-24 19:03:29 +0100vicfred(~vicfred@user/vicfred)
2022-03-24 19:04:57 +0100vglfr(~vglfr@46.96.132.108) (Ping timeout: 240 seconds)
2022-03-24 19:08:26 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-03-24 19:09:50 +0100zebrag(~chris@user/zebrag)
2022-03-24 19:11:09 +0100bahamas(~lucian@84.232.140.158)
2022-03-24 19:14:18 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
2022-03-24 19:15:53 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 250 seconds)
2022-03-24 19:21:38 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 19:21:52 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net)
2022-03-24 19:22:16 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 19:24:54 +0100ph88^(~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Quit: Leaving)
2022-03-24 19:24:57 +0100boxscape__(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-03-24 19:25:49 +0100Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-03-24 19:26:24 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-03-24 19:26:32 +0100Codaraxis_(~Codaraxis@user/codaraxis)
2022-03-24 19:26:57 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-03-24 19:27:23 +0100Codaraxis(~Codaraxis@user/codaraxis)
2022-03-24 19:27:55 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-24 19:28:07 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-24 19:28:52 +0100Codaraxis__(~Codaraxis@user/codaraxis)
2022-03-24 19:29:54 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-03-24 19:31:13 +0100mvk(~mvk@2607:fea8:5cc3:7e00::7980)
2022-03-24 19:31:29 +0100Codaraxis_(~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
2022-03-24 19:31:42 +0100nicbk(~nicbk@user/nicbk)
2022-03-24 19:32:03 +0100Codaraxis(~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
2022-03-24 19:32:34 +0100hololeap(~hololeap@user/hololeap)
2022-03-24 19:33:42 +0100vglfr(~vglfr@46.96.132.108)
2022-03-24 19:38:21 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
2022-03-24 19:42:00 +0100mason0(~bc8147f2@cerf.good1.com)
2022-03-24 19:42:04 +0100gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
2022-03-24 19:43:09 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 256 seconds)
2022-03-24 19:43:20 +0100 <mason0> hi. what's a better way of expressing this?
2022-03-24 19:43:34 +0100 <mason0> > (\n -> foldr (\_ acc -> acc / 2) 100 (replicate n 0)) 3
2022-03-24 19:43:36 +0100 <lambdabot> 12.5
2022-03-24 19:44:05 +0100 <mason0> > 100 / 2 / 2 / 2 -- with 3 as an argument
2022-03-24 19:44:05 +0100 <gurkenglas> Thoughts on HVM? It sounded amazing to me until I heard that "clone's can't clone their own clones" and now it sounds like a scam because surely this pops up all the time...
2022-03-24 19:44:07 +0100 <lambdabot> 12.5
2022-03-24 19:44:25 +0100 <gurkenglas> s/clone's/clones/
2022-03-24 19:44:31 +0100 <tomsmeding> > iterate (/2) 100 !! 3
2022-03-24 19:44:32 +0100 <lambdabot> 12.5
2022-03-24 19:44:49 +0100bahamas(~lucian@84.232.140.158)
2022-03-24 19:45:32 +0100 <mason0> it is prettier and more concise, but won't that create a list from 0 to n?
2022-03-24 19:45:44 +0100 <tomsmeding> hm?
2022-03-24 19:45:49 +0100 <tomsmeding> > take 10 (iterate (/2) 100
2022-03-24 19:45:51 +0100 <tomsmeding> > take 10 (iterate (/2) 100)
2022-03-24 19:45:51 +0100 <lambdabot> <hint>:1:26: error:
2022-03-24 19:45:51 +0100 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2022-03-24 19:45:53 +0100 <lambdabot> [100.0,50.0,25.0,12.5,6.25,3.125,1.5625,0.78125,0.390625,0.1953125]
2022-03-24 19:46:03 +0100 <mason0> yeah, a list with n elements
2022-03-24 19:46:14 +0100 <tomsmeding> ah right, I see what you mean
2022-03-24 19:46:31 +0100 <tomsmeding> well, yours will too with the same reasoning :p
2022-03-24 19:46:43 +0100 <mason0> yes. but I was looking for an improvement :)
2022-03-24 19:46:56 +0100 <tomsmeding> but most probably 'iterate' and '!!' will be inlined and the intermediate list fused away
2022-03-24 19:47:18 +0100 <mason0> so there's no "repeat a function N times" combinator?
2022-03-24 19:47:28 +0100 <tomsmeding> not in base at least
2022-03-24 19:47:36 +0100 <tomsmeding> let me check about the fusion
2022-03-24 19:48:07 +0100 <mason0> mine probably won't create a list at all? I'm not even touching the list arguments
2022-03-24 19:48:50 +0100 <mason0> apart from pattern matching on (:)
2022-03-24 19:49:17 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 240 seconds)
2022-03-24 19:50:00 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-24 19:50:26 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-03-24 19:51:00 +0100justOkay(~justache@user/justache) (Read error: Connection reset by peer)
2022-03-24 19:51:20 +0100pnotequalnp(~pnotequal@207-118-121-128.dyn.centurytel.net)
2022-03-24 19:51:57 +0100 <tomsmeding> why does ghc not inline interate and !!
2022-03-24 19:51:58 +0100justOkay(~justache@user/justache)
2022-03-24 19:52:37 +0100 <tomsmeding> mason0: your foldr/replicate thing has similar Core to the explicit 'foo x 0 = x ; foo x k = foo (x / 2) (k - 1)', but my version just calls iterate and !! from Prelude
2022-03-24 19:53:48 +0100 <tomsmeding> oh apparently iterate is marked NOINLINE [1]
2022-03-24 19:54:01 +0100 <tomsmeding> Does anyone in this channel know what that [1] means?
2022-03-24 19:54:49 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-24 19:55:48 +0100 <mason0> interesting
2022-03-24 19:56:01 +0100 <mason0> does this seem like a good name, and good argument order?
2022-03-24 19:56:02 +0100 <mason0> reapply :: Int -> (a -> a) -> a -> a
2022-03-24 19:57:15 +0100 <mason0> reapply 3 (++"!") "foo" => "foo!!!"
2022-03-24 19:57:19 +0100 <mason0> maybe reap? apN?
2022-03-24 19:57:27 +0100 <tomsmeding> argument order yes, name meh but I honestly don't know anything really better; I might have done 'ntimes' but not sure
2022-03-24 19:59:10 +0100 <pnotequalnp> composeN
2022-03-24 19:59:29 +0100alp(~alp@user/alp)
2022-03-24 19:59:30 +0100 <pnotequalnp> composeN 3 f = f . f . f
2022-03-24 20:01:03 +0100 <tomsmeding> quite good
2022-03-24 20:02:15 +0100neurocyte0917090(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2022-03-24 20:03:15 +0100 <tomsmeding> mason0: https://tomsmeding.com/vang/0Ke4zm/report.html
2022-03-24 20:03:30 +0100 <tomsmeding> apparently I didn't judge the Core correctly
2022-03-24 20:04:15 +0100 <tomsmeding> with this source https://paste.tomsmeding.com/Zbav9zzQ
2022-03-24 20:04:22 +0100 <tomsmeding> (pasting the cabal file to show that I'm using -O2)
2022-03-24 20:04:41 +0100 <byorgey> tomsmeding: the [1] has something to do with phases, it's some kind of hacky way to ensure that various rewriting/inlining rules fire in the right order. I don't know the details though.
2022-03-24 20:05:17 +0100 <tomsmeding> byorgey: thanks! Can that be the cause that 'iterate' isn't inlined here? (!!) is marked INLINABLE, which sounds promising but it too is not inlined
2022-03-24 20:05:48 +0100 <gurkenglas> > (\n -> foldr (.) id . replicate n) 3 (/2) 100
2022-03-24 20:05:50 +0100 <lambdabot> 12.5
2022-03-24 20:05:53 +0100 <byorgey> no idea. All this stuff is black magic to me.
2022-03-24 20:07:30 +0100 <byorgey> tomsmeding: that's unfortunate, I always assumed iterate f x !! k would fuse away the intermediate list.
2022-03-24 20:07:43 +0100 <tomsmeding> gurkenglas: nice, has the same performance (up to .02 ns -- I expect same Core) as the original foldr-replicate version
2022-03-24 20:07:55 +0100 <tomsmeding> byorgey: me too :p
2022-03-24 20:08:01 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-03-24 20:09:43 +0100 <gurkenglas> :t [ala Endo foldMap, foldr (.) id]
2022-03-24 20:09:45 +0100 <lambdabot> Foldable t => [t (b -> b) -> b -> b]
2022-03-24 20:10:19 +0100 <tomsmeding> wow ok so using iterate' instead of iterate gives a huge performance improvement; direct-recursive is still faster, but not by much anymore https://tomsmeding.com/vang/HQzhtC/report.html
2022-03-24 20:12:02 +0100neurocyte0917090(~neurocyte@IP-094046076012.dynamic.medianet-world.de)
2022-03-24 20:12:03 +0100neurocyte0917090(~neurocyte@IP-094046076012.dynamic.medianet-world.de) (Changing host)
2022-03-24 20:12:03 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-03-24 20:14:06 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 252 seconds)
2022-03-24 20:15:37 +0100 <gurkenglas> > (under (_Wrapping Endo) . stimes) 3 (/2) 100
2022-03-24 20:15:39 +0100 <lambdabot> 12.5
2022-03-24 20:15:40 +0100 <tomsmeding> so somehow, `iterate' (/2) x !! k`, where neither iterate' nor !! are inlined, ends up being faster than the foldr-replicate version where everything is inlined and the only calls are to GHC.Prim operations
2022-03-24 20:15:55 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2022-03-24 20:16:58 +0100 <pnotequalnp> Have you tried foldl'?
2022-03-24 20:17:04 +0100 <pnotequalnp> It should be faster since `/` is strict
2022-03-24 20:17:48 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-03-24 20:19:01 +0100kevin[m]1(~pnotequal@2001:470:69fc:105::a54)
2022-03-24 20:20:47 +0100 <tomsmeding> interesting, the foldr-replicate version with foldr replaced by foldl' and the lambda flipped, but nothing else, makes it optimise down to the same as the direct recursive one
2022-03-24 20:20:51 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 260 seconds)
2022-03-24 20:20:58 +0100 <tomsmeding> and indeed the runtime is the same, i.e. fastest
2022-03-24 20:21:35 +0100 <tomsmeding> at this point it's 2.15ns for recursive or foldl'-replicate, 5.5ns for iterate'-!!, 10.1ns for foldr-replicate, and 102ns for iterate-!! on my machine
2022-03-24 20:22:31 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-24 20:22:38 +0100 <pnotequalnp> I really want to try benchmarking unlifted versions of stuff but Criterion doesn't support that yet (levity polymorphism yada yada) and I don't feel like implementing it myself.
2022-03-24 20:23:21 +0100 <tomsmeding> pnotequalnp: why does criterion need to support unlifted levity in order to benchmark it?
2022-03-24 20:23:38 +0100awpr(uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-24 20:23:49 +0100 <tomsmeding> in any case, the fastest ones are already worker-wrapper transformed to do the actual inner loop on unlifted values only
2022-03-24 20:24:39 +0100neurocyte0917090(~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
2022-03-24 20:25:39 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-03-24 20:28:24 +0100 <pnotequalnp> Hmm I suppose I could just use the lower level interface. I've just been thinking about the whnf-type utilities.
2022-03-24 20:28:55 +0100 <tomsmeding> pnotequalnp: you can use this template https://paste.tomsmeding.com/Zbav9zzQ
2022-03-24 20:33:43 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2022-03-24 20:34:55 +0100nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-03-24 20:37:06 +0100 <gurkenglas> Why is there stimes but not mtimes?
2022-03-24 20:37:29 +0100 <monochrom> It got the name mconcat.
2022-03-24 20:37:35 +0100 <gurkenglas> ah ^^
2022-03-24 20:37:37 +0100 <monochrom> err no, nevermind.
2022-03-24 20:37:53 +0100 <monochrom> @type stimes
2022-03-24 20:37:54 +0100 <lambdabot> (Semigroup a, Integral b) => b -> a -> a
2022-03-24 20:38:38 +0100 <pnotequalnp> Because the monoid version doesn't have a different type.
2022-03-24 20:39:12 +0100 <monochrom> > stimes 0 ([] :: [Int])
2022-03-24 20:39:14 +0100 <lambdabot> []
2022-03-24 20:39:18 +0100 <pnotequalnp> There is mtimesDefault
2022-03-24 20:39:28 +0100 <pnotequalnp> Which is used as the definition for `stimes` for types that are monoids.
2022-03-24 20:39:30 +0100 <monochrom> > stimes 0 "x"
2022-03-24 20:39:32 +0100 <lambdabot> ""
2022-03-24 20:39:58 +0100 <monochrom> Hrm how does it know that mempty="" exists?
2022-03-24 20:40:10 +0100 <pnotequalnp> And it's the same thing as the default stimes except it uses mempty for 0 instead of an error
2022-03-24 20:40:24 +0100 <monochrom> But I don't get an error :)
2022-03-24 20:41:03 +0100benin3(~benin@183.82.207.30)
2022-03-24 20:41:04 +0100 <pnotequalnp> It's overridden on the semigroup instance for lists.
2022-03-24 20:41:08 +0100 <monochrom> Err nevermind. Yeah.
2022-03-24 20:41:12 +0100 <gurkenglas> aaaaiiiiieeeee
2022-03-24 20:41:21 +0100 <pnotequalnp> Since stimes is a class method and not just a polymorphic function.
2022-03-24 20:43:17 +0100benin(~benin@183.82.207.30) (Ping timeout: 268 seconds)
2022-03-24 20:43:17 +0100benin3benin
2022-03-24 20:44:59 +0100 <gurkenglas> the despair-inducing part is that any two monoid instances for the same semigroup are isomorphic so i can't even really go "but what if someone makes a semigroup with two monoid instances"
2022-03-24 20:46:53 +0100 <pnotequalnp> Coherence prevents that anyway. Any given semigroup instance can only have one monoid instance based on it.
2022-03-24 20:47:01 +0100 <gurkenglas> yes i just said that
2022-03-24 20:47:28 +0100mud(~mud@user/kadoban) (Quit: quit)
2022-03-24 20:47:29 +0100 <pnotequalnp> Well I mean, the fact that semigroups can only have one identity is superfluous.
2022-03-24 20:47:51 +0100 <monochrom> Why is that despair-inducing? I find it comforting and beautiful. :)
2022-03-24 20:48:04 +0100 <pnotequalnp> Since you can't define multiple monoid instances based on the same semigroup instance to begin with, even if they could have multiple identities, Haskell wouldn't let you write that.
2022-03-24 20:48:14 +0100 <gurkenglas> you can use the constraints library to get around that haskell limitation i think
2022-03-24 20:48:43 +0100 <gurkenglas> it's despair-inducing because stimes is *wrong* to refer to mempty but how am i supposed to convince people of this
2022-03-24 20:49:35 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 20:49:57 +0100 <pnotequalnp> Tell that to all the people writing instance Applicative M where (<*>) = ap :b
2022-03-24 20:50:14 +0100 <gurkenglas> that's fine, it's just a shortcut
2022-03-24 20:50:25 +0100briandaed(~root@109.95.142.93.r.toneticgroup.pl)
2022-03-24 20:50:53 +0100 <monochrom> The robust moral reason is that if the type says Semigroup only, one does not expect it to have access to mempty.
2022-03-24 20:50:53 +0100 <tomsmeding> why would it be better for stimes to throw an error on 0?
2022-03-24 20:51:13 +0100 <gurkenglas> tomsmeding: because of the s
2022-03-24 20:51:25 +0100 <monochrom> This doesn't need "there can be two conflicting ways".
2022-03-24 20:51:57 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-03-24 20:52:44 +0100 <monochrom> IOW parametricity is a more robust moral reason.
2022-03-24 20:53:12 +0100 <monochrom> I mean, as far as moral reasons are concerned. I don't really mind either way.
2022-03-24 20:53:36 +0100 <gurkenglas> ah the thing that monochrom said inspires in me the argument that i previously failed to find: "forall m. Semigroup m => m" should not have an implementation, but it has "stimes 0 undefined"
2022-03-24 20:54:21 +0100 <gurkenglas> (or i suppose by modus tollens, and at that point at least you're consistent so no more aaaaiiieee, remove Monoid and put mempty in Semigroup with default implementation stimes 0 undefined)
2022-03-24 20:55:23 +0100 <tomsmeding> gurkenglas: I guess you're arguing that stimes should not be a class method?
2022-03-24 20:56:25 +0100 <gurkenglas> tomsmeding: presumably it is a class method because it's sometimes asymptotically faster than the default implementation, and that's valid
2022-03-24 20:56:49 +0100 <tomsmeding> I kind of follow your and monochrom's argument that morally stimes should throw for 0, to make it have the same behaviour as if it was a top-level function -- inclusion in the class is only to enable a more optimised implementation in some cases. But I'm... just not able to get worked up over this. There are worse things in the design of Haskell :p
2022-03-24 20:57:25 +0100 <tomsmeding> this is not the hill to die on
2022-03-24 20:57:30 +0100 <gurkenglas> are there worse newer things, though?
2022-03-24 20:57:35 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-03-24 20:58:07 +0100maroloccio(~marolocci@pousada3ja.mma.com.br) (Quit: WeeChat 3.0)
2022-03-24 21:00:13 +0100 <pnotequalnp> I was motivated to make something cursed. https://paste.tomsmeding.com/hPK0qgjb
2022-03-24 21:00:15 +0100zincy_(~zincy@2a00:23c8:970c:4801:a9ba:a14e:e332:b83f)
2022-03-24 21:00:49 +0100 <tomsmeding> makes me think of the hack to detect whether ScopedTypeVariables is on
2022-03-24 21:00:52 +0100pnotequalnp(~pnotequal@207-118-121-128.dyn.centurytel.net) (Quit: Client closed)
2022-03-24 21:01:06 +0100pnotequalnp(~pnotequal@207-118-121-128.dyn.centurytel.net)
2022-03-24 21:02:19 +0100 <pnotequalnp> Oh I haven't seen that, how does it work?
2022-03-24 21:02:49 +0100 <tomsmeding> pnotequalnp: https://paste.tomsmeding.com/4nHVRS92
2022-03-24 21:02:57 +0100Pickchea(~private@user/pickchea)
2022-03-24 21:03:24 +0100 <tomsmeding> what you're really testing is what the implementer of the Semigroup instance did with stimes, not whether the type has a Monoid instance :p
2022-03-24 21:03:32 +0100admin[m](~adminzgoc@2001:470:69fc:105::1:51c4)
2022-03-24 21:03:41 +0100 <pnotequalnp> Yeah it only works if you override stimes like the base instances all do
2022-03-24 21:06:02 +0100briandaed(~root@109.95.142.93.r.toneticgroup.pl) (Quit: Lost terminal)
2022-03-24 21:07:47 +0100 <tomsmeding> pnotequalnp: hm there's this one but there was a clearer one, still searching https://codegolf.stackexchange.com/a/153762
2022-03-24 21:08:32 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-24 21:08:55 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-03-24 21:09:31 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-03-24 21:09:34 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-24 21:09:53 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-24 21:10:06 +0100 <pnotequalnp> You can use it to recover """type information""" at runtime. https://paste.tomsmeding.com/fpb4A8gQ
2022-03-24 21:10:14 +0100Lord_of_Life_Lord_of_Life
2022-03-24 21:10:22 +0100 <pnotequalnp> I wonder if it's possible to magic up a monoid dictionary somehow
2022-03-24 21:11:21 +0100 <pnotequalnp> By converting the `Either SomeException s` to a `Maybe (DIct (Monoid s))`
2022-03-24 21:11:46 +0100pieguy128_(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-224.dsl.bell.ca)
2022-03-24 21:11:50 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-224.dsl.bell.ca) (Ping timeout: 260 seconds)
2022-03-24 21:11:59 +0100 <tomsmeding> to construct a Monoid dict out of thin air using the mempry you got from stimes?
2022-03-24 21:12:04 +0100 <tomsmeding> *mempty
2022-03-24 21:12:16 +0100 <pnotequalnp> Yeah
2022-03-24 21:12:50 +0100 <pnotequalnp> And of course the semigroup dict hidden under the GADT constructor
2022-03-24 21:13:15 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2022-03-24 21:13:20 +0100leah2_(~leah@vuxu.org)
2022-03-24 21:15:06 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net)
2022-03-24 21:15:10 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-03-24 21:16:28 +0100leah2(~leah@vuxu.org) (Ping timeout: 260 seconds)
2022-03-24 21:17:11 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-24 21:17:17 +0100 <maerwald> I forgot whether Handle's are closed by the GC?
2022-03-24 21:18:09 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 21:18:16 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-03-24 21:19:09 +0100Pickchea(~private@user/pickchea)
2022-03-24 21:20:15 +0100 <maerwald> seems so
2022-03-24 21:20:16 +0100zyklotomic(~ethan@res388d-128-61-90-23.res.gatech.edu)
2022-03-24 21:20:51 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-24 21:21:38 +0100 <zyklotomic> i'm not sure how to describe this, i want to restrict in a type signature, a monad to only have MonadWrite, but for it to be the same MonadWrite in the return value
2022-03-24 21:21:58 +0100admin[m](~adminzgoc@2001:470:69fc:105::1:51c4) ()
2022-03-24 21:22:09 +0100hololeap(~hololeap@user/hololeap)
2022-03-24 21:22:28 +0100 <zyklotomic> so something like (MonadWrite w m1, MonadState s m2) => m1 () -> (m1 and m2) () ?
2022-03-24 21:23:07 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-03-24 21:23:13 +0100 <tomsmeding> how would `(MonadWrite w m) => m () -> m ()` be wrong?
2022-03-24 21:23:45 +0100 <tomsmeding> and `(MonadWrite w m1, MonadWrite s m2) => m1 () -> m2 ()`
2022-03-24 21:24:04 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-224.dsl.bell.ca)
2022-03-24 21:25:02 +0100pieguy128_(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-224.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-03-24 21:25:30 +0100 <zyklotomic> tomsmeding: I also want to modify state in the former, in the latter I want to use the first argument as a callback
2022-03-24 21:25:38 +0100 <zyklotomic> maybe there is a better way to structure this logic
2022-03-24 21:26:14 +0100 <zyklotomic> and why (MonadWrite w m)
2022-03-24 21:26:37 +0100 <zyklotomic> `(MonadWrite w m, MonadState s m) => m () -> m ()` would be wrong for me is because i don't want the first argument to be able to touch state
2022-03-24 21:26:45 +0100 <tomsmeding> ignoring the constraints for now, just focusing on the type itself -- should be argument monad be the same as the output monad, or not?
2022-03-24 21:27:32 +0100 <tomsmeding> oh you want the argument to be MonadWrite in w and MonadState in s, but have a static guarantee that the argument cannot actually use that State?
2022-03-24 21:27:43 +0100 <zyklotomic> now that i think of it, yes, it should. but i'm hoping to yeah, not let myself use state in this case
2022-03-24 21:27:47 +0100 <zyklotomic> yes, i think you got it
2022-03-24 21:28:08 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-224.dsl.bell.ca) (Max SendQ exceeded)
2022-03-24 21:28:12 +0100 <tomsmeding> should the argument have access to other properties of m? Or should it just know that it's working on some monad that has MonadWrite w, not knowing what monad that is?
2022-03-24 21:28:28 +0100 <dminuoso> You could work with RankNTypes here, if you wanted to badly enough.
2022-03-24 21:28:36 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-224.dsl.bell.ca)
2022-03-24 21:28:57 +0100 <tomsmeding> yeah, if yes, that would be `(MonadWrite w m, MonadState s m) => (forall m'. MonadWrite w m' => m' ()) -> m ()`
2022-03-24 21:29:24 +0100 <dminuoso> But honestly, I'd go for `MonadWrite w m => m () -> m ()`
2022-03-24 21:29:31 +0100 <pnotequalnp> I'm curious if `(MonadWrite w m1, MonadState s m2, m1 ~ m2) => m1 () -> m2 ()` would work, or if GHC is smart enough to carry the instances across the equality.
2022-03-24 21:29:39 +0100 <tomsmeding> dminuoso: presumably the function that zyklotomic is writing now _does_ need the MonadState
2022-03-24 21:29:45 +0100 <tomsmeding> otherwise the question is moot
2022-03-24 21:30:05 +0100 <dminuoso> tomsmeding: So?
2022-03-24 21:30:07 +0100 <tomsmeding> pnotequalnp: that's equivalent
2022-03-24 21:30:40 +0100 <dminuoso> tomsmeding: Let's call that function f. f can use MonadState all it wants to, you can still apply it to another polymorphic thing that doesnt have MonadState in its contraints.
2022-03-24 21:30:41 +0100 <tomsmeding> dminuoso: oh meant "just use `(MonadWrite w m, MonadState s m) => m () -> m ()` ?
2022-03-24 21:30:54 +0100 <dminuoso> Yeah that then.
2022-03-24 21:30:55 +0100 <tomsmeding> right, so just not have the static guarantee
2022-03-24 21:31:07 +0100 <tomsmeding> that's definitely the pragmatic approach :p
2022-03-24 21:31:15 +0100 <dminuoso> RankNTypes has a big sanity check for me.
2022-03-24 21:31:16 +0100 <zyklotomic> yeah i guess that works too :D
2022-03-24 21:31:27 +0100 <zyklotomic> not the most exciting answer though
2022-03-24 21:31:44 +0100 <dminuoso> Yes, sometimes boring and simple is better.
2022-03-24 21:31:54 +0100 <tomsmeding> my threshold for using RankNTypes is probably a lot lower than dminuoso's, but I would also give up if the argument needs more stuff from m than just the MonadWrite w
2022-03-24 21:32:14 +0100shiraeeshi(~shiraeesh@77.94.25.181) (Quit: Leaving)
2022-03-24 21:32:27 +0100 <dminuoso> In my experience, trying to be cute with the type system ends up with headaches when type inference doesn't work out, you get bizarre unreadable diagnostics, and after RankNTypes you add 5 more extensions because you feel like "encoding another property into the type system"
2022-03-24 21:32:49 +0100 <dminuoso> To the point where nobody but you understands whats going on, you have bugs in your type system instead, and the code becomes hard to refactor or extend..
2022-03-24 21:33:07 +0100 <tomsmeding> heh
2022-03-24 21:33:18 +0100 <tomsmeding> yeah it definitely depends on how much you're getting out of it
2022-03-24 21:34:07 +0100 <zyklotomic> tomsmeding: your rank 2 signature should work though right
2022-03-24 21:34:25 +0100 <tomsmeding> zyklotomic: it should, but only if the argument doesn't need any more information from m than that it's MonadWrite w
2022-03-24 21:35:20 +0100 <zyklotomic> first time where I can say I experienced a potential real need for rank2/N lol
2022-03-24 21:35:25 +0100 <dminuoso> It's also my experience that encoding properties in the type system is not done out of necessity in the sense that you regularly violate these properties.
2022-03-24 21:35:25 +0100 <tomsmeding> like, suppose this function is called f; if at a call site of f, you know that m is WriterT [String] IO, the argument of f can't use the fact that it's in WriterT [String] IO, it just knows "I'm in MonadWrite w m => m"
2022-03-24 21:35:29 +0100 <zyklotomic> thanks for the discussion / pointers everyone
2022-03-24 21:35:30 +0100alp(~alp@user/alp) (Ping timeout: 252 seconds)
2022-03-24 21:36:05 +0100 <zyklotomic> dminuoso: what do you mean re "violate these properties"
2022-03-24 21:36:20 +0100 <dminuoso> I think a lot of haskell programmers have a lot of imaginative power, thinking these "but what if you accidentally used state here.." problems into the world - just as a way to justify to themselves to try out fancy type system tricks.
2022-03-24 21:36:39 +0100 <dminuoso> zyklotomic: Okay, so let me give you an example.
2022-03-24 21:36:52 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-03-24 21:37:46 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-03-24 21:37:54 +0100 <dminuoso> We have a RADIUS server, and RADIUS broadly is separated into Accounting and Access requests, but they are often multiplexed onto a single TCP/UDP listener. So I used various type tricks to ensure that *access* handlers didn't accidentally produce accountings responses, and accounting handlers dint accidentally produce access responses.
2022-03-24 21:38:11 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-24 21:38:55 +0100 <dminuoso> It was completely absurd, because it all boiled down to just 15 lines of code that you can a) just test and b) easily inspect if written in simple style.
2022-03-24 21:39:30 +0100 <dminuoso> It felt good to argue "You cant possibly misuse this", but the relaity is: I never had misused it before, and I had absolutely no good reason to assume this type of misuse could happen
2022-03-24 21:39:55 +0100 <dminuoso> The price I paid was everybody looking at the implemention asking tons of "what are all these type tricks going on"
2022-03-24 21:40:30 +0100 <dminuoso> I've seen some haskellers make the same mistake
2022-03-24 21:41:05 +0100Pickchea(~private@user/pickchea)
2022-03-24 21:42:01 +0100 <zyklotomic> lol, that's a very relatable mistake dminuoso
2022-03-24 21:42:03 +0100pgib(~textual@173.38.117.90) (Ping timeout: 260 seconds)
2022-03-24 21:42:43 +0100 <zyklotomic> and probably good enough with just very good comments
2022-03-24 21:43:07 +0100 <dminuoso> What I really needed was a simple: wrapHandler f = do ty <- requestType; resp <- f; when (radiusType resp != ty) (throwIO (ConstraintViolation "Request/Response type mismatch))
2022-03-24 21:43:18 +0100 <dminuoso> Inside the server, unconditionally wrapped around the entirety
2022-03-24 21:43:25 +0100 <dminuoso> There. Done.
2022-03-24 21:43:43 +0100 <zyklotomic> does put things into perspective
2022-03-24 21:43:46 +0100 <dminuoso> Sometimes programmers are really good at creating problems for the sole purpose of justifying an engineering solution
2022-03-24 21:43:52 +0100 <tomsmeding> BuT tHe PeRfOrMaNcE
2022-03-24 21:44:03 +0100 <Rembane> FUN! :D
2022-03-24 21:44:08 +0100 <tomsmeding> and that :)
2022-03-24 21:44:19 +0100leah2_leah2
2022-03-24 21:46:13 +0100 <zyklotomic> since this is just for homework and myself, going to do the fun route anyways, but def will keep in mind the advice
2022-03-24 21:46:52 +0100 <tomsmeding> dminuoso: I have the luck that all the code I write, for now, is either for myself or for PL research -- and PL research people are usually quite accepting w.r.t. this stuff :p
2022-03-24 21:46:52 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-03-24 21:47:23 +0100mikail(~mikail@2a02:c7f:bd03:2c00:38bf:5983:b068:95f1)
2022-03-24 21:47:55 +0100 <tomsmeding> zyklotomic: having practice with the fancy stuff is definitely not bad; though for code that is going to be shared with others, dminuoso's advice does indeed apply: have fun, but with moderation
2022-03-24 21:47:55 +0100fef(~thedawn@user/thedawn) (Ping timeout: 240 seconds)
2022-03-24 21:48:30 +0100 <zyklotomic> :)
2022-03-24 21:50:00 +0100 <mikail> Does anybody have any good references (papers/software apps) of event driven applications in Haskell.
2022-03-24 21:50:19 +0100pnotequalnp(~pnotequal@207-118-121-128.dyn.centurytel.net) (Ping timeout: 256 seconds)
2022-03-24 21:50:35 +0100 <jackdk> I would look at functional reactive programming. What are you trying to do?
2022-03-24 21:51:39 +0100 <dminuoso> zyklotomic: The project that really kept be at bay was GHC. Structurally there's really no fancy tricks going on. It's essentially just very imperative IO code, with a lot of IORefs being flung around
2022-03-24 21:51:51 +0100 <dminuoso> Simple is good! :)
2022-03-24 21:52:41 +0100 <zyklotomic> dminuoso: oddly enough, this is for a compilers hw assignment
2022-03-24 21:53:01 +0100 <zyklotomic> we did get the autonomy to choose whatever language though
2022-03-24 21:53:26 +0100 <tomsmeding> is the teacher going to grade the code
2022-03-24 21:54:23 +0100 <zyklotomic> no, just black box run it
2022-03-24 21:54:48 +0100 <tomsmeding> interesting assignment
2022-03-24 21:55:05 +0100 <zyklotomic> yeah, kinda nice to have an excuse to write haskell
2022-03-24 21:55:21 +0100 <tomsmeding> but yeah, lately I've been messing mostly with compiler-like code transformations, and I've been doing so on well-typed well-scoped De Bruijn ASTs
2022-03-24 21:55:26 +0100 <tomsmeding> which is... a lot of RankNTypes
2022-03-24 21:55:52 +0100 <zyklotomic> are those related to De Bruijn indicies, not that i know about what those are either
2022-03-24 21:56:09 +0100acidjnk(~acidjnk@p200300d0c7049f76ad7ddf43206a2c16.dip0.t-ipconnect.de)
2022-03-24 21:56:45 +0100 <Rembane> tomsmeding: It sounds painful, how painful is it?
2022-03-24 21:57:43 +0100 <tomsmeding> Fun! :)
2022-03-24 21:57:56 +0100 <tomsmeding> but also some type tetris sometimes
2022-03-24 21:58:30 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-03-24 22:00:15 +0100 <Rembane> Good stuff. :)
2022-03-24 22:01:43 +0100fef(~thedawn@user/thedawn)
2022-03-24 22:04:06 +0100mikail(~mikail@2a02:c7f:bd03:2c00:38bf:5983:b068:95f1) (Ping timeout: 252 seconds)
2022-03-24 22:05:43 +0100 <tomsmeding> super brief summary: data Idx env t where Z :: Idx (t ': env) t ; S :: Idx env t -> Idx (a ': env) t
2022-03-24 22:05:53 +0100 <dolio> They seem painful when you're using them. But then when you use something more lax, it's also painful to keep finding variable management errors.
2022-03-24 22:05:55 +0100zincy_(~zincy@2a00:23c8:970c:4801:a9ba:a14e:e332:b83f) (Remote host closed the connection)
2022-03-24 22:06:17 +0100 <tomsmeding> data Exp env t where Var :: Idx env t -> Exp env t ; App :: Exp env (a -> b) -> Exp env a -> Exp env b ; Lam :: Exp (a ': env) b -> Exp env (a -> b) ; -- etc.
2022-03-24 22:06:37 +0100 <tomsmeding> dolio: especially with these kinds of code transformations that I'm working with lol
2022-03-24 22:08:23 +0100 <energizer> why does toGregorian give (Integer, Int, Int) instead of a date?
2022-03-24 22:09:35 +0100Digit(~user@user/digit) (Ping timeout: 260 seconds)
2022-03-24 22:10:20 +0100 <Rembane> energizer: Which toGregorian are you thinking of?
2022-03-24 22:11:29 +0100 <energizer> oh maybe i did it wrong
2022-03-24 22:13:11 +0100 <jackdk> Rembane: https://hackage.haskell.org/package/time-1.13/docs/Data-Time-Calendar.html#v:toGregorian probably
2022-03-24 22:13:25 +0100 <jackdk> The components of the tuple are type aliases IIRC
2022-03-24 22:13:42 +0100 <Rembane> jackdk: I realized that a bit too late. :)
2022-03-24 22:14:47 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
2022-03-24 22:15:52 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-03-24 22:16:03 +0100 <energizer> how to construct a DayOfMonth?
2022-03-24 22:16:36 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fbf8-224.dhcp.inet.fi) (Ping timeout: 245 seconds)
2022-03-24 22:16:47 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-24 22:17:02 +0100 <monochrom> Click on "DayOfMonth" to discover "type DayOfMonth = ...". Also, what jackdk said.
2022-03-24 22:17:06 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-24 22:17:32 +0100 <monochrom> I thought people clicked on all links.
2022-03-24 22:17:59 +0100 <energizer> DayOfMonth 1 doesnt do what i thought
2022-03-24 22:18:16 +0100 <jackdk> DayOfMonth is a type alias, not a data declaration
2022-03-24 22:18:28 +0100 <monochrom> and not a data constructor
2022-03-24 22:18:35 +0100pavonia(~user@user/siracusa)
2022-03-24 22:18:47 +0100 <energizer> so that means i'm supposed to just use 1 instead?
2022-03-24 22:19:14 +0100 <monochrom> Have you learned "type aliases" and what "type Foo = Bool" means?
2022-03-24 22:19:56 +0100 <energizer> well i guess not if you're asking me that
2022-03-24 22:22:19 +0100tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-03-24 22:24:00 +0100 <energizer> ok so i guess my question is, why are these type aliases instead of newtypes
2022-03-24 22:24:18 +0100 <energizer> er
2022-03-24 22:24:41 +0100 <energizer> i guess i mean why isnt there such thing as a date
2022-03-24 22:24:49 +0100 <energizer> it's just (Integer, Int, Int)
2022-03-24 22:25:07 +0100alp(~alp@user/alp)
2022-03-24 22:25:10 +0100pnotequalnp(~pnotequal@207-118-121-128.dyn.centurytel.net)
2022-03-24 22:25:16 +0100 <shapr> Anyone used the validity test library? ( https://github.com/NorfairKing/validity ) I can't figure out how to hook it into hspec.
2022-03-24 22:25:27 +0100 <energizer> and relatedly, why is Year a type alias instead of a newtype
2022-03-24 22:25:34 +0100Major_Biscuit(~MajorBisc@c-001-015-045.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.4)
2022-03-24 22:26:00 +0100tomsmedingexpects "perhaps they should be newtypes, but it's too late to change now
2022-03-24 22:26:09 +0100 <energizer> thanks tomsmeding
2022-03-24 22:26:17 +0100 <tomsmeding> but I don't actually know :p
2022-03-24 22:26:20 +0100GuestyMcGuest(~GuestyMcG@200.89.69.134)
2022-03-24 22:26:54 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2022-03-24 22:27:01 +0100 <GuestyMcGuest> Hi, I have a question regarding the installation of ghcup on linux.
2022-03-24 22:27:17 +0100 <monochrom> Day is already the "date" type you sought.
2022-03-24 22:28:05 +0100 <geekosaur> GuestyMcGuest, you should just ask your question, not ask to ask
2022-03-24 22:29:17 +0100tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
2022-03-24 22:29:38 +0100 <GuestyMcGuest> Does the installation work for a multi user system? Perusing the procedure, it appears that it installs at user level.
2022-03-24 22:29:43 +0100tzh_(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-03-24 22:29:52 +0100 <koz> GuestyMcGuest: You'd be correct.
2022-03-24 22:30:09 +0100 <maerwald> GuestyMcGuest: depends how you install it
2022-03-24 22:30:24 +0100 <koz> maerwald: Wait, you can do a global ghcup-based install?
2022-03-24 22:30:30 +0100 <maerwald> you can set GHCUP_INSTALL_BASE_PREFIX=/var/ghcup or so
2022-03-24 22:30:42 +0100 <maerwald> you may have to fix permissions
2022-03-24 22:30:59 +0100 <koz> Suppose I have several lists, and I wanna itraverse them all in sequence, but not have to concatenate them first. Is there a way I can spell that?
2022-03-24 22:31:00 +0100 <maerwald> you can also install into /usr/local (but then it's unmanaged)
2022-03-24 22:31:17 +0100 <koz> Sorry, itraverse_.
2022-03-24 22:31:17 +0100 <maerwald> ghcup install ghc --isolate=/usr/local --force 8.10.7
2022-03-24 22:31:23 +0100 <koz> (aka, I don't care about the result)
2022-03-24 22:31:40 +0100tzh_(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Read error: Connection reset by peer)
2022-03-24 22:31:44 +0100xax__(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-03-24 22:31:44 +0100 <maerwald> if you use --isolate, then ghcup won't be able to uninstall
2022-03-24 22:31:50 +0100 <monochrom> I was the person who single-handedly drove ghcup to have some compatibility with /usr/local installs. >:)
2022-03-24 22:32:07 +0100 <koz> So I'm hunting for something like `itraverseMany_ :: (Applicative f) => (Int -> a -> f b) -> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=a -> f ()`
2022-03-24 22:32:16 +0100 <koz> Lolwat.
2022-03-24 22:32:33 +0100 <maerwald> GuestyMcGuest: so, do you care about uninstallation?
2022-03-24 22:32:36 +0100 <koz> Do I just want some kind of traverse . traverse nesting?
2022-03-24 22:33:04 +0100 <sm> so yes, 1 can be interpreted as a DayOfMonth. 1 :: DayOfMonth if you want to be explicit/certain
2022-03-24 22:33:53 +0100 <GuestyMcGuest> Absolutely, I'm looking for the documentation (as we write :D)
2022-03-24 22:34:55 +0100 <maerwald> https://www.haskell.org/ghcup/guide/#env-variables
2022-03-24 22:34:57 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-03-24 22:35:10 +0100 <maerwald> and https://www.haskell.org/ghcup/guide/#isolated-installs
2022-03-24 22:40:05 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 22:42:01 +0100GuestyMcGuest(~GuestyMcG@200.89.69.134) ()
2022-03-24 22:42:21 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
2022-03-24 22:42:35 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
2022-03-24 22:43:47 +0100Batzy(~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-03-24 22:44:00 +0100xax__(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2022-03-24 22:44:43 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-03-24 22:44:50 +0100 <shapr> @paste
2022-03-24 22:44:50 +0100 <lambdabot> A pastebin: https://paste.debian.net/
2022-03-24 22:45:38 +0100 <geekosaur> @where paste
2022-03-24 22:45:38 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2022-03-24 22:46:57 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-03-24 22:48:15 +0100vorpuni(~pvorp@2001:861:3881:c690:72bf:4d2e:4b07:eb6c) (Remote host closed the connection)
2022-03-24 22:49:10 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-24 22:49:31 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-03-24 22:49:57 +0100 <tomsmeding> @where lambdabot
2022-03-24 22:49:57 +0100 <lambdabot> http://haskell.org/haskellwiki/Lambdabot
2022-03-24 22:54:23 +0100 <shapr> @where shapr
2022-03-24 22:54:23 +0100 <lambdabot> I run to hug and cuddle shapr
2022-03-24 22:54:26 +0100 <shapr> yay?
2022-03-24 22:54:30 +0100 <tomsmeding> :D
2022-03-24 22:54:47 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-03-24 22:56:19 +0100 <hpc> @where hpc
2022-03-24 22:56:19 +0100 <lambdabot> http://www.haskell.org/haskellwiki/Haskell_Program_Coverage
2022-03-24 22:56:21 +0100 <hpc> yep, that's me
2022-03-24 22:56:29 +0100 <tomsmeding> classic
2022-03-24 22:57:32 +0100pnotequalnp(~pnotequal@207-118-121-128.dyn.centurytel.net) (Quit: Client closed)
2022-03-24 23:01:50 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-24 23:05:56 +0100 <jackdk> koz: Folds can be combined with <>.
2022-03-24 23:06:06 +0100 <jackdk> % let x = ("hello", "world")
2022-03-24 23:06:06 +0100 <yahb> jackdk:
2022-03-24 23:06:30 +0100 <jackdk> % x ^.. ((_2 <> _1) . traverse)
2022-03-24 23:06:30 +0100 <yahb> jackdk: "worldhello"
2022-03-24 23:06:55 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-24 23:07:02 +0100 <jackdk> % itraverseOf (indexing ((_2 <> _1) . traverse)) (\i a -> print (i, a)) x
2022-03-24 23:07:02 +0100 <yahb> jackdk: ; <interactive>:50:31: error:; * Couldn't match type `()' with `Char'; arising from a functional dependency between:; constraint `Field1 (String, String) ([Char], [()]) [Char] [()]' arising from a use of `_1'; instance Field1 (a, b) (a', b) a a' at <no location info>; * In the second argument of `(<>)', namely `_1'; In the first argument of `(.)', namely `(_2 <>
2022-03-24 23:07:25 +0100 <jackdk> % itraverseOf_ (indexing ((_2 <> _1) . traverse)) (\i a -> print (i, a)) x
2022-03-24 23:07:25 +0100 <yahb> jackdk: (0,'w'); (1,'o'); (2,'r'); (3,'l'); (4,'d'); (5,'h'); (6,'e'); (7,'l'); (8,'l'); (9,'o')
2022-03-24 23:07:31 +0100 <jackdk> koz: ^
2022-03-24 23:07:33 +0100 <jackdk> % :quit
2022-03-24 23:07:33 +0100 <yahb> jackdk:
2022-03-24 23:08:40 +0100 <jackdk> koz: so you could assemble the lists into a tuple, and use `itraverseOf_ (indexed $ each . traverse)`, I think
2022-03-24 23:10:46 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-03-24 23:11:02 +0100 <jackdk> Axman6: I know you like lens fun ^
2022-03-24 23:15:10 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net)
2022-03-24 23:18:54 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 252 seconds)
2022-03-24 23:20:12 +0100yauhsien(~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-24 23:22:41 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-03-24 23:24:52 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-03-24 23:25:10 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-03-24 23:27:38 +0100Digit(~user@user/digit)
2022-03-24 23:28:41 +0100ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-03-24 23:33:00 +0100pwug(~pwug@user/pwug) (Read error: Connection reset by peer)
2022-03-24 23:37:08 +0100deadmarshal_(~deadmarsh@95.38.229.223)
2022-03-24 23:39:51 +0100michalz(~michalz@185.246.204.109) (Remote host closed the connection)
2022-03-24 23:41:22 +0100alp(~alp@user/alp) (Remote host closed the connection)
2022-03-24 23:41:31 +0100deadmarshal_(~deadmarsh@95.38.229.223) (Ping timeout: 260 seconds)
2022-03-24 23:41:42 +0100alp(~alp@user/alp)
2022-03-24 23:42:27 +0100k8yun(~k8yun@user/k8yun)
2022-03-24 23:53:29 +0100cosimone(~user@93-44-187-176.ip98.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1))
2022-03-24 23:53:44 +0100 <Axman6> :o
2022-03-24 23:59:55 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)