2024/10/28

2024-10-28 00:03:05 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 00:06:50 +0100acidjnk_new(~acidjnk@p200300d6e72cfb2791fd33152230db35.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-10-28 00:07:27 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-28 00:09:40 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 00:14:18 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 00:16:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 00:25:34 +0100st_aldini(~Thunderbi@2605:a601:a07c:af00:edd4:453a:4c88:19a0) (Ping timeout: 260 seconds)
2024-10-28 00:26:12 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-10-28 00:30:02 +0100sadmax(~user@64.130.91.66) (Read error: Connection reset by peer)
2024-10-28 00:30:31 +0100sadmax(~user@64.130.91.66)
2024-10-28 00:36:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 00:41:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 00:45:56 +0100synchromesh(~john@139.180.95.1) (Quit: WeeChat 4.0.5)
2024-10-28 00:47:10 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-10-28 00:47:11 +0100Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
2024-10-28 00:50:03 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
2024-10-28 00:50:03 +0100ljdarj1ljdarj
2024-10-28 00:52:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 00:59:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-28 01:03:38 +0100Everything(~Everythin@195.138.86.118) (Quit: leaving)
2024-10-28 01:10:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 01:15:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 01:17:41 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 01:20:24 +0100floyza(~gavin@h69-11-148-150.kndrid.broadband.dynamic.tds.net) gdown
2024-10-28 01:22:11 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-10-28 01:30:25 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-10-28 01:37:39 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 01:37:44 +0100pabs3(~pabs3@user/pabs3) (Ping timeout: 260 seconds)
2024-10-28 01:42:23 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-28 01:54:31 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 01:54:45 +0100xff0x(~xff0x@2405:6580:b080:900:8be3:6384:4679:8a68) (Ping timeout: 252 seconds)
2024-10-28 01:57:20 +0100sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-10-28 01:58:43 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-28 01:59:29 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-28 02:07:01 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-10-28 02:09:06 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 244 seconds)
2024-10-28 02:09:28 +0100ZLima12(~zlima12@user/meow/ZLima12) ()
2024-10-28 02:09:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 02:14:23 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-10-28 02:25:15 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 02:30:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-28 02:31:24 +0100sadmax(~user@64.130.91.66) (Ping timeout: 260 seconds)
2024-10-28 02:33:08 +0100ZLima12(~zlima12@user/meow/ZLima12) ZLima12
2024-10-28 02:36:06 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-10-28 02:38:00 +0100pabs3(~pabs3@user/pabs3) pabs3
2024-10-28 02:40:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 02:41:13 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 245 seconds)
2024-10-28 02:45:34 +0100sadmax(~user@64.130.91.66)
2024-10-28 02:47:08 +0100califax(~califax@user/califx) califx
2024-10-28 02:47:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 02:48:22 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-28 02:48:43 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-10-28 02:51:07 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2024-10-28 02:52:59 +0100sadmax(~user@64.130.91.66) (Ping timeout: 260 seconds)
2024-10-28 02:58:42 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 03:03:20 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 03:05:29 +0100ZLima12(~zlima12@user/meow/ZLima12) ()
2024-10-28 03:07:19 +0100ZLima12(~zlima12@user/meow/ZLima12) ZLima12
2024-10-28 03:14:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 03:18:40 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 03:20:11 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 03:23:19 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-10-28 03:24:04 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
2024-10-28 03:25:48 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2024-10-28 03:32:04 +0100araujo(~araujo@216.73.163.215) araujo
2024-10-28 03:32:58 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 03:37:26 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 03:38:51 +0100sadmax(~user@64.130.91.66)
2024-10-28 03:41:18 +0100weary-traveler(~user@user/user363627) user363627
2024-10-28 03:46:29 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-28 03:48:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 03:52:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-28 04:03:42 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 04:08:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 04:08:50 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-10-28 04:16:34 +0100Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Quit: Ping timeout (120 seconds))
2024-10-28 04:16:57 +0100Sciencentistguy(~sciencent@hacksoc/ordinary-member) sciencentistguy
2024-10-28 04:19:05 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 04:25:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-28 04:27:06 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-10-28 04:34:32 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 04:37:08 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 04:39:01 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-28 04:39:08 +0100dolio(~dolio@130.44.140.168) (Quit: ZNC 1.8.2 - https://znc.in)
2024-10-28 04:41:16 +0100dolio(~dolio@130.44.140.168) dolio
2024-10-28 04:41:36 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 04:52:31 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 04:57:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-28 04:57:56 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-10-28 05:01:55 +0100Fischmiep(~Fischmiep@user/Fischmiep) (Remote host closed the connection)
2024-10-28 05:02:08 +0100td_(~td@i53870914.versanet.de) (Ping timeout: 252 seconds)
2024-10-28 05:02:19 +0100Fischmiep(~Fischmiep@user/Fischmiep) Fischmiep
2024-10-28 05:04:01 +0100td_(~td@i53870902.versanet.de) td_
2024-10-28 05:07:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 05:12:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 05:14:41 +0100sadmax(~user@64.130.91.66) (Ping timeout: 248 seconds)
2024-10-28 05:15:23 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2024-10-28 05:23:16 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 05:27:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 05:27:56 +0100ZLima12(~zlima12@user/meow/ZLima12) ()
2024-10-28 05:29:37 +0100ZLima12(~zlima12@user/meow/ZLima12) ZLima12
2024-10-28 05:38:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 05:40:02 +0100CrunchyFlakes(~CrunchyFl@31.19.233.78) (Ping timeout: 255 seconds)
2024-10-28 05:40:26 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
2024-10-28 05:43:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
2024-10-28 05:49:55 +0100rosco(~rosco@60.53.5.183) rosco
2024-10-28 05:54:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 05:55:50 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-10-28 05:58:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-28 05:59:08 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich)
2024-10-28 05:59:26 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-28 06:01:15 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 06:03:49 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-10-28 06:05:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-28 06:16:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 06:20:58 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 06:21:38 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 06:25:48 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2024-10-28 06:30:04 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-10-28 06:30:45 +0100rosco(~rosco@60.53.5.183) (Quit: Lost terminal)
2024-10-28 06:32:00 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 06:35:16 +0100famubu(~julinuser@14.139.174.50) (Quit: leaving)
2024-10-28 06:36:39 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-28 06:47:37 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 06:52:08 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 06:59:09 +0100araujo(~araujo@216.73.163.215) (Ping timeout: 260 seconds)
2024-10-28 07:03:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 07:03:51 +0100euleritian(~euleritia@77.22.252.56) (Read error: Connection reset by peer)
2024-10-28 07:04:56 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 07:07:01 +0100floyza(~gavin@h69-11-148-150.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
2024-10-28 07:09:43 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 07:16:37 +0100alp(~alp@2001:861:e3d6:8f80:8a65:ef8c:a08:456c)
2024-10-28 07:16:37 +0100alp(~alp@2001:861:e3d6:8f80:8a65:ef8c:a08:456c) (Changing host)
2024-10-28 07:16:37 +0100alp(~alp@user/alp) alp
2024-10-28 07:17:34 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-28 07:19:38 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 07:21:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 07:21:37 +0100rvalue-(~rvalue@user/rvalue) rvalue
2024-10-28 07:23:59 +0100rvalue(~rvalue@user/rvalue) (Ping timeout: 255 seconds)
2024-10-28 07:24:02 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-10-28 07:25:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 07:25:42 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 07:25:48 +0100rvalue-rvalue
2024-10-28 07:28:27 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 07:30:17 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-10-28 07:30:38 +0100euleritian(~euleritia@dynamic-176-006-136-140.176.6.pool.telefonica.de)
2024-10-28 07:32:46 +0100Natch(~natch@c-92-34-7-158.bbcust.telenor.se) Natch
2024-10-28 07:32:59 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-28 07:35:14 +0100euleritian(~euleritia@dynamic-176-006-136-140.176.6.pool.telefonica.de) (Ping timeout: 255 seconds)
2024-10-28 07:40:27 +0100euleritian(~euleritia@dynamic-176-006-147-100.176.6.pool.telefonica.de)
2024-10-28 07:43:44 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 07:48:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 07:59:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 08:00:03 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-10-28 08:00:43 +0100caconym(~caconym@user/caconym) caconym
2024-10-28 08:05:26 +0100anpad(~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in)
2024-10-28 08:05:46 +0100anpad(~pandeyan@user/anpad) anpad
2024-10-28 08:06:13 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-28 08:11:44 +0100michalz(~michalz@185.246.207.200)
2024-10-28 08:20:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 08:21:58 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-10-28 08:22:13 +0100euleritian(~euleritia@dynamic-176-006-147-100.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-28 08:22:33 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 08:25:16 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 08:27:42 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-28 08:29:39 +0100mari-estel(~mari-este@user/mari-estel) (Ping timeout: 252 seconds)
2024-10-28 08:33:00 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-10-28 08:37:49 +0100Square2(~Square4@user/square) Square
2024-10-28 08:38:25 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-10-28 08:40:16 +0100acidjnk_new(~acidjnk@p200300d6e72cfb16704d6a71e163a8ef.dip0.t-ipconnect.de) acidjnk
2024-10-28 08:42:44 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2024-10-28 08:42:46 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-28 08:42:52 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2024-10-28 08:44:04 +0100Lord_of_Life_Lord_of_Life
2024-10-28 08:44:57 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
2024-10-28 08:49:27 +0100ft(~ft@p4fc2a216.dip0.t-ipconnect.de) (Quit: leaving)
2024-10-28 08:56:15 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2024-10-28 09:05:00 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 09:09:17 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2024-10-28 09:09:17 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-28 09:10:08 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 09:11:28 +0100jespada(~jespada@222.203-67-87.adsl-dyn.isp.belgacom.be) jespada
2024-10-28 09:15:01 +0100 <mari-estel> >> :t \f g a -> f a >>= g
2024-10-28 09:15:09 +0100 <mari-estel> > :t \f g a -> f a >>= g
2024-10-28 09:15:10 +0100 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
2024-10-28 09:16:45 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-28 09:16:46 +0100 <jackdk> I think you have to use yahb to use :t , maybe?
2024-10-28 09:16:54 +0100 <jackdk> % :t \f g a -> f a >>= g
2024-10-28 09:16:54 +0100 <yahb2> \f g a -> f a >>= g ; :: Monad m => (t -> m a) -> (a -> m b) -> t -> m b
2024-10-28 09:17:04 +0100 <jackdk> mari-estel: ^
2024-10-28 09:17:13 +0100 <mari-estel> > 9
2024-10-28 09:17:15 +0100 <lambdabot> 9
2024-10-28 09:17:21 +0100 <mari-estel> lame
2024-10-28 09:17:47 +0100 <Leary> :t \f g a -> f a >>= g
2024-10-28 09:17:48 +0100 <lambdabot> Monad m => (t -> m a) -> (a -> m b) -> t -> m b
2024-10-28 09:18:19 +0100Guest53(~Guest53@210.160.217.2)
2024-10-28 09:20:25 +0100alp(~alp@user/alp) (Remote host closed the connection)
2024-10-28 09:21:43 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2024-10-28 09:23:16 +0100ubert(~Thunderbi@77.119.173.172.wireless.dyn.drei.com) ubert
2024-10-28 09:24:03 +0100euleritian(~euleritia@dynamic-176-003-073-168.176.3.pool.telefonica.de)
2024-10-28 09:25:46 +0100Guest53(~Guest53@210.160.217.2) (Quit: Client closed)
2024-10-28 09:26:10 +0100econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-10-28 09:26:28 +0100 <mari-estel> it does not make life easier to newcomers to have to guess the interpreter here
2024-10-28 09:28:46 +0100 <dminuoso> monochrom: Oh books can be so incohesive..
2024-10-28 09:29:10 +0100euleritian(~euleritia@dynamic-176-003-073-168.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-28 09:29:28 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 09:29:34 +0100briandaed(~root@185.234.210.211.r.toneticgroup.pl)
2024-10-28 09:29:56 +0100 <dminuoso> So I would `s/are/can be/`
2024-10-28 09:30:23 +0100 <jackdk> mari-estel: You may prefer to use ghcup (https://www.haskell.org/ghcup/ ) to install the Glasgow Haskell Compiler locally, or try the https://play.haskell.org sandbox
2024-10-28 09:30:52 +0100 <mari-estel> yeah. Afterwards, tell me also something i don't know
2024-10-28 09:30:53 +0100 <dminuoso> Also, you can use yahb2 and lambdabot in a query/pm/direct message if you prefer.
2024-10-28 09:31:47 +0100 <dminuoso> mari-estel: Okay do you have a better suggestion for how to make the interpreter guesseable (whatever that means for you)?
2024-10-28 09:32:39 +0100 <mari-estel> thanks dminuoso. For instance, i did not know my english was so unintelligible
2024-10-28 09:38:10 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-28 09:39:05 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 09:39:23 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2024-10-28 09:49:44 +0100 <mauke> :t (<=<)
2024-10-28 09:49:45 +0100 <lambdabot> Monad m => (b -> m c) -> (a -> m b) -> a -> m c
2024-10-28 09:50:07 +0100 <mauke> :t (>=>)
2024-10-28 09:50:09 +0100 <lambdabot> Monad m => (a -> m b) -> (b -> m c) -> a -> m c
2024-10-28 09:50:29 +0100 <mari-estel> "planet earth is blue, and there's nothing i can do"
2024-10-28 09:51:36 +0100 <mauke> it's not the english, it's the ellipsis
2024-10-28 09:56:11 +0100 <kaol> I wish Monad type class used >=> instead of >>=.
2024-10-28 09:56:34 +0100 <Franciman> today i'm in the mood for some post rock
2024-10-28 09:56:36 +0100 <mari-estel> oh nonononoh, that's frowned upon!
2024-10-28 09:56:38 +0100 <Franciman> ops sorry
2024-10-28 09:57:07 +0100 <mari-estel> no worries, it's the >=> to be frowned upon really. Rock is just our task
2024-10-28 10:00:24 +0100mari-estel(~mari-este@user/mari-estel) (Quit: on the move)
2024-10-28 10:01:11 +0100 <kaol> Kleisli is so aesthetically symmetric and it looks like regular function composition with some extra sprinkles added on it.
2024-10-28 10:03:29 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-10-28 10:04:38 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-10-28 10:11:01 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-28 10:14:16 +0100alp(~alp@2001:861:e3d6:8f80:fb17:c519:ba02:ac60)
2024-10-28 10:18:56 +0100chele(~chele@user/chele) chele
2024-10-28 10:21:47 +0100 <tomsmeding> also the monad laws get
2024-10-28 10:21:54 +0100 <tomsmeding> *much nicer (sorry for the newline)
2024-10-28 10:23:02 +0100 <kaol> For sure. One look and you go "oh that's just a monoid". Not going to happen with the bind formulation.
2024-10-28 10:23:42 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 272 seconds)
2024-10-28 10:25:36 +0100acidjnk_new(~acidjnk@p200300d6e72cfb16704d6a71e163a8ef.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-10-28 10:26:18 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-28 10:29:10 +0100 <Leary> f is a Monad iff `a b :-> a -> f b` is a Category; f is an Applicative iff `a b :-> f (a -> b)` is a Category. The standard formulation of their laws is abysmal, and should be eradicated from the documentation.
2024-10-28 10:30:18 +0100Guest13(~Guest13@2607:fea8:539d:9a00:51a6:57e6:262a:18cb)
2024-10-28 10:37:30 +0100rvalue-(~rvalue@user/rvalue) rvalue
2024-10-28 10:39:09 +0100rvalue(~rvalue@user/rvalue) (Ping timeout: 276 seconds)
2024-10-28 10:43:20 +0100rvalue-rvalue
2024-10-28 10:53:01 +0100ubert(~Thunderbi@77.119.173.172.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2024-10-28 11:01:33 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 11:01:54 +0100Guest13(~Guest13@2607:fea8:539d:9a00:51a6:57e6:262a:18cb) (Quit: Client closed)
2024-10-28 11:02:34 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 252 seconds)
2024-10-28 11:05:48 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-28 11:07:03 +0100 <dminuoso> Leary: What does `a b :-> a -> f b` denote?
2024-10-28 11:08:50 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2024-10-28 11:09:29 +0100 <ncf> a function with type Type → Type → Type
2024-10-28 11:09:32 +0100 <Leary> :-> is \mapsTo, it's a mathematician's equivalent of lambda syntax. The closest Haskell equivalent of that type level function being `Kleisli`, and the other being `Tannen`.
2024-10-28 11:12:33 +0100 <dminuoso> Leary: Is the expression: "`a b :-> ...` is a category" something category theorists normally say?
2024-10-28 11:12:50 +0100 <dminuoso> I'm just surprised because I have not seen it before.
2024-10-28 11:13:48 +0100 <Leary> Note that I specifically wrote Category, not category.
2024-10-28 11:15:15 +0100 <Leary> (I wasn't able to study CT in university, and haven't gotten around to studying it since, so I don't really know what they say)
2024-10-28 11:15:26 +0100 <dminuoso> Then I'm slightly more confused.
2024-10-28 11:15:34 +0100 <dminuoso> What is the difference between Category and category?
2024-10-28 11:16:53 +0100habib(~habib@146.70.119.186) (Ping timeout: 248 seconds)
2024-10-28 11:20:13 +0100 <ncf> Haskell's Category is a typeclass for defining a category whose type of objects is Type
2024-10-28 11:20:59 +0100 <ncf> hm i guess that's not true any more, the argument to Category can have kind k → k → Type
2024-10-28 11:21:00 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-28 11:21:19 +0100 <dminuoso> So :-> is meant as an actual type constructor?
2024-10-28 11:21:23 +0100Nixkernal(~Nixkernal@52.131.63.188.dynamic.cust.swisscom.net) Nixkernal
2024-10-28 11:21:50 +0100 <ncf> but anyway k is the type of objects there, so when you say (λ a b → a → f b) is a Category you mean the type of objects of that category is Type and the morphisms between a and b are functions a → f b
2024-10-28 11:22:00 +0100 <ncf> dminuoso: no, that's just ↦
2024-10-28 11:22:07 +0100 <ncf> lambda abstraction
2024-10-28 11:22:18 +0100 <dminuoso> I dont understand what that original statement by Leary means exactly.
2024-10-28 11:22:40 +0100 <ncf> (a b ↦ a → f b) is Kleisli f
2024-10-28 11:22:46 +0100 <dminuoso> How can "some abstract mathematical notation" "be a" (instance of?) Category?
2024-10-28 11:22:56 +0100 <ncf> Monad f ⇔ Category (Kleisli f)
2024-10-28 11:22:58 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 11:23:43 +0100mceresa(~mceresa@user/mceresa) (Ping timeout: 245 seconds)
2024-10-28 11:24:08 +0100 <ncf> well, we're talking about what the notation denotes, not the notation itself
2024-10-28 11:25:06 +0100 <Leary> You can mentally replace the type-function expressions with `Kleisli f` and `Tannen f (->)`, I just didn't want to confuse my meta-notation with language constructs. They /are/ Categories in the same sense that many types /are/ Functor: their instance exists and is unique.
2024-10-28 11:25:53 +0100 <dminuoso> Instead I was confused by the mixture of language and non-language constructs. :-)
2024-10-28 11:26:08 +0100ubert(~Thunderbi@178.165.189.55.wireless.dyn.drei.com) ubert
2024-10-28 11:27:06 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
2024-10-28 11:27:42 +0100euleritian(~euleritia@dynamic-176-003-032-186.176.3.pool.telefonica.de)
2024-10-28 11:30:47 +0100euleritian(~euleritia@dynamic-176-003-032-186.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-28 11:31:04 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 11:33:43 +0100alphazone(~alphazone@2.219.56.221) (Ping timeout: 264 seconds)
2024-10-28 11:35:45 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-28 11:38:06 +0100mceresa(~mceresa@user/mceresa) mceresa
2024-10-28 11:43:38 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-10-28 11:48:02 +0100alphazone(~alphazone@2.219.56.221)
2024-10-28 11:53:20 +0100 <xelxebar> I think there's a typo in https://wiki.haskell.org/Catamorphisms#Laws
2024-10-28 11:53:21 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 11:54:15 +0100 <xelxebar> cata-fusion as stated on the wiki only applies to an algebra endomorphism.
2024-10-28 11:54:32 +0100 <xelxebar> However, it should really apply to any algebra homomorphism.
2024-10-28 11:55:17 +0100 <xelxebar> Just for thoroughness, I tracked down the original paper where this was stated, and it indeed refers to a general algebra homomorphism.
2024-10-28 11:55:54 +0100acidjnk_new(~acidjnk@p200300d6e72cfb165c062c18fa4bedb4.dip0.t-ipconnect.de) acidjnk
2024-10-28 11:56:21 +0100 <xelxebar> Should say that `f . phi = psi . fmap f` implies `f . cata phi = cata psi`.
2024-10-28 11:57:36 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-28 11:58:25 +0100 <xelxebar> Looks like the wiki is copying the error from E. Kmett reference, which is a defunct URL and needs to be viewed from archive.org.
2024-10-28 11:58:50 +0100 <ncf> xelxebar: what's the original paper?
2024-10-28 11:59:46 +0100xff0x(~xff0x@2405:6580:b080:900:b00a:f648:5747:c396)
2024-10-28 12:00:47 +0100 <xelxebar> ncf: Varmo Vene, Categorical Programming with Inductive and Coinductive Types. 2000.
2024-10-28 12:01:52 +0100kuribas(~user@ptr-17d51epnnpcnu3v8qjj.18120a2.ip6.access.telenet.be) kuribas
2024-10-28 12:02:54 +0100 <xelxebar> Well, I'm not actually sure that's the earliest original, but it's what I could track down.
2024-10-28 12:05:32 +0100 <xelxebar> And, well, the more general cata-fusion law itself follows directly from the definition of algebra homomorphism and cata as being initial.
2024-10-28 12:06:10 +0100 <ncf> xelxebar: ok, fixed it and added that reference
2024-10-28 12:06:19 +0100 <xelxebar> Cheers!
2024-10-28 12:17:43 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-28 12:19:39 +0100alexherbo2(~alexherbo@2a02-8440-3406-c072-f489-680b-9cb7-dfd8.rev.sfr.net) alexherbo2
2024-10-28 12:30:10 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-10-28 12:33:08 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2024-10-28 12:35:32 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-28 12:35:58 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 12:40:10 +0100mari-estel(~mari-este@user/mari-estel) (Quit: shitty system)
2024-10-28 12:41:09 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-10-28 12:42:18 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-10-28 12:43:46 +0100habib(~habib@185.195.232.169) habib
2024-10-28 12:43:49 +0100rosco(~rosco@60.53.5.183) rosco
2024-10-28 12:44:59 +0100euleritian(~euleritia@dynamic-176-003-032-186.176.3.pool.telefonica.de)
2024-10-28 12:47:34 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder
2024-10-28 12:47:47 +0100zzz(~z@user/zero) (Ping timeout: 252 seconds)
2024-10-28 12:48:32 +0100zero(~z@user/zero) zero
2024-10-28 12:53:35 +0100scaniatrucker(~user@78.56.98.5) scaniatrucker
2024-10-28 12:55:26 +0100jespada(~jespada@222.203-67-87.adsl-dyn.isp.belgacom.be) (Quit: My Mac has gone to sleep. ZZZzzz…)
2024-10-28 12:59:13 +0100euleritian(~euleritia@dynamic-176-003-032-186.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-28 12:59:30 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 13:02:35 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 13:06:49 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 244 seconds)
2024-10-28 13:12:07 +0100sinbad(~sinbad@user/sinbad) Sinbad
2024-10-28 13:13:24 +0100Nixkernal(~Nixkernal@52.131.63.188.dynamic.cust.swisscom.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-10-28 13:16:15 +0100 <sinbad> Let's say I have two different implementations of the function foo with two different sets of dependencies. Is it possible to switch between the too foo-s using only cabal's flags but not CPP in the source files?
2024-10-28 13:17:54 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-10-28 13:18:19 +0100 <haskellbridge> <sm> I think so? By selecting different deps and source files in the cabal file
2024-10-28 13:18:22 +0100 <tomsmeding> sinbad: based on cabal flags you can expose or not expose certain modules
2024-10-28 13:18:37 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2024-10-28 13:19:07 +0100 <tomsmeding> the same way you switch between dependency sets (with the `if` syntax in a .cabal file), you can also put exposed-modules: (and, indeed, other-modules:) in such an `if`
2024-10-28 13:19:09 +0100 <haskellbridge> <sm> will it add complexity and hassles for packaging/building ? Probably
2024-10-28 13:19:13 +0100 <tomsmeding> yes
2024-10-28 13:19:28 +0100 <tomsmeding> better test all configurations of your package :)
2024-10-28 13:20:54 +0100YoungFrog(~youngfrog@2a02:a03f:c9db:fc00:7868:ed54:6992:80f4) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
2024-10-28 13:21:17 +0100YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) youngfrog
2024-10-28 13:21:42 +0100Nixkernal(~Nixkernal@52.131.63.188.dynamic.cust.swisscom.net) Nixkernal
2024-10-28 13:23:51 +0100 <sinbad> tomsmeding: I know how to use cabal's flag. If the module name change I need CPP in the source. I want to do the switch without using CPP.
2024-10-28 13:24:35 +0100 <tomsmeding> sinbad: good point. Put the two module versions in two separate source directories, and switch an additional hs-source-dirs: option instead?
2024-10-28 13:24:44 +0100 <tomsmeding> alternatively, backpack can rename modules, I think
2024-10-28 13:25:12 +0100 <sinbad> That is not changing the module name. To put in a different way, is there a strict mapping of source file names and module names?
2024-10-28 13:26:23 +0100 <tomsmeding> what I mean is, assuming your module is called Foo: * Put version 1 in src1/Foo.hs; * Put version 2 in src2/Foo.hs; * In your-lib.cabal, switch between `hs-source-dirs: src1` and `hs-source-dirs: src2` based on the flag
2024-10-28 13:26:36 +0100 <tomsmeding> then src1/Foo.hs and src2/Foo.hs are both independently valid, without any CPP
2024-10-28 13:26:48 +0100 <haskellbridge> <sm> Yes - file names and module names (except the main file). But not file paths, as tomsmeding says
2024-10-28 13:27:46 +0100 <haskellbridge> <sm> +are connected
2024-10-28 13:28:25 +0100 <tomsmeding> well, if the module is Foo.Bar, then it needs to be src1/Foo/Bar.hs and src2/Foo/Bar.hs
2024-10-28 13:28:42 +0100 <tomsmeding> so the paths are definitely connected, but you can have any number of "base directories" in which ghc can search for the proper paths
2024-10-28 13:28:51 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2024-10-28 13:29:11 +0100 <haskellbridge> <sm> ah, true
2024-10-28 13:29:13 +0100 <sinbad> tomsmeding: haskellbridge" Okay, I thought of that. How to set up the related cabal fields src/ (the rest of my libs), src1/ and src2/?
2024-10-28 13:29:30 +0100 <tomsmeding> how are you switching the dependencies?
2024-10-28 13:29:45 +0100 <tomsmeding> with the same syntax, except hs-source-dirs: instead of build-depends: in the `if` ;)
2024-10-28 13:30:34 +0100 <tomsmeding> sinbad: https://cabal.readthedocs.io/en/stable/cabal-package-description-file.html#configurations
2024-10-28 13:31:00 +0100 <sinbad> Oops, in hs-source-dirs I need to list multiple source dirs, right?
2024-10-28 13:31:19 +0100 <tomsmeding> you can have multiple hs-source-dirs directives; their lists get concatenated
2024-10-28 13:31:38 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-10-28 13:31:56 +0100euleritian(~euleritia@dynamic-176-003-032-186.176.3.pool.telefonica.de)
2024-10-28 13:35:27 +0100 <sinbad> tomsmeding: right, I'll go this way. thanks. Aside, before coming here I did read the docs - it is not always straightforwardly helpful
2024-10-28 13:35:58 +0100 <tomsmeding> sinbad: I agree that the cabal docs sometimes make it hard to find the information that you need; I myself ran into this multiple times
2024-10-28 13:36:12 +0100 <tomsmeding> almost everything is _there_, but not always in the expected format or place
2024-10-28 13:36:32 +0100 <sinbad> tomsmeding: good to know I am not alone :-)
2024-10-28 13:36:49 +0100 <tomsmeding> furthermore, they are mostly _reference_ docs, i.e. you can find definitions of directives, but generally not (with some exceptions) answers to questions like yours
2024-10-28 13:38:29 +0100 <tomsmeding> sinbad: for completeness, mixins would be another way to accomplish this: https://cabal.readthedocs.io/en/stable/cabal-package-description-file.html#pkg-field-mixins
2024-10-28 13:39:04 +0100 <tomsmeding> they allow you to depend on a library but rename one or more modules from that library on import
2024-10-28 13:40:01 +0100 <lxsameer> any suggestion for a templating engine for haskell?
2024-10-28 13:40:35 +0100 <tomsmeding> the trick would then be to put the Foo versions in a separate internal sublibrary ( https://cabal.readthedocs.io/en/stable/cabal-package-description-file.html#library ) as two regular, different modules with different names (Foo1 and Foo2, say), and then depending on your flag, depend on that sublibrary with a mixin renaming the proper Foo version to "Foo", and then re-export Foo
2024-10-28 13:40:38 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 255 seconds)
2024-10-28 13:40:52 +0100euleritian(~euleritia@dynamic-176-003-032-186.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-28 13:41:06 +0100 <tomsmeding> lxsameer: a templating engine for what? text, html, haskell?
2024-10-28 13:41:10 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 13:42:23 +0100 <lxsameer> tomsmeding: text
2024-10-28 13:42:29 +0100 <sinbad> tomsmeding: Thank you, I am going to look into mixing too.
2024-10-28 13:43:16 +0100 <tomsmeding> lxsameer: I've used this before https://hackage.haskell.org/package/mustache but not sure if that's what you were looking for
2024-10-28 13:43:44 +0100scaniatrucker(~user@78.56.98.5) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4))
2024-10-28 13:44:18 +0100 <tomsmeding> https://github.com/tomsmeding/pastebin-haskell/blob/03e09c078a34e9bbf3fe8745aaee1917d8474de3/paste…
2024-10-28 13:44:41 +0100 <lxsameer> tomsmeding: thanks, that would be helpful
2024-10-28 13:54:35 +0100rosco(~rosco@60.53.5.183) (Quit: Lost terminal)
2024-10-28 13:56:53 +0100 <sinbad> tomsmeding: Not sure that the mixings would cut it, since, in my case, the difference between the dependencies is enormous. It looks to me that with mixings both versions are built. Am I wrong?
2024-10-28 13:58:04 +0100 <haskellbridge> <sm> I’m curious of this makes sense, if the differences are that large
2024-10-28 13:58:06 +0100 <haskellbridge> <sm> * if
2024-10-28 13:58:24 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-28 13:58:39 +0100 <haskellbridge> <sm> * doing this in one package
2024-10-28 14:01:33 +0100 <haskellbridge> <sm> * when the differences are so
2024-10-28 14:02:05 +0100 <haskellbridge> <sm> ack, sorry, irc edits 🚫
2024-10-28 14:02:38 +0100 <haskellbridge> <sm> if only the bridge could reject them
2024-10-28 14:03:15 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-10-28 14:03:32 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 14:04:07 +0100 <sinbad> haskellbridge: well, it is a executable, that is a utility whose libraries are not of public interest.
2024-10-28 14:04:17 +0100 <haskellbridge> <sm> and my last comment may have conflated two threads of discussion, ignore if it doesn’t make sense
2024-10-28 14:05:29 +0100 <sinbad> haskellbridge: I think it was addressed to me. At least I made sense of it :-)
2024-10-28 14:06:03 +0100 <haskellbridge> <sm> alright no I’m still on topic, good :) sinbad, why do you need conditional source ?
2024-10-28 14:07:38 +0100 <tomsmeding> sinbad: oh hm, you're correct -- I forgot about the conditional dependencies part
2024-10-28 14:08:00 +0100 <tomsmeding> then you'd also have to switch dependencies inside that sublibrary, but at that point it's basically the same as the hs-source-dirs approach but with more ceremony
2024-10-28 14:08:12 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-28 14:09:00 +0100 <sinbad> haskellbridge: Right, that was my conclusion too.
2024-10-28 14:10:46 +0100sinbad(~sinbad@user/sinbad) (Quit: Leaving.)
2024-10-28 14:11:00 +0100 <tomsmeding> sm: got https://xkcd.com/2337/ vibes there :)
2024-10-28 14:11:27 +0100 <tomsmeding> ( https://ircbrowse.tomsmeding.com/browse/lchaskell?events_page=13900 )
2024-10-28 14:13:05 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-28 14:13:43 +0100rosco(~rosco@60.53.5.183) rosco
2024-10-28 14:14:01 +0100 <haskellbridge> <sm> Indeed
2024-10-28 14:14:29 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 14:14:32 +0100 <haskellbridge> <sm> well sinbad concluded something in a hurry
2024-10-28 14:14:37 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-28 14:14:54 +0100paul_j(~user@8.190.187.81.in-addr.arpa)
2024-10-28 14:14:56 +0100 <haskellbridge> <sm> another satisfied customer! NEXT!
2024-10-28 14:16:38 +0100alioguzhan(~Thunderbi@78.173.93.98) (Ping timeout: 245 seconds)
2024-10-28 14:16:44 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-28 14:22:37 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-28 14:27:59 +0100ystael(~ystael@user/ystael) ystael
2024-10-28 14:27:59 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2024-10-28 14:34:20 +0100weary-traveler(~user@user/user363627) user363627
2024-10-28 14:39:27 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-28 14:50:41 +0100ash3en(~Thunderbi@89.246.174.164) ash3en
2024-10-28 14:52:00 +0100 <ash3en> Hi, would you use Binary.Get or attoparsec for parsing OSC/UDP?
2024-10-28 14:52:51 +0100 <ash3en> i don't need to decode it, just want to reorder the values and maybe switch to a different osc-address
2024-10-28 14:56:32 +0100LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 15:00:41 +0100 <tomsmeding> ash3en: if you care about high-performance parsing, also consider `flatparse`
2024-10-28 15:02:15 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2024-10-28 15:05:24 +0100spew(~spew@155.133.15.121) spew
2024-10-28 15:06:09 +0100 <ash3en> ah, oversaw that. But afaik OSC uses big endian and flatparse supports only LE. however I am not that deep in the topic yet to know if this is really a knockout for flatparse use
2024-10-28 15:13:28 +0100LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 15:15:19 +0100 <tomsmeding> ash3en: if you need big-endian, you could always cherry-pick the code that does that from other libraries :p
2024-10-28 15:15:50 +0100 <tomsmeding> on a LE machine, you need to get fairly clever to do better than just picking invididual bytes and shift-oring them into the result
2024-10-28 15:18:09 +0100 <tomsmeding> (with SIMD shuffle instructions you can do better, but GHC doesn't even support emitting those on the native codegen backend, only on LLVM)
2024-10-28 15:18:40 +0100alp(~alp@2001:861:e3d6:8f80:fb17:c519:ba02:ac60) (Remote host closed the connection)
2024-10-28 15:19:50 +0100 <ash3en> got to do more research apparently :D
2024-10-28 15:20:25 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2024-10-28 15:23:04 +0100 <merijn> ash3en: Both should do ok, tbh
2024-10-28 15:24:06 +0100billchenchina(~billchenc@p54090-ipngnfx01osakakita.osaka.ocn.ne.jp) billchenchina
2024-10-28 15:25:08 +0100 <ash3en> I think with binary as I understand it now I have some trouble to parse the kind of arbitrary nul-bytes OSC uses here and there, eg. after the typetag byte or with strings. But maybe I just don't understand it to the fullest yet
2024-10-28 15:25:10 +0100billchenchina(~billchenc@p54090-ipngnfx01osakakita.osaka.ocn.ne.jp) (Max SendQ exceeded)
2024-10-28 15:27:00 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-10-28 15:34:58 +0100weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2024-10-28 15:35:16 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
2024-10-28 15:39:45 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-10-28 15:40:22 +0100euleritian(~euleritia@dynamic-176-003-032-186.176.3.pool.telefonica.de)
2024-10-28 15:42:16 +0100notzmv(~daniel@user/notzmv) notzmv
2024-10-28 15:43:21 +0100zero(~z@user/zero) (Ping timeout: 252 seconds)
2024-10-28 15:47:47 +0100LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 15:48:51 +0100BolzmannPain2(~BolzmannP@2a0a-a546-8e55-1-e8d-cf62-3559-6bea.ipv6dyn.netcologne.de)
2024-10-28 15:50:39 +0100sadmax(~user@64.130.91.66)
2024-10-28 15:51:53 +0100weary-traveler(~user@user/user363627) user363627
2024-10-28 15:53:10 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2024-10-28 15:53:32 +0100Vq(~vq@81-226-38-201-no600.tbcn.telia.com) Vq
2024-10-28 15:54:59 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 15:57:44 +0100BolzmannPain2(~BolzmannP@2a0a-a546-8e55-1-e8d-cf62-3559-6bea.ipv6dyn.netcologne.de) (Quit: Client closed)
2024-10-28 15:58:07 +0100BolzmannPain(~BolzmannP@user/BolzmannPain) BolzmannPain
2024-10-28 15:59:06 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-28 15:59:19 +0100sadmax(~user@64.130.91.66) (Ping timeout: 260 seconds)
2024-10-28 16:00:37 +0100lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 248 seconds)
2024-10-28 16:02:25 +0100acidjnk_new(~acidjnk@p200300d6e72cfb165c062c18fa4bedb4.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2024-10-28 16:07:16 +0100zero(~z@user/zero) zero
2024-10-28 16:09:42 +0100acidjnk_new(~acidjnk@p200300d6e72cfb16402229c84613898e.dip0.t-ipconnect.de) acidjnk
2024-10-28 16:15:14 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 260 seconds)
2024-10-28 16:17:09 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-28 16:17:32 +0100euleritian(~euleritia@dynamic-176-003-032-186.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-28 16:17:50 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 16:20:38 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-10-28 16:24:30 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-10-28 16:24:31 +0100BolzmannPain(~BolzmannP@user/BolzmannPain) (Quit: Client closed)
2024-10-28 16:24:48 +0100BolzmannPain(~BolzmannP@user/BolzmannPain) BolzmannPain
2024-10-28 16:25:06 +0100euleritian(~euleritia@dynamic-176-003-056-049.176.3.pool.telefonica.de)
2024-10-28 16:26:38 +0100ash3en(~Thunderbi@89.246.174.164) (Read error: Connection reset by peer)
2024-10-28 16:26:55 +0100ash3en(~Thunderbi@89.246.174.164) ash3en
2024-10-28 16:30:00 +0100EvanR(~EvanR@user/evanr) EvanR
2024-10-28 16:32:27 +0100sinbad(~sinbad@user/sinbad) Sinbad
2024-10-28 16:45:01 +0100myxos(~myxos@syn-065-028-251-121.res.spectrum.com) (Ping timeout: 252 seconds)
2024-10-28 16:47:09 +0100zero(~z@user/zero) (Ping timeout: 252 seconds)
2024-10-28 16:47:40 +0100LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 16:48:53 +0100zero(~z@user/zero) zero
2024-10-28 16:51:37 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Client Quit)
2024-10-28 16:54:24 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 16:58:58 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-28 16:59:11 +0100myxos(~myxos@syn-065-028-251-121.res.spectrum.com) myxokephale
2024-10-28 17:00:04 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-10-28 17:00:33 +0100euleritian(~euleritia@dynamic-176-003-056-049.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-28 17:00:51 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 17:01:23 +0100zero(~z@user/zero) (Ping timeout: 244 seconds)
2024-10-28 17:03:41 +0100BolzmannPain(~BolzmannP@user/BolzmannPain) (Quit: Client closed)
2024-10-28 17:04:29 +0100ash3en(~Thunderbi@89.246.174.164) (Quit: ash3en)
2024-10-28 17:06:56 +0100zero(~z@user/zero) zero
2024-10-28 17:10:54 +0100hiredman(~hiredman@frontier1.downey.family) hiredman
2024-10-28 17:13:30 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-10-28 17:14:22 +0100mari-estel(~mari-este@user/mari-estel) (Ping timeout: 252 seconds)
2024-10-28 17:14:22 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-10-28 17:15:21 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-28 17:16:38 +0100acidjnk_new(~acidjnk@p200300d6e72cfb16402229c84613898e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-10-28 17:31:39 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder
2024-10-28 17:33:25 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-28 17:33:56 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 17:34:38 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 17:34:48 +0100acidjnk_new(~acidjnk@p200300d6e72cfb16a87636e44c055c5c.dip0.t-ipconnect.de) acidjnk
2024-10-28 17:39:14 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-10-28 17:43:27 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-28 17:45:01 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 17:45:02 +0100sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-10-28 17:45:35 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-28 17:45:35 +0100chele(~chele@user/chele) (Remote host closed the connection)
2024-10-28 17:48:19 +0100Ekho(~Ekho@user/ekho) (Quit: CORE ERROR, SYSTEM HALTED.)
2024-10-28 17:54:08 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2024-10-28 18:00:12 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 18:00:24 +0100fr33domlover(~fr33domlo@towards.vision) (Quit: The Lounge - https://thelounge.chat)
2024-10-28 18:02:48 +0100fr33domlover(~fr33domlo@towards.vision) fr33domlover
2024-10-28 18:04:21 +0100alexherbo2(~alexherbo@2a02-8440-3406-c072-f489-680b-9cb7-dfd8.rev.sfr.net) (Remote host closed the connection)
2024-10-28 18:04:37 +0100Ekho(~Ekho@user/ekho) Ekho
2024-10-28 18:05:01 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2024-10-28 18:11:08 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-28 18:17:12 +0100euphores(~SASL_euph@user/euphores) euphores
2024-10-28 18:20:36 +0100son0p(~ff@190.69.120.100) (Ping timeout: 272 seconds)
2024-10-28 18:27:21 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 18:29:02 +0100sshine(~simon@gordian.systems) sshine
2024-10-28 18:29:27 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
2024-10-28 18:29:45 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2024-10-28 18:31:48 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 244 seconds)
2024-10-28 18:32:54 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 260 seconds)
2024-10-28 18:34:35 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-28 18:36:51 +0100LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 18:36:55 +0100 <haskellbridge> <maralorn> In parser combinator libraries (concretely I am using Parsec) is there a smart way to say "expect 4 digits and parse them into an Int" the best I can come up with is "maybe (...error...) pure . readMaybe <$> count 4 digit" which does not satisfy me much. I feel like the read should know that it can’t fail.
2024-10-28 18:37:30 +0100 <haskellbridge> <maralorn> Huh, well, I guess I can just use "read" and hope …
2024-10-28 18:37:34 +0100 <Digit> 4 of me? ooh. oh. aw.
2024-10-28 18:39:43 +0100geekosauris wondering if replicateM fits here
2024-10-28 18:42:39 +0100 <geekosaur> ghci> parseTest (fmap (read :: String -> Int) (replicateM 4 digit)) "0123"
2024-10-28 18:42:39 +0100 <geekosaur> 123
2024-10-28 18:43:52 +0100 <EvanR> is "hope" necessary
2024-10-28 18:44:27 +0100 <EvanR> if digit parser is known to return digits on success, then read on a 4 digit string must succeed
2024-10-28 18:44:39 +0100 <geekosaur> ^
2024-10-28 18:44:47 +0100 <EvanR> maybe a slightly more extreme version of hoping that head [1,2,3,4] can't fail
2024-10-28 18:45:03 +0100rosco(~rosco@60.53.5.183) (Quit: Lost terminal)
2024-10-28 18:45:43 +0100 <EvanR> hope might need to be reintroduced when someone (such as yourself in 3 weeks) returns to the code and makes a change, forgetting this whole conversation, breaking something
2024-10-28 18:45:51 +0100 <geekosaur> also I misread what the problem was, sorry
2024-10-28 18:46:35 +0100 <haskellbridge> <maralorn> Well, just posting the question helped me in refactoring this.
2024-10-28 18:46:43 +0100 <EvanR> adding maybe (error ...) pure to a computation that can't fail is useless
2024-10-28 18:47:00 +0100econo_(uid147250@id-147250.tinside.irccloud.com)
2024-10-28 18:47:52 +0100 <geekosaur> another success for rubber duck debugging?
2024-10-28 18:49:02 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-28 18:49:36 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2024-10-28 18:50:31 +0100 <EvanR> > read "1234" :: Int
2024-10-28 18:50:33 +0100 <lambdabot> 1234
2024-10-28 18:50:37 +0100 <EvanR> > read "" :: Int
2024-10-28 18:50:38 +0100 <lambdabot> *Exception: Prelude.read: no parse
2024-10-28 18:51:13 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
2024-10-28 18:51:14 +0100 <EvanR> zero digit string not supported
2024-10-28 18:51:51 +0100euleritian(~euleritia@dynamic-176-003-056-049.176.3.pool.telefonica.de)
2024-10-28 18:52:18 +0100 <geekosaur> which is irrelevant if they're parsing exactly 4 digits…
2024-10-28 18:53:19 +0100 <sshine> I just got an email that reminded me to bump a Haskell package I haven't touched for a year or two. in the meantime I've rabbit-holed quite a lot on NixOS, but not using Haskell. as with anything in Nix, the sub-space of Haskell dev configuration is its own fractal. I followed a flowchart that suggested I should go with pkgs.haskellPackages.developPackage, and consulting the NixOS.wiki, I managed to build
2024-10-28 18:53:25 +0100 <sshine> a small default.nix with pkgs.haskellPackages.developPackage and pkgs.haskell.lib.addBuildTools that just worked in the first try, yay!
2024-10-28 18:55:49 +0100 <sshine> but I also realize that my need back then for using Stack has largely been superceded by Nix.
2024-10-28 18:56:13 +0100 <sshine> I think the only convenience I get now is muscle memory.
2024-10-28 18:56:18 +0100euleritian(~euleritia@dynamic-176-003-056-049.176.3.pool.telefonica.de) (Ping timeout: 252 seconds)
2024-10-28 18:57:06 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 18:57:55 +0100 <Franciman> sshine: stack is nowhere close to nix's flexibility
2024-10-28 18:57:57 +0100 <Franciman> tho
2024-10-28 18:59:25 +0100 <sshine> nix is nowhere close to the flexibility of a bowl of overcooked noodles!
2024-10-28 18:59:43 +0100 <c_wraith> noodles are pretty bad build systems, though
2024-10-28 18:59:46 +0100 <sshine> just so we get the flexibility ordering straight: stack < nix < overcooked noodles
2024-10-28 19:00:21 +0100 <geekosaur> eh, it's flexible, it's just not possible to understand how to access that
2024-10-28 19:01:08 +0100 <sshine> I've drunk the Nix koolaid, and I'm all in. but yeah, it's always pretty steep to learn how things work.
2024-10-28 19:01:44 +0100 <c_wraith> fwiw, I will do things like fromMaybe (error "you refactored valueThatWillNeverBeNothing and broke it") valueThatWillNeverBeNothing
2024-10-28 19:01:48 +0100 <sshine> I wish it were like finding a really good Haskell or Rust package. you go to the official documentation site, and the package's documentation is nicely formatted, easily searchable, and kind of works like a small tutorial not only to the package but to the problem space it fills.
2024-10-28 19:02:54 +0100 <sshine> ...because the author thought: I'll beat the second-best package because it was getting stale, and I'll do so by not only improving on the package's quality, but the documentation and the examples and the general availability. Nix isn't like that.
2024-10-28 19:02:54 +0100Square2(~Square4@user/square) (Ping timeout: 276 seconds)
2024-10-28 19:03:10 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-28 19:03:42 +0100 <sshine> I wonder if the Nix language will ever get a type system, or if that's a lost cause.
2024-10-28 19:05:01 +0100 <sshine> either way, I'm grateful that the package just works. changing the GHC packaage and re-testing, and it just fetches the newer GHC, recompiles dependencies, and passes test without a hitch. truly remarkable, and low effort, really.
2024-10-28 19:05:32 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2024-10-28 19:05:32 +0100 <sshine> (assuming I'm already on the 95th floor of Nix Towers)
2024-10-28 19:05:37 +0100 <haskellbridge> <Bowuigi> sshine The strongest argument against that is that nixpkgs is a stupidly large record (100k fields pretty much)
2024-10-28 19:06:45 +0100 <sshine> Bowuigi: I see that some people try to talk about schemas. surely one could imagine gradual/optional typing?
2024-10-28 19:06:52 +0100 <haskellbridge> <Bowuigi> It could work with a row typed lang with smalltt level performance tho
2024-10-28 19:06:53 +0100vglfr(~vglfr@c-73-250-25-113.hsd1.md.comcast.net) (Ping timeout: 255 seconds)
2024-10-28 19:07:04 +0100 <sshine> what's smalltt?
2024-10-28 19:07:42 +0100vglfr(~vglfr@2607:fb91:1481:17a0:ac39:6af7:4dd8:d9b1) vglfr
2024-10-28 19:07:54 +0100 <haskellbridge> <Bowuigi> https://github.com/AndrasKovacs/smalltt the fastest dependently typed lang around
2024-10-28 19:08:08 +0100 <haskellbridge> <Bowuigi> By the author of flatparse
2024-10-28 19:08:26 +0100 <dolio> Is it faster than ATS?
2024-10-28 19:08:33 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 19:09:20 +0100 <haskellbridge> <Bowuigi> Typechecking should be, evaluation depends on whether ATS is being compiled or interpreted and the size of the program
2024-10-28 19:10:11 +0100 <haskellbridge> <Bowuigi> Gradual typing is a bad idea that happened to barely work a few times. Combine that with union types and you get a type system that is easy to render useless or distracting (like TypeScript)
2024-10-28 19:11:55 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2024-10-28 19:11:56 +0100 <haskellbridge> <Bowuigi> Nix requires something like the lang I'm designing (F omega, row types, generic row operations, etc) but a bit simpler and way faster
2024-10-28 19:12:03 +0100vglfr(~vglfr@2607:fb91:1481:17a0:ac39:6af7:4dd8:d9b1) (Ping timeout: 252 seconds)
2024-10-28 19:12:40 +0100 <sshine> it occurs to me that Nix is particularly well-suited for row types
2024-10-28 19:12:41 +0100vglfr(~vglfr@2607:fb90:a837:c1df:ad6:1a51:e325:8c1) vglfr
2024-10-28 19:12:56 +0100 <sshine> sorry, vice versa
2024-10-28 19:14:28 +0100 <haskellbridge> <Bowuigi> Indeed, row types are supposed to work well with records and variants, and since Nix uses both extensively (mkForce, mkDefault and friends are variants that change the behaviour of record merging)
2024-10-28 19:14:48 +0100Nachtgespenst(~user@user/siracusa) (Quit: Bye!)
2024-10-28 19:16:13 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2024-10-28 19:16:41 +0100 <haskellbridge> <Bowuigi> The slowest parts of Nix are importing nixpkgs and actually building. We can fix the first one by, well, not using a huge record defined across a gazillion files. Separate the ecosystem into categories and import each separately, heavily reducing the IO operations and the execution time
2024-10-28 19:17:55 +0100 <haskellbridge> <Bowuigi> Building can't get much faster than it is now, maybe changing the shell helps but likely not much. As usual, other measures to make compilation quicker (ccache, using a faster linker, etc) could also help
2024-10-28 19:18:48 +0100 <dolio> ATS is a frankenstein's monster system with all kinds of low-levelish stuff.
2024-10-28 19:18:58 +0100 <dolio> And questionable amounts of actual dependent typing.
2024-10-28 19:19:19 +0100 <dolio> I think you can write things that are very fast, though.
2024-10-28 19:21:16 +0100 <haskellbridge> <Bowuigi> Likely, yeah, smalltt is interpreted (very quickly, haven't yet seen benchmarks against Lua/LuaJIT tho) so it can't get low level and super optimized
2024-10-28 19:22:38 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-10-28 19:23:15 +0100euleritian(~euleritia@dynamic-176-006-145-033.176.6.pool.telefonica.de)
2024-10-28 19:33:22 +0100kuribas(~user@ptr-17d51epnnpcnu3v8qjj.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2024-10-28 19:37:18 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-28 19:40:50 +0100hamster(~ham@user/ham) ham
2024-10-28 19:41:12 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 19:42:51 +0100ham(~ham@user/ham) (Ping timeout: 252 seconds)
2024-10-28 19:46:01 +0100 <lxsameer> hey folks, do you know any library to interact with hackage API?
2024-10-28 19:47:07 +0100jumper149(~jumper149@base.felixspringer.xyz) jumper149
2024-10-28 19:48:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-10-28 19:51:28 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-10-28 19:59:16 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 20:00:01 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-10-28 20:00:27 +0100alioguzhan(~Thunderbi@78.173.91.30)
2024-10-28 20:00:38 +0100caconym(~caconym@user/caconym) caconym
2024-10-28 20:03:07 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-28 20:03:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-28 20:03:59 +0100philopsos(~caecilius@user/philopsos) (Quit: Lost terminal)
2024-10-28 20:07:01 +0100 <[exa]> lxsameer: https://hackage.haskell.org/package/hackage-api ?
2024-10-28 20:09:12 +0100 <[exa]> (not at all sure how complete that is. cabal-install pkg has Distribution.Client.xxx modules that might contain interesting stuff too)
2024-10-28 20:09:35 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 20:10:48 +0100sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-10-28 20:11:35 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-28 20:13:33 +0100sadmax(~user@64.130.91.66)
2024-10-28 20:16:35 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-28 20:16:54 +0100 <lxsameer> [exa]: cabal-install does not export that module as far as I know
2024-10-28 20:17:17 +0100 <[exa]> :(
2024-10-28 20:17:45 +0100 <lxsameer> and hackage-api seems to lack the dependency resolving part
2024-10-28 20:18:10 +0100 <[exa]> ah the dependency solver is hardly a part of the API
2024-10-28 20:19:02 +0100 <lxsameer> oh so do you know how to get a list of dependencies of a package? given the name of the package only and not a cabal file
2024-10-28 20:20:33 +0100 <[exa]> ok not sure if that's in hackage API, intuitively I'd say you download and parse the .cabal file
2024-10-28 20:21:16 +0100weary-traveler(~user@user/user363627) user363627
2024-10-28 20:21:32 +0100 <lxsameer> [exa]: it has the endpoint for it according to https://hackage.haskell.org/api#serverapi
2024-10-28 20:21:34 +0100 <[exa]> there's a /package/???/dependencies endpoint but that's not API per se, it returns HTML
2024-10-28 20:21:37 +0100 <lxsameer> but it only returns http
2024-10-28 20:21:42 +0100 <lxsameer> *html
2024-10-28 20:21:43 +0100 <sclv> the hackage api is restful json and self-documented, the lib to interact with it is wreq or any equivalent
2024-10-28 20:22:06 +0100 <sclv> if you pass a different content type you will get json not html
2024-10-28 20:22:31 +0100 <lxsameer> no that's not the case here
2024-10-28 20:22:41 +0100 <lxsameer> it returns html only
2024-10-28 20:22:56 +0100 <lxsameer> curl -H 'Accept: application/json' https://hackage.haskell.org/package/aeson/dependencies
2024-10-28 20:23:14 +0100 <[exa]> yap
2024-10-28 20:23:34 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2024-10-28 20:23:40 +0100 <[exa]> or there's some cooler way that's not super obvious
2024-10-28 20:24:44 +0100 <lxsameer> probably
2024-10-28 20:26:14 +0100 <geekosaur> dependency resolving is in the cabal-install-solver package fwiw
2024-10-28 20:26:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 20:28:02 +0100 <[exa]> lxsameer: you might steal it from hackage-server pkg, there's `flatDependencies :: GenericPackageDescription -> [[Dependency]]`, the package description type is from cabal-syntax
2024-10-28 20:28:17 +0100LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 20:28:46 +0100son0p(~ff@186.119.84.216) son0p
2024-10-28 20:29:57 +0100sinbad(~sinbad@user/sinbad) (Ping timeout: 248 seconds)
2024-10-28 20:32:58 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder
2024-10-28 20:34:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-28 20:40:42 +0100 <sclv> lxsameer: yep, indeed the dependencies feature is html only. i agree that the right thing to do is parse it from the cabal file
2024-10-28 20:41:42 +0100 <geekosaur> cabal-plan might be helpful? or even using jq on plan.json
2024-10-28 20:42:10 +0100 <geekosaur> (whihc should make it easier to exclude transitive deps if needed)
2024-10-28 20:44:35 +0100sinbad(~sinbad@user/sinbad) Sinbad
2024-10-28 20:44:49 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 20:44:55 +0100euleritian(~euleritia@dynamic-176-006-145-033.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-28 20:45:11 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 20:46:48 +0100 <monochrom> Nice, TIL jq.
2024-10-28 20:47:11 +0100 <sshine> monochrom, you didn't use jq until today?
2024-10-28 20:47:12 +0100 <tomsmeding> jq is really quite nic!
2024-10-28 20:47:15 +0100 <tomsmeding> *nice
2024-10-28 20:47:17 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-28 20:47:35 +0100 <sshine> I built a jq parser in Haskell, but I never did anything with it.
2024-10-28 20:47:58 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 20:49:12 +0100 <sshine> I thought it'd be cool to do inline jq to transform JSON values.
2024-10-28 20:49:30 +0100jc_nn(~jc@2803:c180:2003:5c33:6f77:c169:b2b:789f)
2024-10-28 20:50:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-10-28 20:50:26 +0100 <sshine> man, I just enjoy so much adding .nix files to my old projects and see them just compile with the old toolchain before I bump the toolchain and see that them just compile again.
2024-10-28 20:50:56 +0100 <ncf> i built a jq semantics in haskell but was too lazy to write a parser
2024-10-28 20:51:07 +0100 <sshine> ncf, cool. I only have the parser, haha.
2024-10-28 20:51:09 +0100 <ncf> we should join forces
2024-10-28 20:51:34 +0100 <Hecate> there's something to do, indeed :)
2024-10-28 20:53:12 +0100 <ncf> it was more of an experiment with optics than a jq implementation, i guess https://github.com/ncfavier/jq-optics
2024-10-28 20:54:02 +0100 <monochrom> sshine: I didn't even know that it exists!
2024-10-28 20:55:23 +0100 <monochrom> I almost started to write my own Haskell code to just parse and reformat JSON. Now I don't have to.
2024-10-28 20:56:21 +0100 <sshine> mine was mostly an experiment to engage more people at Hacktoberfest 2019 :P https://github.com/sshine/hs-jq
2024-10-28 20:58:56 +0100lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 255 seconds)
2024-10-28 21:00:12 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 21:03:01 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-28 21:04:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 21:10:37 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 21:11:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 21:12:32 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2024-10-28 21:16:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-28 21:16:54 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
2024-10-28 21:17:59 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-10-28 21:18:29 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-10-28 21:19:18 +0100Square(~Square@user/square) Square
2024-10-28 21:22:13 +0100vglfr(~vglfr@2607:fb90:a837:c1df:ad6:1a51:e325:8c1) (Ping timeout: 252 seconds)
2024-10-28 21:22:14 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-10-28 21:28:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 21:29:21 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-10-28 21:32:17 +0100briandaed(~root@185.234.210.211.r.toneticgroup.pl) (Remote host closed the connection)
2024-10-28 21:32:41 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-10-28 21:33:42 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-28 21:41:15 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-28 21:43:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 21:45:37 +0100LukeHoersten_(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 21:46:41 +0100LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 21:47:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-28 21:48:31 +0100KingBALD(~KingBALD@175.176.67.49)
2024-10-28 21:48:42 +0100KingBALD(~KingBALD@175.176.67.49) (Client Quit)
2024-10-28 21:49:35 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-28 21:49:58 +0100LukeHoersten_(~LukeHoers@user/lukehoersten) (Ping timeout: 245 seconds)
2024-10-28 21:52:19 +0100 <jc_nn> hello, my register in gitlab.haskell.org is still pending, i'm following an important issue there..
2024-10-28 21:53:19 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 21:56:42 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-28 21:57:41 +0100 <geekosaur> username?
2024-10-28 21:57:48 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-28 21:58:05 +0100 <geekosaur> you seem to have tried #haskell-beginners earlier? I'm pretty sure the instructions tell you #ghc or the ghc-devs mailing list
2024-10-28 21:58:51 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 21:58:52 +0100 <jc_nn> nnasunknown
2024-10-28 21:59:21 +0100 <geekosaur> should be approved
2024-10-28 21:59:42 +0100 <geekosaur> if you're also the one who just applied then what do you want me to do witht hat?
2024-10-28 21:59:49 +0100 <jc_nn> yes, i come from #haskell-begginers
2024-10-28 22:00:30 +0100 <geekosaur> you didn't stick around long, I was asleep and none of the other gitlab admins reads that channel
2024-10-28 22:00:38 +0100 <jc_nn> thanks
2024-10-28 22:00:46 +0100 <geekosaur> it's mostly there for people reading Chris Allen's book
2024-10-28 22:03:18 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 22:06:14 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 252 seconds)
2024-10-28 22:07:47 +0100son0p(~ff@186.119.84.216) (Remote host closed the connection)
2024-10-28 22:08:02 +0100 <jc_nn> Yes, I just tried it with JCS... I thought it was a layer 8 error
2024-10-28 22:08:16 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2024-10-28 22:09:55 +0100michalz(~michalz@185.246.207.200) (Remote host closed the connection)
2024-10-28 22:11:00 +0100ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2024-10-28 22:11:17 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-28 22:12:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 22:17:20 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-10-28 22:18:55 +0100motherfsck(~motherfsc@user/motherfsck) motherfsck
2024-10-28 22:19:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-28 22:19:39 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds)
2024-10-28 22:19:39 +0100ljdarj1ljdarj
2024-10-28 22:22:32 +0100Everything(~Everythin@178-133-168-45.mobile.vf-ua.net)
2024-10-28 22:22:35 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-10-28 22:23:52 +0100petrichor(~znc-user@user/petrichor) (Quit: ZNC 1.8.2 - https://znc.in)
2024-10-28 22:26:21 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
2024-10-28 22:26:21 +0100ljdarj1ljdarj
2024-10-28 22:29:13 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-10-28 22:30:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 22:31:58 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: Textual IRC Client: www.textualapp.com)
2024-10-28 22:34:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-10-28 22:37:35 +0100rmca(~rob@188.120.84.50) (Read error: Connection reset by peer)
2024-10-28 22:40:19 +0100euphores(~SASL_euph@user/euphores) (Ping timeout: 244 seconds)
2024-10-28 22:44:20 +0100LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-28 22:44:21 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Client Quit)
2024-10-28 22:47:13 +0100euphores(~SASL_euph@user/euphores) euphores
2024-10-28 22:47:20 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 22:51:41 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 22:53:20 +0100son0p(~ff@186.119.84.216) son0p
2024-10-28 22:56:18 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2024-10-28 22:57:49 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-28 23:02:42 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 23:06:48 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
2024-10-28 23:07:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-28 23:12:36 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2024-10-28 23:12:37 +0100Square(~Square@user/square) (Ping timeout: 248 seconds)
2024-10-28 23:13:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 23:19:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-10-28 23:20:07 +0100Everything(~Everythin@178-133-168-45.mobile.vf-ua.net) (Read error: Connection reset by peer)
2024-10-28 23:23:35 +0100ft(~ft@p4fc2a216.dip0.t-ipconnect.de) ft
2024-10-28 23:24:12 +0100Everything(~Everythin@195.138.86.118) Everything
2024-10-28 23:25:25 +0100sadmax(~user@64.130.91.66) (Remote host closed the connection)
2024-10-28 23:25:55 +0100sadmax(~user@64.130.91.66)
2024-10-28 23:30:11 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 23:34:36 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-28 23:38:47 +0100vglfr(~vglfr@c-73-250-25-113.hsd1.md.comcast.net) vglfr
2024-10-28 23:41:06 +0100Everything(~Everythin@195.138.86.118) (Ping timeout: 246 seconds)
2024-10-28 23:41:08 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-28 23:43:14 +0100Everything(~Everythin@178-133-153-185.mobile.vf-ua.net)
2024-10-28 23:45:30 +0100myxos(~myxos@syn-065-028-251-121.res.spectrum.com) (Ping timeout: 272 seconds)
2024-10-28 23:45:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-28 23:50:00 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)