| 2026-02-05 00:01:34 +0100 | tromp | (~textual@2001:1c00:3487:1b00:10a6:5d4a:b26:4065) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-02-05 00:04:09 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 00:08:56 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 00:15:24 +0100 | mange | (~mange@user/mange) mange |
| 2026-02-05 00:18:37 +0100 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 2026-02-05 00:19:53 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 00:24:13 +0100 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
| 2026-02-05 00:24:55 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-02-05 00:28:55 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 240 seconds) |
| 2026-02-05 00:33:40 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 00:38:15 +0100 | merijn | (~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 +0100 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds) |
| 2026-02-05 00:49:23 +0100 | merijn | (~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 +0100 | qqq | (~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 +0100 | merijn | (~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 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 01:10:09 +0100 | trickard_ | trickard |
| 2026-02-05 01:12:29 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2026-02-05 01:13:12 +0100 | weary-traveler | (~user@user/user363627) user363627 |
| 2026-02-05 01:13:29 +0100 | EvanR | (~EvanR@user/evanr) (Quit: Leaving) |
| 2026-02-05 01:15:02 +0100 | EvanR | (~EvanR@user/evanr) EvanR |
| 2026-02-05 01:16:19 +0100 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
| 2026-02-05 01:21:30 +0100 | vidak | (~vidak@2407:e400:7800:2c01:d0be:76f8:cc84:bd4a) vidak |
| 2026-02-05 01:23:10 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 01:27:42 +0100 | haritz | (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in) |
| 2026-02-05 01:27:50 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-02-05 01:34:58 +0100 | Googulator | (~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) (Quit: Client closed) |
| 2026-02-05 01:35:08 +0100 | cyphase | (~cyphase@user/cyphase) cyphase |
| 2026-02-05 01:35:12 +0100 | Googulator | (~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) |
| 2026-02-05 01:38:19 +0100 | w00ter | (~w00ter@user/w00ter) (Quit: Leaving...) |
| 2026-02-05 01:38:56 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 01:43:53 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2026-02-05 01:50:14 +0100 | Square2 | (~Square@user/square) Square |
| 2026-02-05 01:54:43 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 01:55:18 +0100 | Tuplanolla | (~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) (Quit: Leaving.) |
| 2026-02-05 01:58:52 +0100 | m_a_r_k | (~m_a_r_k@archlinux/support/mark) (Ping timeout: 256 seconds) |
| 2026-02-05 01:59:43 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-05 02:01:42 +0100 | xff0x | (~xff0x@2405:6580:b080:900:d171:1c19:51a5:d6b5) (Ping timeout: 256 seconds) |
| 2026-02-05 02:03:03 +0100 | tremon | (~tremon@83.80.159.219) (Remote host closed the connection) |
| 2026-02-05 02:08:07 +0100 | otto_s | (~user@p5de2f01c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 2026-02-05 02:09:30 +0100 | otto_s | (~user@p4ff27c83.dip0.t-ipconnect.de) |
| 2026-02-05 02:10:19 +0100 | acidjnk | (~acidjnk@p200300d6e700e57835d41376842fa308.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 2026-02-05 02:10:31 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 02:10:33 +0100 | m_a_r_k | (~m_a_r_k@archlinux/support/mark) m_a_r_k |
| 2026-02-05 02:14:56 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 02:25:52 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 02:26:51 +0100 | hakutaku | (~textual@user/hakutaku) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2026-02-05 02:28:44 +0100 | omidmash0 | (~omidmash@user/omidmash) omidmash |
| 2026-02-05 02:29:34 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 246 seconds) |
| 2026-02-05 02:29:55 +0100 | w00ter | (~w00ter@user/w00ter) w00ter |
| 2026-02-05 02:31:13 +0100 | omidmash | (~omidmash@user/omidmash) (Ping timeout: 260 seconds) |
| 2026-02-05 02:31:13 +0100 | omidmash0 | omidmash |
| 2026-02-05 02:32:43 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-05 02:43:54 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 02:48:37 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-05 02:59:15 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 03:03:51 +0100 | hakutaku | (~textual@user/hakutaku) hakutaku |
| 2026-02-05 03:04:07 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-02-05 03:05:10 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2026-02-05 03:15:05 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 03:15:18 +0100 | hakutaku | (~textual@user/hakutaku) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2026-02-05 03:20:25 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-05 03:30:50 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 03:34:23 +0100 | jmcantrell | (~weechat@user/jmcantrell) (Ping timeout: 265 seconds) |
| 2026-02-05 03:35:44 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 03:40:23 +0100 | pavonia_ | (~user@user/siracusa) siracusa |
| 2026-02-05 03:40:35 +0100 | pavonia | (~user@user/siracusa) (Read error: Connection reset by peer) |
| 2026-02-05 03:40:56 +0100 | pavonia_ | pavonia |
| 2026-02-05 03:46:38 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 03:51:19 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 03:59:27 +0100 | Lord_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 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
| 2026-02-05 04:00:01 +0100 | attlin | (~user@user/attlin) (Quit: Leaving) |
| 2026-02-05 04:02:00 +0100 | attlin | (~user@user/attlin) attlin |
| 2026-02-05 04:02:26 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 04:09:37 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-05 04:20:29 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 04:25:08 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-02-05 04:35:51 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 04:40:31 +0100 | Googulator | (~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) (Quit: Client closed) |
| 2026-02-05 04:40:45 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-02-05 04:40:47 +0100 | Googulator | (~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) |
| 2026-02-05 04:48:50 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 04:54:08 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2026-02-05 05:00:19 +0100 | jreicher | (~joelr@user/jreicher) (Ping timeout: 264 seconds) |
| 2026-02-05 05:00:56 +0100 | jreicher | (~joelr@user/jreicher) jreicher |
| 2026-02-05 05:01:43 +0100 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-02-05 05:02:31 +0100 | chexum_ | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 2026-02-05 05:02:42 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) chexum |
| 2026-02-05 05:04:37 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 05:07:02 +0100 | omidmash | (~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat) |
| 2026-02-05 05:09:55 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-05 05:11:53 +0100 | omidmash | (~omidmash@user/omidmash) omidmash |
| 2026-02-05 05:14:02 +0100 | jmcantrell_ | (~weechat@user/jmcantrell) jmcantrell |
| 2026-02-05 05:18:16 +0100 | Pozyomka | (~pyon@user/pyon) (Ping timeout: 246 seconds) |
| 2026-02-05 05:20:14 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 2026-02-05 05:20:16 +0100 | Pozyomka | (~pyon@user/pyon) pyon |
| 2026-02-05 05:20:24 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 05:20:37 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
| 2026-02-05 05:25:16 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-05 05:27:59 +0100 | wickedjargon | (~user@2605:8d80:5431:3c2c:999d:e956:3913:d370) wickedjargon |
| 2026-02-05 05:36:09 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 05:40:48 +0100 | machinedgod | (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 2026-02-05 05:42:58 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-02-05 05:44:40 +0100 | jle` | (~jle`@2603:8001:3b00:11:aa96:1bfc:d44b:9e) jle` |
| 2026-02-05 05:47:14 +0100 | emaczen | (~user@user/emaczen) (Ping timeout: 256 seconds) |
| 2026-02-05 05:54:11 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 05:58:55 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 06:05:12 +0100 | xff0x_ | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2026-02-05 06:06:22 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 255 seconds) |
| 2026-02-05 06:09:59 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 06:15:14 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2026-02-05 06:25:46 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 06:30:55 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-05 06:40:48 +0100 | mange | (~mange@user/mange) (Quit: Quittin' time!) |
| 2026-02-05 06:40:54 +0100 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 260 seconds) |
| 2026-02-05 06:41:33 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 06:46:28 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-05 06:49:16 +0100 | jmcantrell_ | (~weechat@user/jmcantrell) (Ping timeout: 246 seconds) |
| 2026-02-05 06:49:54 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 06:51:01 +0100 | divya | (~divya@140.238.251.170) (Ping timeout: 264 seconds) |
| 2026-02-05 06:53:22 +0100 | michalz | (~michalz@185.246.207.200) |
| 2026-02-05 06:54:32 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 07:01:55 +0100 | hakutaku | (~textual@user/hakutaku) hakutaku |
| 2026-02-05 07:02:51 +0100 | hakutaku | (~textual@user/hakutaku) (Client Quit) |
| 2026-02-05 07:05:31 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 07:08:51 +0100 | takuan | (~takuan@d8D86B9E9.access.telenet.be) |
| 2026-02-05 07:10:36 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-02-05 07:21:19 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 07:24:31 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 2026-02-05 07:24:56 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
| 2026-02-05 07:28:13 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-05 07:39:21 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 07:41:20 +0100 | constxd | (~constxd@user/constxd) (Quit: kiwi irc - hadmade client) |
| 2026-02-05 07:43:47 +0100 | constxd | (~constxd@user/constxd) constxd |
| 2026-02-05 07:44:25 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2026-02-05 07:50:51 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 07:54:50 +0100 | emmanuelux | (~em@user/emmanuelux) emmanuelux |
| 2026-02-05 07:55:11 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-05 08:04:52 +0100 | ags | (~ags@p200300dcb736f1003d348acd0f4709f1.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 2026-02-05 08:05:39 +0100 | ystael | (~ystael@user/ystael) (Ping timeout: 250 seconds) |
| 2026-02-05 08:06:13 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 08:06:19 +0100 | dolio | (~dolio@130.44.140.168) (Ping timeout: 264 seconds) |
| 2026-02-05 08:11:18 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2026-02-05 08:14:07 +0100 | dolio | (~dolio@130.44.140.168) dolio |
| 2026-02-05 08:17:31 +0100 | ystael | (~ystael@user/ystael) ystael |
| 2026-02-05 08:22:01 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 08:25:21 +0100 | divya | (divya@140.238.251.170) divya |
| 2026-02-05 08:25:21 +0100 | marinelli | (~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli) |
| 2026-02-05 08:25:39 +0100 | ft | (~ft@p508db4c0.dip0.t-ipconnect.de) (Quit: leaving) |
| 2026-02-05 08:26:33 +0100 | emmanuelux | (~em@user/emmanuelux) (Read error: Connection reset by peer) |
| 2026-02-05 08:27:01 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-05 08:37:47 +0100 | emmanuelux | (~em@user/emmanuelux) emmanuelux |
| 2026-02-05 08:37:49 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 08:42:58 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-02-05 08:46:41 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 08:49:18 +0100 | tromp | (~textual@2001:1c00:3487:1b00:4842:24c6:bd5c:fe37) |
| 2026-02-05 08:49:52 +0100 | trickard | (~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-02-05 08:50:05 +0100 | trickard_ | (~trickard@cpe-61-98-47-163.wireline.com.au) |
| 2026-02-05 08:50:37 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 2026-02-05 08:51:19 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 08:51:52 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 08:56:49 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2026-02-05 09:07:18 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 09:12:24 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 2026-02-05 09:12:34 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
| 2026-02-05 09:13:49 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-05 09:23:41 +0100 | emmanuelux | (~em@user/emmanuelux) (Quit: bye) |
| 2026-02-05 09:25:20 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 09:25:21 +0100 | lbseale | (~quassel@user/ep1ctetus) (Ping timeout: 252 seconds) |
| 2026-02-05 09:27:07 +0100 | emmanuelux | (~em@user/emmanuelux) emmanuelux |
| 2026-02-05 09:30:19 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-02-05 09:41:25 +0100 | ouilemur | (~jgmerritt@user/ouilemur) (Ping timeout: 250 seconds) |
| 2026-02-05 09:42:29 +0100 | emmanuelux | (~em@user/emmanuelux) (Quit: bye) |
| 2026-02-05 09:43:09 +0100 | ouilemur | (~jgmerritt@user/ouilemur) ouilemur |
| 2026-02-05 10:00:18 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 2026-02-05 10:07:47 +0100 | merijn | (~merijn@77.242.116.146) merijn |
| 2026-02-05 10:12:02 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
| 2026-02-05 10:13:38 +0100 | trickard_ | trickard |
| 2026-02-05 10:19:49 +0100 | chele | (~chele@user/chele) chele |
| 2026-02-05 10:25:18 +0100 | gentauro | Hmmm, 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 +0100 | gentauro | which 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 +0100 | xff0x_ | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Quit: xff0x_) |
| 2026-02-05 10:42:10 +0100 | trickard | (~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-02-05 10:42:23 +0100 | trickard_ | (~trickard@cpe-61-98-47-163.wireline.com.au) |
| 2026-02-05 10:42:50 +0100 | xff0x | (~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 +0100 | trickard_ | (~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 +0100 | tremon | (~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 +0100 | trickard_ | (~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 +0100 | tomsmeding | was 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 +0100 | mjrosenb | (~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 +0100 | akegalj | (~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 +0100 | haritz | (~hrtz@140.228.70.141) |
| 2026-02-05 11:17:01 +0100 | haritz | (~hrtz@140.228.70.141) (Changing host) |
| 2026-02-05 11:17:01 +0100 | haritz | (~hrtz@user/haritz) haritz |
| 2026-02-05 11:17:01 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 246 seconds) |
| 2026-02-05 11:19:08 +0100 | acidjnk | (~acidjnk@p200300d6e700e57835d41376842fa308.dip0.t-ipconnect.de) acidjnk |
| 2026-02-05 11:27:31 +0100 | trickard_ | (~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-02-05 11:27:38 +0100 | bggd_ | (~bgg@2a01:e0a:fd5:f510:45eb:593:20bc:aaf7) |
| 2026-02-05 11:27:44 +0100 | trickard_ | (~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 +0100 | trickard_ | (~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 +0100 | trickard_ | (~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 +0100 | tomsmeding | . 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 +0100 | wootehfoot | (~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 +0100 | oskarw | (~oskarw@user/oskarw) oskarw |
| 2026-02-05 11:54:27 +0100 | trickard_ | (~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-02-05 11:54:41 +0100 | trickard_ | (~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 +0100 | Enrico63 | (~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 +0100 | xff0x | (~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 +0100 | wickedjargon | (~user@2605:8d80:5431:3c2c:999d:e956:3913:d370) (Remote host closed the connection) |
| 2026-02-05 12:30:08 +0100 | oskarw | (~oskarw@user/oskarw) (Ping timeout: 256 seconds) |
| 2026-02-05 12:30:19 +0100 | Enrico63 | (~Enrico63@host-79-27-153-69.retail.telecomitalia.it) (Quit: Client closed) |
| 2026-02-05 12:39:28 +0100 | fp | (~Thunderbi@89-27-10-140.bb.dnainternet.fi) fp |
| 2026-02-05 12:41:35 +0100 | hellwolf | (~user@eddf-7eb4-816a-bf6b-0f00-4d40-07d0-2001.sta.estpak.ee) (Remote host closed the connection) |
| 2026-02-05 12:55:17 +0100 | trickard_ | trickard |
| 2026-02-05 13:19:46 +0100 | comerijn | (~merijn@77.242.116.146) merijn |
| 2026-02-05 13:21:53 +0100 | oskarw | (~user@user/oskarw) oskarw |
| 2026-02-05 13:22:14 +0100 | Square3 | (~Square4@user/square) Square |
| 2026-02-05 13:22:49 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 2026-02-05 13:25:07 +0100 | Square2 | (~Square@user/square) (Ping timeout: 246 seconds) |
| 2026-02-05 13:26:33 +0100 | bggd_ | (~bgg@2a01:e0a:fd5:f510:45eb:593:20bc:aaf7) (Quit: std::move) |
| 2026-02-05 13:30:14 +0100 | machinedgod | (~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod |
| 2026-02-05 13:31:06 +0100 | xff0x | (~xff0x@2405:6580:b080:900:e31d:86a4:6d4e:db85) (Quit: xff0x) |
| 2026-02-05 13:33:37 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds) |
| 2026-02-05 13:34:03 +0100 | chromoblob | (~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 +0100 | xff0x | (~xff0x@2405:6580:b080:900:24e9:bd9c:7b25:9d4f) |
| 2026-02-05 13:48:13 +0100 | oskarw | (~user@user/oskarw) (Remote host closed the connection) |
| 2026-02-05 13:49:26 +0100 | oskarw | (~user@user/oskarw) oskarw |
| 2026-02-05 14:01:56 +0100 | karenw | (~karenw@user/karenw) karenw |
| 2026-02-05 14:06:45 +0100 | chromoblob | (~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 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-02-05 14:10:31 +0100 | fp | (~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 264 seconds) |
| 2026-02-05 14:13:58 +0100 | comerijn | (~merijn@77.242.116.146) (Quit: leaving) |
| 2026-02-05 14:15:07 +0100 | merijn | (~merijn@77.242.116.146) merijn |
| 2026-02-05 14:43:25 +0100 | trickard | (~trickard@cpe-61-98-47-163.wireline.com.au) (Ping timeout: 255 seconds) |
| 2026-02-05 14:43:51 +0100 | trickard_ | (~trickard@cpe-61-98-47-163.wireline.com.au) |
| 2026-02-05 14:47:21 +0100 | ouilemur | (~jgmerritt@user/ouilemur) (Quit: WeeChat 4.8.1) |
| 2026-02-05 14:49:02 +0100 | kuribas | (~user@2a02-1810-2825-6000-6394-e629-adac-ea24.ip6.access.telenet.be) kuribas |
| 2026-02-05 14:49:10 +0100 | fp | (~Thunderbi@wireless-86-50-141-35.open.aalto.fi) fp |
| 2026-02-05 14:50:21 +0100 | karenw | (~karenw@user/karenw) (Quit: Deep into that darkness peering...) |
| 2026-02-05 14:53:35 +0100 | fp | (~Thunderbi@wireless-86-50-141-35.open.aalto.fi) (Ping timeout: 244 seconds) |
| 2026-02-05 14:55:08 +0100 | housemate | (~housemate@202.7.248.67) (Quit: https://ineedsomeacidtocalmmedown.space/) |
| 2026-02-05 14:58:48 +0100 | emaczen | (~user@user/emaczen) emaczen |
| 2026-02-05 14:59:55 +0100 | fp | (~Thunderbi@wireless-86-50-141-35.open.aalto.fi) fp |
| 2026-02-05 15:01:20 +0100 | ouilemur | (~jgmerritt@user/ouilemur) ouilemur |
| 2026-02-05 15:05:16 +0100 | tremon | (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 2026-02-05 15:11:40 +0100 | housemate | (~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 +0100 | ljdarj | (~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 +0100 | weary-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 +0100 | trickard_ | (~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-02-05 15:53:55 +0100 | trickard_ | (~trickard@cpe-61-98-47-163.wireline.com.au) |
| 2026-02-05 15:58:43 +0100 | AlexZenon_2 | AlexZenon |
| 2026-02-05 15:59:18 +0100 | fp | (~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 +0100 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) humasect |
| 2026-02-05 16:11:57 +0100 | euphores | (~SASL_euph@user/euphores) euphores |
| 2026-02-05 16:14:13 +0100 | trickard_ | 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 +0100 | Sgeo | (~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 +0100 | tromp | (~textual@2001:1c00:3487:1b00:4842:24c6:bd5c:fe37) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-02-05 16:39:16 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
| 2026-02-05 16:46:02 +0100 | rekahsoft | (~rekahsoft@70.51.99.245) rekahsoft |
| 2026-02-05 16:55:16 +0100 | RMSBach | (~RMSBach@24.210.9.182) (Ping timeout: 265 seconds) |
| 2026-02-05 16:55:16 +0100 | RSBach | (~RMSBach@24.210.9.182) RMSBach |
| 2026-02-05 16:55:40 +0100 | RSBach | RMSBach |
| 2026-02-05 16:55:58 +0100 | tromp | (~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 +0100 | tomsmeding | doesn'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 +0100 | wickedjargon | (~user@24.83.46.194) wickedjargon |
| 2026-02-05 17:27:04 +0100 | srazkvt | (~sarah@user/srazkvt) srazkvt |
| 2026-02-05 17:31:54 +0100 | peterbecich | (~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 +0100 | srazkvt | (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
| 2026-02-05 18:09:20 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 240 seconds) |
| 2026-02-05 18:15:45 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
| 2026-02-05 18:32:41 +0100 | jmcantrell_ | (~weechat@user/jmcantrell) jmcantrell |
| 2026-02-05 18:34:55 +0100 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 240 seconds) |
| 2026-02-05 18:40:38 +0100 | jmcantrell_ | jmcantrell |
| 2026-02-05 18:53:42 +0100 | Jackneill_ | (~Jackneill@188-143-82-106.pool.digikabel.hu) |
| 2026-02-05 18:54:36 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds) |
| 2026-02-05 18:56:16 +0100 | trickard | (~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-02-05 18:56:29 +0100 | trickard_ | (~trickard@cpe-61-98-47-163.wireline.com.au) |
| 2026-02-05 18:56:43 +0100 | jackneill__ | (~Jackneill@94-21-15-213.pool.digikabel.hu) (Ping timeout: 264 seconds) |
| 2026-02-05 19:03:31 +0100 | tremon | (~tremon@83.80.159.219) tremon |
| 2026-02-05 19:08:10 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh |
| 2026-02-05 19:13:46 +0100 | divlamir | (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
| 2026-02-05 19:14:02 +0100 | divlamir | (~divlamir@user/divlamir) divlamir |
| 2026-02-05 19:16:16 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 19:21:04 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-05 19:26:23 +0100 | catties | Catty |
| 2026-02-05 19:26:40 +0100 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-02-05 19:27:11 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen |
| 2026-02-05 19:32:03 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-02-05 19:33:55 +0100 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds) |
| 2026-02-05 19:36:31 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-05 19:40:02 +0100 | Googulator | (~Googulato@2a01-036d-0106-216f-0081-f2ad-9e0f-9d89.pool6.digikabel.hu) (Quit: Client closed) |
| 2026-02-05 19:40:18 +0100 | Googulator | (~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 +0100 | merijn | (~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 +0100 | Tuplanolla | (~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 +0100 | merijn | (~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 +0100 | lisbeths | (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 |