Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,799,737 events total
2026-01-25 17:46:28 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
2026-01-25 17:50:18 Lycurgus joins (~juan@user/Lycurgus)
2026-01-25 17:58:06 × qqq quits (~qqq@185.54.21.105) (Remote host closed the connection)
2026-01-25 18:13:29 ss4 joins (~wootehfoo@user/wootehfoot)
2026-01-25 18:14:23 divlamir_ joins (~divlamir@user/divlamir)
2026-01-25 18:15:31 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 246 seconds)
2026-01-25 18:16:11 × divlamir quits (~divlamir@user/divlamir) (Ping timeout: 244 seconds)
2026-01-25 18:16:11 divlamir_ is now known as divlamir
2026-01-25 18:18:31 qqq joins (~qqq@185.54.21.105)
2026-01-25 18:26:43 × Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
2026-01-25 18:29:37 fp joins (~Thunderbi@89-27-10-140.bb.dnainternet.fi)
2026-01-25 18:32:11 trickard_ is now known as trickard
2026-01-25 18:38:05 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
2026-01-25 18:54:39 × qqq quits (~qqq@185.54.21.105) (Quit: Lost terminal)
2026-01-25 18:55:11 × ouilemur quits (~jgmerritt@user/ouilemur) (Quit: WeeChat 4.8.1)
2026-01-25 18:59:11 ouilemur joins (~jgmerritt@user/ouilemur)
2026-01-25 19:05:34 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
2026-01-25 19:06:04 DetourNetworkUK joins (DetourNetw@user/DetourNetworkUK)
2026-01-25 19:06:51 jmcantrell_ joins (~weechat@user/jmcantrell)
2026-01-25 19:10:25 × Beowulf quits (florian@2a01:4f9:3b:2d56::2) (Remote host closed the connection)
2026-01-25 19:14:35 euphores joins (~SASL_euph@user/euphores)
2026-01-25 19:15:24 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 260 seconds)
2026-01-25 19:16:03 wickedjargon joins (~user@24.83.46.194)
2026-01-25 19:16:12 arandombit joins (~arandombi@user/arandombit)
2026-01-25 19:20:43 × driib3180 quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
2026-01-25 19:21:48 × arahael quits (~wetfoot@user/arahael) (Ping timeout: 244 seconds)
2026-01-25 19:22:59 arahael joins (~wetfoot@user/arahael)
2026-01-25 19:24:41 driib3180 joins (~driib@vmi931078.contaboserver.net)
2026-01-25 19:32:30 × Pozyomka quits (~pyon@user/pyon) (Ping timeout: 252 seconds)
2026-01-25 19:41:08 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
2026-01-25 19:41:24 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2026-01-25 19:42:28 Lord_of_Life_ is now known as Lord_of_Life
2026-01-25 19:49:13 × fp quits (~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 264 seconds)
2026-01-25 19:53:47 peterbecich joins (~Thunderbi@71.84.33.135)
2026-01-25 20:05:12 × ethantwardy quits (~user@user/ethantwardy) (Ping timeout: 244 seconds)
2026-01-25 20:18:08 × tessier quits (~tessier@ip68-8-117-219.sd.sd.cox.net) (Ping timeout: 240 seconds)
2026-01-25 20:18:23 tessier_ joins (~tessier@ip68-8-117-219.sd.sd.cox.net)
2026-01-25 20:19:04 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 246 seconds)
2026-01-25 20:22:15 <[exa]> is there some sub-cryptographic hash library where the hashes would be somewhat stable between computers? Hashable is not super stable, and I don't want to throw SHA at a problem where crc32 is already an overkill
2026-01-25 20:22:55 <[exa]> ( preferably with some tooling to easily hash bigger datatypes than strings )
2026-01-25 20:23:30 haritz joins (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
2026-01-25 20:23:30 × haritz quits (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
2026-01-25 20:23:30 haritz joins (~hrtz@user/haritz)
2026-01-25 20:24:34 <Milan_Vanca> [exa]: By hash you mean something that produces Int, like quick hash to produce key for "HashMap"?
2026-01-25 20:24:46 <[exa]> yeah
2026-01-25 20:25:10 <[exa]> but essentially I want the hashmap to be out of memory and preferably shared between computers, where Hashable seems to fail
2026-01-25 20:25:29 <geekosaur> yeh, Hashable's not designed for that use case in much of any sense
2026-01-25 20:25:31 <tomsmeding> [exa]: perhaps search for something like siphash or xxhash?
2026-01-25 20:25:36 <tomsmeding> or murmur
2026-01-25 20:25:43 <tomsmeding> one of the hashes that have been given names
2026-01-25 20:25:52 <[exa]> xxhash is ByteString -> Hash
2026-01-25 20:26:07 <[exa]> I ideally want AnyStableHashable a => a -> Hash
2026-01-25 20:26:32 <geekosaur> cabal has something internally for that, but it's not packaged. (uses Generic to hash ADTs)
2026-01-25 20:27:14 wickedja` joins (~user@2605:8d80:5431:62ef:ec3f:86f3:7664:49eb)
2026-01-25 20:28:17 <tomsmeding> same in Accelerate :p
2026-01-25 20:28:29 [exa] prepares ctrl+c
2026-01-25 20:28:50 <tomsmeding> take the cabal one if you copy one of those, the accelerate thing is overengineered
2026-01-25 20:28:52 × wickedjargon quits (~user@24.83.46.194) (Ping timeout: 244 seconds)
2026-01-25 20:29:05 × ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj)
2026-01-25 20:29:14 <tomsmeding> _and_ underengineered, it doesn't have many instances I think
2026-01-25 20:29:15 <geekosaur> hm, actually the cabal one is probably unsuitable though: it doesn't hash values, it specifically hashes structure
2026-01-25 20:29:26 ljdarj joins (~Thunderbi@user/ljdarj)
2026-01-25 20:29:42 <tomsmeding> [exa]: roll it yourself? How many types do you need
2026-01-25 20:29:54 <geekosaur> to ensure core data structures don't get changed unnecessarily and cause downstream breakage
2026-01-25 20:30:53 <[exa]> okay good that sounds like time to roll it
2026-01-25 20:30:59 <tomsmeding> and then package it up :)
2026-01-25 20:31:17 <[exa]> nah I have like 10 types, that's 10 functions
2026-01-25 20:31:23 <tomsmeding> there's actually a way to make the typeclass generic over the underlying hash implementation
2026-01-25 20:31:28 <[exa]> if I package it, the generality is gonna kill it :D :D
2026-01-25 20:32:21 <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 20:32:39 <tomsmeding> the proxy is ugly but it works
2026-01-25 20:33:56 <[exa]> hashable internally has some XXH3 or what
2026-01-25 20:34:03 <[exa]> cool.
2026-01-25 20:36:10 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
2026-01-25 20:36:58 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Client Quit)
2026-01-25 20:56:43 × wickedja` quits (~user@2605:8d80:5431:62ef:ec3f:86f3:7664:49eb) (Remote host closed the connection)
2026-01-25 21:05:16 vanishingideal joins (~vanishing@user/vanishingideal)
2026-01-25 21:07:48 <[exa]> btw kinda related to the above, does anyone recognize what kind of hash is this:
2026-01-25 21:07:50 <[exa]> hsh x seed = seed `xor` (x * 2654435761 + 2654435769 + (shiftL seed 6) + (shiftR seed 2))
2026-01-25 21:08:03 <[exa]> I found it in some very old source with a comment that it's very good indeed
2026-01-25 21:09:57 <[exa]> oh wow the magic numbers actually googled
2026-01-25 21:10:53 × myxos quits (~myxos@174-18-58-141.tcso.qwest.net) (Remote host closed the connection)
2026-01-25 21:11:44 <tomsmeding> does anyone have a recommendation for a package for filesystem events
2026-01-25 21:13:06 <geekosaur> the usual is fsnotify, I think
2026-01-25 21:13:12 <[exa]> tomsmeding: ghcid uses `fsnotify` and it was ok iirc
2026-01-25 21:13:29 <tomsmeding> why am I not getting that when I search for "notify" on hackage
2026-01-25 21:13:51 <geekosaur> tbh I use flora these days
2026-01-25 21:14:28 myxos joins (~myxos@174-18-58-141.tcso.qwest.net)
2026-01-25 21:14:57 <tomsmeding> but thank you, that looks better than the 2018-era packages I was finding
2026-01-25 21:15:51 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
2026-01-25 21:16:36 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
2026-01-25 21:28:23 <[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 21:28:33 <[exa]> ref: https://hackage.haskell.org/package/aeson-2.2.3.0/docs/src/Data.Aeson.Types.FromJSON.html#line-1672
2026-01-25 21:29:03 <tomsmeding> doesn't aeson always allow it if there's more stuff than expected?
2026-01-25 21:29:21 <[exa]> not really, there's helpers to avoid that
2026-01-25 21:32:03 <[exa]> like, it's somewhat surprising
2026-01-25 21:32:27 <[exa]> I guess might be the case because of defaulting, if you write a parser and do `_ <- parseJSON`, it would select () by default
2026-01-25 21:32:48 tomsmeding isn't sure, but that sounds like a bad reason
2026-01-25 21:34:30 <tomsmeding> I might actually expect () to parse `null`, because there doesn't seem to be another way to specifically parse `null`? (Apart from parsing a `Value` and requiring it to be `Null`)
2026-01-25 21:35:02 <[exa]> yeah well you can do `Null <- ...`

All times are in UTC.