Home liberachat/#haskell: Logs Calendar

Logs on 2025-02-07 (liberachat/#haskell)

00:00:02 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
00:05:44 Guest64 is now known as HEGX64
00:10:39 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:15:13 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
00:19:07 × otbergsten quits (~otbergste@user/otbergsten) ()
00:22:01 capslair^ joins (~capslair@108.192.66.114)
00:23:42 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
00:25:02 × xff0x quits (~xff0x@2405:6580:b080:900:4c17:71c9:4c89:f803) (Ping timeout: 268 seconds)
00:26:01 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:26:35 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
00:26:55 <davean> kilolympus: https://github.com/haskell-infra/hackage-doc-builder-config
00:27:13 <davean> kilolympus: you can ask for a modification of cours
00:27:48 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
00:29:05 × sprotte24 quits (~sprotte24@p200300d16f04b500f0fec28a072486d6.dip0.t-ipconnect.de) (Quit: Leaving)
00:30:41 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
00:31:27 alfiee joins (~alfiee@user/alfiee)
00:35:53 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds)
00:41:23 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:44:00 × acidjnk_new3 quits (~acidjnk@p200300d6e7283f31bc6d2d03cd52feea.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
00:44:32 alphabeta joins (~kilolympu@213.55.241.40)
00:44:59 × kilolympus quits (~kilolympu@2a04:ee41:4:32b3:7e9f:f324:8323:112e) (Ping timeout: 265 seconds)
00:46:00 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
00:46:37 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 268 seconds)
00:48:04 catties is now known as bunnies
00:48:26 vanishingideal joins (~vanishing@user/vanishingideal)
00:53:27 × euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Remote host closed the connection)
00:53:51 euleritian joins (~euleritia@77.23.250.232)
00:54:23 × euleritian quits (~euleritia@77.23.250.232) (Remote host closed the connection)
00:56:45 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:57:02 euleritian joins (~euleritia@77.23.250.232)
01:01:05 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
01:01:39 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
01:02:03 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
01:03:16 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
01:08:12 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
01:12:08 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:13:46 xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
01:15:34 × alphabeta quits (~kilolympu@213.55.241.40) (Quit: See you later! :))
01:18:43 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
01:19:31 alfiee joins (~alfiee@user/alfiee)
01:23:48 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
01:29:08 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds)
01:30:11 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:32:15 × euleritian quits (~euleritia@77.23.250.232) (Remote host closed the connection)
01:32:36 euleritian joins (~euleritia@77.23.250.232)
01:34:46 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
01:36:53 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
01:37:29 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
01:45:10 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
01:50:40 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:52:11 eL_Bart0 joins (eL_Bart0@dietunichtguten.org)
01:57:54 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
02:07:55 alfiee joins (~alfiee@user/alfiee)
02:08:48 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:12:20 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds)
02:13:34 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
02:19:10 tavare joins (~tavare@150.129.88.189)
02:19:10 × tavare quits (~tavare@150.129.88.189) (Changing host)
02:19:10 tavare joins (~tavare@user/tavare)
02:24:20 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:29:19 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
02:38:53 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
02:39:38 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
02:39:38 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:44:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
02:49:39 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
02:52:02 dostoevsky joins (~dostoevsk@user/dostoevsky)
02:52:41 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
02:54:59 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:55:59 alfiee joins (~alfiee@user/alfiee)
03:00:33 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 276 seconds)
03:01:12 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
03:01:45 Sgeo_ joins (~Sgeo@user/sgeo)
03:05:00 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 252 seconds)
03:05:22 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
03:08:22 j1n37 joins (~j1n37@user/j1n37)
03:11:33 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:15:30 weary-traveler joins (~user@user/user363627)
03:15:48 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
03:20:08 notzmv joins (~umar@user/notzmv)
03:20:21 × vanishingideal quits (~vanishing@user/vanishingideal) (Quit: Lost terminal)
03:20:47 vanishingideal joins (~vanishing@user/vanishingideal)
03:21:33 prasad joins (~Thunderbi@c-73-75-25-251.hsd1.in.comcast.net)
03:25:30 × prasad quits (~Thunderbi@c-73-75-25-251.hsd1.in.comcast.net) (Client Quit)
03:26:56 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:31:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
03:31:39 × hammond quits (proscan@gateway04.insomnia247.nl) (Ping timeout: 246 seconds)
03:31:40 agent314 joins (~quassel@79.127.222.205)
03:33:26 × vulpine quits (xfnw@user/meow/xfnw) (Read error: Connection reset by peer)
03:33:47 vulpine joins (xfnw@user/meow/xfnw)
03:33:51 × vulpine quits (xfnw@user/meow/xfnw) (Max SendQ exceeded)
03:34:11 vulpine joins (xfnw@user/meow/xfnw)
03:34:13 × vulpine quits (xfnw@user/meow/xfnw) (Excess Flood)
03:37:58 vulpine joins (xfnw@user/meow/xfnw)
03:38:00 × vulpine quits (xfnw@user/meow/xfnw) (Excess Flood)
03:39:06 vulpine joins (xfnw@user/meow/xfnw)
03:39:08 × vulpine quits (xfnw@user/meow/xfnw) (Excess Flood)
03:42:08 vulpine joins (xfnw@user/meow/xfnw)
03:42:10 × vulpine quits (xfnw@user/meow/xfnw) (Excess Flood)
03:42:20 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:44:22 alfiee joins (~alfiee@user/alfiee)
03:44:59 vulpine joins (xfnw@user/meow/xfnw)
03:45:03 × vulpine quits (xfnw@user/meow/xfnw) (Max SendQ exceeded)
03:46:54 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
03:47:34 vulpine joins (xfnw@user/meow/xfnw)
03:47:39 × vulpine quits (xfnw@user/meow/xfnw) (Max SendQ exceeded)
03:49:09 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds)
03:50:39 × saimazoon quits (~hrtz@user/haritz) (Ping timeout: 260 seconds)
03:51:00 vulpine joins (xfnw@user/meow/xfnw)
03:51:02 × alp__ quits (~alp@2001:861:8ca0:4940:c852:f016:ee1c:5cf) (Remote host closed the connection)
03:51:02 × vulpine quits (xfnw@user/meow/xfnw) (Excess Flood)
03:51:20 alp__ joins (~alp@2001:861:8ca0:4940:7350:41fe:ef34:5f0f)
03:52:43 × alp__ quits (~alp@2001:861:8ca0:4940:7350:41fe:ef34:5f0f) (Remote host closed the connection)
03:53:01 alp__ joins (~alp@2001:861:8ca0:4940:eaf7:425c:a3f4:9d66)
03:53:43 hammond joins (proscan@gateway04.insomnia247.nl)
03:54:25 × alp__ quits (~alp@2001:861:8ca0:4940:eaf7:425c:a3f4:9d66) (Remote host closed the connection)
03:54:43 alp__ joins (~alp@2001:861:8ca0:4940:569c:57b4:f240:3d2b)
03:55:04 vulpine joins (xfnw@user/meow/xfnw)
03:55:06 × vulpine quits (xfnw@user/meow/xfnw) (Excess Flood)
03:56:06 × alp__ quits (~alp@2001:861:8ca0:4940:569c:57b4:f240:3d2b) (Remote host closed the connection)
03:56:24 alp__ joins (~alp@2001:861:8ca0:4940:e670:d145:9f1b:674)
03:56:35 haritz joins (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk)
03:56:38 × haritz quits (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host)
03:56:38 haritz joins (~hrtz@user/haritz)
03:57:39 vulpine joins (xfnw@user/meow/xfnw)
03:57:42 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:57:48 × alp__ quits (~alp@2001:861:8ca0:4940:e670:d145:9f1b:674) (Remote host closed the connection)
03:58:06 alp__ joins (~alp@2001:861:8ca0:4940:5024:ff7b:ce1f:1128)
03:58:18 × vulpine quits (xfnw@user/meow/xfnw) (Excess Flood)
03:59:31 × alp__ quits (~alp@2001:861:8ca0:4940:5024:ff7b:ce1f:1128) (Remote host closed the connection)
03:59:38 vulpine joins (xfnw@user/meow/xfnw)
03:59:49 alp__ joins (~alp@2001:861:8ca0:4940:e025:f618:6016:7d8a)
04:01:13 × alp__ quits (~alp@2001:861:8ca0:4940:e025:f618:6016:7d8a) (Remote host closed the connection)
04:01:31 alp__ joins (~alp@2001:861:8ca0:4940:cb5b:ce0e:5074:ffb7)
04:02:43 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
04:03:00 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
04:03:13 alp_ joins (~alp@2001:861:8ca0:4940:c426:72e5:a4bc:f323)
04:04:38 × alp_ quits (~alp@2001:861:8ca0:4940:c426:72e5:a4bc:f323) (Remote host closed the connection)
04:04:40 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
04:04:55 alp_ joins (~alp@2001:861:8ca0:4940:4256:492f:9aa8:cd35)
04:07:02 × alp__ quits (~alp@2001:861:8ca0:4940:cb5b:ce0e:5074:ffb7) (Ping timeout: 268 seconds)
04:08:13 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
04:09:53 × alp_ quits (~alp@2001:861:8ca0:4940:4256:492f:9aa8:cd35) (Ping timeout: 252 seconds)
04:10:45 × rekahsoft quits (~rekahsoft@bras-base-orllon1103w-grc-10-142-112-184-232.dsl.bell.ca) (Ping timeout: 276 seconds)
04:13:14 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:13:33 driib318 joins (~driib@vmi931078.contaboserver.net)
04:17:36 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
04:20:23 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
04:26:32 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
04:28:37 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:32:06 alfiee joins (~alfiee@user/alfiee)
04:32:06 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection)
04:32:16 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
04:34:12 vanishingideal joins (~vanishing@user/vanishingideal)
04:35:37 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
04:35:53 tnt2 joins (~Thunderbi@user/tnt1)
04:36:18 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
04:36:18 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 272 seconds)
04:36:18 tnt2 is now known as tnt1
04:36:57 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
04:38:03 × dsrt^ quits (~dsrt@108.192.66.114) (Ping timeout: 252 seconds)
04:39:07 MyNetAz joins (~MyNetAz@user/MyNetAz)
04:39:39 × capslair^ quits (~capslair@108.192.66.114) (Ping timeout: 260 seconds)
04:41:50 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
04:46:44 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:47:38 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
04:48:10 euphores joins (~SASL_euph@user/euphores)
04:49:03 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
04:51:19 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
04:56:00 dsrt^ joins (~dsrt@108.192.66.114)
04:56:05 × dsrt^ quits (~dsrt@108.192.66.114) (Remote host closed the connection)
04:58:40 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
05:02:06 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:02:08 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
05:03:21 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
05:07:03 michalz joins (~michalz@185.246.207.197)
05:07:59 dsrt^ joins (~dsrt@108.192.66.114)
05:09:19 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
05:13:44 × Square quits (~Square@user/square) (Quit: Leaving)
05:14:07 Square joins (~Square@user/square)
05:19:41 × jle` quits (~jle`@2603:8001:3b02:84d4:6618:6c83:b259:edfc) (Quit: WeeChat 4.5.1)
05:20:08 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:20:13 jle` joins (~jle`@2603:8001:3b02:84d4:6618:6c83:b259:edfc)
05:20:50 alfiee joins (~alfiee@user/alfiee)
05:24:44 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
05:24:59 × hgolden quits (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) (Remote host closed the connection)
05:25:13 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds)
05:26:53 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
05:29:00 × HEGX64 quits (~Guest64@202.20.31.4) (Quit: Client closed)
05:29:48 hgolden joins (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363)
05:30:04 j1n37 joins (~j1n37@user/j1n37)
05:30:32 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
05:31:52 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
05:35:31 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:40:06 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
05:41:19 misterfish joins (~misterfis@84.53.85.146)
05:48:21 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
05:48:54 ec joins (~ec@gateway/tor-sasl/ec)
05:50:53 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:55:34 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
05:56:25 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
05:57:37 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
06:05:16 × echoreply quits (~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
06:06:10 echoreply joins (~echoreply@45.32.163.16)
06:06:17 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:07:40 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
06:08:17 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
06:08:54 alfiee joins (~alfiee@user/alfiee)
06:10:48 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
06:12:50 × euleritian quits (~euleritia@77.23.250.232) (Ping timeout: 268 seconds)
06:13:04 euleritian joins (~euleritia@dynamic-176-006-138-232.176.6.pool.telefonica.de)
06:13:18 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 245 seconds)
06:19:20 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
06:21:08 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
06:21:38 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:21:56 takuan joins (~takuan@d8D86B601.access.telenet.be)
06:26:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
06:30:22 × euleritian quits (~euleritia@dynamic-176-006-138-232.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
06:30:39 euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de)
06:32:34 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:36:56 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
06:37:14 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
06:40:59 × misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 260 seconds)
06:48:00 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:53:27 CiaoSen joins (~Jura@2a05:5800:220:3300:ca4b:d6ff:fec1:99da)
06:55:06 acidjnk_new3 joins (~acidjnk@p200300d6e7283f97bc6d2d03cd52feea.dip0.t-ipconnect.de)
06:55:23 × euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
06:55:52 euleritian joins (~euleritia@dynamic-176-006-138-232.176.6.pool.telefonica.de)
06:56:00 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
06:57:20 alfiee joins (~alfiee@user/alfiee)
06:59:08 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
06:59:12 ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
07:00:23 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
07:01:36 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
07:03:34 tnt2 joins (~Thunderbi@user/tnt1)
07:03:42 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 252 seconds)
07:03:42 tnt2 is now known as tnt1
07:06:29 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:07:31 tnt2 joins (~Thunderbi@user/tnt1)
07:08:17 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 265 seconds)
07:08:17 tnt2 is now known as tnt1
07:11:05 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
07:11:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
07:12:12 tnt2 joins (~Thunderbi@user/tnt1)
07:13:07 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 265 seconds)
07:14:56 tnt1 joins (~Thunderbi@user/tnt1)
07:16:58 × tnt2 quits (~Thunderbi@user/tnt1) (Ping timeout: 268 seconds)
07:17:09 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
07:17:56 × ft quits (~ft@p3e9bcd97.dip0.t-ipconnect.de) (Quit: leaving)
07:18:40 tnt2 joins (~Thunderbi@user/tnt1)
07:20:03 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 268 seconds)
07:20:06 tnt2 is now known as tnt1
07:20:22 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
07:22:14 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:25:22 tnt2 joins (~Thunderbi@user/tnt1)
07:26:38 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
07:27:27 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 268 seconds)
07:27:28 tnt2 is now known as tnt1
07:29:59 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
07:33:34 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:34:23 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
07:36:36 akegalj joins (~akegalj@89-172-213-142.adsl.net.t-com.hr)
07:39:16 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
07:40:35 tabaqui1 joins (~root@87.200.129.102)
07:45:04 alfiee joins (~alfiee@user/alfiee)
07:49:24 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds)
07:50:03 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:54:47 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
07:55:40 × Googulator quits (~Googulato@2a01-036d-0106-418c-6daf-e703-6cee-d20f.pool6.digikabel.hu) (Ping timeout: 240 seconds)
07:56:59 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
07:58:34 <kqr> I understand on an intellectual level why `const Just :: a -> b -> Maybe b` whereas `const . Just :: a -> b -> Maybe a` but I'd like to have some intuition for why inserting a composition operator sort of swaps the arguments. It feels like there's something happening there that is more fundamental.
08:00:02 × caconym quits (~caconym@user/caconym) (Quit: bye)
08:00:47 sord937 joins (~sord937@gateway/tor-sasl/sord937)
08:00:59 caconym joins (~caconym@user/caconym)
08:01:07 <mauke> if f :: a -> b, then const f :: x -> a -> b
08:01:18 <mauke> and const . f :: a -> x -> b
08:01:37 <mauke> I don't see it as swapping, really
08:01:44 chele joins (~chele@user/chele)
08:01:49 <mauke> it's just where the dummy argument gets inserted
08:08:07 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
08:10:29 <kqr> Aah, I might be starting to get it!
08:11:18 × euleritian quits (~euleritia@dynamic-176-006-138-232.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
08:11:36 euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de)
08:12:36 <kqr> Since const f is really something like const f _ = f it will swallow a dummy argument before starting to apply f, whereas const . f first applies f and then swallows a dummy argument. Yeah, thinking of it that way helps.
08:12:38 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
08:13:02 <kqr> This also helps explain why (const . const . const) f and (const . const . const . f) behaves the way they do!
08:13:14 <kqr> Thanks
08:14:55 misterfish joins (~misterfis@h239071.upc-h.chello.nl)
08:17:34 tnt2 joins (~Thunderbi@user/tnt1)
08:17:34 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
08:19:16 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 268 seconds)
08:19:16 tnt2 is now known as tnt1
08:19:52 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
08:20:36 ensyde joins (~ensyde@2601:5c6:c200:6dc0::9939)
08:23:15 j1n37 joins (~j1n37@user/j1n37)
08:23:31 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
08:28:48 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
08:32:13 × ensyde quits (~ensyde@2601:5c6:c200:6dc0::9939) (Quit: WeeChat 4.5.1)
08:33:09 alfiee joins (~alfiee@user/alfiee)
08:34:34 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
08:37:34 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
08:39:02 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
08:45:40 dhil joins (~dhil@2a0c:b381:5bf:3500:33f8:3d71:b2ae:2adc)
08:48:45 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 246 seconds)
08:49:15 tnt1 joins (~Thunderbi@user/tnt1)
08:54:26 <dminuoso> tomsmeding: By the way, the error was because I was missing a Generic instance.
08:54:56 <dminuoso> I'm half-way convinced that this could be a GHC diagnostics bug.
08:55:04 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
08:56:00 <dminuoso> Ill try and condense this into an isolated reproducer without servant next week.
08:58:34 <dminuoso> At this point I've finally settled on an opinion: Servant while being a neat experiment is not worth the type trickery: TH is more suitable for the job.
08:59:09 <dminuoso> It's *much* faster and can yield much better errors.
09:01:44 mcfrdy joins (~mcfrdy@user/mcfrdy)
09:03:50 sim590 joins (~simon@24-122-69-233.resi.cgocable.ca)
09:09:29 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
09:09:33 AlexNoo_ joins (~AlexNoo@178.34.151.30)
09:12:17 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
09:13:00 × AlexZenon quits (~alzenon@5.139.233.186) (Ping timeout: 276 seconds)
09:13:14 × AlexNoo quits (~AlexNoo@5.139.233.186) (Ping timeout: 260 seconds)
09:14:45 × akegalj quits (~akegalj@89-172-213-142.adsl.net.t-com.hr) (Ping timeout: 268 seconds)
09:16:32 Googulator joins (~Googulato@81.183.235.203)
09:17:22 <tomsmeding> dminuoso: you know, given the appearance of that GServant or what was it, I already had an inkling that it might be that
09:18:13 AlexZenon joins (~alzenon@178.34.151.30)
09:19:25 <tomsmeding> a lot of understanding how to read (and fix) type errors from GHC comes down to honing your mental model of in what situations these diagnostics arise, and that mental model is distressingly associative (as opposed to logical)
09:19:30 lxsameer joins (~lxsameer@Serene/lxsameer)
09:21:00 <tomsmeding> okay let me be more precise: I didn't intuit that _you_ were missing a Generic instance. Just that it was something with GServant not reducing due to (I didn't think this far)
09:21:11 × sa quits (sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 252 seconds)
09:21:14 alfiee joins (~alfiee@user/alfiee)
09:21:15 <hololeap> I'm looking for any comments on ways this code can be improved: https://bpa.st/FTCA
09:21:31 <tomsmeding> probably because essentially any time I've seen G* stuff in type errors, it was because the generics stuff was wrong, not because something else was :p
09:22:22 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
09:22:29 <dminuoso> tomsmeding: If this was some missing instance of some obscure deeply hidden GServerantSomething class that would have been obvious.
09:22:42 akegalj joins (~akegalj@141-136-207-93.dsl.iskon.hr)
09:23:10 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
09:23:16 <dminuoso> Im thinking the reason this all happened was because these are associated types of typeclass instances, and if the lack of a specific instance meant another instance was matched, I guess that could lead to associated types resolving to some nonsense.
09:24:03 <tomsmeding> > let f = foldr (\c -> maybe (if c == '0' then Nothing else Just [c]) (Just . (c:))) Nothing in (f "12300", f "123", f "00", f "")
09:24:03 sa joins (sid1055@id-1055.tinside.irccloud.com)
09:24:04 <lambdabot> (Just "123",Just "123",Nothing,Nothing)
09:24:29 <tomsmeding> hololeap: ^
09:24:51 <tomsmeding> dminuoso: but it didn't resolve to some nonsense here, right? It just didn't reduce.
09:24:59 <tomsmeding> (if I remember the error correctly)
09:25:23 <dminuoso> hololeap: reverse . dropWhile (== '0') . reverse ?
09:25:34 <tomsmeding> hence the stuck application of GServant just appeared in the error verbatim
09:25:36 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
09:25:40 <hololeap> > let f = foldr (\c -> maybe (if c == '0' then Nothing else Just [c]) (Just . (c:))) Nothing in f "120300"
09:25:41 <lambdabot> Just "1203"
09:25:43 <dminuoso> Just tossing it out there, since "improve" can go either way.
09:25:57 <hololeap> hm that does seem to work
09:26:12 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:26:12 <tomsmeding> it works because once it switches to Just, it never becomes Nothing any more
09:26:25 <dminuoso> tomsmeding: I was just holding :k! wrong yesterday, it did resolve to some nonsense.
09:26:26 <tomsmeding> but yes dminuoso's suggestion has a lot of readability merit :p
09:26:31 <tomsmeding> ah!
09:26:34 <dminuoso> tomsmeding: But GHC didnt even tell us about that.
09:26:42 <dminuoso> Just that these two type expressions did not match.
09:26:55 <tomsmeding> yes, I agree that this is rather useless
09:27:10 × Googulator quits (~Googulato@81.183.235.203) (Ping timeout: 240 seconds)
09:27:12 <tomsmeding> on the other hand, GHC has a tricky job in deciding whether, and how far, to reduce type families and synonyms in type errors
09:27:16 <hololeap> yeah dminuoso's was my first implementation, but I wanted to see if I could do it with a right fold
09:27:29 <tomsmeding> if there's a FilePath around, you probably want that to stay a FilePath -- and you don't want String to turn into [Char]
09:27:43 <tomsmeding> but you perhaps _do_ want to reduce GServant -- but perhaps also keep the original around, or something?
09:27:46 <tomsmeding> This is not trivial to solve
09:28:31 <tomsmeding> dminuoso: also it's funny that you say that TH is *much* faster. TH is not known for its speediness
09:28:39 <dminuoso> tomsmeding: See, as far as I'm concerned it can just tell me "Could not match <expr1> with <expr2>" and then below in the context tell me stuff about <expr1> and <expr2>
09:29:05 <dminuoso> tomsmeding: Compared to programming propagation into generics and type system? Uh.
09:29:12 <dminuoso> Not sure why TH should be slow to begin with.
09:29:47 <dminuoso> Now that we're actually talking about it, how is TH executed anyway? Is that via bytecode?
09:30:01 <tomsmeding> dminuoso: exactly, it's funny because TH is known to be not-fast, but then constraint propagation is just devastatingly slow
09:30:03 <merijn> dminuoso: TH is kinda slow compared to regular compilation
09:30:15 <merijn> but much faster than complex type level computing
09:30:21 <merijn> dminuoso: Don't ask
09:30:26 <tomsmeding> TH is run through bytecode in ghci-style, indeed
09:30:36 <tomsmeding> if you're cross-compiling or have external-interpreter, it's black magic
09:30:39 <merijn> It's a mess, which is why cross compilation and TH work so nightmarish
09:30:50 <merijn> No proper separation of host vs target in TH
09:30:59 <haskellbridge> <magic_rb> Ghc plugins are worse :)
09:31:02 <tomsmeding> GHC ensures that TH runs on the target architecture, not the host architecture, when cross compiling
09:31:06 <dminuoso> When I pondered about TH, I kept thinking that one of the problems of TH is that it's meddled into the linkage of the program too much.
09:31:06 <tomsmeding> this produces... difficulties
09:31:40 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 244 seconds)
09:31:42 <haskellbridge> <magic_rb> You can get TH working while cross compiling, its not even _that_ bad to get it working. But plugins are just unsupported period
09:32:02 <tomsmeding> also if your package depends on C libraries, these are already linked in when interpreting TH -- and it takes the dynamic libraries, even if you link the libraries statically in the package normally
09:32:04 <tomsmeding> iirc
09:32:33 <dminuoso> Yeah and that's slightly bizarre.
09:32:55 <tomsmeding> merijn: isn't that there _is_ proper separation, we just chose, by historical accident, to take the side that's awful to support for GHC?
09:33:19 <tomsmeding> (We could have specified that TH runs on the host, and GHC would have a much easier job when cross-compiling. But then hacks like $(sizeOf (undefined :: Int)) don't work)
09:33:27 <Leary> hololeap: `foldr cons' [] where { cons' '0' [] = []; cons' c cs = c:cs }`
09:33:31 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
09:33:32 <dminuoso> tomsmeding: Regarding speed, when we switched from generic FromJSON/ToJSON to TH (some 100 instances perhaps), we brought down compilation speed from 5 minutes to roughly 20s in our large project.
09:33:48 <tomsmeding> nice
09:34:42 <hololeap> > let f = foldr cons' [] where { cons' '0' [] = []; cons' c cs = c:cs } in f "120300"
09:34:44 <lambdabot> "1203"
09:34:53 <tomsmeding> much nicer than mine
09:34:57 ljdarj joins (~Thunderbi@user/ljdarj)
09:35:30 <dminuoso> Nice.
09:35:40 <haskellbridge> <magic_rb> Maybe we ought to make a new language feature called "ProcMacros" and then copy the impl and idea verbatim from Rust
09:35:58 <haskellbridge> <magic_rb> And just deprecate TH (never removing it probably, but throw a big fat warning)
09:36:20 <tomsmeding> isn't rust proc macros essentially TH, whereas macro_rules! is the one that is "nicer"?
09:36:42 tomsmeding never used rust proc macros
09:36:45 <haskellbridge> <magic_rb> No they define it as running on the host not the target and also they compile them down to machine code
09:36:47 m5zs7k joins (aquares@web10.mydevil.net)
09:36:55 <int-e> at least TH gives you a syntax tree
09:36:57 <tomsmeding> ah
09:37:15 <haskellbridge> <magic_rb> So yes macro_rules! Is nicer than proc macros but their proc macros are much better than our template haskell
09:37:23 <haskellbridge> <magic_rb> int-e so do proc macros
09:37:29 <tomsmeding> much better just because they run on the host?
09:37:37 <hololeap> Leary: that's so simple it makes me think I've been overthinking this
09:37:40 <haskellbridge> <magic_rb> And being compiled
09:37:40 <int-e> then explain why rust has the horror that is `syn`
09:37:53 <tomsmeding> that sounds like it wouldn't be worth making a new language extension for. Just add {-# LANGUAGE TemplateHaskellRunsOnHost #-} or something. :P
09:38:17 <haskellbridge> <magic_rb> Yeah thats what i meant :) just called it ProcMacros
09:38:35 <haskellbridge> <magic_rb> int-e isnt that a built in crate?
09:38:39 <tomsmeding> well "copy the impl and idea" sounded a bit more expansive than this :p
09:38:45 <int-e> nope it's a third party crate
09:39:02 <haskellbridge> <magic_rb> Ah, havent written rust in a few years, good to knoe
09:39:03 <dminuoso> Sometimes I dont get why TH is this problematic. Like, why are we not forced to just specify separate dependencies for TH (C and Haskell), and then it becomes just a dumb Haskell program that is executed in the middle of parsing...
09:39:14 <dminuoso> That communicates with GHC via some protocol
09:39:53 <tomsmeding> would every slice indicate their own dependencies? Or would a packaeg indicate TH deps for all its slices?
09:40:02 <dminuoso> For all its slices.
09:40:05 <haskellbridge> <magic_rb> Because GHC really wants it to be "a integrated part of your program". Compare rustc and haskell. To you a proc macro it must be defined in a different crate. While TH has to be define in a different module
09:40:37 <haskellbridge> <magic_rb> *drop the "To you" dunno how that happenef
09:40:39 × tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 268 seconds)
09:40:51 tnt1 joins (~Thunderbi@user/tnt1)
09:40:56 <int-e> which is not so different either; crates are rust's compilation units
09:41:23 <haskellbridge> <magic_rb> Its harder to spew out a module into .so than a crate
09:41:29 <int-e> While for Haskell that's a module.
09:41:40 <haskellbridge> <magic_rb> Which is what proc macros become, shared objects afaik
09:42:12 <tomsmeding> you can just _not_ compile whatever modules depend on the module that contains the TH function definition, and then compile that to a library
09:42:39 <dminuoso> The convenience of just packing TH next to program code and importing in both directions comes at the price of convenience when using TH...
09:42:43 <haskellbridge> <magic_rb> Ig so, dunno how hard ghc makes that "just"
09:42:54 <int-e> That said I'm *for* separating TH imports from runtime imports. But it feels like a thing that you could do without dramatically changing TH.
09:43:35 <tomsmeding> right, there's some engineering required to make this happen in practice, but in terms of compilation and linking etc., it's not more difficult -- the work is "just" in adding flags to ghc and some logic in the build process to allow building shared libraries also for subsets of the module tree
09:43:50 <haskellbridge> <magic_rb> I think we all agree that something needs to be done with TH and i also think all the somethings are quite close to each other. Someone just needs to write down a proposal
09:44:36 <haskellbridge> <magic_rb> Cross compilation is becoming ever more important and TH (and plugins to a much worse degree) are blocking progress
09:44:42 <tomsmeding> compiling TH slices to native code instead of bytecode is something that isn't visible from userland, so that doesn't need a proposal, just a motivated ghc hacker
09:44:55 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
09:45:03 <tomsmeding> tbh -XTemplateHaskellRunsOnHost is maybe just the thing that fixes most problems for least effort
09:46:07 <haskellbridge> <magic_rb> (i will also complain about our c binding generation story, which is worse than rusts -- and also not being able to pass "Storable a" on the stack to a function...)
09:46:09 <dminuoso> The proposal probably isn't even the biggest difficulty. Somebody needs to engineer this into GHC, and for adoption to occur it needs to land in cabal (all parts of it). And there's lengthy discussions about whether to keep two concurrent TH infrastructures or the amount of breakage across hackage if new boundaries between host and target (imports and linkage) were introduced.
09:46:49 <tomsmeding> oh, hah, -XTemplateHaskellRunsOnHost would be viral -- yes, that would be a problem
09:48:36 <dminuoso> tomsmeding: What does that fictional extension do?
09:48:55 <tomsmeding> dminuoso: make all splices in this module run on the host instead of the target.
09:49:11 <tomsmeding> which only makes a difference if you're cross-compiling
09:49:41 <tomsmeding> but this is rather tricky if you unknowingly make use of functions from other packages that we written with "execution on the target" in mind
09:49:48 <tomsmeding> because that was (is) the default
09:50:13 <tomsmeding> viral is indeed the wrong word, I was confused for a bit
09:50:52 <tomsmeding> technically, there would be no hackage split: each module could really decide for itself where to execute its splices. But practically, you do need to watch out
09:53:05 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
09:53:19 <haskellbridge> <magic_rb> There would be some fall out yet, but it does need to happen sooner or later in my opinion
09:53:19 neiluj joins (~julien@90.121.75.121)
09:53:45 <neiluj> hi! is there a way to index a map by a polymorphic and abstract type?
09:54:01 <neiluj> (hitting this limitation in OCaml)
09:54:17 <tomsmeding> % :t Data.Map.lookup
09:54:17 <yahb2> Data.Map.lookup ; :: Ord k => k -> Data.Map.Internal.Map k a -> Maybe a
09:54:23 <tomsmeding> k is rather polymorphic and abstract here
09:54:32 <neiluj> true
09:54:33 <tomsmeding> if that's not what you mean, then please elaborate :)
09:55:05 <neiluj> yes, that would totally work
09:55:10 <neiluj> thanks!
09:55:36 <tomsmeding> neiluj: for my curiosity, how is this not true in ocaml?
09:56:49 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
09:57:22 __monty__ joins (~toonn@user/toonn)
09:58:11 <neiluj> just to give more context, wrote bindings to the Pari/GP C library https://github.com/jtcoolen/ocaml-pari/blob/staging/src/pari.mli#L5. The main type is an abstract polymorphic type 'a t for which I'd like to set up a map with keys of type 'a t. You cannot do that in OCaml, as Map.Make expects a non polymorphic type t for the keys
09:58:53 <neiluj> but that would work nicely with Data.Map as it would only require to implement the typecall Ord for that type
09:59:13 <neiluj> kind of regretting I didn't go with Haskell for these bindings
10:00:04 <neiluj> *typeclass
10:06:20 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
10:06:31 <tomsmeding> neiluj: is this the proper Map type to look at? https://ocaml.org/docs/maps
10:06:41 <tomsmeding> (I seem to recall that ocaml has various standard libraries)
10:07:22 <tomsmeding> (That is to say, this one https://ocaml.org/manual/5.3/api/Map.Make.html )
10:08:13 alp joins (~alp@2001:861:8ca0:4940:d5b5:2163:e0a9:7a7f)
10:08:16 <tomsmeding> funny, that OrderedType is scoped within Map; there is no general Ord-like thing?
10:08:52 <merijn> tomsmeding: What we really just need is proper phased TH that lets you specify whether something should run on host or target, because both are valid for different scenarios
10:09:15 <merijn> tomsmeding: That lets you have maps with different orderings for the same type
10:09:24 <neiluj> tomsmeding: yes, that's the one from the built-in standard library
10:09:38 alfiee joins (~alfiee@user/alfiee)
10:09:57 <tomsmeding> neiluj: I'm not an ocaml programmer (as you can see), but within your library, isn't the t type known? That is to say, surely it's a monomorphic type _somewhere_, and then just create the Map there?
10:10:36 <tomsmeding> in Haskell, that Ord typeclass instance also needs to come from somewhere, and you can only define such an instance if you actually know what type you have in hand (of course)
10:11:01 <tomsmeding> (furthermore, the orphan rules dictate that such an instance ought to be defined in the same module as where the type itself is defined)
10:11:31 × CiaoSen quits (~Jura@2a05:5800:220:3300:ca4b:d6ff:fec1:99da) (Quit: CiaoSen)
10:11:42 <neiluj> there's no general Ord-like thing, but you can see that all *.OrderedType (Set,Map) module signatures are alike
10:11:58 <tomsmeding> alternatively, in ocaml, wherever you define this abstract type t (as a non-abstract type, which you then later presumably export as abstract), also give a 'compare' function?
10:12:14 <tomsmeding> (or however you generally instantiate such OrderedType modules)
10:12:52 <tomsmeding> merijn: re maps with different orderings for the same type: sure, but I was just surprised that it was Map.OrderedType, not Stdlib.OrderedType or whatever
10:13:00 <tomsmeding> does Set have its own OrderedType? Are they compatible?
10:13:50 <tomsmeding> (does ocaml do duck-typing on module signatures, where if a module satisfies a signature's body, then it implements the signature?)
10:13:57 <neiluj> tomsmeding: yes, so the C library deals with one single recursive type (called GEN), so that all functions take and return GENs. The C library exports a comparison function which I think does structural equality
10:13:59 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
10:15:31 <tomsmeding> neiluj: then from a Haskell programmer's point of view, I would just define a data type in your bindings, export that as abstract (i.e. don't allow other code to look inside / construct or destruct it), and also provide your users with implementations of OrderedType, etc., to the extent that PARI defines those operations and that you consider it suitable for users to have them
10:15:39 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
10:15:57 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
10:16:28 <tomsmeding> it's the same in haskell; if I define an abstract data type in a haskell module, and I want other people to be able to compare values of those types (so that they can put them in a Map or Set, for example), it's me who has to write that Ord instance and make it available
10:17:02 × xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 268 seconds)
10:17:07 <tomsmeding> users can't do that, precisely because it's an abstract data type
10:17:08 <neiluj> tomsmeding: Set has its own OrderedType, and they are compatible with the one from Map because they share the same signature
10:17:30 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
10:18:07 <tomsmeding> neiluj: and "compatible" means that the type signatures are the same, and if you want to instantiate a signature with some concrete module you can always do that if it happens to match the types in that signature?
10:18:16 <tomsmeding> i.e. go-style, not C++/Java style?
10:18:57 <tomsmeding> an alternate design could be that when defining an ocaml module, you have to specify (by name) which signatures it implements, and then it doesn't implement any others.
10:19:09 <tomsmeding> (That would be classic object-oriented style, C++/Java style)
10:20:12 <neiluj> tomsmeding: precisely, and any module whose signature is a superset of some module signature S can be accepted as an instance of S whenever some function or functor expects an S
10:20:20 <tomsmeding> merijn: sorry for being tardy. Yes, we need both styles of TH, hence this being a switch you can also _not_ turn on. But it's probably even better to do this with slice granularity, not module granularity :)
10:20:31 <tomsmeding> neiluj: I see! Then it makes sense. :)
10:20:36 × misterfish quits (~misterfis@h239071.upc-h.chello.nl) (Ping timeout: 252 seconds)
10:21:41 <tomsmeding> neiluj: Ideally you'd need to have a module that defines your wrapping of GEN, which (among other things) defines a compare function so that it satisfies Map.OrderedType. The module's internals are abstract. However, somehow the rest of your library would need to be able to access those internals nevertheless
10:21:54 <tomsmeding> or perhaps this means that the whole bindings package needs to live inside that module?
10:22:18 × notzmv quits (~umar@user/notzmv) (Remote host closed the connection)
10:22:20 <neiluj> in a sense, you can emulate typeclasses in ocaml with functors, but you have to explicitly specify the module signature, while haskell does that for you with typeclasses
10:22:34 <tomsmeding> in other words, I don't see anything yet here that you fundamentally can't do in ocaml but you can do in haskell
10:22:57 <neiluj> for ex: val f : (type t) (module Ord with type t = t) -> t -> t
10:24:05 <neiluj> instead of f :: Ord t => t -> t (where the Ord is implicit in the function call)
10:24:48 <neiluj> well ocaml functors are more flexible as you can implement multiple instances of a module type for some type, while in haskell you'd need a newtype
10:25:28 <neiluj> given a type t, in ocaml, i can implement to instances of Ord with different comparison functions
10:25:34 <neiluj> for that type
10:25:35 <tomsmeding> right
10:25:54 <tomsmeding> you might need to visit some ocaml-specific forum to ask for more specific guidance. But I think you can get what you want in ocaml :)
10:25:56 <neiluj> plus it's more explicit, so easier to know which function gets called
10:26:16 <tomsmeding> wherever you export your t, also make sure that module exports a compare function
10:26:36 <neiluj> sure, thanks! just wanted to see if haskell could solve my problem more easily, and it seems so :)
10:26:44 <tomsmeding> I'm not sure it can! That's my point
10:27:01 <tomsmeding> the types look different, but as you say, ocaml is the one that's more flexible, not haskell
10:27:35 misterfish joins (~misterfis@31-161-39-137.biz.kpn.net)
10:27:53 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
10:30:04 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
10:31:02 × alp quits (~alp@2001:861:8ca0:4940:d5b5:2163:e0a9:7a7f) (Remote host closed the connection)
10:31:19 alp joins (~alp@2001:861:8ca0:4940:41b4:15ba:b9c5:e001)
10:31:24 JuanDaugherty joins (~juan@user/JuanDaugherty)
10:31:46 <tomsmeding> in haskell, you can't satisfy that Ord constraint unless you know what the 'k' type is, monomorphically, or unless you have that 'k' as a parameter yourself and get the Ord instance from your caller
10:31:57 <tomsmeding> I think you can do the same in ocaml
10:32:05 <tomsmeding> somehow :)
10:32:20 ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:3bd7:f04:27ee:5a69)
10:32:20 × akegalj quits (~akegalj@141-136-207-93.dsl.iskon.hr) (Ping timeout: 244 seconds)
10:32:44 × alp quits (~alp@2001:861:8ca0:4940:41b4:15ba:b9c5:e001) (Remote host closed the connection)
10:33:00 alp joins (~alp@2001:861:8ca0:4940:d783:3ed4:b3b2:7c8f)
10:34:26 × alp quits (~alp@2001:861:8ca0:4940:d783:3ed4:b3b2:7c8f) (Remote host closed the connection)
10:34:42 alp joins (~alp@2001:861:8ca0:4940:c543:753a:35f:61ff)
10:36:25 alp_ joins (~alp@2001:861:8ca0:4940:5fab:379e:f5b9:17db)
10:37:47 JuanDaugherty is now known as ColinRobinson
10:37:50 × alp_ quits (~alp@2001:861:8ca0:4940:5fab:379e:f5b9:17db) (Remote host closed the connection)
10:38:07 alp_ joins (~alp@2001:861:8ca0:4940:c66f:9510:c543:5c5b)
10:39:26 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
10:39:32 × alp_ quits (~alp@2001:861:8ca0:4940:c66f:9510:c543:5c5b) (Remote host closed the connection)
10:39:50 alp_ joins (~alp@2001:861:8ca0:4940:9b7d:225:6dca:3)
10:40:28 × alp quits (~alp@2001:861:8ca0:4940:c543:753a:35f:61ff) (Ping timeout: 272 seconds)
10:41:14 × alp_ quits (~alp@2001:861:8ca0:4940:9b7d:225:6dca:3) (Remote host closed the connection)
10:41:32 alp_ joins (~alp@2001:861:8ca0:4940:cbb9:a4bc:2367:1426)
10:42:56 × alp_ quits (~alp@2001:861:8ca0:4940:cbb9:a4bc:2367:1426) (Remote host closed the connection)
10:43:13 alp_ joins (~alp@2001:861:8ca0:4940:ded:f36a:cce:f632)
10:44:16 akegalj joins (~akegalj@95.168.121.14)
10:44:38 × alp_ quits (~alp@2001:861:8ca0:4940:ded:f36a:cce:f632) (Remote host closed the connection)
10:44:55 alp_ joins (~alp@2001:861:8ca0:4940:62ab:e74d:1ce5:46a6)
10:46:00 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
10:46:20 × alp_ quits (~alp@2001:861:8ca0:4940:62ab:e74d:1ce5:46a6) (Remote host closed the connection)
10:46:38 alp_ joins (~alp@2001:861:8ca0:4940:71ab:5717:4fb2:efbd)
10:46:45 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
10:48:02 × alp_ quits (~alp@2001:861:8ca0:4940:71ab:5717:4fb2:efbd) (Remote host closed the connection)
10:48:20 alp_ joins (~alp@2001:861:8ca0:4940:a997:e2f2:f7d1:e67e)
10:49:44 × alp_ quits (~alp@2001:861:8ca0:4940:a997:e2f2:f7d1:e67e) (Remote host closed the connection)
10:50:01 alp_ joins (~alp@2001:861:8ca0:4940:eb15:e09d:d9d1:dd64)
10:51:26 × alp_ quits (~alp@2001:861:8ca0:4940:eb15:e09d:d9d1:dd64) (Remote host closed the connection)
10:51:43 alp_ joins (~alp@2001:861:8ca0:4940:ae81:7c78:7938:da13)
10:53:08 × alp_ quits (~alp@2001:861:8ca0:4940:ae81:7c78:7938:da13) (Remote host closed the connection)
10:53:26 alp_ joins (~alp@2001:861:8ca0:4940:3337:c2d5:219b:8ea3)
10:55:09 alp__ joins (~alp@2001:861:8ca0:4940:c29d:3ca2:b267:28b1)
10:56:32 × alp__ quits (~alp@2001:861:8ca0:4940:c29d:3ca2:b267:28b1) (Remote host closed the connection)
10:56:50 alp__ joins (~alp@2001:861:8ca0:4940:79d9:d457:2:aee5)
10:57:23 alfiee joins (~alfiee@user/alfiee)
10:58:15 × alp__ quits (~alp@2001:861:8ca0:4940:79d9:d457:2:aee5) (Remote host closed the connection)
10:58:33 alp__ joins (~alp@2001:861:8ca0:4940:6519:dc9d:e9c:614a)
10:58:58 × alp_ quits (~alp@2001:861:8ca0:4940:3337:c2d5:219b:8ea3) (Ping timeout: 268 seconds)
11:00:15 alp_ joins (~alp@2001:861:8ca0:4940:2f2f:adaf:22dd:2984)
11:01:39 × alp_ quits (~alp@2001:861:8ca0:4940:2f2f:adaf:22dd:2984) (Remote host closed the connection)
11:01:40 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
11:01:56 alp_ joins (~alp@2001:861:8ca0:4940:f173:421e:50:abf5)
11:03:21 × alp_ quits (~alp@2001:861:8ca0:4940:f173:421e:50:abf5) (Remote host closed the connection)
11:03:37 alp_ joins (~alp@2001:861:8ca0:4940:6404:3a5a:e9a:718c)
11:03:54 × alp__ quits (~alp@2001:861:8ca0:4940:6519:dc9d:e9c:614a) (Ping timeout: 268 seconds)
11:05:03 × alp_ quits (~alp@2001:861:8ca0:4940:6404:3a5a:e9a:718c) (Remote host closed the connection)
11:05:21 alp_ joins (~alp@2001:861:8ca0:4940:40e8:5a4c:5708:2ed2)
11:06:45 × alp_ quits (~alp@2001:861:8ca0:4940:40e8:5a4c:5708:2ed2) (Remote host closed the connection)
11:07:03 alp_ joins (~alp@2001:861:8ca0:4940:7dad:d25a:6bb7:3230)
11:08:06 × agent314 quits (~quassel@79.127.222.205) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
11:08:27 × alp_ quits (~alp@2001:861:8ca0:4940:7dad:d25a:6bb7:3230) (Remote host closed the connection)
11:08:41 agent314 joins (~quassel@79.127.222.205)
11:08:45 alp_ joins (~alp@2001:861:8ca0:4940:137a:a43f:4411:7b2b)
11:09:54 × agent314 quits (~quassel@79.127.222.205) (Client Quit)
11:10:09 × alp_ quits (~alp@2001:861:8ca0:4940:137a:a43f:4411:7b2b) (Remote host closed the connection)
11:10:26 alp_ joins (~alp@2001:861:8ca0:4940:fcc4:ad40:bfe8:4272)
11:11:51 × alp_ quits (~alp@2001:861:8ca0:4940:fcc4:ad40:bfe8:4272) (Remote host closed the connection)
11:12:09 alp_ joins (~alp@2001:861:8ca0:4940:8a35:a696:413b:c43a)
11:12:50 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
11:13:32 × alp_ quits (~alp@2001:861:8ca0:4940:8a35:a696:413b:c43a) (Remote host closed the connection)
11:13:45 xff0x joins (~xff0x@2405:6580:b080:900:a44a:d727:8d11:d274)
11:13:51 alp_ joins (~alp@2001:861:8ca0:4940:dda1:b533:697e:2ecc)
11:15:15 × alp_ quits (~alp@2001:861:8ca0:4940:dda1:b533:697e:2ecc) (Remote host closed the connection)
11:15:32 alp_ joins (~alp@2001:861:8ca0:4940:7f1:741d:9be9:bad)
11:16:25 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
11:16:57 × alp_ quits (~alp@2001:861:8ca0:4940:7f1:741d:9be9:bad) (Remote host closed the connection)
11:17:15 alp_ joins (~alp@2001:861:8ca0:4940:d1ce:16c7:4dae:178a)
11:17:40 <dminuoso> tomsmeding: "execution on the target" seems like a rather vague notion.
11:18:33 <dminuoso> Packages themselves has no notion of "target", code just runs. This is a configuration/build question of what the compiler should do.
11:18:39 × alp_ quits (~alp@2001:861:8ca0:4940:d1ce:16c7:4dae:178a) (Remote host closed the connection)
11:18:56 alp_ joins (~alp@2001:861:8ca0:4940:14f3:ef88:5d72:946)
11:19:53 <dminuoso> If we pick say `text`, and link against its for TH purposes, just build a separate `text` to run on what the compiler perceives as target, link it to the TH code, and done.
11:20:08 <dminuoso> Of course this introduces some coherence questions, but that's really a cabal problem.
11:20:21 × alp_ quits (~alp@2001:861:8ca0:4940:14f3:ef88:5d72:946) (Remote host closed the connection)
11:20:29 <tomsmeding> the target is decided at the point where you build a final executable
11:20:38 alp_ joins (~alp@2001:861:8ca0:4940:2887:5196:3f2d:f111)
11:20:45 <tomsmeding> all code that is compiled is compile for a particular target environment/architecture/etc.
11:20:53 <tomsmeding> so there is definitely a well-defined target at all times
11:21:11 <tomsmeding> you cannot compile any code if you don't yet know whether to do so for x64 or for riscv!
11:21:37 <dminuoso> Who cares what the target is?
11:21:53 <tomsmeding> ghc cares, when generating assembly code.
11:22:03 × alp_ quits (~alp@2001:861:8ca0:4940:2887:5196:3f2d:f111) (Remote host closed the connection)
11:22:05 <dminuoso> We compile text twice, one for host and once for target. TH links against the host object files, final program against the target object files.
11:22:21 alp_ joins (~alp@2001:861:8ca0:4940:1362:b30:65a6:8bf)
11:22:48 <dminuoso> Problems only arise if you insist on compiling text only once to use for both TH and the final executable.
11:22:55 <tomsmeding> also, some people write TH code that explicitly assumes it's running on the target machine, so that it can use stuff like `sizeOf (undefined :: Int)` in TH and have that return appropriate values
11:23:09 <tomsmeding> and this is explicitly supported
11:23:14 <tomsmeding> (for better or for worse)
11:24:04 alp__ joins (~alp@2001:861:8ca0:4940:817d:397a:310b:59bd)
11:24:29 <dminuoso> This is an intriguing example.
11:25:25 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
11:26:11 <tomsmeding> dminuoso: "We compile text twice" -- is this a hypothetical, or do you actually compile TH this way at your workplace?
11:26:17 <tomsmeding> just double-checking
11:26:37 <tomsmeding> I hope it's the former
11:27:12 <dminuoso> Yeah just hypothetical.
11:27:12 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
11:27:51 <dminuoso> So after pondering some, I think that `sizeOf` in TH should not give you target information.
11:27:57 × alp_ quits (~alp@2001:861:8ca0:4940:1362:b30:65a6:8bf) (Ping timeout: 268 seconds)
11:28:06 <tomsmeding> I agree. But it's not the status quo, so changing that would be breaking
11:28:22 <dminuoso> Something equivalent to a separate Foreign.Storable.Target module would make more sense.
11:28:35 <dminuoso> Or maybe not exist at all.
11:28:46 <tomsmeding> (There's more than just sizeOf that returns system information. There's everything in the System.Info module, for starters, and also anything in IO is system-dependent)
11:29:07 <dminuoso> For this discussion, a thorough analysis of hackage would be interesting.
11:29:11 × alp__ quits (~alp@2001:861:8ca0:4940:817d:397a:310b:59bd) (Ping timeout: 268 seconds)
11:29:19 <dminuoso> Whether any breakage if we limited availability in TH is even worth discussing.
11:29:46 <tomsmeding> GHC is actively doing lots of work to ensure that TH can run on the target when cross-compiling, with the whole external-interpreter stuff
11:29:56 <tomsmeding> particularly around the wasm and js backends
11:30:05 <tomsmeding> so this choice has already been made :p
11:30:34 <dminuoso> Why would it need to run on the target?
11:30:44 <dminuoso> Dont quite see how this makes sense
11:30:45 <tomsmeding> the above-mentioned, I'd guess
11:30:53 <tomsmeding> though I'm not actively following that space
11:31:10 <dminuoso> TH runs during parse time on host.
11:31:21 <int-e> It's so that most user code doesn't have to worry about cross-compilation.
11:31:24 <dminuoso> Not sure what TH running on target in cross-compilation would even mean
11:31:39 <dminuoso> Given that parsing tends to not happen on target.
11:31:40 <tomsmeding> dminuoso: when compiling for JS, GHC literally spins up a nodejs executable to run your TH code
11:32:22 <tomsmeding> (if I remember correctly)
11:32:32 <dminuoso> Okay I see! Then all we need is qemu to run in GHC. :-)
11:33:05 <tomsmeding> I don't know what happens if you try to cross-compile for a different architecture that is not JS or wasm. :P
11:34:13 <tomsmeding> https://gitlab.haskell.org/ghc/ghc/-/wikis/template-haskell/cross-compilation
11:35:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
11:36:52 × neiluj quits (~julien@90.121.75.121) (Quit: WeeChat 4.4.3)
11:38:55 <dminuoso> One thing I had wanted before, is to keep runtime dependencies smaller. I once had something akin to an openapi.json and needed to generate stub code - now I dont want aeson in my runtime dependency, large dependency closures lead to version bounds being overly restrictive especially if some of those transitive packages have tight bounds and are not updated regularly.
11:39:24 <dminuoso> Which is why I explored some solution similar to zeroth
11:42:23 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
11:46:26 alfiee joins (~alfiee@user/alfiee)
11:46:26 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection)
11:47:34 <tomsmeding> there's build-tool-depends, not sure if that is flexible enough
11:47:38 merijn joins (~merijn@77.242.116.146)
11:48:18 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 268 seconds)
11:48:37 sprotte24 joins (~sprotte24@p200300d16f162e0095bcbd8ff54bb672.dip0.t-ipconnect.de)
11:49:57 × sprotte24 quits (~sprotte24@p200300d16f162e0095bcbd8ff54bb672.dip0.t-ipconnect.de) (Client Quit)
11:50:48 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
11:50:51 sprotte24 joins (~sprotte24@p200300d16f162e0095bcbd8ff54bb672.dip0.t-ipconnect.de)
11:53:19 × sprotte24 quits (~sprotte24@p200300d16f162e0095bcbd8ff54bb672.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
11:53:27 MyNetAz joins (~MyNetAz@user/MyNetAz)
11:56:17 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
11:56:59 jespada joins (~jespada@2800:a4:2309:e700:64a6:7448:7cfa:894d)
11:57:27 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
11:57:43 × jespada quits (~jespada@2800:a4:2309:e700:64a6:7448:7cfa:894d) (Client Quit)
11:58:56 AlexNoo_ is now known as AlexNoo
12:03:42 jespada joins (~jespada@2800:a4:2309:e700:64a6:7448:7cfa:894d)
12:10:53 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
12:14:25 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
12:19:52 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
12:20:43 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
12:27:27 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
12:29:03 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
12:29:34 otbergsten joins (~otbergste@user/otbergsten)
12:30:28 bunnies is now known as Catty
12:35:10 alfiee joins (~alfiee@user/alfiee)
12:39:04 ft joins (~ft@p3e9bcd97.dip0.t-ipconnect.de)
12:40:06 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds)
12:42:32 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
12:49:29 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
12:50:25 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
12:52:37 × euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
12:53:29 euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de)
12:59:42 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
13:00:52 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
13:01:44 × euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
13:01:59 euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de)
13:07:32 Square2 joins (~Square4@user/square)
13:08:00 × mange quits (~user@user/mange) (Quit: Zzz...)
13:15:08 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
13:16:14 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
13:16:24 × akegalj quits (~akegalj@95.168.121.14) (Read error: Connection reset by peer)
13:23:56 alfiee joins (~alfiee@user/alfiee)
13:28:20 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
13:30:32 × Xe quits (~Xe@perl/impostor/xe) (Remote host closed the connection)
13:31:55 akegalj joins (~akegalj@89-172-213-142.adsl.net.t-com.hr)
13:32:54 Xe joins (~Xe@perl/impostor/xe)
13:43:22 × Square2 quits (~Square4@user/square) (Ping timeout: 252 seconds)
13:47:35 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:51:51 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 265 seconds)
13:52:11 ash3en joins (~Thunderbi@146.70.124.222)
13:56:55 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
13:58:51 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
14:04:08 Googulator joins (~Googulato@81.183.235.203)
14:07:50 <kaol> My guilty pleasure: -XBlockArguments just so that I can write initialValue & fix \loop x -> ...
14:09:55 <kaol> Or I could just use flip fix initialvalue $ \loop x -> ... I guess.
14:10:45 Googulator74 joins (~Googulato@81.183.235.203)
14:12:41 alfiee joins (~alfiee@user/alfiee)
14:12:41 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection)
14:14:40 × Googulator quits (~Googulato@81.183.235.203) (Ping timeout: 240 seconds)
14:15:09 Googulator74 is now known as Googulator
14:16:06 alp joins (~alp@2001:861:8ca0:4940:96cf:da97:63ee:4d39)
14:17:06 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
14:17:29 × ash3en quits (~Thunderbi@146.70.124.222) (Quit: ash3en)
14:17:46 × alp quits (~alp@2001:861:8ca0:4940:96cf:da97:63ee:4d39) (Remote host closed the connection)
14:18:35 alp joins (~alp@2001:861:8ca0:4940:2075:3d97:bc20:fbec)
14:19:06 ash3en joins (~Thunderbi@146.70.124.222)
14:19:41 MyNetAz joins (~MyNetAz@user/MyNetAz)
14:19:57 vanishingideal joins (~vanishing@user/vanishingideal)
14:20:18 × alp quits (~alp@2001:861:8ca0:4940:2075:3d97:bc20:fbec) (Remote host closed the connection)
14:21:07 alp joins (~alp@2001:861:8ca0:4940:a3a2:6e88:379e:aa42)
14:21:25 <Rembane> kaol: It's a good guilty pleasure
14:22:39 × ash3en quits (~Thunderbi@146.70.124.222) (Client Quit)
14:22:51 × alp quits (~alp@2001:861:8ca0:4940:a3a2:6e88:379e:aa42) (Remote host closed the connection)
14:23:14 ash3en joins (~Thunderbi@146.70.124.222)
14:23:34 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
14:23:39 alp joins (~alp@2001:861:8ca0:4940:44a5:7d99:84a4:3579)
14:25:07 × otbergsten quits (~otbergste@user/otbergsten) (Remote host closed the connection)
14:25:23 × alp quits (~alp@2001:861:8ca0:4940:44a5:7d99:84a4:3579) (Remote host closed the connection)
14:25:43 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
14:26:14 alp joins (~alp@2001:861:8ca0:4940:10d4:1c8:6378:f058)
14:27:56 × alp quits (~alp@2001:861:8ca0:4940:10d4:1c8:6378:f058) (Remote host closed the connection)
14:38:31 comerijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
14:40:03 weary-traveler joins (~user@user/user363627)
14:41:13 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 245 seconds)
14:46:25 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
14:51:09 × euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
14:52:08 euleritian joins (~euleritia@dynamic-176-006-138-028.176.6.pool.telefonica.de)
14:52:13 × bsima quits (~bsima@2604:a880:400:d0::19f1:7001) (Quit: ZNC 1.8.2 - https://znc.in)
14:54:15 <EvanR> flip fix iv $ \loop x -> ... code only a haskeller could love
14:54:33 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
14:54:54 bsima joins (~bsima@143.198.118.179)
14:55:32 × EvanR quits (~EvanR@user/evanr) (Quit: Leaving)
14:57:22 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
14:58:13 <Rembane> Buy we love it a lot
14:59:55 EvanR joins (~EvanR@user/evanr)
15:01:05 alfiee joins (~alfiee@user/alfiee)
15:05:34 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds)
15:10:38 × tavare quits (~tavare@user/tavare) (Ping timeout: 252 seconds)
15:11:41 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
15:14:16 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 268 seconds)
15:15:29 × chele quits (~chele@user/chele) (Remote host closed the connection)
15:20:17 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
15:20:25 vpan joins (~vpan@212.117.1.172)
15:22:18 × misterfish quits (~misterfis@31-161-39-137.biz.kpn.net) (Ping timeout: 272 seconds)
15:34:41 × jespada quits (~jespada@2800:a4:2309:e700:64a6:7448:7cfa:894d) (Ping timeout: 248 seconds)
15:35:37 m5zs7k joins (aquares@web10.mydevil.net)
15:36:45 jespada joins (~jespada@2800:a4:22b5:bf00:8d55:3b8:b75b:2176)
15:39:44 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:40:57 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
15:48:01 × Square quits (~Square@user/square) (Ping timeout: 248 seconds)
15:49:29 alfiee joins (~alfiee@user/alfiee)
15:51:33 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
15:51:56 Guest52 joins (~Guest52@2804:1b0:1403:b15c:45b0:ee4a:b533:4a1e)
15:52:04 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Ping timeout: 252 seconds)
15:52:40 × Guest52 quits (~Guest52@2804:1b0:1403:b15c:45b0:ee4a:b533:4a1e) (Client Quit)
15:52:56 axial joins (~axial@2804:1b0:1403:b15c:45b0:ee4a:b533:4a1e)
15:53:43 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
15:54:21 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds)
15:55:07 × haritz quits (~hrtz@user/haritz) (Ping timeout: 265 seconds)
15:56:17 haritz joins (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk)
16:00:52 × haritz quits (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Ping timeout: 252 seconds)
16:01:07 <probie> (`fix` iv) $ \loop x -> ...
16:02:37 alx741 joins (~alx741@186.33.188.229)
16:02:40 × alx741 quits (~alx741@186.33.188.229) (Client Quit)
16:04:14 haritz joins (~hrtz@2a02:8010:65b5:0:5d9a:9bab:ee5e:b737)
16:06:02 × haritz quits (~hrtz@2a02:8010:65b5:0:5d9a:9bab:ee5e:b737) (Changing host)
16:06:02 haritz joins (~hrtz@user/haritz)
16:07:08 × axial quits (~axial@2804:1b0:1403:b15c:45b0:ee4a:b533:4a1e) (Quit: Client closed)
16:09:32 edwtjo joins (~edwtjo@h-85-24-143-213.A213.priv.bahnhof.se)
16:09:32 × edwtjo quits (~edwtjo@h-85-24-143-213.A213.priv.bahnhof.se) (Changing host)
16:09:32 edwtjo joins (~edwtjo@fsf/member/edwtjo)
16:16:43 × euleritian quits (~euleritia@dynamic-176-006-138-028.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
16:17:02 euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de)
16:20:41 Sgeo joins (~Sgeo@user/sgeo)
16:24:17 rvalue- joins (~rvalue@user/rvalue)
16:24:54 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 260 seconds)
16:28:44 × infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection)
16:32:44 rvalue- is now known as rvalue
16:34:15 infinity0 joins (~infinity0@pwned.gg)
16:35:48 × acidjnk_new3 quits (~acidjnk@p200300d6e7283f97bc6d2d03cd52feea.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
16:37:15 alfiee joins (~alfiee@user/alfiee)
16:38:43 × infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 245 seconds)
16:41:34 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
16:50:20 Googulator12 joins (~Googulato@81.183.235.203)
16:51:48 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 264 seconds)
16:54:10 × Googulator quits (~Googulato@81.183.235.203) (Ping timeout: 240 seconds)
16:55:31 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
16:57:33 acidjnk_new3 joins (~acidjnk@p200300d6e7283f9754ef6192d6262c36.dip0.t-ipconnect.de)
16:58:34 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
16:58:57 infinity0 joins (~infinity0@pwned.gg)
17:17:42 × vpan quits (~vpan@212.117.1.172) (Quit: Leaving.)
17:25:59 alfiee joins (~alfiee@user/alfiee)
17:26:03 × akegalj quits (~akegalj@89-172-213-142.adsl.net.t-com.hr) (Ping timeout: 246 seconds)
17:30:29 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 248 seconds)
17:33:00 × acidjnk_new3 quits (~acidjnk@p200300d6e7283f9754ef6192d6262c36.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
17:34:45 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:35:29 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
17:35:36 ec joins (~ec@gateway/tor-sasl/ec)
17:37:33 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 244 seconds)
17:42:09 akegalj joins (~akegalj@141-136-207-93.dsl.iskon.hr)
17:44:16 × comerijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
17:46:31 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
17:46:35 × ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:3bd7:f04:27ee:5a69) (Quit: ubert)
17:47:22 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
17:48:30 Wygulmage joins (~Wygulmage@user/Wygulmage)
17:56:14 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
17:56:17 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
17:57:59 × jespada quits (~jespada@2800:a4:22b5:bf00:8d55:3b8:b75b:2176) (Quit: My Mac has gone to sleep. ZZZzzz…)
17:58:39 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
17:59:32 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 268 seconds)
18:01:10 × Googulator12 quits (~Googulato@81.183.235.203) (Ping timeout: 240 seconds)
18:03:50 × akegalj quits (~akegalj@141-136-207-93.dsl.iskon.hr) (Quit: leaving)
18:05:32 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
18:06:38 × ash3en quits (~Thunderbi@146.70.124.222) (Ping timeout: 245 seconds)
18:06:42 ash3en1 joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
18:08:26 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
18:09:00 ash3en1 is now known as ash3en
18:09:09 gmg joins (~user@user/gehmehgeh)
18:13:21 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
18:14:42 alfiee joins (~alfiee@user/alfiee)
18:18:54 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 246 seconds)
18:20:27 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:21:28 sprotte24 joins (~sprotte24@p200300d16f162e00a0abf896d629d189.dip0.t-ipconnect.de)
18:22:01 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
18:24:58 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
18:27:28 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
18:28:31 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
18:28:52 Lord_of_Life_ is now known as Lord_of_Life
18:35:50 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:37:34 target_i joins (~target_i@user/target-i/x-6023099)
18:41:42 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
18:41:45 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
18:46:44 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
18:47:43 otbergsten joins (~otbergste@user/otbergsten)
18:52:10 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:56:30 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
18:56:50 × m1dnight quits (~m1dnight@d8D861908.access.telenet.be) (Quit: WeeChat 3.0)
19:00:28 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
19:01:58 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
19:03:06 alfiee joins (~alfiee@user/alfiee)
19:07:33 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
19:07:59 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds)
19:08:03 m1dnight joins (~m1dnight@d8D861908.access.telenet.be)
19:14:44 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
19:21:51 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
19:22:12 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
19:23:24 × dhil quits (~dhil@2a0c:b381:5bf:3500:33f8:3d71:b2ae:2adc) (Ping timeout: 268 seconds)
19:24:29 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
19:25:01 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
19:29:34 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
19:40:22 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
19:42:35 misterfish joins (~misterfis@84.53.85.146)
19:43:42 pavonia joins (~user@user/siracusa)
19:44:54 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
19:46:49 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
19:49:40 × Wygulmage quits (~Wygulmage@user/Wygulmage) (Ping timeout: 240 seconds)
19:51:14 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
19:51:59 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
19:52:51 alfiee joins (~alfiee@user/alfiee)
19:55:55 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
19:57:06 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
20:00:04 × caconym quits (~caconym@user/caconym) (Quit: bye)
20:00:17 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
20:00:46 caconym joins (~caconym@user/caconym)
20:04:54 <Leary> kaol: Feel no guilt---disallowing `f \x -> ...` is a bug in the spec---let `BlockArguments` grace your `default-extensions`.
20:11:17 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:11:46 acidjnk_new3 joins (~acidjnk@p200300d6e7283f9788a4d7c575081360.dip0.t-ipconnect.de)
20:12:46 × misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 252 seconds)
20:15:42 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
20:16:03 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
20:20:26 × sprout quits (~sprout@84-80-106-227.fixed.kpn.net) (Remote host closed the connection)
20:26:20 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection)
20:26:40 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:28:40 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
20:29:12 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
20:29:58 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
20:30:56 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
20:33:20 MyNetAz joins (~MyNetAz@user/MyNetAz)
20:35:19 × tabaqui1 quits (~root@87.200.129.102) (Ping timeout: 260 seconds)
20:38:02 capslair^ joins (~capslair@108.192.66.114)
20:40:56 alfiee joins (~alfiee@user/alfiee)
20:41:46 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:43:08 sprout joins (~sprout@84-80-106-227.fixed.kpn.net)
20:45:24 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
20:48:20 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
20:49:18 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection)
20:50:05 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
20:51:31 emergence9 joins (emergence@vm0.max-p.me)
20:51:48 × emergence quits (emergence@vm0.max-p.me) (Read error: Connection reset by peer)
20:51:48 emergence9 is now known as emergence
20:56:19 MyNetAz joins (~MyNetAz@user/MyNetAz)
20:59:30 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
20:59:48 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
21:02:09 × kimiamania8 quits (~65804703@user/kimiamania) (Quit: PegeLinux)
21:02:34 kimiamania8 joins (~65804703@user/kimiamania)
21:03:18 × noctux quits (~noctux@user/noctux) (Read error: Connection reset by peer)
21:03:31 noctux joins (~noctux@user/noctux)
21:04:32 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
21:11:23 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
21:12:31 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
21:15:11 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
21:19:33 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
21:23:26 Googulator joins (~Googulato@2a01-036d-0106-4074-758c-12a1-cbb4-05eb.pool6.digikabel.hu)
21:28:31 <haskellbridge> <Bowuigi> BlockArguments is my favourite extension, no idea why wasn't it there by default
21:29:20 alfiee joins (~alfiee@user/alfiee)
21:30:34 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
21:33:38 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
21:33:41 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
21:33:43 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 245 seconds)
21:34:54 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
21:41:38 × takuan quits (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
21:42:47 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
21:50:59 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
22:01:30 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
22:06:04 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
22:10:21 <monochrom> I have a conjecture that industrial users have a bigger voice, and also they have a very narrow sense of "readable" code.
22:10:42 <monochrom> Like if kindergarten kids don't understand it then it is not "readable".
22:11:45 <monochrom> I know that industry (though not Haskell in the following) can be like that. My friend says his bank bans recursion because "we want to hire 3rd-rate college grads and they can't do recursion".
22:12:07 <monochrom> (And of course, because 3rd-rate grads are cheaper.)
22:13:24 <geekosaur> see also: Go
22:13:52 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
22:16:52 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
22:17:25 alfiee joins (~alfiee@user/alfiee)
22:18:23 <monochrom> It's late Friday so let me go on rant for just once more. Although LLM is far from being the be-all-end-all of AI, I would actually welcome it when real AI, really good almost-ultimate AI, replaced us, because only then people will not pamper about "but AI doesn't understand recursion or BlockArguments".
22:21:30 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds)
22:22:05 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Read error: Connection reset by peer)
22:24:23 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
22:25:12 erdem joins (~erdem@user/erdem)
22:26:21 prasad joins (~Thunderbi@2601:243:c001:3f07::53)
22:28:37 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
22:31:28 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
22:38:16 × eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (Ping timeout: 268 seconds)
22:39:11 fp1 joins (~Thunderbi@hof1.kyla.fi)
22:52:16 × fp1 quits (~Thunderbi@hof1.kyla.fi) (Ping timeout: 252 seconds)
22:57:09 × remedan quits (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
22:58:12 remedan joins (~remedan@ip-62-245-108-153.bb.vodafone.cz)
22:58:29 × foul_owl quits (~kerry@193.42.0.126) (Ping timeout: 248 seconds)
23:02:56 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
23:07:10 alfiee joins (~alfiee@user/alfiee)
23:08:08 <EvanR> >3rd rate college grad
23:08:12 <EvanR> I resemble that remark
23:08:33 <EvanR> but also not only do I understand recursion it was actually on the syllabus once
23:11:20 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)
23:12:21 foul_owl joins (~kerry@193.42.0.126)
23:14:28 <c_wraith> I'm still unsure if understanding recursion was made easier by simultaneously learning how compilers implement it or not.
23:15:09 × michalz quits (~michalz@185.246.207.197) (Remote host closed the connection)
23:17:21 <haskellbridge> <Bowuigi> Knowing about the stack is good for imperative languages but bad for functional languages IMHO
23:17:50 <geekosaur> I'm… not sure I ever didn't understand recursion. I recall being annoyed that there was no way to do it in MS-BASIC
23:19:48 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection)
23:25:33 <Leary> Yeah, for me recursion was an obvious, intuitive tool for simplifying problems; I'd instead stuggle to solve them /without/ it. Though I may have understood it via the principle of induction.
23:26:48 MyNetAz joins (~MyNetAz@user/MyNetAz)
23:32:13 <geekosaur> yeh, I can't say whether I'd encountered that by that point or not
23:32:35 <geekosaur> but even so, the notion of reducing a problem to a simpler version seemed pretty obvious to me
23:46:51 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:47:44 <hololeap> I asked this a year back because for some reason this package is hard for me to remember and it's surprisingly difficult to search for
23:48:13 <hololeap> but what is the name of the package that contains an Either like data type that accumulates errors?
23:49:01 <Leary> @hackage validation
23:49:01 <lambdabot> https://hackage.haskell.org/package/validation
23:49:24 × otbergsten quits (~otbergste@user/otbergsten) ()
23:49:37 <hololeap> thanks
23:51:20 <hololeap> I also remember there was a related typeclass that was considered to be "between" Applicative and Monad
23:51:39 <Leary> @hackage selective
23:51:39 <lambdabot> https://hackage.haskell.org/package/selective
23:53:36 <hololeap> thank you
23:55:14 alfiee joins (~alfiee@user/alfiee)
23:59:22 × alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds)

All times are in UTC on 2025-02-07.