2025-09-16 00:01:42 +0200 | AndreiDuma | (~AndreiDum@user/AndreiDuma) AndreiDuma |
2025-09-16 00:02:18 +0200 | peterbecich | (~Thunderbi@syn-172-222-149-049.res.spectrum.com) (Ping timeout: 265 seconds) |
2025-09-16 00:03:33 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 00:08:38 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 00:10:53 +0200 | pavonia | (~user@user/siracusa) siracusa |
2025-09-16 00:13:34 +0200 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 260 seconds) |
2025-09-16 00:15:00 +0200 | arandombit | (~arandombi@user/arandombit) arandombit |
2025-09-16 00:19:22 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 00:19:29 +0200 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 248 seconds) |
2025-09-16 00:19:31 +0200 | trickard_ | trickard |
2025-09-16 00:20:38 +0200 | arandombit | (~arandombi@user/arandombit) arandombit |
2025-09-16 00:21:21 +0200 | AndreiDuma | (~AndreiDum@user/AndreiDuma) (Ping timeout: 252 seconds) |
2025-09-16 00:21:42 +0200 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
2025-09-16 00:22:27 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) emmanuelux |
2025-09-16 00:24:38 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-09-16 00:25:09 +0200 | Alleria | (~Alleria@user/alleria) (Remote host closed the connection) |
2025-09-16 00:25:48 +0200 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 260 seconds) |
2025-09-16 00:25:48 +0200 | Alleria | (~Alleria@user/alleria) Alleria |
2025-09-16 00:26:27 +0200 | arandombit | (~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) |
2025-09-16 00:26:27 +0200 | arandombit | (~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) (Changing host) |
2025-09-16 00:26:27 +0200 | arandombit | (~arandombi@user/arandombit) arandombit |
2025-09-16 00:28:39 +0200 | acidjnk | (~acidjnk@p200300d6e717197300fd7e96ed6c05af.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2025-09-16 00:29:01 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 255 seconds) |
2025-09-16 00:30:38 +0200 | Googulator58 | Googulator |
2025-09-16 00:35:08 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 00:38:29 +0200 | rvalue- | (~rvalue@about/hackers/rvalue) rvalue |
2025-09-16 00:39:48 +0200 | rvalue | (~rvalue@about/hackers/rvalue) (Ping timeout: 256 seconds) |
2025-09-16 00:39:55 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-09-16 00:43:31 +0200 | califax | (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in) |
2025-09-16 00:43:50 +0200 | califax | (~califax@user/califx) califx |
2025-09-16 00:46:07 +0200 | arandombit | (~arandombi@user/arandombit) (Quit: arandombit) |
2025-09-16 00:47:21 +0200 | Guest9690 | (~ds@2a02:8071:884:db60:f6b3:1ff:fe2f:d0a) |
2025-09-16 00:47:49 +0200 | rvalue- | rvalue |
2025-09-16 00:49:10 +0200 | Lycurgus | (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
2025-09-16 00:50:39 +0200 | trickard | (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-09-16 00:50:51 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) |
2025-09-16 00:50:56 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 00:52:13 +0200 | Guest9690 | (~ds@2a02:8071:884:db60:f6b3:1ff:fe2f:d0a) (Client Quit) |
2025-09-16 00:55:36 +0200 | peterbecich | (~Thunderbi@syn-172-222-149-049.res.spectrum.com) peterbecich |
2025-09-16 00:55:52 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-09-16 00:56:22 +0200 | Guest6702 | (~ds@2a02:8071:884:db60:f6b3:1ff:fe2f:d0a) |
2025-09-16 01:05:08 +0200 | peterbecich | (~Thunderbi@syn-172-222-149-049.res.spectrum.com) (Ping timeout: 265 seconds) |
2025-09-16 01:06:15 +0200 | peterbecich | (~Thunderbi@syn-172-222-149-049.res.spectrum.com) peterbecich |
2025-09-16 01:06:43 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 01:07:29 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 248 seconds) |
2025-09-16 01:11:18 +0200 | Alleria | (~Alleria@user/alleria) (Ping timeout: 260 seconds) |
2025-09-16 01:11:46 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
2025-09-16 01:14:47 +0200 | sprotte24 | (~sprotte24@p200300d16f206a00f427621420b32ac2.dip0.t-ipconnect.de) (Quit: Leaving) |
2025-09-16 01:16:52 +0200 | Guest6702 | (~ds@2a02:8071:884:db60:f6b3:1ff:fe2f:d0a) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in) |
2025-09-16 01:17:44 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2025-09-16 01:19:56 +0200 | Alleria | (~Alleria@user/alleria) Alleria |
2025-09-16 01:20:12 +0200 | sajenim | (~sajenim@user/sajenim) (Ping timeout: 252 seconds) |
2025-09-16 01:21:40 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) (Remote host closed the connection) |
2025-09-16 01:21:56 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
2025-09-16 01:22:31 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 01:25:06 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2025-09-16 01:29:19 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
2025-09-16 01:40:33 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 01:41:30 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-09-16 01:41:44 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) |
2025-09-16 01:45:22 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-09-16 01:49:28 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-09-16 01:52:11 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) |
2025-09-16 01:52:22 +0200 | sajenim | (~sajenim@user/sajenim) sajenim |
2025-09-16 01:52:37 +0200 | trickard_ | trickard |
2025-09-16 01:56:21 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 01:58:15 +0200 | peterbecich | (~Thunderbi@syn-172-222-149-049.res.spectrum.com) (Ping timeout: 245 seconds) |
2025-09-16 02:01:29 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-09-16 02:10:59 +0200 | mange | (~mange@user/mange) mange |
2025-09-16 02:11:29 +0200 | Lycurgus | (~juan@user/Lycurgus) Lycurgus |
2025-09-16 02:11:50 +0200 | trickard | (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-09-16 02:12:04 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) |
2025-09-16 02:12:08 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 02:16:51 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-09-16 02:16:54 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-09-16 02:21:06 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2025-09-16 02:22:09 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) |
2025-09-16 02:27:57 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 02:33:25 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 02:42:35 +0200 | xff0x | (~xff0x@2405:6580:b080:900:8846:d27a:34b2:3e5) (Ping timeout: 248 seconds) |
2025-09-16 02:44:01 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 02:48:49 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-09-16 02:53:22 +0200 | StatisticalIndep | (~Statistic@2a02:3035:666:b7d5:4e00:1517:7b0c:d0aa) |
2025-09-16 02:59:50 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 03:06:56 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
2025-09-16 03:17:53 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 03:19:36 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 256 seconds) |
2025-09-16 03:22:10 +0200 | <StatisticalIndep> | Hi. Can someone help me with Hackage documentation. It is way too often that I come across an important library that is entirely undocumented in the sense of how it is meant to be used, and only documented as a reference. Making is impossible to figure out the intended use. … In some cases it just points to some research papers. I don’t want to |
2025-09-16 03:22:10 +0200 | <StatisticalIndep> | read a 50 page research paper. There should be a documentation of the intended use at the top of the page, no? … Am I missing something? Or is that just the current state of things? |
2025-09-16 03:22:26 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 03:23:00 +0200 | trickard_ | trickard |
2025-09-16 03:30:32 +0200 | <yin> | not unusual. you can usually guide yourself by the types and clicking functions to see their definition |
2025-09-16 03:30:55 +0200 | <yin> | the language facilitates this |
2025-09-16 03:31:50 +0200 | <yin> | but if you're finding documentation lacking, i'd suggest to move on to better documented library alternatives |
2025-09-16 03:31:59 +0200 | Alleria | (~Alleria@user/alleria) (Remote host closed the connection) |
2025-09-16 03:32:56 +0200 | Alleria | (~Alleria@user/alleria) Alleria |
2025-09-16 03:33:12 +0200 | <Lycurgus> | in the spectrum of langs where the code is supposed to be self documenting, aside from inline and decorative comments, haskell is closer to the smalltalk end |
2025-09-16 03:33:23 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 03:34:14 +0200 | <Lycurgus> | but libs have APIs and their sigs, the effective protocol implied can suffice |
2025-09-16 03:38:15 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-09-16 03:43:44 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 03:44:08 +0200 | Lycurgus | (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
2025-09-16 03:47:21 +0200 | berberman | (~berberman@user/berberman) (Quit: ZNC 1.10.1 - https://znc.in) |
2025-09-16 03:47:49 +0200 | jmcantrell_ | (~weechat@user/jmcantrell) jmcantrell |
2025-09-16 03:47:53 +0200 | jmcantrell_ | jmcantrell |
2025-09-16 03:48:29 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 03:49:05 +0200 | berberman | (~berberman@user/berberman) berberman |
2025-09-16 03:52:22 +0200 | tabaqui | (~tabaqui@167.71.80.236) tabaqui |
2025-09-16 03:52:39 +0200 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
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: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:55:37 +0200 | <geekosaur> | (exceptions to point (a), at least) |
2025-09-16 03:57:09 +0200 | OftenFaded | (~OftenFade@user/tisktisk) (Ping timeout: 250 seconds) |
2025-09-16 03:59:30 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
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 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> | identifiers, of course. ;) … |
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: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:04:18 +0200 | arandombit | (~arandombi@user/arandombit) arandombit |
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:27 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
2025-09-16 04:06:17 +0200 | poscat0x04 | (~poscat@user/poscat) poscat |
2025-09-16 04:07:41 +0200 | poscat | (~poscat@user/poscat) (Ping timeout: 244 seconds) |
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:11:49 +0200 | <StatisticalIndep> | that chunk. Making it hard, but possibly necessary to retain Haskell’s reliability guarantees? |
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:15:18 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
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:16:49 +0200 | <jackdk> | StatisticalIndep: a fine ultimate goal, but do you have a subgoal in-between? |
2025-09-16 04:16:53 +0200 | nschoe | (~nschoe@2a01:e0a:8e:a190:eb80:e362:f8e1:aa2f) (Quit: ZNC 1.8.2 - https://znc.in) |
2025-09-16 04:17:10 +0200 | nschoe | (~nschoe@82-65-202-30.subs.proxad.net) nschoe |
2025-09-16 04:20:01 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-09-16 04:21:55 +0200 | Alleria | (~Alleria@user/alleria) (Quit: Textual IRC Client: www.textualapp.com) |
2025-09-16 04:31:06 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 04:36:05 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 04:38:02 +0200 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 260 seconds) |
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: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:43:49 +0200 | <StatisticalIndep> | System.IO.MMap looks pretty good, btw. If only there was no marshalling. |
2025-09-16 04:45:10 +0200 | arandombit | (~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) |
2025-09-16 04:45:10 +0200 | arandombit | (~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) (Changing host) |
2025-09-16 04:45:10 +0200 | arandombit | (~arandombi@user/arandombit) arandombit |
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:46:31 +0200 | <StatisticalIndep> | jackdk: Thanks a lot! |
2025-09-16 04:46:53 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
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: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:50:15 +0200 | <StatisticalIndep> | geekosaur: Yes, that’s probably my core pet peeve with how Haskell in implemented. It makes interoperation hard. But I get why it was chosen. The whole point was that all types should be checked at compile time, not at runtime. (Hence also things like dynamic libraries and variants with types that aren’t know at compile time yet, being hard or |
2025-09-16 04:50:15 +0200 | <StatisticalIndep> | impossible.) |
2025-09-16 04:51:37 +0200 | <geekosaur> | not only that, but Haskell's implementation of types allows for laziness in the form of thunks, which wouldn't be meaningful to non-Haskell code (a "value" can be a Haskell function that computes the value when demanded) |
2025-09-16 04:51:38 +0200 | <StatisticalIndep> | geekosaur: That was what I needed to hear btw: Marshalling is needed in _any_ case. Because the values don’t have type info attached to them and it’s not that simple anyway within Haskell. :) |
2025-09-16 04:51:43 +0200 | <StatisticalIndep> | Yup. |
2025-09-16 04:52:01 +0200 | <geekosaur> | which also requires that everything live in Haskell's heap and non-Haskell code not have access to that heap |
2025-09-16 04:52:09 +0200 | <StatisticalIndep> | And after all, those are all things I came to Haskell for, because I liked them. So now I have to live with it.:D |
2025-09-16 04:52:47 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
2025-09-16 04:53:31 +0200 | <StatisticalIndep> | Internally though, the fully evaluated values are of course just normal pointers and words and such, right? Just boxed in boxed boxes that are boxed more than the boss on boxyourboss.com was. ;) |
2025-09-16 04:53:42 +0200 | <geekosaur> | actually I don't see how "doesn't have type information" is related. it's not like C values do |
2025-09-16 04:53:58 +0200 | <StatisticalIndep> | OK, true. |
2025-09-16 04:54:39 +0200 | <geekosaur> | they are… until ADTs get involved. (what representation do you expect a Data.Map to have?) |
2025-09-16 04:54:58 +0200 | <StatisticalIndep> | I guess my mindset came from having seen diagrams of how GHC stores data in memory. Like how lists are linked lists of boxed values. Lots more pointers than one would think. |
2025-09-16 04:54:59 +0200 | <geekosaur> | *Data.Map.Map |
2025-09-16 04:55:22 +0200 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 256 seconds) |
2025-09-16 04:55:56 +0200 | <geekosaur> | right, and all those pointers introduce places where a value could be computed lazily |
2025-09-16 04:56:28 +0200 | <geekosaur> | (if you don't have optimization enabled, even the strict values have them, but optimization unboxes whenever possible) |
2025-09-16 04:58:26 +0200 | <StatisticalIndep> | I probably expect a Map to internally be stored as an array of pointers, with pointers to keys and to values being interleaved? Or something a bit smarter with fewer pointers. ;) |
2025-09-16 04:58:38 +0200 | StatisticalIndep | (~Statistic@2a02:3035:666:b7d5:4e00:1517:7b0c:d0aa) (Quit: Client closed) |
2025-09-16 04:58:50 +0200 | StatisticalIndep | (~Statistic@2a02:3035:666:b7d5:4e00:1517:7b0c:d0aa) |
2025-09-16 04:59:35 +0200 | <geekosaur> | Maps are actually more complex than that: "The implementation of Map is based on size balanced binary trees (or trees of bounded balance)" (from the documentation) |
2025-09-16 04:59:48 +0200 | <StatisticalIndep> | Ah, yes, i remembered something like that! |
2025-09-16 05:00:55 +0200 | <geekosaur> | which is another reason you must marshal/unmarshal, because it's asking far too much for other languages to have to figure out how Map is a size-balanced binary tree or Seq is a fingertree, etc. |
2025-09-16 05:01:15 +0200 | <StatisticalIndep> | Yep. |
2025-09-16 05:01:51 +0200 | <hololeap> | makes sense that Map is a binary tree, given the (Ord k) constraint on most operations |
2025-09-16 05:03:14 +0200 | <StatisticalIndep> | I just wish I could tell Haskell: to point every pointer to an Int, in e.g. a fixey list of Ints, to a pointer location in a block of mmapped data that contains unboxed ints in exactly the same format as GHC expects them. |
2025-09-16 05:03:56 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 05:04:08 +0200 | <geekosaur> | hypothetically could be done. would really complicate GC, though |
2025-09-16 05:04:25 +0200 | arandombit | (~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) |
2025-09-16 05:04:25 +0200 | arandombit | (~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) (Changing host) |
2025-09-16 05:04:25 +0200 | arandombit | (~arandombi@user/arandombit) arandombit |
2025-09-16 05:04:28 +0200 | <geekosaur> | and probably make it a lot more expensive, if it has to check if every pointer actually lives in the heap or not |
2025-09-16 05:04:31 +0200 | <StatisticalIndep> | hololeap: It also makes sense from a standpoint of variables being constants in Haskell, and there hence being no such thing as an “insertion”. (The tree has to be reconstructed from the zipper instead.) |
2025-09-16 05:05:50 +0200 | <StatisticalIndep> | geekosaur: Oh, I forgot about GC. Okay, that seals the deal. All those features are more valuable than having that bit of non-marshalled mapping elegance. |
2025-09-16 05:07:21 +0200 | <geekosaur> | we do actually have such a thing as pinned memory, but it's only applicable to ByteArray# and it's handled via an exception list (and I seem to recall hearing of programs that heavily use ByteStrings getting slow because the exception list isn't very efficient?) |
2025-09-16 05:08:33 +0200 | <geekosaur> | GC assumes pinned memory is an exception, not the rule |
2025-09-16 05:08:40 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
2025-09-16 05:10:38 +0200 | aforemny | (~aforemny@2001:9e8:6cce:4800:55ab:c43e:17dc:ff6c) aforemny |
2025-09-16 05:11:14 +0200 | aforemny_ | (~aforemny@i59F4C711.versanet.de) (Ping timeout: 256 seconds) |
2025-09-16 05:13:13 +0200 | <hololeap> | made me remember this: https://www.channable.com/tech/lessons-in-managing-haskell-memory |
2025-09-16 05:16:56 +0200 | <StatisticalIndep> | In any case, (mmapWithFilePtr "mm" ReadWrite Nothing $ \ (p, _) -> sequence_ $ zipWith (\ c i -> poke (plusPtr p i) c) "ME GO TOO FAR!" [0..]) works nicely enough. ;) (Yes, I know this will break with multi-byte chars.) |
2025-09-16 05:19:43 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 05:22:12 +0200 | dtman34 | (~dtman34@c-73-242-68-179.hsd1.mn.comcast.net) dtman34 |
2025-09-16 05:24:50 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 05:25:22 +0200 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Remote host closed the connection) |
2025-09-16 05:32:13 +0200 | <StatisticalIndep> | hololeap: Wow, they practically went to managing their memory manually, but with the GC becoming more of a problem than a use. So as if one would write it in C, but with a GC ghost attacking at night and reaping souls. XD … Yeah, definitely not the route I want to go. XD |
2025-09-16 05:35:55 +0200 | <hololeap> | it's cool they got it working as well as they did, but yeah, it seems like it was a huge hassle |
2025-09-16 05:37:07 +0200 | <hololeap> | geekosaur: do compact regions only work with ByteArray# |
2025-09-16 05:37:29 +0200 | <geekosaur> | they work with anything but they're again special-cased |
2025-09-16 05:38:08 +0200 | <geekosaur> | and the nature of that special casing is why they have so many restrictions, so they don't mess up GC too much (since the whole point of them is to get stuff out of GC's mitts) |
2025-09-16 05:39:05 +0200 | <geekosaur> | in particular, once a pointer is found to point into a compact region, it's immediately dropped from consideration |
2025-09-16 05:39:22 +0200 | <hololeap> | do they work with IORefs? |
2025-09-16 05:39:31 +0200 | <geekosaur> | not usefully |
2025-09-16 05:39:46 +0200 | <geekosaur> | I mean, they "do" but the contents of the IORef must also be in the same compact region |
2025-09-16 05:39:57 +0200 | <geekosaur> | which makes them effectively immmutable |
2025-09-16 05:40:06 +0200 | <hololeap> | I see |
2025-09-16 05:40:17 +0200 | <hololeap> | that makes sense |
2025-09-16 05:44:44 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 05:45:03 +0200 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 240 seconds) |
2025-09-16 05:45:06 +0200 | meinside | (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2025-09-16 05:48:18 +0200 | <StatisticalIndep> | I wonder if it’s possible to be very cheeky, and point a … uuum… completely unrelated (I swear) pointer to that same compact region, and write different values into variables, without telling the runtime. :D |
2025-09-16 05:48:18 +0200 | <hololeap> | I recently discovered the Haskell Interlude podcast |
2025-09-16 05:49:15 +0200 | <hololeap> | I'd never typed "haskell" into the search bar for podcasts before that |
2025-09-16 05:49:32 +0200 | <jreicher> | StatisticalIndep: you want to go behind the back of the runtime providing you the safety that draws you to it in the first place? (Or have I misunderstood?) |
2025-09-16 05:49:46 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 05:49:59 +0200 | peterbecich | (~Thunderbi@syn-172-222-149-049.res.spectrum.com) peterbecich |
2025-09-16 05:51:15 +0200 | <hololeap> | I haven't read all the backlog but it sounds like StatisticalIndep is using another lang via FFI |
2025-09-16 05:51:47 +0200 | <geekosaur> | StatisticalIndep, you could do that but don't be surprised if "unrelated" things change their values also |
2025-09-16 05:51:51 +0200 | <StatisticalIndep> | hololeap: Maybe you can answer a question I had for some time: Why do people listen to podcasts? Like live streams, they take such a *huge* amount of time, and are extremely verbose. At least that was my experience. I would like to understand the point of view of people who listen to them, because there must be a reason for them, that I am not |
2025-09-16 05:51:51 +0200 | <StatisticalIndep> | seeing from my POV. |
2025-09-16 05:51:52 +0200 | <geekosaur> | sharing's a thing |
2025-09-16 05:52:19 +0200 | <geekosaur> | you can listen to a podcast while driving without taking your eyes from the road |
2025-09-16 05:52:56 +0200 | <geekosaur> | (I should note that I don't listen to podcasts either. And didn't do what I just suggested, because driving has always been difficult for me due to sensory issues_ |
2025-09-16 05:52:58 +0200 | <hololeap> | yeah you can listen while doing things that require your focus outside a computer |
2025-09-16 05:52:59 +0200 | <geekosaur> | ) |
2025-09-16 05:53:21 +0200 | <hololeap> | that is 100% why I listen to podcasts |
2025-09-16 05:53:32 +0200 | <StatisticalIndep> | jreicher: You seem to take it seriously. :) … It’s more of a “Hey, what’s the craziest thing we can do?”. Like the inline-asm package. XD |
2025-09-16 05:54:36 +0200 | <jreicher> | There was a perl6 implementation written in Haskell. You could reverse that. |
2025-09-16 05:54:46 +0200 | <geekosaur> | my pet peeve is youtube videos as the only way to learn about something, but that's in large part due to those sensory issues as well |
2025-09-16 05:55:03 +0200 | <hololeap> | when you're working on a menial job you can keep your mind from getting bored. I also sometimes re-listen to a podcast if I spaced out or didn't understand something |
2025-09-16 05:55:11 +0200 | <StatisticalIndep> | hololeap: No, I’m only using Haskell. But I wanted to try to code a small libraries for transparently persistent values. Similar to IORef, but for on-disk data at a position in a file. |
2025-09-16 05:55:41 +0200 | <hololeap> | oh, then I misunderstood |
2025-09-16 05:56:06 +0200 | trickard | (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-09-16 05:56:19 +0200 | trickard_ | (~trickard@cpe-56-98-47-163.wireline.com.au) |
2025-09-16 05:56:31 +0200 | <hololeap> | I just assumed but I didn't read all the backlog |
2025-09-16 05:56:43 +0200 | <StatisticalIndep> | geekosaur: Okay, I was never able to do that. My attention is quite intense. So anything on the side completely takes away my ability to concentrate on the task at hand. If you talk to me in the car that I drive, I hope you have your bones numbered. XD |
2025-09-16 05:57:08 +0200 | <geekosaur> | we understand each other, if for different reasons |
2025-09-16 05:57:54 +0200 | <geekosaur> | (I once pissed off my boss by throwing my cellphone on the floor because I couldn't focus on traffic and his questions at the same time) |
2025-09-16 05:59:04 +0200 | <hololeap> | it actually helps my mind to have something physical to do, and I remember the contents of the podcast better if I'm working on something else |
2025-09-16 05:59:55 +0200 | <hololeap> | but we are different people :) |
2025-09-16 06:00:07 +0200 | <StatisticalIndep> | geekosaur: Yes, videos have a massive flaw: They have zero semantic structure and a fixed speed. Unlike text, that has words and sentences and paragraphs and chapters, and where you have basically a gas pedal and can read at any speed, jump back and re-read the last n words multiple times quickly, slow down and ponder, etc … I thought maybe |
2025-09-16 06:00:07 +0200 | <StatisticalIndep> | I’d develop a semantic video format. Because the structure can be automatically retrieved from the pauses in speech. (Unless it’s one of those insane editors that cut out the pauses between sentences, making it jarring to listen to.) |
2025-09-16 06:00:35 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 06:01:34 +0200 | <geekosaur> | sometimes they're necessary though. I had to watch some videos to do a couple of laptop upgrades, and text just wouldn't have provided the detail of how I needed to get at various parts without breaking things |
2025-09-16 06:01:46 +0200 | <geekosaur> | which didn't mean it was easy for me |
2025-09-16 06:02:19 +0200 | <hololeap> | I honestly wondered why online videos aren't more multiplexed. you could have a separate audio track for background music, for instance, if a video has it and you want to mute it |
2025-09-16 06:02:49 +0200 | <geekosaur> | especially when the parts I most needed to see to keep from breaking my laptop were the things I had the most trouble focusing on |
2025-09-16 06:02:50 +0200 | <StatisticalIndep> | geekosaur: I just had to buy a new phone because I finally broke it. I counted, and I have over a dozen dents in my plastered brick wall from that phone. The screen wasn’t even broken! What broke was the metal shielding under the polycarbonate-overmolded aluminium denting in and probably damaging and shorting a component below. It was built like |
2025-09-16 06:02:50 +0200 | <StatisticalIndep> | a Nokia. :D |
2025-09-16 06:03:56 +0200 | <StatisticalIndep> | Yes, for bicycle repair or origami, videos are great. I just want there to be an image or sound equivalent of text. |
2025-09-16 06:05:38 +0200 | peterbecich | (~Thunderbi@syn-172-222-149-049.res.spectrum.com) (Ping timeout: 256 seconds) |
2025-09-16 06:07:18 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-09-16 06:07:24 +0200 | <StatisticalIndep> | hololeap: The reason is that not only is it much more work, but the file gets much bigger too. Not that it is relevant on YouTube, where the streams are separate anyway. But yes, all I know it being used for is channels with tracks in multiple languages, and that subtitle magic that Tom Scott did (yes, YT allows having the subtitles be colored |
2025-09-16 06:07:25 +0200 | <StatisticalIndep> | differently for different speakers!) |
2025-09-16 06:10:55 +0200 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2025-09-16 06:13:47 +0200 | <hololeap> | it's actually less work because the software wouldn't have to mix the music in with the voice. it could just copy the stream to the container. it would be a heavier file size, though |
2025-09-16 06:15:15 +0200 | PKDrinker | (~PKDrinker@user/PKDrinker) PKDrinker |
2025-09-16 06:16:54 +0200 | <hololeap> | I've seen mkv files with multiple audio streams, one for a particular language :) |
2025-09-16 06:18:26 +0200 | <hololeap> | sorry, you just said that. didn't read carefully enough :( |
2025-09-16 06:18:38 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 06:19:08 +0200 | <StatisticalIndep> | hololeap: Okay, yes, seen like that, it is less work. But you could not mix it properly. The volumes need to be different, depending on what other track is active too. Sure, you can use automatic normalization, but any musician or soundscape designer will tear you a new one for trying to disrespect his artistic vision like that. XD |
2025-09-16 06:19:35 +0200 | <StatisticalIndep> | It’s OK. I didn’t notice anyway. ;) |
2025-09-16 06:20:39 +0200 | <hololeap> | disrespecting the gain? I think that should be under the user's control :) |
2025-09-16 06:20:42 +0200 | <StatisticalIndep> | hololeap: Did you even play Quake 3 Defrag? Back in the days, the best trickjumping videos came from Shaolin Productions, and they had multiple entire audio tracks inside them, depending on what style of music you preferred. |
2025-09-16 06:22:04 +0200 | <hololeap> | most games let you adjust the sound via effects, music, and voice channels. that's where I got the idea from |
2025-09-16 06:23:05 +0200 | Lycurgus | (~juan@user/Lycurgus) Lycurgus |
2025-09-16 06:23:07 +0200 | <StatisticalIndep> | Not the gain. The gain relative to each other. Like, when there is background music and speech, the music needs to be more quiet when somebody speaks, but not, if the speech track is muted. Similarly, the speech track actually can have more background noises in the “silence” parts, when there is no background music. (E.g. modern cellphones even |
2025-09-16 06:23:07 +0200 | <StatisticalIndep> | have a “comfort noise” function, where non-transmitted silent bits are replaced by procedurally generated quiet noise, so it doesn’t sound like the connection was lost.) |
2025-09-16 06:23:24 +0200 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 260 seconds) |
2025-09-16 06:23:46 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 06:24:54 +0200 | arandombit | (~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) |
2025-09-16 06:24:54 +0200 | arandombit | (~arandombi@2603:7000:4600:ffbe:21ee:ceac:8353:7a15) (Changing host) |
2025-09-16 06:24:54 +0200 | arandombit | (~arandombi@user/arandombit) arandombit |
2025-09-16 06:25:19 +0200 | <Lycurgus> | force sensitives can tell a dropped link |
2025-09-16 06:26:09 +0200 | PKDrinker | (~PKDrinker@user/PKDrinker) (Ping timeout: 250 seconds) |
2025-09-16 06:27:02 +0200 | PKDrinker | (~PKDrinker@user/PKDrinker) PKDrinker |
2025-09-16 06:28:27 +0200 | PKDrinker | (~PKDrinker@user/PKDrinker) (Remote host closed the connection) |
2025-09-16 06:28:40 +0200 | takuan | (~takuan@d8D86B9E9.access.telenet.be) |
2025-09-16 06:28:42 +0200 | <hololeap> | I usually turn on some kind of compression when I watch a movie. the dynamics are way too much for a normal TV. I end up turning up the volume during a dialog, and turning it down during action scenes. though, you're right that it's not a problem of bad balance between the different tracks. I see your point |
2025-09-16 06:28:47 +0200 | PKDrinker | (~PKDrinker@user/PKDrinker) PKDrinker |
2025-09-16 06:29:26 +0200 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 256 seconds) |
2025-09-16 06:29:52 +0200 | <StatisticalIndep> | I can too. The comfort noise doesn’t sound the same. It’s too bland. And not in the context of the current place the speaker is in. (The impulse response is missing.) But nowadays, phones have multiple microphones and filter out noise anyway. |
2025-09-16 06:30:15 +0200 | <StatisticalIndep> | Btw, we’re quite off-topic now. This should go on #haskell-offtpic, no? ;) |
2025-09-16 06:30:40 +0200 | <hololeap> | lol, yeah we are OT |
2025-09-16 06:30:45 +0200 | arandombit | (~arandombi@user/arandombit) arandombit |
2025-09-16 06:30:53 +0200 | <hololeap> | I didn't have much else to say about it though ;) |
2025-09-16 06:31:44 +0200 | marinelli | (~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection) |
2025-09-16 06:32:08 +0200 | marinelli | (~weechat@gateway/tor-sasl/marinelli) marinelli |
2025-09-16 06:32:28 +0200 | <StatisticalIndep> | It’s night here anyway. And I suspect much of the #haskell community is probably in a time zone close to Glasgow, or the like. ;) |
2025-09-16 06:33:14 +0200 | <hololeap> | there's an American crowd and a European crowd, then the weirdos :p |
2025-09-16 06:33:32 +0200 | <hololeap> | but yeah it's late here for me |
2025-09-16 06:34:25 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 06:35:43 +0200 | <StatisticalIndep> | But I am a European weirdo! XD |
2025-09-16 06:37:11 +0200 | <hololeap> | I recommend #gentoo-chat, which I see you're already in :) lots of weirdos in there... |
2025-09-16 06:38:07 +0200 | haritz | (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in) |
2025-09-16 06:39:36 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
2025-09-16 06:39:39 +0200 | marinelli | (~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli) |
2025-09-16 06:43:30 +0200 | peterbecich | (~Thunderbi@syn-172-222-149-049.res.spectrum.com) peterbecich |
2025-09-16 06:45:43 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 06:47:39 +0200 | <StatisticalIndep> | Teal’c: Indeed! |
2025-09-16 06:49:07 +0200 | <StatisticalIndep> | I’m more of a #write-my-own-Plan-9-inspired-OS kinda guy though. XD |
2025-09-16 06:50:57 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-09-16 06:51:36 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
2025-09-16 06:58:27 +0200 | StatisticalIndep | (~Statistic@2a02:3035:666:b7d5:4e00:1517:7b0c:d0aa) (Quit: Client closed) |
2025-09-16 06:58:39 +0200 | StatisticalIndep | (~Statistic@2a02:3035:666:b7d5:4e00:1517:7b0c:d0aa) |
2025-09-16 07:01:33 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-09-16 07:06:34 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-09-16 07:08:17 +0200 | PKDrinker | (~PKDrinker@user/PKDrinker) (Remote host closed the connection) |
2025-09-16 07:08:22 +0200 | michalz | (~michalz@185.246.207.221) |
2025-09-16 07:08:39 +0200 | PKDrinker | (~PKDrinker@user/PKDrinker) PKDrinker |
2025-09-16 07:08:40 +0200 | PKDrinker | (~PKDrinker@user/PKDrinker) (Remote host closed the connection) |
2025-09-16 07:08:51 +0200 | Lycurgus | (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |