Home liberachat/#haskell: Logs Calendar

Logs on 2023-10-29 (liberachat/#haskell)

00:04:22 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 255 seconds)
00:10:11 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
00:13:26 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
00:13:44 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:21:31 × dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
00:22:59 dolio joins (~dolio@130.44.134.54)
00:26:39 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
00:30:46 × dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
00:32:16 dolio joins (~dolio@130.44.134.54)
00:35:25 × Square quits (~Square@user/square) (Ping timeout: 255 seconds)
00:48:24 Square joins (~Square@user/square)
00:58:32 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
01:03:49 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds)
01:05:53 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:06:08 Sciencentistguy1 joins (~sciencent@hacksoc/ordinary-member)
01:07:49 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 255 seconds)
01:07:49 Sciencentistguy1 is now known as Sciencentistguy
01:23:47 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
01:23:47 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
01:23:47 wroathe joins (~wroathe@user/wroathe)
01:25:35 × wroathe quits (~wroathe@user/wroathe) (Client Quit)
01:52:22 × santiagopim quits (~user@90.167.66.131) (Ping timeout: 255 seconds)
01:56:45 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
02:02:52 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
02:10:22 × Square quits (~Square@user/square) (Ping timeout: 255 seconds)
02:19:13 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
02:21:39 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 258 seconds)
02:23:46 Guest37 joins (~Guest37@149.159.193.108)
02:27:15 × califax quits (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in)
02:29:32 <Guest37> I am trying to understand lenses, but I am not getting a clear answer as to what they exactly are! Some say they are getters and setters, and some say they are Turing complete, and I have seen some examples of them being used on JSON data like a query language. So, what exactly are they?
02:29:57 califax joins (~califax@user/califx)
02:30:05 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
02:32:06 × otto_s quits (~user@p5b044193.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
02:32:49 <EvanR> functional references on steroids
02:33:20 <EvanR> they let you reach into a data structure and do stuff
02:33:48 otto_s joins (~user@p5de2ff12.dip0.t-ipconnect.de)
02:35:52 <EvanR> Guest37, this documentation has a guided tour of using lenses, called optics here because there's more than just lenses going on https://hackage.haskell.org/package/optics-0.4.2/docs/Optics.html
02:35:52 <Guest37> I read on reddit that someone used lenses to manipulate json easily (instead of using some xpath/xquery style query language)
02:36:07 <Guest37> So, do they replace query languages?
02:37:58 <Guest37> EvanR, thanks for that link. I'll go through it.
02:38:10 <geekosaur> you can think of them as a query language but they're more flexible than that
02:38:13 <EvanR> a set of combinators for your data structure could act as a query language easily, if all you want to do is extract pieces
02:38:31 <EvanR> but lens lets you go in and update pieces
02:38:36 <EvanR> and other things
02:39:00 <geekosaur> I suspect the reason you can't find "what they exactly are" is that you're trying to cram them into a box you already know about, and they refuse to fit
02:39:34 <Guest37> geekosaur, yes exactly! I want to know which box they fit into.
02:39:41 <geekosaur> good luck
02:40:04 <geekosaur> the box they fit into is called "profunctor lenses". it's *bigger* than the boxes you know about
02:41:04 <EvanR> stuff you know about, getter, setter, fits into lens
02:41:12 <EvanR> query language, fits into lens
02:41:21 <geekosaur> they are more than just getters and setters. they are more than just a query language. they are a general mechnism for manipulating data that is already almost a complete language — then they're embedded into, and can use the features of, Haskell for even more flexibility
02:46:58 <Guest37> so, they are a family of combinators for data manipulation? I say a family because, I suppose lenses themselves are pretty limiting. But once we have lenses, prisms, traversals, etc., we get a lot of power.
02:48:29 <geekosaur> essentially, but with more power
02:49:34 <Guest37> can you give an example (even an abridged one or even a description) of such power in action?
02:49:45 <geekosaur> "a family of combinators for data menipulation" was Conal Elliot's semantic editor combinators (http://conal.net/blog/posts/semantic-editor-combinators). Lenses generalized that.
02:51:49 <EvanR> thanks to the type system a lot of power comes from being able to direct the power of lens usefully, if it type checks, it probably does something interesting
02:52:29 ubert1 joins (~Thunderbi@178.115.74.249.wireless.dyn.drei.com)
02:53:00 × ubert quits (~Thunderbi@91.141.50.52.wireless.dyn.drei.com) (Ping timeout: 248 seconds)
02:53:01 ubert1 is now known as ubert
02:54:27 <Guest37> If Lenses generalize semantic editor combinators (which are combinators for data manipulation), in what way are they generalizing them? Are they generalizing they in terms of being a uniform description or are they generalizing them by being able to do more things?
02:55:46 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
02:56:21 <geekosaur> for example, they work over more data types (although they sometimes need help in the form of template haskell to build new combinators on the fly)
02:56:34 <EvanR> some lenses (optics) aren't really editors, for example Iso represent an isomorphism between types
02:56:50 <EvanR> but you can use an Iso as part of a larger edit
02:56:51 <geekosaur> also any Haskell Functor is automatically a lens, as I understand it
02:58:38 <geekosaur> (I'm actually not a very good person to talk to about lenses; I only very rarely work with anything that really needs lens)
02:59:09 <EvanR> there's an isomorphism between Word32 and a vector of 32 Bits. So you can edit individual bits using a combination of Iso and a lens for vector
02:59:31 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
03:00:19 <EvanR> but that example is mentioned on conal's blog post, so it doesn't answer your question about generalizations
03:01:56 <Guest37> Ah, that's an interesting example. I still haven't read Conal's blog post; l'll read it.
03:09:06 × td_ quits (~td@i5387091A.versanet.de) (Ping timeout: 272 seconds)
03:10:17 td_ joins (~td@i53870907.versanet.de)
03:14:14 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:14:14 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:14:14 finn_elija is now known as FinnElija
03:15:00 <geekosaur> much of the generalization is that you can _have_ things like Prisms and Traversals, and they all fit together seamlessly
03:20:15 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 240 seconds)
03:21:18 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
03:25:27 <Guest37> Thank you for your answers EvanR and geekosaur.
03:31:24 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
03:40:35 <EvanR> for how dense lens stuff can seem, I just found the motherlode of truths. The instances for class `Is' in optics https://hackage.haskell.org/package/optics-core-0.4.1/docs/Optics-Optic.html#t:Is
03:41:29 <EvanR> clinton was famous for emphasizing the importance of what the definition of Is is, and there it... is
03:45:13 × Guest37 quits (~Guest37@149.159.193.108) (Quit: Client closed)
03:50:43 <EvanR> UndecidableInstances, nvm, don't look
03:52:10 Guest37 joins (~Guest37@149.159.193.108)
04:27:54 × shapr quits (~user@2600:1700:c640:3100:d092:5c7c:734:98b6) (Remote host closed the connection)
04:28:08 shapr joins (~user@2600:1700:c640:3100:fd0a:e422:9294:eac8)
04:42:20 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 248 seconds)
04:42:36 aforemny joins (~aforemny@i59F516D2.versanet.de)
04:43:28 × aforemny_ quits (~aforemny@2001:9e8:6cf4:800:bfe8:1a13:2556:84ce) (Ping timeout: 272 seconds)
04:48:20 arahael joins (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
04:53:02 Inst joins (~Inst@120.244.192.250)
05:09:23 × CO2 quits (CO2@gateway/vpn/protonvpn/co2) (Quit: WeeChat 4.1.0)
05:16:31 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 264 seconds)
05:17:38 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:21:49 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 258 seconds)
05:23:31 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
05:36:35 × raym quits (~ray@user/raym) (Ping timeout: 240 seconds)
05:55:56 × xff0x quits (~xff0x@ai101218.d.east.v6connect.net) (Ping timeout: 248 seconds)
05:57:19 × kitzman quits (~kitzman@user/dekenevs) (Ping timeout: 264 seconds)
05:57:42 xff0x joins (~xff0x@178.255.149.135)
05:58:23 <Inst> is there a reason I should like Rust? ?:(
05:58:49 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
06:01:30 Lycurgus joins (~georg@user/Lycurgus)
06:03:10 <Inst> at least it's helping me understand why people hate static typing
06:03:29 kitzman joins (~kitzman@user/dekenevs)
06:03:35 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
06:04:57 <EvanR> check out the rust channel for more
06:10:21 <Inst> no, it's more that the weird correctness semantics are screwing me over
06:15:45 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
06:16:12 random-jellyfish joins (~tiber@2a02:2f04:11e:c600:cbb:98c3:c8f9:5eef)
06:16:13 × random-jellyfish quits (~tiber@2a02:2f04:11e:c600:cbb:98c3:c8f9:5eef) (Changing host)
06:16:13 random-jellyfish joins (~tiber@user/random-jellyfish)
06:17:52 × euleritian quits (~euleritia@x52716a95.dyn.telefonica.de) (Ping timeout: 255 seconds)
06:18:46 euleritian joins (~euleritia@dynamic-046-114-215-047.46.114.pool.telefonica.de)
06:18:55 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
06:19:27 <EvanR> if I'm not mistaken that's the correctness semantics *stopping* you from screwing yourself over
06:25:48 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
06:27:48 Jackneill joins (~Jackneill@20014C4E1E03D800E5D9A09D5A1B64B5.dsl.pool.telekom.hu)
06:28:44 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
06:32:43 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 255 seconds)
06:34:31 xff0x joins (~xff0x@ai101218.d.east.v6connect.net)
06:34:43 <Inst> it feels like the first thing i'm going to do is to learn some unsafe rust
06:43:38 <Inst> EvanR: more that it was a pain to refactor from Vec to array / []
06:44:46 <Inst> which is sort of ironic given that arrays in Rust resemble DT vectors in Haskell
06:46:35 × Jackneill quits (~Jackneill@20014C4E1E03D800E5D9A09D5A1B64B5.dsl.pool.telekom.hu) (Ping timeout: 240 seconds)
06:47:26 Jackneill joins (~Jackneill@20014C4E1E03D800752B92BCDFEE2878.dsl.pool.telekom.hu)
06:51:37 sm joins (~sm@plaintextaccounting/sm)
06:59:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:00:43 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
07:10:30 aljazmc joins (~aljazmc@user/aljazmc)
07:15:20 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
07:16:48 × kimiamania46 quits (~b4f4a2ab@user/kimiamania) (Quit: Ping timeout (120 seconds))
07:19:02 sm joins (~sm@plaintextaccounting/sm)
07:19:04 × euleritian quits (~euleritia@dynamic-046-114-215-047.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
07:19:22 euleritian joins (~euleritia@2a02:2455:18da:6900:9763:7241:db5:90f1)
07:19:29 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
07:20:08 kimiamania46 joins (~b4f4a2ab@user/kimiamania)
07:20:22 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:23:41 × aljazmc quits (~aljazmc@user/aljazmc) (Remote host closed the connection)
07:24:44 aljazmc joins (~aljazmc@user/aljazmc)
07:26:59 vglfr joins (~vglfr@46.96.15.94)
07:34:10 × aljazmc quits (~aljazmc@user/aljazmc) (Remote host closed the connection)
07:34:30 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
07:37:06 aljazmc joins (~aljazmc@user/aljazmc)
07:40:10 fendor joins (~fendor@2a02:8388:1640:be00:4648:ee17:640e:e578)
07:50:14 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
07:50:14 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
07:51:25 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
07:52:21 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:55:48 × Guest37 quits (~Guest37@149.159.193.108) (Quit: Client closed)
07:56:39 sm joins (~sm@plaintextaccounting/sm)
07:57:08 × sm quits (~sm@plaintextaccounting/sm) (Client Quit)
08:01:43 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection)
08:04:02 Pickchea joins (~private@user/pickchea)
08:04:02 <Inst> the real reason i'm not that fine with Rust is because Rustacaeans told me to get recursion out of a quicksort
08:04:19 <Inst> okay, so I did, converted the function calls to pushing and popping onto a stack
08:04:35 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
08:04:38 <Inst> performance suffered
08:05:22 <Inst> but it was a fun exercise
08:06:10 mhatta joins (~mhatta@www21123ui.sakura.ne.jp)
08:18:03 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection)
08:20:04 mhatta joins (~mhatta@www21123ui.sakura.ne.jp)
08:20:28 acidjnk joins (~acidjnk@p200300d6e72b938491b352852f43969f.dip0.t-ipconnect.de)
08:24:51 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d94b:a6c4:b05d:2c65) (Remote host closed the connection)
08:26:47 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
08:33:31 rosco joins (~rosco@yp-150-69.tm.net.my)
08:36:49 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Remote host closed the connection)
08:37:37 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
08:39:28 <davean> Inst: why would you have a stack at all for quicksort?
08:39:37 × euleritian quits (~euleritia@2a02:2455:18da:6900:9763:7241:db5:90f1) (Ping timeout: 258 seconds)
08:40:31 euleritian joins (~euleritia@dynamic-046-114-215-047.46.114.pool.telefonica.de)
08:41:06 × vglfr quits (~vglfr@46.96.15.94) (Read error: Connection reset by peer)
08:41:19 <mauke> what else would you use? a queue?
08:41:35 <davean> A fixed set of variables
08:41:44 <nullie> quicksort requires stack
08:42:24 <davean> No?
08:42:46 <davean> You have the bounds of the overall array, you have the size blocks you're currently quicksorting
08:42:53 <davean> you step down the sizes and then back up
08:43:00 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
08:43:18 <nullie> https://en.wikipedia.org/wiki/Quicksort#Space_complexity
08:43:57 <mauke> davean: that doesn't make sense to me
08:44:39 <mauke> I sort my subarray and get two smaller blocks of size n1 and n2. then what?
08:45:00 <mauke> (and by "sort" I mean partition)
08:46:04 <Inst> davean: because I wanted to see what it'd look like
08:46:34 <davean> Right quicksort is the one with the variable value pivot
08:49:49 gmg joins (~user@user/gehmehgeh)
08:54:41 vglfr joins (~vglfr@46.96.15.94)
08:55:37 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
09:00:26 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:01:19 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
09:03:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:04:41 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d94b:a6c4:b05d:2c65)
09:05:51 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
09:06:18 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
09:13:41 santiagopim joins (~user@90.167.66.131)
09:17:34 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 245 seconds)
09:18:21 mrcsno joins (~mrcsno@user/mrcsno)
09:20:34 × snowsauce quits (~snowsauce@pa9-84-91-207-96.netvisao.pt) (Ping timeout: 255 seconds)
09:25:48 × vglfr quits (~vglfr@46.96.15.94) (Read error: Connection reset by peer)
09:26:01 vglfr joins (~vglfr@46.96.15.94)
09:26:09 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:28:41 × mrcsno quits (~mrcsno@user/mrcsno) (Remote host closed the connection)
09:29:45 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
09:29:56 mmhat joins (~mmh@p200300f1c7445ed2ee086bfffe095315.dip0.t-ipconnect.de)
09:30:09 × mmhat quits (~mmh@p200300f1c7445ed2ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
09:33:28 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:34:36 mrcsno joins (~mrcsno@user/mrcsno)
09:35:11 × lispy quits (~lispy@82.212.115.68) (Ping timeout: 248 seconds)
09:37:38 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
09:42:14 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
09:47:20 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
09:51:32 × mrcsno quits (~mrcsno@user/mrcsno) (Quit: WeeChat 3.5)
09:56:34 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
10:01:30 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:06:27 CO2 joins (CO2@gateway/vpn/protonvpn/co2)
10:08:52 × vglfr quits (~vglfr@46.96.15.94) (Read error: Connection reset by peer)
10:09:03 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
10:23:04 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
10:27:18 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
10:34:20 × rosco quits (~rosco@yp-150-69.tm.net.my) (Read error: Connection reset by peer)
10:57:53 sm joins (~sm@plaintextaccounting/sm)
11:01:00 snowsauce joins (~snowsauce@pa9-84-91-207-96.netvisao.pt)
11:11:19 × arahael quits (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 245 seconds)
11:12:58 vglfr joins (~vglfr@46.96.15.94)
11:13:44 mrcsno joins (~mrcsno@user/mrcsno)
11:14:00 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
11:15:01 × mrcsno quits (~mrcsno@user/mrcsno) (Client Quit)
11:16:08 mrcsno joins (~mrcsno@user/mrcsno)
11:17:25 × mrcsno quits (~mrcsno@user/mrcsno) (Client Quit)
11:17:44 mrcsno joins (~mrcsno@user/mrcsno)
11:18:17 × mrcsno quits (~mrcsno@user/mrcsno) (Client Quit)
11:19:57 mrcsno joins (~mrcsno@user/mrcsno)
11:26:30 __monty__ joins (~toonn@user/toonn)
11:26:43 Lycurgus joins (~georg@user/Lycurgus)
11:44:54 × vglfr quits (~vglfr@46.96.15.94) (Remote host closed the connection)
11:45:30 mrcsno parts (~mrcsno@user/mrcsno) (WeeChat 3.5)
11:45:31 vglfr joins (~vglfr@46.96.15.94)
11:45:50 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
12:07:43 rosco joins (~rosco@yp-150-69.tm.net.my)
12:17:30 Square joins (~Square@user/square)
12:27:23 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
12:30:42 sm joins (~sm@plaintextaccounting/sm)
12:34:04 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
12:38:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
12:40:59 chomwitt joins (~chomwitt@2a02:587:7a01:8f00:1ac0:4dff:fedb:a3f1)
12:52:23 jargon joins (~jargon@174-22-221-150.phnx.qwest.net)
12:55:45 Guest90 joins (~Guest90@2600:4040:959f:a700:b584:f047:a032:2523)
12:56:26 × Guest90 quits (~Guest90@2600:4040:959f:a700:b584:f047:a032:2523) (Client Quit)
13:10:32 × vglfr quits (~vglfr@46.96.15.94) (Remote host closed the connection)
13:11:47 vglfr joins (~vglfr@46.96.15.94)
13:14:50 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
13:17:40 × rosco quits (~rosco@yp-150-69.tm.net.my) (Quit: Lost terminal)
13:23:40 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
13:24:27 notzmv joins (~zmv@user/notzmv)
13:40:28 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
13:42:59 rosco joins (~rosco@yp-150-69.tm.net.my)
13:43:45 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
13:45:09 × jargon quits (~jargon@174-22-221-150.phnx.qwest.net) (Remote host closed the connection)
13:46:32 × vglfr quits (~vglfr@46.96.15.94) (Read error: Connection reset by peer)
13:48:46 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
13:49:21 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 255 seconds)
13:53:41 Nixkernal_ joins (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch)
13:53:48 × Nixkernal quits (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch) (Ping timeout: 240 seconds)
13:55:51 × Square quits (~Square@user/square) (Ping timeout: 240 seconds)
13:59:47 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
14:05:05 × Nixkernal_ quits (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch) (Read error: Connection reset by peer)
14:05:45 Nixkernal joins (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch)
14:06:41 <John_Ivan_> geekosaur, I decided yesterday to switch to a different network library. wreq. I get the same reference errors. what does one do in a situation like this?
14:07:45 <geekosaur> like I said yesterday, this sounds like a corrupted cabal store
14:08:07 <geekosaur> if you go around removing things, you need to remove everything or you get errors like this
14:08:43 <geekosaur> @@ or use tools like @where cabal-gc
14:08:43 <lambdabot> or use tools like I know nothing about cabal-gc.
14:08:47 <geekosaur> bah
14:08:51 <geekosaur> @where cabalgc
14:08:51 <lambdabot> https://github.com/treblacy/cabalgc
14:09:09 <geekosaur> whihc know how to remove things from the cabal store safely
14:09:43 <John_Ivan_> geekosaur, but I reinstalled cabal. unless "cabal clean" is what actually broke my code.
14:09:47 <John_Ivan_> store*
14:10:17 <John_Ivan_> geekosaur, reinstalling cabal + cabal build didn't throw errors. i got errors after a cabal clean.
14:10:42 <geekosaur> cabal clean only cleans dist-newstyle, that should not cause problems like this unless you vendored the library
14:10:49 × euleritian quits (~euleritia@dynamic-046-114-215-047.46.114.pool.telefonica.de) (Ping timeout: 258 seconds)
14:11:16 <John_Ivan_> then I'm very confused. geekosaur aren't cabal projects treated isolated with their own dependencies?
14:12:28 <geekosaur> cabal tracks specific builds needed and keeps them in its store, so it can reuse them when possible
14:13:06 <John_Ivan_> I'll take that as a "no".
14:13:15 <geekosaur> https://cabal.readthedocs.io/en/3.8/nix-local-build-overview.html#nix-style-local-builds
14:14:58 <geekosaur> they are isolated, but the kind of isolation you are thinking of is kinda useless when making new libraries that you intend to use for something else; you want isolation but you also want the exact versions of dependencies to be kept around for future use
14:15:19 <geekosaur> cabal keeps track of this for you
14:17:12 <John_Ivan_> geekosaur, I think I'm going to give cabal the middle finger and try stack. if that does the same thing, I'll just supply my own libraries in C
14:17:31 <geekosaur> it will, in its own way
14:17:37 <John_Ivan_> geekosaur, because this is apt all over again.
14:18:37 ph88 joins (~ph88@2a02:8109:9e26:c800:4880:74f:beb0:527)
14:19:08 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
14:27:49 merijn joins (~merijn@233-142-158-163.dynamic.caiway.nl)
14:27:54 mc47 joins (~mc47@xmonad/TheMC47)
14:32:17 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds)
14:33:48 × swistak quits (~swistak@185.21.216.141) (Ping timeout: 248 seconds)
14:34:59 × merijn quits (~merijn@233-142-158-163.dynamic.caiway.nl) (Ping timeout: 255 seconds)
14:42:18 yoyofreeman joins (~yoyofreem@176.97.76.178)
14:50:30 Tlsx joins (~rscastilh@187.40.125.21)
14:58:44 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
15:00:00 swistak joins (~swistak@185.21.216.141)
15:11:23 euleritian joins (~euleritia@dynamic-046-114-213-077.46.114.pool.telefonica.de)
15:18:20 <tomsmeding> John_Ivan_: try removing ~/.cabal/store/ghc-<GHCVERSION>
15:18:23 <tomsmeding> in its entirety
15:18:44 <tomsmeding> then you'll need to rebuild dependencies again, but at least you'll get a consistent store so that you can rule out a corrupted store as the source of trouble
15:20:45 notzmv joins (~zmv@user/notzmv)
15:21:58 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
15:22:22 ChaiTRex joins (~ChaiTRex@user/chaitrex)
15:25:36 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
15:26:07 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 264 seconds)
15:27:45 eggplant_ joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
15:28:49 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d94b:a6c4:b05d:2c65) (Ping timeout: 245 seconds)
15:32:08 × eggplant_ quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
15:36:04 notzmv joins (~zmv@user/notzmv)
15:40:00 tomboy64 joins (~tomboy64@user/tomboy64)
15:40:13 × ghoulpine quits (xfnw@tilde.team) (Quit: Connection reset by purr)
15:40:34 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
15:41:38 vulpine joins (xfnw@tilde.team)
16:04:21 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:06:21 wootehfoot joins (~wootehfoo@user/wootehfoot)
16:13:12 michalz joins (~michalz@185.246.207.218)
16:13:31 × hueso quits (~root@user/hueso) (Ping timeout: 264 seconds)
16:14:31 hueso joins (~root@user/hueso)
16:17:11 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
16:20:14 Square joins (~Square@user/square)
16:22:31 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:23:30 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
16:27:01 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
16:28:10 Inst joins (~Inst@120.244.192.250)
16:29:37 <monochrom> It is easy to hypothesize "corrupted cabal store" but how to corrupt it is not so clear. cabal itself doesn't corrupt it. Someone else has to actively try that.
16:29:50 tremon joins (~tremon@83.80.159.219)
16:32:24 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:8059:24c1:b008:c079)
16:34:42 × random-jellyfish quits (~tiber@user/random-jellyfish) (Ping timeout: 272 seconds)
16:36:43 akshitkr joins (~user@218.185.248.66)
16:36:47 <akshitkr> hey
16:37:29 <akshitkr> i'm finding it hard to wrap my head around the different versions of ghc and cabal
16:38:09 <akshitkr> specifically: whenever i use cabal install it asks me to change my ghc version since its not compatible with the one I've installed
16:38:34 <akshitkr> my ghc: 9.4.7 and cabal: 3.6.2
16:38:40 <akshitkr> (marked recommended on ghcup tuie)
16:39:51 <sclv> do nor change your ghc version
16:39:51 <c_wraith> monochrom: well, there are some cases where no one did it intentionally, like a system crash in the middle of an installation.
16:40:08 <sclv> just use the latest cabal and it is compat with all prior ghcs
16:40:38 <c_wraith> or even "by actively making a choice" in place of "intentionally"
16:41:03 <akshitkr> sclv: thanks, will do that
16:41:11 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
16:41:13 <akshitkr> can you also help me get around installing new packaged
16:41:16 <akshitkr> packages*
16:41:18 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:41:19 <geekosaur> akshitkr, some projects do need different ghc versions because they need different base versions and base is wired into ghc.
16:41:40 <akshitkr> lets say i want to install backprop https://hackage.haskell.org/package/backprope, i know the latest version is 0.2.6.5
16:42:07 <akshitkr> so i updated the .cabal to have backprop ^>=0.2.6.5 in the build depends
16:42:21 <akshitkr> but it doesn't seem to install it when i run ~cabal install backprop~
16:42:35 <akshitkr> `cabal install backprop`
16:43:03 <geekosaur> you don't typically install libraries directly, you let cabal install them as dependencies. if you want to access cabal's version in ghci you do something like `cabal repl -b backprop`
16:43:05 × fendor quits (~fendor@2a02:8388:1640:be00:4648:ee17:640e:e578) (Remote host closed the connection)
16:43:25 <akshitkr> do i just do cabal install then?
16:43:37 <geekosaur> (raw ghci is unprincipled and will do things like linking multiple versions of a package in)
16:43:58 <akshitkr> ok doing `cabal build` seems to do something
16:44:26 <akshitkr> gotcha
16:46:35 <akshitkr> alright so my build-depends is this
16:46:38 <akshitkr> build-depends: base ^>=4.17.2.0, backprop ^>=0.2.6.5
16:47:01 <akshitkr> but putting this import in my hs files doesn't seem to work: Import Numeric.backprop
16:48:38 <c_wraith> "doesn't seem to work" is missing a lot of details. What does happen?
16:48:51 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
16:49:16 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 248 seconds)
16:51:37 <akshitkr> Import Numeric.backprop
16:51:37 <akshitkr> module Main where
16:51:37 <akshitkr> main :: IO ()
16:52:00 <akshitkr> "parse error on input 'module'"
16:53:44 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Ping timeout: 258 seconds)
16:54:31 × ph88 quits (~ph88@2a02:8109:9e26:c800:4880:74f:beb0:527) (Quit: Leaving)
16:56:35 <monochrom> Put the "module" line before the "import" line.
16:57:12 raym joins (~ray@user/raym)
16:57:16 <akshitkr> getting "Parse error: module header, import declaration"
16:57:20 <akshitkr> after doing that^
16:57:50 <geekosaur> @where paste
16:57:50 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
16:57:54 <monochrom> Perhaps it's Backprop instead of backprop?
16:58:03 <akshitkr> lemme check
16:58:12 <akshitkr> yeah i'll use a pastebin, apologies
16:58:16 <geekosaur> you import a module, not a library
16:58:44 <geekosaur> you may want `import Numeric.Backprop`
16:59:10 <geekosaur> https://hackage.haskell.org/package/backprop-0.2.6.5/docs/Numeric-Backprop.html
16:59:17 × euleritian quits (~euleritia@dynamic-046-114-213-077.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
16:59:19 <akshitkr> https://paste.tomsmeding.com/P7UqWmXe
16:59:21 <monochrom> Is this a "dive-in project"? This is what's wrong with dive-in projects.
16:59:34 euleritian joins (~euleritia@2a02:2455:18da:6900:f843:d23f:cfa3:a8b4)
17:00:09 <akshitkr> diving into haskell perhaps, I have experience with fp in OCaml
17:00:39 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
17:00:40 <geekosaur> also `import` has to be lowercase
17:01:08 <akshitkr> ah right
17:01:11 <akshitkr> that was the issue
17:01:29 <akshitkr> only getting "Could not find module Numeric.Backprop" now
17:03:17 <geekosaur> can you pastebin your cabal file?
17:04:23 <akshitkr> https://paste.tomsmeding.com/cRtY2JDh
17:05:33 AlexNoo_ joins (~AlexNoo@94.233.241.58)
17:06:37 <geekosaur> oh. cabal.project is not the same as your cabal file, it specifies information applicable to all libraries in a project
17:06:44 × rosco quits (~rosco@yp-150-69.tm.net.my) (Quit: Lost terminal)
17:06:45 <geekosaur> rename it to something like `myapp.cabal`
17:07:00 <monochrom> But then it is also missing many fields.
17:07:31 × AlexZenon quits (~alzenon@178.34.162.116) (Ping timeout: 264 seconds)
17:07:34 <akshitkr> updated: https://paste.tomsmeding.com/4hiocmTQ
17:08:22 <monochrom> Have you heard of "cabal init"? It is on the list from "cabal --help".
17:08:46 <akshitkr> ive already done cabal init
17:08:46 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
17:08:55 <akshitkr> that is how i got this file anyway
17:09:00 × AlexNoo quits (~AlexNoo@178.34.162.116) (Ping timeout: 248 seconds)
17:09:09 <geekosaur> you're missing a lot of stuff that cabal init would have put in there
17:09:30 <monochrom> There are multiple missing compulsory fields. "cabal init" does not omit them.
17:09:36 AlexNoo_ is now known as AlexNoo
17:09:49 <[exa]> good afternoon all
17:09:54 <akshitkr> I am not sure how i got there :P
17:10:00 <akshitkr> ill do cabal init again
17:10:10 <monochrom> 2nd law of thermodynamics.
17:10:36 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds)
17:10:48 <[exa]> akshitkr: if you backup your current one you should be able to merge it with the freshly autogenerated one using e.g. gvimdiff or meld or so
17:11:24 <akshitkr> didn't really do a lot yet so its fine for now to just nuke it and create a new project
17:13:17 × Xe quits (~cadey@perl/impostor/xe) (Quit: WeeChat 4.0.2)
17:17:14 <akshitkr> re-initialized the whole thing
17:17:30 <akshitkr> seems to work except the language server has a problem with me importing Number.Backprop
17:17:58 AlexZenon joins (~alzenon@94.233.241.58)
17:18:05 <EvanR> what editor are you using, vscode?
17:18:11 <monochrom> Number? Numeric?
17:18:39 <akshitkr> using emacs
17:18:57 <akshitkr> yeah Numeric*, sorry
17:20:15 <akshitkr> killed the buffer and opened it again, works now
17:20:26 <akshitkr> thanks for the help everyone!
17:22:00 vglfr joins (~vglfr@46.96.15.94)
17:22:21 akshitkr parts (~user@218.185.248.66) (Killed buffer)
17:25:06 <[exa]> o/
17:26:22 komikat joins (~akshitkr@218.185.248.66)
17:34:28 × vglfr quits (~vglfr@46.96.15.94) (Remote host closed the connection)
17:35:17 vglfr joins (~vglfr@46.96.15.94)
17:45:16 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
17:49:24 Katarushisu12 joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
17:49:58 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
17:50:16 × Katarushisu1 quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Ping timeout: 260 seconds)
17:50:16 Katarushisu12 is now known as Katarushisu1
18:07:49 <EvanR> > let x@[1,2,3] = [1,2,3] in x!!1
18:07:50 <lambdabot> 2
18:08:00 <EvanR> > let [1,2,3]@x = [1,2,3] in x!!1
18:08:01 <lambdabot> <hint>:1:12: error: parse error on input ‘@’
18:08:07 <EvanR> shucks
18:08:37 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
18:08:45 <EvanR> that was almost the haskell version of C x[0] = 0[x]
18:09:17 <c_wraith> you can only put an identifier before the @
18:10:22 monochrom is now known as monodoom
18:10:38 <c_wraith> only one doom? that's down like 1700% from yesterday! woo!
18:11:06 <nullie> 1700% down would be negative doom
18:11:28 <c_wraith> not when you started at 1800%
18:13:07 <monodoom> :)
18:13:35 <monodoom> One way to doom them all.
18:15:59 <EvanR> I wrote this haskell program with "no dependencies", but it uses ViewPatterns. Will it run on anything other than GHC
18:16:17 <monodoom> Probably not even Hugs.
18:16:22 <EvanR> cool
18:17:18 <monodoom> We now have an axis for library dependencies and another axis for compiler dependencies. :)
18:17:50 notzmv joins (~zmv@user/notzmv)
18:19:54 sm joins (~sm@plaintextaccounting/sm)
18:22:38 biberu joins (~biberu@user/biberu)
18:30:36 dhil joins (~dhil@2001:8e0:2014:3100:846e:9cc4:60ae:ba95)
18:32:01 quarkyalice joins (~alice@user/quarkyalice)
18:37:48 Sgeo joins (~Sgeo@user/sgeo)
18:39:00 <EvanR> in the wikipedia article for simply typed lambda calculus they detail a language which has lambdas like \x:T -> e, annotated with an explicit type. The type language is T = Unit | T -> T. Later they claim with a 1 paragraph blurb that there is an "alternative syntax" without the annotation, and inference is used to check the types
18:39:36 <EvanR> with the example \x -> x would get the type alpha -> alpha. But alpha comes out of nowhere
18:39:58 <EvanR> is this still simply typed lambda calculus or did they advance along a lambda cube axis by doing this
18:41:55 <monodoom> You can choose either way.
18:42:35 <EvanR> by introducing the alpha thing does that add any additional "power"
18:43:02 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Read error: Connection reset by peer)
18:43:18 <monodoom> If you insist that the context allows you to monomorphize alpha to something actually in the type language (or else you declare "type error: polymorphism not supported"), then you can stay with simply typed.
18:43:38 <ncf> could you link to the paragraph you're referring to?
18:43:40 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
18:43:56 <monodoom> If you add let-generalization, then yes you have to go rank-1 polymorphism.
18:44:22 <EvanR> https://en.wikipedia.org/wiki/Simply_typed_lambda_calculus#Alternative_syntaxes
18:44:34 <monodoom> Yes and no. If you let alpha survive, yes. If you keep it internal and kill it eventually, no.
18:45:05 × euleritian quits (~euleritia@2a02:2455:18da:6900:f843:d23f:cfa3:a8b4) (Ping timeout: 240 seconds)
18:45:17 euleritian joins (~euleritia@109.125.111.185)
18:45:18 <monodoom> If you keep alpha internal and kill it eventually, you can call it a "meta variable", "placeholder", "for internal use only".
18:46:11 <ncf> looks like whoever wrote that forgot the title of the article
18:46:21 <monodoom> For example if the whole term is "(\x -> x) unit" then alpha is just an internal intermediate when you were zooming into "\x -> x". Later you will zoom out and realize alpha=Unit.
18:46:31 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
18:47:27 <ncf> or i guess what this really says is that adding rank-1 polymorphism is a *very* thin layer on top of STLC
18:47:30 <monodoom> haha ncf.
18:47:46 <ncf> you just pretend that metavariables don't have to be solved
18:48:00 <monodoom> But yeah you could use the HM inference algorithm and then ban polymorphism after the fact.
18:49:36 <monodoom> I actually did that in a toy. :)
18:49:39 × euleritian quits (~euleritia@109.125.111.185) (Ping timeout: 245 seconds)
18:50:02 euleritian joins (~euleritia@dynamic-046-114-213-077.46.114.pool.telefonica.de)
18:53:52 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 255 seconds)
18:56:17 Pickchea joins (~private@user/pickchea)
19:01:06 <EvanR> so to be clear, if you add HM and judge \x -> x to have type alpha -> alpha, it's not STLC anymore
19:01:14 × kilolympus quits (~kilolympu@31.205.200.235) (Quit: See you later! :))
19:01:30 <EvanR> unless you are being monodoom, and allowing that internal to a term only and no one ever knows
19:02:11 × vglfr quits (~vglfr@46.96.15.94) (Remote host closed the connection)
19:02:26 vglfr joins (~vglfr@46.96.15.94)
19:02:33 <EvanR> maybe this is like is or is pluto not a planet, which is annoying
19:03:05 <monodoom> Nah, this is less ambiguous than Pluto.
19:03:39 <monodoom> Wikipedia contributors can get carried away, too.
19:05:59 <monodoom> You know what, the right stance in this case is "[citation needed]". Really, I have not seen any textbook or paper that says STLC allows "\x -> x".
19:06:14 <EvanR> so \x:T -> x is canonical
19:06:23 <monodoom> or even "(\x -> x) unit" despite my remark on it being well-defined.
19:06:32 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 246 seconds)
19:06:46 <dolio> I don't think it's that unusual to not have to annotate variables.
19:07:30 <EvanR> (\x -> x) unit, it's well defined. (\x -> x) it's not?
19:08:08 <dolio> It is. There just isn't a principal type for `\x -> x` in the STLC.
19:08:36 <dolio> If you're presenting it that way.
19:10:02 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
19:10:54 <dolio> There's a principal schema, which you could think about as a sort of meta-reasoning about actual STLC derivations. Which is probably what is typically done if you really have just STLC with some ground type, because it's kind of an impoverished system.
19:11:54 <dolio> HM internalizes that with let.
19:15:32 <dolio> Anyhow, in actual derivations, you can judge `(\x -> x) : () -> ()` and `(\x -> x) : (() -> ()) -> () -> ()` and so on. The derivations all have the same structure, but you have to do each one separately, because there's no common type that insantiates to all the others.
19:18:23 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 255 seconds)
19:19:29 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
19:19:31 × Luj quits (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Ping timeout: 260 seconds)
19:19:58 <EvanR> that makes sense, but since there's no explicit signature on \x, the 4 typing rules given don't work literally. I guess you can just remove that from the language and the rule still works
19:20:06 Luj joins (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb)
19:20:54 neceve joins (~neceve@user/neceve)
19:21:11 × califax quits (~califax@user/califx) (Remote host closed the connection)
19:21:53 califax joins (~califax@user/califx)
19:21:58 Xe joins (~cadey@perl/impostor/xe)
19:22:58 <EvanR> but doesn't suggest a deterministic course of action for a type checker
19:26:28 ph88 joins (~ph88@91.64.226.114)
19:29:41 sm joins (~sm@plaintextaccounting/sm)
19:30:41 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
19:31:05 <EvanR> I found some course notes on stlc where the instructor decided to put explicit types on every subexpression xD
19:31:12 <dolio> Well, HM can calculate the schema. You don't really even need all of HM, because there's no let.
19:32:19 <EvanR> does let really add anything
19:33:04 <dolio> You can do better than HM, too, I think. STLC probably has 'principal typings.' So you can judge whether or not any open expression admits typings, without context.
19:33:17 <EvanR> isn't let x = term1 in term2 = (\x -> term2) term1
19:34:05 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 240 seconds)
19:34:37 <dolio> Like, in HM, with some base types, you can't know whether `(x "hello", x 5)` is valid without knowing if x is lambda or let bound. But in STLC it will never be well typed.
19:35:32 <EvanR> ok let is important in HM
19:35:40 <EvanR> let generalization
19:36:52 vulpine is now known as ghoulpine
19:37:58 <dolio> Principal typings are nice because you can just run the algorithm on arbitrary open subexpressions and merge the results, instead of having to e.g. check the stuff in a let first because it supplies context necessary to check the body.
19:39:08 <EvanR> principal typings, with an s, is what exactly
19:39:48 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds)
19:40:06 redmp joins (~redmp@mobile-166-137-179-187.mycingular.net)
19:40:30 <EvanR> for being simply typed this is getting pretty deep
19:41:14 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 256 seconds)
19:47:00 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
19:49:35 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 240 seconds)
19:50:25 <EvanR> by detecting that no type could possibly check, does that indicate "no principle typings", otherwise "yes principle typings"
19:50:37 <EvanR> principal*
19:51:34 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
19:56:09 <dolio> Principal typings are like most general derivable judgment schemas for an open term.
19:58:01 <dolio> So, like, given an open term E, you can calculate a most general `Γ ⊢ E : T` for it. And every type derivation involving E will have an instantiation of that judgment.
19:59:12 <dolio> And the typings for compound terms can be calculated by combining the typings of the subterms.
20:06:29 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
20:11:01 falafel_ joins (~falafel@143.244.47.73)
20:13:53 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 260 seconds)
20:15:12 random-jellyfish joins (~tiber@2a02:2f04:11e:c600:683f:d223:28c9:3aae)
20:15:12 × random-jellyfish quits (~tiber@2a02:2f04:11e:c600:683f:d223:28c9:3aae) (Changing host)
20:15:12 random-jellyfish joins (~tiber@user/random-jellyfish)
20:20:39 Guest7614 joins (~Max@178.237.232.145)
20:20:55 <Guest7614> hello
20:21:01 <Guest7614> Is this for haskell, right?
20:21:07 <geekosaur> yes
20:21:15 <Guest7614> Because I have a problem and i don't know how to solve it
20:21:22 <Guest7614> I tried searching and using chat gpt
20:21:27 <Guest7614> but nothing seems to work
20:21:41 × Tlsx quits (~rscastilh@187.40.125.21) (Read error: Connection reset by peer)
20:23:01 <geekosaur> @where paste
20:23:01 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
20:23:13 <Guest7614> ld.lld: error: undefined symbol: ghczuwrapperZC0ZChashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276ZCDataziHashableziLowLevelZChashablezufnvzuhashzuoffset
20:23:13 <Guest7614> >>> referenced by libHSaeson-2.2.1.0-02a1c0fee0861df53ac8d1042bdad68d6b54029a.a(Internal.o):(aesonzm2zi2zi1zi0zm02a1c0fee0861df53ac8d1042bdad68d6b54029a_DataziAesonziTypesziInternal_zdwhashValue_info)
20:23:14 <Guest7614> >>> referenced by libHSscientific-0.3.7.0-b454375fe5cb0412b0580304d35c6fc2921f8c46.a(Scientific.o):(scientificzm0zi3zi7zi0zmb454375fe5cb0412b0580304d35c6fc2921f8c46_DataziScientific_zdwzdchashWithSalt_info)
20:23:14 <Guest7614> >>> referenced by libHSscientific-0.3.7.0-b454375fe5cb0412b0580304d35c6fc2921f8c46.a(Scientific.o):(scientificzm0zi3zi7zi0zmb454375fe5cb0412b0580304d35c6fc2921f8c46_DataziScientific_zdwzdchashWithSalt_info)
20:23:15 <Guest7614> >>> referenced 30 more times
20:23:15 <Guest7614> ld.lld: error: undefined symbol: hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziLowLevel_hashInt_closure
20:23:16 <Guest7614> >>> referenced by libHShashable-1.4.3.0-1961fe79003fd705645c177b7f4aca0399a4d276.a(Class.o):(hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziClass_zdfHashableInt_closure)
20:23:16 <Guest7614> ld.lld: error: undefined symbol: ghczuwrapperZC1ZChashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276ZCDataziHashableziLowLevelZChashablezufnvzuhash
20:23:17 <Guest7614> >>> referenced by libHShashable-1.4.3.0-1961fe79003fd705645c177b7f4aca0399a4d276.a(Class.o):(hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziClass_zdfHashable2ConstzuzdcliftHashWithSalt2_info)
20:23:17 <Guest7614> >>> referenced by libHShashable-1.4.3.0-1961fe79003fd705645c177b7f4aca0399a4d276.a(Class.o):(hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziClass_hashPtr1_info)
20:23:18 <Guest7614> >>> referenced by libHShashable-1.4.3.0-1961fe79003fd705645c177b7f4aca0399a4d276.a(Class.o):(hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziClass_zdwzdchashWithSalt4_slow)
20:23:18 <Guest7614> >>> referenced 1 more times
20:23:19 <Guest7614> ld.lld: error: undefined symbol: hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziLowLevel_hashWord64_closure
20:23:19 <Guest7614> >>> referenced by libHShashable-1.4.3.0-1961fe79003fd705645c177b7f4aca0399a4d276.a(Class.o):(hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziClass_zdfHashableWord64_closure)
20:23:20 <Guest7614> ld.lld: error: undefined symbol: hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziLowLevel_hashInt64_closure
20:23:20 <Guest7614> >>> referenced by libHShashable-1.4.3.0-1961fe79003fd705645c177b7f4aca0399a4d276.a(Class.o):(hashablezm1zi4zi3zi0zm1961fe79003fd705645c177b7f4aca0399a4d276_DataziHashableziClass_zdfHashableInt64_closure)
20:23:21 <Guest7614> clang: error: linker command failed with exit code 1 (use -v to see invocation)
20:23:21 <Guest7614> ghc-9.4.7.exe: `clang.exe' failed in phase `Linker'. (Exit code: 1)
20:23:40 × falafel_ quits (~falafel@143.244.47.73) (Remote host closed the connection)
20:23:44 <monodoom> Yeah please use https://paste.tomsmeding.com instead.
20:23:45 <Guest7614> this is the error
20:24:08 <Guest7614> done
20:24:15 falafel_ joins (~falafel@143.244.47.73)
20:24:31 <Guest7614> it is a program used to read JSON data
20:24:39 <Guest7614> and then print its content until the line 100
20:25:05 × falafel_ quits (~falafel@143.244.47.73) (Remote host closed the connection)
20:25:59 <[exa]> Guest7614: how do you measure lines in JSON? (or are these the lines in the input text stream?)
20:26:35 <[exa]> because technically all json fits on a signle line
20:26:58 × aljazmc quits (~aljazmc@user/aljazmc) (Quit: Leaving)
20:27:30 <int-e> but apparently the program failed to compile (well, link) so is that even relevant?
20:28:00 <monodoom> I was thinking that too. But then I was also OK with tangential discussions. :)
20:28:03 <int-e> (more info needed... what is the failing command... it's probably also useful to know how ghc was installed)
20:28:10 <monodoom> or generally curiosities.
20:28:32 <int-e> (But I'm clueless about how these things work on Windows)
20:28:32 <[exa]> int-e: you can save a lot of compile errors by coding a different program :D
20:28:50 <monodoom> I don't envy Windows users and Mac users. >:)
20:29:00 <monodoom> Haha nice.
20:29:03 × Guest7614 quits (~Max@178.237.232.145) (Quit: Client closed)
20:29:07 Tlsx joins (~rscastilh@187.40.125.21)
20:29:09 <[exa]> Guest7614: btw how did you install your haskell? this looks ... ok they left
20:29:25 <int-e> [exa]: Ah, so next you'll suggest just using Python instead?
20:29:58 <monodoom> Noooo! Use the unix "head" program. It's just "head -100" no? >:)
20:30:03 <int-e> ...
20:30:20 <[exa]> int-e: oh no not puthon, but for some interpretations this might work with just `interact (unlines .take 100 . lines)` or so
20:30:36 <monodoom> told you so :)
20:30:37 <[exa]> monodoom: man what happened with your chrom
20:30:51 <monodoom> Halloween.
20:30:56 <[exa]> scary.
20:31:25 <monodoom> I might not be around on Tuesday, so I start now. :)
20:32:37 <monodoom> "ld.lld ... unresolved ..." seems to be pretty common recently.
20:33:48 <int-e> . o O ( The Haskell cabal strikes again. (No, I don't know that, it's just a pun.) )
20:34:04 <monodoom> :)
20:35:25 Guest9064 joins (~Max@178.237.232.145)
20:35:30 <Guest9064> May it work reinstalling ghc?
20:35:37 <Guest9064> it's me again
20:36:30 <[exa]> Guest9064: what's your cabal version?
20:36:46 <Guest9064> 2.4
20:36:54 <[exa]> Guest9064: anyway yeah looks like something is a tiny little bit off with the installation; there are similar reports here: https://gitlab.haskell.org/ghc/ghc/-/issues/22085
20:37:09 <[exa]> oh, can you try a recent one? (I think the above bugreport mentions 3.8)
20:37:16 <Guest9064> okey
20:37:21 <Guest9064> I will try it
20:37:22 <Guest9064> thx
20:37:28 <Guest9064> I think I will reinstalled it
20:37:33 <Guest9064> So, things will be easier
20:37:45 <int-e> "Oh, I'm told I need to use cabal 3.8 with GHC 9.4.1 on Windows. Sorry for the noise."
20:37:49 <Guest9064> I am totally newbie in Haskell ahhaha
20:37:56 <int-e> (as exa said)
20:38:05 <[exa]> Guest9064: this is not much haskell related, more like, unfortunately stuff tends to break notoriously on windows so old versions often cease to work
20:38:10 <Guest9064> Can I ask something else about the language?
20:38:13 <[exa]> sure
20:38:26 <Guest9064> What kind of programm is better to build in Haskell?
20:39:19 × random-jellyfish quits (~tiber@user/random-jellyfish) (Ping timeout: 264 seconds)
20:39:20 <Guest9064> I come from programming language sucha s Python, Java, Javascript,etc
20:39:24 <Guest9064> as*
20:39:33 <Guest9064> And I wanted to learn something totally different
20:39:49 <Guest9064> And I want to practice it by building a project
20:39:49 <[exa]> well it's a general language so whatever you want should work. it's really good for text- and structure-chewing tools (think compilers or pandoc) and various web things (microservices, static content generators)
20:40:01 <Guest9064> oh
20:40:07 <Guest9064> What about machine learning?
20:40:12 <Guest9064> Like Sentiment-Analysis?
20:40:25 <monodoom> If you forget objects, everything is better in Haskell.
20:40:30 × benjaminl quits (~benjaminl@user/benjaminl) (Read error: Connection reset by peer)
20:40:30 <Guest9064> hahahah
20:40:44 <Guest9064> Make totally sense
20:40:45 benjaminl joins (~benjaminl@user/benjaminl)
20:40:47 <[exa]> machine learning is more like about preprocessing data (pain) and multiplying enough matrices (hardware hurts), I'd say language doesn't matter there a lot
20:41:00 <[exa]> everything is shifted towards pythons in that community tho
20:41:02 <Guest9064> I was thinking about the libraries
20:41:33 <Guest9064> Like if there is a library with things done
20:41:36 <monodoom> We don't have good or plentiful of machine learning libraries though.
20:41:50 <[exa]> there's also nice projects for utilizing GPUs for whatever, incl. machine learning algorithms
20:41:59 <monodoom> There ought to be something but I am not into that fad so I don't know.
20:42:40 <Guest9064> mmm
20:42:46 <[exa]> https://hackage.haskell.org/packages/#cat:Machine%20Learning
20:42:48 <Guest9064> Well, something is better than nothing
20:42:55 <[exa]> oh wow there's a typed pytorch clone
20:43:00 <Guest9064> wow
20:43:04 <Guest9064> nice
20:43:11 <Guest9064> thank you very much
20:43:23 <monodoom> Generally: Is Haskell good for writing programs properly? Yes. Is Haskell good for the latest fad? No.
20:44:24 <Guest9064> Understandable
20:44:46 <Guest9064> My teacher from college said that Haskell is quite used in finantial sector
20:44:50 <[exa]> Guest9064: btw for starting I always recommend to code a game in Gloss (easiest interface to graphics ever) and in Brick (same but for terminals)
20:44:51 <Guest9064> more like security aspects
20:45:01 × Tlsx quits (~rscastilh@187.40.125.21) ()
20:45:58 <[exa]> yeah that's a nice language property, if you manage to type your stuff well, the chances of making a stupid mistake are, like, small
20:46:09 <Guest9064> Nice
20:46:16 <Guest9064> Thanks for all the recommendations and tips
20:46:32 <[exa]> financials love stuff that doesn't break
20:46:37 <Guest9064> hahahah
20:46:38 <Guest9064> make sense
20:46:39 × quarkyalice quits (~alice@user/quarkyalice) (Ping timeout: 240 seconds)
20:46:50 <Guest9064> hope to see you guys frequently
20:46:58 <Guest9064> nice to know that the community is quite active
20:47:00 <[exa]> there was some bitcoin-related stuff (hledger?)
20:47:06 <Guest9064> wow
20:47:14 <geekosaur> hledger is plaintext accounting
20:47:20 <[exa]> ah. :D
20:47:21 <Guest9064> nice to know
20:47:25 <geekosaur> cardano's the bitcoin thing
20:47:25 Guest9064 parts (~Max@178.237.232.145) ()
20:47:30 <monodoom> hledger is a spreadsheet. But there is blockchain stuff from IOHK.
20:47:36 × xstill_ quits (xstill@fimu/xstill) (Read error: Connection reset by peer)
20:47:38 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (Read error: Connection reset by peer)
20:47:53 xsarnik joins (xsarnik@lounge.fi.muni.cz)
20:48:05 <monodoom> err I guess "accounting" is more accurate than "spreadsheet".
20:49:58 xstill_ joins (xstill@fimu/xstill)
20:50:11 <[exa]> smarter spreadsheets
20:50:19 <[exa]> btw no idea how I assumed it's bitcoin
20:50:34 <[exa]> interesting.
20:51:31 pavonia joins (~user@user/siracusa)
20:53:03 <monodoom> accounting -> money -> crypto money? :)
20:53:25 <monodoom> "This is how LLMs work." >:)
20:53:27 <int-e> there's also the "distributed ledger" keyword to cause confusion
20:53:52 <monodoom> Ah that is a much stronger correlation.
20:54:13 <int-e> . o O ( low-level machines )
20:55:09 <monodoom> Well, in light of SECD and STG being "high-level machines"... :)
20:55:25 <monodoom> It's lasagna all the way down.
20:56:14 <int-e> linguistic lasagna manufacturing
20:57:57 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
21:00:38 sm joins (~sm@plaintextaccounting/sm)
21:05:07 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 264 seconds)
21:07:32 × redmp quits (~redmp@mobile-166-137-179-187.mycingular.net) (Quit: leaving)
21:08:01 <[exa]> hm yeah looks like I got LLMcinnated by the distributed ledgers.
21:09:32 × Jackneill quits (~Jackneill@20014C4E1E03D800752B92BCDFEE2878.dsl.pool.telekom.hu) (Ping timeout: 255 seconds)
21:11:22 Lycurgus joins (~georg@user/Lycurgus)
21:13:49 × neceve quits (~neceve@user/neceve) (Ping timeout: 255 seconds)
21:14:10 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:14:36 × shapr quits (~user@2600:1700:c640:3100:fd0a:e422:9294:eac8) (Remote host closed the connection)
21:14:50 shapr joins (~user@2600:1700:c640:3100:3677:a0fc:91df:dab4)
21:16:52 quarkyalice joins (~alice@59.sub-75-198-129.myvzw.com)
21:16:52 × quarkyalice quits (~alice@59.sub-75-198-129.myvzw.com) (Changing host)
21:16:52 quarkyalice joins (~alice@user/quarkyalice)
21:17:59 × vglfr quits (~vglfr@46.96.15.94) (Read error: Connection reset by peer)
21:18:09 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:18:27 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
21:23:02 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
21:24:19 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds)
21:27:40 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 248 seconds)
21:28:06 waleee joins (~waleee@h-176-10-144-38.na.cust.bahnhof.se)
21:31:00 sm joins (~sm@plaintextaccounting/sm)
21:35:52 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 255 seconds)
21:36:24 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
21:46:48 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
21:51:37 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
21:53:35 <EvanR> that's either the 2nd or 3rd ld.lld error dump issue this week
21:53:51 <EvanR> did windows implode
21:57:12 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
21:59:47 × quarkyalice quits (~alice@user/quarkyalice) (Ping timeout: 246 seconds)
22:00:03 <[exa]> last like 28 years I've been waiting patiently for the windows implosion to conclude
22:07:03 × dhil quits (~dhil@2001:8e0:2014:3100:846e:9cc4:60ae:ba95) (Ping timeout: 240 seconds)
22:07:16 <EvanR> a common theme in esoteric programming languages is the ability to somehow get chars from standard input them somehow yield chars to standard output. If you take STLC with nothing but unit type and function type as an esoteric language, I'm wondering how to accomplish this xD
22:07:58 <EvanR> extensionally it seems like there is exactly 1 function of any type
22:10:00 <EvanR> you could say the input char determines the argument type, encoding one of 256 different possibilities
22:10:21 × ph88 quits (~ph88@91.64.226.114) (Read error: Connection reset by peer)
22:10:57 <EvanR> your program takes 256 arguments of the appropriate type xD
22:11:05 <EvanR> wait no
22:14:09 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
22:16:13 <[exa]> for the pure calculus you have to interpret the chars into functions and then interpret the functions that you get back to chars
22:17:28 <EvanR> if the function type representing chars is fixed, there would be no way to observe the difference
22:17:34 <EvanR> from inside the language
22:17:41 <[exa]> that's true
22:18:15 <[exa]> you only get the functions that you can run on stuff, for observing the differences you need to smuggle in something observable
22:18:50 sm joins (~sm@plaintextaccounting/sm)
22:19:49 <[exa]> e.g. λ program gives you a church numeral (basically e.g. (λfx.f(f(f x))) standing for 3; to see what that does you push in an "ugly impure" function `increase` and value `0` to recover the integer
22:20:02 <[exa]> which is funnily similar to what haskell does with IO
22:21:00 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
22:21:08 <[exa]> (s/"ugly impure"/"ugly"/ -- this one's actually pure but doesn't really need to be)
22:24:56 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 272 seconds)
22:25:38 <EvanR> program returns a church numeral and rts interprets it as a number. Ok. For input rts converts number to church numeral. And this input can make a difference?
22:26:19 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:26:35 <EvanR> ok, it makes a difference if you can see the terms
22:26:43 <EvanR> weird
22:28:00 quarkyalice joins (~alice@59.sub-75-198-129.myvzw.com)
22:28:00 × quarkyalice quits (~alice@59.sub-75-198-129.myvzw.com) (Changing host)
22:28:00 quarkyalice joins (~alice@user/quarkyalice)
22:30:21 <EvanR> ironically that setup is not well typed, since you can return a bogus numeral
22:31:54 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 272 seconds)
22:34:12 vglfr joins (~vglfr@46.96.15.94)
22:38:25 × waleee quits (~waleee@h-176-10-144-38.na.cust.bahnhof.se) (Ping timeout: 255 seconds)
22:40:44 notzmv joins (~zmv@user/notzmv)
22:44:58 × chomwitt quits (~chomwitt@2a02:587:7a01:8f00:1ac0:4dff:fedb:a3f1) (Ping timeout: 260 seconds)
22:45:42 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
22:45:51 × acidjnk quits (~acidjnk@p200300d6e72b938491b352852f43969f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
22:48:00 × vglfr quits (~vglfr@46.96.15.94) (Remote host closed the connection)
22:48:34 vglfr joins (~vglfr@46.96.15.94)
22:52:40 × xff0x quits (~xff0x@ai101218.d.east.v6connect.net) (Ping timeout: 252 seconds)
22:53:03 xff0x joins (~xff0x@178.255.149.135)
22:55:11 × michalz quits (~michalz@185.246.207.218) (Remote host closed the connection)
23:00:50 × vglfr quits (~vglfr@46.96.15.94) (Read error: Connection reset by peer)
23:00:58 × zer0bitz_ quits (~zer0bitz@user/zer0bitz) (Read error: Connection reset by peer)
23:02:29 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 255 seconds)
23:02:32 zer0bitz joins (~zer0bitz@user/zer0bitz)
23:04:21 xff0x joins (~xff0x@2405:6580:b080:900:d2c4:2a6:3323:8aa5)
23:22:18 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Read error: Connection reset by peer)
23:22:54 zer0bitz joins (~zer0bitz@user/zer0bitz)
23:23:00 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 240 seconds)
23:24:05 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
23:29:21 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:30:59 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Read error: Connection reset by peer)
23:32:33 zer0bitz joins (~zer0bitz@user/zer0bitz)
23:33:28 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
23:46:59 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
23:47:51 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
23:51:50 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
23:52:49 <duncan> hledger is one of the flagship haskell programs, probably only pandoc and xmonad are more popular.
23:56:26 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
23:57:52 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
23:59:03 × quarkyalice quits (~alice@user/quarkyalice) (Quit: Leaving)

All times are in UTC on 2023-10-29.