2025/12/18

Newest at the top

2025-12-18 19:59:27 +0100ljdarj1ljdarj
2025-12-18 19:59:27 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2025-12-18 19:55:37 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-12-18 19:55:20 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-12-18 19:54:24 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-12-18 19:50:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2025-12-18 19:44:36 +0100acidjnk(~acidjnk@p200300d6e7171981f0c6dc9689540cc0.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2025-12-18 19:42:18 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2025-12-18 19:39:06 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-12-18 19:32:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2025-12-18 19:30:38 +0100chele(~chele@user/chele) (Remote host closed the connection)
2025-12-18 19:29:50 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-12-18 19:21:54 +0100merijn(~merijn@62.45.136.136) (Ping timeout: 256 seconds)
2025-12-18 19:19:38 +0100Pozyomka(~pyon@user/pyon) (Quit: bbl)
2025-12-18 19:17:48 +0100jmcantrell_jmcantrell
2025-12-18 19:17:29 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2025-12-18 19:17:25 +0100lambda_gibbon(~lambda_gi@208.83.175.39) (Ping timeout: 264 seconds)
2025-12-18 19:17:21 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-12-18 19:17:13 +0100merijn(~merijn@62.45.136.136) merijn
2025-12-18 19:15:44 +0100trickard(~trickard@cpe-81-98-47-163.wireline.com.au)
2025-12-18 19:15:32 +0100trickard(~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-12-18 19:06:21 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-12-18 19:01:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2025-12-18 19:00:47 +0100lambda_gibbon(~lambda_gi@208.83.175.39)
2025-12-18 18:56:27 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-12-18 18:56:07 +0100 <tomsmeding> nice, have fun :)
2025-12-18 18:55:57 +0100 <machinedgod> Thank you, both for time and knowledge!
2025-12-18 18:55:43 +0100 <machinedgod> tomsmeding: Oh, I didn't feel like you're being discouraging, quite the oppoosite! You're here, spending time of your life to consult me for free - if that isn't practical encouraging, I don't know what is :) and, I am taking your advice to heart, I've just poured myself another cup of coffee, and rather than typing more code, I'm gonna sit, look at it and think for a bit
2025-12-18 18:52:14 +0100 <tomsmeding> this is not to discourage you from experimenting, by the way! :)
2025-12-18 18:51:34 +0100 <tomsmeding> (and if it doesn't, come back)
2025-12-18 18:51:30 +0100 <tomsmeding> I think that if you know that, it'll become clearer how to use linearity to accomplish that
2025-12-18 18:51:14 +0100 <tomsmeding> "authority tokens" sound like a design pattern to simplify writing APIs that use linearity to enforce certain invariants. That still requires you to have an idea beforehand what invariants you want to enforce, exactly :)
2025-12-18 18:49:51 +0100 <machinedgod> But yeah, I honestly don't really have a clear goal on what do I want to accomplish - I have a toy project specifically crafted just so that I could toy around with lineary and 'real' problems and see what is doable, what isn't and what are the pros/cons. I've done the same thing when datakinds became a thing :)
2025-12-18 18:49:04 +0100 <machinedgod> You're reading my mind :) One good advice I've gotten was to separate observation from mutation, and to add 'authority' tokens which have linear access. That's what I'm going to attempt to do, and see how far I get.
2025-12-18 18:48:38 +0100lambda_gibbon(~lambda_gi@208.83.175.39) (Ping timeout: 244 seconds)
2025-12-18 18:43:52 +0100 <tomsmeding> making your whole program "linear" is not really a thing
2025-12-18 18:43:40 +0100 <tomsmeding> decide what exactly you want to do with linearity, and find ways to accomplish that, is what I would say
2025-12-18 18:43:15 +0100 <tomsmeding> I'm not sure. I used it once for a very specific purpose, and it worked fine for that, but there are still a lot of rough edges, I think
2025-12-18 18:42:20 +0100 <machinedgod> I am attempting to find a correct, uh... 'meta pattern' to use linear types. Its mainly to get some experience in usage. Do you maybe know what could I look at?
2025-12-18 18:41:14 +0100 <machinedgod> tomsmeding: Aye, that's a good answer! Thank you, I did check the user manual and I did look into limitations - but I misread the part about records.
2025-12-18 18:40:12 +0100spew(~spew@user/spew) spew
2025-12-18 18:33:47 +0100 <tomsmeding> *question
2025-12-18 18:33:41 +0100 <tomsmeding> on reflection, yes, that bullet in the limitations _is_ your questoin
2025-12-18 18:31:58 +0100marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2025-12-18 18:31:46 +0100 <tomsmeding> machinedgod: the constructor of a data type _is_ linear by default, unless you explicitly make it not so using GADTSyntax
2025-12-18 18:28:40 +0100 <tomsmeding> ah no that's not quite your question
2025-12-18 18:28:20 +0100 <tomsmeding> machinedgod: ah, see point 6 here https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/linear_types.html#limitations
2025-12-18 18:27:49 +0100 <tomsmeding> aparently not!
2025-12-18 18:20:14 +0100 <machinedgod> tomsmeding: Hey, thank you for replying! What I meant was, sorry for misusing a wrong term - a record selector function. Basically, a datatype with a named field - I would presume those auto-genned functions would be linear, when LinearTypes are enabled?
2025-12-18 18:18:35 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)