2026/02/05

2026-02-05 00:01:34 +0100tromp(~textual@2001:1c00:3487:1b00:10a6:5d4a:b26:4065) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-02-05 00:04:09 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 00:08:56 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 00:15:24 +0100mange(~mange@user/mange) mange
2026-02-05 00:18:37 +0100paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Remote host closed the connection)
2026-02-05 00:19:53 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 00:24:13 +0100paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2026-02-05 00:24:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-05 00:28:55 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 240 seconds)
2026-02-05 00:33:40 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 00:38:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-05 00:40:50 +0100 <haskellbridge> <loonycyborg> There still are actual malfunctions out there, like faulty ram modules that flip some bits.
2026-02-05 00:41:26 +0100 <haskellbridge> <loonycyborg> good luck figuring out what is because of such a malfunction and what comes from programmer brainfarts :P
2026-02-05 00:44:07 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds)
2026-02-05 00:49:23 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 00:50:38 +0100 <EvanR> not just faulty ram, unless it's by definition, even space grade chips will be giving a rating in terms of probability
2026-02-05 00:51:48 +0100 <lantti> isn't it still a programmers decision if it is acceptable that such malfunctions cause a program to fail (considering severity and probability etc.)?
2026-02-05 00:52:39 +0100 <lantti> if it is not then the programmer must take that into consideration and have reduncancy and whatnot
2026-02-05 00:52:43 +0100 <EvanR> that's the esolang I was talking about
2026-02-05 00:52:55 +0100 <jreicher> I wish my workplace tested with chaosmonkey
2026-02-05 00:52:57 +0100 <EvanR> where code is deterioriating around you, and it's up to the programmer to somehow deal with it
2026-02-05 00:53:20 +0100 <lantti> oh, sorry I didn't read back far enough
2026-02-05 00:53:23 +0100 <EvanR> instead of assuming we have this luxurious ideal computer
2026-02-05 00:53:38 +0100qqq(~qqq@185.54.21.178)
2026-02-05 00:54:00 +0100 <haskellbridge> <loonycyborg> I remember random flips from alpha particles were actual problem for some ram chips
2026-02-05 00:54:01 +0100 <haskellbridge> <loonycyborg> but there's some possibility that space radiation could flip a bit in any chip
2026-02-05 00:54:24 +0100 <EvanR> I need to find this page by superkuh, which lists all the reasons the bits could flip
2026-02-05 00:54:27 +0100 <haskellbridge> <loonycyborg> and probably many other sources of bad things that could happem..
2026-02-05 00:54:54 +0100 <EvanR> space radiation over here, the material your chip is made of has a % of radioactive material in it, ...
2026-02-05 00:56:03 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-02-05 00:56:17 +0100 <EvanR> https://esolangs.org/wiki/Entropy
2026-02-05 00:56:28 +0100 <haskellbridge> <loonycyborg> maybe even just above average thermal fluctuation, given how small chips are now
2026-02-05 00:56:40 +0100 <haskellbridge> <loonycyborg> dense that is
2026-02-05 01:07:26 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 01:10:09 +0100trickard_trickard
2026-02-05 01:12:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-05 01:13:12 +0100weary-traveler(~user@user/user363627) user363627
2026-02-05 01:13:29 +0100EvanR(~EvanR@user/evanr) (Quit: Leaving)
2026-02-05 01:15:02 +0100EvanR(~EvanR@user/evanr) EvanR
2026-02-05 01:16:19 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2026-02-05 01:21:30 +0100vidak(~vidak@2407:e400:7800:2c01:d0be:76f8:cc84:bd4a) vidak
2026-02-05 01:23:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 01:27:42 +0100haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2026-02-05 01:27:50 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-05 01:34:58 +0100Googulator(~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) (Quit: Client closed)
2026-02-05 01:35:08 +0100cyphase(~cyphase@user/cyphase) cyphase
2026-02-05 01:35:12 +0100Googulator(~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu)
2026-02-05 01:38:19 +0100w00ter(~w00ter@user/w00ter) (Quit: Leaving...)
2026-02-05 01:38:56 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 01:43:53 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-02-05 01:50:14 +0100Square2(~Square@user/square) Square
2026-02-05 01:54:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 01:55:18 +0100Tuplanolla(~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) (Quit: Leaving.)
2026-02-05 01:58:52 +0100m_a_r_k(~m_a_r_k@archlinux/support/mark) (Ping timeout: 256 seconds)
2026-02-05 01:59:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-05 02:01:42 +0100xff0x(~xff0x@2405:6580:b080:900:d171:1c19:51a5:d6b5) (Ping timeout: 256 seconds)
2026-02-05 02:03:03 +0100tremon(~tremon@83.80.159.219) (Remote host closed the connection)
2026-02-05 02:08:07 +0100otto_s(~user@p5de2f01c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2026-02-05 02:09:30 +0100otto_s(~user@p4ff27c83.dip0.t-ipconnect.de)
2026-02-05 02:10:19 +0100acidjnk(~acidjnk@p200300d6e700e57835d41376842fa308.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2026-02-05 02:10:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 02:10:33 +0100m_a_r_k(~m_a_r_k@archlinux/support/mark) m_a_r_k
2026-02-05 02:14:56 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 02:25:52 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 02:26:51 +0100hakutaku(~textual@user/hakutaku) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2026-02-05 02:28:44 +0100omidmash0(~omidmash@user/omidmash) omidmash
2026-02-05 02:29:34 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 246 seconds)
2026-02-05 02:29:55 +0100w00ter(~w00ter@user/w00ter) w00ter
2026-02-05 02:31:13 +0100omidmash(~omidmash@user/omidmash) (Ping timeout: 260 seconds)
2026-02-05 02:31:13 +0100omidmash0omidmash
2026-02-05 02:32:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 02:43:54 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 02:48:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 02:59:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 03:03:51 +0100hakutaku(~textual@user/hakutaku) hakutaku
2026-02-05 03:04:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-02-05 03:05:10 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-02-05 03:15:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 03:15:18 +0100hakutaku(~textual@user/hakutaku) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2026-02-05 03:20:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 03:30:50 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 03:34:23 +0100jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 265 seconds)
2026-02-05 03:35:44 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 03:40:23 +0100pavonia_(~user@user/siracusa) siracusa
2026-02-05 03:40:35 +0100pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2026-02-05 03:40:56 +0100pavonia_pavonia
2026-02-05 03:46:38 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 03:51:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 03:59:27 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine)
2026-02-05 03:59:49 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-02-05 04:00:01 +0100attlin(~user@user/attlin) (Quit: Leaving)
2026-02-05 04:02:00 +0100attlin(~user@user/attlin) attlin
2026-02-05 04:02:26 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 04:09:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 04:20:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 04:25:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-05 04:35:51 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 04:40:31 +0100Googulator(~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) (Quit: Client closed)
2026-02-05 04:40:45 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-05 04:40:47 +0100Googulator(~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu)
2026-02-05 04:48:50 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 04:54:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-05 05:00:19 +0100jreicher(~joelr@user/jreicher) (Ping timeout: 264 seconds)
2026-02-05 05:00:56 +0100jreicher(~joelr@user/jreicher) jreicher
2026-02-05 05:01:43 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-05 05:02:31 +0100chexum_(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2026-02-05 05:02:42 +0100chexum(~quassel@gateway/tor-sasl/chexum) chexum
2026-02-05 05:04:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 05:07:02 +0100omidmash(~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat)
2026-02-05 05:09:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 05:11:53 +0100omidmash(~omidmash@user/omidmash) omidmash
2026-02-05 05:14:02 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-02-05 05:18:16 +0100Pozyomka(~pyon@user/pyon) (Ping timeout: 246 seconds)
2026-02-05 05:20:14 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2026-02-05 05:20:16 +0100Pozyomka(~pyon@user/pyon) pyon
2026-02-05 05:20:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 05:20:37 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-02-05 05:25:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-05 05:27:59 +0100wickedjargon(~user@2605:8d80:5431:3c2c:999d:e956:3913:d370) wickedjargon
2026-02-05 05:36:09 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 05:40:48 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 260 seconds)
2026-02-05 05:42:58 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-02-05 05:44:40 +0100jle`(~jle`@2603:8001:3b00:11:aa96:1bfc:d44b:9e) jle`
2026-02-05 05:47:14 +0100emaczen(~user@user/emaczen) (Ping timeout: 256 seconds)
2026-02-05 05:54:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 05:58:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 06:05:12 +0100xff0x_(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-02-05 06:06:22 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 255 seconds)
2026-02-05 06:09:59 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 06:15:14 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-05 06:25:46 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 06:30:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 06:40:48 +0100mange(~mange@user/mange) (Quit: Quittin' time!)
2026-02-05 06:40:54 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 260 seconds)
2026-02-05 06:41:33 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 06:46:28 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-05 06:49:16 +0100jmcantrell_(~weechat@user/jmcantrell) (Ping timeout: 246 seconds)
2026-02-05 06:49:54 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 06:51:01 +0100divya(~divya@140.238.251.170) (Ping timeout: 264 seconds)
2026-02-05 06:53:22 +0100michalz(~michalz@185.246.207.200)
2026-02-05 06:54:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 07:01:55 +0100hakutaku(~textual@user/hakutaku) hakutaku
2026-02-05 07:02:51 +0100hakutaku(~textual@user/hakutaku) (Client Quit)
2026-02-05 07:05:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 07:08:51 +0100takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-02-05 07:10:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-02-05 07:21:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 07:24:31 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2026-02-05 07:24:56 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-02-05 07:28:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-05 07:39:21 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 07:41:20 +0100constxd(~constxd@user/constxd) (Quit: kiwi irc - hadmade client)
2026-02-05 07:43:47 +0100constxd(~constxd@user/constxd) constxd
2026-02-05 07:44:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-02-05 07:50:51 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 07:54:50 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-05 07:55:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-05 08:04:52 +0100ags(~ags@p200300dcb736f1003d348acd0f4709f1.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2026-02-05 08:05:39 +0100ystael(~ystael@user/ystael) (Ping timeout: 250 seconds)
2026-02-05 08:06:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 08:06:19 +0100dolio(~dolio@130.44.140.168) (Ping timeout: 264 seconds)
2026-02-05 08:11:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-05 08:14:07 +0100dolio(~dolio@130.44.140.168) dolio
2026-02-05 08:17:31 +0100ystael(~ystael@user/ystael) ystael
2026-02-05 08:22:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 08:25:21 +0100divya(divya@140.238.251.170) divya
2026-02-05 08:25:21 +0100marinelli(~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
2026-02-05 08:25:39 +0100ft(~ft@p508db4c0.dip0.t-ipconnect.de) (Quit: leaving)
2026-02-05 08:26:33 +0100emmanuelux(~em@user/emmanuelux) (Read error: Connection reset by peer)
2026-02-05 08:27:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 08:37:47 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-05 08:37:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 08:42:58 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-02-05 08:46:41 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 08:49:18 +0100tromp(~textual@2001:1c00:3487:1b00:4842:24c6:bd5c:fe37)
2026-02-05 08:49:52 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-05 08:50:05 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 08:50:37 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-02-05 08:51:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 08:51:52 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 08:56:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-05 09:07:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 09:12:24 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2026-02-05 09:12:34 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-02-05 09:13:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-05 09:23:41 +0100emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-02-05 09:25:20 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 09:25:21 +0100lbseale(~quassel@user/ep1ctetus) (Ping timeout: 252 seconds)
2026-02-05 09:27:07 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-05 09:30:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 09:41:25 +0100ouilemur(~jgmerritt@user/ouilemur) (Ping timeout: 250 seconds)
2026-02-05 09:42:29 +0100emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-02-05 09:43:09 +0100ouilemur(~jgmerritt@user/ouilemur) ouilemur
2026-02-05 10:00:18 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-02-05 10:07:47 +0100merijn(~merijn@77.242.116.146) merijn
2026-02-05 10:12:02 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-02-05 10:13:38 +0100trickard_trickard
2026-02-05 10:19:49 +0100chele(~chele@user/chele) chele
2026-02-05 10:25:18 +0100gentauroHmmm, I just realized that in SML (and derivates such as OCaml, …) the "not equal operator" (a <> b) states that `a > b` or `a < b`: https://smlhelp.github.io/book/docs/start/syntax/#boolean-operation
2026-02-05 10:26:43 +0100gentaurowhich somehow makes sense. In HaskeLLM `/=` (division equals) is not that intuitive. That said, it took me like "ages" to realize `<>` xD
2026-02-05 10:29:32 +0100 <Googulator> Makes sense... if you're only thinking of real number and other intuitively sortable types. "Less than or greater than" is a downright lie e.g. for complex numbers.
2026-02-05 10:34:42 +0100 <gentauro> Googulator: I don't think we have complex numbers in SML (or derivates)
2026-02-05 10:34:45 +0100 <gentauro> I might be wrong
2026-02-05 10:40:32 +0100xff0x_(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Quit: xff0x_)
2026-02-05 10:42:10 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-05 10:42:23 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 10:42:50 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-02-05 10:43:03 +0100 <tomsmeding> gentauro: you probably already know this, but for completeness, /= is ≠
2026-02-05 10:44:07 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-05 10:45:06 +0100 <probie> Just pick an ordering on complex numbers and call it a day
2026-02-05 10:45:15 +0100tremon(~tremon@83.80.159.219) tremon
2026-02-05 10:45:27 +0100 <probie> We're already going to hell for misusing `Ord`
2026-02-05 10:47:40 +0100 <probie> > let { nan = 0/(0 :: Double); m = M.fromList [(nan, 3), (nan, 4)] } in (m, nan `M.member` m)
2026-02-05 10:47:41 +0100 <lambdabot> (fromList [(NaN,3),(NaN,4)],False)
2026-02-05 10:50:16 +0100 <Leary> Yeah, `Ord` is (or has become) a class for types that support /some/ decidable total order, however arbitrary. `Complex` poses no issue whatsoever, but e.g `IORef` might---it supports equality testing but not ordering.
2026-02-05 10:51:36 +0100 <probie> Personally, I suggest `instance (Ord a) => Ord (Complex a) where compare (a :+ b) (c :+ d) = compare (a,b) (c,d)`
2026-02-05 10:52:17 +0100 <Leary> Yes, that's what would be derived, and what we should have.
2026-02-05 10:53:11 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 10:53:39 +0100 <int-e> Eh half of the time I feel like using it I end up copying Complex anyway, so I can have instance Num a => Num (Complex a)
2026-02-05 10:53:41 +0100 <tomsmeding> I think there's a good argument to be made for _not_ having that instance. I know floats are a mess anyway, but at least it's considered basic programming knowledge that ordering on floats is a mess
2026-02-05 10:55:03 +0100tomsmedingwas wondering why Complex doesn't have that instance, but it's magnitude computation in abs and signum
2026-02-05 10:55:11 +0100 <int-e> (if anybody ever makes a new Haskell derivative, `abs` and `signum` should be in their own class)
2026-02-05 10:55:22 +0100 <tomsmeding> yes, yet another reason for Num to be nonsense
2026-02-05 10:55:43 +0100 <tomsmeding> fromInteger also
2026-02-05 10:55:58 +0100 <int-e> tomsmeding: In that context I wouldn't care about abs and signum so I'd use abs = id and signum 0 = 0, signum _ = 1
2026-02-05 10:56:06 +0100 <tomsmeding> I imagined yes
2026-02-05 11:00:08 +0100mjrosenb(~mjrosenb@pool-71-190-143-170.nycmny.fios.verizon.net) (Remote host closed the connection)
2026-02-05 11:01:47 +0100 <probie> tomsmeding: Who needs a sane instance when you can have a useful instance. I don't really think that it's any worse than `instance Traversable ((,) a)`.
2026-02-05 11:01:58 +0100 <int-e> tomsmeding: all my rings are unital ;)
2026-02-05 11:02:33 +0100 <int-e> (I don't usually mind fromInteger)
2026-02-05 11:02:36 +0100 <probie> It's not basic programming knowledge that `product (3,4) = 4` (alright, technically that's `Foldable` not `Traversable`, but close enough
2026-02-05 11:02:37 +0100 <merijn> Leary: The reason IORef doesn't support ordering is that it's equality is based on memory address, which you can't use for ordering, since it might change
2026-02-05 11:04:19 +0100akegalj(~akegalj@173-245.dsl.iskon.hr) akegalj
2026-02-05 11:04:33 +0100 <haskellbridge> <Liamzee> just out of curiosity, if Haskell had a program paying UGs to do FOSS work, would you be donating?
2026-02-05 11:04:34 +0100 <int-e> (it's a heap object; GC can move it)
2026-02-05 11:04:56 +0100 <tomsmeding> int-e: I don't mind having to define abs and signum for matrices, but fromInteger is a pain in the behind :)
2026-02-05 11:05:08 +0100 <tomsmeding> probie: fair point, I guess
2026-02-05 11:05:45 +0100 <haskellbridge> <Liamzee> i wonder if we'll ever split num into ring subclasses
2026-02-05 11:06:03 +0100 <merijn> It's not happening
2026-02-05 11:06:08 +0100 <probie> tomsmeding: Just only allow square matrices, and then have `fromInteger` set the diagonal
2026-02-05 11:06:33 +0100 <merijn> Most proposed abstractions that are "more mathematically correct" tend to have really shit ergonomics for actual programming
2026-02-05 11:07:02 +0100 <int-e> tomsmeding: well you should only have square matrices of fixed size if you want a Num instance ;-)
2026-02-05 11:07:59 +0100 <haskellbridge> <Liamzee> merijin: I don't mean replace num, I mean, turn num into a superclass a la the FAM change
2026-02-05 11:08:56 +0100 <int-e> (Smiley because I'm not sure that I'd heed that advice myself. Convenience is worth a lot of compromises...)
2026-02-05 11:09:08 +0100 <tomsmeding> int-e: you shouldn't tag me there, you should tag probie, I've thought about this plenty :p
2026-02-05 11:09:30 +0100 <tomsmeding> oh you mean for (+)
2026-02-05 11:09:33 +0100 <tomsmeding> I do not care one whit
2026-02-05 11:09:51 +0100 <tomsmeding> if you want a num instance for arrays, you can have the matlab experience
2026-02-05 11:14:12 +0100 <int-e> tomsmeding: Sorry but I don't mind telling you things that you already know. :-P
2026-02-05 11:15:05 +0100 <tomsmeding> fair. :P
2026-02-05 11:17:01 +0100haritz(~hrtz@140.228.70.141)
2026-02-05 11:17:01 +0100haritz(~hrtz@140.228.70.141) (Changing host)
2026-02-05 11:17:01 +0100haritz(~hrtz@user/haritz) haritz
2026-02-05 11:17:01 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 246 seconds)
2026-02-05 11:19:08 +0100acidjnk(~acidjnk@p200300d6e700e57835d41376842fa308.dip0.t-ipconnect.de) acidjnk
2026-02-05 11:27:31 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-05 11:27:38 +0100bggd_(~bgg@2a01:e0a:fd5:f510:45eb:593:20bc:aaf7)
2026-02-05 11:27:44 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 11:31:28 +0100 <dutchie> hmm, how could I encode a cloze deletion thing (i.e. fill-in-the-blanks "a [ring] is structure with [compatible addition and multiplication]") as a Haskell data type. first thought would be [Either String String] where Left is deleted text and Right is plain but that doesn't encode "at least one left and one right in some order"
2026-02-05 11:32:27 +0100 <dutchie> so my example would be [Right "A", Left "ring", Right "is a structure with", Left "compatible addition and multiplication"]
2026-02-05 11:36:58 +0100__monty__(~toonn@user/toonn) (Quit: Lost terminal)
2026-02-05 11:41:33 +0100 <tomsmeding> dutchie: do you really need the restrictoin that there's at least one Right and at least one Left?
2026-02-05 11:41:46 +0100 <dutchie> morally yes, probably practically no
2026-02-05 11:41:49 +0100 <tomsmeding> no Right just sounds like a stupid cloze to me, not an invalid one
2026-02-05 11:41:56 +0100 <tomsmeding> and no Left the same
2026-02-05 11:42:16 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-05 11:42:19 +0100 <tomsmeding> data structures typically work better if they represent a "neat" space of the possibilities without edge-case restrictions
2026-02-05 11:42:26 +0100 <tomsmeding> if you want the edge-case restrictions, impose them from outside
2026-02-05 11:42:28 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 11:42:29 +0100 <dutchie> I guess NonEmpty might be better at the very least
2026-02-05 11:42:39 +0100 <tomsmeding> possibly
2026-02-05 11:43:24 +0100 <tomsmeding> you can also consider a custom data type instead of Either, just to give the constructors more sensible names
2026-02-05 11:43:43 +0100 <dutchie> yeah I was definitely going to use something custom instead of Either
2026-02-05 11:44:16 +0100 <dutchie> I think I am mostly asking out of interest about how you'd do type construction to enforce something like that
2026-02-05 11:44:40 +0100 <dutchie> (especially since Strings can be empty anyway, which immediately works around the whole point)
2026-02-05 11:46:22 +0100tomsmeding. o O ( NonEmpty Char )
2026-02-05 11:46:32 +0100 <tomsmeding> which is unergonomic as f*
2026-02-05 11:46:39 +0100 <dutchie> well I'm really using Text anyway
2026-02-05 11:46:44 +0100 <dutchie> and that
2026-02-05 11:47:05 +0100 <tomsmeding> really, having two Rights in a row is useless too, is it?
2026-02-05 11:47:58 +0100 <dutchie> true
2026-02-05 11:48:45 +0100 <tomsmeding> if you could require the whole thing to start and end with a Right, you could do an alternation thing
2026-02-05 11:48:48 +0100 <dutchie> I started trying to define some recursive list-like type
2026-02-05 11:48:56 +0100 <dutchie> yeah with alternation like that
2026-02-05 11:49:06 +0100 <tomsmeding> but if you want to allow '[gap] text [gap]' then it becomes really awkward
2026-02-05 11:51:53 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2026-02-05 11:52:48 +0100 <gentauro> tomsmeding: «completeness, /= is ≠» my bad. Yeah, I knew this -> `\neq in LaTeX` :(
2026-02-05 11:53:32 +0100oskarw(~oskarw@user/oskarw) oskarw
2026-02-05 11:54:27 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-05 11:54:41 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 11:54:58 +0100 <tomsmeding> or /not=
2026-02-05 11:55:02 +0100 <tomsmeding> \not=
2026-02-05 12:03:29 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) Enrico63
2026-02-05 12:13:46 +0100 <haskellbridge> <loonycyborg> I'm honestly more used to != than to /=
2026-02-05 12:14:21 +0100__monty__(~toonn@user/toonn) toonn
2026-02-05 12:15:44 +0100 <mesaoptimizer> MSR dropped support for GHC? Lol
2026-02-05 12:16:56 +0100xff0x(~xff0x@2405:6580:b080:900:e31d:86a4:6d4e:db85)
2026-02-05 12:17:24 +0100 <mesaoptimizer> edwardk: why is ARIA doing category theory work in rust? I was under the impression that rust has too much friction to be anywhere useful for anything related to applied category theory
2026-02-05 12:18:45 +0100 <mesaoptimizer> jreicher: thanks, I'm already using haskell-mode and eglot, but haskell-mode seems finicky. I'll try haskell-ts-mode too I guess
2026-02-05 12:19:45 +0100wickedjargon(~user@2605:8d80:5431:3c2c:999d:e956:3913:d370) (Remote host closed the connection)
2026-02-05 12:30:08 +0100oskarw(~oskarw@user/oskarw) (Ping timeout: 256 seconds)
2026-02-05 12:30:19 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) (Quit: Client closed)
2026-02-05 12:39:28 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) fp
2026-02-05 12:41:35 +0100hellwolf(~user@eddf-7eb4-816a-bf6b-0f00-4d40-07d0-2001.sta.estpak.ee) (Remote host closed the connection)
2026-02-05 12:55:17 +0100trickard_trickard
2026-02-05 13:19:46 +0100comerijn(~merijn@77.242.116.146) merijn
2026-02-05 13:21:53 +0100oskarw(~user@user/oskarw) oskarw
2026-02-05 13:22:14 +0100Square3(~Square4@user/square) Square
2026-02-05 13:22:49 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 264 seconds)
2026-02-05 13:25:07 +0100Square2(~Square@user/square) (Ping timeout: 246 seconds)
2026-02-05 13:26:33 +0100bggd_(~bgg@2a01:e0a:fd5:f510:45eb:593:20bc:aaf7) (Quit: std::move)
2026-02-05 13:30:14 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2026-02-05 13:31:06 +0100xff0x(~xff0x@2405:6580:b080:900:e31d:86a4:6d4e:db85) (Quit: xff0x)
2026-02-05 13:33:37 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds)
2026-02-05 13:34:03 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-02-05 13:35:11 +0100 <oskarw> mesaoptimizer: I have some problems with using haskell-ts-mode inside cabal project, do you have additional commands inside haskell-ts-mode? [13:32]
2026-02-05 13:37:43 +0100xff0x(~xff0x@2405:6580:b080:900:24e9:bd9c:7b25:9d4f)
2026-02-05 13:48:13 +0100oskarw(~user@user/oskarw) (Remote host closed the connection)
2026-02-05 13:49:26 +0100oskarw(~user@user/oskarw) oskarw
2026-02-05 14:01:56 +0100karenw(~karenw@user/karenw) karenw
2026-02-05 14:06:45 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2026-02-05 14:06:55 +0100 <mesaoptimizer> oskarw: i haven't yet tried haskell-ts-mode
2026-02-05 14:07:05 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-02-05 14:10:31 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 264 seconds)
2026-02-05 14:13:58 +0100comerijn(~merijn@77.242.116.146) (Quit: leaving)
2026-02-05 14:15:07 +0100merijn(~merijn@77.242.116.146) merijn
2026-02-05 14:43:25 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Ping timeout: 255 seconds)
2026-02-05 14:43:51 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 14:47:21 +0100ouilemur(~jgmerritt@user/ouilemur) (Quit: WeeChat 4.8.1)
2026-02-05 14:49:02 +0100kuribas(~user@2a02-1810-2825-6000-6394-e629-adac-ea24.ip6.access.telenet.be) kuribas
2026-02-05 14:49:10 +0100fp(~Thunderbi@wireless-86-50-141-35.open.aalto.fi) fp
2026-02-05 14:50:21 +0100karenw(~karenw@user/karenw) (Quit: Deep into that darkness peering...)
2026-02-05 14:53:35 +0100fp(~Thunderbi@wireless-86-50-141-35.open.aalto.fi) (Ping timeout: 244 seconds)
2026-02-05 14:55:08 +0100housemate(~housemate@202.7.248.67) (Quit: https://ineedsomeacidtocalmmedown.space/)
2026-02-05 14:58:48 +0100emaczen(~user@user/emaczen) emaczen
2026-02-05 14:59:55 +0100fp(~Thunderbi@wireless-86-50-141-35.open.aalto.fi) fp
2026-02-05 15:01:20 +0100ouilemur(~jgmerritt@user/ouilemur) ouilemur
2026-02-05 15:05:16 +0100tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2026-02-05 15:11:40 +0100housemate(~housemate@202.7.248.67) housemate
2026-02-05 15:16:29 +0100 <gentauro> what is `haskell-ts-mode`? Like TypeScript?
2026-02-05 15:19:09 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2026-02-05 15:23:09 +0100 <dutchie> for a mode foo-mode, foo-ts-mode is the same mode but based on tree-sitter
2026-02-05 15:23:45 +0100 <RMSBach> mesaoptimizer: Are you using projectile? I haven't used haskell-ts-mode, but regular haskell-mode works with cabal projects when projectile is aware of the project root for me.
2026-02-05 15:43:30 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-02-05 15:44:08 +0100 <gentauro> ahhh, got it
2026-02-05 15:53:42 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-05 15:53:55 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 15:58:43 +0100AlexZenon_2AlexZenon
2026-02-05 15:59:18 +0100fp(~Thunderbi@wireless-86-50-141-35.open.aalto.fi) (Ping timeout: 244 seconds)
2026-02-05 16:07:39 +0100 <mesaoptimizer> RMSBach: I'm using vanilla emacs, so no projectile. I might consider trying projectile if that's necessary.
2026-02-05 16:07:48 +0100 <mesaoptimizer> thanks for the heads up
2026-02-05 16:09:45 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-02-05 16:11:57 +0100euphores(~SASL_euph@user/euphores) euphores
2026-02-05 16:14:13 +0100trickard_trickard
2026-02-05 16:16:03 +0100 <RMSBach> mesaoptimizer: I strongly recommend projectile. Also consul-projectile. The QoL is amazing.
2026-02-05 16:16:22 +0100 <RMSBach> Also, lsp mode makes working with Haskell projects much nicer.
2026-02-05 16:21:12 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2026-02-05 16:31:54 +0100 <mesaoptimizer> RMSBach: how does lsp mode compare to the use of eglot? Because I see someone else recommended the use of eglot to me in response to my question
2026-02-05 16:32:09 +0100 <mesaoptimizer> if you don't have an idea, that's fine, I'll try lsp myself eventually then
2026-02-05 16:33:15 +0100 <RMSBach> I've not tried eglot.
2026-02-05 16:33:21 +0100tromp(~textual@2001:1c00:3487:1b00:4842:24c6:bd5c:fe37) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-02-05 16:39:16 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2026-02-05 16:46:02 +0100rekahsoft(~rekahsoft@70.51.99.245) rekahsoft
2026-02-05 16:55:16 +0100RMSBach(~RMSBach@24.210.9.182) (Ping timeout: 265 seconds)
2026-02-05 16:55:16 +0100RSBach(~RMSBach@24.210.9.182) RMSBach
2026-02-05 16:55:40 +0100RSBachRMSBach
2026-02-05 16:55:58 +0100tromp(~textual@2001:1c00:3487:1b00:4842:24c6:bd5c:fe37)
2026-02-05 17:06:37 +0100 <machinedgod> Good morning everyone. Question re: linear types, again - is it possible to somehow convert between numeric types linearly? I realized 'fromIntegral' is non-linear, while fromInteger is - but even if I wanted to implement manually my specific case (Int -> Float wrapped with a newtype), I cannot seem to find any function that'd let me do the raw conversion linearly.
2026-02-05 17:07:35 +0100 <machinedgod> (also curiously, trying to pattern match on a specific value and copying it "conv (MyWrap 1) = AnotherWrap 1" also gets compiler to complain.
2026-02-05 17:08:12 +0100 <tomsmeding> wouldn't that be because you're not copying the 1, you're dropping it and then creating a new one?
2026-02-05 17:08:34 +0100 <tomsmeding> it seems this is simply an omission in linear-base
2026-02-05 17:09:10 +0100 <machinedgod> Oh it might be, I wouldn't know in all honesty. I checked the code in linear-base and it seems like fromIntegral is just copied over from 'base'
2026-02-05 17:09:27 +0100tomsmedingdoesn't see any fromIntegral in linear-base at all
2026-02-05 17:11:04 +0100 <tomsmeding> if you want to be thorough, you could define your own linear Integral class with a linear toInteger method, define fromIntegral as fromInteger . toInteger as a linear function, and then write RULEs like in base
2026-02-05 17:11:17 +0100 <tomsmeding> or you can skip all that and unsafeCoerce the specific conversion that you need
2026-02-05 17:11:34 +0100 <tomsmeding> even if you go the thorough route, you'll have to do that for the specific conversions anyway
2026-02-05 17:12:37 +0100 <tomsmeding> machinedgod: eventually, these conversions boil down to calls to functions from GHC.Exts, like int2Float#
2026-02-05 17:12:58 +0100 <machinedgod> tomsmeding: Aye, that's where I looked at, and hoped to find something like int2Float that's linear, but no luck.
2026-02-05 17:13:08 +0100 <tomsmeding> yeah, and those primops are simply not linear
2026-02-05 17:13:28 +0100 <tomsmeding> morally, of course, they are, so it seems it's up to you to declare that (by using unsafeCoerce)
2026-02-05 17:13:40 +0100 <machinedgod> I considered massaging the value forcefully with Ur, but - I wanted to verify that I am not just blind or missing something (like, toInteger cannot be logically linear)
2026-02-05 17:14:21 +0100 <machinedgod> Would this be considered, how should I call it - acceptable quality production code for current iteration of linear-base and linear types?
2026-02-05 17:14:22 +0100 <tomsmeding> not every type that admits a nonlinear toInteger necessarily admits a linear toInteger
2026-02-05 17:14:31 +0100 <tomsmeding> most will, however
2026-02-05 17:14:48 +0100 <tomsmeding> I think so
2026-02-05 17:15:09 +0100 <machinedgod> tomsmeding: That's a wise observation! I was only focused on my newtype which holds and int anyway, so I think I'll be good. Thank you for your help, I appreciate it!
2026-02-05 17:15:18 +0100 <tomsmeding> it's probably a good idea to define `unsafeToLinear :: (a -> b) -> (a %1-> b); unsafeToLinear = unsafeCoerce` so that you don't end up accidentally unsafeCoercing too much
2026-02-05 17:15:19 +0100 <machinedgod> (*an int)
2026-02-05 17:16:09 +0100 <machinedgod> tomsmeding: Aye, that's the plan, when coercions are involved, I prefer to be as specific as I can, too
2026-02-05 17:16:09 +0100 <tomsmeding> (that observation is not a reason to not go through with this though; the same can be said for fromInteger, and linear-base has a linear fromInteger just fine)
2026-02-05 17:16:14 +0100 <tomsmeding> nice
2026-02-05 17:19:46 +0100 <haskellbridge> <Morj> Those of you who have mastodon (or another activitypub profile): can you search for this profile and tell me if you see the message in it? https://random.test.morj.men/u/morj
2026-02-05 17:19:49 +0100 <haskellbridge> <Morj> Testing my impl
2026-02-05 17:21:44 +0100 <haskellbridge> <Morj> I see a lot of people trying to open it in the browser. Not yet implemented, sorry
2026-02-05 17:26:15 +0100wickedjargon(~user@24.83.46.194) wickedjargon
2026-02-05 17:27:04 +0100srazkvt(~sarah@user/srazkvt) srazkvt
2026-02-05 17:31:54 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-05 17:38:19 +0100 <darkling> Morj: Yes, I see it.
2026-02-05 17:38:46 +0100 <haskellbridge> <Morj> Thanks!
2026-02-05 17:38:54 +0100 <haskellbridge> <Morj> Aand git commt
2026-02-05 17:46:20 +0100srazkvt(~sarah@user/srazkvt) (Quit: Konversation terminated!)
2026-02-05 18:09:20 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2026-02-05 18:15:45 +0100chele(~chele@user/chele) (Remote host closed the connection)
2026-02-05 18:32:41 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-02-05 18:34:55 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 240 seconds)
2026-02-05 18:40:38 +0100jmcantrell_jmcantrell
2026-02-05 18:53:42 +0100Jackneill_(~Jackneill@188-143-82-106.pool.digikabel.hu)
2026-02-05 18:54:36 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds)
2026-02-05 18:56:16 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-05 18:56:29 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-05 18:56:43 +0100jackneill__(~Jackneill@94-21-15-213.pool.digikabel.hu) (Ping timeout: 264 seconds)
2026-02-05 19:03:31 +0100tremon(~tremon@83.80.159.219) tremon
2026-02-05 19:08:10 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2026-02-05 19:13:46 +0100divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-02-05 19:14:02 +0100divlamir(~divlamir@user/divlamir) divlamir
2026-02-05 19:16:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 19:21:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-05 19:26:23 +0100cattiesCatty
2026-02-05 19:26:40 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-05 19:27:11 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2026-02-05 19:32:03 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 19:33:55 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds)
2026-02-05 19:36:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 19:40:02 +0100Googulator(~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) (Quit: Client closed)
2026-02-05 19:40:18 +0100Googulator(~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu)
2026-02-05 19:47:21 +0100 <EvanR> we love types for reasons... but type signatures are sometimes optional... and it's possible to get away with various dilutions of type safety in haskell. I.e. using strings in tuples instead of constructors, and the literal Dynamic type
2026-02-05 19:47:34 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 19:47:35 +0100 <EvanR> I wonder if it would make code smaller, or "even worse" trying to use this style xD
2026-02-05 19:47:55 +0100 <EvanR> (more code)
2026-02-05 19:50:24 +0100 <[exa]> EvanR: you mean like, ("Just", "five") and ("Nothing", "")
2026-02-05 19:51:00 +0100 <EvanR> I guess ("Nothing", undefined) xD
2026-02-05 19:51:05 +0100 <EvanR> ok it's not a great start
2026-02-05 19:52:15 +0100Tuplanolla(~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) Tuplanolla
2026-02-05 19:52:18 +0100 <EvanR> ["Just", "five"] vs ["Nothing"]
2026-02-05 19:52:44 +0100 <[exa]> ah yes the List Technology
2026-02-05 19:54:01 +0100 <[exa]> well anyway you can go `data Scheme = Cons Scheme Scheme | Num Int | Symbol String | Nil | ...` and get wild
2026-02-05 19:54:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-05 19:55:37 +0100 <EvanR> would seem to expand the code vs idiomatic haskell.... maybe
2026-02-05 19:55:43 +0100 <tomsmeding> EvanR: we have our own brand of that, try church encodings
2026-02-05 19:55:57 +0100 <EvanR> oh?
2026-02-05 19:56:01 +0100 <tomsmeding> may need to embed in `newtype X = X (X -> X)` for proper typelessness
2026-02-05 19:56:30 +0100 <tomsmeding> it's all a function! Why throw an error if you pass 5 to a function expecting a Maybe String? It will just... do something!
2026-02-05 19:56:36 +0100 <[exa]> EvanR: not really; you add instance Monad and overloaded lists and strings and labels, and you're generating this for free
2026-02-05 19:56:55 +0100 <EvanR> tomsmeding, now you're talking
2026-02-05 19:57:21 +0100lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2026-02-05 19:57:40 +0100 <[exa]> tomsmeding: I love that
2026-02-05 19:57:54 +0100__monty__(~toonn@user/toonn) (Ping timeout: 244 seconds)
2026-02-05 19:58:06 +0100 <tomsmeding> I like how I get the most agreement here when I post the stupidest suggestions
2026-02-05 19:58:11 +0100 <Clint> speaking of getting wild, is there any type magic which would let me do something like data Thingy = ConstructorV1 a | ConstructorV2 a b and be able to pattern-match a ConstructorV2 value with (ConstructorV1 a)?
2026-02-05 19:58:35 +0100 <EvanR> o_O
2026-02-05 19:58:45 +0100 <tomsmeding> pattern synonyms?
2026-02-05 19:59:04 +0100 <tomsmeding> have ConstructorV{1,2} actually be pattern synonyms that do whatever you want with the underlying Thingy definition
2026-02-05 19:59:50 +0100Clintreads.
2026-02-05 20:00:24 +0100 <[exa]> yeah, view patterns or pattern synonyms
2026-02-05 20:01:32 +0100 <Clint> i'll give it a shot, thanks
2026-02-05 20:05:27 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2026-02-05 20:05:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 20:06:06 +0100akegalj(~akegalj@173-245.dsl.iskon.hr) (Quit: leaving)
2026-02-05 20:06:55 +0100hellwolf(~user@13cd-fe1e-a030-6e4e-0f00-4d40-07d0-2001.sta.estpak.ee) hellwolf
2026-02-05 20:08:37 +0100 <[exa]> can one do such a multi-target pattern synonym without going through a view pattern?
2026-02-05 20:09:05 +0100 <tomsmeding> essentially all interesting usecases of a pattern synonym require a view pattern to define the synonym
2026-02-05 20:09:11 +0100 <tomsmeding> perhaps not all, but many
2026-02-05 20:11:47 +0100 <[exa]> Clint: btw if you didn't google it yet, this probably does it https://stackoverflow.com/a/43839121
2026-02-05 20:11:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-02-05 20:12:38 +0100 <haskellbridge> <Morj> Should I suggest to instead encode the thingy as data Thingy = Thingy a (Maybe b)?
2026-02-05 20:12:52 +0100 <[exa]> ( s/google/find/ )
2026-02-05 20:13:16 +0100 <[exa]> Morj: I assume the main issue is that the types would get more complex
2026-02-05 20:13:45 +0100 <[exa]> e.g. add a few constructors that don't actually have the `a`
2026-02-05 20:14:02 +0100 <int-e> [exa]: it's fine, you can google (most) things with DuckDuckGo :P
2026-02-05 20:14:06 +0100 <Clint> Morj: the whole point is that i want to add a field to the type without breaking the API
2026-02-05 20:14:30 +0100 <tomsmeding> "I want to modify constructors of a data type without modifying the API" is one of the design usecases of pattern synonyms
2026-02-05 20:14:39 +0100 <[exa]> int-e: nah the original sentence I wrote sounded a bit too much like "oh lemme google that for you" which I didn't intend
2026-02-05 20:15:02 +0100 <Clint> i was just reading https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/pattern_synonyms.html
2026-02-05 20:15:49 +0100 <int-e> [exa]: Ah. FWIW to me it sounded like you did google it out of curiosity and shared the result and method, without judgement. I could see it being read differently of course.
2026-02-05 20:16:07 +0100 <[exa]> yap. :]
2026-02-05 20:16:59 +0100 <Clint> i did not read it differently, ftr
2026-02-05 20:21:18 +0100tromp(~textual@2001:1c00:3487:1b00:4842:24c6:bd5c:fe37) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-02-05 20:22:45 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 20:27:33 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-02-05 20:38:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 20:42:15 +0100wickedjargon(~user@24.83.46.194) (Remote host closed the connection)
2026-02-05 20:43:24 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-02-05 20:43:42 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-05 20:43:42 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2026-02-05 20:44:41 +0100kuribas(~user@2a02-1810-2825-6000-6394-e629-adac-ea24.ip6.access.telenet.be) (Remote host closed the connection)
2026-02-05 20:44:45 +0100Lord_of_Life_Lord_of_Life
2026-02-05 20:45:32 +0100Square2(~Square@user/square) Square
2026-02-05 20:49:09 +0100Square3(~Square4@user/square) (Ping timeout: 244 seconds)
2026-02-05 20:52:33 +0100Umeaboy(~Umeaboy@h77-53-243-72.cust.bredband2.com) Umeaboy
2026-02-05 20:54:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 20:59:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 21:02:29 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 260 seconds)
2026-02-05 21:06:06 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2026-02-05 21:07:44 +0100xal(~xal@mx1.xal.systems) (Quit: bye)
2026-02-05 21:08:22 +0100xal(~xal@mx1.xal.systems) xal
2026-02-05 21:08:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 21:08:50 +0100yin(~zero@user/zero) (Remote host closed the connection)
2026-02-05 21:10:02 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2026-02-05 21:13:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 21:17:45 +0100redshuffle(~quassel@45.43.70.75) (Remote host closed the connection)
2026-02-05 21:17:52 +0100redshuffle(~quassel@45.43.70.75)
2026-02-05 21:20:06 +0100 <EvanR> after adding postgresql-simple to my cabal file, and doing cabal build, this weird behavior where the build ends at a random dependency, says "completed" and just hangs
2026-02-05 21:20:21 +0100 <EvanR> control C and doing the command again seems to start from another place and hang somewhere else each time
2026-02-05 21:20:57 +0100 <EvanR> if it "hangs" on "building" I wouldn't be as suspicious
2026-02-05 21:21:24 +0100Square3(~Square4@user/square) Square
2026-02-05 21:22:32 +0100 <EvanR> looks like it eventually completed... the long running build might have been vector
2026-02-05 21:23:15 +0100Square2(~Square@user/square) (Ping timeout: 245 seconds)
2026-02-05 21:23:39 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 252 seconds)
2026-02-05 21:23:50 +0100 <EvanR> I'm wrong still going
2026-02-05 21:24:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 21:24:19 +0100 <EvanR> I see, the reports are asynchronous
2026-02-05 21:25:58 +0100 <haskellbridge> <Morj> If you build with -j1, I think this would tell you which exact package is freezing
2026-02-05 21:26:05 +0100 <haskellbridge> <Morj> If cabal-install has -j
2026-02-05 21:31:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-05 21:31:51 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-05 21:31:55 +0100 <tomsmeding> yes, `cabal build -j1` is a thing
2026-02-05 21:35:14 +0100 <EvanR> stupid question, when you are cabal building something, is there are most 1 version of each dependency "in use" for that build. And so if the same package comes up multiple ways, there needs to be an overlapping version bound
2026-02-05 21:35:46 +0100 <haskellbridge> <Morj> Yes, there can only be one version of each package in the whole build tree
2026-02-05 21:36:10 +0100 <EvanR> that explains a lot xD
2026-02-05 21:38:50 +0100Carlodiociottene(~Carlodioc@host51.141-13-31.as49605.net)
2026-02-05 21:39:27 +0100Carlodiociottene(~Carlodioc@host51.141-13-31.as49605.net) (Client Quit)
2026-02-05 21:40:16 +0100 <tomsmeding> EvanR: yes, but with caveats: in a single dependency tree, every package can indeed occur with only one version. However, cabal has the concept of a "build dependency", which is not linked in but used as an executable; typical examples are alex, happy, c2hs. Those have their _own_ dependency tree, and those trees can contain different versions
2026-02-05 21:40:52 +0100 <EvanR> that's convenient
2026-02-05 21:40:55 +0100 <tomsmeding> this is relevant knowledge if you're trying to constrain the version of a dependency used to build a build tool; this is what the "any." in a cabal.project.freeze is for :p
2026-02-05 21:41:05 +0100 <tomsmeding> (I learned this the hard way)
2026-02-05 21:41:39 +0100 <EvanR> I'll have to read up on this freeze file you speak of
2026-02-05 21:41:51 +0100 <tomsmeding> ah, then that was not a helpful reference
2026-02-05 21:41:54 +0100 <tomsmeding> (`cabal freeze`)
2026-02-05 21:42:06 +0100 <tomsmeding> it's part of the syntax of a `constraints:` block in a cabal.project file
2026-02-05 21:42:19 +0100merijn(~merijn@62.45.136.136) merijn
2026-02-05 21:42:29 +0100 <tomsmeding> writing `constraints: foo >= 2` constrains the main dependency tree only; writing `constraints: any.foo >= 2` also constrains build tool dependencies
2026-02-05 21:42:53 +0100 <tomsmeding> `cabal freeze` emits a "freeze file" with such constraints for everything (to make the build deterministic), and it emits any. constraints
2026-02-05 21:46:56 +0100merijn(~merijn@62.45.136.136) (Ping timeout: 240 seconds)
2026-02-05 21:47:44 +0100yin(~zero@user/zero) zero
2026-02-05 21:54:26 +0100 <EvanR> I see, because without a freeze file cabal might come up with a different solution set in a different circumstances?
2026-02-05 21:54:43 +0100 <EvanR> it checks the phase of the moon
2026-02-05 21:54:53 +0100 <tomsmeding> well, if one does `cabal update`, cabal may select newer versions
2026-02-05 21:54:55 +0100 <tomsmeding> :)
2026-02-05 21:55:19 +0100 <tomsmeding> or because system libraries changed and some pkg-config dependencies are now available or not available, different flags/packages are selected
2026-02-05 21:55:21 +0100 <EvanR> wait that needs to be an acme package
2026-02-05 21:56:11 +0100 <EvanR> get the phase of the moon as a bespoke sum type, or a float
2026-02-05 21:56:34 +0100 <tomsmeding> and do that in Setup.hs, and change dependencies based on it?
2026-02-05 21:56:39 +0100 <EvanR> yeah
2026-02-05 21:56:57 +0100 <EvanR> you keep coming up with the best ideas!
2026-02-05 21:57:06 +0100 <tomsmeding> well this was your idea :p
2026-02-05 21:57:44 +0100wickedjargon(~user@2605:8d80:5430:4910:f62b:7e78:f176:a13) wickedjargon
2026-02-05 21:58:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 22:00:00 +0100 <tomsmeding> (this idea of a "freeze file" is also called a "lock file" in different ecosystems; see also: package-lock.json, Cargo.lock, perhaps go.sum but I'm not sure I recall correctly there)
2026-02-05 22:00:49 +0100jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 260 seconds)
2026-02-05 22:02:36 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-02-05 22:02:46 +0100 <mauke> (or a snapshot file in carton)
2026-02-05 22:03:02 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-05 22:06:16 +0100jmcantrell_jmcantrell
2026-02-05 22:09:55 +0100 <EvanR> apparently go has a minimal version selection algorithm instead of a freeze file, and I'm not sure this is enough to deal with some of your use cases
2026-02-05 22:10:14 +0100 <tomsmeding> my use cases?
2026-02-05 22:10:15 +0100 <EvanR> pkg-config giving different results for stuff not written in go
2026-02-05 22:10:22 +0100 <EvanR> influencing the result
2026-02-05 22:10:24 +0100 <tomsmeding> ah
2026-02-05 22:10:30 +0100 <tomsmeding> luckily I don't write go :)
2026-02-05 22:10:34 +0100 <EvanR> \o/
2026-02-05 22:11:59 +0100 <EvanR> though this random article about the theory seems interesting for its own sake https://research.swtch.com/vgo-mvs
2026-02-05 22:12:23 +0100 <EvanR> "The problem minimal version selection solves is NL-complete
2026-02-05 22:12:24 +0100 <EvanR> "
2026-02-05 22:13:38 +0100 <tomsmeding> if he's talking about version resolution, yes, that's constraint solving on a language expressive enough to easily encode SAT
2026-02-05 22:13:46 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 22:15:05 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-02-05 22:16:33 +0100 <tomsmeding> which is why cabal sometimes takes a while doing it :p
2026-02-05 22:19:06 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-05 22:20:04 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds)
2026-02-05 22:22:03 +0100ringo_(~ringo@157.230.117.128) (Ping timeout: 244 seconds)
2026-02-05 22:23:55 +0100pavonia(~user@user/siracusa) siracusa
2026-02-05 22:25:14 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-05 22:29:02 +0100ringo_(~ringo@157.230.117.128) ringo_
2026-02-05 22:29:33 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 22:34:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-02-05 22:39:47 +0100divlamir_(~divlamir@user/divlamir) divlamir
2026-02-05 22:40:18 +0100peterbecich(~Thunderbi@71.84.33.135) (Quit: peterbecich)
2026-02-05 22:40:36 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-05 22:42:15 +0100_JusSx_(~jussx@78.210.223.162) _JusSx_
2026-02-05 22:42:40 +0100divlamir(~divlamir@user/divlamir) (Ping timeout: 246 seconds)
2026-02-05 22:45:03 +0100divlamir_(~divlamir@user/divlamir) (Ping timeout: 252 seconds)
2026-02-05 22:45:19 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds)
2026-02-05 22:45:21 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-05 22:49:40 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-05 22:50:14 +0100divlamir(~divlamir@user/divlamir) divlamir
2026-02-05 22:51:08 +0100 <jreicher> mesaoptimizer: The main difference between lsp-mode and eglot is that eglot tries to integrate with existing frontends in Emacs and does not have any of its own. That makes it look and feel like "standard Emacs". Consequently it has also become part of core, but it is worth upgrading both it and flymake to more recent versions.