2025/09/16

Newest at the top

2025-09-16 04:48:24 +0200 <StatisticalIndep> Interesting: The Storable instances for basic types seem to be implemented inside GHC, and the libraries just use stuff like (writeWordOffAddr# = writeWordOffAddr#). So there is probably no actual marshalling work, and it’s fast and 1:1.
2025-09-16 04:47:21 +0200 <geekosaur> re marshaling: requiring STorable doesn't seem like much of an issue, and you would need it anyway because Haskell values aren't designed to be meaningful outside of Haskell's heap
2025-09-16 04:46:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-09-16 04:46:31 +0200 <StatisticalIndep> jackdk: Thanks a lot!
2025-09-16 04:45:18 +0200 <StatisticalIndep> Ah, yes, StateVar was a pretty nice experience, when I used SDL. Comes really close to it, indeed.
2025-09-16 04:45:10 +0200arandombit(~arandombi@user/arandombit) arandombit
2025-09-16 04:45:10 +0200arandombit(~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) (Changing host)
2025-09-16 04:45:10 +0200arandombit(~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15)
2025-09-16 04:43:49 +0200 <StatisticalIndep> System.IO.MMap looks pretty good, btw. If only there was no marshalling.
2025-09-16 04:42:48 +0200 <jackdk> StatisticalIndep: Well I'd probably look at building something that used the https://hackage.haskell.org/package/StateVar interface, and then back it with either the mmap link from before (remember to use a `bracket` function to ensure that you unmap even if an exception is thrown) or some other file io
2025-09-16 04:40:12 +0200 <StatisticalIndep> jackdk: To stop people from always assuming the thing I said I want is not the right solution for the thing I want it for. (The “XY problem” fallacy.) 😁 … (Or in this case, there is no deeper reason. I want to explore writing a library that offers transparently persistent variables. Nothing more.)
2025-09-16 04:38:02 +0200arandombit(~arandombi@user/arandombit) (Ping timeout: 260 seconds)
2025-09-16 04:36:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-09-16 04:31:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-09-16 04:21:55 +0200Alleria(~Alleria@user/alleria) (Quit: Textual IRC Client: www.textualapp.com)
2025-09-16 04:20:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-09-16 04:17:10 +0200nschoe(~nschoe@82-65-202-30.subs.proxad.net) nschoe
2025-09-16 04:16:53 +0200nschoe(~nschoe@2a01:e0a:8e:a190:eb80:e362:f8e1:aa2f) (Quit: ZNC 1.8.2 - https://znc.in)
2025-09-16 04:16:49 +0200 <jackdk> StatisticalIndep: a fine ultimate goal, but do you have a subgoal in-between?
2025-09-16 04:16:25 +0200 <StatisticalIndep> jackdk: Ultimately, to leave a mark on the universe that improves the wisdom and happiness of humanity. 😁
2025-09-16 04:15:18 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-09-16 04:13:53 +0200 <jackdk> StatisticalIndep: does https://hackage.haskell.org/package/mmap-0.5.9/docs/System-IO-MMap.html look like it might solve your problem? I'm not sure I understand what problem you're trying to solve yet
2025-09-16 04:11:49 +0200 <StatisticalIndep> that chunk. Making it hard, but possibly necessary to retain Haskell’s reliability guarantees?
2025-09-16 04:11:48 +0200 <StatisticalIndep> BTW: Am I using the wrong language, for trying to write a library that offers persistent variable? As in: Can be used like a variable (ok maybe IORef), but is a pointer (and size) in a file on disk. It seems Haskell is very averse to the strategy of just loading a chunk of data from disk into RAM and then setting a pointer to a data structure to
2025-09-16 04:07:41 +0200poscat(~poscat@user/poscat) (Ping timeout: 244 seconds)
2025-09-16 04:06:17 +0200poscat0x04(~poscat@user/poscat) poscat
2025-09-16 04:04:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2025-09-16 04:04:20 +0200 <StatisticalIndep> geekosaur: Amen to your comment about research papers. (I wish there was an easy way to learn what it takes to write a research paper. It seems to require a whole basket of arcane rituals to be acceptable. ;)
2025-09-16 04:04:18 +0200arandombit(~arandombi@user/arandombit) arandombit
2025-09-16 04:02:25 +0200 <StatisticalIndep> geekosaur: Though we should really get rid of that “Parsec from Temu” that forms the basis of the Read class. I actually thought it was meant to be used outside of GHC’s automatic deriving! ;)
2025-09-16 04:01:21 +0200 <StatisticalIndep> geekosaur: Parsec was a positive exception indeed. I liked it quite a lot.
2025-09-16 04:00:28 +0200 <StatisticalIndep> identifiers, of course. ;) …
2025-09-16 04:00:28 +0200 <StatisticalIndep> expected function that seems to be just missing. Without a guide, that is impossible to find! … And that the types can tell you what a function does, seems to be an old mantra, but really, even basic math operations prove that wrong. (What does (Int -> Int -> Int) do? XD) Unless you make a `type` for each of them, to give them descriptive
2025-09-16 04:00:28 +0200 <StatisticalIndep> yin: Well, the cases in point would be things like Control.Arrow, the regex libraries, the printf function, or the entire generics/SYB black magic. But even basic Foldable/Traversable have some nasty catches, where it is just implied you know that that seemingly entirely unrelated more generic function, in this case, works to do the job of a common
2025-09-16 03:59:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-09-16 03:57:09 +0200OftenFaded(~OftenFade@user/tisktisk) (Ping timeout: 250 seconds)
2025-09-16 03:55:37 +0200 <geekosaur> (exceptions to point (a), at least)
2025-09-16 03:55:14 +0200 <geekosaur> there are exceptions, but in many of those cases (e.g. Parsec) the "research paper" is more like a users guide anyway
2025-09-16 03:53:53 +0200 <geekosaur> also I'd note that most relevant research papers are (a) short (b) not too technical (c) quite readable
2025-09-16 03:52:39 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-09-16 03:52:22 +0200tabaqui(~tabaqui@167.71.80.236) tabaqui
2025-09-16 03:49:05 +0200berberman(~berberman@user/berberman) berberman
2025-09-16 03:48:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-09-16 03:47:53 +0200jmcantrell_jmcantrell
2025-09-16 03:47:49 +0200jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2025-09-16 03:47:21 +0200berberman(~berberman@user/berberman) (Quit: ZNC 1.10.1 - https://znc.in)
2025-09-16 03:44:08 +0200Lycurgus(~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
2025-09-16 03:43:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-09-16 03:38:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-09-16 03:34:14 +0200 <Lycurgus> but libs have APIs and their sigs, the effective protocol implied can suffice