2024/07/05

Newest at the top

2024-07-05 20:27:14 +0200 <jle`> hi! i have been floating in and out for the past few months heh
2024-07-05 20:26:37 +0200 <haskellbridge> <iqubic (she/her)> Jle`: You're back!!!
2024-07-05 20:26:00 +0200 <jle`> was there a recent ghc version where $$(myTH) can now be written as $$myTH ? or was it always permitted and i just didn't know
2024-07-05 20:21:46 +0200Lord_of_Life_Lord_of_Life
2024-07-05 20:21:09 +0200noumenon(~noumenon@2a01:799:cd8:e700:aa7e:eaff:fede:ff94)
2024-07-05 20:19:10 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
2024-07-05 20:18:49 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2024-07-05 20:17:52 +0200 <haskellbridge> <iqubic (she/her)> Overloaded strings are pretty OP.
2024-07-05 20:17:19 +0200 <probie> Inst: "foo :: Text" is the same as if you'd written "(fromString "foo") :: Text", however that doesn't actually mean there will be a `String` in the compiled code. GHC normally does a very good job optimising it all away and just leaving you with the `Text` value you'd expect
2024-07-05 20:16:04 +0200 <haskellbridge> <iqubic (she/her)> What do people recommend for generating random values? I know that some of this stuff will have to be in IO, but I think most of the functions can be pure by doing something like "generator -> (Int, generator)"
2024-07-05 20:15:17 +0200fun-safe-math(~fun-safe-@24.21.106.247)
2024-07-05 20:15:07 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 268 seconds)
2024-07-05 20:13:00 +0200rdcdr(~rdcdr@user/rdcdr) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in)
2024-07-05 20:02:22 +0200 <geekosaur> much as it does for numeric literals (fromInteger/fromRational)
2024-07-05 20:02:01 +0200 <geekosaur> it compiles them to fromString/fromList called on a normal string/list
2024-07-05 20:00:36 +0200nurupo(~nurupo.ga@user/nurupo)
2024-07-05 20:00:17 +0200nurupo(~nurupo.ga@user/nurupo) (Quit: nurupo.ga)
2024-07-05 19:57:40 +0200 <Inst> just curious, when you have isString or isList typeclasses, are these hardcoded literals or, when GHC gets to the literals, it generates a String or List and does the conversion as needed?
2024-07-05 19:57:10 +0200Inst(~Inst@user/Inst)
2024-07-05 19:52:31 +0200danse-nr3(~danse-nr3@151.47.148.201) (Quit: Leaving)
2024-07-05 19:47:53 +0200rdcdr(~rdcdr@user/rdcdr)
2024-07-05 19:41:31 +0200codaraxis__(~codaraxis@user/codaraxis) (Ping timeout: 268 seconds)
2024-07-05 19:37:29 +0200codaraxis___(~codaraxis@user/codaraxis)
2024-07-05 19:35:59 +0200madhavanmiui(~madhavanm@2409:40f4:304d:5ad7:8000::) (Client Quit)
2024-07-05 19:35:18 +0200madhavanmiui(~madhavanm@2409:40f4:304d:5ad7:8000::)
2024-07-05 19:32:33 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-07-05 19:20:14 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-05 19:12:29 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-07-05 19:06:33 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-07-05 18:55:44 +0200misterfish(~misterfis@84.53.85.146)
2024-07-05 18:53:47 +0200destituion(~destituio@2a02:2121:6bc:1a95:cb10:e092:4032:88f5)
2024-07-05 18:51:16 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-07-05 18:48:34 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds)
2024-07-05 18:47:08 +0200soverysour(~soverysou@user/soverysour)
2024-07-05 18:42:58 +0200 <haskellbridge> <sm> command line parsing gets tricky !
2024-07-05 18:42:08 +0200 <danse-nr3> \o good work
2024-07-05 18:41:54 +0200 <hololeap> anyway, I really just wanted some advice on the uninitialized constructor idea, and I got it, so I'll get back to coding. thanks again!
2024-07-05 18:40:59 +0200vpan(~vpan@212.117.1.172) (Quit: Leaving.)
2024-07-05 18:39:08 +0200 <hololeap> it also has the requirement of only depending on packages that come bundled with GHC, so for optparse-applicative esque commands, I'd have to roll my own
2024-07-05 18:38:37 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-05 18:38:20 +0200euleritian(~euleritia@dynamic-176-002-131-122.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2024-07-05 18:37:32 +0200 <hololeap> true, but it's an old open source utility that I'm working on, so I'm sort of evolving it slowly in the direction it needs to go, rather than just rewriting it, partially because I'm dogfooding it and assessing things as I go. the feature drift is a bit of a necessary evil at this point, and keeping the command line similar to what it has been in the past is a priority just so I don't confuse current users of it
2024-07-05 18:34:37 +0200 <danse-nr3> once you can get a top level sum type, for instance, that paves the path towards eventually splitting commands into separate concerns
2024-07-05 18:33:24 +0200 <danse-nr3> it's three types where i would personally wish to have just one that makes sense. Arguments interacting with each other in a fairly complex way is probably not the best usability
2024-07-05 18:33:19 +0200 <hololeap> thanks for the insights c_wraith, danse-nr3
2024-07-05 18:32:05 +0200 <hololeap> anyway, I think the most straightforward thing to do here is to move step 3 to the same modules where the work is being done
2024-07-05 18:31:08 +0200 <hololeap> danse-nr3: to some degree, yes. it's a CLI program and the way that arguments interact with each other is fairly complex, so I have it separated into: 1) a model of the possible command line options given by the user 2) conversion/parsing/validation to an ADT of possible valid modes of the program 3) conversion of this ADT to types that control the behavior of other parts that are doing the actual work
2024-07-05 18:31:03 +0200 <c_wraith> If I'm getting a lot of ad-hoc types out of that, it's time to consider refactoring so that the cases all follow clearly-delineated patterns
2024-07-05 18:30:04 +0200destituion(~destituio@2a02:2121:6bc:1a95:cb10:e092:4032:88f5) (Remote host closed the connection)
2024-07-05 18:29:44 +0200 <c_wraith> in the end, I just create new types for new cases. If all I know are these three fields, I dig into *why* that's true, then create a new data type that contains those three fields and document when it's the right thing to use.