Home liberachat/#haskell: Logs Calendar

Logs on 2026-01-25 (liberachat/#haskell)

00:05:19 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
00:07:24 × Beowulf quits (florian@2a01:4f9:3b:2d56::2) (Remote host closed the connection)
00:07:39 × athan quits (~athan@98.150.233.226) (Ping timeout: 265 seconds)
00:09:02 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
00:25:49 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
00:30:28 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
00:30:45 athan joins (~athan@98.150.233.226)
01:22:29 × Tuplanolla quits (~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) (Quit: Leaving.)
01:28:52 nisstyre joins (wes@user/nisstyre)
01:29:38 × Inline quits (~User@2001-4dd7-bc56-0-9df6-8597-3530-1076.ipv6dyn.netcologne.de) (Quit: KVIrc 5.2.6 Quasar http://www.kvirc.net/)
01:29:54 × ZLima12 quits (~zlima12@user/meow/ZLima12) (Read error: Connection reset by peer)
01:32:53 Inline joins (~User@2001-4dd7-bc56-0-81c2-63ee-6cae-a149.ipv6dyn.netcologne.de)
01:33:48 ZLima12 joins (~zlima12@user/meow/ZLima12)
01:41:18 omidmash4 joins (~omidmash@user/omidmash)
01:43:03 × omidmash quits (~omidmash@user/omidmash) (Ping timeout: 244 seconds)
01:43:03 omidmash4 is now known as omidmash
01:43:58 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
01:44:15 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
01:53:40 × XZDX quits (~xzdx@user/XZDX) (Ping timeout: 245 seconds)
01:56:41 × athan quits (~athan@98.150.233.226) (Read error: Connection reset by peer)
01:56:49 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
01:57:06 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
02:29:43 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 264 seconds)
02:32:37 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 246 seconds)
02:33:13 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
02:35:36 XZDX joins (~xzdx@2601:404:ce00:b795:214:51ff:fe83:9855)
02:37:38 × XZDX quits (~xzdx@2601:404:ce00:b795:214:51ff:fe83:9855) (Changing host)
02:37:38 XZDX joins (~xzdx@user/XZDX)
02:43:52 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
02:55:43 × omidmash quits (~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat)
02:59:05 omidmash joins (~omidmash@user/omidmash)
03:01:42 peterbecich joins (~Thunderbi@71.84.33.135)
03:02:01 × remmie quits (ianremsen@tilde.team) (Ping timeout: 246 seconds)
03:05:03 × op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection)
03:05:38 op_4 joins (~tslil@user/op-4/x-9116473)
03:05:49 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 244 seconds)
03:10:45 × vulpine quits (xfnw@user/meow/xfnw) (Ping timeout: 252 seconds)
03:13:23 cyphase joins (~cyphase@user/cyphase)
03:14:28 vulpine joins (xfnw@user/meow/xfnw)
03:19:32 vanishingideal joins (~vanishing@user/vanishingideal)
03:20:57 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
03:25:41 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
03:39:11 × trickard quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
03:39:25 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
03:53:16 remmie joins (ianremsen@tilde.team)
03:54:14 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
04:02:07 × machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 240 seconds)
04:06:48 × trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
04:07:02 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
04:11:46 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
04:12:27 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:34:04 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
04:44:40 machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net)
04:46:40 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
04:47:20 × XZDX quits (~xzdx@user/XZDX) (Remote host closed the connection)
04:49:03 × trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Ping timeout: 244 seconds)
04:51:50 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
05:26:25 × machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 264 seconds)
05:44:12 wickedjargon joins (~user@2605:8d80:5431:4ad3:b838:5ad1:2e32:2ecc)
05:59:41 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
06:22:47 takuan joins (~takuan@d8D86B9E9.access.telenet.be)
06:31:40 trickard_ is now known as trickard
06:40:22 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
06:50:45 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 265 seconds)
07:09:51 chenjf joins (~chenjf@68.64.178.54)
07:23:07 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
07:34:11 × chenjf quits (~chenjf@68.64.178.54) (Ping timeout: 250 seconds)
07:34:28 vanishingideal joins (~vanishing@user/vanishingideal)
07:48:48 hsw joins (~hsw@106.104.102.45)
07:52:54 Lycurgus joins (~juan@user/Lycurgus)
07:57:03 × bliminse quits (~bliminse@user/bliminse) (Quit: leaving)
08:00:07 × tt1231607 quits (~tt1231@2603:6010:8700:4a81:a4f6:acff:fe95:3803) (Quit: The Lounge - https://thelounge.chat)
08:01:31 bliminse joins (~bliminse@user/bliminse)
08:05:39 tt1231607 joins (~tt1231@2603:6010:8700:4a81:a4f6:acff:fe95:3803)
08:14:27 ljdarj joins (~Thunderbi@user/ljdarj)
08:19:04 peterbecich joins (~Thunderbi@71.84.33.135)
08:24:02 × infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 265 seconds)
08:33:57 × Inline quits (~User@2001-4dd7-bc56-0-81c2-63ee-6cae-a149.ipv6dyn.netcologne.de) (Quit: KVIrc 5.2.6 Quasar http://www.kvirc.net/)
08:37:27 Inline joins (~User@2001-4dd7-bc56-0-9e2a-e0f5-abd-1b3a.ipv6dyn.netcologne.de)
08:38:24 × arandombit quits (~arandombi@user/arandombit) (Remote host closed the connection)
08:44:24 infinity0 joins (~infinity0@pwned.gg)
08:44:54 chenjf joins (~chenjf@68.64.178.54)
08:47:14 × chenjf quits (~chenjf@68.64.178.54) (Client Quit)
08:53:02 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 265 seconds)
08:54:38 × Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
08:54:41 oskarw joins (~user@user/oskarw)
08:59:49 an1k3sh joins (~an1k3sh@2401:4900:c92c:8a3b:b8f4:ad29:3d59:5028)
09:00:08 × oskarw quits (~user@user/oskarw) (Ping timeout: 240 seconds)
09:00:17 × an1k3sh quits (~an1k3sh@2401:4900:c92c:8a3b:b8f4:ad29:3d59:5028) (Client Quit)
09:04:49 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds)
09:20:41 × haritz quits (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
09:23:26 Tuplanolla joins (~Tuplanoll@85-156-32-207.elisa-laajakaista.fi)
09:36:13 × trickard quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
09:36:27 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
09:48:43 × wickedjargon quits (~user@2605:8d80:5431:4ad3:b838:5ad1:2e32:2ecc) (Ping timeout: 246 seconds)
09:58:04 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:25:15 chromoblob joins (~chromoblo@user/chromob1ot1c)
10:25:18 poscat0x04 joins (~poscat@user/poscat)
10:26:07 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 240 seconds)
10:27:03 × poscat quits (~poscat@user/poscat) (Ping timeout: 244 seconds)
10:27:37 Square3 joins (~Square@user/square)
10:40:38 × Beowulf quits (florian@2a01:4f9:3b:2d56::2) (Remote host closed the connection)
10:42:52 rainbyte_ joins (~rainbyte@186.22.19.214)
10:42:55 × rainbyte quits (~rainbyte@186.22.19.214) (Ping timeout: 264 seconds)
10:43:39 × koz quits (~koz@121.99.240.58) (Quit: ZNC 1.8.2 - https://znc.in)
10:43:46 × trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
10:44:00 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
10:44:22 __monty__ joins (~toonn@user/toonn)
10:44:26 koz joins (~koz@121.99.240.58)
10:53:05 × trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
10:54:10 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
11:02:52 × trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
11:04:46 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
11:10:20 Miroboru joins (~myrvoll@188.113.115.67)
11:26:57 fp joins (~Thunderbi@89-27-10-140.bb.dnainternet.fi)
11:27:05 tremon joins (~tremon@83.80.159.219)
11:34:37 × trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
11:34:50 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
11:40:51 × hc quits (~hc@mail.hce.li) (Remote host closed the connection)
12:09:14 × trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
12:09:27 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
12:27:59 × Square3 quits (~Square@user/square) (Ping timeout: 250 seconds)
12:29:26 × trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
12:29:39 trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au)
12:29:53 oskarw joins (~user@user/oskarw)
12:50:31 vanishingideal joins (~vanishing@user/vanishingideal)
13:15:58 × fp quits (~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 255 seconds)
13:29:05 arandombit joins (~arandombi@user/arandombit)
13:31:30 × picnoir quits (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.8.1)
13:33:44 picnoir joins (~picnoir@about/aquilenet/vodoo/NinjaTrappeur)
13:37:52 target_i joins (~target_i@user/target-i/x-6023099)
13:47:21 × bionade24 quits (~quassel@server2.oscloud.info) (Quit: Apocalypse Incoming!)
13:47:51 bionade24 joins (~quassel@server2.oscloud.info)
13:54:45 trickard_ is now known as trickard
14:00:36 chenjf joins (~chenjf@68.64.178.54)
14:12:35 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
14:18:34 × yin quits (~zero@user/zero) (Ping timeout: 246 seconds)
14:20:06 × chenjf quits (~chenjf@68.64.178.54) (Ping timeout: 252 seconds)
14:26:37 × olivial quits (~benjaminl@user/benjaminl) (Ping timeout: 246 seconds)
14:27:09 olivial joins (~benjaminl@user/benjaminl)
14:29:23 yin joins (~zero@user/zero)
14:34:03 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
14:53:11 × Beowulf quits (florian@2a01:4f9:3b:2d56::2) (Remote host closed the connection)
15:08:33 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
15:09:47 × nschoe- quits (~nschoe@2a01:e0a:8e:a190:fd7d:66d4:6085:f23d) (Quit: ZNC 1.8.2 - https://znc.in)
15:10:04 nschoe joins (~nschoe@2a01:e0a:8e:a190:fb25:893f:f58c:1f19)
15:12:54 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
15:31:29 DetourNe- joins (~DetourNet@user/DetourNetworkUK)
15:31:56 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
15:33:43 DetourNe- is now known as DetourNetworkUK
16:08:25 vanishingideal joins (~vanishing@user/vanishingideal)
16:18:09 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
16:21:44 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:23:07 trickard___ joins (~trickard@cpe-86-98-47-163.wireline.com.au)
16:23:54 × trickard quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Ping timeout: 260 seconds)
16:26:52 jmcantrell_ joins (~weechat@user/jmcantrell)
16:29:03 jmcantrell_ is now known as jmcantrell
16:30:33 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
16:43:55 × Beowulf quits (florian@2a01:4f9:3b:2d56::2) (Remote host closed the connection)
16:46:35 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 245 seconds)
16:46:58 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
16:56:05 × trickard___ quits (~trickard@cpe-86-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
16:56:19 trickard_ joins (~trickard@cpe-86-98-47-163.wireline.com.au)
16:58:47 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
17:06:16 vanishingideal joins (~vanishing@user/vanishingideal)
17:20:08 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 240 seconds)
17:35:16 machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net)
17:36:51 × Beowulf quits (florian@2a01:4f9:3b:2d56::2) (Remote host closed the connection)
17:40:34 Sgeo joins (~Sgeo@user/sgeo)
17:42:25 Square3 joins (~Square@user/square)
17:43:10 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
17:46:28 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
17:50:18 Lycurgus joins (~juan@user/Lycurgus)
17:58:06 × qqq quits (~qqq@185.54.21.105) (Remote host closed the connection)
18:13:29 ss4 joins (~wootehfoo@user/wootehfoot)
18:14:23 divlamir_ joins (~divlamir@user/divlamir)
18:15:31 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 246 seconds)
18:16:11 × divlamir quits (~divlamir@user/divlamir) (Ping timeout: 244 seconds)
18:16:11 divlamir_ is now known as divlamir
18:18:31 qqq joins (~qqq@185.54.21.105)
18:26:43 × Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
18:29:37 fp joins (~Thunderbi@89-27-10-140.bb.dnainternet.fi)
18:32:11 trickard_ is now known as trickard
18:38:05 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
18:54:39 × qqq quits (~qqq@185.54.21.105) (Quit: Lost terminal)
18:55:11 × ouilemur quits (~jgmerritt@user/ouilemur) (Quit: WeeChat 4.8.1)
18:59:11 ouilemur joins (~jgmerritt@user/ouilemur)
19:05:34 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
19:06:04 DetourNetworkUK joins (DetourNetw@user/DetourNetworkUK)
19:06:51 jmcantrell_ joins (~weechat@user/jmcantrell)
19:10:25 × Beowulf quits (florian@2a01:4f9:3b:2d56::2) (Remote host closed the connection)
19:14:35 euphores joins (~SASL_euph@user/euphores)
19:15:24 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 260 seconds)
19:16:03 wickedjargon joins (~user@24.83.46.194)
19:16:12 arandombit joins (~arandombi@user/arandombit)
19:20:43 × driib3180 quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
19:21:48 × arahael quits (~wetfoot@user/arahael) (Ping timeout: 244 seconds)
19:22:59 arahael joins (~wetfoot@user/arahael)
19:24:41 driib3180 joins (~driib@vmi931078.contaboserver.net)
19:32:30 × Pozyomka quits (~pyon@user/pyon) (Ping timeout: 252 seconds)
19:41:08 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
19:41:24 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
19:42:28 Lord_of_Life_ is now known as Lord_of_Life
19:49:13 × fp quits (~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 264 seconds)
19:53:47 peterbecich joins (~Thunderbi@71.84.33.135)
20:05:12 × ethantwardy quits (~user@user/ethantwardy) (Ping timeout: 244 seconds)
20:18:08 × tessier quits (~tessier@ip68-8-117-219.sd.sd.cox.net) (Ping timeout: 240 seconds)
20:18:23 tessier_ joins (~tessier@ip68-8-117-219.sd.sd.cox.net)
20:19:04 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 246 seconds)
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
20:22:55 <[exa]> ( preferably with some tooling to easily hash bigger datatypes than strings )
20:23:30 haritz joins (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
20:23:30 × haritz quits (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
20:23:30 haritz joins (~hrtz@user/haritz)
20:24:34 <Milan_Vanca> [exa]: By hash you mean something that produces Int, like quick hash to produce key for "HashMap"?
20:24:46 <[exa]> yeah
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
20:25:29 <geekosaur> yeh, Hashable's not designed for that use case in much of any sense
20:25:31 <tomsmeding> [exa]: perhaps search for something like siphash or xxhash?
20:25:36 <tomsmeding> or murmur
20:25:43 <tomsmeding> one of the hashes that have been given names
20:25:52 <[exa]> xxhash is ByteString -> Hash
20:26:07 <[exa]> I ideally want AnyStableHashable a => a -> Hash
20:26:32 <geekosaur> cabal has something internally for that, but it's not packaged. (uses Generic to hash ADTs)
20:27:14 wickedja` joins (~user@2605:8d80:5431:62ef:ec3f:86f3:7664:49eb)
20:28:17 <tomsmeding> same in Accelerate :p
20:28:29 [exa] prepares ctrl+c
20:28:50 <tomsmeding> take the cabal one if you copy one of those, the accelerate thing is overengineered
20:28:52 × wickedjargon quits (~user@24.83.46.194) (Ping timeout: 244 seconds)
20:29:05 × ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj)
20:29:14 <tomsmeding> _and_ underengineered, it doesn't have many instances I think
20:29:15 <geekosaur> hm, actually the cabal one is probably unsuitable though: it doesn't hash values, it specifically hashes structure
20:29:26 ljdarj joins (~Thunderbi@user/ljdarj)
20:29:42 <tomsmeding> [exa]: roll it yourself? How many types do you need
20:29:54 <geekosaur> to ensure core data structures don't get changed unnecessarily and cause downstream breakage
20:30:53 <[exa]> okay good that sounds like time to roll it
20:30:59 <tomsmeding> and then package it up :)
20:31:17 <[exa]> nah I have like 10 types, that's 10 functions
20:31:23 <tomsmeding> there's actually a way to make the typeclass generic over the underlying hash implementation
20:31:28 <[exa]> if I package it, the generality is gonna kill it :D :D
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 }
20:32:39 <tomsmeding> the proxy is ugly but it works
20:33:56 <[exa]> hashable internally has some XXH3 or what
20:34:03 <[exa]> cool.
20:36:10 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
20:36:58 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Client Quit)
20:56:43 × wickedja` quits (~user@2605:8d80:5431:62ef:ec3f:86f3:7664:49eb) (Remote host closed the connection)
21:05:16 vanishingideal joins (~vanishing@user/vanishingideal)
21:07:48 <[exa]> btw kinda related to the above, does anyone recognize what kind of hash is this:
21:07:50 <[exa]> hsh x seed = seed `xor` (x * 2654435761 + 2654435769 + (shiftL seed 6) + (shiftR seed 2))
21:08:03 <[exa]> I found it in some very old source with a comment that it's very good indeed
21:09:57 <[exa]> oh wow the magic numbers actually googled
21:10:53 × myxos quits (~myxos@174-18-58-141.tcso.qwest.net) (Remote host closed the connection)
21:11:44 <tomsmeding> does anyone have a recommendation for a package for filesystem events
21:13:06 <geekosaur> the usual is fsnotify, I think
21:13:12 <[exa]> tomsmeding: ghcid uses `fsnotify` and it was ok iirc
21:13:29 <tomsmeding> why am I not getting that when I search for "notify" on hackage
21:13:51 <geekosaur> tbh I use flora these days
21:14:28 myxos joins (~myxos@174-18-58-141.tcso.qwest.net)
21:14:57 <tomsmeding> but thank you, that looks better than the 2018-era packages I was finding
21:15:51 Beowulf joins (florian@2a01:4f9:3b:2d56::2)
21:16:36 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
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
21:28:33 <[exa]> ref: https://hackage.haskell.org/package/aeson-2.2.3.0/docs/src/Data.Aeson.Types.FromJSON.html#line-1672
21:29:03 <tomsmeding> doesn't aeson always allow it if there's more stuff than expected?
21:29:21 <[exa]> not really, there's helpers to avoid that
21:32:03 <[exa]> like, it's somewhat surprising
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
21:32:48 tomsmeding isn't sure, but that sounds like a bad reason
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`)
21:35:02 <[exa]> yeah well you can do `Null <- ...`
21:35:11 <[exa]> but we've got our cozy haskell null!!!
21:35:41 <tomsmeding> [exa]: let me invert the question: why are you parsing a ()?
21:36:04 geekosaur wonders if it's to play a bit more nicely in ghci with ExtendedDefaultRules or something like that
21:36:19 <[exa]> I wanted to nicely match if a value is empty, looked pretty much okay that way
21:37:09 <geekosaur> tbh that actually feels a bit wrong to me, since null is in-band in JSON
21:38:30 <[exa]> oh well look at that https://github.com/haskell/aeson/issues/788#issuecomment-939328524
21:38:58 <[exa]> the philosophical reason is: in js everything can be null
21:39:24 <monochrom> Does the empty object {} exist in JSON? I would be OK with that becoming () in Haskell. But then my idea still implies that parse errors still exist, e.g., parsing "5" to () should be an error.
21:40:35 <geekosaur> that's what I meant by "in-band"
21:40:50 <geekosaur> in Haskell it's a distinct type, not a distinct value inhabiting every type
21:41:26 × oskarw quits (~user@user/oskarw) (Remote host closed the connection)
21:42:41 pavonia joins (~user@user/siracusa)
21:52:45 × jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 252 seconds)
21:53:08 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
21:55:30 × DetourNetworkUK quits (DetourNetw@user/DetourNetworkUK) (Ping timeout: 252 seconds)
21:57:57 <tomsmeding> do I really have to reach into ghc-internal to get the UserInterrupt exception, for detecting if someone ^C'd me?
21:58:30 <tomsmeding> ah no I'm stupid, ignore, it's AsyncException in base
22:07:16 <monochrom> :)
22:07:58 <monochrom> But beware that it is only delivered to the main thread.
22:11:28 mjacob joins (~mjacob@adrastea.uberspace.de)
22:14:00 <mjacob> What are possible applications of cycles in functional reactive programming? I know that many frameworks forbid it unless there is a delay in each cycle. But it is hard to me to think of an example where cycles are useful (with or without delay).
22:15:35 <tomsmeding> a clock? (disclaimer: have never used FRP)
22:21:01 × oats quits (~oats@user/oats) (Read error: Connection reset by peer)
22:21:16 oats joins (~oats@user/oats)
22:22:50 × machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 245 seconds)
22:30:45 <mjacob> tomsmeding: Where is the cycle in this example?
22:31:05 <tomsmeding> the update to the time triggers an update to the time again, after a delay?
22:31:14 <tomsmeding> as I said, I dunno, maybe this is nonsense :)
22:32:35 <EvanR> early versions of FRP exploited recursive definitions (why you might be thinking of as cycles?) to implement some sort of state
22:33:07 <geekosaur> I wasn't using FRP but a PSQ for a simulation, and one of the events was a status report that triggered every so often in simulated time and rescheduled itself for later
22:33:08 <EvanR> but whether that counts as some sort of cycle, might depend on your concept of the underlying implementation
22:33:25 <EvanR> e.g. interpreting recursion doesn't necessarily need anything cyclic
22:33:49 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:34:00 × takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 244 seconds)
22:34:01 <EvanR> in arrow FRP you wouldn't use recursion but ArrowLoop
22:35:27 <geekosaur> plus most other events scheduled other events for later, since it was a population simulator so it was simulating various life events
22:38:36 <monochrom> People invent all sorts of "plain/simple English" words to avoid saying "recursion". :)
22:41:08 <monochrom> I once posed a homework question that defined infinite streams of Bool to represent timing diagrams of digital circuits, then had students code up a flip flop using a feedback loop. (One more "plain English" word for recursion!)
22:41:59 <tomsmeding> monochrom: conversely, functional programmers call everything recursion that we have more precise words for :)
22:42:05 <monochrom> (It had to go through a delay. I also had a "part (b)" in which the students had to show what would go wrong in Haskell if there were no delay.)
22:42:36 <monochrom> Oh yeah all of us should just say "least fixed point" and be done with it!
22:43:32 <monochrom> But we are worse than calling everything "recursion" aren't we? We call everything "function".
22:44:23 <monochrom> https://www.slideshare.net/slideshow/fp-patterns-buildstufflt/41936137#13 >:)
22:44:26 <tomsmeding> our functions either recurse or traverse
22:58:41 <EvanR> oop, everything's an object. FP, everything's a function!
22:59:10 × Square3 quits (~Square@user/square) (Ping timeout: 255 seconds)
23:02:34 × mulk quits (~mulk@pd95143a6.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
23:04:34 mulk joins (~mulk@p5b1128da.dip0.t-ipconnect.de)
23:08:29 × sp1ff` quits (~user@2601:1c2:4701:900::32d4) (Remote host closed the connection)
23:11:22 × trickard quits (~trickard@cpe-86-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
23:11:35 trickard_ joins (~trickard@cpe-86-98-47-163.wireline.com.au)
23:13:16 × Fijxu quits (~Fijxu@user/fijxu) (Quit: XD!!)
23:14:35 Fijxu joins (~Fijxu@user/fijxu)
23:20:07 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
23:20:27 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:28:35 Pozyomka joins (~pyon@user/pyon)
23:36:42 weary-traveler joins (~user@user/user363627)
23:42:48 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 256 seconds)
23:44:10 × trickard_ quits (~trickard@cpe-86-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
23:44:23 trickard_ joins (~trickard@cpe-86-98-47-163.wireline.com.au)

All times are in UTC on 2026-01-25.