2026/05/20

2026-05-20 00:02:53 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:8593:5fde:adde:bbe9)
2026-05-20 00:03:11 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-05-20 00:03:24 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:8593:5fde:adde:bbe9) (Client Quit)
2026-05-20 00:10:33 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 00:12:40 +0000acidjnk_new3(~acidjnk@p200300d6e700e557175153c27e2abf22.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-05-20 00:15:17 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-05-20 00:15:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-05-20 00:16:51 +0000nhar(~noah@76.33.110.8)
2026-05-20 00:21:21 +0000nhar(~noah@76.33.110.8) (Ping timeout: 246 seconds)
2026-05-20 00:22:21 +0000jreicher(~joelr@user/jreicher) (*.net *.split)
2026-05-20 00:22:21 +0000Axman6(~Axman6@user/axman6) (*.net *.split)
2026-05-20 00:23:10 +0000jreicher(~joelr@user/jreicher) jreicher
2026-05-20 00:25:03 +0000jreicher(~joelr@user/jreicher) (*.net *.split)
2026-05-20 00:26:32 +0000Square2(~Square4@user/square) Square
2026-05-20 00:28:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 00:30:29 +0000nhar(~noah@76.33.110.8)
2026-05-20 00:30:40 +0000Typedfern(~Typedfern@176.red-83-37-46.dynamicip.rima-tde.net) (Server closed connection)
2026-05-20 00:31:04 +0000Typedfern(~Typedfern@176.red-83-37-46.dynamicip.rima-tde.net) typedfern
2026-05-20 00:32:26 +0000califax(~califax@user/califx) (Remote host closed the connection)
2026-05-20 00:32:47 +0000layline_(~layline@149.154.26.166) layline
2026-05-20 00:33:26 +0000califax(~califax@user/califx) califx
2026-05-20 00:35:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 00:38:02 +0000nhar(~noah@76.33.110.8) (Ping timeout: 265 seconds)
2026-05-20 00:38:30 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) (Ping timeout: 245 seconds)
2026-05-20 00:39:19 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
2026-05-20 00:40:55 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) myxokephale
2026-05-20 00:46:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 00:47:43 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) (Ping timeout: 255 seconds)
2026-05-20 00:49:59 +0000nhar(~noah@76.33.110.8)
2026-05-20 00:51:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 00:53:50 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 256 seconds)
2026-05-20 00:54:22 +0000czan`(~czan@user/mange) czan
2026-05-20 00:54:28 +0000nhar(~noah@76.33.110.8) (Ping timeout: 255 seconds)
2026-05-20 00:59:57 +0000jreicher(~joelr@user/jreicher) jreicher
2026-05-20 01:01:32 +0000xff0x(~xff0x@2405:6580:b080:900:8fea:9572:e093:f731) (Ping timeout: 244 seconds)
2026-05-20 01:02:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 01:05:56 +0000czan(~czan@user/mange) (Killed (NickServ (GHOST command used by czan`)))
2026-05-20 01:06:10 +0000czan`czan
2026-05-20 01:06:39 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-05-20 01:07:04 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 01:16:46 +0000nhar(~noah@76.33.110.8)
2026-05-20 01:18:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 01:18:55 +0000confusedalex(~confuseda@user/confusedalex) (Ping timeout: 264 seconds)
2026-05-20 01:22:40 +0000j0lol(~j0lol@132.145.17.236) (Ping timeout: 245 seconds)
2026-05-20 01:22:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 01:23:17 +0000nhar(~noah@76.33.110.8) (Ping timeout: 255 seconds)
2026-05-20 01:23:32 +0000vgtw(~vgtw@user/vgtw) (Quit: ZNC - https://znc.in)
2026-05-20 01:23:42 +0000xnbya(~xnbya@2a01:4f8:c17:cbdd::1) (Quit: No Ping reply in 180 seconds.)
2026-05-20 01:24:58 +0000xnbya(~xnbya@2a01:4f8:c17:cbdd::1)
2026-05-20 01:25:10 +0000_________(~nobody@user/noodly) (Ping timeout: 245 seconds)
2026-05-20 01:25:26 +0000Moyst(~moyst@user/moyst) (Remote host closed the connection)
2026-05-20 01:25:42 +0000Moyst(~moyst@user/moyst) Moyst
2026-05-20 01:26:03 +0000_________(~nobody@user/noodly) _________
2026-05-20 01:27:03 +0000vgtw(~vgtw@user/vgtw) vgtw
2026-05-20 01:33:11 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-05-20 01:33:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 01:37:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 01:39:29 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:8593:5fde:adde:bbe9)
2026-05-20 01:40:12 +0000Inst(~Inst@user/Inst) Inst
2026-05-20 01:40:45 +0000layline_layline-away
2026-05-20 01:42:20 +0000j0lol(~j0lol@132.145.17.236) j0lol
2026-05-20 01:44:53 +0000layline-awaylayline_
2026-05-20 01:48:51 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 01:52:35 +0000confusedalex(~confuseda@user/confusedalex) confusedalex
2026-05-20 01:53:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-05-20 01:58:45 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-05-20 01:58:45 +0000pavonia(~user@user/siracusa) (Ping timeout: 265 seconds)
2026-05-20 02:01:35 +0000nhar(~noah@76.33.110.8)
2026-05-20 02:04:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 02:06:38 +0000layline_layline-away
2026-05-20 02:07:42 +0000nhar(~noah@76.33.110.8) (Ping timeout: 245 seconds)
2026-05-20 02:08:59 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) myxokephale
2026-05-20 02:09:30 +0000puke(~puke@user/puke) (Ping timeout: 246 seconds)
2026-05-20 02:11:16 +0000troojg(~troojg@user/troojg) (Ping timeout: 276 seconds)
2026-05-20 02:13:11 +0000nhar(~noah@76.33.110.8)
2026-05-20 02:14:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 02:17:43 +0000nhar(~noah@76.33.110.8) (Ping timeout: 255 seconds)
2026-05-20 02:23:58 +0000pavonia(~user@user/siracusa) siracusa
2026-05-20 02:24:59 +0000layline-awaylayline_
2026-05-20 02:25:37 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 245 seconds)
2026-05-20 02:26:10 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 02:26:45 +0000puke(~puke@user/puke) puke
2026-05-20 02:29:49 +0000Guest54(~Guest54@2600:1700:4c00:68f0:c786:9a89:b897:4427)
2026-05-20 02:31:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 02:41:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 02:45:16 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 02:45:19 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-05-20 02:46:12 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-05-20 02:46:58 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 02:51:42 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 02:52:03 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-05-20 02:54:56 +0000haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2026-05-20 02:55:00 +0000Googulator(~Googulato@94-21-138-77.pool.digikabel.hu) (Quit: Client closed)
2026-05-20 02:55:14 +0000Googulator(~Googulato@94-21-138-77.pool.digikabel.hu)
2026-05-20 02:57:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 02:58:11 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 02:58:19 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-05-20 02:58:26 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:8593:5fde:adde:bbe9) (Ping timeout: 248 seconds)
2026-05-20 03:00:23 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 03:00:47 +0000puke(~puke@user/puke) puke
2026-05-20 03:02:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 03:05:25 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 03:05:46 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-05-20 03:05:53 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-05-20 03:08:26 +0000m(~travltux@user/travltux) travltux
2026-05-20 03:09:06 +0000remexre(~remexre@user/remexre) (Ping timeout: 248 seconds)
2026-05-20 03:09:16 +0000Eoco(~ian@128.101.131.218) (Ping timeout: 256 seconds)
2026-05-20 03:11:48 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 03:12:49 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-05-20 03:13:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 03:15:53 +0000gehmehgeh(~user@user/gehmehgeh) gehmehgeh
2026-05-20 03:18:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 03:18:29 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 03:18:38 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-05-20 03:19:22 +0000gmg(~user@user/gehmehgeh) (Ping timeout: 252 seconds)
2026-05-20 03:24:48 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 03:24:57 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-05-20 03:29:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 03:32:53 +0000nhar(~noah@76.33.110.8)
2026-05-20 03:35:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 03:39:38 +0000nhar(~noah@76.33.110.8) (Ping timeout: 255 seconds)
2026-05-20 03:40:58 +0000weary-traveler(~user@user/user363627) user363627
2026-05-20 03:43:43 +0000gehmehgehgmg
2026-05-20 03:45:14 +0000 <Guest54> sup lads
2026-05-20 03:47:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 03:52:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 04:01:00 +0000nhar(~noah@76.33.110.8)
2026-05-20 04:05:56 +0000nhar(~noah@76.33.110.8) (Ping timeout: 256 seconds)
2026-05-20 04:11:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 04:12:19 +0000scula(~scula@user/scula) (Server closed connection)
2026-05-20 04:12:36 +0000scula(~scula@user/scula) scula
2026-05-20 04:16:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 04:17:41 +0000 <sm> how's it going Guest54
2026-05-20 04:18:20 +0000Square2(~Square4@user/square) (Ping timeout: 255 seconds)
2026-05-20 04:22:03 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-05-20 04:24:10 +0000weary-traveler(~user@user/user363627) user363627
2026-05-20 04:24:49 +0000nhar(~noah@76.33.110.8)
2026-05-20 04:27:01 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-05-20 04:28:47 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 04:29:21 +0000 <Guest54> Doing great sm. Both the haskell mooc and learn a haskell for a greater good recommended this chat. Not sure if I am supposed to type on here, cuz I see a bunch of people joining but nobody typing lol
2026-05-20 04:33:11 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 04:36:51 +0000michalz(~michalz@185.246.207.203)
2026-05-20 04:39:20 +0000mjrosenb(~mjrosenb@pool-71-190-143-170.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2026-05-20 04:40:16 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-20 04:41:52 +0000nhar(~noah@76.33.110.8) (Ping timeout: 245 seconds)
2026-05-20 04:42:38 +0000nhar(~noah@76.33.110.8)
2026-05-20 04:42:49 +0000 <jreicher> We're here just waiting for someone to type. ;)
2026-05-20 04:43:02 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-05-20 04:44:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 04:48:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 04:50:12 +0000 <EvanR> waits for more typing
2026-05-20 04:50:24 +0000 <EvanR> we're dependent [on] typing
2026-05-20 04:51:57 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-05-20 04:57:16 +0000Adran(~adran@botters/adran) (Server closed connection)
2026-05-20 04:58:29 +0000Adran(~adran@botters/adran) Adran
2026-05-20 04:59:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 04:59:55 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 05:01:27 +0000puke(~puke@user/puke) puke
2026-05-20 05:04:41 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 05:08:18 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:39aa:a5b:9720:46b3)
2026-05-20 05:11:32 +0000weary-traveler(~user@user/user363627) user363627
2026-05-20 05:12:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 05:14:43 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 264 seconds)
2026-05-20 05:16:36 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 05:17:01 +0000puke(~puke@user/puke) puke
2026-05-20 05:19:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 05:31:05 +0000merijn(~merijn@62.45.136.136) merijn
2026-05-20 05:32:43 +0000Vajb(~Vajb@n627xuppmk36bl2vbls-1.v6.elisa-mobile.fi)
2026-05-20 05:35:12 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 245 seconds)
2026-05-20 05:35:30 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-05-20 05:45:15 +0000layline_layline-away
2026-05-20 05:46:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 05:51:14 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-20 05:55:54 +0000weary-traveler(~user@user/user363627) user363627
2026-05-20 05:55:55 +0000synchromesh(~john@2406:5a00:247e:1500:cb6:d4f7:ed0e:5cdb) (Read error: Connection reset by peer)
2026-05-20 05:56:46 +0000Inline(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Quit: KVIrc 5.2.8 Quasar http://www.kvirc.net/)
2026-05-20 05:56:59 +0000synchromesh(~john@2406:5a00:247e:1500:cb6:d4f7:ed0e:5cdb) synchromesh
2026-05-20 06:01:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 06:02:02 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-05-20 06:03:38 +0000Inline(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-05-20 06:03:49 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:39aa:a5b:9720:46b3) (Ping timeout: 272 seconds)
2026-05-20 06:04:39 +0000dolio(~dolio@130.44.140.168) (Quit: ZNC 1.10.1 - https://znc.in)
2026-05-20 06:06:27 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 06:13:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 06:15:15 +0000dolio(~dolio@130.44.140.168) dolio
2026-05-20 06:18:41 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-20 06:24:42 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-05-20 06:29:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 06:34:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 06:38:59 +0000czan(~czan@user/mange) (Quit: Quittin' time!)
2026-05-20 06:41:02 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 06:41:27 +0000puke(~puke@user/puke) puke
2026-05-20 06:45:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 06:46:11 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2026-05-20 06:50:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-20 06:55:05 +0000weary-traveler(~user@user/user363627) user363627
2026-05-20 06:56:45 +0000layline-away(~layline@149.154.26.166) (Quit: ZZZzzz…)
2026-05-20 07:01:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 07:01:38 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 07:02:03 +0000puke(~puke@user/puke) puke
2026-05-20 07:08:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-05-20 07:09:37 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-05-20 07:10:44 +0000oats(~oats@user/oats) (Ping timeout: 245 seconds)
2026-05-20 07:11:14 +0000oats(~oats@user/oats) oats
2026-05-20 07:11:53 +0000ft(~ft@p4fc2aedc.dip0.t-ipconnect.de) (Quit: leaving)
2026-05-20 07:12:50 +0000nisstyre(wes@user/nisstyre) (Ping timeout: 248 seconds)
2026-05-20 07:14:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-20 07:19:41 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-20 07:26:37 +0000nisstyre(wes@user/nisstyre) nisstyre
2026-05-20 07:29:35 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-05-20 07:36:44 +0000__monty__(~toonn@user/toonn) toonn
2026-05-20 07:38:56 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-05-20 07:41:33 +0000Digitdetects some type of puns [ ... or puns of type]
2026-05-20 07:47:21 +0000CiaoSen(~Jura@2a02:3035:be7:9381:10ff:25ff:fe34:6c4a) CiaoSen
2026-05-20 07:47:55 +0000Pozyomka(~pyon@user/pyon) pyon
2026-05-20 07:53:15 +0000chele(~chele@user/chele) chele
2026-05-20 07:57:12 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 07:57:13 +0000gehmehgeh(~user@user/gehmehgeh) gehmehgeh
2026-05-20 07:57:29 +0000gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2026-05-20 07:57:41 +0000puke(~puke@user/puke) puke
2026-05-20 07:58:40 +0000merijn(~merijn@77.242.116.146) merijn
2026-05-20 08:01:34 +0000gehmehgehgmg
2026-05-20 08:06:02 +0000tnt2(~Thunderbi@user/tnt1) tnt1
2026-05-20 08:06:59 +0000szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2026-05-20 08:07:03 +0000tnt1(~Thunderbi@user/tnt1) (Ping timeout: 265 seconds)
2026-05-20 08:07:04 +0000tnt2tnt1
2026-05-20 08:10:37 +0000emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-05-20 08:12:59 +0000notzmv(~umar@user/notzmv) notzmv
2026-05-20 08:13:55 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-05-20 08:15:17 +0000bggd_(~bgg@2a01:e0a:fd5:f510:8bd7:8b66:ece0:ae9f)
2026-05-20 08:15:35 +0000bggd(~bgg@user/bggd) (Read error: Connection reset by peer)
2026-05-20 08:21:33 +0000FANTOM(~fantom@212.228.182.72) (Ping timeout: 265 seconds)
2026-05-20 08:21:36 +0000CiaoSen(~Jura@2a02:3035:be7:9381:10ff:25ff:fe34:6c4a) (Quit: CiaoSen)
2026-05-20 08:23:37 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 08:24:02 +0000puke(~puke@user/puke) puke
2026-05-20 08:26:28 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-05-20 08:27:45 +0000weary-traveler(~user@user/user363627) user363627
2026-05-20 08:29:57 +0000FANTOM(~fantom@212.228.182.72)
2026-05-20 08:30:19 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 08:30:44 +0000puke(~puke@user/puke) puke
2026-05-20 08:33:38 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds)
2026-05-20 08:44:35 +0000divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-05-20 08:45:13 +0000divlamir(~divlamir@user/divlamir) divlamir
2026-05-20 08:45:20 +0000jonnie(~jonnie@user/jonnie) (Remote host closed the connection)
2026-05-20 08:45:38 +0000jonnie(~jonnie@user/jonnie) jonnie
2026-05-20 08:45:55 +0000jonnie(~jonnie@user/jonnie) (Remote host closed the connection)
2026-05-20 08:46:59 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 245 seconds)
2026-05-20 08:48:15 +0000jonnie(~jonnie@user/jonnie) jonnie
2026-05-20 08:50:05 +0000dhil(~dhil@5.151.29.138) dhil
2026-05-20 08:50:16 +0000Enrico63(~Enrico63@85.255.233.164) Enrico63
2026-05-20 08:54:34 +0000CiaoSen(~Jura@dynamic-046-114-156-027.46.114.pool.telefonica.de) CiaoSen
2026-05-20 08:57:17 +0000nhar(~noah@76.33.110.8) (Ping timeout: 245 seconds)
2026-05-20 09:01:34 +0000Pozyomka_(~pyon@user/pyon) pyon
2026-05-20 09:01:57 +0000Pozyomka(~pyon@user/pyon) (Read error: Connection reset by peer)
2026-05-20 09:05:58 +0000 <mesaoptimizer> Is the type of every expression in Haskell determined at compile-time, or have things changed by now
2026-05-20 09:07:17 +0000 <mesaoptimizer> for example, if there are LANGUAGE pragmas commonly used that make it so that some expressions only can have a determined type at compile-time, then I'd say that Haskell types aren't a manifest attribute (in the terminology of Christopher Strachey)
2026-05-20 09:08:59 +0000nhar(~noah@76.33.110.8)
2026-05-20 09:11:46 +0000acidjnk_new3(~acidjnk@p200300d6e700e5338caa1342eecc427b.dip0.t-ipconnect.de) acidjnk
2026-05-20 09:13:45 +0000nhar(~noah@76.33.110.8) (Ping timeout: 265 seconds)
2026-05-20 09:16:16 +0000 <mesaoptimizer> next, does anybody actually use the following functions in practice or do they simply exist for pedagogical purposes: lookup, zip, uncurry, curry, min, max, fst, snd
2026-05-20 09:18:07 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 245 seconds)
2026-05-20 09:26:56 +0000danza(~danza@user/danza) danza
2026-05-20 09:27:31 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-05-20 09:32:07 +0000CiaoSen(~Jura@dynamic-046-114-156-027.46.114.pool.telefonica.de) (Ping timeout: 264 seconds)
2026-05-20 09:37:25 +0000 <merijn> zip, min, max, fst, and snd are all used all the time. curry/uncurry less frequently but still a lot
2026-05-20 09:37:53 +0000 <merijn> If you're using lookup you should probably be using lookup of a different datatype
2026-05-20 09:39:36 +0000 <merijn> mesaoptimizer: As a type theory pedantist it's impossible for "type of every expression is determined at compile time", because the entire definition of types is that they're static derived properties of source code, meaning that they're static derivability at compile time is a hard required of types
2026-05-20 09:40:13 +0000nhar(~noah@76.33.110.8)
2026-05-20 09:40:32 +0000 <merijn> mesaoptimizer: As opposed to what the dynamic languages have popularized as "types", which is merely a runtime tag indicated what kind of data a value has
2026-05-20 09:43:57 +0000Guest54(~Guest54@2600:1700:4c00:68f0:c786:9a89:b897:4427) (Ping timeout: 245 seconds)
2026-05-20 09:44:02 +0000peterbecich(~Thunderbi@71.84.33.135) (Quit: peterbecich)
2026-05-20 09:44:20 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-05-20 09:44:47 +0000nhar(~noah@76.33.110.8) (Ping timeout: 245 seconds)
2026-05-20 09:48:32 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds)
2026-05-20 10:02:49 +0000nhar(~noah@76.33.110.8)
2026-05-20 10:06:00 +0000tremon(~tremon@83.80.159.219) tremon
2026-05-20 10:06:02 +0000 <mesaoptimizer> merijn: I agree with that sentiment, but I still am unsure as to whether this holds for Haskell or not
2026-05-20 10:07:00 +0000Pixi`(~Pixi@user/pixi) Pixi
2026-05-20 10:07:28 +0000nhar(~noah@76.33.110.8) (Ping timeout: 256 seconds)
2026-05-20 10:08:10 +0000yin_(~zero@user/zero) zero
2026-05-20 10:08:22 +0000yin(~zero@user/zero) (Ping timeout: 265 seconds)
2026-05-20 10:08:47 +0000yin_yin
2026-05-20 10:08:55 +0000Pixi(~Pixi@user/pixi) (Ping timeout: 272 seconds)
2026-05-20 10:16:34 +0000fun-safe-math(~fun-safe-@97-120-35-225.ptld.qwest.net) (Server closed connection)
2026-05-20 10:16:50 +0000fun-safe-math(~fun-safe-@97-120-35-225.ptld.qwest.net) fun-safe-math
2026-05-20 10:25:47 +0000 <dutchie> Haskell types don't even exist at runtime, do they?
2026-05-20 10:25:53 +0000 <dutchie> it's all just passing around instance dictionaries at most
2026-05-20 10:29:56 +0000bggd_(~bgg@2a01:e0a:fd5:f510:8bd7:8b66:ece0:ae9f) (Remote host closed the connection)
2026-05-20 10:36:20 +0000nhar(~noah@76.33.110.8)
2026-05-20 10:38:48 +0000Square2(~Square4@user/square) Square
2026-05-20 10:39:51 +0000wickedjargon(~user@64.114.24.74) wickedjargon
2026-05-20 10:40:37 +0000nhar(~noah@76.33.110.8) (Ping timeout: 245 seconds)
2026-05-20 10:54:29 +0000nhar(~noah@76.33.110.8)
2026-05-20 10:58:57 +0000nhar(~noah@76.33.110.8) (Ping timeout: 245 seconds)
2026-05-20 11:01:53 +0000fun-safe-math(~fun-safe-@97-120-35-225.ptld.qwest.net) ()
2026-05-20 11:04:02 +0000fun-safe-math(~fun-safe-@97-120-35-225.ptld.qwest.net) fun-safe-math
2026-05-20 11:04:32 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 11:05:10 +0000danza(~danza@user/danza) (Remote host closed the connection)
2026-05-20 11:09:01 +0000 <gentauro> dutchie: they are. How would you handle the cases for sum types (tagged unions) otherwise?
2026-05-20 11:09:52 +0000 <gentauro> however, the `newtype` "wrapper" gets abstracted away (less memory usage per element)
2026-05-20 11:09:53 +0000wickedjargon(~user@64.114.24.74) (Read error: Connection reset by peer)
2026-05-20 11:10:06 +0000wickedjargon(~user@64.114.24.74) wickedjargon
2026-05-20 11:10:25 +0000 <dutchie> hmm. my interpretation was that e.g. Bool doesn't exist, but True and False do
2026-05-20 11:10:59 +0000 <dutchie> and then the compiler has proven that a value can only be True or False so it knows all cases are covered
2026-05-20 11:13:43 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-05-20 11:17:53 +0000 <dutchie> https://paste.tomsmeding.com/vXIxg2HR
2026-05-20 11:22:07 +0000 <ski> mesaoptimizer : yes (upto things like polymorphism / existentials. that does not mean they're really determined (as in actually found out) at run-time, though)
2026-05-20 11:24:35 +0000 <ski> e.g. in `map :: (a -> b) -> [a] -> [b]', it is not determined what type the individual input elements (nor the results of calling the callback) "really" has, at compile-time, in the sense that the input elements are determined to have type `a' (and the callback results to have type `b'), but these are abstract/opaque/hidden/forgotten/skolem, only a placeholder name for whichever type the actual elements (and
2026-05-20 11:24:41 +0000 <ski> callback results) will have, in a particular call to `map'
2026-05-20 11:26:02 +0000 <ski> still, they *are* assigned this abstract type (and the input list to have the partially abstract type `[a]'), which is their compile-time type, it's just that it omits some information (generalizes over it, in order to be able to call `map' from different contexts, with different types)
2026-05-20 11:27:15 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 11:27:26 +0000 <mesaoptimizer> that's a very lucid answer (given my current understanding of things), thanks
2026-05-20 11:27:28 +0000 <ski> (of course, you could, if you wanted to, imagine an analysis which tracked each call, to figure out the actual concrete types, and perhaps specialize the code for `map' wrt that. however, this can't be done, in general, in Haskell, due to "polymorphic recursion", and also (if you enable that extensions) existentials)
2026-05-20 11:27:41 +0000puke(~puke@user/puke) puke
2026-05-20 11:27:48 +0000nhar(~noah@76.33.110.8)
2026-05-20 11:28:08 +0000 <ski> still, do note that the type of the elements, `a', is not really found out at run-time, either. or, at least, there are implementations that allow this
2026-05-20 11:28:39 +0000 <mesaoptimizer> implementations of Haskell?
2026-05-20 11:28:46 +0000 <mesaoptimizer> or of type inference?
2026-05-20 11:29:47 +0000 <ski> you *could* have an implementation which passes around information about which actual types are used, when calling polymorphic operations. one use of this would be to perhaps use custom data formats (e.g. not all having the same size) for different data types. so e.g. the data format of `[Char]' could be different from the one of `[Double]', and the code at run-time could use the "type infos" to determine
2026-05-20 11:29:53 +0000 <ski> how large the items in the list are
2026-05-20 11:29:59 +0000 <ski> yes, of Haskell
2026-05-20 11:30:10 +0000 <ski> or, it could be used for a more accurate GC
2026-05-20 11:30:49 +0000 <ski> (not needing to have a general data format that the GC can understand, but so it can look up the data format of the items it encounters)
2026-05-20 11:31:12 +0000 <mesaoptimizer> I see
2026-05-20 11:31:21 +0000 <ski> e.g. the logic/functional programming language Mercury *does* pass around type infos, at run-time, to polymorphic operations, in this fashion
2026-05-20 11:31:22 +0000nhar(~noah@76.33.110.8) (*.net *.split)
2026-05-20 11:31:22 +0000vanishingideal(~vanishing@user/vanishingideal) (*.net *.split)
2026-05-20 11:31:22 +0000fgarcia(~lei@user/fgarcia) (*.net *.split)
2026-05-20 11:31:23 +0000weary-traveler(~user@user/user363627) (*.net *.split)
2026-05-20 11:31:23 +0000merijn(~merijn@77.242.116.146) (*.net *.split)
2026-05-20 11:31:23 +0000chele(~chele@user/chele) (*.net *.split)
2026-05-20 11:31:23 +0000dolio(~dolio@130.44.140.168) (*.net *.split)
2026-05-20 11:31:23 +0000synchromesh(~john@2406:5a00:247e:1500:cb6:d4f7:ed0e:5cdb) (*.net *.split)
2026-05-20 11:31:23 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) (*.net *.split)
2026-05-20 11:31:23 +0000confusedalex(~confuseda@user/confusedalex) (*.net *.split)
2026-05-20 11:31:23 +0000Moyst(~moyst@user/moyst) (*.net *.split)
2026-05-20 11:31:38 +0000merijn(~merijn@77.242.116.146) merijn
2026-05-20 11:31:47 +0000synchromesh(~john@2406:5a00:247e:1500:cb6:d4f7:ed0e:5cdb) synchromesh
2026-05-20 11:31:48 +0000weary-traveler(~user@user/user363627) user363627
2026-05-20 11:31:52 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-20 11:32:04 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) myxokephale
2026-05-20 11:32:42 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-05-20 11:33:24 +0000 <ski> btw, polymorphic recursion is when a polymorphic operation is recursive, and at least some recursive invokation does *not* use the same unknown type variables as the current call
2026-05-20 11:33:56 +0000 <ski> here's a simple (and a bit silly) example of a polymorhic recursive function
2026-05-20 11:34:28 +0000 <ski> nestedShows :: Show a => [a] -> [String]
2026-05-20 11:34:37 +0000 <ski> nestedShows [ ] = []
2026-05-20 11:34:56 +0000 <ski> nestedShows (x:xs) = show x : nestedShows (map (: []) xs)
2026-05-20 11:35:22 +0000 <ski> note that `xs' has type `[a]', but in the recursive call, `map (: []) xs)' has type `[[a]]'
2026-05-20 11:35:54 +0000 <ski> so, if in the top call, `a' will be `Integer', then in the recursive call, `a' will next be `[Integer]', then `[[Integer]]', and so on
2026-05-20 11:36:37 +0000Moyst(~moyst@user/moyst) Moyst
2026-05-20 11:36:39 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-05-20 11:36:44 +0000 <ski> and, in this case, because we have a type class constraint, that means that when this is at run-time given an instance method dictionary for `Show Integer', it will then hand off (provide) a dictionary for `Show [Integer]' to the recursive call
2026-05-20 11:36:57 +0000 <ski> iow, it must create a new dictionary, at run-time
2026-05-20 11:37:54 +0000 <ski> most more reasonable examples of polymorphic recursion involve "non-regular (recursive) data types", being data types whose recursion does not pass the same type parameters, e.g.
2026-05-20 11:38:03 +0000 <mauke> > let { foo :: Show a => Int -> a -> String; foo n x | n > 0 = foo (n - 1) (x, x) | otherwise = show x } in foo 2 9
2026-05-20 11:38:04 +0000 <lambdabot> "((9,9),(9,9))"
2026-05-20 11:38:19 +0000dolio(~dolio@130.44.140.168) dolio
2026-05-20 11:38:22 +0000 <mauke> > let { foo :: Show a => Int -> a -> String; foo n x | n > 0 = foo (n - 1) (x, x) | otherwise = show x } in foo 3 9
2026-05-20 11:38:23 +0000 <lambdabot> "(((9,9),(9,9)),((9,9),(9,9)))"
2026-05-20 11:38:47 +0000 <ski> data SwapList a b = Nil | Cons a (SwapList b a) -- `a' and `b' are swapped around, so it's not the same parameter pattern
2026-05-20 11:39:26 +0000 <ski> data PerfectlyBalancedBinaryTree a = Leaves a | Double (PerfectlyBalancedBinaryTree (a,a)) -- here we pass `(a,a)' in place of `a'
2026-05-20 11:39:54 +0000 <ski> most interesting functions (iow recursive) on these, will need to be polymorphic recursive
2026-05-20 11:40:49 +0000confusedalex(~confuseda@user/confusedalex) confusedalex
2026-05-20 11:40:54 +0000 <ski> otoh, `map' from above is *monomorphic* recursive (even though it's a polymorphic function), because, *within* the body of `map', we can think of it as being monomorphic, in the unknown types `a' and `b', recursive call calling on those *same* unknown types
2026-05-20 11:42:27 +0000puke(~puke@user/puke) (Read error: error:0A000139:SSL routines::record layer failure)
2026-05-20 11:42:51 +0000 <mauke> you can tell map uses monomorphic recursion because it can be implemented in C++ templates :-)
2026-05-20 11:42:52 +0000puke(~puke@user/puke) puke
2026-05-20 11:43:17 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 272 seconds)
2026-05-20 11:46:35 +0000 <ski> (in System F, when invoking a polymorphic operation, you are explicitly applying it to the types to use in place of the type parameters, in Haskell (with extensions) you can write this as e.g. `map @Int @Bool (> 4) [2,3,5,7]'. for monomorphic recursion, you can imagine `map' being defined as `map @a @b f = loop where loop :: [a] -> [b]; loop [ ] = []; loop (x:xs) = f x : loop xs', where you do *not* need
2026-05-20 11:46:41 +0000 <ski> to pass around the (unchanging) type parameters `a' and `b' (so `loop' is monomorphic .. i also factored out the unchanging `f' while i was at it), while for the `nestedShows' you'd have something like `nestedShows @a @{show_a} (x:xs) = show @a @{show_a} : nestedShows @[a] @{mkShowList show_a} (...)')
2026-05-20 11:49:00 +0000 <ski> (btw, it *is* also possible, in some ways, to learn more about the type, namely when using GADTs. doing a `case'-`of' analysis may then, in each appropriate branch, provide more information (at compilte-time) about abstract type parameters like `a' and `b')
2026-05-20 11:49:02 +0000weary-traveler(~user@user/user363627) user363627
2026-05-20 11:51:47 +0000aka_dude(~aka_dude@192.71.166.120)
2026-05-20 11:55:28 +0000nhar(~noah@76.33.110.8)