2023/08/27

2023-08-27 00:10:21 +0000artem(~artem@73.103.90.145)
2023-08-27 00:12:11 +0000ulysses4ever(~artem@2601:408:c408:62c:f474:e3f8:9806:671) (Ping timeout: 246 seconds)
2023-08-27 00:13:37 +0000Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 246 seconds)
2023-08-27 00:19:00 +0000chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-08-27 00:19:37 +0000chiselfuse(~chiselfus@user/chiselfuse)
2023-08-27 00:19:42 +0000notzmv(~zmv@user/notzmv)
2023-08-27 00:25:48 +0000falafel(~falafel@51.6.68.216) (Ping timeout: 248 seconds)
2023-08-27 00:27:42 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 00:33:57 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 244 seconds)
2023-08-27 00:43:15 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2023-08-27 00:53:36 +0000mhatta(~mhatta@www21123ui.sakura.ne.jp) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in)
2023-08-27 00:59:16 +0000jmcantrell(644f1bed9a@user/jmcantrell)
2023-08-27 01:02:36 +0000Inst(~liamzy@2601:6c4:4085:6d50::bb82)
2023-08-27 01:06:24 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 246 seconds)
2023-08-27 01:06:48 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-08-27 01:06:48 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-08-27 01:06:48 +0000wroathe(~wroathe@user/wroathe)
2023-08-27 01:07:52 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-08-27 01:08:32 +0000Guest|79(~Guest|79@177.89.244.30)
2023-08-27 01:08:44 +0000Guest|79(~Guest|79@177.89.244.30) (Client Quit)
2023-08-27 01:10:54 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-08-27 01:17:29 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-08-27 01:22:44 +0000bratwurst(~blaadsfa@70.75.221.8)
2023-08-27 01:24:34 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 01:28:12 +0000bratwurst(~blaadsfa@70.75.221.8) (Ping timeout: 248 seconds)
2023-08-27 01:29:13 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-08-27 01:41:14 +0000razetime(~quassel@117.254.37.141)
2023-08-27 01:43:35 +0000Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.207)
2023-08-27 01:46:31 +0000 <Jeanne-Kamikaze> If I have 'class Product a b where type Prod a b :: *; (*) :: a -> b -> Prod a b' and, for example, 'instance Product Foo Bar where type Prod Foo Bar = Baz', why isn't Prod Foo Bar inferred as Baz when I put a Foo * Bar together?
2023-08-27 01:47:04 +0000 <Jeanne-Kamikaze> (My experience with fundeps was short-lived; I had more runway with the associate type.)
2023-08-27 01:47:54 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 01:47:59 +0000 <Jeanne-Kamikaze> "Couldn't match expected type: Baz, actual type: Prod Foo Bar"
2023-08-27 01:50:40 +0000 <Jeanne-Kamikaze> Oh, I think I get the problem...
2023-08-27 01:52:26 +0000 <mauke> works here
2023-08-27 01:52:47 +0000 <mauke> https://paste.tomsmeding.com/LdhIdAzI
2023-08-27 01:53:11 +0000 <Jeanne-Kamikaze> Yeah. The problem is that I have another type class with its own associated type, and the Prod Associated X isn't known.
2023-08-27 02:02:45 +0000Thomas03(~Thomas03@2600:1702:21b0:a500:e09e:1f4f:e07c:2dc2)
2023-08-27 02:06:37 +0000Inst(~liamzy@2601:6c4:4085:6d50::bb82) (Ping timeout: 245 seconds)
2023-08-27 02:07:21 +0000 <Thomas03> Hey, is this the right place to have my beginner code reviewed? I'm mostly self taught at Haskell, and I just finished my first sorta complicated project. The code works, but I just want to know in what ways I might be coding messily or inefficiently.
2023-08-27 02:07:50 +0000 <geekosaur> this is the place although it might not be the right time
2023-08-27 02:08:15 +0000 <Jeanne-Kamikaze> Shoot
2023-08-27 02:08:19 +0000 <geekosaur> discourse.haskell.org is also a possibility and is less dependent on other people being awake
2023-08-27 02:10:04 +0000 <Thomas03> https://paste.tomsmeding.com/BILueeeA#file-1
2023-08-27 02:11:05 +0000mvk(~mvk@2607:fea8:5c9a:a600::5235) (Ping timeout: 244 seconds)
2023-08-27 02:12:27 +0000Inst(~liamzy@2601:6c4:4085:6d50::773)
2023-08-27 02:12:29 +0000 <Thomas03> the code is supposed to emulate a game of tic-tac-toe, though I did make a couple shortcuts in its design
2023-08-27 02:14:13 +0000 <mauke> oof, 1-based indexing?
2023-08-27 02:16:23 +0000 <mauke> I don't like how everything is a string
2023-08-27 02:16:58 +0000 <mauke> number? string. a character? string. the board? strings.
2023-08-27 02:17:21 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 02:17:45 +0000 <Jeanne-Kamikaze> "read" is also not safe, some input handling in main would be helpful.
2023-08-27 02:18:28 +0000 <mauke> well, the quick and diry way is to combine getLine + read into readLn :-)
2023-08-27 02:18:37 +0000 <Jeanne-Kamikaze> If '#' is a sentinel, Maybe Char might be more appropriate in checkGrid.
2023-08-27 02:21:18 +0000 <Thomas03> what is 1-based indexing and a sentinel?
2023-08-27 02:22:09 +0000 <Jeanne-Kamikaze> '#" in checkGrid seems to be used only to signal that the game isn't over. Could have been '!' or whatever too. The meaning isn't clear until you find how it's used.
2023-08-27 02:22:56 +0000 <Jeanne-Kamikaze> The input row/column is 1,2,3, as opposed to 0,1,2; that's what he means.
2023-08-27 02:23:20 +0000 <Jeanne-Kamikaze> But I think that's fine since 1-based is more intuitive from a user's point of view.
2023-08-27 02:23:24 +0000 <Thomas03> ah, ok
2023-08-27 02:26:20 +0000ddellacosta(~ddellacos@146.70.171.100) (Ping timeout: 248 seconds)
2023-08-27 02:26:30 +0000 <Thomas03> I was pretty surprised that my code was almost safe when I ran it, considering the lack of Maybe monads. Inputting garbage into the row and column choice didn't cause a crash. The only way I found to crash the code was not inputting anything.
2023-08-27 02:26:59 +0000 <Thomas03> even if !! and my replace function aren't safe
2023-08-27 02:27:10 +0000 <mauke> I mean the replace function, not necessarily the user interface
2023-08-27 02:27:30 +0000 <mauke> (also, xs is not used in replace)
2023-08-27 02:28:26 +0000ddellacosta(~ddellacos@146.70.166.180)
2023-08-27 02:30:28 +0000 <Thomas03> yeah, i'm pretty sure my replace function could be done much more elegantly, but I chose to take the easy way out rather than turn the users rowChoice into something that wasn't a string
2023-08-27 02:31:52 +0000 <Thomas03> it might also make the function safe, but I'm going to redo the function in the morning with your suggestions and better handling of the changeGrid function
2023-08-27 02:31:59 +0000 <Thomas03> thanks for the help
2023-08-27 02:33:02 +0000 <mauke> :t \n r xs -> case splitAt n xs of (pre, post) -> pre ++ [r] ++ drop 1 post
2023-08-27 02:33:03 +0000 <lambdabot> Int -> a -> [a] -> [a]
2023-08-27 02:33:16 +0000mvk(~mvk@2607:fea8:5c9a:a600::5235)
2023-08-27 02:34:26 +0000bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-08-27 02:35:31 +0000 <mauke> :t \n r xs -> case splitAt n xs of (pre, post) -> pre <> [r] <> drop 1 post
2023-08-27 02:35:32 +0000 <lambdabot> Int -> a -> [a] -> [a]
2023-08-27 02:37:01 +0000Inst(~liamzy@2601:6c4:4085:6d50::773) (Ping timeout: 248 seconds)
2023-08-27 02:37:06 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 02:38:28 +0000 <Thomas03> That seems like a much better way to do it, I will just need to create a function to convert characterChoice into a Char
2023-08-27 02:39:14 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Client Quit)
2023-08-27 02:42:05 +0000myme(~myme@2a01:799:d60:e400:8c94:2d5b:43cf:54e) (Ping timeout: 244 seconds)
2023-08-27 02:42:59 +0000myme(~myme@2a01:799:d60:e400:931b:da7a:83d:85fa)
2023-08-27 02:43:01 +0000Thomas03(~Thomas03@2600:1702:21b0:a500:e09e:1f4f:e07c:2dc2) (Quit: Client closed)
2023-08-27 02:48:12 +0000finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-08-27 02:48:12 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-08-27 02:48:12 +0000finn_elijaFinnElija
2023-08-27 02:53:00 +0000bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 245 seconds)
2023-08-27 02:53:16 +0000td_(~td@i5387093E.versanet.de) (Ping timeout: 255 seconds)
2023-08-27 02:54:24 +0000bilegeek(~bilegeek@2600:1008:b049:a550:322c:1ff6:da17:76e2)
2023-08-27 02:55:24 +0000td_(~td@83.135.9.2)
2023-08-27 03:00:41 +0000YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 260 seconds)
2023-08-27 03:03:56 +0000YuutaW(~YuutaW@mail.yuuta.moe)
2023-08-27 03:18:46 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 244 seconds)
2023-08-27 03:20:44 +0000mvk(~mvk@2607:fea8:5c9a:a600::5235) (Ping timeout: 248 seconds)
2023-08-27 03:29:45 +0000aforemny_(~aforemny@i59F516C9.versanet.de)
2023-08-27 03:30:48 +0000aforemny(~aforemny@2001:9e8:6cef:2100:bda0:603:2023:867f) (Ping timeout: 246 seconds)
2023-08-27 03:34:44 +0000caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-08-27 03:46:17 +0000 <EvanR> tic tac toe is obviously -1 based indexing
2023-08-27 03:46:45 +0000 <wroathe> Is there a version of undefined, but for any kind? The use case is that I've got a scoped type variable in an instance of kind Meta, and I want to construct a value (that doesn't get evaluated) that I can apply https://hackage.haskell.org/package/base-4.18.0.0/docs/GHC-Generics.html#v:selName to
2023-08-27 03:47:04 +0000 <wroathe> something like: selName (undefined :: c)
2023-08-27 03:48:31 +0000 <wroathe> s/value/term, I guess
2023-08-27 03:55:38 +0000nyc(~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com) (Ping timeout: 258 seconds)
2023-08-27 03:56:12 +0000 <wroathe> Oh, I think TypeApplications works here
2023-08-27 03:56:19 +0000 <wroathe> selName @c undefined
2023-08-27 03:57:11 +0000Nosrep(~Nosrep@user/nosrep) (Remote host closed the connection)
2023-08-27 03:57:36 +0000Nosrep(~Nosrep@user/nosrep)
2023-08-27 03:57:51 +0000fweht(uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-08-27 04:00:30 +0000Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.207) (Quit: Leaving)
2023-08-27 04:07:26 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2023-08-27 04:11:32 +0000k3ut0i(~keutoi@223.230.26.106) (Ping timeout: 240 seconds)
2023-08-27 04:13:09 +0000razetime(~quassel@117.254.37.141) (Ping timeout: 246 seconds)
2023-08-27 04:54:10 +0000razetime(~quassel@117.254.37.141)
2023-08-27 05:08:06 +0000hammond(proscan@user/hammond2)
2023-08-27 05:08:22 +0000 <hammond> ppl seem to change the interface of libraries in haskell a lot.
2023-08-27 05:08:37 +0000 <hammond> is that a side effect of the language?
2023-08-27 05:12:18 +0000Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2023-08-27 05:16:28 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 05:17:39 +0000 <dsal> hammond: I think it's more of a side effect of your library choice. I don't experience that all that much.
2023-08-27 05:18:01 +0000 <dsal> I don't doubt it happens. Lots of software out there could use improvement. :)
2023-08-27 05:18:35 +0000 <hammond> yes
2023-08-27 05:18:42 +0000 <hammond> like regex.
2023-08-27 05:20:55 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds)
2023-08-27 05:21:14 +0000bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2023-08-27 05:21:21 +0000 <dsal> Oh. Maybe. I've not used regex for anything in years other than some editor stuff. I did use a haskell regex library a few years ago and it had a pretty awful exception case I couldn't make safe.
2023-08-27 05:21:55 +0000 <davean> ttps://hackage.haskell.org/package/regex ? A glance suggests its API hasn't changed in years?
2023-08-27 05:24:28 +0000Rydwxz(~rw@cpe-75-82-51-90.socal.res.rr.com) (Ping timeout: 255 seconds)
2023-08-27 05:24:36 +0000 <davean> Like litterly there hasn't been a change in like 5 years. That one 5 years ago sounds pretty minor.
2023-08-27 05:28:45 +0000ddellacosta(~ddellacos@146.70.166.180) (Ping timeout: 246 seconds)
2023-08-27 05:33:28 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 255 seconds)
2023-08-27 05:37:10 +0000 <davean> hammond: do you have more clarity about what you mean?
2023-08-27 05:39:31 +0000dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 05:39:32 +0000dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 05:39:32 +0000dibblego(~dibblego@haskell/developer/dibblego)
2023-08-27 05:41:20 +0000ddellacosta(~ddellacos@146.70.166.100)
2023-08-27 05:43:56 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 05:46:16 +0000 <hammond> oh it doesn't handle groups very well. say "ABC" "ABC" "ABC" and you want to find something (A(B)C)+ or something.
2023-08-27 05:46:48 +0000 <hammond> you can only get a String[][] back.
2023-08-27 05:46:50 +0000 <hammond> idk
2023-08-27 05:47:21 +0000 <dsal> That seems unrelated to the original statement. But I still have a much better life avoiding regex as much as possible.
2023-08-27 05:49:13 +0000 <hammond> dsal, well was devean referring to the original statement. well for instance the HTTP support. the interface changed with every version i downloaded.
2023-08-27 05:49:31 +0000 <dsal> Regex has http support?
2023-08-27 05:49:48 +0000 <hammond> HTTP library.
2023-08-27 05:50:29 +0000 <dsal> Oh, you mean regex could use improvement, not that it changes a lot.
2023-08-27 05:50:37 +0000 <dsal> Which HTTP library are you referring to?
2023-08-27 05:50:38 +0000 <hammond> then the namespaces were all funky too, modules shifted, game and went.
2023-08-27 05:50:52 +0000 <hammond> came*
2023-08-27 05:51:08 +0000 <hammond> lemmi open my code hold on.
2023-08-27 05:51:18 +0000nyc(~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com)
2023-08-27 05:55:28 +0000 <hammond> https://hackage.haskell.org/package/HTTP
2023-08-27 05:56:42 +0000 <hammond> then Cabal couldn't figure it out, finally luckily for me Debian had the right versions compiled and i managed to figure it out.
2023-08-27 05:57:11 +0000 <hammond> I was readin this thing about procedural programming, and I figured I asked.
2023-08-27 05:58:08 +0000 <dsal> Wow, that thing's up to version 4000s. I've never used that particular library.
2023-08-27 05:58:26 +0000 <hammond> why would regex in a very safe language have exceptions... for instance. and be unsafe.
2023-08-27 05:58:29 +0000 <hammond> ok
2023-08-27 05:58:31 +0000 <dolio> It's at version 4000 because it used to be versioned based on date or something.
2023-08-27 05:58:44 +0000 <dsal> It's from the future!
2023-08-27 05:59:11 +0000 <dsal> hammond: I've not looked in a while, but it has something to do with working on bytestrings.
2023-08-27 06:00:11 +0000 <hammond> i found one that was linked to .*? regex, when the string is too long it gets tired and throws an exception.
2023-08-27 06:00:32 +0000 <hammond> fine.
2023-08-27 06:01:00 +0000 <dsal> Life is better without regex in general.
2023-08-27 06:01:18 +0000 <hammond> you have to parse text sometimes.
2023-08-27 06:01:19 +0000 <mauke> regex is good
2023-08-27 06:01:24 +0000 <mauke> haskell is just bad at regex
2023-08-27 06:01:29 +0000 <dsal> When I have to parse text, I write a parser.
2023-08-27 06:02:59 +0000 <haskellbridge> <s​m> a regular expression is a parser
2023-08-27 06:03:10 +0000ddellacosta(~ddellacos@146.70.166.100) (Ping timeout: 255 seconds)
2023-08-27 06:03:13 +0000 <haskellbridge> <s​m> with all the boilerplate hidden away
2023-08-27 06:03:24 +0000 <mauke> why spend two seconds writing `printf "%.20s: %3.2f\n" label r` when I could write 20 lines formatting strings manually?
2023-08-27 06:03:36 +0000 <mauke> same with regex vs. combinator parsers
2023-08-27 06:03:37 +0000ski(~ski@ext-1-496.eduroam.chalmers.se) (Ping timeout: 255 seconds)
2023-08-27 06:04:55 +0000ddellacosta(~ddellacos@143.244.47.89)
2023-08-27 06:06:10 +0000 <dsal> I don't think it's fair comparing inputs and outputs. Outputs are generally more controlled. I find inputs easier to control with a parser with better ergonomics and maintainability.
2023-08-27 06:07:31 +0000 <mauke> same, but regex has better ergonomics (and arguably maintainability in cases where it applies)
2023-08-27 06:07:37 +0000 <hammond> regex is the language of parsing text. although it can be terrible to work with.
2023-08-27 06:08:00 +0000 <dolio> No, it's the language of lexing text.
2023-08-27 06:09:40 +0000jmcantrell(644f1bed9a@user/jmcantrell) (Remote host closed the connection)
2023-08-27 06:09:47 +0000jmcantrell(644f1bed9a@user/jmcantrell)
2023-08-27 06:14:18 +0000acidjnk(~acidjnk@p200300d6e7072f522470d89c17007116.dip0.t-ipconnect.de)
2023-08-27 06:23:51 +0000Rydwxz(~rw@cpe-75-82-51-90.socal.res.rr.com)
2023-08-27 06:26:51 +0000xff0x(~xff0x@2405:6580:b080:900:52e4:e06e:5b2b:5859) (Ping timeout: 246 seconds)
2023-08-27 06:27:16 +0000xff0x(~xff0x@178.255.149.135)
2023-08-27 06:30:36 +0000Square(~Square@user/square)
2023-08-27 06:31:51 +0000 <Square> I want a good ansi pretty printer of haskell values. Tried pretty-simple, but it seems a bit limited. Is there some acclaimed ansi pretty printer?
2023-08-27 06:34:39 +0000acidjnk(~acidjnk@p200300d6e7072f522470d89c17007116.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2023-08-27 06:36:21 +0000todi(~todi@p4fd1a580.dip0.t-ipconnect.de) (Remote host closed the connection)
2023-08-27 06:41:02 +0000idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-08-27 06:43:47 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 06:51:51 +0000 <haskellbridge> <s​m> that's the one I use. pretty-show is an alternative, with different limitations
2023-08-27 06:56:14 +0000bilegeek(~bilegeek@2600:1008:b049:a550:322c:1ff6:da17:76e2) (Quit: Leaving)
2023-08-27 07:01:33 +0000MQ-17J(~MQ-17J@104.28.216.165)
2023-08-27 07:01:48 +0000MQ-17J(~MQ-17J@104.28.216.165) (Client Quit)
2023-08-27 07:02:20 +0000MQ-17J(~MQ-17J@104.28.216.165)
2023-08-27 07:02:26 +0000MQ-17J(~MQ-17J@104.28.216.165) (Client Quit)
2023-08-27 07:06:10 +0000xff0x(~xff0x@178.255.149.135) (Ping timeout: 255 seconds)
2023-08-27 07:06:37 +0000acidjnk(~acidjnk@p200300d6e7072f524500269999e4b2db.dip0.t-ipconnect.de)
2023-08-27 07:08:00 +0000xff0x(~xff0x@2405:6580:b080:900:609e:9cca:19ee:68a9)
2023-08-27 07:09:18 +0000Rydwxz(~rw@cpe-75-82-51-90.socal.res.rr.com) (Ping timeout: 255 seconds)
2023-08-27 07:21:52 +0000ymirhotfoot(~ymirhotfo@user/ymirhotfoot)
2023-08-27 07:22:34 +0000 <ymirhotfoot> How does this work?
2023-08-27 07:23:20 +0000 <ymirhotfoot> I joined via the Ganja Wee Web Cgat thingie.
2023-08-27 07:23:37 +0000Inst(~liamzy@2601:6c4:4085:6d50::bb82)
2023-08-27 07:25:06 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 07:25:33 +0000 <mauke> how does what work?
2023-08-27 07:25:55 +0000 <ymirhotfoot> Ah, please forgive
2023-08-27 07:25:58 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Remote host closed the connection)
2023-08-27 07:26:06 +0000 <ymirhotfoot> gtoss vaguyness.
2023-08-27 07:26:32 +0000 <ymirhotfoot> I write a tiny ping to Edward Kmett this evening.
2023-08-27 07:26:34 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 07:26:55 +0000 <ymirhotfoot> I used the address contact@positron.ai .
2023-08-27 07:27:44 +0000 <ymirhotfoot> But I am "un-authentrcated" to Great Google's Own Version of USENET.
2023-08-27 07:27:48 +0000 <haskellbridge> <I​nst> testing
2023-08-27 07:27:53 +0000 <Inst> okay, nice / works
2023-08-27 07:28:10 +0000 <ymirhotfoot> So the tiny ping failed to get through.
2023-08-27 07:29:56 +0000 <mauke> looks like edwardk has been idle here for 15 days
2023-08-27 07:30:30 +0000 <ymirhotfoot> Is it reasonable yo send a single short sentence to Edward via this sub-system of the Internet?
2023-08-27 07:31:35 +0000 <ymirhotfoot> Ah, this is, oim how to say who I an, ag, well, Lokely I will tru in daylight to fet to Lovelock MV tomorrow.
2023-08-27 07:32:32 +0000 <ymirhotfoot> which is where the Verizon operator told me is the official home of POSOYTON.AI the Company.
2023-08-27 07:33:14 +0000 <ymirhotfoot> Thanks, Mauke!
2023-08-27 07:34:23 +0000 <ymirhotfoot> ad what I sent, attemped to send:
2023-08-27 07:34:34 +0000 <ymirhotfoot> The main message was
2023-08-27 07:34:44 +0000 <ymirhotfoot> PING
2023-08-27 07:35:12 +0000 <ymirhotfoot> and Yes Souriau was right!
2023-08-27 07:37:46 +0000 <ymirhotfoot> First: Thank you all!
2023-08-27 07:38:42 +0000 <ymirhotfoot> Secind: Good night, and, Heaven forwarding, see you later!
2023-08-27 07:38:49 +0000ymirhotfoot(~ymirhotfo@user/ymirhotfoot) (Remote host closed the connection)
2023-08-27 07:39:40 +0000Square(~Square@user/square) (Ping timeout: 245 seconds)
2023-08-27 07:39:55 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 255 seconds)
2023-08-27 07:48:30 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-08-27 07:49:27 +0000mmhat(~mmh@p200300f1c7042714ee086bfffe095315.dip0.t-ipconnect.de)
2023-08-27 07:51:15 +0000 <Inst> what is preventing toDyn from handling polymorphic functions?
2023-08-27 07:51:21 +0000mmhat(~mmh@p200300f1c7042714ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
2023-08-27 07:52:07 +0000todi(~todi@p4fd1a580.dip0.t-ipconnect.de)
2023-08-27 07:54:09 +0000notzmv(~zmv@user/notzmv) (Ping timeout: 244 seconds)
2023-08-27 07:56:59 +0000 <Axman6> What a strange fellow, I hope edwardk doesn't get murdered
2023-08-27 08:00:36 +0000 <c_wraith> Inst: It's based on Dynamic, and Dynamic can only represent concrete types
2023-08-27 08:01:08 +0000 <c_wraith> Err.. *Typeable
2023-08-27 08:05:57 +0000APic(apic@apic.name) (Quit: Upgrade GNU Screen)
2023-08-27 08:08:34 +0000APic(apic@apic.name)
2023-08-27 08:18:20 +0000sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-08-27 08:19:08 +0000dobblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 08:19:08 +0000dobblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 08:19:08 +0000dobblego(~dibblego@haskell/developer/dibblego)
2023-08-27 08:19:19 +0000Inst(~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection)
2023-08-27 08:19:24 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds)
2023-08-27 08:19:37 +0000Inst(~liamzy@2601:6c4:4085:6d50::6702)
2023-08-27 08:19:59 +0000dobblegodibblego
2023-08-27 08:25:56 +0000idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-08-27 08:26:03 +0000 <Inst> c_wraith: seems to be what I remembered, not sure how much of a limitation this is
2023-08-27 08:38:14 +0000xff0x(~xff0x@2405:6580:b080:900:609e:9cca:19ee:68a9) (Read error: Connection reset by peer)
2023-08-27 08:43:12 +0000xff0x(~xff0x@2405:6580:b080:900:a08b:1654:7816:1e12)
2023-08-27 08:46:34 +0000econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-08-27 08:48:25 +0000todi(~todi@p4fd1a580.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2023-08-27 08:50:37 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 08:52:15 +0000todi(~todi@p4fd1a580.dip0.t-ipconnect.de)
2023-08-27 08:56:32 +0000ulysses4ever(~artem@c-73-103-90-145.hsd1.in.comcast.net)
2023-08-27 08:56:33 +0000artem(~artem@73.103.90.145) (Read error: Connection reset by peer)
2023-08-27 09:03:22 +0000 <[Leary]> Inst: You can circumvent it with a newtype wrapper.
2023-08-27 09:06:32 +0000_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-08-27 09:11:37 +0000todi(~todi@p4fd1a580.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2023-08-27 09:11:49 +0000 <Inst> the typing involves specific variables
2023-08-27 09:12:36 +0000 <Inst> i wonder what this looks like if i just inline everything
2023-08-27 09:12:37 +0000 <Inst> https://discourse.haskell.org/t/beautiful-functional-programming/7411/28?u=liamzy
2023-08-27 09:16:32 +0000 <Inst> also, wait, tricking toDyn to do stuff, isn't it easier if you typeapplications than do it with a newtype?
2023-08-27 09:17:01 +0000Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk)
2023-08-27 09:17:11 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 09:18:12 +0000coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-08-27 09:18:14 +0000 <Axman6> is the hackage matrix builder still a thing? I've uploaded a release candidate but have no idea if it builds
2023-08-27 09:20:16 +0000 <dminuoso> https://github.com/haskell/hackage-server/issues/997
2023-08-27 09:21:39 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-08-27 09:22:05 +0000 <dminuoso> It reads like Andreas Abel is waiting on Herbert for a handover.
2023-08-27 09:22:29 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-08-27 09:23:10 +0000thyriaen(~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1)
2023-08-27 09:25:20 +0000 <Inst> yup, this works
2023-08-27 09:25:21 +0000 <Inst> ghci> toDyn $ id @Char
2023-08-27 09:25:21 +0000 <Inst> <<Char -> Char>>
2023-08-27 09:25:27 +0000 <Inst> but i can see how newtype can be useful
2023-08-27 09:26:24 +0000 <mauke> > toDyn (id :: Char -> Char)
2023-08-27 09:26:26 +0000 <lambdabot> <<Char -> Char>>
2023-08-27 09:26:36 +0000 <mauke> > toDyn (id `asAppliedTo` 'x')
2023-08-27 09:26:37 +0000 <lambdabot> <<Char -> Char>>
2023-08-27 09:26:42 +0000 <c_wraith> Inst: use a newtype that quantifies internally
2023-08-27 09:27:55 +0000 <mauke> newtype IdPoly = IdPoly (forall a. a -> a)
2023-08-27 09:28:46 +0000Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Quit: Leaving)
2023-08-27 09:29:11 +0000razetime(~quassel@117.254.37.141) (Remote host closed the connection)
2023-08-27 09:29:14 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 09:30:06 +0000 <albet70> in do notation, f _ <- ... what's f here?
2023-08-27 09:30:07 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:c533:a387:9f57:1069) (Remote host closed the connection)
2023-08-27 09:30:29 +0000 <mauke> is that legal syntax?
2023-08-27 09:30:36 +0000 <c_wraith> doesn't look like legal syntax
2023-08-27 09:30:49 +0000 <mauke> > do { f _ <- undefined; f }
2023-08-27 09:30:50 +0000 <lambdabot> <hint>:1:6: error:
2023-08-27 09:30:50 +0000 <lambdabot> Parse error in pattern: f
2023-08-27 09:30:50 +0000 <lambdabot> Possibly caused by a missing 'do'?
2023-08-27 09:30:53 +0000 <c_wraith> It would be if there was a constructor in front of it, though
2023-08-27 09:31:02 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-08-27 09:31:10 +0000 <mauke> albet70: it's a parse error
2023-08-27 09:31:24 +0000 <c_wraith> albet70: F _ <- ... is a pattern match, though
2023-08-27 09:31:37 +0000gmg(~user@user/gehmehgeh)
2023-08-27 09:33:08 +0000 <albet70> https://github.com/crytic/echidna/blob/master/src/Main.hs#L60C1-L60C1
2023-08-27 09:33:16 +0000 <albet70> 62 lines
2023-08-27 09:33:16 +0000fendor(~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf)
2023-08-27 09:33:28 +0000 <c_wraith> Yes, there's a constructor at the start of that pattern
2023-08-27 09:33:36 +0000 <c_wraith> The capital letter matters
2023-08-27 09:36:05 +0000 <albet70> but 61 line isn't capitalized
2023-08-27 09:36:15 +0000 <c_wraith> the pattern portion is
2023-08-27 09:36:51 +0000 <albet70> what's the term I should search for those sytanx?
2023-08-27 09:36:57 +0000 <c_wraith> it's just pattern syntax
2023-08-27 09:37:13 +0000 <c_wraith> the only interesting part is that it's using RecordWildCards to bind record fields to names
2023-08-27 09:37:23 +0000 <Axman6> dminuoso: thanks - that post beomg from 2022 isn't great. Would be nice to have Haskell benelovent corporate sponsoraship overload
2023-08-27 09:38:18 +0000 <mauke> albet70: in line 61 there's only one "thing" to the left of the arrow
2023-08-27 09:39:30 +0000 <albet70> haha, I see
2023-08-27 09:40:46 +0000 <albet70> 62 line return a value which is EconfigWithValue ... and that pattern matching for extract loadedCfg and ks
2023-08-27 09:42:25 +0000 <c_wraith> well, pattern-matching in do notation has one extra caveat - if the pattern doesn't match, a call to fail is made
2023-08-27 09:43:45 +0000 <Inst> hold on
2023-08-27 09:44:32 +0000 <probie> > do { Just x <- [Nothing]; pure 42 }
2023-08-27 09:44:34 +0000 <lambdabot> []
2023-08-27 09:44:37 +0000 <albet70> that's neat, I define a getMultiPart MultiPart x = x to extract b from A b, and this can avoid to define a function
2023-08-27 09:44:46 +0000 <Inst> cool, it works
2023-08-27 09:45:07 +0000 <probie> > do { mx <- [Nothing]; case mx of { Just x -> pure 42} }
2023-08-27 09:45:09 +0000 <lambdabot> *Exception: <interactive>:3:23-53: Non-exhaustive patterns in case
2023-08-27 09:45:42 +0000 <mauke> Inst: I didn't look at any other solutions, but this is what I came up with: https://paste.tomsmeding.com/8yeAVifc
2023-08-27 09:45:55 +0000 <c_wraith> :t \m -> do Just x <- m ; pure x -- also, note the inferred constraint
2023-08-27 09:45:55 +0000 <lambdabot> MonadFail m => m (Maybe b) -> m b
2023-08-27 09:46:09 +0000 <mauke> @undo do Just x <- m ; pure x
2023-08-27 09:46:09 +0000 <lambdabot> m >>= \ a -> case a of { Just x -> pure x; _ -> fail ""}
2023-08-27 09:46:29 +0000 <Inst> i still prefer the Object hashmap approach to data
2023-08-27 09:46:50 +0000 <Inst> in this particular context; i.e, you're working with foreign data from a paradigm that implies objects, isn't Object hashmap the natural way to do it?
2023-08-27 09:46:53 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds)
2023-08-27 09:47:09 +0000 <mauke> no
2023-08-27 09:47:18 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 09:47:25 +0000 <Inst> Object treemap is slower
2023-08-27 09:47:33 +0000 <mauke> we have a clear spec that requires the existence and type of several fields
2023-08-27 09:47:33 +0000todi(~todi@p4fd1a580.dip0.t-ipconnect.de)
2023-08-27 09:47:45 +0000 <mauke> we can validate and decode that at the application boundaries
2023-08-27 09:48:09 +0000 <Inst> tbh i'm not sure how Haskell static vs foreign language dynamic / objects interacts
2023-08-27 09:48:16 +0000 <mauke> we don't have to go full dynamic for the application core and make everything partial (or put runtime checks everywhere)
2023-08-27 09:48:39 +0000 <Inst> *parse, don't validate
2023-08-27 09:48:53 +0000 <mauke> "validate and decode" ~ parse
2023-08-27 09:49:40 +0000 <Inst> what do you think about the dynamic typing advocate counter-argument, i.e, domain might be too flexible for this to work, and might result in annoying constant refactoring?
2023-08-27 09:49:42 +0000dcoutts(~duncan@31.94.3.174)
2023-08-27 09:49:56 +0000 <probie> I actually don't think that a Haskell record type is a fair encoding of the question (assuming this is Jose Valim's problem)
2023-08-27 09:50:07 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 09:50:10 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 09:50:10 +0000 <mauke> probie: why not?
2023-08-27 09:50:14 +0000 <Inst> it is
2023-08-27 09:50:21 +0000 <Inst> (that is, it is Jose Valim's problem)
2023-08-27 09:50:21 +0000 <c_wraith> Doing it with static types requires not relying on unnecessary information, which a lot of people are... bad at.
2023-08-27 09:50:25 +0000 <probie> It's not a real key-value data structure. It just looks and feels like one
2023-08-27 09:50:49 +0000 <mauke> the problem doesn't require a "real" key-value data structure
2023-08-27 09:51:05 +0000 <Inst> that is to say, you can just drop down to a product type and call it a day?
2023-08-27 09:51:06 +0000 <probie> The algorithm should receive a list of sections. A section is a key-value data structure ...
2023-08-27 09:51:16 +0000 <mauke> doesn't say "real"
2023-08-27 09:51:40 +0000 <mauke> Inst: I don't understand that argument
2023-08-27 09:51:53 +0000 <Inst> which argument? The dynamic typing advocate argument?
2023-08-27 09:51:55 +0000 <mauke> yeah
2023-08-27 09:52:16 +0000 <Inst> i mean the Haskeller counterargument is that Haskell is fast and flexible enough on refactoring that it won't be a problem
2023-08-27 09:52:29 +0000 <Inst> their argument is that if you lock everything into fully-specified ADTs, the specification can keep on changing
2023-08-27 09:52:31 +0000 <mauke> if the set of fields changes significantly, I change my data type accordingly
2023-08-27 09:52:34 +0000 <c_wraith> Inst: that's not the Haskeller counterargument
2023-08-27 09:52:47 +0000 <mauke> if that breaks the code handling it, then I'll get a compiler error and can fix the code
2023-08-27 09:52:48 +0000 <Inst> what is the Haskeller counterargument, then?
2023-08-27 09:52:59 +0000 <mauke> in a dynamic language, the code would still be broken in that case, only you wouldn't know
2023-08-27 09:53:14 +0000 <c_wraith> Inst: the Haskeller counterargument is that you shouldn't be parsing things into fields that you don't need. You just store "the rest of the data"
2023-08-27 09:53:32 +0000 <c_wraith> Inst: so the only things that require a code change are the things that change the parts you're actually using
2023-08-27 09:54:36 +0000 <mauke> case in point: note that my solution is fully polymorphic in the section_extra/lesson_extra fields. you could carry an arbitrary Map in there
2023-08-27 09:54:44 +0000 <probie> mauke: How can it be a key-value data structure if you don't have keys?
2023-08-27 09:55:12 +0000 <mauke> probie: I have field names
2023-08-27 09:55:14 +0000 <mauke> close enough
2023-08-27 09:55:21 +0000 <Inst> implicit key is the Section l a -> b function, no?
2023-08-27 09:55:51 +0000 <albet70> what's that syntax of 61 line?
2023-08-27 09:55:52 +0000 <probie> mauke: Are they? What if I remove the field names and write separate functions to access them? Is that still a key-value data structure?
2023-08-27 09:56:12 +0000 <mauke> probie: no
2023-08-27 09:56:21 +0000 <albet70> opts@Options{...} <- ...
2023-08-27 09:56:34 +0000 <mauke> albet70: aliasing
2023-08-27 09:56:53 +0000 <c_wraith> albet70: there are only two dots
2023-08-27 09:57:06 +0000 <c_wraith> albet70: {..} is RecordWildCards
2023-08-27 09:57:09 +0000 <mauke> `variable@pattern` matches against `pattern`, but also binds the whole value to `variable`
2023-08-27 09:57:15 +0000xff0x(~xff0x@2405:6580:b080:900:a08b:1654:7816:1e12) (Remote host closed the connection)
2023-08-27 09:57:34 +0000 <probie> mauke: What if Haskell didn't have record syntax, but I had a preprocessor that re-added it. Is your identical syntax code now no-longer a key-value data structure?
2023-08-27 09:57:34 +0000xff0x(~xff0x@2405:6580:b080:900:cb8f:3cad:845d:4b41)
2023-08-27 09:57:42 +0000 <Inst> mauke: interesting use of runState
2023-08-27 09:57:47 +0000 <Inst> no need for mapAccumL
2023-08-27 09:58:01 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 09:58:33 +0000 <mauke> probie: does it matter?
2023-08-27 09:59:06 +0000 <probie> For writing code which annotates courses and lessons, not one bit
2023-08-27 09:59:36 +0000 <probie> For solving a problem on "key-value data structures" I think it's important to be explicit about what a key-value data structure is
2023-08-27 10:00:13 +0000 <mauke> no, that's important for posing the problem
2023-08-27 10:01:16 +0000 <mauke> for solving I'm going to do whatever seems easiest
2023-08-27 10:01:28 +0000 <Inst> tbh, does elixir support mutable objects?
2023-08-27 10:01:37 +0000 <probie> If I'm just going JSON -> annotate -> JSON for that problem, at no point do I need anything like a "key-value" data structure, but I think they'd cry foul if I just treated it as an event stream that needs lookahead (due to the nature of JSON)
2023-08-27 10:02:42 +0000 <probie> I can just go with my shitty `foldr` solution, and deal in raw bytestrings
2023-08-27 10:02:43 +0000 <Inst> c_wraith: tbh, are dynamic typing advocates essentially argueing for undefined behavior?
2023-08-27 10:02:58 +0000 <Inst> /s/argueing/arguing
2023-08-27 10:03:26 +0000 <probie> https://paste.tomsmeding.com/ewVC4yzd for my unreadable `foldr` solution
2023-08-27 10:03:31 +0000 <mauke> besides, you can just slap a parser in front of my solution and get the same interface
2023-08-27 10:03:48 +0000aeroplane(~user@user/aeroplane)
2023-08-27 10:04:12 +0000 <probie> (to clarify, my solution was originally meant as a joke "all you need is foldr", so readability is lacking)
2023-08-27 10:04:15 +0000 <albet70> opts@Options{..} <- ... equal to let opts = ...?
2023-08-27 10:04:31 +0000notzmv(~zmv@user/notzmv)
2023-08-27 10:05:49 +0000 <Inst> technically speaking, aren't most recursive problems solvable with foldr?
2023-08-27 10:05:49 +0000 <Inst> like, you can implement maps with foldr, unfolds (I think) with foldr, filters with foldr, etc
2023-08-27 10:05:49 +0000Inst(~liamzy@2601:6c4:4085:6d50::6702) (Remote host closed the connection)
2023-08-27 10:06:06 +0000Inst(~liamzy@2601:6c4:4085:6d50::bb82)
2023-08-27 10:06:51 +0000 <probie> All problems are solvable with `foldr` if you have infinite lists.
2023-08-27 10:07:09 +0000 <mauke> and if your "accumulator" is another function
2023-08-27 10:08:12 +0000dcoutts(~duncan@31.94.3.174) (Ping timeout: 248 seconds)
2023-08-27 10:08:23 +0000 <Inst> what is an accumulator in a foldr context?
2023-08-27 10:08:35 +0000 <Inst> the element on the left, i.e, the next expression to be parsed, or the default value?
2023-08-27 10:08:55 +0000 <tomsmeding> albet70: 'opts@Options{..} <- ...' means 'x <- ... ; let opts@Options{...} = x'
2023-08-27 10:09:09 +0000 <tomsmeding> well, it doesn't if Options isn't the only constructor of '...'
2023-08-27 10:09:31 +0000 <tomsmeding> because then MonadFail would get used if the constructor didn't match
2023-08-27 10:09:40 +0000 <tomsmeding> but for single-constructor datatypes, close enough
2023-08-27 10:09:46 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-08-27 10:09:59 +0000kupi_(uid212005@id-212005.hampstead.irccloud.com)
2023-08-27 10:10:24 +0000 <tomsmeding> Inst: the a in (b -> a -> a) -> a -> [b] -> a
2023-08-27 10:12:25 +0000 <albet70> right
2023-08-27 10:14:56 +0000kupi_(uid212005@id-212005.hampstead.irccloud.com) ()
2023-08-27 10:15:20 +0000kupi_(uid212005@id-212005.hampstead.irccloud.com)
2023-08-27 10:15:20 +0000kupi_kupi
2023-08-27 10:15:23 +0000kupi(uid212005@id-212005.hampstead.irccloud.com) (Client Quit)
2023-08-27 10:15:35 +0000kupi(uid212005@id-212005.hampstead.irccloud.com)
2023-08-27 10:23:16 +0000 <Inst> thanks
2023-08-27 10:23:26 +0000 <Inst> yeah it's hard for me to think of foldr as containing an accumulator
2023-08-27 10:23:44 +0000 <Inst> because i think of how you can implement foldl' with foldr
2023-08-27 10:23:55 +0000 <[Leary]> tomsmeding: That transform also breaks strictness and tyvar scoping. What's wrong with case?
2023-08-27 10:23:58 +0000 <Inst> wherein the accumulator can actually not exist
2023-08-27 10:24:11 +0000 <Inst> and the actual accumulator is the function after the foldr function
2023-08-27 10:24:26 +0000 <probie> In that case, the "accumulator" in foldr is the continuation
2023-08-27 10:24:41 +0000waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-08-27 10:25:50 +0000 <[Leary]> @undo do{ x@Foo{} <- foo; bar }
2023-08-27 10:25:50 +0000 <lambdabot> foo >>= \ a -> case a of { x@Foo{} -> bar; _ -> fail ""}
2023-08-27 10:25:55 +0000 <[Leary]> albet70: ^
2023-08-27 10:28:21 +0000 <probie> :t \f z xs -> foldr (\x cont !acc -> cont (acc `f` x)) id xs z -- if this is the foldl' you're thinking of
2023-08-27 10:28:22 +0000 <lambdabot> Foldable t1 => (t2 -> t3 -> t2) -> t2 -> t1 t3 -> t2
2023-08-27 10:30:39 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:508a:b795:5c07:5ed4)
2023-08-27 10:33:15 +0000 <tomsmeding> Inst: all the same you're accumulating that continuation, as it were -- building a larger and larger continuation as you go
2023-08-27 10:34:13 +0000 <Inst> ehhh, i can strict it, no?
2023-08-27 10:34:41 +0000 <Inst> thanks for terms, calling the foldl' simulation a fold with continuation is nice
2023-08-27 10:34:47 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:508a:b795:5c07:5ed4) (Ping timeout: 246 seconds)
2023-08-27 10:34:57 +0000 <Inst> afaik the continuation isn't actually built
2023-08-27 10:35:30 +0000 <Inst> because if you strict it on the outside accumulator, the function evaluates to a continuation and new accumulator
2023-08-27 10:35:40 +0000 <Inst> and goes through the continuations step by step
2023-08-27 10:36:36 +0000 <tomsmeding> Inst: is that behaviour observable?
2023-08-27 10:36:50 +0000 <tomsmeding> or just a result of ghc's particular choice of lazy evaluation order
2023-08-27 10:37:15 +0000 <tomsmeding> if the latter, then it's still valid to semantically see foldr as building up a continuation :)
2023-08-27 10:37:31 +0000 <tomsmeding> anyway, that's where the terminology comes from
2023-08-27 10:38:26 +0000 <Inst> i guess i think in terms of GHC
2023-08-27 10:38:50 +0000 <Inst> thanks for the advice and enlightenment everyone!
2023-08-27 11:05:39 +0000mrmr1(~mrmr@user/mrmr)
2023-08-27 11:12:50 +0000idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-08-27 11:20:30 +0000xff0x(~xff0x@2405:6580:b080:900:cb8f:3cad:845d:4b41) (Ping timeout: 245 seconds)
2023-08-27 11:20:55 +0000xff0x(~xff0x@2405:6580:b080:900:6a3:c84f:b4fa:44ab)
2023-08-27 11:22:22 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 11:23:14 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Max SendQ exceeded)
2023-08-27 11:23:48 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 11:26:04 +0000xff0x(~xff0x@2405:6580:b080:900:6a3:c84f:b4fa:44ab) (Ping timeout: 248 seconds)
2023-08-27 11:26:49 +0000k3ut0i(~keutoi@106.201.95.140)
2023-08-27 11:27:47 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 11:28:06 +0000xff0x(~xff0x@2405:6580:b080:900:1db3:366c:50c0:f70b)
2023-08-27 11:38:25 +0000TheCoffeMaker_(~TheCoffeM@190.245.100.85) (Ping timeout: 255 seconds)
2023-08-27 11:41:38 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 11:44:27 +0000jabuxas(~jabuxas@user/jabuxas)
2023-08-27 11:46:04 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
2023-08-27 11:49:21 +0000 <edwardk> Axman6: more likely my cofounder will get murdered. I'm not the one in Nevada.
2023-08-27 11:50:18 +0000 <Axman6> Well, that some consolation then! (Unless we like your cofounder equally, then it's also still probably a bad thing). How' the new gig going?
2023-08-27 11:53:09 +0000 <edwardk> i mean i do rather like him. we did go start a company together.
2023-08-27 11:53:16 +0000 <edwardk> going well!
2023-08-27 11:53:39 +0000 <edwardk> i'll be at ICFP in a week or so hiring a little bit.
2023-08-27 11:55:18 +0000 <jackdk> man I need more conferences in my life again
2023-08-27 11:57:26 +0000 <juri_> i just tried to do a talk, after four years of no-talk. it's pretty embarassing.
2023-08-27 11:58:12 +0000 <juri_> showed up with a laptop that had no pdf viewer, and ended up on a loaner that did not handle "slide and notes" well. showed my slide and notes side-by-side to the audience.
2023-08-27 11:58:22 +0000 <juri_> very "kill me now" experience.
2023-08-27 11:58:49 +0000 <mauke> how go you get a laptop without a browser?
2023-08-27 11:59:06 +0000 <juri_> very carefully. :)
2023-08-27 11:59:17 +0000 <Inst> did you have a GUI?
2023-08-27 11:59:24 +0000xff0x(~xff0x@2405:6580:b080:900:1db3:366c:50c0:f70b) (Ping timeout: 256 seconds)
2023-08-27 11:59:38 +0000 <juri_> sort of. no GUI apps at all, other than an xterm.
2023-08-27 12:00:11 +0000 <Inst> no package manager either?
2023-08-27 12:00:12 +0000 <juri_> the conference had no ethernet, so i couldn't just fix it quickly.
2023-08-27 12:00:15 +0000 <Inst> ah
2023-08-27 12:00:37 +0000 <Inst> also, can I ask about Cabal?
2023-08-27 12:00:46 +0000 <Inst> I'm told it's bad practice to cabal install foo --lib everything
2023-08-27 12:00:56 +0000 <Inst> what I'm doing now is cabal install acme-dont --lib
2023-08-27 12:01:08 +0000 <Inst> which overrides dont, which is apparently not in any stackage libs
2023-08-27 12:01:15 +0000 <juri_> you can thank the german state for that mess. they scheduled a meeting about buying a house in the middle of the conference.
2023-08-27 12:01:18 +0000xff0x(~xff0x@2405:6580:b080:900:39d8:3c9:7c35:7d94)
2023-08-27 12:01:33 +0000 <Inst> that seems surreal
2023-08-27 12:01:41 +0000 <juri_> it's an experience.
2023-08-27 12:01:45 +0000 <Inst> then i cabal install libs, which doesn't expose them to a public namespace
2023-08-27 12:01:59 +0000 <juri_> from what i hear, the talk was still alright, but..
2023-08-27 12:02:28 +0000 <juri_> people might just be being polite.
2023-08-27 12:05:02 +0000 <Axman6> edwardk: interesting; I wish I could make ICFP sometime. New job which doesn't care about FP and money being tright mean that's unlikely to change anytime soon sadly
2023-08-27 12:07:00 +0000 <Axman6> edwardk: Any chance you're using Clash at positron?
2023-08-27 12:07:20 +0000 <edwardk> none. clash isn't really up to the task we're pushing
2023-08-27 12:08:08 +0000 <edwardk> short term project is 95% direct verilog. 4% c for high-level synthesis, 1% haskell. the 1% haskell is the key to it all.
2023-08-27 12:08:45 +0000 <Axman6> Interesting, I'd be interested to hear more about that. I've been playing with it lately (new job is a FPGA based scientific test and measurement product), and have been really impressed by the depth of what they've built
2023-08-27 12:09:37 +0000 <edwardk> happy to jump on a call some time. calendly.com/ekmett is easy, if nothing works for you off there (australian time and the hours i leave open are not terribly compatible) let me know and we'll find something (hell, i'm awake now
2023-08-27 12:09:39 +0000anselmschueler(~anselmsch@user/schuelermine)
2023-08-27 12:11:21 +0000 <Axman6> Ha, indeed, it would be good to catch up again. I have a feeling my usual awake hours tend top end up roughly <the US>+12h, which makes overlaps nearly maximally bad
2023-08-27 12:11:32 +0000 <probie> edwardk: "> awake now" It's 10pm
2023-08-27 12:12:22 +0000 <edwardk> 8am here, and i didn't sleep yet.
2023-08-27 12:12:31 +0000 <Axman6> D:
2023-08-27 12:13:58 +0000thyriaen(~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1) (Remote host closed the connection)
2023-08-27 12:14:02 +0000 <Axman6> I hope that's because you've been working on something fun, and not the standard company work hours
2023-08-27 12:14:50 +0000 <edwardk> very much the 'something fun' part
2023-08-27 12:15:06 +0000 <edwardk> found a clever way to code up the control logic and wanted to see it work before i slept
2023-08-27 12:20:55 +0000anselmschueler(~anselmsch@user/schuelermine) (Ping timeout: 246 seconds)
2023-08-27 12:24:19 +0000finsternis(~X@23.226.237.192) (Ping timeout: 258 seconds)
2023-08-27 12:24:43 +0000finsternis(~X@23.226.237.192)
2023-08-27 12:24:54 +0000xff0x(~xff0x@2405:6580:b080:900:39d8:3c9:7c35:7d94) (Ping timeout: 256 seconds)
2023-08-27 12:26:32 +0000xff0x(~xff0x@2405:6580:b080:900:714a:8e99:dec2:574)
2023-08-27 12:29:40 +0000kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-08-27 12:32:52 +0000eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-08-27 12:33:16 +0000sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-08-27 12:36:17 +0000ripspin(~chatzilla@1.145.230.12)
2023-08-27 12:37:22 +0000eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2023-08-27 12:40:52 +0000fendor(~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf) (Remote host closed the connection)
2023-08-27 12:41:09 +0000stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 246 seconds)
2023-08-27 12:41:38 +0000xff0x(~xff0x@2405:6580:b080:900:714a:8e99:dec2:574) (Ping timeout: 246 seconds)
2023-08-27 12:43:45 +0000xff0x(~xff0x@2405:6580:b080:900:b7a3:53a:8a49:b7b0)
2023-08-27 12:43:47 +0000fweht(uid404746@id-404746.lymington.irccloud.com)
2023-08-27 12:44:48 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 12:49:02 +0000extor(~extor@ns3018124.ip-149-202-82.eu) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in)
2023-08-27 12:52:58 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 12:54:51 +0000stiell_(~stiell@gateway/tor-sasl/stiell)
2023-08-27 12:55:39 +0000xff0x(~xff0x@2405:6580:b080:900:b7a3:53a:8a49:b7b0) (Remote host closed the connection)
2023-08-27 12:55:58 +0000xff0x(~xff0x@2405:6580:b080:900:35db:109b:d18d:4f60)
2023-08-27 12:58:57 +0000extor(~extor@ns3018124.ip-149-202-82.eu)
2023-08-27 13:18:57 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 13:19:19 +0000Inst(~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection)
2023-08-27 13:19:37 +0000Inst(~liamzy@2601:6c4:4085:6d50::9ad9)
2023-08-27 13:23:43 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-08-27 13:23:55 +0000econo_(uid147250@id-147250.tinside.irccloud.com)
2023-08-27 13:26:39 +0000azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 246 seconds)
2023-08-27 13:29:33 +0000bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-08-27 13:30:35 +0000aeroplane(~user@user/aeroplane) (ERC 5.4 (IRC client for GNU Emacs 28.2))
2023-08-27 13:33:52 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 13:35:05 +0000bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 245 seconds)
2023-08-27 13:41:32 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 13:41:47 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 13:48:08 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 13:48:23 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 13:48:46 +0000jabuxas(~jabuxas@user/jabuxas) (Ping timeout: 246 seconds)
2023-08-27 13:50:06 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 13:50:20 +0000idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-08-27 13:50:55 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Client Quit)
2023-08-27 13:51:09 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 13:55:27 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 13:55:44 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 13:56:56 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 14:02:20 +0000Inst(~liamzy@2601:6c4:4085:6d50::9ad9) (Ping timeout: 248 seconds)
2023-08-27 14:04:32 +0000_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-08-27 14:05:46 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 14:09:22 +0000_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-08-27 14:13:54 +0000dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net)
2023-08-27 14:14:44 +0000sm(~sm@plaintextaccounting/sm) (Remote host closed the connection)
2023-08-27 14:15:24 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 14:15:57 +0000Pickchea(~private@user/pickchea)
2023-08-27 14:18:27 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 14:18:46 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 14:19:40 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Quit: Quit)
2023-08-27 14:19:54 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 14:22:42 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Client Quit)
2023-08-27 14:22:56 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 14:24:44 +0000Inst(~liamzy@2601:6c4:4085:6d50::7f5a)
2023-08-27 14:26:56 +0000sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-08-27 14:28:58 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 14:29:04 +0000kilolympus(~kilolympu@cpc105064-sgyl40-2-0-cust46.18-2.cable.virginm.net)
2023-08-27 14:31:20 +0000 <albet70> I found that pattern matching is too powerful, we may not need record syntax to extract b from A b
2023-08-27 14:32:03 +0000chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-08-27 14:32:03 +0000stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-08-27 14:32:27 +0000stiell_(~stiell@gateway/tor-sasl/stiell)
2023-08-27 14:32:42 +0000chiselfuse(~chiselfus@user/chiselfuse)
2023-08-27 14:35:05 +0000shapr(~user@2600:1700:c640:3100:ffa9:4f64:3f6e:7248) (Remote host closed the connection)
2023-08-27 14:35:18 +0000shapr(~user@2600:1700:c640:3100:5abb:a85e:1a7a:3359)
2023-08-27 14:37:18 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-08-27 14:38:27 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 14:38:46 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 14:40:23 +0000mikoto-chan(~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be)
2023-08-27 14:45:43 +0000thyriaen(~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1)
2023-08-27 14:45:44 +0000thyriaen(~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1) (Remote host closed the connection)
2023-08-27 14:51:42 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 14:57:52 +0000leah2(~leah@vuxu.org) (Ping timeout: 245 seconds)
2023-08-27 14:58:31 +0000bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-08-27 15:05:10 +0000RSCASTILHO(~RSCASTILH@187.40.124.54)
2023-08-27 15:08:25 +0000sm(~sm@plaintextaccounting/sm) (Ping timeout: 245 seconds)
2023-08-27 15:08:52 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 15:09:16 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 15:11:04 +0000leah2(~leah@vuxu.org)
2023-08-27 15:12:23 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 15:13:36 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 246 seconds)
2023-08-27 15:13:41 +0000sm_(~sm@plaintextaccounting/sm)
2023-08-27 15:14:43 +0000dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 15:14:43 +0000dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 15:14:43 +0000dibblego(~dibblego@haskell/developer/dibblego)
2023-08-27 15:17:00 +0000sm(~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds)
2023-08-27 15:19:58 +0000Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-08-27 15:23:28 +0000bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Remote host closed the connection)
2023-08-27 15:23:51 +0000bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-08-27 15:24:45 +0000Square(~Square@user/square)
2023-08-27 15:25:17 +0000 <Square> Is there some trick to add writer-like capabilities to your Free monad?
2023-08-27 15:25:18 +0000gmg(~user@user/gehmehgeh) (Ping timeout: 246 seconds)
2023-08-27 15:25:59 +0000gmg(~user@user/gehmehgeh)
2023-08-27 15:26:41 +0000 <Square> ...just want to log things during its evaluation
2023-08-27 15:27:36 +0000Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk)
2023-08-27 15:28:17 +0000ripspin(~chatzilla@1.145.230.12) (Remote host closed the connection)
2023-08-27 15:34:10 +0000dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 256 seconds)
2023-08-27 15:35:03 +0000Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Quit: Leaving)
2023-08-27 15:37:20 +0000Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-154.cust.tzulo.com)
2023-08-27 15:37:23 +0000caryhartline(~caryhartl@168.182.58.169)
2023-08-27 15:38:27 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 15:38:44 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 15:40:50 +0000TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2023-08-27 15:42:25 +0000grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2023-08-27 15:50:36 +0000YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 248 seconds)
2023-08-27 15:51:52 +0000 <EvanR> it's a free monad, you add whatever you want to the interface, then implement it
2023-08-27 15:52:30 +0000wroathe(~wroathe@user/wroathe)
2023-08-27 15:52:33 +0000YuutaW(~YuutaW@mail.yuuta.moe)
2023-08-27 15:52:35 +0000waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds)
2023-08-27 15:52:42 +0000sm_(~sm@plaintextaccounting/sm) (Quit: sm_)
2023-08-27 15:52:46 +0000 <EvanR> albet70, 'extracting' fields usually isn't the 'problem' with record syntax
2023-08-27 15:53:16 +0000 <Inst> where do I go to report that this list is insane?
2023-08-27 15:53:17 +0000 <Inst> https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/table.html
2023-08-27 15:53:26 +0000 <Inst> not in the usual "Haskell has too many extensions" sense, but rather:
2023-08-27 15:53:31 +0000 <Inst> ImplicitPrelude Don't implicitly import Prelude. Implied by RebindableSyntax. ???
2023-08-27 15:54:02 +0000idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-08-27 15:56:57 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-08-27 15:57:13 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-08-27 15:57:24 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 15:57:55 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 15:58:44 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 16:00:05 +0000k3ut0i(~keutoi@106.201.95.140) (Ping timeout: 245 seconds)
2023-08-27 16:00:11 +0000drdo(~drdo@bl5-28-156.dsl.telepac.pt) (Ping timeout: 250 seconds)
2023-08-27 16:03:13 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 250 seconds)
2023-08-27 16:04:29 +0000bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 248 seconds)
2023-08-27 16:05:00 +0000 <Inst> reported on GitLab, hope that's appropriate
2023-08-27 16:06:54 +0000k3ut0i(~keutoi@122.169.217.14)
2023-08-27 16:07:55 +0000notzmv(~zmv@user/notzmv) (Remote host closed the connection)
2023-08-27 16:07:56 +0000Inst(~liamzy@2601:6c4:4085:6d50::7f5a) (Remote host closed the connection)
2023-08-27 16:08:08 +0000 <EvanR> what is the problem
2023-08-27 16:08:13 +0000Inst(~liamzy@2601:6c4:4085:6d50::bb82)
2023-08-27 16:08:27 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 16:08:44 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 16:11:07 +0000grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 255 seconds)
2023-08-27 16:13:44 +0000notzmv(~zmv@user/notzmv)
2023-08-27 16:17:37 +0000fweht(uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-08-27 16:18:41 +0000YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 260 seconds)
2023-08-27 16:18:43 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2023-08-27 16:21:56 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 16:22:18 +0000Rydwxz(~rw@cpe-75-82-51-90.socal.res.rr.com)
2023-08-27 16:29:56 +0000Inst(~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection)
2023-08-27 16:30:16 +0000Inst(~liamzy@2601:6c4:4085:6d50::7f5a)
2023-08-27 16:33:29 +0000migas(~migas@astra4961.startdedicated.net) (Quit: Ping timeout (120 seconds))
2023-08-27 16:33:29 +0000caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-08-27 16:35:17 +0000migas(~migas@astra4961.startdedicated.net)
2023-08-27 16:35:44 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 16:36:12 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:4c5b:3166:bd64:8e4)
2023-08-27 16:36:36 +0000caryhartline(~caryhartl@168.182.58.169)
2023-08-27 16:37:00 +0000Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-154.cust.tzulo.com) (Quit: Leaving)
2023-08-27 16:39:31 +0000YuutaW(~YuutaW@2404:f4c0:f9c3:502::100:17b7)
2023-08-27 16:40:35 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:4c5b:3166:bd64:8e4) (Ping timeout: 246 seconds)
2023-08-27 16:44:36 +0000hyvoid(~hyenavoid@222-0-178-69.static.gci.net)
2023-08-27 16:44:40 +0000hyvoid(~hyenavoid@222-0-178-69.static.gci.net) (Remote host closed the connection)
2023-08-27 16:52:00 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2023-08-27 16:52:16 +0000dobblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 16:52:16 +0000dobblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 16:52:16 +0000dobblego(~dibblego@haskell/developer/dibblego)
2023-08-27 16:52:30 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 255 seconds)
2023-08-27 16:53:08 +0000dobblegodibblego
2023-08-27 16:53:49 +0000Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-08-27 16:58:27 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 16:58:28 +0000pointlessslippe1(~pointless@212.82.82.3) (Ping timeout: 246 seconds)
2023-08-27 16:58:44 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 17:02:08 +0000andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Client Quit)
2023-08-27 17:02:57 +0000pointlessslippe1(~pointless@212.82.82.3)
2023-08-27 17:04:54 +0000waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-08-27 17:06:40 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 17:06:47 +0000mikoto-chan(~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be) (Quit: WeeChat 3.8)
2023-08-27 17:11:41 +0000eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-08-27 17:15:56 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-08-27 17:16:30 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 17:20:52 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
2023-08-27 17:29:34 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 17:30:46 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-08-27 17:35:25 +0000caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-08-27 17:36:20 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 17:40:12 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 17:41:42 +0000sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-08-27 17:46:43 +0000 <Inst> for antiquated Haskell freeware books
2023-08-27 17:46:47 +0000 <Inst> why not RWH over LYAH?
2023-08-27 17:52:03 +0000 <monochrom> Did anyone said "not RWH"?
2023-08-27 17:52:23 +0000 <geekosaur> I'd actually prefer RWH because it gives you things to do, exercises, etc. LYAH is 15 countries in 15 days
2023-08-27 17:52:28 +0000michalz(~michalz@185.246.207.197)
2023-08-27 17:52:36 +0000 <monochrom> Actually, I tend to say that, but no one heard me anyway.
2023-08-27 17:53:33 +0000 <geekosaur> so you need to do LYAH along with data61 or cis194 in order to be able to actually write Haskell
2023-08-27 17:54:05 +0000 <dolio> Do you?
2023-08-27 17:54:17 +0000 <geekosaur> not enough exercises in lyah
2023-08-27 17:54:32 +0000 <geekosaur> you can read Haskell but not really write it
2023-08-27 17:55:15 +0000 <dolio> I didn't use any dedicated Haskell course to practice writing Haskell when I was learning.
2023-08-27 17:55:23 +0000 <monochrom> :)
2023-08-27 17:55:27 +0000 <dolio> I just wrote my AI homework in it or something.
2023-08-27 17:55:36 +0000 <monochrom> The Gentle Introduction here. LYAH didn't even exist.
2023-08-27 17:55:41 +0000 <geekosaur> ^
2023-08-27 17:55:56 +0000 <geekosaur> right, but not everyone is as good at self-directed learning
2023-08-27 17:56:09 +0000 <monochrom> I am sympathetic that LYAH is less terse than Gentle Intro.
2023-08-27 17:56:39 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 17:56:41 +0000 <geekosaur> I did the gentle intro and then dove directly into xmonad, which was a really good fit because I knew what it had to be doing so I could concentrate on the "how"
2023-08-27 17:56:54 +0000 <monochrom> OK, unpopular opinion: So you need to do LYAH along/after Learn How to Learn. :)
2023-08-27 17:57:50 +0000 <Inst> monochrom: I'm a bit excited because someone who I recall said he hated Haskell suddenly changed his mind
2023-08-27 17:57:50 +0000 <dolio> Maybe you need something that tells you which "optional" libraries to use these days, because they've all been split out of base.
2023-08-27 17:58:05 +0000 <Inst> but people kept on mentioning LYAH
2023-08-27 17:58:09 +0000 <Inst> which... didn't work for me
2023-08-27 17:58:45 +0000 <monochrom> Right, people who don't use Haskell in anger keep suggesting LYAH.
2023-08-27 17:58:57 +0000 <monochrom> But have you lurked in this channel lately?
2023-08-27 17:59:18 +0000 <geekosaur> cis194 and the wikibook are most recommended around here, I think
2023-08-27 17:59:19 +0000 <monochrom> Because here is full of people who use Haskell in anger and they say "anything except LYAH".
2023-08-27 17:59:26 +0000 <Inst> no one ever mentions lyah here, i think among actual haskellers, different resources get recommended
2023-08-27 18:01:07 +0000 <Inst> i directed him to effective haskell and thinking functionally with haskell
2023-08-27 18:01:22 +0000ss4(~wootehfoo@user/wootehfoot)
2023-08-27 18:02:38 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
2023-08-27 18:03:59 +0000 <Inst> but I'm just surprised that RWH doesn't get mentioned nearly as much, RWH is 50% longer than LYAH, is now free online, and is a better book, imo
2023-08-27 18:04:44 +0000 <Inst> if Don Stewart et al updated RWH, they'd probably have a book that's better than 90% of books on the market
2023-08-27 18:04:52 +0000 <geekosaur> it's been free online since it was released. sadly, it's been obsolete for pretty much the same amount of time because the exception system was completely overhauled while it was in post-production
2023-08-27 18:05:37 +0000 <geekosaur> and I don't know whatm if any, kind of NDA dons is under currently but it would very much not surprise me if he is
2023-08-27 18:06:22 +0000jabuxas(~jabuxas@user/jabuxas)
2023-08-27 18:06:26 +0000 <Inst> 2nd edition got published in 2012 iirc
2023-08-27 18:06:26 +0000Inst(~liamzy@2601:6c4:4085:6d50::7f5a) (Remote host closed the connection)
2023-08-27 18:06:33 +0000 <monochrom> I would think merely unbitrotting RWH would not infringe any NDA.
2023-08-27 18:06:43 +0000Inst(~liamzy@2601:6c4:4085:6d50::9d0d)
2023-08-27 18:06:49 +0000 <Inst> oh, it was always first edition :(
2023-08-27 18:07:02 +0000 <geekosaur> one would think so, then I remember the NDA a bank tried to rope me into
2023-08-27 18:07:10 +0000 <geekosaur> back in 1998
2023-08-27 18:07:28 +0000 <geekosaur> it was narsty
2023-08-27 18:07:37 +0000 <monochrom> But the irony of "someone is surprised that non-Haskell users recommend lesser Haskell resource" and "someone who is not a lawyer is surprised that an NDA blocks unbitrotting an old book".
2023-08-27 18:08:42 +0000 <dolio> Even if you don't think an NDA would, there are all kinds of weird contracts corporations try to get people to sign.
2023-08-27 18:09:32 +0000 <Inst> so wait, is Standard Chartered somehow blocking RWH?
2023-08-27 18:09:35 +0000 <dolio> Like, don't one of the big ones have some kind of, 'we own all the programming work you do in your spare time,' clauses?
2023-08-27 18:11:28 +0000 <Inst> there's this, though
2023-08-27 18:11:29 +0000 <Inst> https://github.com/tssm/up-to-date-real-world-haskell
2023-08-27 18:11:38 +0000 <dolio> Probably not. dons probably just doesn't feel like updating the book.
2023-08-27 18:12:43 +0000 <Inst> it's also a 3 person book, the band probably doesn't want to get back together again
2023-08-27 18:12:49 +0000 <Inst> dons I think is doing Rust a lot
2023-08-27 18:12:55 +0000danza(~francesco@151.37.230.40)
2023-08-27 18:12:58 +0000 <monochrom> His contract allows him to post skyline sunset photos only :)
2023-08-27 18:13:30 +0000 <APic>
2023-08-27 18:14:17 +0000 <monochrom> One time someone on haskell-cafe asked about a book for haskell-and-databases-etc.
2023-08-27 18:14:39 +0000 <monochrom> I said the cold hard truth "if someone tries to write one, it's outdated the next day already".
2023-08-27 18:14:59 +0000 <monochrom> The original poster was very angry at me. :)
2023-08-27 18:15:29 +0000 <Inst> well, i guess not, working on glean
2023-08-27 18:16:09 +0000 <monochrom> Like it or not, it's the cold hard truth. Just look at RWH. Even LYAH is outdated.
2023-08-27 18:16:45 +0000 <geekosaur> dolio, that's what the bank I was talking about earlier had
2023-08-27 18:17:16 +0000 <geekosaur> since I was already into open source by then, I was very unhappy
2023-08-27 18:17:22 +0000 <dolio> Yeah.
2023-08-27 18:17:39 +0000 <APic> Yeah.
2023-08-27 18:17:41 +0000 <monochrom> Oh wait, has anyone tried to do stenography analysis or something on dons's posted photos? >:)
2023-08-27 18:17:43 +0000 <geekosaur> I managed to get it weakened to "…that is related to what we do"
2023-08-27 18:18:15 +0000 <monochrom> Is it possible that dons was hiding RWH updates and new fantastic Haskell libs that can change the world in the photos?
2023-08-27 18:18:41 +0000 <Inst> lol ;_;
2023-08-27 18:19:29 +0000 <monochrom> "dons hid a lens library in a sunset photo 5 years before edwardk wrote the lens library we know" >:D
2023-08-27 18:19:32 +0000 <dolio> Oh yeah. I suppose it makes some amount of sense to try to prevent people from duplicating what their being paid to work on. Although that seems like a very out of touch concern.
2023-08-27 18:20:08 +0000 <geekosaur> I wasn't even writing financial code, I was mostly doing sysadmin stuff for them
2023-08-27 18:21:33 +0000gatekempt(~gatekempt@user/gatekempt)
2023-08-27 18:22:50 +0000ss4(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-08-27 18:26:43 +0000hubvu_(uid495858@id-495858.tinside.irccloud.com)
2023-08-27 18:28:20 +0000gatekempt(~gatekempt@user/gatekempt) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2023-08-27 18:28:44 +0000hubvu_(uid495858@id-495858.tinside.irccloud.com) ()
2023-08-27 18:29:01 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 18:29:58 +0000sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-08-27 18:35:12 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-08-27 18:36:09 +0000 <edwardk> monochrom: sure, though dons' version limited the choice of functor to IO.
2023-08-27 18:43:50 +0000jabuxas(~jabuxas@user/jabuxas) (Quit: Leaving.)
2023-08-27 18:44:10 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-08-27 18:44:10 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-08-27 18:44:10 +0000wroathe(~wroathe@user/wroathe)
2023-08-27 18:48:11 +0000jabuxas(~jabuxas@user/jabuxas)
2023-08-27 18:53:34 +0000 <monochrom> hahaha
2023-08-27 18:54:31 +0000 <geekosaur> also I think you meant steganography
2023-08-27 18:54:43 +0000 <geekosaur> stenography is typists' shorthand
2023-08-27 18:57:34 +0000 <monochrom> oops yeah
2023-08-27 18:58:04 +0000Sgeo(~Sgeo@user/sgeo)
2023-08-27 19:05:53 +0000Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk)
2023-08-27 19:06:07 +0000Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Client Quit)
2023-08-27 19:10:15 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2023-08-27 19:14:16 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-08-27 19:15:19 +0000caryhartline(~caryhartl@168.182.58.169)
2023-08-27 19:15:51 +0000ddellacosta(~ddellacos@143.244.47.89) (Ping timeout: 245 seconds)
2023-08-27 19:16:16 +0000ddellacosta(~ddellacos@143.244.47.89)
2023-08-27 19:16:46 +0000fendor(~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf)
2023-08-27 19:23:38 +0000extor(~extor@ns3018124.ip-149-202-82.eu) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in)
2023-08-27 19:25:19 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-08-27 19:25:19 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-08-27 19:25:19 +0000wroathe(~wroathe@user/wroathe)
2023-08-27 19:45:06 +0000coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-08-27 19:57:54 +0000jabuxas(~jabuxas@user/jabuxas) (Remote host closed the connection)
2023-08-27 19:59:39 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 20:01:38 +0000 <Inst> since chuck norris is NDA-ed
2023-08-27 20:01:55 +0000 <Inst> erm, Don Stewart is NDA-ed, is he now the Haskell community Chuck Norris?
2023-08-27 20:04:26 +0000nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2023-08-27 20:06:56 +0000Inst(~liamzy@2601:6c4:4085:6d50::9d0d) (Remote host closed the connection)
2023-08-27 20:07:13 +0000Inst(~liamzy@2601:6c4:4085:6d50::7f5a)
2023-08-27 20:07:28 +0000_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-08-27 20:10:38 +0000bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2023-08-27 20:11:32 +0000V(~v@ircpuzzles/2022/april/winner/V) (Ping timeout: 240 seconds)
2023-08-27 20:25:26 +0000xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 260 seconds)
2023-08-27 20:26:34 +0000V(~v@ircpuzzles/2022/april/winner/V)
2023-08-27 20:29:59 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 20:30:34 +0000Pickchea(~private@user/pickchea)
2023-08-27 20:30:34 +0000todi(~todi@p4fd1a580.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
2023-08-27 20:32:00 +0000idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-08-27 20:32:26 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 20:33:27 +0000sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-08-27 20:33:53 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 20:36:26 +0000shapr(~user@2600:1700:c640:3100:5abb:a85e:1a7a:3359) (Remote host closed the connection)
2023-08-27 20:45:15 +0000RSCASTILHO(~RSCASTILH@187.40.124.54) ()
2023-08-27 20:45:46 +0000fendor(~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf) (Remote host closed the connection)
2023-08-27 20:51:08 +0000son0p(~ff@152.203.98.110)
2023-08-27 20:53:07 +0000AlexNoo_(~AlexNoo@178.34.150.48)
2023-08-27 20:53:51 +0000myxokephale(~myxos@cpe-65-28-251-121.cinci.res.rr.com)
2023-08-27 20:53:51 +0000Luj1(~Luj@2a01:e0a:5f9:9681:92c9:bd26:afaf:3abb)
2023-08-27 20:54:31 +0000billchenchina(~billchenc@103.152.35.21)
2023-08-27 20:54:44 +0000terrorjack7(~terrorjac@2a01:4f8:c17:87f8::)
2023-08-27 20:54:44 +0000pierrot_(~pi@user/pierrot)
2023-08-27 20:54:49 +0000jbalint_(~jbalint@071-090-119-177.res.spectrum.com)
2023-08-27 20:55:00 +0000TheCoffeMaker_(~TheCoffeM@190.245.100.85)
2023-08-27 20:55:01 +0000p3n_(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1)
2023-08-27 20:55:01 +0000whatsupdoc_(uid509081@id-509081.hampstead.irccloud.com)
2023-08-27 20:56:08 +0000hueso_(~root@user/hueso)
2023-08-27 20:56:17 +0000michalz(~michalz@185.246.207.197) (Remote host closed the connection)
2023-08-27 20:56:28 +0000piele_(~piele@tbonesteak.creativeserver.net)
2023-08-27 20:57:27 +0000kronicma1(user98083@neotame.csclub.uwaterloo.ca)
2023-08-27 20:57:32 +0000caubert_(~caubert@user/caubert)
2023-08-27 20:57:47 +0000[exa]_(~exa@srv3n.blesmrt.net)
2023-08-27 20:57:55 +0000dxtr_(~dxtr@user/dxtr)
2023-08-27 20:58:20 +0000falafel(~falafel@216.68.6.51.dyn.plus.net)
2023-08-27 21:00:12 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 21:02:08 +0000TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (*.net *.split)
2023-08-27 21:02:08 +0000vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (*.net *.split)
2023-08-27 21:02:08 +0000dxtr(~dxtr@user/dxtr) (*.net *.split)
2023-08-27 21:02:08 +0000billchenchina-(~billchenc@2a0c:b641:7a2:320:ee3e:47ca:6070:d71a) (*.net *.split)
2023-08-27 21:02:08 +0000L29Ah(~L29Ah@wikipedia/L29Ah) (*.net *.split)
2023-08-27 21:02:08 +0000AlexNoo(~AlexNoo@178.34.150.48) (*.net *.split)
2023-08-27 21:02:08 +0000piele(~piele@tbonesteak.creativeserver.net) (*.net *.split)
2023-08-27 21:02:08 +0000Buggys(Buggys@buggy.shelltalk.net) (*.net *.split)
2023-08-27 21:02:08 +0000myxos(~myxos@cpe-65-28-251-121.cinci.res.rr.com) (*.net *.split)
2023-08-27 21:02:08 +0000jbalint(~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7) (*.net *.split)
2023-08-27 21:02:08 +0000hueso(~root@user/hueso) (*.net *.split)
2023-08-27 21:02:08 +0000p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (*.net *.split)
2023-08-27 21:02:08 +0000kronicmage(user44322@neotame.csclub.uwaterloo.ca) (*.net *.split)
2023-08-27 21:02:08 +0000pierrot(~pi@user/pierrot) (*.net *.split)
2023-08-27 21:02:08 +0000whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (*.net *.split)
2023-08-27 21:02:08 +0000Ranhir(~Ranhir@157.97.53.139) (*.net *.split)
2023-08-27 21:02:08 +0000Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (*.net *.split)
2023-08-27 21:02:08 +0000terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (*.net *.split)
2023-08-27 21:02:08 +0000Vajb(~Vajb@2001:999:489:74bc:8e7:73bb:7236:fd81) (*.net *.split)
2023-08-27 21:02:08 +0000Adran(~adran@botters/adran) (*.net *.split)
2023-08-27 21:02:08 +0000[exa](~exa@user/exa/x-3587197) (*.net *.split)
2023-08-27 21:02:08 +0000caubert(~caubert@user/caubert) (*.net *.split)
2023-08-27 21:02:09 +0000Luj1Luj
2023-08-27 21:02:09 +0000terrorjack7terrorjack
2023-08-27 21:02:10 +0000whatsupdoc_whatsupdoc
2023-08-27 21:02:15 +0000Buggys-(Buggys@Buggy.shelltalk.net)
2023-08-27 21:02:39 +0000Adran(~adran@botters/adran)
2023-08-27 21:03:11 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 21:04:31 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 246 seconds)
2023-08-27 21:06:52 +0000dxtr_dxtr
2023-08-27 21:09:40 +0000Ranhir(~Ranhir@157.97.53.139)
2023-08-27 21:09:51 +0000sm(~sm@plaintextaccounting/sm)
2023-08-27 21:10:48 +0000sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-08-27 21:16:27 +0000mniip_mniip
2023-08-27 21:17:07 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-08-27 21:17:23 +0000extor(~extor@ns3018124.ip-149-202-82.eu)
2023-08-27 21:22:52 +0000azimut(~azimut@gateway/tor-sasl/azimut)
2023-08-27 21:26:34 +0000Thomas03(~Thomas03@2600:1702:21b0:a500:e1c1:8242:9d33:b337)
2023-08-27 21:29:47 +0000cheater(~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com))
2023-08-27 21:30:41 +0000pavonia(~user@user/siracusa)
2023-08-27 21:31:37 +0000wroathe(~wroathe@user/wroathe)
2023-08-27 21:33:56 +0000coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-08-27 21:35:29 +0000Guest99(~Guest99@2601:602:a080:4e50:fefc:3da5:d370:8cd4)
2023-08-27 21:36:20 +0000Guest99(~Guest99@2601:602:a080:4e50:fefc:3da5:d370:8cd4) ()
2023-08-27 21:38:52 +0000aaronv(~Guest99@user/aaronv)
2023-08-27 21:43:53 +0000ec_(~ec@gateway/tor-sasl/ec)
2023-08-27 21:46:04 +0000aaronv(~Guest99@user/aaronv) (Quit: aaronv)
2023-08-27 21:46:06 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 246 seconds)
2023-08-27 21:46:43 +0000aaronv(~aaronv@user/aaronv)
2023-08-27 21:47:26 +0000Inst(~liamzy@2601:6c4:4085:6d50::7f5a) (Ping timeout: 258 seconds)
2023-08-27 21:55:11 +0000aaronv(~aaronv@user/aaronv) (Quit: Leaving)
2023-08-27 21:55:33 +0000aaronv(~aaronv@user/aaronv)
2023-08-27 21:56:34 +0000 <Square> I've tried out a bunch of pretty printers (for Haskell values). It seems "prettyprinter" is the golden standard, but there seems to be a mighty endeavor getting nice ANSI colored printing of Haskell values. "pretty-simple" seems like the popular one for this task, but it seems very limited.
2023-08-27 21:57:31 +0000 <Square> Anyone have any insight in where to look to accomplish this?
2023-08-27 21:58:56 +0000coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-08-27 22:00:14 +0000 <EvanR> I like pretty-simple
2023-08-27 22:00:16 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-08-27 22:00:19 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 22:00:41 +0000 <EvanR> silver standard it is
2023-08-27 22:01:33 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-08-27 22:02:06 +0000 <geekosaur> there's an inherent problem with pretty-printers: everyone has their own idea of what "pretty" is, especially for their program-specific types
2023-08-27 22:02:08 +0000coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-08-27 22:02:22 +0000cheater(~Username@user/cheater)
2023-08-27 22:02:29 +0000 <mniip> I like pretty-show with its "PreProc" mechanism
2023-08-27 22:04:04 +0000coot(~coot@89-69-206-216.dynamic.chello.pl) (Client Quit)
2023-08-27 22:04:47 +0000 <Square> yeah, I can see that. I just thought "pretty-simple" was a bit cheap in that it just color literal values and block-separators.
2023-08-27 22:05:18 +0000 <geekosaur> wel, it is simple
2023-08-27 22:05:23 +0000 <Square> true
2023-08-27 22:05:53 +0000 <EvanR> welcome to the era of *simple haskell*
2023-08-27 22:06:21 +0000 <int-e> . o O ( It's better than BASIC )
2023-08-27 22:07:46 +0000 <mniip> what would "expensive" be in this context?
2023-08-27 22:07:48 +0000 <dsal> We are using one of those pretty printer things at work. I really dislike it for a few reasons. One is that it follows that new fad of putting everything on its own line. You write out a list of two things or something, you get like, three lines. The other thing is that has to convert everything to a string, then parse that string, and then based on what it parses, decide structure.
2023-08-27 22:07:58 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
2023-08-27 22:08:31 +0000 <mniip> yeah we only use pretty-printers for golden tests to keep them more readable than `show`
2023-08-27 22:08:53 +0000 <EvanR> I would like a pretty printer which dumps my value to an SQL database and lets me query it
2023-08-27 22:08:59 +0000 <EvanR> automatically
2023-08-27 22:09:08 +0000 <dsal> Besides being super slow, a weird artifact in a Show instance can cause incorrect output, which led to an analysis problem once. I was looking at pretty printed output of a thing and didn't see a specific thing that indicated a problem. It was in the Show output, but the pretty printer ate it.
2023-08-27 22:09:28 +0000 <dsal> Golden tests are a pretty good use case for pretty printers like this.
2023-08-27 22:11:54 +0000 <dsal> Whatever one we're using is the default output printer in GHCI which… does not make things easier to read for me.
2023-08-27 22:12:17 +0000 <dsal> What would be two lines of output can involve scrolling.
2023-08-27 22:12:49 +0000 <geekosaur> ghci just uses the Show instance unless you're overriding it
2023-08-27 22:12:58 +0000danza(~francesco@151.37.230.40) (Read error: Connection reset by peer)
2023-08-27 22:13:00 +0000notzmv(~zmv@user/notzmv) (Ping timeout: 248 seconds)
2023-08-27 22:13:14 +0000danza(~francesco@151.19.248.14)
2023-08-27 22:13:45 +0000 <dsal> Yeah, our project does the overloading.
2023-08-27 22:17:59 +0000 <dsal> For example: https://usercontent.irccloud-cdn.com/file/tsMflXlx/example.png
2023-08-27 22:18:30 +0000 <geekosaur> iiiiiiiick
2023-08-27 22:19:05 +0000 <dsal> Kind of a trendy look these days.
2023-08-27 22:20:01 +0000 <monochrom> :)
2023-08-27 22:22:35 +0000 <dsal> Ha. I made a directive that will ask the printer to do its compact representation. That depends on how wide it considers too wide before going all-in on tall: https://usercontent.irccloud-cdn.com/file/pXAEhSGS/tall.png
2023-08-27 22:27:29 +0000 <EvanR> your pretty printer is flawed. Each digit must be on its own line
2023-08-27 22:27:32 +0000ec_(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-08-27 22:27:56 +0000ec_(~ec@gateway/tor-sasl/ec)
2023-08-27 22:28:13 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 255 seconds)
2023-08-27 22:28:35 +0000 <aaronv> the commas should get their own lines
2023-08-27 22:28:35 +0000dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 22:28:35 +0000dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 22:28:35 +0000dibblego(~dibblego@haskell/developer/dibblego)
2023-08-27 22:31:07 +0000 <dsal> fourmolu kind of does that in really weird and unjustifiable conditions: https://github.com/fourmolu/fourmolu/issues/72
2023-08-27 22:32:20 +0000acidjnk(~acidjnk@p200300d6e7072f524500269999e4b2db.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-08-27 22:34:59 +0000 <Square> dsal, how do you get this fourmolu to work in ghci?
2023-08-27 22:35:23 +0000foul_owl_(~kerry@174-21-66-189.tukw.qwest.net)
2023-08-27 22:35:42 +0000 <dsal> ghci is running some other pretty printer. fourmolu is a sticky paste we smear on our code to make it take up more vertical space.
2023-08-27 22:35:44 +0000foul_owl(~kerry@157.97.134.164) (Ping timeout: 258 seconds)
2023-08-27 22:36:35 +0000 <dsal> You can override the print function with `-interactive-print` – I've got a ghci function that overrides our override to sometimes be less bad.
2023-08-27 22:39:01 +0000 <wroathe> Say I want to map types to strings... is there a more concise way of doing so than defining a type class and instances? I.e. instead of class Foo t where; fooString :: Tagged t String and instance X where; instance Y where;
2023-08-27 22:39:16 +0000 <wroathe> Just having some kind of map from Type -> 'String or something like that
2023-08-27 22:39:53 +0000 <geekosaur> Data.Typeable.typeRep?
2023-08-27 22:42:04 +0000 <EvanR> a type level String?
2023-08-27 22:42:11 +0000 <wroathe> geekosaur: Does that let me choose atrbitrary strings? the use case is a code generator that maps haskell data types to type keywords in that other language
2023-08-27 22:42:42 +0000 <wroathe> I want to go from Int32 -> "int" and Text -> "text" and so on
2023-08-27 22:42:52 +0000 <EvanR> you could use a type family to go from type/datakind to Symbol
2023-08-27 22:43:13 +0000 <wroathe> EvanR: That's what I was wondering about. I need to go read up on type families
2023-08-27 22:43:42 +0000 <EvanR> F Int32 = "int"
2023-08-27 22:43:47 +0000 <EvanR> F Text = "text"
2023-08-27 22:43:52 +0000 <EvanR> ...
2023-08-27 22:44:01 +0000 <wroathe> perfect, yeah, that would be great
2023-08-27 22:44:04 +0000 <EvanR> ok, that's not the syntax
2023-08-27 22:44:54 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 246 seconds)
2023-08-27 22:45:56 +0000 <EvanR> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/type_families.html#synonym-families
2023-08-27 22:46:29 +0000 <wroathe> symbolVal (Proxy :: Proxy (F Int32))
2023-08-27 22:46:38 +0000 <wroathe> Yeah, that seems to do the trick
2023-08-27 22:47:02 +0000 <wroathe> type family F a where; F Int32 = "int"
2023-08-27 22:47:46 +0000 <wroathe> This kind of type level programming is such a fun rabbit hole
2023-08-27 22:47:56 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-08-27 22:48:02 +0000 <EvanR> still waiting for my type level DOOM
2023-08-27 22:48:49 +0000gatekempt(~gatekempt@user/gatekempt)
2023-08-27 22:48:50 +0000 <wroathe> EvanR: I'm sure there's someone working on it
2023-08-27 22:49:26 +0000Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-08-27 22:54:36 +0000ulysses4ever(~artem@c-73-103-90-145.hsd1.in.comcast.net) (Ping timeout: 248 seconds)
2023-08-27 22:57:08 +0000shapr(~user@2600:1700:c640:3100:147e:15c1:a149:186b)
2023-08-27 22:57:52 +0000Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.237)
2023-08-27 23:10:00 +0000 <dsal> Simple Haskell is the knee jerk reaction to Type Level Doom
2023-08-27 23:10:10 +0000 <wroathe> Hmm, is there a way to use a type family as a constraint?
2023-08-27 23:10:34 +0000 <wroathe> asType :: Tagged t String; asType = Tagged $ symbolVal (Proxy :: Proxy (DataType t))
2023-08-27 23:10:54 +0000 <wroathe> The use case is that the compiler isn't inferring that DataType t is an instance of KnownSymbol
2023-08-27 23:11:41 +0000 <wroathe> https://gist.github.com/JustinChristensen/d6f0c180899a1b03008dbf6b9007ec38
2023-08-27 23:14:46 +0000 <wroathe> What I'd like to be able to say there is DataType t => Tagged t String
2023-08-27 23:20:05 +0000 <aaronv> what was wrong with using type classes?
2023-08-27 23:20:54 +0000 <wroathe> aaronv: just experimenting in trying to be a bit more concise
2023-08-27 23:25:42 +0000 <geekosaur> wroathe, can you not simply say that?
2023-08-27 23:26:38 +0000 <wroathe> • Expected a constraint, but ‘DataType t’ has kind ‘Symbol’
2023-08-27 23:26:46 +0000 <aaronv> you need the KnownSymbol constraint. Also your type family has the downside that it's closed. Would be more comparable to type classes to use an open type family
2023-08-27 23:26:48 +0000 <geekosaur> hm, actually I think it has to be either `Tagged (DataType t) String` or `DataType t ~ x => Tagged x String`
2023-08-27 23:27:04 +0000 <geekosaur> oh, more complex than I'm thinking
2023-08-27 23:27:07 +0000 <aaronv> and there are unfortunately no constraints for type families
2023-08-27 23:27:08 +0000 <wroathe> aaronv: The closedness is just fine in this case
2023-08-27 23:27:14 +0000 <aaronv> instead they just get stuck if you don't have an instance
2023-08-27 23:27:28 +0000 <geekosaur> `(DataType t ~ x, KnownSymbol x) => Tagged t String` ?
2023-08-27 23:27:59 +0000 <wroathe> geekosaur: no dice
2023-08-27 23:28:16 +0000 <aaronv> KnownSymbol (DataType t) =>
2023-08-27 23:28:26 +0000 <wroathe> aaronv: Yeah in this case I just need a way to tell the compiler that `t` is one of the types that I have a type family instance defined for
2023-08-27 23:28:42 +0000 <wroathe> aaronv: Hmm, I tried that too before I posted here, and it didn't work
2023-08-27 23:28:43 +0000 <geekosaur> oh
2023-08-27 23:29:22 +0000 <aaronv> you can't do that, but even if you could you would still need a type class constraint in order to get something term-level
2023-08-27 23:30:00 +0000 <wroathe> Hmm, if type classes are the only way to do this I'm going to be a sad panda
2023-08-27 23:30:18 +0000 <aaronv> open type families are essentially just type-level type classes (in that they associate types with types rather than terms with types), but broken in that they don't require constraints to use (and you can't write such constraints)
2023-08-27 23:30:36 +0000 <aaronv> well, you can reuse the KnownSymbol class
2023-08-27 23:30:57 +0000 <wroathe> Meaning KnownSymbol (DataType t) => ?
2023-08-27 23:31:01 +0000 <aaronv> yes
2023-08-27 23:31:05 +0000 <wroathe> I had tried that and I get the same result
2023-08-27 23:31:07 +0000 <aaronv> or you can make an alias for it
2023-08-27 23:31:29 +0000ski(~ski@w188040.eduroam.gu.se)
2023-08-27 23:31:29 +0000 <wroathe> asType :: (KnownSymbol (DataType t)) => Tagged t String; asType = Tagged $ symbolVal (Proxy :: Proxy (DataType t))
2023-08-27 23:31:39 +0000 <aaronv> you need to enable scoped type variables and write an explicit forall for t
2023-08-27 23:31:48 +0000 <wroathe> Still tells me that Could not deduce (KnownSymbol (DataType t0))
2023-08-27 23:31:57 +0000 <wroathe> Ok, I've got #1
2023-08-27 23:32:01 +0000 <wroathe> I'll add the forall
2023-08-27 23:32:18 +0000 <wroathe> aaronv: You're a wizard
2023-08-27 23:32:21 +0000 <wroathe> That worked
2023-08-27 23:33:24 +0000 <wroathe> Assuming I don't mind that type family being closed, what's wrong with doing it this way
2023-08-27 23:33:40 +0000 <wroathe> Seems a little more syntactically concise than doing it the regular type class way
2023-08-27 23:35:53 +0000 <aaronv> you can write your type class instances on a single line each btw
2023-08-27 23:36:40 +0000 <wroathe> instance DataType Int32 where asType = "int" ?
2023-08-27 23:36:56 +0000 <wroathe> Yeah I suppose
2023-08-27 23:37:28 +0000 <wroathe> well, I suppose asType = Tagged "int"
2023-08-27 23:37:42 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 23:38:25 +0000 <aaronv> you can avoid Tagged if you use AllowAmbiguousTypes and TypeApplications
2023-08-27 23:38:30 +0000otto_s(~user@p4ff27798.dip0.t-ipconnect.de)
2023-08-27 23:38:48 +0000ulysses4ever(~artem@c-73-103-90-145.hsd1.in.comcast.net)
2023-08-27 23:39:10 +0000 <wroathe> I've been mulling over AllowAmbiguousTypes. I'm going to finish this code generator with Tagged first, and then maybe removed that bit
2023-08-27 23:39:29 +0000 <wroathe> Seemed like a sledgehammer, but I suppose I can limit that by moving this into a separate module
2023-08-27 23:39:59 +0000 <aaronv> you probably only need it for the class definition, I think
2023-08-27 23:40:20 +0000 <wroathe> right
2023-08-27 23:40:42 +0000 <wroathe> aaronv: thanks for the help, I'm logging off for a bit
2023-08-27 23:40:57 +0000 <aaronv> wait, you could use overloaded strings
2023-08-27 23:41:00 +0000 <aaronv> to not write Tagged
2023-08-27 23:41:06 +0000 <wroathe> :O
2023-08-27 23:41:22 +0000 <geekosaur> aaronv, iirc this started out as that but wroathe wanted to avoid AAT
2023-08-27 23:41:41 +0000 <wroathe> geekosaur: You're right, but I've been waffling on my position on that
2023-08-27 23:41:45 +0000 <aaronv> create your own tagged type with an IsString instance
2023-08-27 23:41:50 +0000 <aaronv> no need for AAT then
2023-08-27 23:41:55 +0000 <geekosaur> yeh, personally I think this is the very case AAT exists for
2023-08-27 23:41:57 +0000 <aaronv> for literals at least
2023-08-27 23:42:20 +0000 <geekosaur> since it really needs what amounts to a dependent type to be properly typeable
2023-08-27 23:42:44 +0000 <wroathe> Thanks for the help guys. I'll be back on a bit later on.
2023-08-27 23:43:09 +0000 <aaronv> newtype TaggedString t = TaggedString String; class Foo t where foo :: TaggedString t; instance IsString (TaggedString t) where ...
2023-08-27 23:45:26 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds)
2023-08-27 23:47:19 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2023-08-27 23:48:40 +0000Thomas03(~Thomas03@2600:1702:21b0:a500:e1c1:8242:9d33:b337) (Quit: Client closed)
2023-08-27 23:49:01 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-08-27 23:50:21 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 250 seconds)
2023-08-27 23:53:10 +0000arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 258 seconds)
2023-08-27 23:54:21 +0000dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 23:54:21 +0000dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 23:54:21 +0000dibblego(~dibblego@haskell/developer/dibblego)
2023-08-27 23:54:23 +0000 <Jeanne-Kamikaze> How can I express "If Foo is an instance of MyClass, then it automatically is an instance of MyOtherClass (and here's the def, by the way)." Or do I need to write an instance of MyOtherClass for every Foo?
2023-08-27 23:55:21 +0000 <EvanR> instance MyClass a => MyOtherClass a where
2023-08-27 23:55:31 +0000 <EvanR> -- you prove it
2023-08-27 23:55:52 +0000 <Jeanne-Kamikaze> I seem to get an error with overlapping instances when I do that (slightly more complicated code.)
2023-08-27 23:56:17 +0000 <Jeanne-Kamikaze> It tells me that Bar has two MyOtherClass implementations, even though Bar does not implement MyClass.
2023-08-27 23:56:44 +0000 <c_wraith> The overall rule is that you shouldn't make types you don't know about instances of something.
2023-08-27 23:56:59 +0000 <aaronv> if you do what EvanR suggests then there can be no other instances of MyOtherClass
2023-08-27 23:57:18 +0000 <aaronv> there's no way to do what you want right now. You have to write the boilerplate instances
2023-08-27 23:57:23 +0000 <c_wraith> You can make a default definition for the class which allows one-line definitions for types that wish to opt in.
2023-08-27 23:57:26 +0000 <aaronv> and yes it's terrible
2023-08-27 23:57:26 +0000 <Jeanne-Kamikaze> You mean I cannot instance MyOtherClass Bar, even though Bar does not implement MyClass?
2023-08-27 23:57:46 +0000 <c_wraith> Bar sounds like a type you know
2023-08-27 23:57:46 +0000 <EvanR> you want to write that instance or not?
2023-08-27 23:58:05 +0000 <c_wraith> What you shouldn't do is write instances for types you don't know.
2023-08-27 23:58:11 +0000 <EvanR> is it supposed to be automatic or manual
2023-08-27 23:58:15 +0000 <Jeanne-Kamikaze> I am trying to save writing boilerplate MyOtherClass instances for Foo, Bar, Baz.
2023-08-27 23:58:31 +0000 <aaronv> short answer is you can't. This is a problem with haskell
2023-08-27 23:58:39 +0000 <c_wraith> it's not even a problem.
2023-08-27 23:58:42 +0000 <c_wraith> It makes code sane
2023-08-27 23:58:44 +0000 <EvanR> if all the boilerplates are the same you could use generics
2023-08-27 23:58:57 +0000 <c_wraith> if you could write a magic instance, you don't need generics.
2023-08-27 23:59:00 +0000 <aaronv> having to write boilerplate instances is definitely a problem
2023-08-27 23:59:01 +0000 <c_wraith> Just write a default implementation
2023-08-27 23:59:14 +0000 <c_wraith> then all you have to do is add the class to your deriving line...
2023-08-27 23:59:17 +0000 <EvanR> I mean, "the same"
2023-08-27 23:59:24 +0000 <aaronv> though the solution would not be able to write an instance like EvanR suggests
2023-08-27 23:59:40 +0000 <Jeanne-Kamikaze> Yeah, they are "the same". How do I use generics here?
2023-08-27 23:59:46 +0000 <c_wraith> don't.
2023-08-27 23:59:49 +0000 <c_wraith> they're irrelevant