2026/06/15

Newest at the top

2026-06-15 22:26:53 +0000__monty__(~toonn@user/toonn) (Quit: leaving)
2026-06-15 22:25:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-06-15 22:22:49 +0000 <EvanR> smh
2026-06-15 22:22:37 +0000 <EvanR> even well behaved float math ends up wrong
2026-06-15 22:22:04 +0000Sgeo(~Sgeo@user/sgeo) Sgeo
2026-06-15 22:21:54 +0000 <lambdabot> False
2026-06-15 22:21:52 +0000 <probie> > 2.0^53 + 1 + 1 == 2.0^53 + 2
2026-06-15 22:21:37 +0000 <probie> The downside is that if you add two half bits, you don't get a bit, because no information + no information doesn't gives you information, but that's nothing new
2026-06-15 22:20:51 +0000 <EvanR> a byte has 256 values so a half byte has 128 values?
2026-06-15 22:20:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-15 22:20:08 +0000 <probie> A bit has two values, so half a bit only has one value, and there for contains no information, so (9/2) bits = 4.5 bits = 4 bits
2026-06-15 22:19:29 +0000 <EvanR> o_O
2026-06-15 22:19:20 +0000 <probie> 4 or 3 bits
2026-06-15 22:19:01 +0000 <EvanR> what's a half-byte when byte = 9bits or 7bits
2026-06-15 22:18:29 +0000 <probie> How about a compromise. We can call it a half-bite and then absolutely everyone is equally unhappy
2026-06-15 22:17:45 +0000 <int-e> Well Wikipedia is wrong here (authority: mine) ;-)
2026-06-15 22:17:07 +0000 <EvanR> must use upsilon to make it clear what we're doing
2026-06-15 22:16:45 +0000 <EvanR> crumb -> crυmb
2026-06-15 22:16:15 +0000 <probie> I was taught it as "nibble", and wikipedia also seems to prefer nibble over nybble https://en.wikipedia.org/wiki/Nibble
2026-06-15 22:16:05 +0000 <geekosaur> right, that
2026-06-15 22:16:03 +0000 <int-e> that's what I've been saying
2026-06-15 22:15:52 +0000 <geekosaur> isn't it "nybble" anyway?)
2026-06-15 22:14:52 +0000 <int-e> (I'll always read "nibble" as the verb first. Sure, I can auto-correct but it's an extra step :P)
2026-06-15 22:14:02 +0000 <EvanR> y for the short i sound, egregious
2026-06-15 22:13:31 +0000 <int-e> nybble : nibble :: byte : bite
2026-06-15 22:12:59 +0000 <EvanR> array of nibbles at least won't require any real parsing using 8bit bytes
2026-06-15 22:12:56 +0000 <probie> The need for Storable is because I'm interacting with foreign code, but I think from the Haskell side, just treating it as a Vector Word8 is what I'm going to do
2026-06-15 22:12:53 +0000 <geekosaur> (the PDP11/VAX11 used bytes, but various others used 9, 18, 36, etc. bits. PDP10s' CPUs had 3-bit sub-register addressing, even)
2026-06-15 22:11:58 +0000 <int-e> probie: Though the conclusion would still be that `Storable` isn't the right abstraction. Working with Vector Word8 and having your own adapter around it is compatible with that claim.
2026-06-15 22:11:51 +0000 <geekosaur> well, these days it's not like it's relevant unless someone has an old DEC mini or mainframe in storage or something
2026-06-15 22:11:13 +0000 <EvanR> .oO( how would you distinguish bytes and octets like that in french ... )
2026-06-15 22:10:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-06-15 22:10:06 +0000 <geekosaur> anything that isn't based on the fundamental unit for the storage medium (bytes for memory on pretty much everything these days, octets for network streams and disks, etc.) requires extra work
2026-06-15 22:09:51 +0000CiaoSen(~Jura@dynamic-046-114-167-087.46.114.pool.telefonica.de) CiaoSen
2026-06-15 22:09:39 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod
2026-06-15 22:09:19 +0000 <int-e> I can't read. I skipped the "Data.Vector" part :-/
2026-06-15 22:09:03 +0000 <int-e> Ohh
2026-06-15 22:08:38 +0000 <int-e> probie: Ah, so you're not doing this for marshalling then.
2026-06-15 22:08:34 +0000 <geekosaur> which is the fundamental problem
2026-06-15 22:07:37 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 248 seconds)
2026-06-15 22:07:34 +0000 <geekosaur> the streams they operate on are octet based, so "yes". anything else must be done by, essentially, parsing
2026-06-15 22:07:14 +0000 <probie> int-e: That actually gave me a genius idea; I can have a Vector Word8, and just abuse pattern synonyms
2026-06-15 22:05:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-15 22:04:56 +0000 <int-e> geekosaur: aren't those still byte based though?
2026-06-15 22:04:40 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-15 22:03:47 +0000vms14(~vms14@user/vms14) vms14
2026-06-15 22:03:33 +0000 <geekosaur> I think you're supposed to use binary/cereal or attoparsec for this kind of thing
2026-06-15 21:59:36 +0000 <int-e> s/Storable types/Storable instances/
2026-06-15 21:59:21 +0000 <int-e> probie: Oh I guess you can do something awful (from a usability perspective): Have HighNybble and LowNybble types with Storable types that only access the low/high 4 bits of a byte.
2026-06-15 21:55:40 +0000 <lambdabot> GHC.Internal.Ptr.Ptr a -> GHC.Internal.Ptr.Ptr b