Logs on 2026-01-12 (liberachat/#haskell)
| 00:03:12 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 00:05:22 | trickard_ | is now known as trickard |
| 00:06:42 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 00:11:19 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 00:18:07 | → | werneta joins (~werneta@71.83.160.242) |
| 00:21:04 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 00:22:29 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 00:27:37 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 00:30:09 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 00:36:49 | jmcantrell_ | is now known as jmcantrell |
| 00:38:16 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 00:43:21 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds) |
| 00:43:21 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 00:46:12 | × | Tuplanolla quits (~Tuplanoll@88-114-88-95.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:53:25 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds) |
| 00:54:00 | × | cptaffe quits (~cptaffe@user/cptaffe) (Ping timeout: 252 seconds) |
| 00:54:04 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 00:58:25 | → | cptaffe joins (~cptaffe@user/cptaffe) |
| 00:59:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 01:04:36 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 01:09:50 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 01:14:31 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 01:24:42 | × | divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
| 01:25:00 | → | divlamir joins (~divlamir@user/divlamir) |
| 01:25:39 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 01:28:23 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 265 seconds) |
| 01:29:13 | × | attlin quits (~user@user/attlin) (Read error: Connection reset by peer) |
| 01:29:52 | → | attlin joins (~user@user/attlin) |
| 01:29:55 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 01:36:09 | → | DetourNe- joins (DetourNetw@user/DetourNetworkUK) |
| 01:36:36 | × | DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer) |
| 01:38:10 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 01:38:23 | DetourNe- | is now known as DetourNetworkUK |
| 01:39:11 | → | califax joins (~califax@user/califx) |
| 01:41:02 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 01:43:11 | × | trickard quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Ping timeout: 244 seconds) |
| 01:43:37 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 01:44:39 | × | attlin quits (~user@user/attlin) (Quit: Leaving) |
| 01:45:47 | → | Guest87 joins (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 01:47:05 | → | attlin joins (~user@user/attlin) |
| 01:47:59 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 01:49:11 | × | Guest87 quits (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) (Client Quit) |
| 01:49:33 | → | Guest87 joins (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 01:50:05 | × | Guest87 quits (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) (Client Quit) |
| 01:50:28 | → | Guest87 joins (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 01:52:52 | × | Guest87 quits (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) (Client Quit) |
| 01:53:16 | → | Guest87 joins (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 01:54:14 | × | Guest87 quits (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) (Client Quit) |
| 01:55:08 | → | Guest87 joins (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 01:56:40 | → | omidmash3 joins (~omidmash@user/omidmash) |
| 01:58:10 | × | omidmash quits (~omidmash@user/omidmash) (Ping timeout: 244 seconds) |
| 01:58:10 | omidmash3 | is now known as omidmash |
| 01:59:04 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 02:01:15 | → | weary-traveler joins (~user@user/user363627) |
| 02:03:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 02:04:21 | × | weary-traveler quits (~user@user/user363627) (Client Quit) |
| 02:04:24 | × | acidjnk quits (~acidjnk@p200300d6e7171930d5713a59355b93ee.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 02:04:39 | → | weary-traveler joins (~user@user/user363627) |
| 02:10:36 | → | annamalai joins (~annamalai@157.33.236.194) |
| 02:10:53 | × | Guest87 quits (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) (Ping timeout: 272 seconds) |
| 02:14:51 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 02:15:23 | → | Guest87 joins (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 02:18:35 | × | Guest87 quits (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) (Client Quit) |
| 02:18:53 | → | Guest87 joins (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 02:20:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 02:20:09 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds) |
| 02:20:12 | × | Guest87 quits (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) (Client Quit) |
| 02:20:32 | → | Guest87 joins (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 02:20:54 | × | Guest87 quits (~Guest87@2600:1006:b100:85b5:0:48:60fc:9f01) (Client Quit) |
| 02:24:41 | → | NotsoRoyal joins (~NotsoRoya@2600:1006:b100:85b5:0:48:60fc:9f01) |
| 02:26:02 | × | NotsoRoyal quits (~NotsoRoya@2600:1006:b100:85b5:0:48:60fc:9f01) (Client Quit) |
| 02:27:15 | → | NotsoRoyal joins (~NotsoRoya@user/notsoroyal) |
| 02:30:39 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 02:34:06 | × | NotsoRoyal quits (~NotsoRoya@user/notsoroyal) (Quit: Client closed) |
| 02:35:15 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 02:45:59 | × | omidmash quits (~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat) |
| 02:46:24 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 02:49:14 | → | omidmash joins (~omidmash@user/omidmash) |
| 02:51:47 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 03:02:04 | × | trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 03:02:17 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 03:02:17 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 03:07:06 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 03:17:59 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 03:23:00 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 03:26:39 | × | weary-traveler quits (~user@user/user363627) (Quit: Konversation terminated!) |
| 03:26:55 | → | weary-traveler joins (~user@user/user363627) |
| 03:33:47 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 03:34:08 | → | werneta_ joins (~werneta@71.83.160.242) |
| 03:36:28 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:39:59 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 03:40:20 | × | trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 03:40:34 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 03:43:42 | × | werneta quits (~werneta@71.83.160.242) (Quit: Lost terminal) |
| 03:45:45 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 03:46:16 | × | trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 03:50:27 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 03:50:37 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 03:52:30 | → | karenw joins (~karenw@user/karenw) |
| 03:54:46 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 04:05:49 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 04:10:45 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 04:13:13 | × | itaipu quits (~itaipu@168.121.99.54) (Ping timeout: 264 seconds) |
| 04:21:25 | × | trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 04:21:35 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 04:21:38 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 04:25:03 | × | trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 04:28:05 | → | itaipu joins (~itaipu@168.121.99.54) |
| 04:28:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 04:31:08 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 04:32:10 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 04:32:46 | × | bggd quits (~bgg@user/bggd) (Remote host closed the connection) |
| 04:36:48 | × | trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 04:39:38 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 04:42:25 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 04:44:43 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 04:53:13 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
| 04:55:22 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 05:00:16 | trickard_ | is now known as trickard |
| 05:00:37 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 05:04:40 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 05:05:43 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 05:07:19 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 240 seconds) |
| 05:07:23 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 05:10:59 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 05:15:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 05:17:53 | × | trickard quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 05:18:07 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 05:26:46 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 05:27:43 | → | wickedjargon joins (~user@2605:8d80:5431:4382:688d:97ac:bae8:f52) |
| 05:30:27 | trickard_ | is now known as trickard |
| 05:31:45 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 05:35:42 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 05:40:28 | × | trickard quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Ping timeout: 246 seconds) |
| 05:40:43 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 05:41:19 | × | mange quits (~mange@user/mange) (Remote host closed the connection) |
| 05:42:33 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 05:46:45 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 05:47:34 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 05:49:58 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 05:50:32 | → | michalz joins (~michalz@185.246.207.201) |
| 05:50:55 | → | Square2 joins (~Square4@user/square) |
| 05:53:19 | → | trickard___ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 05:54:01 | × | Square quits (~Square@user/square) (Ping timeout: 264 seconds) |
| 05:54:31 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 05:54:44 | trickard___ | is now known as trickard |
| 05:55:13 | × | trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Ping timeout: 264 seconds) |
| 05:57:18 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 06:05:42 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 06:07:21 | × | jreicher quits (~joelr@user/jreicher) (Quit: In transit) |
| 06:09:47 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 244 seconds) |
| 06:11:39 | → | Brumaire joins (~no@94.140.114.73) |
| 06:12:15 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 06:17:32 | → | takuan joins (~takuan@d8D86B9E9.access.telenet.be) |
| 06:17:56 | × | Pozyomka quits (~pyon@user/pyon) (Quit: brb) |
| 06:20:04 | × | Brumaire quits (~no@94.140.114.73) (Remote host closed the connection) |
| 06:23:30 | → | acidjnk joins (~acidjnk@p200300d6e717193058c1de10ab6941e8.dip0.t-ipconnect.de) |
| 06:23:44 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 06:23:54 | → | Pozyomka joins (~pyon@user/pyon) |
| 06:28:31 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 06:36:54 | × | attlin quits (~user@user/attlin) (Quit: Leaving) |
| 06:39:31 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 06:41:04 | → | attlin joins (~user@user/attlin) |
| 06:44:21 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 06:48:59 | → | akegalj joins (~akegalj@78-1-99-9.adsl.net.t-com.hr) |
| 06:53:58 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 06:55:19 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 06:58:03 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:59:55 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 07:02:04 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 07:11:07 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:13:29 | × | xff0x quits (~xff0x@2405:6580:b080:900:bec2:3356:308f:6c3f) (Ping timeout: 265 seconds) |
| 07:15:55 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 07:16:19 | → | xff0x joins (~xff0x@ai083101.d.east.v6connect.net) |
| 07:23:44 | → | jreicher joins (~joelr@user/jreicher) |
| 07:26:53 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:31:46 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 07:34:29 | × | trickard quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 07:34:43 | → | trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 07:37:27 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 07:42:42 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:43:18 | → | chele joins (~chele@user/chele) |
| 07:49:18 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 07:49:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 07:50:55 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:51:47 | → | wickedja` joins (~user@64.114.24.74) |
| 07:53:44 | × | wickedjargon quits (~user@2605:8d80:5431:4382:688d:97ac:bae8:f52) (Ping timeout: 260 seconds) |
| 07:55:48 | × | trickard_ quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 07:55:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 07:56:02 | → | trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 07:58:53 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 08:02:49 | → | tromp joins (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) |
| 08:05:33 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
| 08:08:29 | × | werneta_ quits (~werneta@71.83.160.242) (Quit: Lost terminal) |
| 08:13:46 | × | karenw quits (~karenw@user/karenw) (Ping timeout: 246 seconds) |
| 08:16:51 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 08:17:07 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 08:25:30 | × | akegalj quits (~akegalj@78-1-99-9.adsl.net.t-com.hr) (Ping timeout: 265 seconds) |
| 08:41:24 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 08:42:28 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 246 seconds) |
| 08:42:47 | → | danza joins (~danza@user/danza) |
| 08:51:39 | × | newmind quits (~newmind@91-133-90-252.dyn.cablelink.at) (Quit: Client closed) |
| 08:52:58 | → | merijn joins (~merijn@77.242.116.146) |
| 09:02:07 | → | DetourNe- joins (~DetourNet@user/DetourNetworkUK) |
| 09:03:31 | × | DetourNetworkUK quits (DetourNetw@user/DetourNetworkUK) (Read error: Connection reset by peer) |
| 09:04:20 | DetourNe- | is now known as DetourNetworkUK |
| 09:14:16 | × | danza quits (~danza@user/danza) (Remote host closed the connection) |
| 09:14:22 | → | akegalj joins (~akegalj@78-1-51-122.adsl.net.t-com.hr) |
| 09:28:13 | × | simplystuart quits (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 264 seconds) |
| 09:28:37 | → | simplystuart joins (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) |
| 09:28:49 | → | danza joins (~danza@user/danza) |
| 09:36:37 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 09:48:52 | → | merijn joins (~merijn@77.242.116.146) |
| 09:51:46 | × | olivial quits (~benjaminl@user/benjaminl) (Ping timeout: 246 seconds) |
| 10:02:27 | → | olivial joins (~benjaminl@user/benjaminl) |
| 10:07:00 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 10:24:22 | × | tromp quits (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:26:04 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
| 10:29:40 | → | tromp joins (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) |
| 10:30:32 | → | Googulator8 joins (~Googulato@2a01-036d-0106-4994-d043-6d2a-58f7-29ea.pool6.digikabel.hu) |
| 10:32:08 | → | fp joins (~Thunderbi@2001:708:20:1406::10c5) |
| 10:34:23 | × | Googulator quits (~Googulato@178-164-235-64.pool.digikabel.hu) (Ping timeout: 272 seconds) |
| 10:36:11 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 250 seconds) |
| 10:38:09 | × | foul_owl quits (~kerry@94.156.149.97) (Ping timeout: 256 seconds) |
| 10:39:21 | × | libertyprime quits (~libertypr@121.74.62.77) (Quit: leaving) |
| 10:43:09 | → | merijn joins (~merijn@77.242.116.146) |
| 10:51:06 | → | __monty__ joins (~toonn@user/toonn) |
| 10:52:41 | → | foul_owl joins (~kerry@94.156.149.96) |
| 10:55:43 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 240 seconds) |
| 11:05:46 | × | poscat quits (~poscat@user/poscat) (Remote host closed the connection) |
| 11:08:16 | → | merijn joins (~merijn@77.242.116.146) |
| 11:08:35 | → | poscat joins (~poscat@user/poscat) |
| 11:15:19 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 11:26:14 | → | merijn joins (~merijn@77.242.116.146) |
| 11:30:54 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
| 11:31:29 | → | danz61599 joins (~danza@user/danza) |
| 11:33:39 | × | danza quits (~danza@user/danza) (Ping timeout: 260 seconds) |
| 11:35:15 | → | merijn joins (~merijn@77.242.116.146) |
| 11:39:31 | trickard_ | is now known as trickard |
| 11:46:34 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 265 seconds) |
| 11:51:19 | × | zlqrvx quits (~zlqrvx@user/zlqrvx) (Ping timeout: 264 seconds) |
| 11:59:25 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 12:02:15 | → | srazkvt joins (~sarah@user/srazkvt) |
| 12:04:27 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 12:04:37 | → | newmind joins (~newmind@91-133-90-252.dyn.cablelink.at) |
| 12:05:32 | → | merijn joins (~merijn@77.242.116.146) |
| 12:08:38 | × | srazkvt quits (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
| 12:19:35 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 256 seconds) |
| 12:26:36 | → | merijn joins (~merijn@77.242.116.146) |
| 12:36:13 | × | tromp quits (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:57:30 | × | AlexZenon quits (~alzenon@178.34.150.203) (Quit: ;-) |
| 12:58:12 | × | AlexNoo quits (~AlexNoo@178.34.150.203) (Quit: Leaving) |
| 13:00:02 | → | comerijn joins (~merijn@77.242.116.146) |
| 13:02:52 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 13:12:45 | Googulator8 | is now known as Googulator |
| 13:20:10 | → | tromp joins (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) |
| 13:20:19 | → | AlexNoo joins (~AlexNoo@178.34.150.203) |
| 13:23:49 | → | AlexZenon joins (~alzenon@178.34.150.203) |
| 13:28:07 | × | AlexZenon quits (~alzenon@178.34.150.203) (Ping timeout: 240 seconds) |
| 13:32:59 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 252 seconds) |
| 13:33:25 | → | AlexZenon joins (~alzenon@178.34.150.203) |
| 13:34:43 | → | Alex_test_ joins (~al_test@178.34.150.203) |
| 13:38:55 | × | Alex_test_ quits (~al_test@178.34.150.203) (Ping timeout: 240 seconds) |
| 13:45:12 | → | Alex_test_ joins (~al_test@178.34.150.203) |
| 13:46:13 | × | Square2 quits (~Square4@user/square) (Ping timeout: 264 seconds) |
| 13:46:19 | Alex_test_ | is now known as Alex_test |
| 13:47:12 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 13:51:14 | → | gmg joins (~user@user/gehmehgeh) |
| 13:51:39 | → | chexum_ joins (~quassel@gateway/tor-sasl/chexum) |
| 13:52:03 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 252 seconds) |
| 13:54:04 | → | Miroboru joins (~myrvoll@188.113.115.67) |
| 13:54:51 | × | chexum_ quits (~quassel@gateway/tor-sasl/chexum) (Client Quit) |
| 13:56:49 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 14:04:11 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 14:05:37 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 252 seconds) |
| 14:05:46 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 14:05:56 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 14:07:26 | → | gmg joins (~user@user/gehmehgeh) |
| 14:08:32 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 14:08:54 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 14:13:24 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:16:35 | → | rekahsoft joins (~rekahsoft@70.51.99.245) |
| 14:16:43 | × | cstml3 quits (~cstml@user/cstml) (Quit: ZNC 1.10.1 - https://znc.in) |
| 14:16:59 | → | cstml joins (~cstml@user/cstml) |
| 14:22:53 | × | trickard quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 14:23:06 | → | trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 14:23:46 | → | Inline joins (~User@cgn-195-14-218-118.nc.de) |
| 14:31:19 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 14:33:27 | → | rainbyte joins (~rainbyte@186.22.19.214) |
| 14:49:49 | × | comerijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 14:50:25 | → | merijn joins (~merijn@77.242.116.146) |
| 15:01:22 | → | qqq joins (~qqq@185.54.21.105) |
| 15:07:49 | × | wickedja` quits (~user@64.114.24.74) (Ping timeout: 264 seconds) |
| 15:20:51 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 15:22:17 | trickard_ | is now known as trickard |
| 15:31:09 | → | danza joins (~danza@user/danza) |
| 15:31:48 | × | fp quits (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 265 seconds) |
| 15:32:17 | → | phoeniciavore joins (~phoenicia@85.195.216.252) |
| 15:32:21 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
| 15:32:55 | × | danz61599 quits (~danza@user/danza) (Ping timeout: 240 seconds) |
| 15:33:29 | <phoeniciavore> | Hello! Does anyone have stack working successfully in a nix shell on macOS? No matter what I configure, I always get `<<loop>>` when I try to run something. |
| 15:35:44 | → | merijn joins (~merijn@77.242.116.146) |
| 15:35:54 | <danza> | phoeniciavore: seems a bit specific, there is #nixos |
| 15:35:56 | <haskellbridge> | <Morj> It's a recent bug in stack in nixos |
| 15:36:16 | <haskellbridge> | <Morj> In nixpkgs rather |
| 15:36:25 | → | phoeniciavore48 joins (~phoenicia@185.159.157.200) |
| 15:36:30 | <haskellbridge> | <Morj> phoeniciavore https://github.com/commercialhaskell/stack/issues/6824 |
| 15:36:47 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 256 seconds) |
| 15:37:18 | <haskellbridge> | <Morj> For now I'm just using an older version of stack before this got introduced |
| 15:37:45 | <phoeniciavore48> | oh wow holy crap, I've wasted a day on this. I don't know how I didn't manage to find that page, thanks so much |
| 15:38:21 | <haskellbridge> | <Morj> Are you on latest nixpkgs unstable? I hoped it would be fixed by now |
| 15:38:55 | <haskellbridge> | <Morj> I mean the fix got merged, but I don't know if it's hit unstable yet |
| 15:39:01 | × | phoeniciavore quits (~phoenicia@85.195.216.252) (Ping timeout: 272 seconds) |
| 15:39:20 | <phoeniciavore48> | I'm still kind of a noob at nix, but I have a mostly-fresh installation, I don't think I've added unstable packages |
| 15:40:33 | × | danza quits (~danza@user/danza) (Remote host closed the connection) |
| 15:45:05 | × | tromp quits (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:46:10 | → | danza joins (~danza@user/danza) |
| 15:49:59 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
| 16:01:35 | × | phoeniciavore48 quits (~phoenicia@185.159.157.200) (Quit: Client closed) |
| 16:10:20 | → | tromp joins (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) |
| 16:12:35 | × | akegalj quits (~akegalj@78-1-51-122.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
| 16:25:13 | → | karenw joins (~karenw@user/karenw) |
| 16:40:09 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 16:42:28 | → | Enrico63 joins (~Enrico63@host-87-7-181-238.retail.telecomitalia.it) |
| 16:47:33 | → | st_aldini joins (~Thunderbi@2605:a601:a07c:7426:52e7:74e7:d63d:c18b) |
| 16:48:11 | → | spew joins (~spew@user/spew) |
| 16:56:03 | × | danza quits (~danza@user/danza) (Remote host closed the connection) |
| 16:59:58 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 17:05:43 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 240 seconds) |
| 17:07:16 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 17:11:19 | × | jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 240 seconds) |
| 17:11:37 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 17:11:45 | → | merijn joins (~merijn@77.242.116.146) |
| 17:12:27 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 17:15:01 | × | Enrico63 quits (~Enrico63@host-87-7-181-238.retail.telecomitalia.it) (Quit: Client closed) |
| 17:16:39 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
| 17:19:49 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 264 seconds) |
| 17:24:12 | → | aliston joins (~Thunderbi@2409:40d2:3055:3e4b:5b0f:9800:efe1:c98) |
| 17:32:05 | × | aliston quits (~Thunderbi@2409:40d2:3055:3e4b:5b0f:9800:efe1:c98) (Quit: aliston) |
| 17:32:24 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 260 seconds) |
| 17:33:49 | × | trickard quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 17:34:03 | → | trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 17:34:37 | → | aliston joins (~Thunderbi@2409:40d2:3055:3e4b:5b0f:9800:efe1:c98) |
| 17:46:01 | × | aliston quits (~Thunderbi@2409:40d2:3055:3e4b:5b0f:9800:efe1:c98) (Remote host closed the connection) |
| 17:52:03 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 17:52:15 | → | Tuplanolla joins (~Tuplanoll@88-114-88-95.elisa-laajakaista.fi) |
| 17:56:46 | × | synchromesh quits (~john@2406:5a00:2412:2c00:6135:a28e:b853:ee07) (Read error: Connection reset by peer) |
| 17:57:43 | → | synchromesh joins (~john@2406:5a00:2412:2c00:6135:a28e:b853:ee07) |
| 18:04:52 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 18:20:11 | trickard_ | is now known as trickard |
| 18:20:24 | × | qqq quits (~qqq@185.54.21.105) (Remote host closed the connection) |
| 18:29:40 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 18:33:37 | × | karenw quits (~karenw@user/karenw) (Ping timeout: 246 seconds) |
| 18:40:24 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 18:48:49 | × | tromp quits (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:52:22 | → | Guest27 joins (~Guest27@84.88.223.225) |
| 18:52:57 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:53:21 | × | Guest27 quits (~Guest27@84.88.223.225) (Client Quit) |
| 19:00:51 | → | tromp joins (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) |
| 19:11:05 | → | Enrico63 joins (~Enrico63@host-87-7-181-238.retail.telecomitalia.it) |
| 19:15:39 | × | rekahsoft quits (~rekahsoft@70.51.99.245) (Ping timeout: 260 seconds) |
| 19:22:30 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 19:23:29 | <Enrico63> | Hello. I've just read this 2020 post by Alexis King (https://lexi-lambda.github.io/blog/2020/01/19/no-dynamic-type-systems-are-not-inherently-more-open/), and I'd like some help to interpret the part I've highlighted in bold in the paragraph below (I'm including the first half of the paragraph for context). |
| 19:23:30 | <Enrico63> | > That said, while you can emulate the dynamic typing of pickle.load() if you really want to by deferring the type check until the last possible moment, the reality is that doing so is almost never actually useful. At some point, you have to make assumptions about the structure of the value in order to use it, and you know what those assumptions |
| 19:23:30 | <Enrico63> | are because you wrote the code. **While there are extremely rare exceptions to this that require true dynamic code loading (such as, say, implementing a REPL for your programming language), they do not occur in day-to-day programming, and programmers in statically-typed languages are perfectly happy to supply their assumptions up front.** |
| 19:23:31 | <Enrico63> | This paragraph is not representative of the whole post, which is about the idea that _static type systems are not fundamentally worse than dynamic type systems at processing data with an open or partially-known structure_; however, the highlighted portion of the paragraph I quoted just piques my curiosity about a different topic, which is "when is |
| 19:23:31 | <lambdabot> | <hint>:1:10: error: parse error on input `,' |
| 19:23:31 | <Enrico63> | a dynamic language (or a feature) really necessary?", and I'm curious as to why "implementing a REPL for your programming language" is such a case. |
| 19:23:50 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Read error: Connection reset by peer) |
| 19:23:59 | <Enrico63> | Oh, forgot that the leading > has a meaning, sorry |
| 19:24:33 | <Enrico63> | I known the question is not about Haskell, but I assume many people in here can help me understand :/ |
| 19:28:17 | <dolio> | Implementing a REPL basically by-definition requires that. |
| 19:28:29 | <tomsmeding> | Enrico63: if you implement a REPL, you genuinely have no assumptions about the values that the user might produce inside that REPL. So assuming that you represent those values somehow in the implementation of your REPL, you will be able to do no better than "it's a value" |
| 19:28:38 | <dolio> | Because you type code into a REPL and it gets dynamically loaded. |
| 19:29:11 | <tomsmeding> | I think this is what Alexis is getting at, in any case |
| 19:30:00 | <tomsmeding> | more concretely, if you implement an interpreter for a language, then how do you represent the values computed in the language you're interpreting? |
| 19:30:15 | <tomsmeding> | (I say "more concretely" because a REPL may well be compiled and not interpreted, like GHCi is) |
| 19:30:39 | <tomsmeding> | (though the boundary between "compiled" and "interpreted" is a bit fuzzy here) |
| 19:33:39 | <Enrico63> | Mmmmmmm. Say I have a language XYZ. And I tell that in XYZ you can write something like `eval("this is XYZ code")`. If this is possible, do you deduce that XYZ is necessarily a dynamically typed langauge? |
| 19:33:59 | <EvanR> | if you're implementing a REPL for a language with a static type system, it just means you need to be dynamically adding to the static type definitions, so future inputs can be parsed and checked |
| 19:34:17 | <EvanR> | the repl input is basically that eval (in some context) |
| 19:34:37 | <EvanR> | doesn't require dynamic typing at all |
| 19:34:42 | <EvanR> | see haskell |
| 19:35:29 | <EvanR> | ghci |
| 19:35:50 | <tomsmeding> | Enrico63: you can have a type with dynamic structure in a statically typed language: see aeson's Value |
| 19:36:09 | <EvanR> | also that though it didn't seem to be the subject of the post |
| 19:36:21 | <tomsmeding> | the "interpreter" example is an argument why you may not know what structure a particular type has, not that a statically-typed language is fundamentally unsuitable |
| 19:37:09 | <tomsmeding> | in this case, note that aeson's Value is an explicit data type in Haskell that forces you to announce that an object comes now (Object), or a string comes now (String), etc. |
| 19:37:32 | <tomsmeding> | whereas in a dynamically typed language, what was represented by that Value could simply be a nesting of objects and strings without intervening data constructors |
| 19:37:36 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 19:37:37 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 19:37:52 | <EvanR> | interpreter for a language always has to parse its input before doing anything. If it's statically typed it means you have more checks after the parsing, this isn't that much of a fundamental difference between languages |
| 19:37:54 | <tomsmeding> | so for this very dynamic use case, we have to do a bit more work in a statically-typed language than we do in a dynamically-typed language |
| 19:38:11 | × | trickard quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 19:38:24 | → | trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 19:38:25 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds) |
| 19:38:55 | Lord_of_Life_ | is now known as Lord_of_Life |
| 19:39:05 | <tomsmeding> | (notable side track: if the language you're interpreting is itself typed and the AST you're interpreting is type-indexed in haskell too, you can write a strongly-typed interpreter that doesn't need such "tags" (data constructors)) |
| 19:39:16 | <Enrico63> | "if you implement an interpreter for a language, then how do you represent the values computed in the language you're interpreting?" Can you explain? It isn't obvious to me |
| 19:40:42 | <EvanR> | can I get a reaction to your eval question. |
| 19:40:46 | <EvanR> | > ord 'a' |
| 19:40:47 | <lambdabot> | 97 |
| 19:40:55 | <EvanR> | > chr 'a' |
| 19:40:56 | <lambdabot> | Couldn't match expected type ‘Int’ with actual type ‘Char’ |
| 19:40:56 | <lambdabot> | In the first argument of ‘chr’, namely ‘'a'’ |
| 19:40:56 | <lambdabot> | In the expression: chr 'a' |
| 19:41:08 | <EvanR> | it's evalling the 'string' but it's not a dynamically typed language |
| 19:41:56 | <EvanR> | the string ord 'a' |
| 19:42:09 | <Enrico63> | What is the language under > ? |
| 19:42:29 | × | trickard_ quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 19:42:31 | <Enrico63> | Haskell? |
| 19:42:37 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 19:42:48 | <tomsmeding> | Enrico63: https://play.haskell.org/saved/nOqh7N84 this is a little interpreter for a stupid little language that only has integers and pairs |
| 19:42:53 | <Enrico63> | Oh, ord is not in prelude, that's why I don't see it in ghci :D |
| 19:42:55 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 19:43:05 | <EvanR> | import Data.Char |
| 19:43:45 | <tomsmeding> | Enrico63: note Value in my snippet: to represent the value morally written "(2, 3)", I have to write "VPair (VI 2) (VI 3)" |
| 19:43:59 | <Enrico63> | Yeah, EvanR, yeah. Given what it is I thought it was in Prelude, but when I tried in ghci I got the error, and questioned myself why I was giving for granted it was Haskell. |
| 19:44:05 | <tomsmeding> | the VPair takes the place of the (,), but the VI are strictly extra compared to the "typed" representation "(2, 3)" |
| 19:44:58 | <tomsmeding> | this Value is quite dynamic: given a Value, we only know what grammar values follow, but inside that there may be anything |
| 19:45:16 | <tomsmeding> | it's not very "typed" |
| 19:46:11 | <tomsmeding> | in a dynamically typed language, there'd be no need for the VI as you'd just stuff integers in pairs and call it a day |
| 19:47:18 | <EvanR> | .oO( there could plausibly be a language where you don't need the VI but it's not dynamically typed ) |
| 19:48:06 | <tomsmeding> | this dynamic/static typing is very much "I know it when I see it" terminology; it's hard to impossible (and probably unproductive) to give a strict definition, but particular languages are generally agreed to be either the one or the other |
| 19:48:33 | → | trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 19:49:02 | <tomsmeding> | bonus treat: by making the embedded language strongly typed, we can remove some of the dynamism https://play.haskell.org/saved/a3yS25TF |
| 19:49:03 | <EvanR> | for a long time I felt the distinction comes down to not really the language itself but the workflow, your shit is checked immediately or at the last possible minute |
| 19:49:32 | <tomsmeding> | (note that the error cases in 'interpret' are gone!) |
| 19:50:10 | <EvanR> | for instance, elixir is very dynamic, but is currently being heavily checked in the IDE using what they're calling "a type system" |
| 19:50:21 | <EvanR> | so it's getting pretty similar in some way to a static language |
| 19:50:37 | <EvanR> | but it's the same language as before |
| 19:51:47 | <tomsmeding> | Enrico63: remember that Alexis' point was that you can simulate dynamic typing in a statically-typed language by deferring checks until the last possible moment (see my first 'interpret' function that errors at the last possible moment), and that you generally do _not_ want to do this except for the specific case of writing an interpreter |
| 19:51:56 | → | euphores joins (~SASL_euph@user/euphores) |
| 19:52:07 | <tomsmeding> | her point was not that you must use a dynamically-typed language here |
| 19:53:24 | <tomsmeding> | that is: if you're parsing JSON with aeson, you generally *don't* want to parse to a Value ( https://hackage.haskell.org/package/aeson-2.2.3.0/docs/Data-Aeson.html#t:Value ) and deal with wrong keys/types later |
| 19:53:24 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 19:53:40 | <tomsmeding> | but exceptions to that "generally" exist, and an interpreter is one of them |
| 19:55:00 | <tomsmeding> | (is there a Rice's theorem for rules? Every rule that says something nontrivial has exceptions) |
| 19:55:43 | <EvanR> | someone's law: all rules have exceptions, including someone's law |
| 19:56:11 | <tomsmeding> | indeed, the trivial rules |
| 19:56:41 | <tomsmeding> | thus we conclude that all rules with no exceptions are trivial |
| 19:57:43 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 19:57:57 | <Enrico63> | I'm re-reading from the beginning :| |
| 20:00:37 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 264 seconds) |
| 20:00:57 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 20:03:35 | × | sp1ff quits (~user@2601:1c2:4701:900::327f) (Read error: Connection reset by peer) |
| 20:07:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 20:11:40 | × | Jackneill quits (~Jackneill@94-21-195-8.pool.digikabel.hu) (Read error: Connection reset by peer) |
| 20:11:42 | → | Jackneill_ joins (~Jackneill@94-21-195-8.pool.digikabel.hu) |
| 20:13:25 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 20:17:11 | <Enrico63> | tomsmeding, I see that in the two code snippets you have an interpreter for a weakly vs strongly typed language. If nothing else, I can `interpret $ Plus (Pair (I 2) (I 3)) (I 4)`, which errors at runtime vs fails to compile. Understood. But when you write "this Value is quite dynamic: given a Value, we only know what grammar values follow, but |
| 20:17:11 | <Enrico63> | inside that there may be anything", what does that exactly mean? Is it that given a Value (in the first snippet) I have to match on constructors (something that happens at runtime), whereas Value (in the second snippet), being parametric carries information in its type? |
| 20:17:44 | × | spew quits (~spew@user/spew) (Quit: nyaa~) |
| 20:18:16 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 20:18:56 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 20:19:38 | × | Googulator quits (~Googulato@2a01-036d-0106-4994-d043-6d2a-58f7-29ea.pool6.digikabel.hu) (Quit: Client closed) |
| 20:19:39 | → | jzargo joins (~jzargo@user/jzargo) |
| 20:19:54 | → | Googulator joins (~Googulato@2a01-036d-0106-4994-d043-6d2a-58f7-29ea.pool6.digikabel.hu) |
| 20:27:00 | <tomsmeding> | Enrico63: the second snippet is more of a side-note that muddles the waters in this discussion |
| 20:27:38 | <tomsmeding> | the point in the first snippet is that when interpreting 'Fst e', I have to pattern-match on the result of 'interpret e' to check if it is VPair or something else |
| 20:28:16 | <Enrico63> | Ok. I see that. |
| 20:28:33 | <tomsmeding> | this is a check at the last possible time: there is some kind of assumption on the shape of this value (because Fst requires a pair), but our data representation does not encode that assumption |
| 20:29:10 | <tomsmeding> | normally, in a statically typed language, we try to avoid this: when you use 'fst' in haskell, you'd rather like the type system to ensure that the argument to 'fst' is indeed a pair! |
| 20:29:12 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 20:29:32 | <Enrico63> | Because our data representation is just an Expr, whatever it contains |
| 20:30:00 | <tomsmeding> | this is in contrast to a dynamically typed language, where any use of 'fst' (usually written like [0], or .0, or .first, etc.) may throw because it actually turns out to be a file handle, for example |
| 20:30:13 | <tomsmeding> | Enrico63: no, I'm talking about Value, not Expr |
| 20:30:23 | <Enrico63> | Well, same thing, right? |
| 20:30:34 | <EvanR> | no way |
| 20:30:34 | <tomsmeding> | true, they're both dynamic |
| 20:30:35 | <Enrico63> | It's a single type that hides multiple shapes, no? |
| 20:30:50 | <tomsmeding> | but for Expr, every value is interpretable, whereas certainly not all Value values are valid |
| 20:31:08 | <tomsmeding> | (well, not really every Expr is interpretable either!) |
| 20:31:25 | <tomsmeding> | ("Fst (I 2)" is indeed bad, and you're right that this is yet another example of the same) |
| 20:31:42 | <EvanR> | isn't the secret sauce that a Value evaluates to itself |
| 20:32:07 | <EvanR> | is the output of evaluation |
| 20:32:20 | <tomsmeding> | Alexis' point here, I think, is that my first snippet is fine Haskell code, _despite_ doing a check that is "too late" |
| 20:32:49 | <tomsmeding> | my addendum to that is that Haskell is actually strong enough that if you're lucky enough to be interpreting a typed language, you can fix this |
| 20:32:53 | <tomsmeding> | -> my second snippet |
| 20:33:43 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 20:34:30 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 20:35:45 | <Enrico63> | No, I don't get it. Your first snippet is Haskell code full stop; fine or not is an opinion. Her words refer to "rare exceptions [...] that **require** true dynamic code loading". |
| 20:36:24 | <tomsmeding> | Enrico63: I interpret that "dynamic code loading" as applying to my 'interpret': it's loading code (Expr) dynamically (at runtime) |
| 20:36:26 | <Enrico63> | Now, whether I look at the first or second snippet of yours, those are both interpreters, no? |
| 20:37:07 | <Enrico63> | Yeah, and in your second snippet you are not doing that. So where's the "require"? |
| 20:37:29 | <Enrico63> | If something is required, you ought to do it, you can't avoid. Right? |
| 20:37:29 | <tomsmeding> | writing an interpreter by definition requires you to interpret code at runtime -- that's what an interpreter does |
| 20:38:08 | → | fp joins (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) |
| 20:38:13 | <tomsmeding> | I think there is little more to the statement than this |
| 20:39:02 | <tomsmeding> | I think it's simply false that all exceptions to the stated "rule" require dynamic code loading; Alexis is simply stating that there are exceptions, _such as_ those that require dynamic code loading |
| 20:39:47 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 252 seconds) |
| 20:39:55 | <EvanR> | "rare exceptions of dynamic code loading", every computer game out there with a "mod API" |
| 20:40:29 | <EvanR> | ever loaded a TTF font? xD |
| 20:40:43 | <tomsmeding> | or loaded a pickle |
| 20:40:45 | <EvanR> | or a pdf |
| 20:40:57 | <geekosaur> | and glibc does it all the time: name services, locale stuff… |
| 20:42:31 | <tomsmeding> | (the python pickle format includes the ability to call arbitrary functions https://docs.python.org/3/library/pickle.html#restricting-globals ) |
| 20:42:44 | <EvanR> | does it run the code as a matter of course during loading? |
| 20:42:48 | <tomsmeding> | yes |
| 20:42:54 | <EvanR> | can you disable it? xD |
| 20:42:58 | <tomsmeding> | which is why using pickle.loads on unsafe input is highly insecure |
| 20:43:06 | <tomsmeding> | read the docs :p |
| 20:43:14 | <EvanR> | python sounds terrifying |
| 20:43:43 | <tomsmeding> | well the docs are rather loud about this |
| 20:44:10 | × | myme quits (~myme@2a01:799:d5e:5f00:ff65:28ea:98bb:7f03) (Ping timeout: 246 seconds) |
| 20:44:59 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 20:45:16 | → | myme joins (~myme@2a01:799:d5e:5f00:182f:237f:5285:8c47) |
| 20:46:12 | × | oxapentane quits (~oxapentan@user/oxapentane) (Remote host closed the connection) |
| 20:46:30 | → | oxapentane joins (~oxapentan@user/oxapentane) |
| 20:47:14 | <EvanR> | good |
| 20:47:32 | <tomsmeding> | it's also a staple in beginner hacking challenges |
| 20:47:36 | <EvanR> | I'm tired of C getting all the blame for security xD |
| 20:49:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 20:51:45 | → | a_peirogon joins (~a_peirogo@user/a-peirogon:62807) |
| 20:54:52 | ← | a_peirogon parts (~a_peirogo@user/a-peirogon:62807) (WeeChat 4.7.1) |
| 20:55:57 | <geekosaur> | that's lazy people looking for a quick no-thinking belief |
| 20:56:10 | <geekosaur> | (and usually trying to justify their language…) |
| 21:00:35 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 21:02:25 | → | gmg joins (~user@user/gehmehgeh) |
| 21:04:07 | × | michalz quits (~michalz@185.246.207.201) (Remote host closed the connection) |
| 21:05:52 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
| 21:06:01 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 21:14:25 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 21:15:40 | × | newmind quits (~newmind@91-133-90-252.dyn.cablelink.at) (Quit: Client closed) |
| 21:19:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 21:23:17 | × | trickard_ quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 21:23:30 | → | trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 21:25:33 | <hc> | You mean nonstrict people? :D |
| 21:29:11 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 21:30:12 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 21:30:34 | jmcantrell_ | is now known as jmcantrell |
| 21:32:05 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 21:34:04 | → | marlino joins (~marlino@96-8-193-71.block0.gvtc.com) |
| 21:35:29 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 21:40:35 | × | comonad quits (~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 21:46:08 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 21:46:31 | × | lbseale quits (~quassel@user/ep1ctetus) (Ping timeout: 264 seconds) |
| 21:46:55 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 240 seconds) |
| 21:47:25 | × | takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 264 seconds) |
| 21:51:24 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 21:53:56 | → | pavonia joins (~user@user/siracusa) |
| 21:57:56 | → | lbseale joins (~quassel@user/ep1ctetus) |
| 22:01:41 | × | housemate quits (~housemate@203.56.146.214) (Quit: https://ineedsomeacidtocalmmedown.space/) |
| 22:01:54 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 22:06:46 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 22:09:55 | × | trickard_ quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Ping timeout: 240 seconds) |
| 22:10:13 | → | trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au) |
| 22:10:17 | → | Plane9 joins (~Plane9@2a02:3037:608:ad96:bf2:5d7:81f6:16a1) |
| 22:17:45 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 22:18:40 | × | polykernel quits (~polykerne@user/polykernel) (Ping timeout: 246 seconds) |
| 22:22:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 22:32:34 | trickard_ | is now known as trickard |
| 22:33:25 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 22:35:11 | × | tromp quits (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:38:15 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 22:38:26 | → | tromp joins (~textual@2001:1c00:3487:1b00:e84f:e407:7aee:4080) |
| 22:39:40 | × | fp quits (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) (Ping timeout: 246 seconds) |
| 22:42:20 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 22:46:20 | × | Enrico63 quits (~Enrico63@host-87-7-181-238.retail.telecomitalia.it) (Quit: Client closed) |
| 22:49:13 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 22:52:08 | × | tromp quits (~textual@2001:1c00:3487:1b00:e84f:e407:7aee:4080) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:52:57 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 22:54:05 | × | Plane9 quits (~Plane9@2a02:3037:608:ad96:bf2:5d7:81f6:16a1) (Quit: Client closed) |
| 22:54:16 | → | Plane9 joins (~Plane9@2a02:3037:608:ad96:bf2:5d7:81f6:16a1) |
| 22:55:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 22:59:12 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Quit: peterbecich) |
| 22:59:28 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 23:03:32 | × | Plane9 quits (~Plane9@2a02:3037:608:ad96:bf2:5d7:81f6:16a1) (Quit: Client closed) |
| 23:04:01 | → | Plane9 joins (~Plane9@2a02:3037:608:ad96:bf2:5d7:81f6:16a1) |
| 23:07:15 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 23:09:58 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 23:11:56 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 23:16:39 | → | comonad joins (~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de) |
| 23:19:00 | → | Square joins (~Square@user/square) |
| 23:21:43 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:22:38 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 23:22:49 | × | rainbyte quits (~rainbyte@186.22.19.214) (Ping timeout: 264 seconds) |
| 23:25:31 | × | attlin quits (~user@user/attlin) (Ping timeout: 246 seconds) |
| 23:25:41 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:27:15 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 23:38:13 | → | m0lok joins (~m0lok@user/m0lok) |
| 23:38:16 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 23:41:03 | → | mange joins (~mange@user/mange) |
| 23:43:24 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 23:52:06 | → | gmg joins (~user@user/gehmehgeh) |
| 23:54:02 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 23:58:21 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 23:59:22 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
All times are in UTC on 2026-01-12.