Newest at the top
| 2026-01-25 22:29:21 +0100 | <[exa]> | not really, there's helpers to avoid that |
| 2026-01-25 22:29:03 +0100 | <tomsmeding> | doesn't aeson always allow it if there's more stuff than expected? |
| 2026-01-25 22:28:33 +0100 | <[exa]> | ref: https://hackage.haskell.org/package/aeson-2.2.3.0/docs/src/Data.Aeson.Types.FromJSON.html#line-1672 |
| 2026-01-25 22:28:23 +0100 | <[exa]> | is there some philosophical reason for instance FromJSON () to always succeed? I'd kinda expect it should match a `null` or `[]` or something and scream if there's actual data |
| 2026-01-25 22:16:36 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds) |
| 2026-01-25 22:15:51 +0100 | Beowulf | (florian@2a01:4f9:3b:2d56::2) |
| 2026-01-25 22:14:57 +0100 | <tomsmeding> | but thank you, that looks better than the 2018-era packages I was finding |
| 2026-01-25 22:14:28 +0100 | myxos | (~myxos@174-18-58-141.tcso.qwest.net) myxokephale |
| 2026-01-25 22:13:51 +0100 | <geekosaur> | tbh I use flora these days |
| 2026-01-25 22:13:29 +0100 | <tomsmeding> | why am I not getting that when I search for "notify" on hackage |
| 2026-01-25 22:13:12 +0100 | <[exa]> | tomsmeding: ghcid uses `fsnotify` and it was ok iirc |
| 2026-01-25 22:13:06 +0100 | <geekosaur> | the usual is fsnotify, I think |
| 2026-01-25 22:11:44 +0100 | <tomsmeding> | does anyone have a recommendation for a package for filesystem events |
| 2026-01-25 22:10:53 +0100 | myxos | (~myxos@174-18-58-141.tcso.qwest.net) (Remote host closed the connection) |
| 2026-01-25 22:09:57 +0100 | <[exa]> | oh wow the magic numbers actually googled |
| 2026-01-25 22:08:03 +0100 | <[exa]> | I found it in some very old source with a comment that it's very good indeed |
| 2026-01-25 22:07:50 +0100 | <[exa]> | hsh x seed = seed `xor` (x * 2654435761 + 2654435769 + (shiftL seed 6) + (shiftR seed 2)) |
| 2026-01-25 22:07:48 +0100 | <[exa]> | btw kinda related to the above, does anyone recognize what kind of hash is this: |
| 2026-01-25 22:05:16 +0100 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
| 2026-01-25 21:56:43 +0100 | wickedja` | (~user@2605:8d80:5431:62ef:ec3f:86f3:7664:49eb) (Remote host closed the connection) |
| 2026-01-25 21:36:58 +0100 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) (Client Quit) |
| 2026-01-25 21:36:10 +0100 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) humasect |
| 2026-01-25 21:34:03 +0100 | <[exa]> | cool. |
| 2026-01-25 21:33:56 +0100 | <[exa]> | hashable internally has some XXH3 or what |
| 2026-01-25 21:32:39 +0100 | <tomsmeding> | the proxy is ugly but it works |
| 2026-01-25 21:32:21 +0100 | <tomsmeding> | class BaseHash base where { baseHash :: proxy base -> ByteString -> Int }; class BaseHash base => AnyHashable base a where { hash :: proxy base -> a -> Int } |
| 2026-01-25 21:31:28 +0100 | <[exa]> | if I package it, the generality is gonna kill it :D :D |
| 2026-01-25 21:31:23 +0100 | <tomsmeding> | there's actually a way to make the typeclass generic over the underlying hash implementation |
| 2026-01-25 21:31:17 +0100 | <[exa]> | nah I have like 10 types, that's 10 functions |
| 2026-01-25 21:30:59 +0100 | <tomsmeding> | and then package it up :) |
| 2026-01-25 21:30:53 +0100 | <[exa]> | okay good that sounds like time to roll it |
| 2026-01-25 21:29:54 +0100 | <geekosaur> | to ensure core data structures don't get changed unnecessarily and cause downstream breakage |
| 2026-01-25 21:29:42 +0100 | <tomsmeding> | [exa]: roll it yourself? How many types do you need |
| 2026-01-25 21:29:26 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
| 2026-01-25 21:29:15 +0100 | <geekosaur> | hm, actually the cabal one is probably unsuitable though: it doesn't hash values, it specifically hashes structure |
| 2026-01-25 21:29:14 +0100 | <tomsmeding> | _and_ underengineered, it doesn't have many instances I think |
| 2026-01-25 21:29:05 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
| 2026-01-25 21:28:52 +0100 | wickedjargon | (~user@24.83.46.194) (Ping timeout: 244 seconds) |
| 2026-01-25 21:28:50 +0100 | <tomsmeding> | take the cabal one if you copy one of those, the accelerate thing is overengineered |
| 2026-01-25 21:28:29 +0100 | [exa] | prepares ctrl+c |
| 2026-01-25 21:28:17 +0100 | <tomsmeding> | same in Accelerate :p |
| 2026-01-25 21:27:14 +0100 | wickedja` | (~user@2605:8d80:5431:62ef:ec3f:86f3:7664:49eb) |
| 2026-01-25 21:26:32 +0100 | <geekosaur> | cabal has something internally for that, but it's not packaged. (uses Generic to hash ADTs) |
| 2026-01-25 21:26:07 +0100 | <[exa]> | I ideally want AnyStableHashable a => a -> Hash |
| 2026-01-25 21:25:52 +0100 | <[exa]> | xxhash is ByteString -> Hash |
| 2026-01-25 21:25:43 +0100 | <tomsmeding> | one of the hashes that have been given names |
| 2026-01-25 21:25:36 +0100 | <tomsmeding> | or murmur |
| 2026-01-25 21:25:31 +0100 | <tomsmeding> | [exa]: perhaps search for something like siphash or xxhash? |
| 2026-01-25 21:25:29 +0100 | <geekosaur> | yeh, Hashable's not designed for that use case in much of any sense |
| 2026-01-25 21:25:10 +0100 | <[exa]> | but essentially I want the hashmap to be out of memory and preferably shared between computers, where Hashable seems to fail |