2023/08/27

2023-08-27 00:00:09 +0200 <monochrom> If you use Proxy, you shouldn't run into ambiguous types. If you use TypeApplication without Proxy, do expect ambiguous types.
2023-08-27 00:01:22 +0200 <monochrom> The underlying principle being: "(MyConstraint t) => ... t does not appear here ..." iff ambiguous type.
2023-08-27 00:01:22 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 00:01:48 +0200 <wroathe> Well the definition itself is complaining baout the type being ambiguous... how would type applications help that?
2023-08-27 00:01:52 +0200skimumbles something about FDs
2023-08-27 00:01:53 +0200 <monochrom> err maybe that's wrong, nevermind.
2023-08-27 00:01:58 +0200 <wroathe> I am using Proxy in the definition there if you look at the gist
2023-08-27 00:03:01 +0200 <ski> well, "If you use Proxy" : `foo :: forall s. KnownSymbol s => Proxy s -> String; foo = symbolVal'
2023-08-27 00:03:01 +0200myxokephale(~myxos@cpe-65-28-251-121.cinci.res.rr.com)
2023-08-27 00:03:39 +0200 <wroathe> Yeah... I see. Yeah, what I'm trying to avoid is having to pass a term level proxy value to the function
2023-08-27 00:03:56 +0200ulysses4ever(~artem@73.145.241.248)
2023-08-27 00:03:59 +0200 <wroathe> The syntax for my SQL generator I'm looking for is something like createCompaniesTable = sqlCreateTable @Company
2023-08-27 00:04:10 +0200 <wroathe> Where Company is a data type deriving Generic
2023-08-27 00:04:33 +0200 <wroathe> createCompaniesTable :: String there
2023-08-27 00:04:34 +0200 <ski> i guess `Reader (Proxy s) String' is anothr option
2023-08-27 00:04:40 +0200 <ski> (not suggesting that)
2023-08-27 00:05:32 +0200 <geekosaur[c]> The core problem is that ghc doesn't know and can't enforce that foo will always be called with a TypeApplication.
2023-08-27 00:05:51 +0200 <geekosaur[c]> So foo itself is ambiguous
2023-08-27 00:05:53 +0200 <wroathe> Right, yeah, that's what I was wondering about with monochrom's point
2023-08-27 00:05:55 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 245 seconds)
2023-08-27 00:06:37 +0200 <wroathe> I think Tagged basically gets me what I want here thought
2023-08-27 00:06:52 +0200 <wroathe> It seems right and proper that this generated string of SQL also be "tagged" with the data type that generated it
2023-08-27 00:06:56 +0200 <geekosaur[c]> With forall a ->, you would make it explicit that the Symbol is required
2023-08-27 00:07:06 +0200 <wroathe> is forall a -> a proposal on the horizon?
2023-08-27 00:07:10 +0200 <wroathe> And do you have a link?
2023-08-27 00:07:13 +0200myxokephale(~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit)
2023-08-27 00:07:52 +0200 <monochrom> oooohhhhh dependent-style polymorphism :)
2023-08-27 00:07:52 +0200 <geekosaur[c]> It's a proposal, I am on my phone and don't have a link handy
2023-08-27 00:08:10 +0200 <wroathe> Ah, what's the name of it? I can google
2023-08-27 00:08:15 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2023-08-27 00:08:25 +0200ulysses4ever(~artem@73.145.241.248) (Ping timeout: 255 seconds)
2023-08-27 00:08:40 +0200 <monochrom> "agda" (j/k)
2023-08-27 00:08:41 +0200 <geekosaur[c]> Last I heard there were some issues with mapping the surface syntax to Core
2023-08-27 00:08:46 +0200ulysses4ever(~artem@2607:fb91:2faf:f49:f474:e3f8:9806:671)
2023-08-27 00:09:31 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net)
2023-08-27 00:10:55 +0200 <wroathe> ski: I think I prefer Tagged here. Thanks for the hot tip
2023-08-27 00:11:09 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2023-08-27 00:11:34 +0200 <monochrom> I am a bit pessimistic that "forall a ->" may be a slippery slope that defeats the intention. Because what happened next in existing dependently-typed languages is that people then added one more syntax for "turn it back into implicit at use sites".
2023-08-27 00:12:09 +0200 <geekosaur[c]> https://gitlab.haskell.org/ghc/ghc/-/issues/23740 is one
2023-08-27 00:12:25 +0200 <wroathe> ty ty
2023-08-27 00:14:12 +0200jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 240 seconds)
2023-08-27 00:15:05 +0200 <geekosaur[c]> It's definitely on the dependent Haskell path
2023-08-27 00:16:05 +0200 <geekosaur[c]> And the intent is that the use site will have foo "a"
2023-08-27 00:16:30 +0200jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2023-08-27 00:16:31 +0200 <geekosaur[c]> (not @"a")
2023-08-27 00:17:43 +0200 <ski> (reminds me to wonder whether `foo @a ..a.. = ..a..'s in the works)
2023-08-27 00:19:40 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-08-27 00:22:06 +0200myxokephale(~myxos@cpe-65-28-251-121.cinci.res.rr.com)
2023-08-27 00:22:14 +0200myxokephale(~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit)
2023-08-27 00:24:20 +0200emmanuelux(~emmanuelu@user/emmanuelux)
2023-08-27 00:25:45 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 246 seconds)
2023-08-27 00:28:46 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-08-27 00:28:48 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-08-27 00:37:01 +0200acidjnk(~acidjnk@p200300d6e7072f7374bc765042e24c26.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-08-27 00:52:26 +0200ulysses4ever(~artem@2607:fb91:2faf:f49:f474:e3f8:9806:671) (Ping timeout: 245 seconds)
2023-08-27 00:56:36 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-08-27 00:58:40 +0200falafel(~falafel@51.6.68.216)
2023-08-27 01:11:39 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2023-08-27 01:14:11 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-08-27 01:14:12 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-08-27 01:14:12 +0200wroathe(~wroathe@user/wroathe)
2023-08-27 01:15:10 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-08-27 01:19:15 +0200ulysses4ever(~artem@73.145.242.42)
2023-08-27 01:29:40 +0200ulysses4ever(~artem@73.145.242.42) (Ping timeout: 245 seconds)
2023-08-27 01:32:22 +0200ulysses4ever(~artem@73.145.242.42)
2023-08-27 01:37:39 +0200institor(~root@user/institor) (K-Lined)
2023-08-27 01:44:58 +0200hiredman(~hiredman@frontier1.downey.family) (Remote host closed the connection)
2023-08-27 01:45:17 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
2023-08-27 01:46:52 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-08-27 01:47:17 +0200ulysses4ever(~artem@73.145.242.42) (Read error: Connection reset by peer)
2023-08-27 01:48:37 +0200mvk(~mvk@2607:fea8:5c9a:a600::5235)
2023-08-27 01:55:29 +0200ulysses4ever(~artem@2601:408:c408:62c:f474:e3f8:9806:671)
2023-08-27 01:59:14 +0200tabemann(~tabemann@128.92.110.163)
2023-08-27 02:10:21 +0200artem(~artem@73.103.90.145)
2023-08-27 02:12:11 +0200ulysses4ever(~artem@2601:408:c408:62c:f474:e3f8:9806:671) (Ping timeout: 246 seconds)
2023-08-27 02:13:37 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 246 seconds)
2023-08-27 02:19:00 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-08-27 02:19:37 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-08-27 02:19:42 +0200notzmv(~zmv@user/notzmv)
2023-08-27 02:25:48 +0200falafel(~falafel@51.6.68.216) (Ping timeout: 248 seconds)
2023-08-27 02:27:42 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 02:33:57 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 244 seconds)
2023-08-27 02:43:15 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2023-08-27 02:53:36 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in)
2023-08-27 02:59:16 +0200jmcantrell(644f1bed9a@user/jmcantrell)
2023-08-27 03:02:36 +0200Inst(~liamzy@2601:6c4:4085:6d50::bb82)
2023-08-27 03:06:24 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 246 seconds)
2023-08-27 03:06:48 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-08-27 03:06:48 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-08-27 03:06:48 +0200wroathe(~wroathe@user/wroathe)
2023-08-27 03:07:52 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-08-27 03:08:32 +0200Guest|79(~Guest|79@177.89.244.30)
2023-08-27 03:08:44 +0200Guest|79(~Guest|79@177.89.244.30) (Client Quit)
2023-08-27 03:10:54 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-08-27 03:17:29 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-08-27 03:22:44 +0200bratwurst(~blaadsfa@70.75.221.8)
2023-08-27 03:24:34 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 03:28:12 +0200bratwurst(~blaadsfa@70.75.221.8) (Ping timeout: 248 seconds)
2023-08-27 03:29:13 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-08-27 03:41:14 +0200razetime(~quassel@117.254.37.141)
2023-08-27 03:43:35 +0200Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.207)
2023-08-27 03:46:31 +0200 <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 03:47:04 +0200 <Jeanne-Kamikaze> (My experience with fundeps was short-lived; I had more runway with the associate type.)
2023-08-27 03:47:54 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 03:47:59 +0200 <Jeanne-Kamikaze> "Couldn't match expected type: Baz, actual type: Prod Foo Bar"
2023-08-27 03:50:40 +0200 <Jeanne-Kamikaze> Oh, I think I get the problem...
2023-08-27 03:52:26 +0200 <mauke> works here
2023-08-27 03:52:47 +0200 <mauke> https://paste.tomsmeding.com/LdhIdAzI
2023-08-27 03:53:11 +0200 <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 04:02:45 +0200Thomas03(~Thomas03@2600:1702:21b0:a500:e09e:1f4f:e07c:2dc2)
2023-08-27 04:06:37 +0200Inst(~liamzy@2601:6c4:4085:6d50::bb82) (Ping timeout: 245 seconds)
2023-08-27 04:07:21 +0200 <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 04:07:50 +0200 <geekosaur> this is the place although it might not be the right time
2023-08-27 04:08:15 +0200 <Jeanne-Kamikaze> Shoot
2023-08-27 04:08:19 +0200 <geekosaur> discourse.haskell.org is also a possibility and is less dependent on other people being awake
2023-08-27 04:10:04 +0200 <Thomas03> https://paste.tomsmeding.com/BILueeeA#file-1
2023-08-27 04:11:05 +0200mvk(~mvk@2607:fea8:5c9a:a600::5235) (Ping timeout: 244 seconds)
2023-08-27 04:12:27 +0200Inst(~liamzy@2601:6c4:4085:6d50::773)
2023-08-27 04:12:29 +0200 <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 04:14:13 +0200 <mauke> oof, 1-based indexing?
2023-08-27 04:16:23 +0200 <mauke> I don't like how everything is a string
2023-08-27 04:16:58 +0200 <mauke> number? string. a character? string. the board? strings.
2023-08-27 04:17:21 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 04:17:45 +0200 <Jeanne-Kamikaze> "read" is also not safe, some input handling in main would be helpful.
2023-08-27 04:18:28 +0200 <mauke> well, the quick and diry way is to combine getLine + read into readLn :-)
2023-08-27 04:18:37 +0200 <Jeanne-Kamikaze> If '#' is a sentinel, Maybe Char might be more appropriate in checkGrid.
2023-08-27 04:21:18 +0200 <Thomas03> what is 1-based indexing and a sentinel?
2023-08-27 04:22:09 +0200 <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 04:22:56 +0200 <Jeanne-Kamikaze> The input row/column is 1,2,3, as opposed to 0,1,2; that's what he means.
2023-08-27 04:23:20 +0200 <Jeanne-Kamikaze> But I think that's fine since 1-based is more intuitive from a user's point of view.
2023-08-27 04:23:24 +0200 <Thomas03> ah, ok
2023-08-27 04:26:20 +0200ddellacosta(~ddellacos@146.70.171.100) (Ping timeout: 248 seconds)
2023-08-27 04:26:30 +0200 <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 04:26:59 +0200 <Thomas03> even if !! and my replace function aren't safe
2023-08-27 04:27:10 +0200 <mauke> I mean the replace function, not necessarily the user interface
2023-08-27 04:27:30 +0200 <mauke> (also, xs is not used in replace)
2023-08-27 04:28:26 +0200ddellacosta(~ddellacos@146.70.166.180)
2023-08-27 04:30:28 +0200 <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 04:31:52 +0200 <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 04:31:59 +0200 <Thomas03> thanks for the help
2023-08-27 04:33:02 +0200 <mauke> :t \n r xs -> case splitAt n xs of (pre, post) -> pre ++ [r] ++ drop 1 post
2023-08-27 04:33:03 +0200 <lambdabot> Int -> a -> [a] -> [a]
2023-08-27 04:33:16 +0200mvk(~mvk@2607:fea8:5c9a:a600::5235)
2023-08-27 04:34:26 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-08-27 04:35:31 +0200 <mauke> :t \n r xs -> case splitAt n xs of (pre, post) -> pre <> [r] <> drop 1 post
2023-08-27 04:35:32 +0200 <lambdabot> Int -> a -> [a] -> [a]
2023-08-27 04:37:01 +0200Inst(~liamzy@2601:6c4:4085:6d50::773) (Ping timeout: 248 seconds)
2023-08-27 04:37:06 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 04:38:28 +0200 <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 04:39:14 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Client Quit)
2023-08-27 04:42:05 +0200myme(~myme@2a01:799:d60:e400:8c94:2d5b:43cf:54e) (Ping timeout: 244 seconds)
2023-08-27 04:42:59 +0200myme(~myme@2a01:799:d60:e400:931b:da7a:83d:85fa)
2023-08-27 04:43:01 +0200Thomas03(~Thomas03@2600:1702:21b0:a500:e09e:1f4f:e07c:2dc2) (Quit: Client closed)
2023-08-27 04:48:12 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-08-27 04:48:12 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-08-27 04:48:12 +0200finn_elijaFinnElija
2023-08-27 04:53:00 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 245 seconds)
2023-08-27 04:53:16 +0200td_(~td@i5387093E.versanet.de) (Ping timeout: 255 seconds)
2023-08-27 04:54:24 +0200bilegeek(~bilegeek@2600:1008:b049:a550:322c:1ff6:da17:76e2)
2023-08-27 04:55:24 +0200td_(~td@83.135.9.2)
2023-08-27 05:00:41 +0200YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 260 seconds)
2023-08-27 05:03:56 +0200YuutaW(~YuutaW@mail.yuuta.moe)
2023-08-27 05:18:46 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 244 seconds)
2023-08-27 05:20:44 +0200mvk(~mvk@2607:fea8:5c9a:a600::5235) (Ping timeout: 248 seconds)
2023-08-27 05:29:45 +0200aforemny_(~aforemny@i59F516C9.versanet.de)
2023-08-27 05:30:48 +0200aforemny(~aforemny@2001:9e8:6cef:2100:bda0:603:2023:867f) (Ping timeout: 246 seconds)
2023-08-27 05:34:44 +0200caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-08-27 05:46:17 +0200 <EvanR> tic tac toe is obviously -1 based indexing
2023-08-27 05:46:45 +0200 <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 05:47:04 +0200 <wroathe> something like: selName (undefined :: c)
2023-08-27 05:48:31 +0200 <wroathe> s/value/term, I guess
2023-08-27 05:55:38 +0200nyc(~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com) (Ping timeout: 258 seconds)
2023-08-27 05:56:12 +0200 <wroathe> Oh, I think TypeApplications works here
2023-08-27 05:56:19 +0200 <wroathe> selName @c undefined
2023-08-27 05:57:11 +0200Nosrep(~Nosrep@user/nosrep) (Remote host closed the connection)
2023-08-27 05:57:36 +0200Nosrep(~Nosrep@user/nosrep)
2023-08-27 05:57:51 +0200fweht(uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-08-27 06:00:30 +0200Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.207) (Quit: Leaving)
2023-08-27 06:07:26 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2023-08-27 06:11:32 +0200k3ut0i(~keutoi@223.230.26.106) (Ping timeout: 240 seconds)
2023-08-27 06:13:09 +0200razetime(~quassel@117.254.37.141) (Ping timeout: 246 seconds)
2023-08-27 06:54:10 +0200razetime(~quassel@117.254.37.141)
2023-08-27 07:08:06 +0200hammond(proscan@user/hammond2)
2023-08-27 07:08:22 +0200 <hammond> ppl seem to change the interface of libraries in haskell a lot.
2023-08-27 07:08:37 +0200 <hammond> is that a side effect of the language?
2023-08-27 07:12:18 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2023-08-27 07:16:28 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 07:17:39 +0200 <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 07:18:01 +0200 <dsal> I don't doubt it happens. Lots of software out there could use improvement. :)
2023-08-27 07:18:35 +0200 <hammond> yes
2023-08-27 07:18:42 +0200 <hammond> like regex.
2023-08-27 07:20:55 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds)
2023-08-27 07:21:14 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2023-08-27 07:21:21 +0200 <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 07:21:55 +0200 <davean> ttps://hackage.haskell.org/package/regex ? A glance suggests its API hasn't changed in years?
2023-08-27 07:24:28 +0200Rydwxz(~rw@cpe-75-82-51-90.socal.res.rr.com) (Ping timeout: 255 seconds)
2023-08-27 07:24:36 +0200 <davean> Like litterly there hasn't been a change in like 5 years. That one 5 years ago sounds pretty minor.
2023-08-27 07:28:45 +0200ddellacosta(~ddellacos@146.70.166.180) (Ping timeout: 246 seconds)
2023-08-27 07:33:28 +0200dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 255 seconds)
2023-08-27 07:37:10 +0200 <davean> hammond: do you have more clarity about what you mean?
2023-08-27 07:39:31 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 07:39:32 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 07:39:32 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-08-27 07:41:20 +0200ddellacosta(~ddellacos@146.70.166.100)
2023-08-27 07:43:56 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 07:46:16 +0200 <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 07:46:48 +0200 <hammond> you can only get a String[][] back.
2023-08-27 07:46:50 +0200 <hammond> idk
2023-08-27 07:47:21 +0200 <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 07:49:13 +0200 <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 07:49:31 +0200 <dsal> Regex has http support?
2023-08-27 07:49:48 +0200 <hammond> HTTP library.
2023-08-27 07:50:29 +0200 <dsal> Oh, you mean regex could use improvement, not that it changes a lot.
2023-08-27 07:50:37 +0200 <dsal> Which HTTP library are you referring to?
2023-08-27 07:50:38 +0200 <hammond> then the namespaces were all funky too, modules shifted, game and went.
2023-08-27 07:50:52 +0200 <hammond> came*
2023-08-27 07:51:08 +0200 <hammond> lemmi open my code hold on.
2023-08-27 07:51:18 +0200nyc(~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com)
2023-08-27 07:55:28 +0200 <hammond> https://hackage.haskell.org/package/HTTP
2023-08-27 07:56:42 +0200 <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 07:57:11 +0200 <hammond> I was readin this thing about procedural programming, and I figured I asked.
2023-08-27 07:58:08 +0200 <dsal> Wow, that thing's up to version 4000s. I've never used that particular library.
2023-08-27 07:58:26 +0200 <hammond> why would regex in a very safe language have exceptions... for instance. and be unsafe.
2023-08-27 07:58:29 +0200 <hammond> ok
2023-08-27 07:58:31 +0200 <dolio> It's at version 4000 because it used to be versioned based on date or something.
2023-08-27 07:58:44 +0200 <dsal> It's from the future!
2023-08-27 07:59:11 +0200 <dsal> hammond: I've not looked in a while, but it has something to do with working on bytestrings.
2023-08-27 08:00:11 +0200 <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 08:00:32 +0200 <hammond> fine.
2023-08-27 08:01:00 +0200 <dsal> Life is better without regex in general.
2023-08-27 08:01:18 +0200 <hammond> you have to parse text sometimes.
2023-08-27 08:01:19 +0200 <mauke> regex is good
2023-08-27 08:01:24 +0200 <mauke> haskell is just bad at regex
2023-08-27 08:01:29 +0200 <dsal> When I have to parse text, I write a parser.
2023-08-27 08:02:59 +0200 <haskellbridge> <s​m> a regular expression is a parser
2023-08-27 08:03:10 +0200ddellacosta(~ddellacos@146.70.166.100) (Ping timeout: 255 seconds)
2023-08-27 08:03:13 +0200 <haskellbridge> <s​m> with all the boilerplate hidden away
2023-08-27 08:03:24 +0200 <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 08:03:36 +0200 <mauke> same with regex vs. combinator parsers
2023-08-27 08:03:37 +0200ski(~ski@ext-1-496.eduroam.chalmers.se) (Ping timeout: 255 seconds)
2023-08-27 08:04:55 +0200ddellacosta(~ddellacos@143.244.47.89)
2023-08-27 08:06:10 +0200 <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 08:07:31 +0200 <mauke> same, but regex has better ergonomics (and arguably maintainability in cases where it applies)
2023-08-27 08:07:37 +0200 <hammond> regex is the language of parsing text. although it can be terrible to work with.
2023-08-27 08:08:00 +0200 <dolio> No, it's the language of lexing text.
2023-08-27 08:09:40 +0200jmcantrell(644f1bed9a@user/jmcantrell) (Remote host closed the connection)
2023-08-27 08:09:47 +0200jmcantrell(644f1bed9a@user/jmcantrell)
2023-08-27 08:14:18 +0200acidjnk(~acidjnk@p200300d6e7072f522470d89c17007116.dip0.t-ipconnect.de)
2023-08-27 08:23:51 +0200Rydwxz(~rw@cpe-75-82-51-90.socal.res.rr.com)
2023-08-27 08:26:51 +0200xff0x(~xff0x@2405:6580:b080:900:52e4:e06e:5b2b:5859) (Ping timeout: 246 seconds)
2023-08-27 08:27:16 +0200xff0x(~xff0x@178.255.149.135)
2023-08-27 08:30:36 +0200Square(~Square@user/square)
2023-08-27 08:31:51 +0200 <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 08:34:39 +0200acidjnk(~acidjnk@p200300d6e7072f522470d89c17007116.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2023-08-27 08:36:21 +0200todi(~todi@p4fd1a580.dip0.t-ipconnect.de) (Remote host closed the connection)
2023-08-27 08:41:02 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-08-27 08:43:47 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 08:51:51 +0200 <haskellbridge> <s​m> that's the one I use. pretty-show is an alternative, with different limitations
2023-08-27 08:56:14 +0200bilegeek(~bilegeek@2600:1008:b049:a550:322c:1ff6:da17:76e2) (Quit: Leaving)
2023-08-27 09:01:33 +0200MQ-17J(~MQ-17J@104.28.216.165)
2023-08-27 09:01:48 +0200MQ-17J(~MQ-17J@104.28.216.165) (Client Quit)
2023-08-27 09:02:20 +0200MQ-17J(~MQ-17J@104.28.216.165)
2023-08-27 09:02:26 +0200MQ-17J(~MQ-17J@104.28.216.165) (Client Quit)
2023-08-27 09:06:10 +0200xff0x(~xff0x@178.255.149.135) (Ping timeout: 255 seconds)
2023-08-27 09:06:37 +0200acidjnk(~acidjnk@p200300d6e7072f524500269999e4b2db.dip0.t-ipconnect.de)
2023-08-27 09:08:00 +0200xff0x(~xff0x@2405:6580:b080:900:609e:9cca:19ee:68a9)
2023-08-27 09:09:18 +0200Rydwxz(~rw@cpe-75-82-51-90.socal.res.rr.com) (Ping timeout: 255 seconds)
2023-08-27 09:21:52 +0200ymirhotfoot(~ymirhotfo@user/ymirhotfoot)
2023-08-27 09:22:34 +0200 <ymirhotfoot> How does this work?
2023-08-27 09:23:20 +0200 <ymirhotfoot> I joined via the Ganja Wee Web Cgat thingie.
2023-08-27 09:23:37 +0200Inst(~liamzy@2601:6c4:4085:6d50::bb82)
2023-08-27 09:25:06 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 09:25:33 +0200 <mauke> how does what work?
2023-08-27 09:25:55 +0200 <ymirhotfoot> Ah, please forgive
2023-08-27 09:25:58 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Remote host closed the connection)
2023-08-27 09:26:06 +0200 <ymirhotfoot> gtoss vaguyness.
2023-08-27 09:26:32 +0200 <ymirhotfoot> I write a tiny ping to Edward Kmett this evening.
2023-08-27 09:26:34 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 09:26:55 +0200 <ymirhotfoot> I used the address contact@positron.ai .
2023-08-27 09:27:44 +0200 <ymirhotfoot> But I am "un-authentrcated" to Great Google's Own Version of USENET.
2023-08-27 09:27:48 +0200 <haskellbridge> <I​nst> testing
2023-08-27 09:27:53 +0200 <Inst> okay, nice / works
2023-08-27 09:28:10 +0200 <ymirhotfoot> So the tiny ping failed to get through.
2023-08-27 09:29:56 +0200 <mauke> looks like edwardk has been idle here for 15 days
2023-08-27 09:30:30 +0200 <ymirhotfoot> Is it reasonable yo send a single short sentence to Edward via this sub-system of the Internet?
2023-08-27 09:31:35 +0200 <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 09:32:32 +0200 <ymirhotfoot> which is where the Verizon operator told me is the official home of POSOYTON.AI the Company.
2023-08-27 09:33:14 +0200 <ymirhotfoot> Thanks, Mauke!
2023-08-27 09:34:23 +0200 <ymirhotfoot> ad what I sent, attemped to send:
2023-08-27 09:34:34 +0200 <ymirhotfoot> The main message was
2023-08-27 09:34:44 +0200 <ymirhotfoot> PING
2023-08-27 09:35:12 +0200 <ymirhotfoot> and Yes Souriau was right!
2023-08-27 09:37:46 +0200 <ymirhotfoot> First: Thank you all!
2023-08-27 09:38:42 +0200 <ymirhotfoot> Secind: Good night, and, Heaven forwarding, see you later!
2023-08-27 09:38:49 +0200ymirhotfoot(~ymirhotfo@user/ymirhotfoot) (Remote host closed the connection)
2023-08-27 09:39:40 +0200Square(~Square@user/square) (Ping timeout: 245 seconds)
2023-08-27 09:39:55 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 255 seconds)
2023-08-27 09:48:30 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-08-27 09:49:27 +0200mmhat(~mmh@p200300f1c7042714ee086bfffe095315.dip0.t-ipconnect.de)
2023-08-27 09:51:15 +0200 <Inst> what is preventing toDyn from handling polymorphic functions?
2023-08-27 09:51:21 +0200mmhat(~mmh@p200300f1c7042714ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
2023-08-27 09:52:07 +0200todi(~todi@p4fd1a580.dip0.t-ipconnect.de)
2023-08-27 09:54:09 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 244 seconds)
2023-08-27 09:56:59 +0200 <Axman6> What a strange fellow, I hope edwardk doesn't get murdered
2023-08-27 10:00:36 +0200 <c_wraith> Inst: It's based on Dynamic, and Dynamic can only represent concrete types
2023-08-27 10:01:08 +0200 <c_wraith> Err.. *Typeable
2023-08-27 10:05:57 +0200APic(apic@apic.name) (Quit: Upgrade GNU Screen)
2023-08-27 10:08:34 +0200APic(apic@apic.name)
2023-08-27 10:18:20 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-08-27 10:19:08 +0200dobblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 10:19:08 +0200dobblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 10:19:08 +0200dobblego(~dibblego@haskell/developer/dibblego)
2023-08-27 10:19:19 +0200Inst(~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection)
2023-08-27 10:19:24 +0200dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds)
2023-08-27 10:19:37 +0200Inst(~liamzy@2601:6c4:4085:6d50::6702)
2023-08-27 10:19:59 +0200dobblegodibblego
2023-08-27 10:25:56 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-08-27 10:26:03 +0200 <Inst> c_wraith: seems to be what I remembered, not sure how much of a limitation this is
2023-08-27 10:38:14 +0200xff0x(~xff0x@2405:6580:b080:900:609e:9cca:19ee:68a9) (Read error: Connection reset by peer)
2023-08-27 10:43:12 +0200xff0x(~xff0x@2405:6580:b080:900:a08b:1654:7816:1e12)
2023-08-27 10:46:34 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-08-27 10:48:25 +0200todi(~todi@p4fd1a580.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2023-08-27 10:50:37 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 10:52:15 +0200todi(~todi@p4fd1a580.dip0.t-ipconnect.de)
2023-08-27 10:56:32 +0200ulysses4ever(~artem@c-73-103-90-145.hsd1.in.comcast.net)
2023-08-27 10:56:33 +0200artem(~artem@73.103.90.145) (Read error: Connection reset by peer)
2023-08-27 11:03:22 +0200 <[Leary]> Inst: You can circumvent it with a newtype wrapper.
2023-08-27 11:06:32 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-08-27 11:11:37 +0200todi(~todi@p4fd1a580.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2023-08-27 11:11:49 +0200 <Inst> the typing involves specific variables
2023-08-27 11:12:36 +0200 <Inst> i wonder what this looks like if i just inline everything
2023-08-27 11:12:37 +0200 <Inst> https://discourse.haskell.org/t/beautiful-functional-programming/7411/28?u=liamzy
2023-08-27 11:16:32 +0200 <Inst> also, wait, tricking toDyn to do stuff, isn't it easier if you typeapplications than do it with a newtype?
2023-08-27 11:17:01 +0200Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk)
2023-08-27 11:17:11 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 11:18:12 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-08-27 11:18:14 +0200 <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 11:20:16 +0200 <dminuoso> https://github.com/haskell/hackage-server/issues/997
2023-08-27 11:21:39 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-08-27 11:22:05 +0200 <dminuoso> It reads like Andreas Abel is waiting on Herbert for a handover.
2023-08-27 11:22:29 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-08-27 11:23:10 +0200thyriaen(~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1)
2023-08-27 11:25:20 +0200 <Inst> yup, this works
2023-08-27 11:25:21 +0200 <Inst> ghci> toDyn $ id @Char
2023-08-27 11:25:21 +0200 <Inst> <<Char -> Char>>
2023-08-27 11:25:27 +0200 <Inst> but i can see how newtype can be useful
2023-08-27 11:26:24 +0200 <mauke> > toDyn (id :: Char -> Char)
2023-08-27 11:26:26 +0200 <lambdabot> <<Char -> Char>>
2023-08-27 11:26:36 +0200 <mauke> > toDyn (id `asAppliedTo` 'x')
2023-08-27 11:26:37 +0200 <lambdabot> <<Char -> Char>>
2023-08-27 11:26:42 +0200 <c_wraith> Inst: use a newtype that quantifies internally
2023-08-27 11:27:55 +0200 <mauke> newtype IdPoly = IdPoly (forall a. a -> a)
2023-08-27 11:28:46 +0200Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Quit: Leaving)
2023-08-27 11:29:11 +0200razetime(~quassel@117.254.37.141) (Remote host closed the connection)
2023-08-27 11:29:14 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 11:30:06 +0200 <albet70> in do notation, f _ <- ... what's f here?
2023-08-27 11:30:07 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:c533:a387:9f57:1069) (Remote host closed the connection)
2023-08-27 11:30:29 +0200 <mauke> is that legal syntax?
2023-08-27 11:30:36 +0200 <c_wraith> doesn't look like legal syntax
2023-08-27 11:30:49 +0200 <mauke> > do { f _ <- undefined; f }
2023-08-27 11:30:50 +0200 <lambdabot> <hint>:1:6: error:
2023-08-27 11:30:50 +0200 <lambdabot> Parse error in pattern: f
2023-08-27 11:30:50 +0200 <lambdabot> Possibly caused by a missing 'do'?
2023-08-27 11:30:53 +0200 <c_wraith> It would be if there was a constructor in front of it, though
2023-08-27 11:31:02 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-08-27 11:31:10 +0200 <mauke> albet70: it's a parse error
2023-08-27 11:31:24 +0200 <c_wraith> albet70: F _ <- ... is a pattern match, though
2023-08-27 11:31:37 +0200gmg(~user@user/gehmehgeh)
2023-08-27 11:33:08 +0200 <albet70> https://github.com/crytic/echidna/blob/master/src/Main.hs#L60C1-L60C1
2023-08-27 11:33:16 +0200 <albet70> 62 lines
2023-08-27 11:33:16 +0200fendor(~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf)
2023-08-27 11:33:28 +0200 <c_wraith> Yes, there's a constructor at the start of that pattern
2023-08-27 11:33:36 +0200 <c_wraith> The capital letter matters
2023-08-27 11:36:05 +0200 <albet70> but 61 line isn't capitalized
2023-08-27 11:36:15 +0200 <c_wraith> the pattern portion is
2023-08-27 11:36:51 +0200 <albet70> what's the term I should search for those sytanx?
2023-08-27 11:36:57 +0200 <c_wraith> it's just pattern syntax
2023-08-27 11:37:13 +0200 <c_wraith> the only interesting part is that it's using RecordWildCards to bind record fields to names
2023-08-27 11:37:23 +0200 <Axman6> dminuoso: thanks - that post beomg from 2022 isn't great. Would be nice to have Haskell benelovent corporate sponsoraship overload
2023-08-27 11:38:18 +0200 <mauke> albet70: in line 61 there's only one "thing" to the left of the arrow
2023-08-27 11:39:30 +0200 <albet70> haha, I see
2023-08-27 11:40:46 +0200 <albet70> 62 line return a value which is EconfigWithValue ... and that pattern matching for extract loadedCfg and ks
2023-08-27 11:42:25 +0200 <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 11:43:45 +0200 <Inst> hold on
2023-08-27 11:44:32 +0200 <probie> > do { Just x <- [Nothing]; pure 42 }
2023-08-27 11:44:34 +0200 <lambdabot> []
2023-08-27 11:44:37 +0200 <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 11:44:46 +0200 <Inst> cool, it works
2023-08-27 11:45:07 +0200 <probie> > do { mx <- [Nothing]; case mx of { Just x -> pure 42} }
2023-08-27 11:45:09 +0200 <lambdabot> *Exception: <interactive>:3:23-53: Non-exhaustive patterns in case
2023-08-27 11:45:42 +0200 <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 11:45:55 +0200 <c_wraith> :t \m -> do Just x <- m ; pure x -- also, note the inferred constraint
2023-08-27 11:45:55 +0200 <lambdabot> MonadFail m => m (Maybe b) -> m b
2023-08-27 11:46:09 +0200 <mauke> @undo do Just x <- m ; pure x
2023-08-27 11:46:09 +0200 <lambdabot> m >>= \ a -> case a of { Just x -> pure x; _ -> fail ""}
2023-08-27 11:46:29 +0200 <Inst> i still prefer the Object hashmap approach to data
2023-08-27 11:46:50 +0200 <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 11:46:53 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds)
2023-08-27 11:47:09 +0200 <mauke> no
2023-08-27 11:47:18 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 11:47:25 +0200 <Inst> Object treemap is slower
2023-08-27 11:47:33 +0200 <mauke> we have a clear spec that requires the existence and type of several fields
2023-08-27 11:47:33 +0200todi(~todi@p4fd1a580.dip0.t-ipconnect.de)
2023-08-27 11:47:45 +0200 <mauke> we can validate and decode that at the application boundaries
2023-08-27 11:48:09 +0200 <Inst> tbh i'm not sure how Haskell static vs foreign language dynamic / objects interacts
2023-08-27 11:48:16 +0200 <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 11:48:39 +0200 <Inst> *parse, don't validate
2023-08-27 11:48:53 +0200 <mauke> "validate and decode" ~ parse
2023-08-27 11:49:40 +0200 <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 11:49:42 +0200dcoutts(~duncan@31.94.3.174)
2023-08-27 11:49:56 +0200 <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 11:50:07 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 11:50:10 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 11:50:10 +0200 <mauke> probie: why not?
2023-08-27 11:50:14 +0200 <Inst> it is
2023-08-27 11:50:21 +0200 <Inst> (that is, it is Jose Valim's problem)
2023-08-27 11:50:21 +0200 <c_wraith> Doing it with static types requires not relying on unnecessary information, which a lot of people are... bad at.
2023-08-27 11:50:25 +0200 <probie> It's not a real key-value data structure. It just looks and feels like one
2023-08-27 11:50:49 +0200 <mauke> the problem doesn't require a "real" key-value data structure
2023-08-27 11:51:05 +0200 <Inst> that is to say, you can just drop down to a product type and call it a day?
2023-08-27 11:51:06 +0200 <probie> The algorithm should receive a list of sections. A section is a key-value data structure ...
2023-08-27 11:51:16 +0200 <mauke> doesn't say "real"
2023-08-27 11:51:40 +0200 <mauke> Inst: I don't understand that argument
2023-08-27 11:51:53 +0200 <Inst> which argument? The dynamic typing advocate argument?
2023-08-27 11:51:55 +0200 <mauke> yeah
2023-08-27 11:52:16 +0200 <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 11:52:29 +0200 <Inst> their argument is that if you lock everything into fully-specified ADTs, the specification can keep on changing
2023-08-27 11:52:31 +0200 <mauke> if the set of fields changes significantly, I change my data type accordingly
2023-08-27 11:52:34 +0200 <c_wraith> Inst: that's not the Haskeller counterargument
2023-08-27 11:52:47 +0200 <mauke> if that breaks the code handling it, then I'll get a compiler error and can fix the code
2023-08-27 11:52:48 +0200 <Inst> what is the Haskeller counterargument, then?
2023-08-27 11:52:59 +0200 <mauke> in a dynamic language, the code would still be broken in that case, only you wouldn't know
2023-08-27 11:53:14 +0200 <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 11:53:32 +0200 <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 11:54:36 +0200 <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 11:54:44 +0200 <probie> mauke: How can it be a key-value data structure if you don't have keys?
2023-08-27 11:55:12 +0200 <mauke> probie: I have field names
2023-08-27 11:55:14 +0200 <mauke> close enough
2023-08-27 11:55:21 +0200 <Inst> implicit key is the Section l a -> b function, no?
2023-08-27 11:55:51 +0200 <albet70> what's that syntax of 61 line?
2023-08-27 11:55:52 +0200 <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 11:56:12 +0200 <mauke> probie: no
2023-08-27 11:56:21 +0200 <albet70> opts@Options{...} <- ...
2023-08-27 11:56:34 +0200 <mauke> albet70: aliasing
2023-08-27 11:56:53 +0200 <c_wraith> albet70: there are only two dots
2023-08-27 11:57:06 +0200 <c_wraith> albet70: {..} is RecordWildCards
2023-08-27 11:57:09 +0200 <mauke> `variable@pattern` matches against `pattern`, but also binds the whole value to `variable`
2023-08-27 11:57:15 +0200xff0x(~xff0x@2405:6580:b080:900:a08b:1654:7816:1e12) (Remote host closed the connection)
2023-08-27 11:57:34 +0200 <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 11:57:34 +0200xff0x(~xff0x@2405:6580:b080:900:cb8f:3cad:845d:4b41)
2023-08-27 11:57:42 +0200 <Inst> mauke: interesting use of runState
2023-08-27 11:57:47 +0200 <Inst> no need for mapAccumL
2023-08-27 11:58:01 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 11:58:33 +0200 <mauke> probie: does it matter?
2023-08-27 11:59:06 +0200 <probie> For writing code which annotates courses and lessons, not one bit
2023-08-27 11:59:36 +0200 <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 12:00:13 +0200 <mauke> no, that's important for posing the problem
2023-08-27 12:01:16 +0200 <mauke> for solving I'm going to do whatever seems easiest
2023-08-27 12:01:28 +0200 <Inst> tbh, does elixir support mutable objects?
2023-08-27 12:01:37 +0200 <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 12:02:42 +0200 <probie> I can just go with my shitty `foldr` solution, and deal in raw bytestrings
2023-08-27 12:02:43 +0200 <Inst> c_wraith: tbh, are dynamic typing advocates essentially argueing for undefined behavior?
2023-08-27 12:02:58 +0200 <Inst> /s/argueing/arguing
2023-08-27 12:03:26 +0200 <probie> https://paste.tomsmeding.com/ewVC4yzd for my unreadable `foldr` solution
2023-08-27 12:03:31 +0200 <mauke> besides, you can just slap a parser in front of my solution and get the same interface
2023-08-27 12:03:48 +0200aeroplane(~user@user/aeroplane)
2023-08-27 12:04:12 +0200 <probie> (to clarify, my solution was originally meant as a joke "all you need is foldr", so readability is lacking)
2023-08-27 12:04:15 +0200 <albet70> opts@Options{..} <- ... equal to let opts = ...?
2023-08-27 12:04:31 +0200notzmv(~zmv@user/notzmv)
2023-08-27 12:05:49 +0200 <Inst> technically speaking, aren't most recursive problems solvable with foldr?
2023-08-27 12:05:49 +0200 <Inst> like, you can implement maps with foldr, unfolds (I think) with foldr, filters with foldr, etc
2023-08-27 12:05:49 +0200Inst(~liamzy@2601:6c4:4085:6d50::6702) (Remote host closed the connection)
2023-08-27 12:06:06 +0200Inst(~liamzy@2601:6c4:4085:6d50::bb82)
2023-08-27 12:06:51 +0200 <probie> All problems are solvable with `foldr` if you have infinite lists.
2023-08-27 12:07:09 +0200 <mauke> and if your "accumulator" is another function
2023-08-27 12:08:12 +0200dcoutts(~duncan@31.94.3.174) (Ping timeout: 248 seconds)
2023-08-27 12:08:23 +0200 <Inst> what is an accumulator in a foldr context?
2023-08-27 12:08:35 +0200 <Inst> the element on the left, i.e, the next expression to be parsed, or the default value?
2023-08-27 12:08:55 +0200 <tomsmeding> albet70: 'opts@Options{..} <- ...' means 'x <- ... ; let opts@Options{...} = x'
2023-08-27 12:09:09 +0200 <tomsmeding> well, it doesn't if Options isn't the only constructor of '...'
2023-08-27 12:09:31 +0200 <tomsmeding> because then MonadFail would get used if the constructor didn't match
2023-08-27 12:09:40 +0200 <tomsmeding> but for single-constructor datatypes, close enough
2023-08-27 12:09:46 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-08-27 12:09:59 +0200kupi_(uid212005@id-212005.hampstead.irccloud.com)
2023-08-27 12:10:24 +0200 <tomsmeding> Inst: the a in (b -> a -> a) -> a -> [b] -> a
2023-08-27 12:12:25 +0200 <albet70> right
2023-08-27 12:14:56 +0200kupi_(uid212005@id-212005.hampstead.irccloud.com) ()
2023-08-27 12:15:20 +0200kupi_(uid212005@id-212005.hampstead.irccloud.com)
2023-08-27 12:15:20 +0200kupi_kupi
2023-08-27 12:15:23 +0200kupi(uid212005@id-212005.hampstead.irccloud.com) (Client Quit)
2023-08-27 12:15:35 +0200kupi(uid212005@id-212005.hampstead.irccloud.com)
2023-08-27 12:23:16 +0200 <Inst> thanks
2023-08-27 12:23:26 +0200 <Inst> yeah it's hard for me to think of foldr as containing an accumulator
2023-08-27 12:23:44 +0200 <Inst> because i think of how you can implement foldl' with foldr
2023-08-27 12:23:55 +0200 <[Leary]> tomsmeding: That transform also breaks strictness and tyvar scoping. What's wrong with case?
2023-08-27 12:23:58 +0200 <Inst> wherein the accumulator can actually not exist
2023-08-27 12:24:11 +0200 <Inst> and the actual accumulator is the function after the foldr function
2023-08-27 12:24:26 +0200 <probie> In that case, the "accumulator" in foldr is the continuation
2023-08-27 12:24:41 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-08-27 12:25:50 +0200 <[Leary]> @undo do{ x@Foo{} <- foo; bar }
2023-08-27 12:25:50 +0200 <lambdabot> foo >>= \ a -> case a of { x@Foo{} -> bar; _ -> fail ""}
2023-08-27 12:25:55 +0200 <[Leary]> albet70: ^
2023-08-27 12:28:21 +0200 <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 12:28:22 +0200 <lambdabot> Foldable t1 => (t2 -> t3 -> t2) -> t2 -> t1 t3 -> t2
2023-08-27 12:30:39 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:508a:b795:5c07:5ed4)
2023-08-27 12:33:15 +0200 <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 12:34:13 +0200 <Inst> ehhh, i can strict it, no?
2023-08-27 12:34:41 +0200 <Inst> thanks for terms, calling the foldl' simulation a fold with continuation is nice
2023-08-27 12:34:47 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:508a:b795:5c07:5ed4) (Ping timeout: 246 seconds)
2023-08-27 12:34:57 +0200 <Inst> afaik the continuation isn't actually built
2023-08-27 12:35:30 +0200 <Inst> because if you strict it on the outside accumulator, the function evaluates to a continuation and new accumulator
2023-08-27 12:35:40 +0200 <Inst> and goes through the continuations step by step
2023-08-27 12:36:36 +0200 <tomsmeding> Inst: is that behaviour observable?
2023-08-27 12:36:50 +0200 <tomsmeding> or just a result of ghc's particular choice of lazy evaluation order
2023-08-27 12:37:15 +0200 <tomsmeding> if the latter, then it's still valid to semantically see foldr as building up a continuation :)
2023-08-27 12:37:31 +0200 <tomsmeding> anyway, that's where the terminology comes from
2023-08-27 12:38:26 +0200 <Inst> i guess i think in terms of GHC
2023-08-27 12:38:50 +0200 <Inst> thanks for the advice and enlightenment everyone!
2023-08-27 13:05:39 +0200mrmr1(~mrmr@user/mrmr)
2023-08-27 13:12:50 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-08-27 13:20:30 +0200xff0x(~xff0x@2405:6580:b080:900:cb8f:3cad:845d:4b41) (Ping timeout: 245 seconds)
2023-08-27 13:20:55 +0200xff0x(~xff0x@2405:6580:b080:900:6a3:c84f:b4fa:44ab)
2023-08-27 13:22:22 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 13:23:14 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Max SendQ exceeded)
2023-08-27 13:23:48 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 13:26:04 +0200xff0x(~xff0x@2405:6580:b080:900:6a3:c84f:b4fa:44ab) (Ping timeout: 248 seconds)
2023-08-27 13:26:49 +0200k3ut0i(~keutoi@106.201.95.140)
2023-08-27 13:27:47 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 13:28:06 +0200xff0x(~xff0x@2405:6580:b080:900:1db3:366c:50c0:f70b)
2023-08-27 13:38:25 +0200TheCoffeMaker_(~TheCoffeM@190.245.100.85) (Ping timeout: 255 seconds)
2023-08-27 13:41:38 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 13:44:27 +0200jabuxas(~jabuxas@user/jabuxas)
2023-08-27 13:46:04 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
2023-08-27 13:49:21 +0200 <edwardk> Axman6: more likely my cofounder will get murdered. I'm not the one in Nevada.
2023-08-27 13:50:18 +0200 <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 13:53:09 +0200 <edwardk> i mean i do rather like him. we did go start a company together.
2023-08-27 13:53:16 +0200 <edwardk> going well!
2023-08-27 13:53:39 +0200 <edwardk> i'll be at ICFP in a week or so hiring a little bit.
2023-08-27 13:55:18 +0200 <jackdk> man I need more conferences in my life again
2023-08-27 13:57:26 +0200 <juri_> i just tried to do a talk, after four years of no-talk. it's pretty embarassing.
2023-08-27 13:58:12 +0200 <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 13:58:22 +0200 <juri_> very "kill me now" experience.
2023-08-27 13:58:49 +0200 <mauke> how go you get a laptop without a browser?
2023-08-27 13:59:06 +0200 <juri_> very carefully. :)
2023-08-27 13:59:17 +0200 <Inst> did you have a GUI?
2023-08-27 13:59:24 +0200xff0x(~xff0x@2405:6580:b080:900:1db3:366c:50c0:f70b) (Ping timeout: 256 seconds)
2023-08-27 13:59:38 +0200 <juri_> sort of. no GUI apps at all, other than an xterm.
2023-08-27 14:00:11 +0200 <Inst> no package manager either?
2023-08-27 14:00:12 +0200 <juri_> the conference had no ethernet, so i couldn't just fix it quickly.
2023-08-27 14:00:15 +0200 <Inst> ah
2023-08-27 14:00:37 +0200 <Inst> also, can I ask about Cabal?
2023-08-27 14:00:46 +0200 <Inst> I'm told it's bad practice to cabal install foo --lib everything
2023-08-27 14:00:56 +0200 <Inst> what I'm doing now is cabal install acme-dont --lib
2023-08-27 14:01:08 +0200 <Inst> which overrides dont, which is apparently not in any stackage libs
2023-08-27 14:01:15 +0200 <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 14:01:18 +0200xff0x(~xff0x@2405:6580:b080:900:39d8:3c9:7c35:7d94)
2023-08-27 14:01:33 +0200 <Inst> that seems surreal
2023-08-27 14:01:41 +0200 <juri_> it's an experience.
2023-08-27 14:01:45 +0200 <Inst> then i cabal install libs, which doesn't expose them to a public namespace
2023-08-27 14:01:59 +0200 <juri_> from what i hear, the talk was still alright, but..
2023-08-27 14:02:28 +0200 <juri_> people might just be being polite.
2023-08-27 14:05:02 +0200 <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 14:07:00 +0200 <Axman6> edwardk: Any chance you're using Clash at positron?
2023-08-27 14:07:20 +0200 <edwardk> none. clash isn't really up to the task we're pushing
2023-08-27 14:08:08 +0200 <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 14:08:45 +0200 <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 14:09:37 +0200 <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 14:09:39 +0200anselmschueler(~anselmsch@user/schuelermine)
2023-08-27 14:11:21 +0200 <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 14:11:32 +0200 <probie> edwardk: "> awake now" It's 10pm
2023-08-27 14:12:22 +0200 <edwardk> 8am here, and i didn't sleep yet.
2023-08-27 14:12:31 +0200 <Axman6> D:
2023-08-27 14:13:58 +0200thyriaen(~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1) (Remote host closed the connection)
2023-08-27 14:14:02 +0200 <Axman6> I hope that's because you've been working on something fun, and not the standard company work hours
2023-08-27 14:14:50 +0200 <edwardk> very much the 'something fun' part
2023-08-27 14:15:06 +0200 <edwardk> found a clever way to code up the control logic and wanted to see it work before i slept
2023-08-27 14:20:55 +0200anselmschueler(~anselmsch@user/schuelermine) (Ping timeout: 246 seconds)
2023-08-27 14:24:19 +0200finsternis(~X@23.226.237.192) (Ping timeout: 258 seconds)
2023-08-27 14:24:43 +0200finsternis(~X@23.226.237.192)
2023-08-27 14:24:54 +0200xff0x(~xff0x@2405:6580:b080:900:39d8:3c9:7c35:7d94) (Ping timeout: 256 seconds)
2023-08-27 14:26:32 +0200xff0x(~xff0x@2405:6580:b080:900:714a:8e99:dec2:574)
2023-08-27 14:29:40 +0200kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-08-27 14:32:52 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-08-27 14:33:16 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-08-27 14:36:17 +0200ripspin(~chatzilla@1.145.230.12)
2023-08-27 14:37:22 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2023-08-27 14:40:52 +0200fendor(~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf) (Remote host closed the connection)
2023-08-27 14:41:09 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 246 seconds)
2023-08-27 14:41:38 +0200xff0x(~xff0x@2405:6580:b080:900:714a:8e99:dec2:574) (Ping timeout: 246 seconds)
2023-08-27 14:43:45 +0200xff0x(~xff0x@2405:6580:b080:900:b7a3:53a:8a49:b7b0)
2023-08-27 14:43:47 +0200fweht(uid404746@id-404746.lymington.irccloud.com)
2023-08-27 14:44:48 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 14:49:02 +0200extor(~extor@ns3018124.ip-149-202-82.eu) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in)
2023-08-27 14:52:58 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 14:54:51 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-08-27 14:55:39 +0200xff0x(~xff0x@2405:6580:b080:900:b7a3:53a:8a49:b7b0) (Remote host closed the connection)
2023-08-27 14:55:58 +0200xff0x(~xff0x@2405:6580:b080:900:35db:109b:d18d:4f60)
2023-08-27 14:58:57 +0200extor(~extor@ns3018124.ip-149-202-82.eu)
2023-08-27 15:18:57 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 15:19:19 +0200Inst(~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection)
2023-08-27 15:19:37 +0200Inst(~liamzy@2601:6c4:4085:6d50::9ad9)
2023-08-27 15:23:43 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-08-27 15:23:55 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2023-08-27 15:26:39 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 246 seconds)
2023-08-27 15:29:33 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-08-27 15:30:35 +0200aeroplane(~user@user/aeroplane) (ERC 5.4 (IRC client for GNU Emacs 28.2))
2023-08-27 15:33:52 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 15:35:05 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 245 seconds)
2023-08-27 15:41:32 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 15:41:47 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 15:48:08 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 15:48:23 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 15:48:46 +0200jabuxas(~jabuxas@user/jabuxas) (Ping timeout: 246 seconds)
2023-08-27 15:50:06 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 15:50:20 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-08-27 15:50:55 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Client Quit)
2023-08-27 15:51:09 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 15:55:27 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 15:55:44 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 15:56:56 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 16:02:20 +0200Inst(~liamzy@2601:6c4:4085:6d50::9ad9) (Ping timeout: 248 seconds)
2023-08-27 16:04:32 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-08-27 16:05:46 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4)
2023-08-27 16:09:22 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-08-27 16:13:54 +0200dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net)
2023-08-27 16:14:44 +0200sm(~sm@plaintextaccounting/sm) (Remote host closed the connection)
2023-08-27 16:15:24 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 16:15:57 +0200Pickchea(~private@user/pickchea)
2023-08-27 16:18:27 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 16:18:46 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 16:19:40 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Quit: Quit)
2023-08-27 16:19:54 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 16:22:42 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Client Quit)
2023-08-27 16:22:56 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-08-27 16:24:44 +0200Inst(~liamzy@2601:6c4:4085:6d50::7f5a)
2023-08-27 16:26:56 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-08-27 16:28:58 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 16:29:04 +0200kilolympus(~kilolympu@cpc105064-sgyl40-2-0-cust46.18-2.cable.virginm.net)
2023-08-27 16:31:20 +0200 <albet70> I found that pattern matching is too powerful, we may not need record syntax to extract b from A b
2023-08-27 16:32:03 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-08-27 16:32:03 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-08-27 16:32:27 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-08-27 16:32:42 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-08-27 16:35:05 +0200shapr(~user@2600:1700:c640:3100:ffa9:4f64:3f6e:7248) (Remote host closed the connection)
2023-08-27 16:35:18 +0200shapr(~user@2600:1700:c640:3100:5abb:a85e:1a7a:3359)
2023-08-27 16:37:18 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-08-27 16:38:27 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 16:38:46 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 16:40:23 +0200mikoto-chan(~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be)
2023-08-27 16:45:43 +0200thyriaen(~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1)
2023-08-27 16:45:44 +0200thyriaen(~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1) (Remote host closed the connection)
2023-08-27 16:51:42 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca)
2023-08-27 16:57:52 +0200leah2(~leah@vuxu.org) (Ping timeout: 245 seconds)
2023-08-27 16:58:31 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-08-27 17:05:10 +0200RSCASTILHO(~RSCASTILH@187.40.124.54)
2023-08-27 17:08:25 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 245 seconds)
2023-08-27 17:08:52 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 17:09:16 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 17:11:04 +0200leah2(~leah@vuxu.org)
2023-08-27 17:12:23 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 17:13:36 +0200dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 246 seconds)
2023-08-27 17:13:41 +0200sm_(~sm@plaintextaccounting/sm)
2023-08-27 17:14:43 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 17:14:43 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 17:14:43 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-08-27 17:17:00 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds)
2023-08-27 17:19:58 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-08-27 17:23:28 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Remote host closed the connection)
2023-08-27 17:23:51 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-08-27 17:24:45 +0200Square(~Square@user/square)
2023-08-27 17:25:17 +0200 <Square> Is there some trick to add writer-like capabilities to your Free monad?
2023-08-27 17:25:18 +0200gmg(~user@user/gehmehgeh) (Ping timeout: 246 seconds)
2023-08-27 17:25:59 +0200gmg(~user@user/gehmehgeh)
2023-08-27 17:26:41 +0200 <Square> ...just want to log things during its evaluation
2023-08-27 17:27:36 +0200Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk)
2023-08-27 17:28:17 +0200ripspin(~chatzilla@1.145.230.12) (Remote host closed the connection)
2023-08-27 17:34:10 +0200dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 256 seconds)
2023-08-27 17:35:03 +0200Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Quit: Leaving)
2023-08-27 17:37:20 +0200Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-154.cust.tzulo.com)
2023-08-27 17:37:23 +0200caryhartline(~caryhartl@168.182.58.169)
2023-08-27 17:38:27 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 17:38:44 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 17:40:50 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2023-08-27 17:42:25 +0200grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2023-08-27 17:50:36 +0200YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 248 seconds)
2023-08-27 17:51:52 +0200 <EvanR> it's a free monad, you add whatever you want to the interface, then implement it
2023-08-27 17:52:30 +0200wroathe(~wroathe@user/wroathe)
2023-08-27 17:52:33 +0200YuutaW(~YuutaW@mail.yuuta.moe)
2023-08-27 17:52:35 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds)
2023-08-27 17:52:42 +0200sm_(~sm@plaintextaccounting/sm) (Quit: sm_)
2023-08-27 17:52:46 +0200 <EvanR> albet70, 'extracting' fields usually isn't the 'problem' with record syntax
2023-08-27 17:53:16 +0200 <Inst> where do I go to report that this list is insane?
2023-08-27 17:53:17 +0200 <Inst> https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/table.html
2023-08-27 17:53:26 +0200 <Inst> not in the usual "Haskell has too many extensions" sense, but rather:
2023-08-27 17:53:31 +0200 <Inst> ImplicitPrelude Don't implicitly import Prelude. Implied by RebindableSyntax. ???
2023-08-27 17:54:02 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-08-27 17:56:57 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-08-27 17:57:13 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-08-27 17:57:24 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 17:57:55 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 17:58:44 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 18:00:05 +0200k3ut0i(~keutoi@106.201.95.140) (Ping timeout: 245 seconds)
2023-08-27 18:00:11 +0200drdo(~drdo@bl5-28-156.dsl.telepac.pt) (Ping timeout: 250 seconds)
2023-08-27 18:03:13 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 250 seconds)
2023-08-27 18:04:29 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 248 seconds)
2023-08-27 18:05:00 +0200 <Inst> reported on GitLab, hope that's appropriate
2023-08-27 18:06:54 +0200k3ut0i(~keutoi@122.169.217.14)
2023-08-27 18:07:55 +0200notzmv(~zmv@user/notzmv) (Remote host closed the connection)
2023-08-27 18:07:56 +0200Inst(~liamzy@2601:6c4:4085:6d50::7f5a) (Remote host closed the connection)
2023-08-27 18:08:08 +0200 <EvanR> what is the problem
2023-08-27 18:08:13 +0200Inst(~liamzy@2601:6c4:4085:6d50::bb82)
2023-08-27 18:08:27 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 18:08:44 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 18:11:07 +0200grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 255 seconds)
2023-08-27 18:13:44 +0200notzmv(~zmv@user/notzmv)
2023-08-27 18:17:37 +0200fweht(uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-08-27 18:18:41 +0200YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 260 seconds)
2023-08-27 18:18:43 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-08-27 18:21:56 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 18:22:18 +0200Rydwxz(~rw@cpe-75-82-51-90.socal.res.rr.com)
2023-08-27 18:29:56 +0200Inst(~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection)
2023-08-27 18:30:16 +0200Inst(~liamzy@2601:6c4:4085:6d50::7f5a)
2023-08-27 18:33:29 +0200migas(~migas@astra4961.startdedicated.net) (Quit: Ping timeout (120 seconds))
2023-08-27 18:33:29 +0200caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-08-27 18:35:17 +0200migas(~migas@astra4961.startdedicated.net)
2023-08-27 18:35:44 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 18:36:12 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:4c5b:3166:bd64:8e4)
2023-08-27 18:36:36 +0200caryhartline(~caryhartl@168.182.58.169)
2023-08-27 18:37:00 +0200Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-154.cust.tzulo.com) (Quit: Leaving)
2023-08-27 18:39:31 +0200YuutaW(~YuutaW@2404:f4c0:f9c3:502::100:17b7)
2023-08-27 18:40:35 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:4c5b:3166:bd64:8e4) (Ping timeout: 246 seconds)
2023-08-27 18:44:36 +0200hyvoid(~hyenavoid@222-0-178-69.static.gci.net)
2023-08-27 18:44:40 +0200hyvoid(~hyenavoid@222-0-178-69.static.gci.net) (Remote host closed the connection)
2023-08-27 18:52:00 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2023-08-27 18:52:16 +0200dobblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-08-27 18:52:16 +0200dobblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-08-27 18:52:16 +0200dobblego(~dibblego@haskell/developer/dibblego)
2023-08-27 18:52:30 +0200dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 255 seconds)
2023-08-27 18:53:08 +0200dobblegodibblego
2023-08-27 18:53:49 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-08-27 18:58:27 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection)
2023-08-27 18:58:28 +0200pointlessslippe1(~pointless@212.82.82.3) (Ping timeout: 246 seconds)
2023-08-27 18:58:44 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc)
2023-08-27 19:02:08 +0200andrei_n(~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Client Quit)
2023-08-27 19:02:57 +0200pointlessslippe1(~pointless@212.82.82.3)
2023-08-27 19:04:54 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-08-27 19:06:40 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 19:06:47 +0200mikoto-chan(~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be) (Quit: WeeChat 3.8)
2023-08-27 19:11:41 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-08-27 19:15:56 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-08-27 19:16:30 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 19:20:52 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
2023-08-27 19:29:34 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-08-27 19:30:46 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-08-27 19:35:25 +0200caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-08-27 19:36:20 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 19:40:12 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 19:41:42 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-08-27 19:46:43 +0200 <Inst> for antiquated Haskell freeware books
2023-08-27 19:46:47 +0200 <Inst> why not RWH over LYAH?
2023-08-27 19:52:03 +0200 <monochrom> Did anyone said "not RWH"?
2023-08-27 19:52:23 +0200 <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 19:52:28 +0200michalz(~michalz@185.246.207.197)
2023-08-27 19:52:36 +0200 <monochrom> Actually, I tend to say that, but no one heard me anyway.
2023-08-27 19:53:33 +0200 <geekosaur> so you need to do LYAH along with data61 or cis194 in order to be able to actually write Haskell
2023-08-27 19:54:05 +0200 <dolio> Do you?
2023-08-27 19:54:17 +0200 <geekosaur> not enough exercises in lyah
2023-08-27 19:54:32 +0200 <geekosaur> you can read Haskell but not really write it
2023-08-27 19:55:15 +0200 <dolio> I didn't use any dedicated Haskell course to practice writing Haskell when I was learning.
2023-08-27 19:55:23 +0200 <monochrom> :)
2023-08-27 19:55:27 +0200 <dolio> I just wrote my AI homework in it or something.
2023-08-27 19:55:36 +0200 <monochrom> The Gentle Introduction here. LYAH didn't even exist.
2023-08-27 19:55:41 +0200 <geekosaur> ^
2023-08-27 19:55:56 +0200 <geekosaur> right, but not everyone is as good at self-directed learning
2023-08-27 19:56:09 +0200 <monochrom> I am sympathetic that LYAH is less terse than Gentle Intro.
2023-08-27 19:56:39 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 19:56:41 +0200 <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 19:56:54 +0200 <monochrom> OK, unpopular opinion: So you need to do LYAH along/after Learn How to Learn. :)
2023-08-27 19:57:50 +0200 <Inst> monochrom: I'm a bit excited because someone who I recall said he hated Haskell suddenly changed his mind
2023-08-27 19:57:50 +0200 <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 19:58:05 +0200 <Inst> but people kept on mentioning LYAH
2023-08-27 19:58:09 +0200 <Inst> which... didn't work for me
2023-08-27 19:58:45 +0200 <monochrom> Right, people who don't use Haskell in anger keep suggesting LYAH.
2023-08-27 19:58:57 +0200 <monochrom> But have you lurked in this channel lately?
2023-08-27 19:59:18 +0200 <geekosaur> cis194 and the wikibook are most recommended around here, I think
2023-08-27 19:59:19 +0200 <monochrom> Because here is full of people who use Haskell in anger and they say "anything except LYAH".
2023-08-27 19:59:26 +0200 <Inst> no one ever mentions lyah here, i think among actual haskellers, different resources get recommended
2023-08-27 20:01:07 +0200 <Inst> i directed him to effective haskell and thinking functionally with haskell
2023-08-27 20:01:22 +0200ss4(~wootehfoo@user/wootehfoot)
2023-08-27 20:02:38 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
2023-08-27 20:03:59 +0200 <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 20:04:44 +0200 <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 20:04:52 +0200 <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 20:05:37 +0200 <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 20:06:22 +0200jabuxas(~jabuxas@user/jabuxas)
2023-08-27 20:06:26 +0200 <Inst> 2nd edition got published in 2012 iirc
2023-08-27 20:06:26 +0200Inst(~liamzy@2601:6c4:4085:6d50::7f5a) (Remote host closed the connection)
2023-08-27 20:06:33 +0200 <monochrom> I would think merely unbitrotting RWH would not infringe any NDA.
2023-08-27 20:06:43 +0200Inst(~liamzy@2601:6c4:4085:6d50::9d0d)
2023-08-27 20:06:49 +0200 <Inst> oh, it was always first edition :(
2023-08-27 20:07:02 +0200 <geekosaur> one would think so, then I remember the NDA a bank tried to rope me into
2023-08-27 20:07:10 +0200 <geekosaur> back in 1998
2023-08-27 20:07:28 +0200 <geekosaur> it was narsty
2023-08-27 20:07:37 +0200 <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 20:08:42 +0200 <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 20:09:32 +0200 <Inst> so wait, is Standard Chartered somehow blocking RWH?
2023-08-27 20:09:35 +0200 <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 20:11:28 +0200 <Inst> there's this, though
2023-08-27 20:11:29 +0200 <Inst> https://github.com/tssm/up-to-date-real-world-haskell
2023-08-27 20:11:38 +0200 <dolio> Probably not. dons probably just doesn't feel like updating the book.
2023-08-27 20:12:43 +0200 <Inst> it's also a 3 person book, the band probably doesn't want to get back together again
2023-08-27 20:12:49 +0200 <Inst> dons I think is doing Rust a lot
2023-08-27 20:12:55 +0200danza(~francesco@151.37.230.40)
2023-08-27 20:12:58 +0200 <monochrom> His contract allows him to post skyline sunset photos only :)
2023-08-27 20:13:30 +0200 <APic>
2023-08-27 20:14:17 +0200 <monochrom> One time someone on haskell-cafe asked about a book for haskell-and-databases-etc.
2023-08-27 20:14:39 +0200 <monochrom> I said the cold hard truth "if someone tries to write one, it's outdated the next day already".
2023-08-27 20:14:59 +0200 <monochrom> The original poster was very angry at me. :)
2023-08-27 20:15:29 +0200 <Inst> well, i guess not, working on glean
2023-08-27 20:16:09 +0200 <monochrom> Like it or not, it's the cold hard truth. Just look at RWH. Even LYAH is outdated.
2023-08-27 20:16:45 +0200 <geekosaur> dolio, that's what the bank I was talking about earlier had
2023-08-27 20:17:16 +0200 <geekosaur> since I was already into open source by then, I was very unhappy
2023-08-27 20:17:22 +0200 <dolio> Yeah.
2023-08-27 20:17:39 +0200 <APic> Yeah.
2023-08-27 20:17:41 +0200 <monochrom> Oh wait, has anyone tried to do stenography analysis or something on dons's posted photos? >:)
2023-08-27 20:17:43 +0200 <geekosaur> I managed to get it weakened to "…that is related to what we do"
2023-08-27 20:18:15 +0200 <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 20:18:41 +0200 <Inst> lol ;_;
2023-08-27 20:19:29 +0200 <monochrom> "dons hid a lens library in a sunset photo 5 years before edwardk wrote the lens library we know" >:D
2023-08-27 20:19:32 +0200 <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 20:20:08 +0200 <geekosaur> I wasn't even writing financial code, I was mostly doing sysadmin stuff for them
2023-08-27 20:21:33 +0200gatekempt(~gatekempt@user/gatekempt)
2023-08-27 20:22:50 +0200ss4(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-08-27 20:26:43 +0200hubvu_(uid495858@id-495858.tinside.irccloud.com)
2023-08-27 20:28:20 +0200gatekempt(~gatekempt@user/gatekempt) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2023-08-27 20:28:44 +0200hubvu_(uid495858@id-495858.tinside.irccloud.com) ()
2023-08-27 20:29:01 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 20:29:58 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-08-27 20:35:12 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-08-27 20:36:09 +0200 <edwardk> monochrom: sure, though dons' version limited the choice of functor to IO.
2023-08-27 20:43:50 +0200jabuxas(~jabuxas@user/jabuxas) (Quit: Leaving.)
2023-08-27 20:44:10 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-08-27 20:44:10 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-08-27 20:44:10 +0200wroathe(~wroathe@user/wroathe)
2023-08-27 20:48:11 +0200jabuxas(~jabuxas@user/jabuxas)
2023-08-27 20:53:34 +0200 <monochrom> hahaha
2023-08-27 20:54:31 +0200 <geekosaur> also I think you meant steganography
2023-08-27 20:54:43 +0200 <geekosaur> stenography is typists' shorthand
2023-08-27 20:57:34 +0200 <monochrom> oops yeah
2023-08-27 20:58:04 +0200Sgeo(~Sgeo@user/sgeo)
2023-08-27 21:05:53 +0200Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk)
2023-08-27 21:06:07 +0200Simikando(~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Client Quit)
2023-08-27 21:10:15 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2023-08-27 21:14:16 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-08-27 21:15:19 +0200caryhartline(~caryhartl@168.182.58.169)
2023-08-27 21:15:51 +0200ddellacosta(~ddellacos@143.244.47.89) (Ping timeout: 245 seconds)
2023-08-27 21:16:16 +0200ddellacosta(~ddellacos@143.244.47.89)
2023-08-27 21:16:46 +0200fendor(~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf)
2023-08-27 21:23:38 +0200extor(~extor@ns3018124.ip-149-202-82.eu) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in)
2023-08-27 21:25:19 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-08-27 21:25:19 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-08-27 21:25:19 +0200wroathe(~wroathe@user/wroathe)
2023-08-27 21:45:06 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-08-27 21:57:54 +0200jabuxas(~jabuxas@user/jabuxas) (Remote host closed the connection)
2023-08-27 21:59:39 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-08-27 22:01:38 +0200 <Inst> since chuck norris is NDA-ed
2023-08-27 22:01:55 +0200 <Inst> erm, Don Stewart is NDA-ed, is he now the Haskell community Chuck Norris?
2023-08-27 22:04:26 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2023-08-27 22:06:56 +0200Inst(~liamzy@2601:6c4:4085:6d50::9d0d) (Remote host closed the connection)
2023-08-27 22:07:13 +0200Inst(~liamzy@2601:6c4:4085:6d50::7f5a)
2023-08-27 22:07:28 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-08-27 22:10:38 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2023-08-27 22:11:32 +0200V(~v@ircpuzzles/2022/april/winner/V) (Ping timeout: 240 seconds)
2023-08-27 22:25:26 +0200xmachina(~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 260 seconds)
2023-08-27 22:26:34 +0200V(~v@ircpuzzles/2022/april/winner/V)
2023-08-27 22:29:59 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 22:30:34 +0200Pickchea(~private@user/pickchea)
2023-08-27 22:30:34 +0200todi(~todi@p4fd1a580.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
2023-08-27 22:32:00 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-08-27 22:32:26 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 22:33:27 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-08-27 22:33:53 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-08-27 22:36:26 +0200shapr(~user@2600:1700:c640:3100:5abb:a85e:1a7a:3359) (Remote host closed the connection)
2023-08-27 22:45:15 +0200RSCASTILHO(~RSCASTILH@187.40.124.54) ()
2023-08-27 22:45:46 +0200fendor(~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf) (Remote host closed the connection)
2023-08-27 22:51:08 +0200son0p(~ff@152.203.98.110)
2023-08-27 22:53:07 +0200AlexNoo_(~AlexNoo@178.34.150.48)
2023-08-27 22:53:51 +0200myxokephale(~myxos@cpe-65-28-251-121.cinci.res.rr.com)
2023-08-27 22:53:51 +0200Luj1(~Luj@2a01:e0a:5f9:9681:92c9:bd26:afaf:3abb)
2023-08-27 22:54:31 +0200billchenchina(~billchenc@103.152.35.21)
2023-08-27 22:54:44 +0200terrorjack7(~terrorjac@2a01:4f8:c17:87f8::)
2023-08-27 22:54:44 +0200pierrot_(~pi@user/pierrot)
2023-08-27 22:54:49 +0200jbalint_(~jbalint@071-090-119-177.res.spectrum.com)
2023-08-27 22:55:00 +0200TheCoffeMaker_(~TheCoffeM@190.245.100.85)
2023-08-27 22:55:01 +0200p3n_(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1)
2023-08-27 22:55:01 +0200whatsupdoc_(uid509081@id-509081.hampstead.irccloud.com)
2023-08-27 22:56:08 +0200hueso_(~root@user/hueso)
2023-08-27 22:56:17 +0200michalz(~michalz@185.246.207.197) (Remote host closed the connection)
2023-08-27 22:56:28 +0200piele_(~piele@tbonesteak.creativeserver.net)
2023-08-27 22:57:27 +0200kronicma1(user98083@neotame.csclub.uwaterloo.ca)
2023-08-27 22:57:32 +0200caubert_(~caubert@user/caubert)
2023-08-27 22:57:47 +0200[exa]_(~exa@srv3n.blesmrt.net)
2023-08-27 22:57:55 +0200dxtr_(~dxtr@user/dxtr)
2023-08-27 22:58:20 +0200falafel(~falafel@216.68.6.51.dyn.plus.net)
2023-08-27 23:00:12 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-08-27 23:02:08 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (*.net *.split)
2023-08-27 23:02:08 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (*.net *.split)
2023-08-27 23:02:08 +0200dxtr(~dxtr@user/dxtr) (*.net *.split)
2023-08-27 23:02:08 +0200billchenchina-(~billchenc@2a0c:b641:7a2:320:ee3e:47ca:6070:d71a) (*.net *.split)
2023-08-27 23:02:08 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (*.net *.split)
2023-08-27 23:02:08 +0200AlexNoo(~AlexNoo@178.34.150.48) (*.net *.split)
2023-08-27 23:02:08 +0200piele(~piele@tbonesteak.creativeserver.net) (*.net *.split)
2023-08-27 23:02:08 +0200Buggys(Buggys@buggy.shelltalk.net) (*.net *.split)
2023-08-27 23:02:08 +0200myxos(~myxos@cpe-65-28-251-121.cinci.res.rr.com) (*.net *.split)
2023-08-27 23:02:08 +0200jbalint(~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7) (*.net *.split)
2023-08-27 23:02:08 +0200hueso(~root@user/hueso) (*.net *.split)
2023-08-27 23:02:08 +0200p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (*.net *.split)
2023-08-27 23:02:08 +0200kronicmage(user44322@neotame.csclub.uwaterloo.ca) (*.net *.split)
2023-08-27 23:02:08 +0200pierrot(~pi@user/pierrot) (*.net *.split)
2023-08-27 23:02:08 +0200whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (*.net *.split)
2023-08-27 23:02:08 +0200Ranhir(~Ranhir@157.97.53.139) (*.net *.split)
2023-08-27 23:02:08 +0200Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (*.net *.split)
2023-08-27 23:02:08 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (*.net *.split)
2023-08-27 23:02:08 +0200Vajb(~Vajb@2001:999:489:74bc:8e7:73bb:7236:fd81) (*.net *.split)
2023-08-27 23:02:08 +0200Adran(~adran@botters/adran) (*.net *.split)
2023-08-27 23:02:08 +0200[exa](~exa@user/exa/x-3587197) (*.net *.split)
2023-08-27 23:02:08 +0200caubert(~caubert@user/caubert) (*.net *.split)
2023-08-27 23:02:09 +0200Luj1Luj
2023-08-27 23:02:09 +0200terrorjack7terrorjack
2023-08-27 23:02:10 +0200whatsupdoc_whatsupdoc
2023-08-27 23:02:15 +0200Buggys-(Buggys@Buggy.shelltalk.net)
2023-08-27 23:02:39 +0200Adran(~adran@botters/adran)
2023-08-27 23:03:11 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-08-27 23:04:31 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 246 seconds)
2023-08-27 23:06:52 +0200dxtr_dxtr
2023-08-27 23:09:40 +0200Ranhir(~Ranhir@157.97.53.139)
2023-08-27 23:09:51 +0200sm(~sm@plaintextaccounting/sm)
2023-08-27 23:10:48 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-08-27 23:16:27 +0200mniip_mniip
2023-08-27 23:17:07 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-08-27 23:17:23 +0200extor(~extor@ns3018124.ip-149-202-82.eu)
2023-08-27 23:22:52 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-08-27 23:26:34 +0200Thomas03(~Thomas03@2600:1702:21b0:a500:e1c1:8242:9d33:b337)
2023-08-27 23:29:47 +0200cheater(~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com))
2023-08-27 23:30:41 +0200pavonia(~user@user/siracusa)
2023-08-27 23:31:37 +0200wroathe(~wroathe@user/wroathe)
2023-08-27 23:33:56 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-08-27 23:35:29 +0200Guest99(~Guest99@2601:602:a080:4e50:fefc:3da5:d370:8cd4)
2023-08-27 23:36:20 +0200Guest99(~Guest99@2601:602:a080:4e50:fefc:3da5:d370:8cd4) ()
2023-08-27 23:38:52 +0200aaronv(~Guest99@user/aaronv)
2023-08-27 23:43:53 +0200ec_(~ec@gateway/tor-sasl/ec)
2023-08-27 23:46:04 +0200aaronv(~Guest99@user/aaronv) (Quit: aaronv)
2023-08-27 23:46:06 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 246 seconds)
2023-08-27 23:46:43 +0200aaronv(~aaronv@user/aaronv)
2023-08-27 23:47:26 +0200Inst(~liamzy@2601:6c4:4085:6d50::7f5a) (Ping timeout: 258 seconds)
2023-08-27 23:55:11 +0200aaronv(~aaronv@user/aaronv) (Quit: Leaving)
2023-08-27 23:55:33 +0200aaronv(~aaronv@user/aaronv)
2023-08-27 23:56:34 +0200 <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 23:57:31 +0200 <Square> Anyone have any insight in where to look to accomplish this?
2023-08-27 23:58:56 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)