Home liberachat/#haskell: Logs Calendar

Logs on 2026-03-07 (liberachat/#haskell)

00:00:08 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 244 seconds)
00:01:13 × wickedjargon quits (~user@207.194.38.18) (Remote host closed the connection)
00:05:59 × athan quits (~athan@98.150.233.226) (Quit: Konversation terminated!)
00:09:02 arandombit joins (~arandombi@user/arandombit)
00:10:02 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:14:05 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds)
00:15:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
00:22:52 × machinedgod quits (~machinedg@172.219.48.230) (Ping timeout: 244 seconds)
00:25:50 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:31:00 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
00:38:43 hiecaq joins (~hiecaq@user/hiecaq)
00:41:37 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:43:27 arandombit joins (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d)
00:43:27 × arandombit quits (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d) (Changing host)
00:43:27 arandombit joins (~arandombi@user/arandombit)
00:46:30 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
00:52:46 × Square3 quits (~Square@user/square) (Ping timeout: 268 seconds)
00:57:01 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:59:45 × CloneOfNone quits (~CloneOfNo@user/CloneOfNone) (Quit: ZNC 1.10.1 - https://znc.in)
01:01:03 CloneOfNone joins (~CloneOfNo@user/CloneOfNone)
01:02:12 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
01:06:09 × Tuplanolla quits (~Tuplanoll@88.114.89.88) (Quit: Leaving.)
01:08:42 <tusko> When I write Haskell I sometimes ask myself why I ever wrote in another language
01:13:10 merijn joins (~merijn@62.45.136.136)
01:18:52 peterbecich joins (~Thunderbi@71.84.33.135)
01:19:42 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds)
01:30:50 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:31:56 × omnifunctor quits (~omnifunct@user/semifunctor) (Remote host closed the connection)
01:33:25 × CloneOfNone quits (~CloneOfNo@user/CloneOfNone) (Quit: ZNC 1.10.1 - https://znc.in)
01:34:01 omnifunctor joins (~omnifunct@user/semifunctor)
01:34:54 CloneOfNone joins (~CloneOfNo@user/CloneOfNone)
01:36:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
01:36:27 × CloneOfNone quits (~CloneOfNo@user/CloneOfNone) (Remote host closed the connection)
01:37:17 CloneOfNone joins (~CloneOfNo@user/CloneOfNone)
01:40:10 × collide2954 quits (~collide29@user/collide2954) (Quit: The Lounge - https://thelounge.chat)
01:44:49 durstloescher joins (~textual@2a02:8109:1b01:2500:a050:c84e:2137:b3ac)
01:46:37 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:47:42 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 256 seconds)
01:51:24 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
01:57:53 × skum quits (~skum@user/skum) (Quit: WeeChat 4.8.1)
02:00:57 skum joins (~skum@user/skum)
02:01:58 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:02:34 × skum quits (~skum@user/skum) (Client Quit)
02:03:01 skum joins (~skum@user/skum)
02:04:30 × skum quits (~skum@user/skum) (Client Quit)
02:06:40 skum joins (~skum@user/skum)
02:07:00 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
02:16:06 × CloneOfNone quits (~CloneOfNo@user/CloneOfNone) (Quit: ZNC 1.10.1 - https://znc.in)
02:17:23 CloneOfNone joins (~CloneOfNo@user/CloneOfNone)
02:17:46 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:20:22 × CloneOfNone quits (~CloneOfNo@user/CloneOfNone) (Remote host closed the connection)
02:22:00 CloneOfNone joins (~CloneOfNo@user/CloneOfNone)
02:23:12 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
02:24:26 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:29:06 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
02:30:19 × Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 245 seconds)
02:40:08 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:44:27 machinedgod joins (~machinedg@d172-219-48-230.abhsia.telus.net)
02:44:28 Ranhir joins (~Ranhir@157.97.53.139)
02:45:08 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
02:47:20 × durstloescher quits (~textual@2a02:8109:1b01:2500:a050:c84e:2137:b3ac) (Quit: Textual IRC Client: www.textualapp.com)
02:55:56 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:02:48 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
03:13:59 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:14:20 × GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Ping timeout: 245 seconds)
03:16:14 GdeVolpiano joins (~GdeVolpia@user/GdeVolpiano)
03:18:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
03:21:38 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
03:21:55 DetourNe- joins (~DetourNet@user/DetourNetworkUK)
03:24:10 DetourNe- is now known as DetourNetworkUK
03:39:02 arandombit joins (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d)
03:39:02 × arandombit quits (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d) (Changing host)
03:39:02 arandombit joins (~arandombi@user/arandombit)
03:43:21 mange joins (~mange@user/mange)
03:44:18 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 248 seconds)
03:50:59 × xff0x quits (~xff0x@2405:6580:b080:900:acbe:a784:57c1:5e52) (Ping timeout: 252 seconds)
03:52:22 × CloneOfNone quits (~CloneOfNo@user/CloneOfNone) (Quit: ZNC 1.10.1 - https://znc.in)
03:54:05 CloneOfNone joins (~CloneOfNo@user/CloneOfNone)
03:57:36 arandombit joins (~arandombi@user/arandombit)
03:59:52 CloneOfNone_ joins (~CloneOfNo@user/CloneOfNone)
04:00:02 × CloneOfNone quits (~CloneOfNo@user/CloneOfNone) (Read error: Connection reset by peer)
04:00:31 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:01:56 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds)
04:04:12 xff0x joins (~xff0x@2405:6580:b080:900:acbe:a784:57c1:5e52)
04:05:03 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
04:16:03 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:16:37 DetourNe- joins (~DetourNet@user/DetourNetworkUK)
04:17:55 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
04:18:56 DetourNe- is now known as DetourNetworkUK
04:21:24 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
04:31:49 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:32:38 <glguy> tusko: what was the answer?
04:38:50 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
04:39:53 arandombit joins (~arandombi@user/arandombit)
04:44:18 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds)
04:46:04 stackdroid18 parts (~stackdroi@user/stackdroid) ()
04:49:50 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:50:32 × weary-traveler quits (~user@user/user363627) (Quit: Konversation terminated!)
04:50:48 weary-traveler joins (~user@user/user363627)
04:51:17 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
04:54:10 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
04:54:55 humasect joins (~humasect@192.249.132.90)
04:54:57 weary-traveler joins (~user@user/user363627)
05:05:12 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:06:19 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
05:06:55 × machinedgod quits (~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 264 seconds)
05:07:02 chexum joins (~quassel@gateway/tor-sasl/chexum)
05:10:04 philopsos1 joins (~caecilius@user/philopsos)
05:10:10 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
05:11:57 × philopsos1 quits (~caecilius@user/philopsos) (Remote host closed the connection)
05:14:41 philopsos1 joins (~caecilius@user/philopsos)
05:24:03 arandombit joins (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d)
05:24:03 × arandombit quits (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d) (Changing host)
05:24:03 arandombit joins (~arandombi@user/arandombit)
05:27:16 × philopsos1 quits (~caecilius@user/philopsos) (Remote host closed the connection)
05:27:24 philopsos1 joins (~caecilius@user/philopsos)
05:27:47 × philopsos1 quits (~caecilius@user/philopsos) (Remote host closed the connection)
05:29:12 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 264 seconds)
05:30:19 × GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.7.2)
05:30:38 GdeVolpiano joins (~GdeVolpia@user/GdeVolpiano)
05:31:13 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
05:32:40 weary-traveler joins (~user@user/user363627)
05:32:52 philopsos1 joins (~caecilius@user/philopsos)
05:35:09 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
05:36:55 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:39:29 × philopsos1 quits (~caecilius@user/philopsos) (Remote host closed the connection)
05:39:42 philopsos1 joins (~caecilius@user/philopsos)
05:41:38 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
05:42:09 × divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer)
05:42:30 divlamir joins (~divlamir@user/divlamir)
05:44:18 × philopsos1 quits (~caecilius@user/philopsos) (Remote host closed the connection)
05:44:42 philopsos1 joins (~caecilius@user/philopsos)
05:48:15 takuan joins (~takuan@141.134.185.233)
05:53:05 merijn joins (~merijn@62.45.136.136)
05:54:42 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 268 seconds)
05:57:40 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds)
06:00:46 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 244 seconds)
06:01:57 arandombit joins (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d)
06:01:57 × arandombit quits (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d) (Changing host)
06:01:57 arandombit joins (~arandombi@user/arandombit)
06:07:23 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 252 seconds)
06:08:31 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:11:22 peterbecich joins (~Thunderbi@71.84.33.135)
06:15:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
06:17:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:22:35 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
06:25:01 arandombit joins (~arandombi@user/arandombit)
06:29:11 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds)
06:32:07 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds)
06:33:04 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:38:10 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
06:41:51 arandombit joins (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d)
06:41:51 × arandombit quits (~arandombi@2a02:2455:8656:7100:9c04:77be:7a54:3a7d) (Changing host)
06:41:51 arandombit joins (~arandombi@user/arandombit)
06:47:13 × mange quits (~mange@user/mange) (Remote host closed the connection)
06:48:50 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:52:02 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 248 seconds)
06:53:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
06:56:35 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
06:57:33 × philopsos1 quits (~caecilius@user/philopsos) (Remote host closed the connection)
06:57:39 philopso11 joins (~caecilius@107.175.39.130)
07:04:27 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:07:29 × philopso11 quits (~caecilius@107.175.39.130) (Remote host closed the connection)
07:07:39 philopsos1 joins (~caecilius@user/philopsos)
07:09:12 × philopsos1 quits (~caecilius@user/philopsos) (Remote host closed the connection)
07:09:31 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
07:12:39 philopsos1 joins (~caecilius@user/philopsos)
07:13:48 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
07:14:33 ChaiTRex joins (~ChaiTRex@user/chaitrex)
07:14:59 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
07:15:44 <ski> EvanR : if you want to, you can view the semantic value of a syntactic category / nonterminal to be the value of a particular (synthesized, passed up, output) attribute of that syntactical category, regarding the whole grammar as an attribute grammars. (but attribute grammars are more general, can have multiple attributes on each syntactic category, some of which may be inherited (passed down, input))
07:18:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:18:41 × philopsos1 quits (~caecilius@user/philopsos) (Remote host closed the connection)
07:18:46 <ski> @hackage uuagc
07:18:46 <lambdabot> https://hackage.haskell.org/package/uuagc
07:19:17 philopsos1 joins (~caecilius@user/philopsos)
07:23:17 ski . o O ( "Utrecht University Attribute Grammar Compiler" <https://web.archive.org/web/20160625015520/http://foswiki.cs.uu.nl/foswiki/bin/view/HUT/AttributeGrammarSystem>,<https://github.com/UU-ComputerScience/uuagc> )
07:23:32 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
07:24:47 arandombit joins (~arandombi@user/arandombit)
07:30:11 × rainbyte quits (~rainbyte@181.47.219.106) (Remote host closed the connection)
07:31:02 × philopsos1 quits (~caecilius@user/philopsos) (Quit: leaving)
07:31:26 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
07:34:05 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:36:34 ChaiTRex joins (~ChaiTRex@user/chaitrex)
07:38:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
07:41:01 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
07:46:41 ChaiTRex joins (~ChaiTRex@user/chaitrex)
07:49:27 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:53:52 × califax quits (~califax@user/califx) (Remote host closed the connection)
07:54:03 califax joins (~califax@user/califx)
07:56:20 × Vizious quits (~bes@user/Vizious) (Quit: WeeChat 4.6.3)
07:56:25 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
08:00:21 tromp joins (~textual@2001:1c00:3487:1b00:e975:d7be:a717:768f)
08:01:02 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
08:02:39 DetourNetworkUK joins (~DetourNet@user/DetourNetworkUK)
08:07:30 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:12:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
08:12:45 euphores joins (~SASL_euph@user/euphores)
08:15:06 × xff0x quits (~xff0x@2405:6580:b080:900:acbe:a784:57c1:5e52) (Ping timeout: 244 seconds)
08:18:45 Vizious joins (~bes@user/Vizious)
08:19:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:22:34 xff0x joins (~xff0x@2405:6580:b080:900:acbe:a784:57c1:5e52)
08:24:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
08:29:46 × madresch quits (~Thunderbi@user/madresch) (Quit: madresch)
08:30:06 madresch joins (~Thunderbi@user/madresch)
08:37:58 × xff0x quits (~xff0x@2405:6580:b080:900:acbe:a784:57c1:5e52) (Ping timeout: 256 seconds)
08:38:46 xff0x joins (~xff0x@2405:6580:b080:900:4ba2:34a0:8fe0:b7c2)
08:39:54 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds)
08:51:32 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:52:31 bgamari_ joins (~bgamari@64.223.168.27)
08:53:14 × bgamari quits (~bgamari@64.223.173.201) (Ping timeout: 245 seconds)
08:53:33 × tzh quits (~tzh@76.115.131.146) (Quit: zzz)
08:56:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
09:01:10 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 265 seconds)
09:04:15 tomboy64 joins (~tomboy64@user/tomboy64)
09:07:20 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
09:12:17 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
09:15:07 × Vizious quits (~bes@user/Vizious) (Quit: WeeChat 4.6.3)
09:18:47 × humasect quits (~humasect@192.249.132.90) (Quit: Leaving...)
09:20:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
09:23:39 Vizious joins (~bes@user/Vizious)
09:24:50 × Goodbye_Vincent1 quits (cyvahl@freakshells.net) (Quit: )
09:25:51 Goodbye_Vincent1 joins (cyvahl@freakshells.net)
09:27:16 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
09:27:20 czan joins (~czan@user/mange)
09:35:12 × aka_dude quits (~aka_dude@192.71.166.120) (Quit: Gateway shutdown)
09:36:08 aka_dude joins (~aka_dude@2a03:f80:30:f490::1)
09:38:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
09:41:35 arandombit joins (~arandombi@user/arandombit)
09:43:14 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
09:54:06 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
09:59:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
10:00:00 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
10:04:23 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
10:07:29 × Ranhir quits (~Ranhir@157.97.53.139) (Quit: KVIrc 5.2.6 Quasar http://www.kvirc.net/)
10:10:00 merijn joins (~merijn@62.45.136.136)
10:14:27 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds)
10:14:56 × YoungFrog quits (~youngfrog@2a02:a03f:ca07:f900:6149:6cda:888:c7a0) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
10:15:15 YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
10:19:03 × arandombit quits (~arandombi@user/arandombit) (Remote host closed the connection)
10:21:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
10:22:44 × img quits (~img@user/img) (Quit: ZNC 1.10.1 - https://znc.in)
10:23:59 img joins (~img@user/img)
10:25:05 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
10:26:25 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
10:26:34 ChaiTRex joins (~ChaiTRex@user/chaitrex)
10:29:48 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 264 seconds)
10:36:19 Guest89 joins (~Guest89@185.45.21.144)
10:37:05 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
10:39:06 × Beowulf quits (florian@sleipnir.bandrate.org) (Quit: = "")
10:39:40 <Guest89> hello; I'm trying to profile an application that is rather performance sensitive and I'm hoping to reduce allocations as much as possible (this is for the purposes of a master's thesis I'm working on), but I'm having a little trouble isolating the hotspots in my code and understanding whether or not my code itself is overallocating as it is
10:39:41 <Guest89> written. would anyone be willing to help me figure things out?
10:40:11 <Guest89> garbage collection takes 3 times as long as the code itself for example, which I think seems very excessive. I've been trying to play around with things like ghc-compact but it didn't seem to help things any
10:41:21 <haskellbridge> <sm> hi Guest89 . It's not the easiest process, but it will be useful to generate a simple time and space profile - the profiling chapter in the GHC Users's Guide should tell how
10:41:50 <haskellbridge> <sm> you must make a profiling build of your app, then run it with special flags
10:42:04 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
10:44:12 <haskellbridge> <sm> it will be hard to understand completely, but full of useful information. You can also process it with https://hackage.haskell.org/package/profiterole which makes it more readable.
10:45:29 <haskellbridge> <sm> and you're right, it's overallocating (garbage collection should be a small percentage of your run time)
10:45:32 <Guest89> I'll be honest, I haven't figured out how to interact with packages like that yet; I've used stuff like eventlog2html but compiled as a separate executable
10:45:59 <Guest89> I've mostly relied on the metrics provided by different RTS options so far
10:46:16 <Guest89> it's verbose but I can navigate it at least?
10:46:33 <haskellbridge> <sm> yes, +RTS -s is useful
10:47:46 <haskellbridge> <loonycyborg> https://github.com/ezyang/compact <- this might help with excessive gc times
10:47:48 <Guest89> I have some data that suggests that the data itself isn't fragmented but the program allocates about twice as much as it uses, which also seems excessive
10:48:10 <Guest89> I've already been trying to use GHC.Compact but it doesn't seem to have affected runtimes at all
10:48:33 <Guest89> I assume there is some structure in my code that exacerbates the problem but I can't really see where
10:49:28 <Guest89> it's supposed to be an implementation of I/O efficient BDD (binary decision diagram) algorithms which necessarily generates a lot of data so I need some way to minimize overhead where it's reasonable
10:49:57 Ranhir joins (~Ranhir@157.97.53.139)
10:50:08 <haskellbridge> <sm> it may be normal that the program uses 2 or even 3 times what you think, depending how you measure it, because of how GC works (making copies)
10:50:38 arandombit joins (~arandombi@user/arandombit)
10:50:51 <haskellbridge> <sm> the time and space profile will show you the top users of time and space, and will show you any crazy large call counts indicating things called too often
10:50:56 <Guest89> I understand, but the issue is that my implementation uses something like 100 times as much memory as a reference implementation in C++
10:51:26 <Guest89> obviously you can't get the performance *that* close, at least not in terms of memory, but as things are it's both an absurd difference and not feasible
10:51:37 <haskellbridge> <loonycyborg> Maybe it's thunk explosion somewhere, like from foldl
10:51:53 <haskellbridge> <sm> it requires investigation, there's no way round it
10:52:17 <Guest89> I've tried both strict and non-strict versions of foldl, and I didn't seem to see any issues
10:52:40 <Guest89> most of the actual allocation happens within the core algorithms, but I've also tried varying levels of strictness there
10:52:49 <haskellbridge> <loonycyborg> ye it's just an example
10:53:30 <Guest89> I just don't see how garbage collection can dominate the runtime so much
10:55:14 <haskellbridge> <sm> well, how much memory does +RTS -s say is being allocated ?
10:55:26 <Guest89> is it possible to paste pictures over IRC?
10:55:31 <Guest89> or should I just put it in writing
10:55:46 <haskellbridge> <sm> it's a lot easier if you use the matrix room
10:55:46 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 248 seconds)
10:55:58 <Guest89> not familiar
10:56:37 <Guest89> I guess I'll just write it down:
10:56:45 <Leary> Guest89: The problem is less likely to be allocations than unnecessary retention or unwanted thunks bloating your representation. Allocating is almost free, holding onto it is what costs you. In any case, I would start by heap profiling by type, which doesn't actually require a profiling build.
10:57:14 <Leary> @where paste
10:57:14 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
10:57:29 Beowulf joins (florian@sleipnir.bandrate.org)
10:57:34 <Guest89> https://paste.tomsmeding.com/xZZPhSCR
10:58:11 <Guest89> the only thing I haven't tried has to force computations in different places
10:58:49 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
10:58:57 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
10:59:04 <Guest89> my reference implementation generates only a few megabytes of data by comparison but again it's not comparable 1:1
10:59:22 × hiecaq quits (~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.2))
10:59:28 <haskellbridge> <sm> how do you do that Leary ?
10:59:50 <Guest89> it's one of the -l(x) RTS settings
11:00:49 <Leary> -hT: https://downloads.haskell.org/ghc/latest/docs/users_guide/profiling.html#rts-options-heap-prof
11:00:51 <Guest89> sorry, -h
11:01:03 <Guest89> i'll give it a whirl
11:01:49 <Guest89> I have some plots from using -hc that tells me which functions allocate the most but to be honest they're not particularly surprising in that department
11:02:32 ChaiTRex joins (~ChaiTRex@user/chaitrex)
11:02:52 <Guest89> also I've been relying on using eventlog2html but it seems to break fairly easily. are there any other options for visualizing the profiles?
11:08:11 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
11:11:08 <Guest89> seems the biggest allocations come from primitive types, tuples etc
11:15:03 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
11:16:09 <probie> Beyond the special syntax, tuples aren't really much different from `data T2 a b = T2 a b`, `data T3 a b c = T3 a b c`, `data T4 a b c d = T4 a b c d` etc.
11:17:07 <Guest89> I thought ghc treated them differently?
11:17:16 <probie> Why?
11:17:43 <Guest89> I just understood ghc optimized for tuples in particular over ordinary data constructors
11:21:47 <Leary> Guest89: It might here and there, but that doesn't mean you're better off using them. In particular, they're lazy, so they can easily accumulate big thunks. I suggest replacing such parts of your representation with suitably strict bespoke data declarations.
11:22:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
11:22:46 <probie> GHC is capable of doing something like `f x = (x, x+1)`, `g x = let (a, b) = f x in a + b` without actually allocating a tuple (assuming it can inline `f`), but that's the same for any user defined type as well
11:23:55 <probie> If you need multiple return values and can't afford an allocation, look at unboxed tuples (although this is likely overkill)
11:26:10 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
11:27:58 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
11:29:16 <Guest89> I tried playing around with unboxed tuples and different pragmas like unpacking but they seemed to have varying/counterintuitive results
11:29:47 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
11:29:55 <Guest89> I should probably experiment with it more but it seemed like allocations went down only a little (or at least less than I expected) while somehow runtimes increased slightly
11:30:20 <Guest89> but it kind of feels like I am at the kitchen sink stage in general if I'm being honest
11:31:40 <Guest89> actually, one thing I have been doing in general is guard patterns for unpacking. are they lazy as well or strict the same way pattern matching is?
11:33:56 <haskellbridge> <sm> Guest89 you won't be able to fix it by kitchen sink experimenting, you'll need to dig in and understand. There's likely many causes of space leak
11:34:24 <haskellbridge> <sm> reducing to a simple program you can share, may help
11:35:18 <haskellbridge> <sm> or, commenting out large chunks of your program to see what makes a difference
11:35:51 <haskellbridge> <sm> if you make a profile, people here will help you read it
11:38:05 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
11:38:34 <Guest89> when you say *make* a profile, what do you mean exactly?
11:38:54 <haskellbridge> <sm> I looked it up: stack install --profile PROG; PROG +RTS -P -RTS ... this will save PROG.prof
11:38:58 <Guest89> I've got the files from profiling and some html pages rendered from them if that's what you mean
11:39:54 <Guest89> do you just want a file dump?
11:40:02 <haskellbridge> <sm> do you have a .prof file ?
11:40:07 <Guest89> yes
11:40:18 <haskellbridge> <sm> by all means show it :)
11:40:51 <Guest89> https://paste.tomsmeding.com/AUb2v7Sh
11:41:02 Square3 joins (~Square@user/square)
11:41:39 <haskellbridge> <sm> lovely. And it might be interesting to run profiterole on that too.
11:42:17 <Guest89> will try
11:43:01 <haskellbridge> <sm> see the entries column.. you have something being called 26 million times, eg. Is that what you'd expect ? Is the data that large ?
11:43:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
11:43:12 arandombit joins (~arandombi@user/arandombit)
11:43:34 <Guest89> so currently on a benchmark that I have (encoding `n-queens`) the number of nodes in my data structure is expected to quadruple for each n but currently space and time seems to increase 10-fold instead
11:43:46 <Guest89> but on that particular run; no, that is excessive
11:44:02 <haskellbridge> <sm> it sounds like something is doing too much work
11:44:30 <haskellbridge> <sm> $wbddApply'' is called half a million times
11:44:50 <Guest89> let me try something for a quick sanity check
11:44:57 <haskellbridge> <sm> $sinsert_$sgo4 14 million. maybe one of those...
11:45:47 <haskellbridge> <sm> (I don't know why these names are obfuscated)
11:46:07 <Guest89> I don't know what they are either
11:46:16 <Guest89> I've only seem them now that I'm running with -P instead of -p
11:47:02 <Guest89> well insert is probably from the data structure I use to maintain a priority queue
11:48:17 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 268 seconds)
11:50:02 <Guest89> so in this particular example the data is generated from a fold that iteratively uses bddApply on new BDDs, but only 7 times total. the largest BDDs being applied have a few thousand nodes each, which means that the upper bound for bddApply will necessarily be in the millions
11:50:19 <Guest89> but most likely it should be less than that because of short circuiting on a lot of the node combinations
11:50:44 <Guest89> it seems like a lot but I can't dismiss it as unexpected
11:52:51 <haskellbridge> <sm> it looks like there's a lot comparing needed to do an insert. Is it your own custom priority queue ?
11:54:13 __monty__ joins (~toonn@user/toonn)
11:54:15 merijn joins (~merijn@62.45.136.136)
11:56:58 × Guest89 quits (~Guest89@185.45.21.144) (Ping timeout: 240 seconds)
11:58:49 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds)
11:58:53 <haskellbridge> <sm> got to go.. good luck
11:59:28 bggd__ joins (~bgg@2a01:e0a:fd5:f510:537e:c033:7f9f:3728)
12:03:00 × fun-safe-math quits (~fun-safe-@97.115.234.213) ()
12:05:04 fun-safe-math joins (~fun-safe-@97.115.234.213)
12:06:12 × Square3 quits (~Square@user/square) (Remote host closed the connection)
12:06:30 Square joins (~Square@user/square)
12:09:37 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
12:11:01 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
12:13:14 × czan quits (~czan@user/mange) (Ping timeout: 245 seconds)
12:14:10 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
12:19:46 target_i joins (~target_i@user/target-i/x-6023099)
12:23:39 merijn joins (~merijn@62.45.136.136)
12:26:35 Guest89 joins (~Guest89@185.45.21.144)
12:27:09 <Guest89> sorry I think I lost connection; I posted some replies to you sm but I'm not sure if they got through?
12:28:10 <int-e> no, but also: <+haskellbridge> <sm> got to go.. good luck
12:28:16 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds)
12:28:20 <Guest89> darn
12:29:55 <Guest89> if anyone else has any suggestions in the meantime, this is how my comparators are defined for the busiest functions https://paste.tomsmeding.com/jSnEEitE
12:36:52 Tuplanolla joins (~Tuplanoll@88-114-89-88.elisa-laajakaista.fi)
12:39:11 merijn joins (~merijn@62.45.136.136)
12:43:53 wootehfoot joins (~wootehfoo@user/wootehfoot)
12:45:36 <Leary> Guest89: All of your data is lazy, even `Uid`; `data Uid = Uid {-# UNPACK #-} !(Int, Int)` is essentially equivalent to `data Uid = Uid Int Int`. If you're not utilising that laziness, kill it with strictness annotations.
12:46:08 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 252 seconds)
12:48:05 arandombit joins (~arandombi@user/arandombit)
12:51:29 <Guest89> I presume you mean at a function level?
12:51:34 <Guest89> I assumed the unpack itself made it strict
12:53:19 <Leary> No, the data constructors. `data Uid = Uid !Int !Int`; `data Ptr = PtrLeaf !Bool | PtrNode !Uid`; etc.
12:53:38 <Guest89> so what does unpack do in this case?
12:54:07 <Guest89> does it just transform the constructor into another one with the same arity as the tuples?
12:54:20 <int-e> yes
12:54:24 <Leary> `UNPACK` is only a hint for the compiler; it can't fundamentally change the semantics, which include the fields of `(,)` being lazy---that blocks any further unpacking.
12:55:10 <Guest89> right, but bangs force a semantics change?
12:55:36 <Leary> Yes.
12:56:06 <Guest89> I will play around and see what changes
12:56:38 <int-e> if you have data X = X (Int,Int) and data Y = Y !(Int,Int) then the difference is that you can have an `X bottom` value that's distinct from bottom, but `Y bottom` is just bottom.
12:56:55 <int-e> But you can still have Y (bottom, bottom)
12:57:07 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
12:57:27 <Guest89> I haven't really figured how you can even get bottom in practice
12:57:54 <int-e> And for a lazy language, you can also have thunks whereever bottoms can go, so you can't unpack anything in those places.
12:58:02 <int-e> > undefined
12:58:03 <lambdabot> *Exception: Prelude.undefined
12:58:03 <lambdabot> CallStack (from HasCallStack):
12:58:03 <lambdabot> undefined, called at <interactive>:3:1 in interactive:Ghci1
12:58:05 <int-e> > fix id
12:58:12 <lambdabot> *Exception: <<timeout>>
12:58:29 <Guest89> fair point
12:58:31 <int-e> (Those are the usual manifestations in Haskell: an explicit error value, or nontermination)
12:58:56 <Guest89> guess I assumed it to be semantically different from an exception but I think I get what you mean
12:59:45 <Guest89> I guess the point is that you prefer strict data when it contains primitives?
13:00:03 <int-e> yes, usually
13:00:13 <Guest89> makes sense I suppose
13:00:24 <haskellbridge> <loonycyborg> > length [undefined, undefined, undefined]
13:00:31 <haskellbridge> <loonycyborg> hmm
13:00:43 <haskellbridge> <loonycyborg> it ate '>'
13:00:59 <Guest89> and I guess the same if you have strict data in another type?
13:01:22 <int-e> (Unpacking isn't completely free: If you unpack and later repack a value, that means a new heap object has to be created for it. This is why for data, GHC only does it when you give it a hint to do so.)
13:01:38 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
13:01:45 <__monty__> loonycyborg: No, the Matrix bridge is a single bot IRC-side. So your messages are prefixed with your nick.
13:02:24 <haskellbridge> <loonycyborg> is there a way to interact with lambabot from matrix?
13:05:16 <Leary> I gather you just need to put the command in a second line.
13:05:57 tremon joins (~tremon@83.80.159.219)
13:06:27 <__monty__> Isn't each line prefixed?
13:09:23 <[exa]> tusko: do write in other languages to learn and appreciate the difference. :]
13:11:33 <Leary> __monty__: See this snippet I grepped from my logs: https://paste.tomsmeding.com/dXOuNbFn
13:13:10 merijn joins (~merijn@62.45.136.136)
13:15:07 <__monty__> Ah, great, that should work for loonycyborg then.
13:17:21 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds)
13:22:25 <haskellbridge> <loonycyborg> > length [undefined, undefined, undefined]
13:22:36 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 264 seconds)
13:22:55 <__monty__> loonycyborg: Was that with a blank line? Maybe it can't be blank.
13:24:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
13:24:54 <haskellbridge> <loonycyborg> test
13:24:54 <haskellbridge> test
13:25:16 <haskellbridge> <loonycyborg> is one of those tests without prefix?
13:25:26 <__monty__> Yep, the latter.
13:26:11 <int-e> well, it had a leading space
13:26:14 <haskellbridge> <loonycyborg> test
13:26:14 <haskellbridge> length [undefined, undefined, undefined]
13:26:30 <haskellbridge> <loonycyborg> test
13:26:30 <haskellbridge> > length [undefined, undefined, undefined]
13:26:31 <lambdabot> 3
13:26:50 <haskellbridge> <loonycyborg> hmm nice
13:26:55 <[exa]> Guest89: based on my experience on a similar project that allocated a lot, you really want to make the tuples strict.
13:27:17 <haskellbridge> <loonycyborg> > length [undefined, undefined, undefined]
13:28:19 <[exa]> ( "similar" based solely on fact I had complex IDs and a structure of them :D )
13:28:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
13:29:34 <Guest89> yeah I'm working on it exa; I'm not seeing as big a reduction in memory as I expected. seems more thunks are being allocated now instead
13:30:27 <[exa]> Guest89: do you have some compiler options that force it to specialize stuff?
13:30:35 <Guest89> not anything that specializes
13:30:38 <[exa]> Guest89: ( ghc-options: -O2 -fspecialise-aggressively -fexpose-all-unfoldings )
13:30:57 <Guest89> I've got -O1 enabled atm but I didn't observe much when I tried -O2
13:31:03 <Guest89> I can try some of the other settings later though
13:31:19 <Guest89> mostly I've tried to use pragmas to force things like inlining, but I haven't done anything to specialize
13:31:45 <Guest89> what are the benefits of specializing, exactly?
13:31:53 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 268 seconds)
13:31:57 <[exa]> in short ghc seemed quite lazy to inline stuff across modules unless I asked for it explicitly
13:32:17 <[exa]> if you specialize code you don't need to send the typeclass pointer around
13:32:31 <[exa]> and the specialized code is much more likely to realize that it can do stuff strictly
13:32:34 <Guest89> because it has a separate definition already?
13:32:38 <Guest89> from the specialization
13:32:43 <[exa]> yeah
13:32:43 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
13:32:45 <Guest89> hmm
13:33:00 chromoblob joins (~chromoblo@user/chromob1ot1c)
13:33:06 <Guest89> you have to do twice the work though in terms of source code though, right?
13:33:38 <[exa]> like, the part with typeclass dictionaries getting passed around is not a huge deal, but in the end you may have 1 less allocation, and the possibility to specialize is open
13:33:54 <[exa]> yeah it may cost an extra copy of the code
13:34:20 <[exa]> (tbh my binary changed from like 9M to 9.5M when I was trying it, so I decided I don't care)
13:35:36 <Guest89> I'm doing this for my master's thesis, but I'll probably end up presenting a "clean" version that's semantically correct in the thesis itself and then using an optimized version for the actual benchmarks
13:35:53 <Guest89> my tl;dr is that the extra LOC should be whatever
13:36:39 <[exa]> Guest89: by "semantically correct" you mean "readable" :D
13:37:12 CallipygousPepe joins (~reuben@user/CallipygousPepe)
13:37:45 <Guest89> well it's supposed to be an implementation that can be used as a jumping-off point if someone more nerdy about proofs would want to make a provably correct version
13:38:16 <Guest89> so compiler- or language-specific optimizations are kind of not the point there
13:38:23 <[exa]> anyway lots of the allocations in your profile actually seem to point to typeclass methods so I guess that a bit of specialization could help there
13:38:30 <Guest89> I will look into it
13:38:52 × madresch quits (~Thunderbi@user/madresch) (Ping timeout: 256 seconds)
13:38:53 <Guest89> inlining seemed to take the worst of the initial overhead (like 20% or something) but yeah, thunsk everywhere
13:39:25 <[exa]> also do add bangs to all your datatype definitions (Pair !Ptr !Ptr, etc)
13:39:48 <[exa]> (except the ones where you know that laziness is required)
13:40:04 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
13:41:02 <Guest89> I mean the primary data structure is itself one big list, but I'm still not sure whether laziness or not is the way to go
13:42:41 <[exa]> well lmk if these 2 things change anything, if not I'd say we profile again and see
13:43:01 <Guest89> I've cut off about 30% of the allocations so far with it
13:43:03 <Guest89> do you want a new profile?
13:43:23 <[exa]> oh cool
13:43:42 <Guest89> we could move to a separate chat if you want
13:44:17 <[exa]> btw you can write that case-y comparison as: `compare s1 s2 <> compare r1 r2 <> compare ishigh1 ishigh2`
13:44:24 <Guest89> ooo
13:44:50 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
13:45:39 <[exa]> btw do you store these things in some kindof priority queue or ordered container or so?
13:45:51 <Guest89> yes
13:45:57 <[exa]> so a priority list?
13:46:02 <Guest89> it's not as much of a hot spot as I expected
13:46:20 <[exa]> just in case lemme find my quickhacked heapqueue implementation
13:46:27 <Guest89> right now it's just a red-black tree so it's not an optimal priority queue
13:46:42 <Guest89> I was conisdering using I think it's called PQueue?
13:46:51 <Guest89> the only asymptotic difference is constant or log time lookup though
13:47:43 <Guest89> otherwise I have some toy implementations from chris okasaki's book but it's, uhh, not working as intended right now
13:48:09 <[exa]> PQueues are great IF you need to also pick the elements by some index
13:48:21 <[exa]> if not they are strictly slower than a manual arrayheap
13:48:28 <Guest89> I only ever need the smallest element
13:48:41 <Guest89> part of my thesis involves *not* using arrays though
13:49:27 <[exa]> tuple is also an array
13:49:30 [exa] hides
13:49:47 <haskellbridge> <loonycyborg> if you ever need smallest element you can use set
13:50:01 <[exa]> +1 for set, not too slow at all
13:50:36 <[exa]> anyway I ended up replacing pqueue with this (the code is essentially a multi-stream merge): https://paste.tomsmeding.com/UskOMkBm, was like 3x faster
13:51:41 <[exa]> (apologies for the streaming mess around)
13:52:32 <[exa]> (missing def.: ofKey (a :> _) = a )
13:55:52 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
14:00:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
14:07:26 <Guest89> well the point is more that the data structures should be limited to trees and lists
14:08:00 <Guest89> exa do you have a reference description of the data structure?
14:11:39 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
14:12:06 <Guest89> oh damn, strict data actually massively improved the runtime on larger inputs
14:16:50 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
14:25:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
14:28:35 simpleshun joins (~simpleshu@user/SimpleShun)
14:32:17 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
14:43:20 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
14:47:53 GdeVolpi1 joins (~GdeVolpia@user/GdeVolpiano)
14:48:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
14:48:25 × GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Read error: Connection reset by peer)
14:52:21 AlexNoo_ joins (~AlexNoo@178.34.150.243)
14:52:42 <[exa]> Guest89: oh great :)
14:53:07 AlexNoo__ joins (~AlexNoo@178.34.150.243)
14:53:12 <[exa]> Guest89: the structure is a completely normal binary heap in array, makeHeap and related stuff is on wiki
14:53:29 <Guest89> I think for the purposes of my thesis it's invalid because I theoretically can't rely on random access
14:54:33 <[exa]> wait why not (you're proving that something can be done purely?)
14:54:46 <Guest89> yes
14:54:52 <[exa]> I kinda thought that this is the implementation of the system where you're proving stuff
14:55:10 <[exa]> anyway if that's the case, Data.Set is pure and should be quite fast too.
14:55:22 <Guest89> Data.Set is probably a fine compromise for the moment
14:55:35 × AlexNoo quits (~AlexNoo@178.34.150.243) (Ping timeout: 245 seconds)
14:56:09 <Guest89> I may have to investigate more specialized data structures depending on whether or not I am brave enough to try to make the implementation work on the disk
14:56:42 AlexNoo joins (~AlexNoo@178.34.150.243)
14:56:50 × AlexNoo_ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
14:57:22 × AlexNoo__ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
14:57:25 AlexNoo_ joins (~AlexNoo@178.34.150.243)
14:58:09 AlexNoo__ joins (~AlexNoo@178.34.150.243)
14:58:14 <[exa]> iirc there's some way to make a functionally-friendly heap but I don't recall any ATM... probably some version of the binomial one should behave nicely
14:58:59 <Guest89> Chris Okasaki's book has a few examples
14:59:04 <Guest89> including a binomial heap
14:59:17 <[exa]> well I should finally find time to read that one in full
14:59:36 <Guest89> ideally I need a purely functional and I/O-efficient at the same time but that has never been described in any literature
14:59:52 <Guest89> so either I need to take the (relatively small) performance loss or invent a whole new kind of wheel in the process
15:00:31 <Guest89> would be nice to have constant time lookup at least though
15:00:37 <[exa]> btw what's the whole thing about?
15:00:52 <Guest89> https://dl.acm.org/doi/10.1145/2429069.2429077
15:00:55 <[exa]> (kinda curious, because it looks like you're proving something directly on the haskell code)
15:01:06 × AlexNoo quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
15:01:20 <Guest89> and https://ssoelvsten.github.io/adiar/
15:01:38 × AlexNoo_ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
15:01:39 <Guest89> I'm not a proof guy, I just wanted the best tools to support the limitations provided by the paper I linked
15:02:00 <Guest89> basically I'm trying make the first purely functional implementation of an I/O-efficient algorithm
15:02:38 <Guest89> and hopefully also demonstrate that the bounds are the same in either paradigm (i.e. compared to imperative)
15:02:42 × AlexNoo__ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
15:03:02 × m_a_r_k quits (~m_a_r_k@archlinux/support/mark) (Read error: Connection reset by peer)
15:03:47 × Digit quits (~user@user/digit) (Ping timeout: 244 seconds)
15:04:09 <Guest89> but haskell is a good candidate for *specification* template because it's got a very presentable syntax and it has a decent compromise between being very close to total functional/proof assistant syntax while still having very mature libraries and performance
15:04:15 <Guest89> (and then there's laziness as we've discussed)
15:04:53 <[exa]> ahhhhhhhhhhh
15:05:00 <[exa]> okay now it makes sense
15:06:40 <[exa]> tbh I'd recommend splitting of a "clean" version and a "provably same but fast" version, like you suggested before
15:06:52 <[exa]> make yourself a newtype for list and call it "priority queue"
15:07:10 <[exa]> in the benchmarking version you change only this newtype and handling functions, and plug in anything that is fast
15:07:14 <Guest89> the best candidate for a performant implementation would be in koka if you know the language but it's not mature at all
15:07:23 <Guest89> hmm maybe
15:07:26 <[exa]> you can make a quickcheck for equivalence
15:07:32 <[exa]> which "proves" it ;)
15:07:53 <Guest89> that's also not a bad idea, I was going to use quickcheck down the line anyway
15:08:07 <[exa]> koka ain't bad, maybe ask the authors for opinion, maybe they'd have some bright ideas on what to do there
15:08:09 <Guest89> I just didn't want to commit to a "clean" version before I had settled things like the type definitions
15:08:37 <Guest89> I've actually spoken to one of the contributors before but they're not involved with the I/O algorithm part of it
15:09:00 <Guest89> but one restriction that I *theoretically* have is the need for deep copying, which koka seems to have built in
15:09:25 <[exa]> well, yeah.
15:09:43 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
15:09:51 <[exa]> I've got to go btw, have good luck
15:09:53 <Guest89> otherwise compacting or ghc-dup (which I haven't tried yet and has its own limitations) is my goto
15:10:02 <Guest89> thanks a bunch for the feedback
15:10:16 <[exa]> btw stay around until like monday, more people active by then
15:14:28 × Guest89 quits (~Guest89@185.45.21.144) (Ping timeout: 240 seconds)
15:15:40 qqq joins (~qqq@185.54.23.93)
15:19:17 × tromp quits (~textual@2001:1c00:3487:1b00:e975:d7be:a717:768f) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:20:30 Guest89 joins (~Guest89@185.45.21.144)
15:26:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
15:26:35 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
15:30:13 wootehfoot joins (~wootehfoo@user/wootehfoot)
15:31:09 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
15:34:28 × Guest89 quits (~Guest89@185.45.21.144) (Ping timeout: 240 seconds)
15:35:06 × bggd__ quits (~bgg@2a01:e0a:fd5:f510:537e:c033:7f9f:3728) (Remote host closed the connection)
15:36:52 ss4 joins (~wootehfoo@user/wootehfoot)
15:38:42 metabulation joins (~wootehfoo@user/wootehfoot)
15:39:20 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 245 seconds)
15:42:05 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
15:42:19 × ss4 quits (~wootehfoo@user/wootehfoot) (Ping timeout: 264 seconds)
15:43:27 wootehfoot joins (~wootehfoo@user/wootehfoot)
15:44:07 × metabulation quits (~wootehfoo@user/wootehfoot) (Ping timeout: 264 seconds)
15:46:36 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
15:56:31 tromp joins (~textual@2001:1c00:3487:1b00:e975:d7be:a717:768f)
15:57:26 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
15:58:35 × simpleshun quits (~simpleshu@user/SimpleShun) (Quit: WeeChat 4.8.1)
16:02:38 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
16:04:45 × qqq quits (~qqq@185.54.23.93) (Remote host closed the connection)
16:13:06 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
16:17:53 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
16:19:12 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
16:20:50 weary-traveler joins (~user@user/user363627)
16:21:51 arandombit joins (~arandombi@user/arandombit)
16:24:06 atejandev joins (~ajdev@user/atejandev)
16:26:30 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
16:26:50 × atejandev quits (~ajdev@user/atejandev) (Client Quit)
16:27:42 merijn joins (~merijn@62.45.136.136)
16:28:09 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
16:30:46 weary-traveler joins (~user@user/user363627)
16:33:40 madresch joins (~Thunderbi@user/madresch)
16:34:12 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds)
16:34:22 atejandev joins (~ajdev@user/atejandev)
16:35:36 × madresch quits (~Thunderbi@user/madresch) (Read error: Connection reset by peer)
16:45:21 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
16:49:09 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
16:49:47 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:50:33 weary-traveler joins (~user@user/user363627)
16:50:50 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
16:51:00 × atejandev quits (~ajdev@user/atejandev) (Quit: Konversation terminated!)
16:52:57 gmg joins (~user@user/gehmehgeh)
16:55:23 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds)
17:01:08 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
17:06:37 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
17:07:49 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
17:16:26 × img quits (~img@user/img) (Quit: ZNC 1.10.1 - https://znc.in)
17:16:55 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
17:17:42 img joins (~img@user/img)
17:20:39 madresch joins (~Thunderbi@user/madresch)
17:21:54 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
17:28:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
17:33:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
17:40:44 jmcantrell_ joins (~weechat@user/jmcantrell)
17:44:05 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
17:46:23 AlexNoo joins (~AlexNoo@178.34.150.243)
17:46:35 × hellwolf quits (~user@4884-83b1-dc5a-ca70-0f00-4d40-07d0-2001.sta.estpak.ee) (Ping timeout: 272 seconds)
17:47:08 AlexNoo_ joins (~AlexNoo@178.34.150.243)
17:47:52 AlexNoo__ joins (~AlexNoo@178.34.150.243)
17:48:31 Digit joins (~user@user/digit)
17:49:00 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
17:50:42 × AlexNoo quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
17:51:38 AlexNoo joins (~AlexNoo@178.34.150.243)
17:51:46 × AlexNoo_ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
17:51:57 hellwolf joins (~user@a38e-19d1-a5f7-21b5-0f00-4d40-07d0-2001.sta.estpak.ee)
17:52:18 × AlexNoo__ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
17:52:21 AlexNoo_ joins (~AlexNoo@178.34.150.243)
17:56:02 × AlexNoo quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
17:56:34 × AlexNoo_ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
17:59:52 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
18:01:09 <haskellbridge> <zb> how many equations can i use to define a single function in haskell? is 15k too much? :P (they would be something like f :: Word8 -> Word8 -> Word8 -> Char)
18:02:49 <monochrom> I think there is no preset limit apart from what GHC and your computer can handle.
18:03:01 <monochrom> (oh and how long you can wait :) )
18:03:27 <monochrom> https://xkcd.com/303/ applies >:)
18:03:29 <haskellbridge> <zb> but it would prably be better to take an other approach?
18:04:29 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
18:06:21 <monochrom> Just for auditability you should find a better way, i.e., a way that leads to code easy to check.
18:10:32 <EvanR> worked for einstein
18:10:49 <EvanR> the einstein equation for GR expands to like... a lot of equations
18:11:10 <haskellbridge> <zb> (this would be charset conversion tables, which i guess i would want to somehow compile into the module for efficiency. the specific module would define only the one 15k equations function)
18:12:42 <monochrom> 15k lines of "f 1 2 3 = 4" is likely compiled to exhaustive search over 15k cases.
18:12:58 × CallipygousPepe quits (~reuben@user/CallipygousPepe) (Quit: Konversation terminated!)
18:15:17 <haskellbridge> <zb> ah... i was hoping for the compiler make it into some clever hash lookups or something :D
18:16:41 <haskellbridge> <zb> kind of expecting, really, since defining the (f 1)’s shouldn’t be too many lines!
18:17:43 driib3180 joins (~driib@176.57.184.141)
18:17:46 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
18:21:08 × driib3180 quits (~driib@176.57.184.141) (Client Quit)
18:22:05 <c_wraith> GHC *might* make it a trie at best - collapsing all the prefixes together. I wouldn't expect anything more clever than that.
18:23:14 <c_wraith> Though I guess that still has as many leaves as there are equations, so it's not really doing much besides eliminating redundant checks
18:24:19 <monochrom> Ah yeah, that. "f 1 2 3 = 4; f 1 3 7 = 2" is likely "f x y z = case x of 1 -> {cases for y and z under x=1}". But really, the benefit is negligible until you ask "can I have a function of 15k arguments?" >:)
18:25:00 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
18:26:23 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
18:30:51 × tromp quits (~textual@2001:1c00:3487:1b00:e975:d7be:a717:768f) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:33:05 × kadobanana quits (~mud@user/kadoban) (Ping timeout: 245 seconds)
18:34:05 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
18:44:55 <[exa]> zb: if you totally need some such thing to happen you might want to have some templatehaskell preprocessing step that chews the 15k alternatives into something more tangible for ghc
18:45:06 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
18:45:16 <haskellbridge> <zb> for the record: it works! or i think it does! though the compiling takes a couple of minutes, which is a bit inconvenient, and the first lookup i then did in my ghci session felt a bit slow, maybe like 0.5s. but then the next lookups don’t feel slow anymore. i did get a warning when compiling/loading the module: Pattern match checker exceeded (2000000) iterations in an equation for ‘g000’. (Use -fmax-pmcheck-iterations=n to set the...
18:45:22 <haskellbridge> ... maximum number of iterations to n)
18:45:22 <[exa]> also perhaps generating the alternatives in the process so that you don't have O(15k) of code
18:46:36 <haskellbridge> <zb> would you have any easy pointers to where i could read more about templatehaskell preprocessing?
18:49:45 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
18:49:53 <haskellbridge> <zb> (i’ll start from https://wiki.haskell.org/Template_Haskell)
18:50:23 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
18:54:19 <[exa]> yeah I'm not sure there's any actual tutorial, it's kinda materialized pre-compilation computation, IMO very good for such usecases
18:54:30 tromp joins (~textual@2001:1c00:3487:1b00:e975:d7be:a717:768f)
18:55:10 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
18:56:32 <c_wraith> perhaps shockingly, the ghc user's manual is actually where I learned most of what I know about template haskell.
18:57:25 <c_wraith> You still need to understand *why* you'd use it, but it still provides an incredible reference for what all the syntax does.
18:58:17 <haskellbridge> <sm> what is this "manual" you speak of...
18:59:00 <c_wraith> some arcane bit of lore. (I think it's actually called the User Guide? Eh. Whatever.)
18:59:40 <haskellbridge> <sm> wizardry!
19:01:32 × Square quits (~Square@user/square) (Remote host closed the connection)
19:06:12 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
19:08:10 stackdroid18 joins (~stackdroi@user/stackdroid)
19:11:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
19:11:17 DetourNe- joins (~DetourNet@user/DetourNetworkUK)
19:11:37 elarks joins (~elarks@user/yerrii)
19:11:44 × DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
19:13:28 DetourNe- is now known as DetourNetworkUK
19:14:55 <EvanR> luckily O(15000) is really efficient
19:16:28 zb joins (jobnbg@bot.kapsi.fi)
19:21:48 <haskellbridge> <zb> yes!
19:21:58 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
19:26:51 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
19:29:01 Sgeo joins (~Sgeo@user/sgeo)
19:37:45 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
19:41:58 <monochrom> The Forbidden GHC Sutra
19:42:40 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
19:43:44 × turlando quits (~turlando@user/turlando) (Ping timeout: 268 seconds)
19:49:04 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
19:49:32 oskarw joins (~user@user/oskarw)
19:50:07 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
19:50:14 ft joins (~ft@p4fc2a98c.dip0.t-ipconnect.de)
19:51:56 Lord_of_Life_ is now known as Lord_of_Life
19:53:55 merijn joins (~merijn@62.45.136.136)
19:55:05 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
19:57:18 mud joins (~mud@user/kadoban)
20:00:21 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds)
20:03:42 Anarchos joins (~Anarchos@91-161-254-16.subs.proxad.net)
20:11:36 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
20:16:31 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
20:16:48 madresch1 joins (~Thunderbi@user/madresch)
20:16:50 × madresch quits (~Thunderbi@user/madresch) (Ping timeout: 245 seconds)
20:16:54 madresch1 is now known as madresch
20:23:05 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
20:26:22 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Client Quit)
20:27:22 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
20:27:48 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
20:32:20 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
20:32:34 pavonia joins (~user@user/siracusa)
20:35:31 eLx joins (~eLx@2001:1c00:6892:ff00:ec3b:4a35:ffd2:2ee3)
20:39:11 × eLx quits (~eLx@2001:1c00:6892:ff00:ec3b:4a35:ffd2:2ee3) (Client Quit)
20:39:42 ss4 joins (~wootehfoo@user/wootehfoot)
20:39:49 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:41:07 × RMSBach quits (~RMSBach@24.210.9.182) (Ping timeout: 264 seconds)
20:41:26 RMSBach joins (~RMSBach@2603:6013:9b00:a7c8:e7e5:f272:eb86:ddf)
20:43:10 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
20:45:31 × ss4 quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
20:48:18 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
20:49:28 wootehfoot joins (~wootehfoo@user/wootehfoot)
20:52:32 somemathguy joins (~somemathg@user/somemathguy)
20:53:45 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Client Quit)
20:56:14 wootehfoot joins (~wootehfoo@user/wootehfoot)
20:58:57 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
21:03:30 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
21:07:15 machinedgod joins (~machinedg@d172-219-48-230.abhsia.telus.net)
21:14:32 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
21:17:05 × Digit quits (~user@user/digit) (Ping timeout: 252 seconds)
21:17:12 Digitteknohippie joins (~user@user/digit)
21:19:18 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
21:25:56 AlexNoo joins (~AlexNoo@178.34.150.243)
21:26:42 AlexNoo_ joins (~AlexNoo@178.34.150.243)
21:27:26 AlexNoo__ joins (~AlexNoo@178.34.150.243)
21:29:44 × takuan quits (~takuan@141.134.185.233) (Ping timeout: 244 seconds)
21:30:22 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
21:30:26 × AlexNoo quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
21:30:58 × AlexNoo_ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
21:31:30 × AlexNoo__ quits (~AlexNoo@178.34.150.243) (Ping timeout: 248 seconds)
21:37:36 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
21:48:22 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
21:48:27 arandombit joins (~arandombi@2a02:2455:8656:7100:49f2:4a42:13a7:5052)
21:48:27 × arandombit quits (~arandombi@2a02:2455:8656:7100:49f2:4a42:13a7:5052) (Changing host)
21:48:27 arandombit joins (~arandombi@user/arandombit)
21:48:39 humasect joins (~humasect@192.249.132.90)
21:53:03 czan joins (~czan@user/mange)
21:53:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
21:56:05 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 244 seconds)
22:17:56 srazkvt joins (~sarah@user/srazkvt)
22:18:06 × srazkvt quits (~sarah@user/srazkvt) (Client Quit)
22:24:30 × jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 244 seconds)
22:26:41 mjrosenb joins (~mjrosenb@pool-71-190-143-170.nycmny.fios.verizon.net)
22:26:42 jmcantrell_ joins (~weechat@user/jmcantrell)
22:28:36 <mjrosenb> I'm trying to stack with nix, and it looks like it is failing because when stack runs nix, it isn't getting the ssl certs correct. Does anyone know how to tell stack to run nix with a given ssl cert file?
22:30:30 × alethkit quits (23bd17ddc6@sourcehut/user/alethkit) (Remote host closed the connection)
22:31:07 alethkit joins (23bd17ddc6@sourcehut/user/alethkit)
22:32:14 × tromp quits (~textual@2001:1c00:3487:1b00:e975:d7be:a717:768f) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:41:34 pierluc-codes joins (~pierlucco@user/pierluc-codes)
22:45:19 tromp joins (~textual@2001:1c00:3487:1b00:e975:d7be:a717:768f)
22:48:26 × gabiruh quits (~gabiruh@191.252.222.55) (Quit: ZNC 1.7.5 - https://znc.in)
22:50:47 <sshine> huh
22:51:10 <sshine> is that because one of your dependencies uses ssl, or is it stack itself?
22:54:53 <mjrosenb> I assume it is stack itself.
22:55:07 <mjrosenb> since I ran into the same issue when attempting to create a template
22:55:21 <mjrosenb> which presumably was before I had any dependencies.
22:59:53 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:04:38 L29Ah joins (~L29Ah@wikipedia/L29Ah)
23:06:28 × humasect quits (~humasect@192.249.132.90) (Quit: Leaving...)
23:08:39 gabiruh joins (~gabiruh@191.252.222.55)
23:12:47 <sshine> mjrosenb, can you paste the error?
23:16:51 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:21:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
23:23:16 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 268 seconds)
23:26:53 × elarks quits (~elarks@user/yerrii) (Quit: WeeChat 4.7.1)
23:29:17 tcard_ joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
23:30:33 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Read error: Connection reset by peer)
23:32:27 <mjrosenb> https://gist.github.com/mjrosenb/a388a2a90d89386408949783d4c652c1
23:32:40 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:35:43 <mjrosenb> It looks like I can fix it with --no-nix-pure although --nix-shell-options "--keep NIX_SSL_CERT_FILE" didn't fix it.
23:37:36 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
23:39:42 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:41:41 <mjrosenb> although even --no-nix-pure, it is still failing due to missing Z -- which is what I thought nix was supposed to take care of when using stack's nix integration
23:44:52 × hiredman quits (~hiredman@frontier1.downey.family) (Remote host closed the connection)
23:45:03 × Anarchos quits (~Anarchos@91-161-254-16.subs.proxad.net) (Quit: Vision[]: i've been blurred!)
23:46:00 hiredman joins (~hiredman@frontier1.downey.family)
23:48:26 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:53:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
23:54:09 × czan quits (~czan@user/mange) (Ping timeout: 255 seconds)
23:58:32 Anamika joins (~Anamika@106.215.165.241)
23:59:34 <mjrosenb> ok, I think I figured it out. When using nix integration, you need to explicitly say which nix packages should be installed for building.

All times are in UTC on 2026-03-07.