2024/09/26

2024-09-26 00:02:15 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 00:07:45 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-09-26 00:10:28 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 00:11:44 +0200pavonia(~user@user/siracusa) siracusa
2024-09-26 00:18:03 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 00:22:52 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 00:27:46 +0200troydm(~troydm@user/troydm) troydm
2024-09-26 00:33:33 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-09-26 00:33:49 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 00:34:36 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 246 seconds)
2024-09-26 00:34:38 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2024-09-26 00:37:08 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 00:39:04 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-09-26 00:41:23 +0200rdcdr_(~rdcdr@75-172-9-7.tukw.qwest.net) (Changing host)
2024-09-26 00:41:23 +0200rdcdr_(~rdcdr@user/rdcdr) rdcdr
2024-09-26 00:42:25 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-09-26 00:48:49 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 00:49:33 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
2024-09-26 00:49:38 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 00:53:41 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-09-26 00:54:23 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 00:54:44 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2024-09-26 00:55:56 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 00:56:25 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 00:59:07 +0200rdcdr_rdcdr
2024-09-26 01:01:11 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-09-26 01:01:12 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-09-26 01:04:15 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-09-26 01:06:57 +0200acidjnk(~acidjnk@p200300d6e72cfb01cd8bad668f11f045.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2024-09-26 01:10:34 +0200athan(~athan@2600:382:2d19:73c:a48e:d16f:56f:3204) (Ping timeout: 260 seconds)
2024-09-26 01:12:09 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 01:13:51 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 01:17:16 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-09-26 01:18:17 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2024-09-26 01:27:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 01:31:30 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 244 seconds)
2024-09-26 01:32:42 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-09-26 01:34:51 +0200comonad(~comonad@p200300d02705e800d14b563ba919432f.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2024-09-26 01:36:13 +0200comonad(~comonad@p200300d02711e6001d93b8c5b2241d7f.dip0.t-ipconnect.de)
2024-09-26 01:43:43 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 01:46:57 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 01:47:09 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-09-26 01:48:31 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 01:48:37 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-09-26 01:49:26 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-09-26 01:57:50 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 01:59:30 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 01:59:31 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-09-26 02:07:03 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-09-26 02:09:46 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) athan
2024-09-26 02:12:30 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 02:12:52 +0200pavonia(~user@user/siracusa) (Ping timeout: 252 seconds)
2024-09-26 02:18:05 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 02:23:19 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-09-26 02:23:54 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 02:26:30 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-09-26 02:29:06 +0200pavonia(~user@user/siracusa) siracusa
2024-09-26 02:35:34 +0200xff0x(~xff0x@2405:6580:b080:900:bae7:541b:79b5:8d8e) (Ping timeout: 260 seconds)
2024-09-26 02:38:01 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 02:38:11 +0200identity(~identity@user/ZharMeny) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4))
2024-09-26 02:39:49 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-09-26 02:41:05 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds)
2024-09-26 02:43:03 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-09-26 02:49:39 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 02:54:40 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 02:58:43 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 03:00:44 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-09-26 03:02:57 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 244 seconds)
2024-09-26 03:05:27 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 03:10:26 +0200ystael(~ystael@user/ystael) (Read error: Connection reset by peer)
2024-09-26 03:10:34 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-09-26 03:13:51 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 03:19:29 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 03:21:14 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 03:23:14 +0200synchromesh(~john@2406:5a00:241a:5600:ac18:5792:28a:df5a) (Read error: Connection reset by peer)
2024-09-26 03:24:16 +0200synchromesh(~john@2406:5a00:241a:5600:2de5:ba26:2eef:9155) synchromesh
2024-09-26 03:25:49 +0200sourcetarius(~sourcetar@user/sourcetarius) sourcetarius
2024-09-26 03:26:06 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-09-26 03:26:07 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2024-09-26 03:33:26 +0200juri_(~juri@implicitcad.org) (Ping timeout: 244 seconds)
2024-09-26 03:33:57 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 03:35:59 +0200dontdieych2(~quassel@user/dontdieych2) dontdieych2
2024-09-26 03:37:01 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 03:38:14 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2024-09-26 03:42:15 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 03:47:11 +0200troojg(~troojg@user/troojg) troojg
2024-09-26 03:51:45 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 03:52:47 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 03:56:01 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-09-26 03:57:37 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-09-26 03:58:04 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 04:03:03 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-09-26 04:08:58 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 04:10:59 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-09-26 04:13:43 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 04:16:19 +0200td_(~td@i5387090E.versanet.de) (Ping timeout: 264 seconds)
2024-09-26 04:17:36 +0200td_(~td@i53870912.versanet.de) td_
2024-09-26 04:18:43 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-09-26 04:19:28 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 04:24:04 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-09-26 04:34:57 +0200troojg(~troojg@user/troojg) (Ping timeout: 248 seconds)
2024-09-26 04:35:10 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 04:36:13 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2024-09-26 04:40:16 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-09-26 04:43:01 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2024-09-26 04:50:57 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 04:52:07 +0200glguy(glguy@libera/staff/glguy) (Ping timeout: 624 seconds)
2024-09-26 04:52:18 +0200tv(~tv@user/tv) (Quit: derp)
2024-09-26 04:54:08 +0200tv(~tv@user/tv) tv
2024-09-26 04:56:05 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-09-26 04:56:13 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!)
2024-09-26 05:04:21 +0200rosco(~rosco@175.136.158.234) rosco
2024-09-26 05:04:43 +0200swamp_(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2024-09-26 05:06:45 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 05:11:47 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 05:16:47 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 05:20:54 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-09-26 05:21:20 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds)
2024-09-26 05:22:32 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 05:23:46 +0200zmt00(~zmt00@user/zmt00) zmt00
2024-09-26 05:27:03 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2024-09-26 05:27:28 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-09-26 05:27:51 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-09-26 05:29:46 +0200 <dmj`> there needs to be a paper on how typeclass entailment was implemented using outsidein(x)
2024-09-26 05:34:57 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 05:38:19 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 05:39:40 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2024-09-26 05:39:43 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2024-09-26 05:40:10 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) athan
2024-09-26 05:40:24 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 05:41:03 +0200Lord_of_Life_Lord_of_Life
2024-09-26 05:43:20 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 05:47:50 +0200glguy(glguy@libera/staff/glguy) glguy
2024-09-26 05:53:47 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 05:58:21 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 05:59:09 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 06:03:36 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-09-26 06:07:07 +0200lol_jcarpenter2
2024-09-26 06:12:20 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 06:14:45 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 06:19:48 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-09-26 06:30:19 +0200meritamen(~user@user/meritamen) meritamen
2024-09-26 06:30:32 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 06:30:43 +0200spew(~spew@201.141.99.170) spew
2024-09-26 06:31:57 +0200fun-safe-math(~fun-safe-@24.21.106.247) (Ping timeout: 246 seconds)
2024-09-26 06:33:35 +0200meritamen(~user@user/meritamen) (Client Quit)
2024-09-26 06:33:35 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-09-26 06:35:27 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-09-26 06:38:17 +0200michalz(~michalz@185.246.207.200)
2024-09-26 06:38:47 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2024-09-26 06:46:18 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 06:46:20 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2024-09-26 06:51:01 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-09-26 06:52:53 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-09-26 06:57:29 +0200rosco(~rosco@175.136.158.234) (Quit: Lost terminal)
2024-09-26 06:59:57 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 07:03:02 +0200spew(~spew@201.141.99.170) (Quit: spew)
2024-09-26 07:04:51 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-09-26 07:05:20 +0200marinelli(~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
2024-09-26 07:10:38 +0200misterfish(~misterfis@84.53.85.146) misterfish
2024-09-26 07:11:28 +0200rosco(~rosco@175.136.158.234) rosco
2024-09-26 07:14:34 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 244 seconds)
2024-09-26 07:15:44 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 07:20:29 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 07:30:07 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-09-26 07:30:17 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-09-26 07:31:31 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 07:31:44 +0200dontdieych2(~quassel@user/dontdieych2) (Read error: Connection reset by peer)
2024-09-26 07:32:26 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 07:34:19 +0200Guest6(~Guest6@190.17.179.95)
2024-09-26 07:35:21 +0200Guest6(~Guest6@190.17.179.95) (Client Quit)
2024-09-26 07:36:12 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-09-26 07:38:45 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 07:46:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 07:48:21 +0200ubert(~Thunderbi@178.165.177.214.wireless.dyn.drei.com) ubert
2024-09-26 07:48:46 +0200Square3(~Square4@user/square) (Ping timeout: 265 seconds)
2024-09-26 07:51:46 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-09-26 07:54:01 +0200acidjnk(~acidjnk@p200300d6e72cfb33a563052759f358da.dip0.t-ipconnect.de) acidjnk
2024-09-26 08:00:57 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 08:01:48 +0200alp_(~alp@2001:861:e3d6:8f80:7a01:1d08:ba91:82c0)
2024-09-26 08:03:30 +0200alp_(~alp@2001:861:e3d6:8f80:7a01:1d08:ba91:82c0) (Client Quit)
2024-09-26 08:03:49 +0200alp_(~alp@2001:861:e3d6:8f80:7a01:1d08:ba91:82c0)
2024-09-26 08:04:30 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich)
2024-09-26 08:04:46 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-09-26 08:05:41 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-09-26 08:09:08 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 08:10:00 +0200misterfish(~misterfis@84.53.85.146) (Ping timeout: 252 seconds)
2024-09-26 08:13:18 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-09-26 08:16:44 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 08:18:25 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-09-26 08:20:55 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-09-26 08:21:44 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-09-26 08:23:34 +0200lucy(~lucy@user/lucy) (Ping timeout: 252 seconds)
2024-09-26 08:25:27 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 08:32:32 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 08:37:35 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-09-26 08:39:16 +0200oneeyedalien(~oneeyedal@user/oneeyedalien) oneeyedalien
2024-09-26 08:48:18 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 08:49:04 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 08:51:37 +0200jinsun(~jinsun@user/jinsun) jinsun
2024-09-26 08:52:50 +0200ft(~ft@p4fc2acce.dip0.t-ipconnect.de) (Quit: leaving)
2024-09-26 08:53:44 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-09-26 08:55:29 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 08:59:25 +0200misterfish(~misterfis@87.215.131.102) misterfish
2024-09-26 08:59:37 +0200hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Quit: Leaving)
2024-09-26 09:00:04 +0200caconym(~caconym@user/caconym) (Quit: bye)
2024-09-26 09:00:41 +0200caconym(~caconym@user/caconym) caconym
2024-09-26 09:01:57 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 09:07:19 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
2024-09-26 09:09:06 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-09-26 09:09:28 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 09:14:10 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 09:19:14 +0200alicia-it(~alicia-it@91.254.20.157)
2024-09-26 09:20:00 +0200alicia-it(~alicia-it@91.254.20.157) ()
2024-09-26 09:23:53 +0200ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2024-09-26 09:26:27 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 09:27:49 +0200yoneda(~mike@193.206.102.122)
2024-09-26 09:32:04 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 09:45:00 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2024-09-26 09:46:11 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 09:48:08 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-09-26 09:52:36 +0200CiaoSen(~Jura@2a05:5800:2ec:ac00:ca4b:d6ff:fec1:99da) CiaoSen
2024-09-26 09:54:10 +0200gmg(~user@user/gehmehgeh) gehmehgeh
2024-09-26 09:57:28 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2024-09-26 10:00:45 +0200alp_(~alp@2001:861:e3d6:8f80:7a01:1d08:ba91:82c0) (Remote host closed the connection)
2024-09-26 10:01:31 +0200merijn(~merijn@77.242.116.146) merijn
2024-09-26 10:02:08 +0200oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2024-09-26 10:02:46 +0200alp_(~alp@2001:861:e3d6:8f80:7a01:1d08:ba91:82c0)
2024-09-26 10:03:26 +0200lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2024-09-26 10:11:32 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 10:16:40 +0200rosco(~rosco@175.136.158.234) (Quit: Lost terminal)
2024-09-26 10:17:09 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 10:24:06 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-09-26 10:26:48 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 246 seconds)
2024-09-26 10:27:43 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-09-26 10:32:02 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 10:35:00 +0200euandreh(~Thunderbi@189.6.105.228) (Ping timeout: 276 seconds)
2024-09-26 10:36:30 +0200euandreh(~Thunderbi@189.6.105.228) euandreh
2024-09-26 10:37:38 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-09-26 10:39:51 +0200mrmonday(~robert@2a01:7e00:e000:1b2:95ca:100:49e0:3f15) (Quit: .)
2024-09-26 10:41:10 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) mrmonday
2024-09-26 10:41:42 +0200murgeljm(~murgeljm@APN-122-12-44-gprs.simobil.net) murgeljm
2024-09-26 10:49:12 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 10:49:33 +0200cfricke(~cfricke@user/cfricke) cfricke
2024-09-26 10:51:34 +0200Franciman(~Franciman@mx1.fracta.dev) (Ping timeout: 244 seconds)
2024-09-26 10:55:32 +0200murgeljm(~murgeljm@APN-122-12-44-gprs.simobil.net) (Read error: Connection reset by peer)
2024-09-26 10:58:21 +0200Franciman(~Franciman@mx1.fracta.dev) Franciman
2024-09-26 10:59:57 +0200sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-09-26 11:06:51 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 11:07:53 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-09-26 11:11:33 +0200lucy(~lucy@user/lucy) (Read error: Connection reset by peer)
2024-09-26 11:12:21 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-09-26 11:14:48 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 252 seconds)
2024-09-26 11:16:00 +0200__monty__(~toonn@user/toonn) toonn
2024-09-26 11:17:06 +0200misterfish(~misterfis@87.215.131.102) (Ping timeout: 252 seconds)
2024-09-26 11:17:21 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) szkl
2024-09-26 11:18:56 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-09-26 11:20:08 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) Raito_Bezarius
2024-09-26 11:23:57 +0200misterfish(~misterfis@87.215.131.102) misterfish
2024-09-26 11:24:07 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2024-09-26 11:24:41 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded)
2024-09-26 11:26:49 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 11:26:56 +0200Digitteknohippie(~user@user/digit) Digit
2024-09-26 11:27:43 +0200Digit(~user@user/digit) (Ping timeout: 264 seconds)
2024-09-26 11:30:57 +0200merijn(~merijn@77.242.116.146) merijn
2024-09-26 11:31:19 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 264 seconds)
2024-09-26 11:31:57 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-09-26 11:36:10 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-09-26 11:37:57 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-09-26 11:40:50 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-09-26 11:41:34 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) Raito_Bezarius
2024-09-26 11:43:42 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-09-26 11:43:42 +0200merijn(~merijn@77.242.116.146) merijn
2024-09-26 11:45:50 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 11:46:05 +0200DigitteknohippieDigit
2024-09-26 11:49:36 +0200CiaoSen(~Jura@2a05:5800:2ec:ac00:ca4b:d6ff:fec1:99da) (Ping timeout: 272 seconds)
2024-09-26 11:49:59 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2024-09-26 11:50:12 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2024-09-26 11:50:19 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 12:02:09 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 12:07:15 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-09-26 12:09:44 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 260 seconds)
2024-09-26 12:09:47 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-09-26 12:11:42 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 265 seconds)
2024-09-26 12:14:25 +0200ouroboros(~ouroboros@user/ouroboros) (Quit: Bye.)
2024-09-26 12:14:25 +0200acro(~acro@user/acro) (Quit: Bye.)
2024-09-26 12:15:45 +0200acro(~acro@user/acro) acro
2024-09-26 12:17:17 +0200ouroboros(~ouroboros@user/ouroboros) ouroboros
2024-09-26 12:17:27 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 12:19:25 +0200merijn(~merijn@77.242.116.146) merijn
2024-09-26 12:20:42 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 12:25:20 +0200picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.4.2)
2024-09-26 12:26:57 +0200picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur
2024-09-26 12:39:47 +0200Guest76(~Guest76@e175029.upc-e.chello.nl)
2024-09-26 12:41:53 +0200Guest76(~Guest76@e175029.upc-e.chello.nl) (Client Quit)
2024-09-26 12:43:33 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 248 seconds)
2024-09-26 12:43:43 +0200misterfish(~misterfis@87.215.131.102) (Ping timeout: 245 seconds)
2024-09-26 12:44:19 +0200misterfish(~misterfis@87.215.131.102) misterfish
2024-09-26 12:50:43 +0200merijn(~merijn@77.242.116.146) merijn
2024-09-26 12:56:17 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 248 seconds)
2024-09-26 12:57:16 +0200merijn(~merijn@77.242.116.146) merijn
2024-09-26 12:58:30 +0200identity(~identity@user/ZharMeny) identity
2024-09-26 12:59:38 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-09-26 13:00:04 +0200caconym(~caconym@user/caconym) (Quit: bye)
2024-09-26 13:01:09 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-09-26 13:02:34 +0200caconym(~caconym@user/caconym) caconym
2024-09-26 13:05:44 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds)
2024-09-26 13:14:52 +0200xff0x(~xff0x@2405:6580:b080:900:edb3:3e3f:7e00:b65b)
2024-09-26 13:16:42 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-09-26 13:19:37 +0200hgolden_(~hgolden@204.152.216.106) hgolden
2024-09-26 13:22:02 +0200hgolden(~hgolden@23.162.40.28) (Ping timeout: 252 seconds)
2024-09-26 13:35:33 +0200CiaoSen(~Jura@2a05:5800:2ec:ac00:ca4b:d6ff:fec1:99da) CiaoSen
2024-09-26 13:36:47 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-09-26 13:42:23 +0200cfricke(~cfricke@user/cfricke) cfricke
2024-09-26 13:44:39 +0200synchromesh(~john@2406:5a00:241a:5600:2de5:ba26:2eef:9155) (Read error: Connection reset by peer)
2024-09-26 13:44:46 +0200misterfish(~misterfis@87.215.131.102) (Ping timeout: 252 seconds)
2024-09-26 13:45:52 +0200synchromesh(~john@2406:5a00:241a:5600:2de5:ba26:2eef:9155) synchromesh
2024-09-26 13:46:41 +0200misterfish(~misterfis@178.229.81.197) misterfish
2024-09-26 13:48:20 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-09-26 13:53:41 +0200fgaz_(1ff9197ed6@2a03:6000:1812:100::11ea) (Remote host closed the connection)
2024-09-26 13:53:47 +0200fgaz_(1ff9197ed6@2a03:6000:1812:100::11ea) fgaz
2024-09-26 14:10:09 +0200misterfish(~misterfis@178.229.81.197) (Ping timeout: 276 seconds)
2024-09-26 14:10:29 +0200alioguzhan(~Thunderbi@78.173.89.238) (Quit: alioguzhan)
2024-09-26 14:10:47 +0200alioguzhan(~Thunderbi@78.173.89.238)
2024-09-26 14:11:32 +0200misterfish(~misterfis@87.215.131.102) misterfish
2024-09-26 14:13:09 +0200sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-09-26 14:13:33 +0200sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-09-26 14:14:44 +0200michalz(~michalz@185.246.207.200) (Read error: Connection reset by peer)
2024-09-26 14:15:17 +0200michalz(~michalz@185.246.207.193)
2024-09-26 14:16:40 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-09-26 14:19:35 +0200ljdarj(~holoirc@37.165.175.135)
2024-09-26 14:19:35 +0200ljdarj(~holoirc@37.165.175.135) (Changing host)
2024-09-26 14:19:35 +0200ljdarj(~holoirc@user/ljdarj) ljdarj
2024-09-26 14:19:55 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-09-26 14:30:20 +0200misterfish(~misterfis@87.215.131.102) (Read error: Connection reset by peer)
2024-09-26 14:32:39 +0200misterfish(~misterfis@87.215.131.102) misterfish
2024-09-26 14:36:38 +0200akegalj(~akegalj@231-112.dsl.iskon.hr) akegalj
2024-09-26 14:38:12 +0200ljdarj(~holoirc@user/ljdarj) (Read error: Connection reset by peer)
2024-09-26 14:38:13 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 14:39:38 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-09-26 14:42:00 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 276 seconds)
2024-09-26 14:43:21 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-09-26 14:44:21 +0200 <akegalj> what is recomended way to create haskell tags? I see ghc-tags and hasktags as options
2024-09-26 14:46:21 +0200ljdarj(~holoirc@user/ljdarj) ljdarj
2024-09-26 14:46:23 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net) machinedgod
2024-09-26 14:49:46 +0200 <__monty__> You mean ctags but Haskell? I still use fast-tags.
2024-09-26 14:55:30 +0200ljdarj(~holoirc@user/ljdarj) (Read error: Connection reset by peer)
2024-09-26 14:56:08 +0200 <akegalj> __monty__: yes. Will have a look at fast-tags. ty
2024-09-26 14:57:09 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2024-09-26 14:57:37 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 14:59:10 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 15:00:20 +0200weary-traveler(~user@user/user363627) user363627
2024-09-26 15:00:29 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2024-09-26 15:01:39 +0200 <zzz> since when is `(a,b) :: (Float,Float)` an invalid type signature?
2024-09-26 15:02:04 +0200ljdarj(~holoirc@37.165.175.135)
2024-09-26 15:02:05 +0200ljdarj(~holoirc@37.165.175.135) (Changing host)
2024-09-26 15:02:05 +0200ljdarj(~holoirc@user/ljdarj) ljdarj
2024-09-26 15:02:40 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 244 seconds)
2024-09-26 15:03:23 +0200lucy_(~lucy@user/lucy) lucy
2024-09-26 15:04:55 +0200 <ncf> ç„¡
2024-09-26 15:05:25 +0200 <__monty__> zzz: In what context?
2024-09-26 15:05:31 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 15:05:56 +0200 <__monty__> :t (1.0,1.0) :: (Float,Float) -- is perfectly valid
2024-09-26 15:05:57 +0200 <lambdabot> (Float, Float)
2024-09-26 15:06:12 +0200spew(~spew@201.141.99.170) spew
2024-09-26 15:07:16 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-09-26 15:08:13 +0200 <ski> it's a valid type ascription, not a valid type signature
2024-09-26 15:08:37 +0200 <zzz> __monty__: at the top level. u usually write stuff like `(a,b,c) :: (Int,Word,Whatever) ; (a,b,c) = (1,2,3)` and i never got this error
2024-09-26 15:09:02 +0200 <zzz> s/u/I
2024-09-26 15:09:03 +0200 <ski> > let (a,b) :: (Float,Float); a = 0; b = 1 in b - a
2024-09-26 15:09:05 +0200 <lambdabot> <hint>:1:5: error:
2024-09-26 15:09:05 +0200 <lambdabot> Invalid type signature: (a, b) :: ...
2024-09-26 15:09:05 +0200 <lambdabot> Should be of form <variable> :: <type>
2024-09-26 15:09:06 +0200 <ski> > let (a,b) :: (Float,Float); (a,b) = (0,1) in b - a
2024-09-26 15:09:08 +0200 <lambdabot> <hint>:1:5: error:
2024-09-26 15:09:08 +0200 <lambdabot> Invalid type signature: (a, b) :: ...
2024-09-26 15:09:08 +0200 <lambdabot> Should be of form <variable> :: <type>
2024-09-26 15:09:50 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 15:10:03 +0200 <ski> > let a,b :: Float; (a,b) = (0,1) in snd ((a,b) :: (Float,Float)) - fst ((a,b) :: (Float,Float))
2024-09-26 15:10:05 +0200 <lambdabot> 1.0
2024-09-26 15:11:11 +0200ljdarj(~holoirc@user/ljdarj) (Read error: Connection reset by peer)
2024-09-26 15:11:29 +0200merijn(~merijn@77.242.116.146) merijn
2024-09-26 15:13:52 +0200 <ski> a type signature has a sequence of *identifiers* separated by commas, to the left of PAAMAYIM_NEKUDOTAYIM
2024-09-26 15:13:56 +0200 <ski> (aka `::')
2024-09-26 15:15:43 +0200ljdarj(~holoirc@37.165.175.135)
2024-09-26 15:15:43 +0200ljdarj(~holoirc@37.165.175.135) (Changing host)
2024-09-26 15:15:43 +0200ljdarj(~holoirc@user/ljdarj) ljdarj
2024-09-26 15:16:00 +0200 <ski> (using `.. :: ..' as a declaration, this is a type signature. using `.. :: ..' as an expression (or pattern), this is a type ascription)
2024-09-26 15:17:20 +0200michalz(~michalz@185.246.207.193) (Ping timeout: 272 seconds)
2024-09-26 15:17:42 +0200ystael(~ystael@user/ystael) ystael
2024-09-26 15:17:56 +0200michalz(~michalz@185.246.207.221)
2024-09-26 15:18:41 +0200Digitteknohippie(~user@user/digit) Digit
2024-09-26 15:19:19 +0200Digit(~user@user/digit) (Ping timeout: 260 seconds)
2024-09-26 15:21:19 +0200 <zzz> i understand. even so, i'm almost sure i've done it before
2024-09-26 15:21:29 +0200 <zzz> maybe i'm mistaken
2024-09-26 15:24:04 +0200lucy_(~lucy@user/lucy) (Ping timeout: 265 seconds)
2024-09-26 15:24:43 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 15:25:14 +0200 <zzz> is there a reason something like `(a,b) :: (Float,Float) = (0,1)` shouldn't suppress a "missing signature" warning?
2024-09-26 15:25:43 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 15:25:45 +0200 <zzz> a _good_ reason... ?
2024-09-26 15:28:51 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-09-26 15:32:48 +0200 <ski> hm, i suppose one could imagine allowing a sequence of patterns, to the left of the `::' in a type signature
2024-09-26 15:34:36 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!)
2024-09-26 15:34:39 +0200 <ski> .. although, i guess that would be awkward with existential data constructors, in that you'd not necessarily specify the whole types of the involved variables. but that's already the case with wildcards in signatures
2024-09-26 15:35:56 +0200 <ski> one reason could be that allowing just identifiers is the conservative choice. allowing a sequence of identifiers can be useful to avoid repeating the type for a series of operations of the same type
2024-09-26 15:39:56 +0200ljdarj(~holoirc@user/ljdarj) (Read error: Connection reset by peer)
2024-09-26 15:40:46 +0200ljdarj(~holoirc@user/ljdarj) ljdarj
2024-09-26 15:42:57 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 15:45:24 +0200DigitteknohippieDigit
2024-09-26 15:46:37 +0200ljdarj(~holoirc@user/ljdarj) (Quit: ljdarj)
2024-09-26 15:48:43 +0200ljdarj(~ljdarj@user/ljdarj) ljdarj
2024-09-26 15:50:27 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 15:50:45 +0200ljdarj(~ljdarj@user/ljdarj) (Remote host closed the connection)
2024-09-26 15:51:13 +0200 <tomsmeding> zzz: that depends on the types involved. Knowing the result type of a constructor does not necessarily mean that you know the types of the fields also
2024-09-26 15:51:19 +0200 <tomsmeding> data Exists f where Exists :: f a -> Exists f
2024-09-26 15:51:37 +0200 <tomsmeding> then `Exists x :: Exists Maybe = Just 42` does not pin down what the type of x is
2024-09-26 15:52:20 +0200 <tomsmeding> sure, in your example it does. But Haskell's type system tends to prefer reasoning about the general case rather than optimising for specific cases
2024-09-26 15:53:12 +0200skigesticulates wildly
2024-09-26 15:53:32 +0200 <tomsmeding> ski: am I spouting nonsense again?
2024-09-26 15:53:36 +0200 <ski> nah :)
2024-09-26 15:53:51 +0200 <ski> just spelling it out more thoroughly
2024-09-26 15:54:29 +0200 <tomsmeding> oh I didn't even properly read your second message lol, sorry
2024-09-26 15:54:32 +0200 <tomsmeding> this is precisely what you were saying
2024-09-26 15:58:24 +0200 <zzz> tomsmeding: good point
2024-09-26 15:59:27 +0200 <zzz> ski: good point ;)
2024-09-26 15:59:57 +0200 <ski> map (\(_ :: a) -> _ :: b) (_ :: [a]) :: [b] -- C-style prototypes, for Haskell !
2024-09-26 16:00:38 +0200 <ski> (replace the `_'s to identifiers indicating the respective rôles, if you prefer)
2024-09-26 16:01:28 +0200 <zzz> my proposal would also allow for nonesense like `Nothing :: Maybe Int` to be silently accepted
2024-09-26 16:01:43 +0200 <tomsmeding> ski: that notation would also extend nicely to Pi types :)
2024-09-26 16:02:00 +0200 <tomsmeding> > let Nothing :: Maybe Int = Nothing in 42
2024-09-26 16:02:02 +0200 <lambdabot> 42
2024-09-26 16:02:08 +0200 <tomsmeding> ghc doesn't think it's nonsense
2024-09-26 16:02:17 +0200 <tomsmeding> but it gets better:
2024-09-26 16:02:18 +0200 <ski> that's a pattern signature, though
2024-09-26 16:02:21 +0200 <tomsmeding> > let Nothing :: Maybe Int = Just 12 in 42
2024-09-26 16:02:23 +0200 <lambdabot> 42
2024-09-26 16:02:29 +0200 <zzz> that's not a type signature
2024-09-26 16:03:04 +0200 <zzz> wait what?
2024-09-26 16:03:18 +0200 <tomsmeding> (haskell is a lazy language)
2024-09-26 16:03:24 +0200 <zzz> ah, let bindings are irrefutable, is that it?
2024-09-26 16:03:42 +0200 <tomsmeding> indeed
2024-09-26 16:03:44 +0200 <ski> > let f ~Nothing = () in f (Just 2)
2024-09-26 16:03:44 +0200 <tomsmeding> i.e. lazy
2024-09-26 16:03:45 +0200 <lambdabot> ()
2024-09-26 16:03:47 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 16:03:56 +0200 <tomsmeding> > let x@Nothing :: Maybe Int = Just 12 in x
2024-09-26 16:03:57 +0200 <lambdabot> *Exception: <interactive>:3:5-36: Non-exhaustive patterns in x@Nothing :: Ma...
2024-09-26 16:04:05 +0200 <ski> > let !Nothing = Just 2 in ()
2024-09-26 16:04:07 +0200 <lambdabot> *Exception: <interactive>:3:5-21: Non-exhaustive patterns in Nothing
2024-09-26 16:04:22 +0200gensyst(~gensyst@user/gensyst) gensyst
2024-09-26 16:06:14 +0200gensyst(~gensyst@user/gensyst) (Client Quit)
2024-09-26 16:06:46 +0200 <zzz> i used to think Haskell is confusing. i still do, but i used to too.
2024-09-26 16:07:53 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2024-09-26 16:08:18 +0200 <zzz> luckily, correctness makes up for it
2024-09-26 16:15:43 +0200 <EvanR> if something is logical and follows its own rules, then confusing is my own fault xD
2024-09-26 16:15:51 +0200 <EvanR> unlike many programming languages
2024-09-26 16:16:37 +0200 <ski> @type confusing
2024-09-26 16:16:38 +0200 <lambdabot> Applicative f => LensLike (Data.Functor.Day.Curried.Curried (Data.Functor.Yoneda.Yoneda f) (Data.Functor.Yoneda.Yoneda f)) s t a b -> LensLike f s t a b
2024-09-26 16:20:07 +0200alp__(~alp@2001:861:e3d6:8f80:538:d7bb:b13e:aad)
2024-09-26 16:21:34 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 16:21:41 +0200alp_(~alp@2001:861:e3d6:8f80:7a01:1d08:ba91:82c0) (Ping timeout: 248 seconds)
2024-09-26 16:26:47 +0200akegalj(~akegalj@231-112.dsl.iskon.hr) (Quit: leaving)
2024-09-26 16:31:55 +0200CiaoSen(~Jura@2a05:5800:2ec:ac00:ca4b:d6ff:fec1:99da) (Ping timeout: 264 seconds)
2024-09-26 16:32:48 +0200Sgeo(~Sgeo@user/sgeo) Sgeo
2024-09-26 16:34:56 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2024-09-26 16:37:16 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-09-26 16:41:07 +0200alp__(~alp@2001:861:e3d6:8f80:538:d7bb:b13e:aad) (Quit: Leaving)
2024-09-26 16:41:38 +0200 <Inst> iirc unsafeIOtoST is unsafe for more reasons than just effectively being unsafePerformIO
2024-09-26 16:41:50 +0200 <Inst> but is unsafeIOtoST an idiomatic way to do unsafePerformIO?
2024-09-26 16:49:21 +0200flounders(~flounders@173.246.214.210) (Ping timeout: 246 seconds)
2024-09-26 16:50:59 +0200 <EvanR> is it an idiomatic way to safely do unsafePerformIO, no but it would be safe. E.g. if the IO action you're doing has no side effects and is "reentrant" etc
2024-09-26 16:51:21 +0200 <EvanR> otherwise it's just as unsafe
2024-09-26 16:51:33 +0200flounders(~flounders@2607:fb91:f40:c71f:8dda:e662:7d36:da1f) flounders
2024-09-26 16:54:03 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-09-26 16:54:15 +0200alp_(~alp@2001:861:e3d6:8f80:538:d7bb:b13e:aad)
2024-09-26 17:00:17 +0200sourcetarius(~sourcetar@user/sourcetarius) (Quit: sourcetarius)
2024-09-26 17:01:32 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 17:01:41 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 248 seconds)
2024-09-26 17:03:35 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-09-26 17:05:23 +0200 <Inst> reentrant?
2024-09-26 17:05:37 +0200 <Inst> tbh probably unsafePerformIO is better off just not being disguised
2024-09-26 17:08:17 +0200 <EvanR> yes wrapping it in a runST doesn't change anything
2024-09-26 17:08:57 +0200 <EvanR> Inst, if you want to safely use unsafePerformIO, the IO action you are unsafePerforming needs to be able to begin multiple times without completing, technically
2024-09-26 17:09:29 +0200 <EvanR> as well as be technically pure
2024-09-26 17:09:33 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds)
2024-09-26 17:10:09 +0200 <EvanR> like the C function sqrt
2024-09-26 17:11:06 +0200 <EvanR> unlike a C function which mutates a static array of numbers
2024-09-26 17:11:12 +0200 <Inst> yeah, i know, just wondering if there's idiomatic rules for using unsafePerformIO
2024-09-26 17:11:20 +0200 <Inst> like, there's no documentation on how to idiomatically use trace (in debug code)
2024-09-26 17:11:38 +0200 <EvanR> idiomatically, remove the traces before you ship your code
2024-09-26 17:11:54 +0200 <EvanR> and those are the rules for unsafePerformIO
2024-09-26 17:12:10 +0200 <EvanR> to be ignored probably
2024-09-26 17:12:32 +0200 <dolio> The rule is: do not use unsafePerformIO.
2024-09-26 17:12:39 +0200 <Inst> i rarely use unsafePerformIO, so i'm not using unsafePerformIO
2024-09-26 17:12:54 +0200 <EvanR> interesting logic
2024-09-26 17:12:59 +0200 <Inst> dolio: unless you're writing bytestring, then again, that's accursedUnutterablePerformIO
2024-09-26 17:13:19 +0200 <EvanR> creating a new bytestring maybe
2024-09-26 17:13:22 +0200 <EvanR> modifying an existing one?
2024-09-26 17:13:30 +0200 <EvanR> there be dragons
2024-09-26 17:13:53 +0200 <Inst> honestly the idea of abusing unsafePerformIO for side effects everywhere hurts my brain
2024-09-26 17:14:01 +0200 <EvanR> and if you're creating a new one, you can use ST
2024-09-26 17:14:15 +0200 <Inst> as i've said before, I used it to route a variable
2024-09-26 17:14:33 +0200 <Inst> and as geekosaur pointed out, it was only more efficient because i probably had thunk pileups somewhere
2024-09-26 17:14:35 +0200 <dolio> No. The authors of bytestring use it.
2024-09-26 17:15:02 +0200 <dolio> Oh, I see. Yes. If you're an absolute expert, the general rule doesn't apply.
2024-09-26 17:16:06 +0200 <Inst> but it's sort of hard to find out what's idiomatic for black magic functions / techniques
2024-09-26 17:16:07 +0200 <dolio> Or, it doesn't always apply.
2024-09-26 17:16:20 +0200misterfish(~misterfis@87.215.131.102) (Ping timeout: 255 seconds)
2024-09-26 17:16:27 +0200 <EvanR> yeah it's idiomatic to just not use those
2024-09-26 17:16:37 +0200 <EvanR> don't use black magic
2024-09-26 17:16:47 +0200 <Inst> like, since we almost always remove Debug.Trace from shipping production code, it's hard to see examples of best practices with Debug.Trace
2024-09-26 17:16:56 +0200 <EvanR> haskell gets away with this idiom more than other languages
2024-09-26 17:17:31 +0200 <EvanR> Debug.Trace is just like printf debugging
2024-09-26 17:17:43 +0200 <dolio> Wrap your Debug.Trace in a function that checks a top-level 'debug' boolean. Then you don't need to remove it.
2024-09-26 17:17:43 +0200 <EvanR> not a best practice
2024-09-26 17:17:49 +0200 <Inst> except it's hooked into laziness, i.e, should you use let !_ = trace idiom
2024-09-26 17:18:10 +0200 <Inst> You saw my attempt to create an annotated sum, right?
2024-09-26 17:18:12 +0200 <EvanR> if you do that, you aren't testing the same code
2024-09-26 17:18:29 +0200Square3(~Square4@user/square) Square
2024-09-26 17:18:31 +0200 <EvanR> you're collapsing the wavefunction an attempt to see if lights a particle or a wave
2024-09-26 17:18:34 +0200 <EvanR> in an
2024-09-26 17:18:44 +0200lucy(~lucy@user/lucy) (Ping timeout: 260 seconds)
2024-09-26 17:18:46 +0200 <Inst> https://paste.tomsmeding.com/cyYgn3MX
2024-09-26 17:18:51 +0200ski. o O ( "Don't use $X, unless you know why not to use $X." )
2024-09-26 17:19:57 +0200 <weary-traveler> applies unconditionally to X, previously known as Twitter.
2024-09-26 17:20:07 +0200 <Inst> heh
2024-09-26 17:20:36 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 17:21:01 +0200 <Inst> is demonstrativeSum a good exercise (of course it'll never be used in production)?
2024-09-26 17:21:56 +0200 <EvanR> for visual debugging printing out things has issues, like if it's in a loop you see zillions of outputs
2024-09-26 17:22:02 +0200 <EvanR> there have to be better ways
2024-09-26 17:22:12 +0200 <EvanR> ghcvis
2024-09-26 17:22:56 +0200 <Inst> bbut the code is broken, insofar as i'm hacking the evaluation order
2024-09-26 17:23:15 +0200 <Inst> by forcing the externals to be printed before the internals
2024-09-26 17:30:00 +0200lucy(~lucy@user/lucy) (Ping timeout: 252 seconds)
2024-09-26 17:30:22 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 17:31:57 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 17:32:02 +0200 <Inst> and no, trace isn't "true" printf debugging since printf debugging is effectively strict, whereas trace has to coexist with laziness
2024-09-26 17:32:53 +0200 <EvanR> when trace is evaluated, it prints something. When printf is evaluated, it prints something
2024-09-26 17:33:12 +0200 <EvanR> so your context matters more than anything in both cases, not the thing itself or the subject
2024-09-26 17:33:33 +0200 <EvanR> you've put printf and nothing happens before
2024-09-26 17:33:36 +0200 <EvanR> because it never ran
2024-09-26 17:36:48 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2024-09-26 17:38:03 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 17:40:30 +0200polyphem(~rod@p4fc2c857.dip0.t-ipconnect.de) polyphem
2024-09-26 17:40:41 +0200 <Inst> by the way, when it comes to IO actions, do we say they're executed or evaluated? can the concept be separated?
2024-09-26 17:40:52 +0200 <Inst> since IO is a wrapper over a side-effecting function
2024-09-26 17:41:18 +0200 <Inst> evaluation to WHNF leaves you the function, and correct me if i'm wrong, the NF of the function is still the function
2024-09-26 17:41:50 +0200 <ski> if `m' is a monad, then an `m'-action (a value of type `m a', for some type `a') is executed/run/performed/invoked, to (possibly) produce result of type `a'
2024-09-26 17:42:12 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-09-26 17:42:21 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-09-26 17:42:22 +0200 <ski> e.g. when executing `Just 3', you get `3' as monadic result
2024-09-26 17:43:14 +0200 <Inst> ski: how would m = [] be performed, then?
2024-09-26 17:47:57 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) szkl
2024-09-26 17:49:48 +0200 <Inst> or for that matter, Proxy
2024-09-26 17:52:17 +0200 <ski> executing `[2,3,5,7]' gets you results `2',`3',`5',`7', respectively
2024-09-26 17:53:00 +0200 <ski> for `Proxy', there's never a result
2024-09-26 17:53:28 +0200synchromesh(~john@2406:5a00:241a:5600:2de5:ba26:2eef:9155) (Read error: Connection reset by peer)
2024-09-26 17:54:28 +0200synchromesh(~john@2406:5a00:241a:5600:2de5:ba26:2eef:9155) synchromesh
2024-09-26 17:57:37 +0200lucy(~lucy@user/lucy) (Ping timeout: 248 seconds)
2024-09-26 17:58:03 +0200 <EvanR> when you evaluate an IO action, it doesn't execute. Concept separated
2024-09-26 17:58:41 +0200 <EvanR> > print undefined
2024-09-26 17:58:42 +0200 <lambdabot> <IO ()>
2024-09-26 17:59:53 +0200Square3(~Square4@user/square) (Ping timeout: 244 seconds)
2024-09-26 18:00:38 +0200 <Inst> the results '2', '3', '5', '7', respectively, I don't understand that
2024-09-26 18:00:45 +0200 <Inst> lists are supposed to model nondeterminism as an effect
2024-09-26 18:01:02 +0200ft(~ft@p4fc2acce.dip0.t-ipconnect.de) ft
2024-09-26 18:01:03 +0200Squared(~Square@user/square) Square
2024-09-26 18:01:21 +0200 <Inst> in a sense, executing a monadic action is sort of like a comonad with either injected
2024-09-26 18:01:27 +0200 <Inst> or rather Maybe
2024-09-26 18:01:35 +0200 <EvanR> nondeterminism, i.e. not necessarily 1 result
2024-09-26 18:01:44 +0200 <EvanR> 0 or 1 or more results
2024-09-26 18:02:24 +0200 <Inst> i mean in that sense you can always have a comonad of any monad by injecting Maybe [a]
2024-09-26 18:02:29 +0200 <Inst> or just going to []
2024-09-26 18:02:42 +0200 <EvanR> that doesn't make sense
2024-09-26 18:03:07 +0200 <EvanR> returning multiple results is list specific, maybe you're confusing the list of results with the list type constructor
2024-09-26 18:03:17 +0200 <Inst> monad guarantees that you can inject a value into a monadic context (as well have monadic join be associative)
2024-09-26 18:03:27 +0200yoneda(~mike@193.206.102.122) (Quit: Lost terminal)
2024-09-26 18:03:32 +0200 <Inst> comonad guarantees that you can extract a single value from a comonadic context
2024-09-26 18:03:42 +0200 <EvanR> monad doesn't guarantee you get anything whatsoever, so no, comonad doesn't apply
2024-09-26 18:03:58 +0200 <Inst> i mean not all monads are comonads
2024-09-26 18:04:07 +0200 <EvanR> "you can always have a comonad of any monad"
2024-09-26 18:04:15 +0200 <Inst> but the implication is that you can generate comonads from any monad via []
2024-09-26 18:04:25 +0200ski. o O ( not all primes are even )
2024-09-26 18:04:47 +0200 <ski> how so ?
2024-09-26 18:04:53 +0200 <EvanR> you're veering hard into "anything can be anythinged" territory
2024-09-26 18:04:56 +0200sprout(~sprout@84-80-106-227.fixed.kpn.net) (Ping timeout: 255 seconds)
2024-09-26 18:05:21 +0200 <Inst> i am, i just found it amusing to think that way because I'm holidng the effect interpretation of monads as somewhat unnatural
2024-09-26 18:05:21 +0200 <EvanR> any float is an int... if I just map all floats to zero
2024-09-26 18:05:27 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 18:05:43 +0200 <Inst> and saying that any monadic action can be executed
2024-09-26 18:05:47 +0200 <EvanR> they can't
2024-09-26 18:05:57 +0200 <EvanR> they don't all have a run function
2024-09-26 18:05:58 +0200 <Inst> well, that's ski's assertation
2024-09-26 18:06:10 +0200 <Inst> it's why I asserted that IO actions can be executed
2024-09-26 18:06:14 +0200 <EvanR> e.g. runIO
2024-09-26 18:06:33 +0200 <Inst> case runRW# foo nameOfRealworldTokenIForgot
2024-09-26 18:06:34 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds)
2024-09-26 18:06:43 +0200 <EvanR> there you go again
2024-09-26 18:06:52 +0200 <Inst> why :(
2024-09-26 18:07:01 +0200 <EvanR> anything can be anythinged
2024-09-26 18:07:11 +0200 <Inst> is that a bad thing?
2024-09-26 18:07:15 +0200 <EvanR> yes
2024-09-26 18:07:22 +0200 <EvanR> that's javascript
2024-09-26 18:07:28 +0200 <mauke> runRW# doesn't exist
2024-09-26 18:07:30 +0200 <ski> you can say "When `act >>= cont' is executed, `act' is executed, and for result `x' of executing it, then `cont x' is executed. Result thereof is result of the whole `act >>= cont'."
2024-09-26 18:07:40 +0200 <Inst> i mean that not all monadic actions can be executed
2024-09-26 18:07:43 +0200 <Inst> as per your interpretation
2024-09-26 18:08:06 +0200 <ski> (this doesn't guarantee that there is a way to start off execution, to begin with)
2024-09-26 18:08:07 +0200 <Inst> from ski's interpretation, it does provide the interesting suggestion that you can use [] (0 or more elements] to render any monad a comonad
2024-09-26 18:08:14 +0200 <ski> no
2024-09-26 18:08:24 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-09-26 18:08:30 +0200 <ski> you can't always extract an `a' from a `[a]'
2024-09-26 18:08:54 +0200 <Inst> you can always extract an [a] from [a]
2024-09-26 18:09:00 +0200 <EvanR> for any monad, or any value you want, you can map it to []
2024-09-26 18:09:14 +0200 <Inst> by extension, you can also extract a [a] from Proxy a
2024-09-26 18:09:16 +0200 <mauke> I can always extract an [a] from b
2024-09-26 18:09:23 +0200 <ski> how would that help, Inst ?
2024-09-26 18:09:33 +0200 <Inst> ski: not at all!
2024-09-26 18:09:40 +0200 <Inst> it's just an interesting observation
2024-09-26 18:09:47 +0200 <EvanR> I disagree
2024-09-26 18:09:50 +0200 <ski> i still have no idea where you see a comonad here
2024-09-26 18:10:04 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 18:10:07 +0200 <Inst> i mean i guess it's not a true comonad since comonad has its own associativity rules
2024-09-26 18:10:17 +0200 <EvanR> you failed to get an a
2024-09-26 18:10:21 +0200 <ski> unless, i guess, you're talking about the `Identity' comonad ? (are you ?)
2024-09-26 18:10:28 +0200 <mauke> what's the other comonad operation? separate :: w a -> w (w a)?
2024-09-26 18:10:33 +0200 <EvanR> duplicate
2024-09-26 18:10:43 +0200 <Inst> <ski> if `m' is a monad, then an `m'-action (a value of type `m a', for some type `a') is executed/run/performed/invoked, to (possibly) produce result of type `a'
2024-09-26 18:10:51 +0200 <Inst> possibly
2024-09-26 18:11:06 +0200 <Inst> implies that any monadic action can produce a result of type [a]
2024-09-26 18:11:10 +0200 <Inst> whereas [] represents no result
2024-09-26 18:11:17 +0200 <mauke> that sounds more like trying to describe >>= than an actual run operation
2024-09-26 18:11:23 +0200 <ski> (but how does that allow you to "have a comonad of any monad by injecting Maybe [a]" ?)
2024-09-26 18:11:33 +0200 <Inst> Maybe [a] isn't necessary
2024-09-26 18:11:35 +0200 <Inst> you just need []
2024-09-26 18:11:38 +0200 <Inst> 0 or more results
2024-09-26 18:11:47 +0200 <mauke> Inst: why not just Maybe if all you're going for is Nothing?
2024-09-26 18:11:52 +0200 <ski> "implies that any monadic action can produce a result of type [a]" -- no
2024-09-26 18:11:56 +0200 <EvanR> that fails to satisfy the definition of a comonad
2024-09-26 18:12:02 +0200 <Inst> ski: why not?
2024-09-26 18:12:14 +0200 <Inst> i mean the hole i'm thinking is more runReader producing a r -> a function
2024-09-26 18:12:37 +0200 <EvanR> runAnything ma = [] doesn't have that type
2024-09-26 18:13:03 +0200 <EvanR> round beg square hole
2024-09-26 18:13:06 +0200 <EvanR> peg
2024-09-26 18:13:15 +0200 <Inst> division by zero is the fruit of all creativity :3
2024-09-26 18:13:20 +0200 <Inst> (source)
2024-09-26 18:13:24 +0200Vajb(~Vajb@n7m8bu6eaitlx0eukg2-1.v6.elisa-mobile.fi) (Ping timeout: 272 seconds)
2024-09-26 18:13:28 +0200 <EvanR> o_O
2024-09-26 18:13:50 +0200 <EvanR> it's the source of several erroneous proofs I can think of
2024-09-26 18:14:06 +0200 <EvanR> proving 1 = 2 and such
2024-09-26 18:14:20 +0200 <ski> Inst : you can't extract an `a' from `IO a'. similarly neither from `ContT () IO a' (which can be used e.g. to express non-deterministic Input/Output computations)
2024-09-26 18:14:21 +0200 <Inst> if you define division by zero as the set of all real numbers, division by zero always contains your answer, just almost certainly not in a useful manner
2024-09-26 18:14:23 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 18:14:36 +0200 <EvanR> like that falso logic system
2024-09-26 18:14:47 +0200 <EvanR> all propositions are true, and false
2024-09-26 18:14:48 +0200 <Inst> ski: yeah, that was my point, the problem with the [a] extraction converting any monad into a comonad would be function types
2024-09-26 18:15:02 +0200 <mauke> if you think of monads as containers/boxes, then >>= lets you open a box, but only by magically trapping you inside a bigger box
2024-09-26 18:15:22 +0200 <ski> besides, being able to extract `[a]' would still not help with your comonad notion here
2024-09-26 18:15:33 +0200 <EvanR> it wouldn't be a comonad
2024-09-26 18:15:34 +0200 <Inst> i just think of monads as (Type -> Type) -> Constraint and Type -> Type
2024-09-26 18:16:07 +0200 <Inst> eta, map, and mu
2024-09-26 18:16:15 +0200 <EvanR> getting comonads right is what makes comonads so useless, lets keep it that way xD
2024-09-26 18:16:41 +0200 <ski> a monad, in this context, is an `m :: Type -> Type', such that we have an instance `Monad m' (satisfying the laws, say). that's `Monad', not `(Type -> Type) -> Constraint'
2024-09-26 18:16:43 +0200 <EvanR> otherwise you end up with stuff like "isomorphic javascript" (an actual "thing" at one time)
2024-09-26 18:16:52 +0200 <Inst> https://www.haskellforall.com/2013/02/you-could-have-invented-comonads.html
2024-09-26 18:16:52 +0200hc(~hc@mail.hce.li) hc
2024-09-26 18:16:56 +0200 <Inst> iirc this isn't exactly correct
2024-09-26 18:17:08 +0200 <mauke> the type of Monad is (Type -> Type) -> Constraint, I think
2024-09-26 18:17:11 +0200 <mauke> like all constructor classes
2024-09-26 18:17:30 +0200 <Inst> with regards to EvanR calling Comonads useless
2024-09-26 18:17:32 +0200 <ski> yes. but we're not considering all type classes having that kind here
2024-09-26 18:17:38 +0200 <ski> we're considering `Monad' in particular
2024-09-26 18:18:07 +0200 <ski> (and perhaps also `Comonad', in particular)
2024-09-26 18:18:09 +0200 <EvanR> they're fairly unuseful, but of course, you can anything it into anythingfulness
2024-09-26 18:18:09 +0200 <Inst> (I'd find it funny to consider comonadic programming the dominant programming paradigm ;))
2024-09-26 18:18:23 +0200 <EvanR> by simply saying so
2024-09-26 18:18:50 +0200 <ski> (otoh, we are considering all types of kind `Type -> Type', when we're considering the monad concept)
2024-09-26 18:18:56 +0200 <monochrom> I will just have fun poking holes into "inject into the context". With "data Proxy a = Proxy", "pure _ = Proxy", you clearly don't have an injection.
2024-09-26 18:19:02 +0200 <Inst> a -> b is not a useless function, it's simply a question of having the computing capability to search through all a -> b for something useful
2024-09-26 18:19:21 +0200 <Inst> monochrom: you can claim it's a destructive injection
2024-09-26 18:19:29 +0200 <EvanR> a -> b isn't useless, isn't an empty type
2024-09-26 18:19:36 +0200 <EvanR> so is as useful as Void
2024-09-26 18:19:41 +0200 <ski> if `a' has more than two inhabitants, it's not an injection
2024-09-26 18:19:45 +0200 <monochrom> Maybe you can. But I can't. I have integrity.
2024-09-26 18:20:06 +0200 <EvanR> it's an*
2024-09-26 18:20:15 +0200 <monochrom> By definition, injection cannot be destructive.
2024-09-26 18:20:19 +0200 <ski> er, s/more than two/two or more/
2024-09-26 18:20:30 +0200 <Inst> monochrom: tbh, after 3 years, all I can really say about monads is that it's best to think of them in terms of the definitions and laws, then start looking for uses instead of going through dumb analogies
2024-09-26 18:20:43 +0200 <EvanR> have you written a monad tutorial yet
2024-09-26 18:20:49 +0200 <ski> (please don't)
2024-09-26 18:20:51 +0200 <EvanR> lol
2024-09-26 18:20:55 +0200 <monochrom> Right. So what is this hour-long conversation about again?
2024-09-26 18:21:01 +0200 <Inst> I'd love to write a monad tutorial writer
2024-09-26 18:21:19 +0200 <Inst> ski asserting that you can execute monadic actions after I asked about whether it's terminologically appropriate to say you can execute an IO action
2024-09-26 18:21:19 +0200 <ski> monochrom : dispelling misconceptions, possibly. maybe
2024-09-26 18:21:23 +0200 <EvanR> I wonder if chat-gpt can generate satirical monad tutorials
2024-09-26 18:21:44 +0200 <EvanR> which hopefully people don't take seriously when I post them on reddit
2024-09-26 18:21:54 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-09-26 18:21:58 +0200 <ski> a la Sokal, EvanR ?
2024-09-26 18:22:07 +0200 <EvanR> hmm... no
2024-09-26 18:22:19 +0200 <EvanR> it would be more coherent
2024-09-26 18:22:30 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 18:22:31 +0200 <EvanR> unless you mean taking seriously
2024-09-26 18:22:35 +0200 <monochrom> I can only understand the conversation as mansplaining the laws in one's own words to show that one is making it all up.
2024-09-26 18:22:44 +0200 <Inst> monochrom: then, based on his assertation, i tried to see if i could argue that you can use [a] to generate a comonad from any monad
2024-09-26 18:23:02 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2024-09-26 18:23:03 +0200 <EvanR> and you still haven't admitted that that's wrong
2024-09-26 18:23:13 +0200 <monochrom> Why argue? Write a proof, write actual code.
2024-09-26 18:23:14 +0200 <ski> afaiui, you haven't told us whoc comonad would be generated from any given monad `m'
2024-09-26 18:23:18 +0200 <ski> s/whoc/which/
2024-09-26 18:23:40 +0200 <monochrom> Write the proof in Agda or Lean for good measure.
2024-09-26 18:24:05 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 18:24:17 +0200 <Inst> hmmm, okay Professor Monochrom.
2024-09-26 18:24:34 +0200 <Inst> I just need to figure out how to deal with the damned r -> a instances
2024-09-26 18:25:23 +0200 <mauke> if r -> a causes problems, then so do state, writer, cont, parser, etc.
2024-09-26 18:25:29 +0200 <mauke> or really any monad that isn't [] or Maybe
2024-09-26 18:25:51 +0200 <EvanR> even [] isn't a comonad
2024-09-26 18:25:57 +0200 <EvanR> Stream though
2024-09-26 18:26:56 +0200 <dolio> Proofs are code.
2024-09-26 18:27:23 +0200 <ski> Inst : talking about executing monadic actions is a useful figure of speech. you could (if you wanted to think about it rather abstractly) think of it as reasoning on the level of an internal language in the Kleisli category of the monad in question. (although, i suspect that latter part may not make much sense to you, unless you know what the Kleisli category is, and have an idea of the internal language in
2024-09-26 18:27:29 +0200 <ski> a topos). or, if you prefer, it's reasoning at the level of an imperative language (for a particular monad `m'), which could be compiled to Haskell
2024-09-26 18:28:20 +0200 <ski> @quote world's.best
2024-09-26 18:28:21 +0200 <lambdabot> SPJ says: Haskell is the world's best imperative language.
2024-09-26 18:28:33 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 18:29:59 +0200 <Inst> re free comonads, i guess we have cofree comonads right now
2024-09-26 18:30:02 +0200 <Inst> https://reasonablypolymorphic.com/blog/cofree-comonads/
2024-09-26 18:34:11 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
2024-09-26 18:39:19 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-09-26 18:41:52 +0200alp_(~alp@2001:861:e3d6:8f80:538:d7bb:b13e:aad) (Quit: Leaving)
2024-09-26 18:42:37 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 18:47:04 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2024-09-26 18:48:25 +0200misterfish(~misterfis@84.53.85.146) misterfish
2024-09-26 18:48:46 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-09-26 18:49:02 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 18:50:30 +0200sprout(~sprout@84-80-106-227.fixed.kpn.net)
2024-09-26 18:56:09 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds)
2024-09-26 18:59:52 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-09-26 19:03:28 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-09-26 19:04:32 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-09-26 19:07:15 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-09-26 19:11:27 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 19:15:37 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-09-26 19:16:21 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-09-26 19:24:21 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 19:27:15 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 19:29:01 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-09-26 19:29:21 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-09-26 19:30:32 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 19:32:06 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 19:33:23 +0200 <Inst> i guess it comes out to, you can conceive of a typeclassed function sExtends with the typing
2024-09-26 19:33:35 +0200 <Inst> Monad m => m a -> [a]
2024-09-26 19:33:51 +0200 <Inst> withn functions you can present the (mathematical) range of the function
2024-09-26 19:33:56 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2024-09-26 19:34:54 +0200infinity0(~infinity0@pwned.gg) (Ping timeout: 246 seconds)
2024-09-26 19:38:49 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2024-09-26 19:39:35 +0200 <ski> "typeclassed function" ?
2024-09-26 19:42:27 +0200weary-traveler(~user@user/user363627) user363627
2024-09-26 19:42:33 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 252 seconds)
2024-09-26 19:42:38 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds)
2024-09-26 19:43:02 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 19:45:24 +0200mulk(~mulk@p5b112a06.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2024-09-26 19:45:33 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2024-09-26 19:48:05 +0200 <Inst> well, a method, I guess
2024-09-26 19:49:42 +0200 <EvanR> Monad m => m a -> [a] seems to have exactly 1 implementation
2024-09-26 19:50:01 +0200 <EvanR> unless you get into creative combinations of undefined
2024-09-26 19:50:03 +0200 <ski> a method, of which type class. with which tyvars as parameters ?
2024-09-26 19:50:10 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-09-26 19:50:52 +0200 <ski> (specifically, any of `m' and `a' ?)
2024-09-26 19:51:41 +0200 <Inst> yeah
2024-09-26 19:52:50 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 19:52:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-09-26 19:53:11 +0200 <Inst> for (a -> k) -> k cont, simply output the entire set of a, for (r -> a), output the domain by testing the input of a, etc, but w/e, this isn't a good strategy to try to derive something like a free comonad, as opposed to cofree comonad
2024-09-26 19:53:30 +0200 <Inst> also, incidental and annoying discovery
2024-09-26 19:53:36 +0200mulk(~mulk@p5b112a06.dip0.t-ipconnect.de) mulk
2024-09-26 19:53:48 +0200 <ski> `a' could be uncountably infinite
2024-09-26 19:53:51 +0200 <Inst> type a $ b = a b works, type (a . b) c = a (b c) doesn't compose
2024-09-26 19:53:53 +0200xal(~xal@mx1.xal.systems) (Quit: bye)
2024-09-26 19:53:55 +0200 <Inst> and yeah, I thought about that too
2024-09-26 19:54:21 +0200xal(~xal@mx1.xal.systems) xal
2024-09-26 19:54:50 +0200 <Inst> which is actually interesting, how could you depict a type with uncountably infinite values?
2024-09-26 19:55:24 +0200 <tomsmeding> [Integer]
2024-09-26 19:55:27 +0200 <tomsmeding> oh
2024-09-26 19:55:31 +0200 <tomsmeding> never mind
2024-09-26 19:55:39 +0200 <EvanR> if the values are defined by finite programs, you can't
2024-09-26 19:55:47 +0200 <EvanR> for some value of depict
2024-09-26 19:55:49 +0200 <tomsmeding> okay sure, yes [Bool] will do
2024-09-26 19:56:01 +0200 <tomsmeding> just as a binary expansion of values in R
2024-09-26 19:56:05 +0200 <Inst> ummm, cantor diagonalization?
2024-09-26 19:56:10 +0200infinity0(~infinity0@pwned.gg) infinity0
2024-09-26 19:56:15 +0200 <tomsmeding> remember that lists can be infinite
2024-09-26 19:56:27 +0200 <Inst> yeah but there's no complaint about infinite, that's the advantage of [a]
2024-09-26 19:56:32 +0200 <Inst> it's uncountably infinite that's the real problem
2024-09-26 19:57:01 +0200 <tomsmeding> hm I guess [Bool] is only the computable reals
2024-09-26 19:57:05 +0200 <tomsmeding> are those countable?
2024-09-26 19:57:05 +0200 <EvanR> there's a countable number of such programs so you don't have uncountably infinite values
2024-09-26 19:57:13 +0200 <tomsmeding> right, probably
2024-09-26 19:57:21 +0200 <ski> no, tomsmeding
2024-09-26 19:57:29 +0200 <EvanR> but someone could feed you a [Bool] from who knows where
2024-09-26 19:57:50 +0200 <ski> (difference between algorithmic and computable)
2024-09-26 19:58:34 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 19:58:37 +0200 <ski> yep. "lawless sequences", in Brouwer terminology
2024-09-26 19:59:00 +0200 <ski> (ones that are not described by any algorithm, but are still computable)
2024-09-26 19:59:10 +0200 <monochrom> [Integer] is countable or uncountable depending on which exact semantics you use.
2024-09-26 19:59:15 +0200 <monochrom> Likewise for [Bool].
2024-09-26 19:59:41 +0200 <tomsmeding> I guess
2024-09-26 19:59:57 +0200 <EvanR> side step the whole shindig by saying [Integer] is a type, not a set
2024-09-26 20:00:07 +0200 <EvanR> don't try to assign cardinality
2024-09-26 20:00:18 +0200 <EvanR> polymorphism is not set theoretic
2024-09-26 20:00:33 +0200 <monochrom> OK, countable or uncountable or you-don't-even-know :)
2024-09-26 20:00:54 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 260 seconds)
2024-09-26 20:00:56 +0200 <EvanR> or ultrafinite
2024-09-26 20:01:23 +0200EvanRhides
2024-09-26 20:03:35 +0200tomboy64(~tomboy64@user/tomboy64) tomboy64
2024-09-26 20:03:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 20:04:05 +0200ft(~ft@p4fc2acce.dip0.t-ipconnect.de) (Quit: leaving)
2024-09-26 20:08:31 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 20:10:23 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-09-26 20:11:31 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 20:13:05 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-09-26 20:18:25 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-09-26 20:21:32 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 20:25:57 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 248 seconds)
2024-09-26 20:26:38 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-09-26 20:27:34 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-09-26 20:29:21 +0200shapr(~user@4.30.215.226) shapr
2024-09-26 20:29:32 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 20:29:45 +0200 <shapr> hi
2024-09-26 20:29:48 +0200 <shapr> How's code?
2024-09-26 20:31:12 +0200 <[exa]> I just killed ghc (panic! (the 'impossible' happened))
2024-09-26 20:31:34 +0200 <[exa]> somehow it's 9.4.4, will try upgrade and see. :D
2024-09-26 20:32:19 +0200 <shapr> yay!
2024-09-26 20:32:34 +0200 <shapr> I'm writing fun code, as always
2024-09-26 20:32:50 +0200 <shapr> Where do you put your Arbitrary instances? In the library with the type, or in the test module?
2024-09-26 20:33:51 +0200 <[exa]> if the type is exported, into the library
2024-09-26 20:34:00 +0200 <[exa]> so that others don't have to implement their own arbitrary if trying to do tests
2024-09-26 20:34:51 +0200 <shapr> hm, I like that reasoning!
2024-09-26 20:36:15 +0200 <[exa]> \o/
2024-09-26 20:36:30 +0200 <[exa]> also kinda depends on how opinionated the Arbitrary gets
2024-09-26 20:36:36 +0200 <[exa]> if there's a natural one, go for it
2024-09-26 20:36:59 +0200 <shapr> yeah, true
2024-09-26 20:37:04 +0200 <[exa]> if not, maybe stash it in an ugly instance-only module module
2024-09-26 20:37:10 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 272 seconds)
2024-09-26 20:37:12 +0200 <[exa]> "ugly"
2024-09-26 20:37:22 +0200 <shapr> Yeah, I hit an especially ugly Arbitrary a few months ago
2024-09-26 20:37:29 +0200 <shapr> my own fault, as always
2024-09-26 20:41:03 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-09-26 20:44:25 +0200 <Rembane> I'm putting the Arbitrary in the same module as the type, or make a Generator-module if it becomes truly gnarly.
2024-09-26 20:46:50 +0200euphores(~SASL_euph@user/euphores) euphores
2024-09-26 20:48:26 +0200rvalue-(~rvalue@user/rvalue) rvalue
2024-09-26 20:48:43 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 245 seconds)
2024-09-26 20:53:00 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2024-09-26 20:53:01 +0200 <tomsmeding> [exa]: and poof, QuickCheck dependency in a library that doesn't need it :p
2024-09-26 20:53:06 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 20:53:20 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-09-26 20:53:46 +0200 <shapr> tomsmeding: any thoughts on how to do it better?
2024-09-26 20:54:06 +0200 <tomsmeding> no
2024-09-26 20:54:14 +0200shaprthinks
2024-09-26 20:54:21 +0200 <tomsmeding> this is the problem I have with haskell's way of doing instances
2024-09-26 20:54:26 +0200 <tomsmeding> the thing is, I have no solution
2024-09-26 20:54:28 +0200 <tomsmeding> and that annoys me :)
2024-09-26 20:54:41 +0200troydm(~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2024-09-26 20:54:47 +0200 <shapr> Arbitrary and Shrink could be separated from QuickCheck
2024-09-26 20:55:01 +0200flounders(~flounders@2607:fb91:f40:c71f:8dda:e662:7d36:da1f) (Quit: WeeChat 4.3.3)
2024-09-26 20:55:09 +0200 <shapr> A few months ago I knew how to work with LeanCheck, QuickCheck, and HedgeHog
2024-09-26 20:55:12 +0200 <shapr> but it's faded
2024-09-26 20:55:18 +0200 <tomsmeding> you still get an additional dependency, but perhaps it's smaller indeed
2024-09-26 20:55:33 +0200 <shapr> Your point of "depends on QuickCheck" is a good point
2024-09-26 20:55:51 +0200 <tomsmeding> I now remember that there's a more general guideline that solves this problem too: ban orphans in libraries, but allow them in executables
2024-09-26 20:56:00 +0200 <shapr> if there were an interface with "random value of this type" and "shrink this value" might help?
2024-09-26 20:56:13 +0200 <shapr> tomsmeding: oh, how does that solve the problem?
2024-09-26 20:56:22 +0200 <tomsmeding> the problem with orphans is that you can get conflicting instances, and this is annoying because you cannot not-export instances, and you cannot not-import instances
2024-09-26 20:56:23 +0200rvalue-rvalue
2024-09-26 20:56:33 +0200 <tomsmeding> so putting an orphan instance in a library is a sure-fire way of annoying people
2024-09-26 20:56:35 +0200 <shapr> oh yeah
2024-09-26 20:56:40 +0200 <tomsmeding> but putting an orphan instance in an executable annoys only yourself
2024-09-26 20:56:46 +0200 <tomsmeding> and presumably it's the right instance for you!
2024-09-26 20:56:55 +0200 <shapr> So, always put instances in a separate module that's not re-exported?
2024-09-26 20:57:13 +0200 <shapr> that sounds like it gives users both convenience and choice
2024-09-26 20:57:20 +0200 <tomsmeding> that module must also never be _imported_ by yourself
2024-09-26 20:57:23 +0200 <tomsmeding> instances spread virally
2024-09-26 20:57:30 +0200 <shapr> oh I see what you mean
2024-09-26 20:57:31 +0200 <tomsmeding> if you import a module that defines an instance, you export that instance unconditionally
2024-09-26 20:57:48 +0200 <shapr> yeah, I see
2024-09-26 20:57:55 +0200 <tomsmeding> it would be okay to put orphans in library if they are in a separate module _that nothing else ever uses_
2024-09-26 20:58:00 +0200 <tomsmeding> but then, y'know, why is the module there
2024-09-26 20:58:03 +0200misterfish(~misterfis@84.53.85.146) (Ping timeout: 265 seconds)
2024-09-26 20:58:04 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-09-26 20:58:39 +0200 <tomsmeding> also, "okay" is relative: then importing that "orphans module" becomes essentially "using orphans", to which the same principle applies transitively: only in executables, or separate unused modules in a library
2024-09-26 20:59:01 +0200 <tomsmeding> the way this solves the quickcheck problem is that a test suite is an executable
2024-09-26 20:59:05 +0200 <shapr> this reminds me I need to re-read the falsify paper, since it does shrinking entirely differently
2024-09-26 20:59:05 +0200 <tomsmeding> so put it in the test suite :)
2024-09-26 20:59:22 +0200 <shapr> thanks for the advice
2024-09-26 20:59:24 +0200 <[exa]> ok good point
2024-09-26 20:59:29 +0200 <tomsmeding> I read this somewhere, it's not my genius
2024-09-26 20:59:35 +0200 <tomsmeding> but it feels like a decent approach
2024-09-26 21:00:01 +0200caconym(~caconym@user/caconym) (Quit: bye)
2024-09-26 21:00:24 +0200 <tomsmeding> (I strongly dislike hmatrix for blatantly going against this guideline)
2024-09-26 21:00:39 +0200caconym(~caconym@user/caconym) caconym
2024-09-26 21:00:59 +0200 <Rembane> You can also not have an Arbitrary instance and use a function to generate stuff instead, and call that function from forAllSomethingSomething in QuickCheck.
2024-09-26 21:00:59 +0200 <shapr> tomsmeding: if you find the source, I'd like a link
2024-09-26 21:01:11 +0200 <tomsmeding> Rembane: ooh, good one
2024-09-26 21:01:23 +0200 <tomsmeding> Rembane: but now you depend on `random` ;)
2024-09-26 21:01:23 +0200 <[exa]> phew, ghc 9.10 fixed the panic. :D
2024-09-26 21:01:25 +0200 <tomsmeding> (probably)
2024-09-26 21:01:30 +0200 <shapr> Rembane: even better, then you can allow people to make their own Arbitrary instance
2024-09-26 21:01:37 +0200 <Rembane> tomsmeding: Nah, only QuickCheck. Let me get some links!
2024-09-26 21:02:06 +0200 <Rembane> shapr, tomsmeding: https://hackage.haskell.org/package/QuickCheck-2.15.0.1/docs/Test-QuickCheck.html#v:forAll <- use this function or one of its friends.
2024-09-26 21:02:16 +0200[exa]. o O ( who'd think functions would be the solution again )
2024-09-26 21:02:29 +0200 <tomsmeding> Rembane: the whole point of my rant here was that a random library that doesn't have anything to do with testing should not depend on QuickCheck :p
2024-09-26 21:02:33 +0200 <Rembane> [exa]: Functions are the best! It's the ultimate abstraction!
2024-09-26 21:02:44 +0200 <Rembane> tomsmeding: I ignored that part! :D
2024-09-26 21:03:10 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-09-26 21:03:19 +0200 <[exa]> Rembane: always happy to see more proofs of that
2024-09-26 21:03:33 +0200alp_(~alp@2001:861:e3d6:8f80:538:d7bb:b13e:aad)
2024-09-26 21:03:34 +0200 <tomsmeding> I guess if you can write your function to take a (g -> (Word, g)) or something, then you can avoid dependencies on `random` _and_ on `QuickCheck`; the user just stuffs in System.Random.uniform or one of its friends, I forget the names
2024-09-26 21:03:37 +0200 <shapr> I wrote a library that depends on LeanCheck, QuickCheck, AND HedgeHog! I really need to fix that.
2024-09-26 21:04:12 +0200 <shapr> gotta convert that into kudzu-core, kudzu-leancheck, kudzu-quickcheck, kudzu-hedgehog
2024-09-26 21:04:25 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 21:05:35 +0200 <tomsmeding> shapr: this is not exactly what I described before, but it's definitely related https://www.michaelpj.com/blog/2020/10/29/your-orphans-are-fine.html
2024-09-26 21:06:24 +0200 <shapr> thanks!
2024-09-26 21:08:53 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 21:09:19 +0200Sgeo_(~Sgeo@user/sgeo) Sgeo
2024-09-26 21:09:25 +0200Pixi`(~Pixi@user/pixi) Pixi
2024-09-26 21:09:55 +0200 <int-e> . o O ( first sentence of a ransom notice )
2024-09-26 21:10:15 +0200 <tomsmeding> (and I think that this is the blog post I had in mind. So either my memory distorted what I read into something simpler, or I read the idea somewhere else and the memories merged.)
2024-09-26 21:10:18 +0200 <tomsmeding> int-e: quite
2024-09-26 21:10:32 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 244 seconds)
2024-09-26 21:10:40 +0200 <tomsmeding> but then the question is, who are "you" if the sentence is "your orphans are fine"
2024-09-26 21:10:57 +0200shapr(~user@4.30.215.226) (Quit: walking home)
2024-09-26 21:10:58 +0200ThePenguin5(~ThePengui@cust-95-80-24-166.csbnet.se) ThePenguin
2024-09-26 21:11:20 +0200son0p(~ff@191.104.21.8) (Killed (NickServ (GHOST command used by son0p-)))
2024-09-26 21:13:28 +0200raehik1(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 21:13:33 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 21:13:33 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-09-26 21:13:38 +0200AlexZenon(~alzenon@178.34.162.53) (Ping timeout: 244 seconds)
2024-09-26 21:14:09 +0200some02(~cat@user/sudden) sudden
2024-09-26 21:14:59 +0200AlexNoo(~AlexNoo@178.34.162.53) (Ping timeout: 260 seconds)
2024-09-26 21:15:06 +0200rvalue(~rvalue@user/rvalue) (Remote host closed the connection)
2024-09-26 21:15:28 +0200rvalue(~rvalue@user/rvalue) rvalue
2024-09-26 21:15:48 +0200Squared(~Square@user/square) (Remote host closed the connection)
2024-09-26 21:16:24 +0200AlexNoo(~AlexNoo@178.34.162.53)
2024-09-26 21:16:26 +0200zero(~z@user/zero) zero
2024-09-26 21:16:44 +0200 <int-e> anyway, not a bad take on orphan instances.
2024-09-26 21:17:13 +0200 <tomsmeding> agreed
2024-09-26 21:17:34 +0200Fooo(~Square@user/square) Square
2024-09-26 21:18:20 +0200sprout_(~sprout@2a02-a448-3a80-0-c61c-b515-5509-58e7.fixed6.kpn.net) sprout
2024-09-26 21:19:23 +0200weary-traveler(~user@user/user363627) user363627
2024-09-26 21:19:31 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (*.net *.split)
2024-09-26 21:19:31 +0200sprout(~sprout@84-80-106-227.fixed.kpn.net) (*.net *.split)
2024-09-26 21:19:31 +0200Sgeo(~Sgeo@user/sgeo) (*.net *.split)
2024-09-26 21:19:31 +0200Digit(~user@user/digit) (*.net *.split)
2024-09-26 21:19:31 +0200sawilagar(~sawilagar@user/sawilagar) (*.net *.split)
2024-09-26 21:19:31 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (*.net *.split)
2024-09-26 21:19:31 +0200turlando(~turlando@user/turlando) (*.net *.split)
2024-09-26 21:19:31 +0200ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se) (*.net *.split)
2024-09-26 21:19:31 +0200TMA(tma@twin.jikos.cz) (*.net *.split)
2024-09-26 21:19:31 +0200Pixi(~Pixi@user/pixi) (*.net *.split)
2024-09-26 21:19:31 +0200TonyStone(~TonyStone@user/TonyStone) (*.net *.split)
2024-09-26 21:19:32 +0200robobub(uid248673@id-248673.uxbridge.irccloud.com) (*.net *.split)
2024-09-26 21:19:32 +0200op_4(~tslil@user/op-4/x-9116473) (*.net *.split)
2024-09-26 21:19:32 +0200sudden(~cat@user/sudden) (*.net *.split)
2024-09-26 21:19:32 +0200red-snail(~snail@static.151.210.203.116.clients.your-server.de) (*.net *.split)
2024-09-26 21:19:32 +0200meinside(uid24933@id-24933.helmsley.irccloud.com) (*.net *.split)
2024-09-26 21:19:32 +0200zzz(~z@user/zero) (*.net *.split)
2024-09-26 21:19:33 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216) (*.net *.split)
2024-09-26 21:19:33 +0200lieven(~mal@ns2.wyrd.be) (*.net *.split)
2024-09-26 21:19:33 +0200lyxia(~lyxia@poisson.chat) (*.net *.split)
2024-09-26 21:19:33 +0200A_Dragon(A_D@libera/staff/dragon) (*.net *.split)
2024-09-26 21:19:33 +0200nisstyre(wes@user/nisstyre) (*.net *.split)
2024-09-26 21:19:33 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
2024-09-26 21:19:34 +0200alanz(sid110616@id-110616.uxbridge.irccloud.com) (*.net *.split)
2024-09-26 21:19:34 +0200enikar(~enikar@user/enikar) (*.net *.split)
2024-09-26 21:19:34 +0200sweater(~sweater@206.81.18.26) (*.net *.split)
2024-09-26 21:19:34 +0200flocks(~flocks@134.122.90.60) (*.net *.split)
2024-09-26 21:19:34 +0200wryish(~wryish@2605:4c40:119:efa3:0:727d:19eb:1) (*.net *.split)
2024-09-26 21:19:34 +0200hacklschorsch(~flo@vantaa.latfa.net) (*.net *.split)
2024-09-26 21:19:34 +0200s4msung(u4jHfpaUni@user/s4msung) (*.net *.split)
2024-09-26 21:19:35 +0200loonycyborg(loonycybor@wesnoth/developer/loonycyborg) (*.net *.split)
2024-09-26 21:19:35 +0200_0xa(~user@user/0xa/x-3134607) (*.net *.split)
2024-09-26 21:19:35 +0200SanchayanMaity(sid478177@2a03:5180:f:4::7:4be1) (*.net *.split)
2024-09-26 21:19:35 +0200meooow(~meooow@2400:6180:100:d0::ad9:e001) (*.net *.split)
2024-09-26 21:19:35 +0200taktoa[c](sid282096@2a03:5180:f::4:4df0) (*.net *.split)
2024-09-26 21:19:35 +0200edm(sid147314@2a03:5180:f:4::2:3f72) (*.net *.split)
2024-09-26 21:19:35 +0200JSharp(sid4580@user/JSharp) (*.net *.split)
2024-09-26 21:19:35 +0200Flow(~none@gentoo/developer/flow) (*.net *.split)
2024-09-26 21:19:35 +0200Philonous(~Philonous@user/philonous) (*.net *.split)
2024-09-26 21:19:36 +0200ThePenguin5ThePenguin
2024-09-26 21:20:15 +0200Digitteknohippie(~user@77.47.7.51.dyn.plus.net)
2024-09-26 21:20:15 +0200sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-09-26 21:20:15 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) mrmonday
2024-09-26 21:20:15 +0200turlando(~turlando@user/turlando) turlando
2024-09-26 21:20:15 +0200TMA(tma@twin.jikos.cz) TMA
2024-09-26 21:20:15 +0200robobub(uid248673@id-248673.uxbridge.irccloud.com) robobub
2024-09-26 21:20:15 +0200op_4(~tslil@user/op-4/x-9116473) op_4
2024-09-26 21:20:15 +0200red-snail(~snail@static.151.210.203.116.clients.your-server.de) red-snail
2024-09-26 21:20:15 +0200meinside(uid24933@id-24933.helmsley.irccloud.com) meinside
2024-09-26 21:20:15 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216) {-d0t-}
2024-09-26 21:20:15 +0200lieven(~mal@ns2.wyrd.be) lieven
2024-09-26 21:20:15 +0200lyxia(~lyxia@poisson.chat) lyxia
2024-09-26 21:20:15 +0200A_Dragon(A_D@libera/staff/dragon) ad
2024-09-26 21:20:15 +0200nisstyre(wes@user/nisstyre) nisstyre
2024-09-26 21:20:15 +0200hacklschorsch(~flo@vantaa.latfa.net)
2024-09-26 21:20:15 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de) wz1000
2024-09-26 21:20:15 +0200alanz(sid110616@id-110616.uxbridge.irccloud.com) alanz
2024-09-26 21:20:15 +0200enikar(~enikar@user/enikar) enikar
2024-09-26 21:20:15 +0200sweater(~sweater@206.81.18.26) sweater
2024-09-26 21:20:15 +0200flocks(~flocks@134.122.90.60) flocks
2024-09-26 21:20:15 +0200wryish(~wryish@2605:4c40:119:efa3:0:727d:19eb:1)
2024-09-26 21:20:15 +0200s4msung(u4jHfpaUni@user/s4msung) s4msung
2024-09-26 21:20:15 +0200loonycyborg(loonycybor@wesnoth/developer/loonycyborg) loonycyborg
2024-09-26 21:20:15 +0200_0xa(~user@user/0xa/x-3134607) _0xa
2024-09-26 21:20:15 +0200SanchayanMaity(sid478177@2a03:5180:f:4::7:4be1) SanchayanMaity
2024-09-26 21:20:15 +0200meooow(~meooow@2400:6180:100:d0::ad9:e001) meooow
2024-09-26 21:20:15 +0200taktoa[c](sid282096@2a03:5180:f::4:4df0) taktoa[c]
2024-09-26 21:20:15 +0200edm(sid147314@2a03:5180:f:4::2:3f72) edm
2024-09-26 21:20:15 +0200JSharp(sid4580@user/JSharp) JSharp
2024-09-26 21:20:15 +0200Flow(~none@gentoo/developer/flow) flow
2024-09-26 21:20:15 +0200Philonous(~Philonous@user/philonous) Philonous
2024-09-26 21:22:20 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-09-26 21:24:18 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 21:25:04 +0200shapr(~user@2601:19c:417e:5434:7fbe:b5f1:8fe7:ea47) shapr
2024-09-26 21:25:32 +0200AlexZenon(~alzenon@178.34.162.53)
2024-09-26 21:26:05 +0200robobub(uid248673@id-248673.uxbridge.irccloud.com) (Ping timeout: 265 seconds)
2024-09-26 21:26:09 +0200TonyStone(~TonyStone@user/TonyStone) TonyStone
2024-09-26 21:27:32 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 21:29:08 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-09-26 21:29:20 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-09-26 21:32:29 +0200robobub(uid248673@id-248673.uxbridge.irccloud.com) robobub
2024-09-26 21:32:30 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds)
2024-09-26 21:39:08 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds)
2024-09-26 21:39:27 +0200 <Inst> in do notation for lists, what's the idiomatic way to denote an empty list (fail the chain)?
2024-09-26 21:39:32 +0200motherfsck(~motherfsc@user/motherfsck) motherfsck
2024-09-26 21:39:35 +0200 <Inst> I'm using fail "", but it feels out of date
2024-09-26 21:40:06 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 21:40:26 +0200 <tomsmeding> []?
2024-09-26 21:40:33 +0200 <tomsmeding> also mzero
2024-09-26 21:42:02 +0200 <Inst> thanks
2024-09-26 21:42:13 +0200lucy(~lucy@user/lucy) (Ping timeout: 248 seconds)
2024-09-26 21:42:49 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-09-26 21:43:18 +0200 <Inst> also, more disgusting crap:
2024-09-26 21:43:18 +0200 <tomsmeding> or good old mempty
2024-09-26 21:43:24 +0200 <Inst> write a list comprehension that returns an IO value
2024-09-26 21:43:28 +0200 <Inst> then sequenceA_
2024-09-26 21:43:38 +0200 <tomsmeding> why is that disgusting?
2024-09-26 21:44:04 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 21:44:08 +0200 <ski> yea, sometimes you can generalize to `MonadPlus' (or `Alternative')
2024-09-26 21:44:18 +0200 <tomsmeding> or Monoid
2024-09-26 21:44:26 +0200 <tomsmeding> I guess Alternative is more appropriate here
2024-09-26 21:44:34 +0200 <tomsmeding> 'empty' then >:D
2024-09-26 21:44:50 +0200 <Inst> well, i mean, for_ at least feels more honest about what you're doing
2024-09-26 21:45:05 +0200 <tomsmeding> I guess
2024-09-26 21:45:12 +0200 <tomsmeding> I've done this plenty of times, but admittedly without the _
2024-09-26 21:45:14 +0200 <Inst> i mean, not list comprehension, but rather, do block in list
2024-09-26 21:45:36 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2024-09-26 21:45:41 +0200 <Inst> but then you can't run intermediate IO values
2024-09-26 21:45:46 +0200 <int-e> Inst: that's just your own personal perception
2024-09-26 21:45:48 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-09-26 21:45:48 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-09-26 21:46:03 +0200 <tomsmeding> https://github.com/tomsmeding/ad-dualrev-th/blob/17b758dbb3966de66394a756b708dae6ab57687e/src/Lang…
2024-09-26 21:47:29 +0200 <int-e> sequenceA_ is very honest about what it does. for_ is also honest but has an order of arguments that is more convenient when the lists are short and the actions are long.
2024-09-26 21:48:00 +0200 <int-e> :t sequenceA_
2024-09-26 21:48:01 +0200 <lambdabot> (Foldable t, Applicative f) => t (f a) -> f ()
2024-09-26 21:48:06 +0200 <int-e> :t for_
2024-09-26 21:48:07 +0200 <lambdabot> (Foldable t, Applicative f) => t a -> (a -> f b) -> f ()
2024-09-26 21:48:16 +0200 <int-e> that's the ground truth here, really
2024-09-26 21:48:51 +0200 <tomsmeding> int-e: I think their subjective style guide here is "if the code is just about the side effects, write it in imperative style"
2024-09-26 21:49:04 +0200 <int-e> which is fine
2024-09-26 21:49:06 +0200 <tomsmeding> imperative style meaning "use control flow constructs like C's"
2024-09-26 21:49:27 +0200 <int-e> but you don't have to expect others to be disgusted at alternatives
2024-09-26 21:49:35 +0200 <tomsmeding> indeed
2024-09-26 21:49:42 +0200 <EvanR> IO () monoid xD
2024-09-26 21:49:46 +0200 <EvanR> just the side effects maam
2024-09-26 21:49:50 +0200 <tomsmeding> it is a monoid though
2024-09-26 21:49:58 +0200 <tomsmeding> I always found that funny
2024-09-26 21:50:04 +0200 <Inst> <> > >> :3
2024-09-26 21:50:07 +0200 <EvanR> > mempty :: IO ()
2024-09-26 21:50:08 +0200 <lambdabot> <IO ()>
2024-09-26 21:50:12 +0200 <EvanR> o_O
2024-09-26 21:50:13 +0200 <tomsmeding> % mempty :: IO ()
2024-09-26 21:50:13 +0200 <yahb2> <no output>
2024-09-26 21:50:23 +0200 <tomsmeding> % print "hi" <> print "bye"
2024-09-26 21:50:23 +0200 <yahb2> "hi" ; "bye"
2024-09-26 21:50:44 +0200 <Inst> % fail <> print "Hello"
2024-09-26 21:50:44 +0200 <yahb2> <interactive>:9:9: error: [GHC-83865] ; • Couldn't match expected type: String -> m a ; with actual type: IO () ; • Possible cause: ‘print’ is applied to too many argument...
2024-09-26 21:50:50 +0200 <Inst> % fail "" <> print "Hello"
2024-09-26 21:50:50 +0200 <yahb2> *** Exception: user error
2024-09-26 21:50:59 +0200 <EvanR> > mempty :: IO String
2024-09-26 21:51:00 +0200 <lambdabot> <IO [Char]>
2024-09-26 21:51:03 +0200 <EvanR> ok good
2024-09-26 21:51:16 +0200 <tomsmeding> instance Monoid a => Monoid (IO a)
2024-09-26 21:51:21 +0200 <tomsmeding> it's the sensible instance :)
2024-09-26 21:51:31 +0200 <EvanR> haskell is sensible again
2024-09-26 21:53:29 +0200 <tomsmeding> % (print <> putStrLn . reverse . show) 1234
2024-09-26 21:53:29 +0200 <yahb2> 1234 ; 4321
2024-09-26 21:53:40 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-09-26 21:54:02 +0200 <EvanR> lol
2024-09-26 21:54:27 +0200 <Inst> good ole Monoid b => Monoid (a -> b)
2024-09-26 21:54:31 +0200 <tomsmeding> indeed
2024-09-26 21:54:43 +0200 <EvanR> it's monoids all the way down
2024-09-26 21:54:55 +0200 <tomsmeding> until it's actually a semigroup
2024-09-26 21:55:09 +0200 <EvanR> until it's a semigroupoid
2024-09-26 21:55:15 +0200 <tomsmeding> what even is that
2024-09-26 21:55:18 +0200 <EvanR> lol
2024-09-26 21:55:22 +0200 <tomsmeding> nonassociative?
2024-09-26 21:55:24 +0200 <EvanR> no
2024-09-26 21:55:27 +0200 <tomsmeding> no that's a magma
2024-09-26 21:55:41 +0200 <EvanR> it's like the earlier group => groupoid discussion, but for semigroups
2024-09-26 21:55:53 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 21:55:57 +0200 <EvanR> a semigroup is a semigroupoid where there is only 1 object
2024-09-26 21:56:20 +0200 <ski> category without identities
2024-09-26 21:56:32 +0200 <EvanR> it might have identities
2024-09-26 21:56:34 +0200 <tomsmeding> I see
2024-09-26 21:56:39 +0200 <EvanR> but doesn't have to
2024-09-26 21:56:49 +0200 <tomsmeding> classic table https://en.wikipedia.org/wiki/Semigroupoid
2024-09-26 21:56:53 +0200 <ski> "without" as it not being in the signature, yes
2024-09-26 21:56:54 +0200 <haskellbridge> <thirdofmay18081814goya> anyone know of a community where i can ask about cybersecurity? am trying to define what a "maximally competent/trustworthy/trained" user is
2024-09-26 21:58:08 +0200 <ski> thirdofmay18081814goya : there's a channel #security on Libera, with some nine hundred people in it
2024-09-26 21:58:26 +0200 <EvanR> and you can just walk right in?
2024-09-26 21:58:32 +0200 <EvanR> doesn't sound very secure
2024-09-26 21:58:32 +0200 <haskellbridge> <thirdofmay18081814goya> ski: nice thank you!
2024-09-26 21:58:54 +0200user4561(~user4561@2800:2168:2400:6d3:5b16:5e9e:7bd9:1a9)
2024-09-26 21:58:55 +0200 <ski> seems you do need to have a registered nickname, to be able to talk there
2024-09-26 21:58:56 +0200 <Inst> oh, that was what i was looking for
2024-09-26 21:59:02 +0200 <ski> (channel mode `+R')
2024-09-26 21:59:54 +0200euphores(~SASL_euph@user/euphores) (Ping timeout: 260 seconds)
2024-09-26 21:59:56 +0200user4561(~user4561@2800:2168:2400:6d3:5b16:5e9e:7bd9:1a9) (Client Quit)
2024-09-26 22:00:01 +0200 <Inst> guard :: Bool -> f ()
2024-09-26 22:00:21 +0200user4561(~user4561@2800:2168:2400:6d3:5b16:5e9e:7bd9:1a9)
2024-09-26 22:00:49 +0200user4561(~user4561@2800:2168:2400:6d3:5b16:5e9e:7bd9:1a9) (Client Quit)
2024-09-26 22:00:53 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-09-26 22:01:24 +0200lucy(~lucy@user/lucy) (Ping timeout: 276 seconds)
2024-09-26 22:01:41 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 22:03:25 +0200 <haskellbridge> <thirdofmay18081814goya> what irc client do you guys use?
2024-09-26 22:04:08 +0200 <ski> /ctcp ski version
2024-09-26 22:05:02 +0200 <tomsmeding> ctcp is funny
2024-09-26 22:06:36 +0200euphores(~SASL_euph@user/euphores) euphores
2024-09-26 22:07:14 +0200enikar(~enikar@user/enikar) (Quit: WeeChat 3.0)
2024-09-26 22:07:21 +0200 <hc> why is it funny?
2024-09-26 22:07:59 +0200 <EvanR> somehow it used to cause literally everyone in the channel to become irate if you used it
2024-09-26 22:08:07 +0200 <EvanR> those were the days
2024-09-26 22:08:13 +0200 <tomsmeding> simply because I always forget it is a thing; it feels more powerful than it should be
2024-09-26 22:08:32 +0200 <ski> well, you shouldn't CTCP a whole channel
2024-09-26 22:08:43 +0200 <EvanR> there was a unix command which wrote a message on another users terminal
2024-09-26 22:08:49 +0200 <tomsmeding> wall(1)
2024-09-26 22:09:02 +0200 <tomsmeding> it actually works on some servers, not everyone turns it off
2024-09-26 22:09:06 +0200 <ski> an occasional random CTCP to whomever, i think is fine
2024-09-26 22:09:17 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 252 seconds)
2024-09-26 22:09:34 +0200 <EvanR> it seems like from another universe, where no one had security because no one needed any
2024-09-26 22:09:56 +0200 <ski> yea, i've witnessed people discovering `wall' (and then i, sometimes, responded that they could use `write' to direct to a particular user)
2024-09-26 22:10:24 +0200 <tomsmeding> ah, right, wall and write
2024-09-26 22:10:29 +0200 <ski> (also `mesg n', if you prefer)
2024-09-26 22:10:34 +0200enikar(~enikar@user/enikar) enikar
2024-09-26 22:10:47 +0200int-elikes CTCP-ing a whole channel though
2024-09-26 22:10:52 +0200 <EvanR> it was mesg
2024-09-26 22:11:07 +0200 <ski> hah, yea, that's the exception, int-e :P
2024-09-26 22:11:12 +0200 <hc> wall is still use by the shutdown command anyway
2024-09-26 22:11:14 +0200 <tomsmeding> a while ago I actually used write(1) to alert someone that I was using a server they were running a long job on, so if they were benchmarking, their benchmark was now invalidated
2024-09-26 22:11:27 +0200 <tomsmeding> they actually got back to me by email -- I put my email in the write(1) message just in case
2024-09-26 22:11:40 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 22:12:17 +0200 <hc> I think write used to work remotely, too
2024-09-26 22:12:26 +0200 <hc> Then there was a more advanced command called talk
2024-09-26 22:12:56 +0200 <hc> It opened up a session where you could chat, you could see the letters appear as the other person was talking :]
2024-09-26 22:13:44 +0200 <ski> yea, i used `talk' (more specifically `ytalk')
2024-09-26 22:14:10 +0200 <hc> Oh, I didn't know that one :)
2024-09-26 22:14:45 +0200 <hc> I'm sure there's an emacs command for that, too
2024-09-26 22:15:47 +0200 <EvanR> tomsmeding, and then their reply email was delivered to you via nethack mail demon
2024-09-26 22:16:11 +0200 <tomsmeding> unfortunately not, that was a bog-standard institutional MS Exchange email :p
2024-09-26 22:16:23 +0200 <EvanR> shudder
2024-09-26 22:16:32 +0200 <hc> That reminds me, irc is from a time when host names were static and user names were verified by identd
2024-09-26 22:16:36 +0200 <ski> you could open an Emacs frame on the X display of another person, assuming their machine was accessible over the network, and they allowed you to open a window there. then you could both type into the same buffer (but at different points)
2024-09-26 22:16:49 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-09-26 22:17:13 +0200 <ski> or, you can use a multi-user Screen session, for something similar (but only one point, unless you use something like `emacsclient -nw')
2024-09-26 22:17:44 +0200 <int-e> hc: you could trust the admins of computers connected to the internet... or so it was assumed. imagine!
2024-09-26 22:17:44 +0200 <hc> Oh nice, I did know about that emacs feature but not that you could actually use a different DISPLAY setting for it
2024-09-26 22:18:01 +0200 <int-e> (the whole idea of identd is ludicrous from a modern perspective)
2024-09-26 22:18:25 +0200 <hc> Yeah, but I think the culture was much different back then
2024-09-26 22:18:36 +0200 <ski> hc : `M-x make-frame-on-display'
2024-09-26 22:18:41 +0200 <int-e> obviously
2024-09-26 22:18:41 +0200 <hc> Mostly university and a bit military perhaps, but probably mostly university
2024-09-26 22:19:10 +0200 <hc> ski: kk, I'll write that down actually :)
2024-09-26 22:19:22 +0200skibound `C-x 5 3' to that
2024-09-26 22:19:38 +0200 <Inst> pftt, should disable version
2024-09-26 22:19:49 +0200tomsmedingwonders why "5 3"
2024-09-26 22:20:01 +0200 <ski> (global-set-key [?\C-x ?5 ?3] #'make-frame-on-display)
2024-09-26 22:20:10 +0200 <Inst> there isn't an inverse of guard?
2024-09-26 22:20:24 +0200 <tomsmeding> guard . not
2024-09-26 22:20:43 +0200 <Inst> yeah I just flipped the boolean
2024-09-26 22:20:47 +0200 <Inst> I'm trying to write a conway's game of life
2024-09-26 22:20:55 +0200 <Inst> then convert it to comonads
2024-09-26 22:23:16 +0200 <ski> tomsmeding : `C-x 5 0' already is `delete-frame', and `C-x 5 1' is `delete-other-frames', and `C-x 5 2' is `make-frame-command' (make a new frame on the same display as the currently focused one). (cf. `C-x 0' being `delete-window', `C-x 1' being `delete-other-windows', `C-x 2' being `split-window-vertically', `C-x 3' being `split-window-horizontally'; these managing windows within a single frame)
2024-09-26 22:23:52 +0200 <tomsmeding> vim is a _little_ more helpful in its key binding mnemonics :p
2024-09-26 22:24:06 +0200 <hc> Anyone ever use yi? ;)
2024-09-26 22:24:14 +0200 <tomsmeding> (still not amazing, but surely "v" is better than "2" for a vertical split :p)
2024-09-26 22:24:29 +0200 <ski> "2" for "split in two", presumably
2024-09-26 22:24:38 +0200 <tomsmeding> and 3 for "split in three"?
2024-09-26 22:24:50 +0200 <ski> hah, the analogy breaks there :D
2024-09-26 22:24:55 +0200 <tomsmeding> well, I guess it's "2'", so it becomes 3
2024-09-26 22:24:59 +0200 <tomsmeding> that can work
2024-09-26 22:25:20 +0200 <tomsmeding> same for 0 and 0'
2024-09-26 22:26:18 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-09-26 22:26:43 +0200 <ski> Screen has `^AX' for `remove', `^AQ' for `only', `^AS' for `split', and `^A|' for `split -v' (these similarly managing regions in a terminal display, similar to the windows in an Emacs frame)
2024-09-26 22:27:27 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 22:28:22 +0200 <ski> (.. unfortunately, the terminology in Irssi is a bit conflated, both "buffers"/"tabs", as well as "screen regions" are manipulated using `/window' command)
2024-09-26 22:29:04 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 22:29:04 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-09-26 22:31:39 +0200raehik1(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 244 seconds)
2024-09-26 22:32:21 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-09-26 22:39:49 +0200lucy(~lucy@user/lucy) (Ping timeout: 248 seconds)
2024-09-26 22:40:22 +0200michalz(~michalz@185.246.207.221) (Remote host closed the connection)
2024-09-26 22:41:49 +0200lucy(~lucy@user/lucy) lucy
2024-09-26 22:41:51 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 22:43:13 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 22:43:54 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 265 seconds)
2024-09-26 22:45:24 +0200FoooSquare
2024-09-26 22:48:15 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-09-26 22:49:40 +0200 <Inst> is there a way to multiply declare type synonyms?
2024-09-26 22:52:51 +0200 <tomsmeding> Inst: what would that mean?
2024-09-26 22:53:18 +0200 <Inst> type (Foo, Bar, Baz) = (String, Text, ByteString)
2024-09-26 22:54:20 +0200 <Rembane> Inst: Why do you need that?
2024-09-26 22:54:28 +0200 <Rembane> Inst: Cool syntax btw
2024-09-26 22:54:41 +0200 <tomsmeding> type Foo = String ; type Bar = Text ; type Baz = ByteString
2024-09-26 22:55:53 +0200 <Inst> type synonyming the inputs of a function to be more descriptive
2024-09-26 22:56:58 +0200 <tomsmeding> write them as separate `type` declarations :)
2024-09-26 22:57:01 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-09-26 22:57:12 +0200 <EvanR> it's true
2024-09-26 22:57:28 +0200 <EvanR> if (a,b,c) = (d,e,f) then by the laws of something or other
2024-09-26 22:57:32 +0200 <EvanR> a = d
2024-09-26 22:57:34 +0200 <EvanR> b = e
2024-09-26 22:57:35 +0200 <EvanR> c = f
2024-09-26 22:57:45 +0200 <tomsmeding> injectivity of data constructors
2024-09-26 22:58:29 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-09-26 22:59:01 +0200 <tomsmeding> (Injectivity of a function f : a -> b means that different a's get sent to different b's. Hence, if f x = f y, then x = y.)
2024-09-26 22:59:01 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 22:59:35 +0200 <EvanR> it's also (in the case of pairs) just part of the definition of identity types for pair in HoTT
2024-09-26 23:00:01 +0200 <tomsmeding> right, if you want injectivity of functions of multiple arguments, there is some basic argument that products are injective somewhere :p
2024-09-26 23:00:13 +0200briandaed(~root@185.234.210.211)
2024-09-26 23:00:21 +0200 <tomsmeding> injective in both their arguments, that is
2024-09-26 23:01:03 +0200 <EvanR> so in that case you don't need a separate injectivity axiom
2024-09-26 23:01:19 +0200 <EvanR> it's just defined that way
2024-09-26 23:01:27 +0200 <briandaed> is there a way to pass a package with a different name? trying to clean mess with crypton vs cryptonite and would like to pass crypton as cryptonite replacement
2024-09-26 23:01:43 +0200 <monochrom> (Apart from how you know that product exists in the first place. >:) )
2024-09-26 23:01:57 +0200 <tomsmeding> briandaed: as in, you depend on some package X, and X depends on cryptonite, but you'd like to substitute crypton?
2024-09-26 23:02:00 +0200 <tomsmeding> or is X your own package?
2024-09-26 23:02:21 +0200 <briandaed> tomsmeding, first option
2024-09-26 23:02:26 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-09-26 23:02:54 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-09-26 23:02:59 +0200 <tomsmeding> hm, cabal backpack does modules, not packages AFAIK
2024-09-26 23:03:51 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-09-26 23:04:01 +0200 <monochrom> Right, backpack won't do it.
2024-09-26 23:04:08 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net) machinedgod
2024-09-26 23:04:22 +0200 <tomsmeding> (for reference, this is backpack, i.e. this idea but for individual modules: https://cabal.readthedocs.io/en/3.4/cabal-package.html#pkg-field-mixins )
2024-09-26 23:05:38 +0200 <monochrom> Only way I can think of is setting up your own local repo (https://cabal.readthedocs.io/en/stable/config.html#local-no-index-repositories) then you can put any abriged butchered packages there and you can arrange them to take precedence.
2024-09-26 23:05:42 +0200 <tomsmeding> a _very_ hacky solution is to vendor crypton in, patch its cabal file to say "cryptonite" instead of "crypton", and then put that vendored crypton/cryptonite in the packages: field of cabal.project
2024-09-26 23:06:02 +0200 <tomsmeding> stuff in 'packages:' overrides hackage
2024-09-26 23:06:58 +0200 <Inst> hummm
2024-09-26 23:07:02 +0200 <Inst> hmmm
2024-09-26 23:07:22 +0200 <briandaed> yeah, thought about something like this but it's ... ugly
2024-09-26 23:08:39 +0200 <monochrom> Sure, this is known as "supply-chain attack" >:)
2024-09-26 23:09:09 +0200EvanR(~EvanR@user/evanr) (Quit: Leaving)
2024-09-26 23:09:30 +0200 <Inst> type a $> b = a
2024-09-26 23:09:36 +0200 <Inst> unfortunately we don't have a const operator
2024-09-26 23:09:45 +0200 <Inst> type a $> b = b
2024-09-26 23:10:35 +0200 <Inst> this is better than using dumb type synonyms for function inputs, easier to write delay $> Int -> repetitions $> Int -> IO ()
2024-09-26 23:11:07 +0200 <tomsmeding> relevant: https://hackage.haskell.org/package/tagged-0.8.8/docs/Data-Tagged.html
2024-09-26 23:11:10 +0200ft(~ft@p4fc2acce.dip0.t-ipconnect.de) ft
2024-09-26 23:11:53 +0200 <tomsmeding> (not quite the same, because it's a newtype)
2024-09-26 23:12:20 +0200 <Inst> no i mean if you use type synonyms to change the function type signature to something more descriptive, if you reuse the type you'll force the reader to go look up what the type synonym is
2024-09-26 23:13:07 +0200briandaed(~root@185.234.210.211) (Quit: Lost terminal)
2024-09-26 23:14:47 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 23:16:02 +0200byte(~byte@149.28.222.189) (Ping timeout: 252 seconds)
2024-09-26 23:16:19 +0200byte(~byte@149.28.222.189)
2024-09-26 23:19:21 +0200 <Inst> type a `Is` b = b works
2024-09-26 23:19:41 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-09-26 23:24:20 +0200lucy(~lucy@user/lucy) (Quit: leaving)
2024-09-26 23:25:18 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-09-26 23:25:31 +0200krei-se(~krei-se@p57af2362.dip0.t-ipconnect.de) (Quit: ZNC 1.9.1 - https://znc.in)
2024-09-26 23:25:34 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-09-26 23:29:12 +0200Guest68(~Guest2@181.28.115.159)
2024-09-26 23:29:41 +0200 <Guest68> hi
2024-09-26 23:29:46 +0200Guest68(~Guest2@181.28.115.159) (Client Quit)
2024-09-26 23:30:35 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 23:31:46 +0200 <geekosaur> 👀
2024-09-26 23:35:37 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-09-26 23:41:28 +0200Tisoxin(~Ikosit@user/ikosit) (Read error: Connection reset by peer)
2024-09-26 23:42:52 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 265 seconds)
2024-09-26 23:42:53 +0200troojg(~troojg@user/troojg) troojg
2024-09-26 23:46:22 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-09-26 23:46:25 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2024-09-26 23:48:57 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-09-26 23:51:34 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)