Home liberachat/#haskell: Logs Calendar

Logs on 2022-07-13 (liberachat/#haskell)

00:00:33 <talismanick> Is it acceptable to ask about Haskell-family languages in here?
00:01:19 <talismanick> I'll ask anyways: What are the options for pure (or almost) languages which compile to wasm and avoid touching Node/JS?
00:01:26 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
00:01:42 <talismanick> like what Rust has with Yew
00:02:15 <arahael> talismanick: i was going to suggest rust, but didnt know what you meant by "pure".
00:02:57 <talismanick> arahael: Weeeell, I'm really happy that Rust has come this far, but I'd like something a bit higher level :)
00:03:30 <talismanick> I've actually started to think as of late that I should take the plunge and learn Rust, but not to build a webapp
00:03:43 <talismanick> (or plain website)
00:04:13 nightbreak joins (~nightbrea@2600:1700:70d1:d800:7997:c6a5:32b7:3d2e)
00:04:59 <geekosaur[m]> Not ready yet but ghc will be targeting wasm with 9.6 hopefully
00:05:01 zaquest joins (~notzaques@5.130.79.72)
00:06:22 <talismanick> geekosaur: Oh! I had basically given up on hope for Haskell itself after it seemed Asterius landed short of what I'd call "usable". (for someone like me)
00:06:57 <talismanick> (really impressive, but I'm not skilled/diligent enough to wield it efficiently)
00:07:02 <arahael> geekosaur[m]: woohoo!
00:07:05 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
00:08:08 <geekosaur[m]> Also don't know if it uses node; talk to terrorjack in #ghc
00:08:59 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9851:a856:681c:da1a)
00:10:00 <geekosaur> asterius and ghcjs development got turned into the ghc 9.6 effort
00:10:15 <talismanick> Ah, that explains why I stopped finding news after a certain point
00:10:29 <talismanick> (or maybe it was a lull then)
00:11:28 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 244 seconds)
00:12:06 <talismanick> And, re possible node dependence, it's likely that it can drop Node for Deno (lighter, partially backwards-compatible rewrite in Rust from author of Node)
00:12:26 <talismanick> Depending on how it uses Node, that is
00:13:02 <talismanick> I've learned a bit about alternatives in my crusade to purge Node from anything I do
00:13:15 mvk joins (~mvk@2607:fea8:5ce3:8500::909a)
00:13:46 <arahael> i was surprised to learn that node's gc, and js's gc in general, is a reference counting scheme.
00:15:22 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
00:15:25 <Axman6> I should write more JS with cyclic data structures...
00:15:45 × ph88 quits (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
00:15:49 ChaiTRex joins (~ChaiTRex@user/chaitrex)
00:16:40 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
00:17:18 ChaiTRex joins (~ChaiTRex@user/chaitrex)
00:19:18 × Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 276 seconds)
00:22:11 × xff0x quits (~xff0x@2405:6580:b080:900:9e06:cb70:78ee:9dbc) (Ping timeout: 272 seconds)
00:22:54 <Axman6> geschwindig: you can write foo (someInt :: Int) (someBar :: Bar) = ... which I've don on $work projectsd where functions had lots of arguments. you might need a language extension to do that but GHC will tell you if you do need it
00:28:08 <talismanick> Is gi-gtk still the best library for a mostly-declarative, implementation-details-hidden GTK GUI?
00:28:43 <talismanick> err, gi-gtk-declarative
00:28:44 <talismanick> https://hackage.haskell.org/package/gi-gtk-declarative
00:30:21 <talismanick> I started working with it a while back and liked it, but got sidetracked and never returned
00:31:26 <talismanick> Never used gtk2hs (that's the standard one, right), but the former looked more idiomatic
00:32:38 <glguy> I've used gi-gtk together with glade. Is this an alternative to glade?
00:33:28 justsomeguy joins (~justsomeg@user/justsomeguy)
00:36:58 × bontaq` quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
00:38:39 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
00:39:26 nightbreak is now known as nightbreak[Away]
00:39:37 jargon joins (~jargon@184.101.188.251)
00:40:04 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
00:42:08 × slack6215 quits (~slack1256@186.11.84.89) (Remote host closed the connection)
00:48:44 <jackdk> Axman6: you are right - type annotations in pattern bindings need `-XScopedTypeVariables`
00:49:32 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
00:49:59 <talismanick> glguy: In a sense, yeah. You lay out your GUI, "as the ancients would have", via text commands to put this next to that or nest it over yonder
00:51:00 <talismanick> but, it goes beyond eliminating the need to (presumably) wire Glade output to gi-gtk - it has its own language of "events" overlaying GTK's native, imperative notion of "signals"
00:51:02 nate4 joins (~nate@98.45.169.16)
00:51:27 <talismanick> for example ^
00:52:00 qhong_ joins (~qhong@rescomp-21-400677.stanford.edu)
00:52:51 <Axman6> > let foldr (f :: a -> b -> b) (z :: b) ([] :: [a]) = z; foldr (f :: a -> b -> b) (z :: b) (x:xs :: [a]) = f x (foldr f z xs) in foldr (:) [] [1,2,3]
00:52:53 <lambdabot> [1,2,3]
00:55:10 × qhong quits (~qhong@DN200ouju.stanford.edu) (Ping timeout: 240 seconds)
00:58:20 × califax quits (~califax@user/califx) (Ping timeout: 268 seconds)
00:58:33 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
00:58:44 califax joins (~califax@user/califx)
00:58:47 × cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Remote host closed the connection)
00:58:57 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 276 seconds)
00:59:17 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
00:59:40 cosimone joins (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81)
00:59:52 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
01:00:11 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
01:01:51 <Axman6> Where's Dons when you need him
01:02:46 <talismanick> Wow, I'm amazed reactive-banana is still kicking
01:03:29 <talismanick> It really does live up to the first (fake) testimonial from its wiki page:
01:03:30 <talismanick> "In the programming-language world, one rule of survival is simple: dance or die. This library makes dancing easy." – Simon Banana Jones
01:04:53 <glguy> talismanick: in my case I automated away the wiring of the glade to my app
01:04:56 <glguy> (using ghc.generics)
01:06:33 <talismanick> glguy: Glade outputs... XML, if I'm not mistaken? Did you throw an XML->ADT parser at it and match up what came out with ghc.generics?
01:08:57 <edwardk> Axman6: didn't he move back to .au? you should be able to go knock on his door
01:09:28 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
01:10:00 <glguy> talismanick: I did it from a data type, but that could have been automated away with template haskell (I just didn't go that route)
01:10:21 <glguy> https://github.com/glguy/CookieCalculator/blob/master/gui/Main.hs#L44-L55
01:10:23 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
01:10:37 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
01:11:52 <glguy> The declarative thing seems like it'd be nice for a dynamically defined UI, though
01:13:15 <talismanick> glguy: that's actually why I looked up reactive-banana again - there was reactive-banana-gi-gtk, and I was wondering if I could use the two together
01:13:32 <Axman6> edwardk: yeah, but he's stopped showing up here. I don't have a car do popping down the road to Sydney is a bit more difficult
01:13:37 <Axman6> so*
01:16:44 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:58 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Remote host closed the connection)
01:17:24 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
01:17:56 entheogenesis[m] joins (~entheogen@2001:470:69fc:105::1:e7c4)
01:18:48 orion joins (~orion@user/orion)
01:20:41 <orion> Hello. Does Herbert Valerio Riedel (hvr) hang out here? If so, what is his pseudonym?
01:22:38 <talismanick> glguy: is this... a program to play Cookie Clicker for you?
01:22:46 <talismanick> A) that's awesome
01:22:49 <talismanick> B) why
01:23:23 <talismanick> C) why is the repo dominated in size by a .c file too large to be displayed in the browser
01:24:14 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
01:24:32 <Axman6> I'm trying to build glean on macOS - seems that macOS defines isinf as a macro, and then one of the C++ deps tried to define a function with the same name without checking first -_-
01:26:19 <jackdk> Axman6: I recommend s/mac/nix/
01:29:30 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
01:29:49 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
01:30:00 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 244 seconds)
01:31:43 jakalx joins (~jakalx@base.jakalx.net)
01:32:20 finsternis joins (~X@23.226.237.192)
01:32:38 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
01:33:40 mixfix41 joins (~sdenynine@user/mixfix41)
01:34:50 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
01:35:06 zxx7529 joins (~Thunderbi@user/zxx7529)
01:37:03 abhinav joins (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
01:39:45 <glguy> talismanick: it was a model of cookie clicker that I used to try out combinations of upgrades to prioritize my purchases
01:40:01 matthewmosior joins (~matthewmo@173.170.253.91)
01:40:35 <glguy> talismanick: the C file is the game icons png/gif (don't remember) stashed in a C array
01:40:49 <glguy> I think I meant to not commit that; it must have sneaked in at some point
01:41:28 <glguy> It used to be able to generate very accurate values for cookies per second, click, etc, but the game has moved on since I implemented it and I haven't kept up
01:43:38 <glguy> cookie clicker ends up getting surprisingly complicated when you're trying to generate cookies efficiently; there are a number of different strategies with varying levels of reliability and output and user involvement
01:44:26 g joins (x@libera/staff/glguy)
01:46:42 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
01:47:44 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9851:a856:681c:da1a) (Remote host closed the connection)
01:48:07 × simpleauthority quits (~simpleaut@user/simpleauthority) (Quit: ZNC 1.8.2 - https://znc.in)
01:48:32 simpleauthority joins (~simpleaut@user/simpleauthority)
01:49:48 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
01:51:21 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
01:53:08 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
01:53:45 onr joins (~onr@user/onr)
02:00:50 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 255 seconds)
02:01:02 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9851:a856:681c:da1a)
02:09:51 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
02:11:30 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
02:12:14 seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net)
02:16:13 × brettgilio quits (~brettgili@c9yh.net) (Remote host closed the connection)
02:18:37 brettgilio joins (~brettgili@c9yh.net)
02:19:59 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 272 seconds)
02:20:01 × brettgilio quits (~brettgili@c9yh.net) (Client Quit)
02:20:37 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
02:20:40 brettgilio joins (~brettgili@c9yh.net)
02:21:17 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
02:21:36 × brettgilio quits (~brettgili@c9yh.net) (Client Quit)
02:21:53 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 272 seconds)
02:22:24 brettgilio joins (~brettgili@c9yh.net)
02:22:28 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
02:26:50 × td_ quits (~td@94.134.91.223) (Ping timeout: 244 seconds)
02:27:26 nate4 joins (~nate@98.45.169.16)
02:28:36 <edwardk> orion: he used to, quite actively. not so much these days. nick: hvr
02:28:48 <orion> Thank you edwardk.
02:28:51 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
02:28:59 td_ joins (~td@muedsl-82-207-238-241.citykom.de)
02:29:50 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
02:31:51 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
02:34:33 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
02:38:12 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 244 seconds)
02:41:30 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
02:41:31 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
02:42:38 × wz1000 quits (~zubin@static.11.113.47.78.clients.your-server.de) (Ping timeout: 255 seconds)
02:44:03 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:44:03 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:44:03 finn_elija is now known as FinnElija
02:45:26 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
02:47:54 × seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Quit: Client closed)
02:50:20 matthewmosior joins (~matthewmo@173.170.253.91)
02:54:05 × onr quits (~onr@user/onr) (Quit: Leaving)
02:56:07 sagax joins (~sagax_nb@user/sagax)
03:02:49 × geschwindig quits (~John_Ivan@user/john-ivan/x-1515935) (Ping timeout: 256 seconds)
03:03:01 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
03:06:44 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
03:07:53 Cajun joins (~Cajun@user/cajun)
03:15:30 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
03:15:37 × orion quits (~orion@user/orion) (Quit: Leaving...)
03:20:47 nate4 joins (~nate@98.45.169.16)
03:27:30 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
03:30:01 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
03:30:01 × noteness quits (~noteness@user/noteness) (Read error: Connection reset by peer)
03:30:22 noteness joins (~noteness@user/noteness)
03:30:24 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:34:14 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
03:38:31 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
03:41:36 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
03:43:20 nate4 joins (~nate@98.45.169.16)
03:48:18 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
03:49:22 × Adran quits (adran@botters/adran) (Quit: Este é o fim.)
03:58:41 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
03:59:02 nightbreak[Away] is now known as nightbreak
04:00:51 × noteness quits (~noteness@user/noteness) (Remote host closed the connection)
04:01:10 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
04:01:14 noteness joins (~noteness@user/noteness)
04:06:11 × toluene quits (~toluene@user/toulene) (Quit: Ping timeout (120 seconds))
04:09:03 toluene joins (~toluene@user/toulene)
04:09:46 matthewmosior joins (~matthewmo@173.170.253.91)
04:14:37 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
04:16:00 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
04:17:46 nate4 joins (~nate@98.45.169.16)
04:22:50 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
04:27:28 dschrempf joins (~dominik@mobiledyn-62-240-134-33.mrsn.at)
04:27:43 vglfr joins (~vglfr@coupling.penchant.volia.net)
04:31:44 notzmv joins (~zmv@user/notzmv)
04:33:50 × forell quits (~forell@user/forell) (Ping timeout: 255 seconds)
04:37:29 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
04:40:01 kenran joins (~kenran@200116b82b67ed0072df3d95acc6d4a7.dip.versatel-1u1.de)
04:40:34 qhong_ is now known as qhong
04:40:37 forell joins (~forell@user/forell)
04:41:45 × kenran quits (~kenran@200116b82b67ed0072df3d95acc6d4a7.dip.versatel-1u1.de) (Client Quit)
04:44:18 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
04:49:01 <talismanick> Are there actively-maintained libraries to display subsets of HTML, like in emails?
04:52:08 <talismanick> blizzard-html?
05:00:26 × zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection)
05:05:37 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
05:13:52 mmhat joins (~mmh@p200300f1c7090757ee086bfffe095315.dip0.t-ipconnect.de)
05:14:34 × nightbreak quits (~nightbrea@2600:1700:70d1:d800:7997:c6a5:32b7:3d2e) (Quit: Signing off for now...)
05:16:55 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
05:17:40 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
05:20:27 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
05:22:23 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
05:22:31 × sagax quits (~sagax_nb@user/sagax) (Quit: Konversation terminated!)
05:26:01 mbuf joins (~Shakthi@122.165.55.71)
05:28:25 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
05:31:45 nschoe joins (~quassel@2a01:e0a:8e:a190:55e:c980:c5f4:9be5)
05:33:30 matthewmosior joins (~matthewmo@173.170.253.91)
05:34:17 nightbreak_ joins (~nightbrea@2600:1700:70d1:d800:7997:c6a5:32b7:3d2e)
05:35:10 zxx7529 joins (~Thunderbi@user/zxx7529)
05:44:12 gmg joins (~user@user/gehmehgeh)
05:50:03 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:51:52 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
05:54:47 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
05:57:06 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
06:02:48 × dschrempf quits (~dominik@mobiledyn-62-240-134-33.mrsn.at) (Ping timeout: 244 seconds)
06:13:18 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 264 seconds)
06:13:49 frost joins (~frost@user/frost)
06:20:42 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.5)
06:21:44 dcoutts joins (~duncan@host86-176-29-6.range86-176.btcentralplus.com)
06:22:37 john joins (~john@60.254.0.204)
06:23:00 × juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 276 seconds)
06:23:49 × dcoutts_ quits (~duncan@host86-176-29-6.range86-176.btcentralplus.com) (Ping timeout: 272 seconds)
06:24:59 dcoutts_ joins (~duncan@host86-176-29-6.range86-176.btcentralplus.com)
06:26:35 schweers joins (~user@2001:9e8:be68:9d00:aaa1:59ff:fe3f:235c)
06:26:47 × dcoutts quits (~duncan@host86-176-29-6.range86-176.btcentralplus.com) (Ping timeout: 255 seconds)
06:26:59 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
06:30:01 nate4 joins (~nate@98.45.169.16)
06:30:05 × Batzy quits (~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
06:31:05 × hgolden quits (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Quit: Konversation terminated!)
06:32:29 × dolio quits (~dolio@130.44.130.54) (Ping timeout: 256 seconds)
06:32:41 × nschoe quits (~quassel@2a01:e0a:8e:a190:55e:c980:c5f4:9be5) (Ping timeout: 272 seconds)
06:32:42 Batzy joins (~quassel@user/batzy)
06:36:09 dcoutts joins (~duncan@host86-176-29-6.range86-176.btcentralplus.com)
06:38:02 × dcoutts_ quits (~duncan@host86-176-29-6.range86-176.btcentralplus.com) (Ping timeout: 255 seconds)
06:38:12 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
06:40:31 benin0 joins (~benin@183.82.29.162)
06:40:55 × schweers quits (~user@2001:9e8:be68:9d00:aaa1:59ff:fe3f:235c) (Ping timeout: 272 seconds)
06:45:09 dcoutts_ joins (~duncan@host86-176-29-6.range86-176.btcentralplus.com)
06:45:09 × Vajb quits (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
06:45:20 Vajb joins (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
06:47:53 × dcoutts quits (~duncan@host86-176-29-6.range86-176.btcentralplus.com) (Ping timeout: 272 seconds)
06:48:00 dolio joins (~dolio@130.44.130.54)
06:48:38 bilegeek joins (~bilegeek@2600:1008:b051:ad72:b292:6384:9c6:e29c)
06:50:30 dcoutts__ joins (~duncan@host86-151-9-13.range86-151.btcentralplus.com)
06:53:30 × dcoutts_ quits (~duncan@host86-176-29-6.range86-176.btcentralplus.com) (Ping timeout: 260 seconds)
06:53:42 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:54:24 × shriekingnoise quits (~shrieking@201.212.175.181) (Quit: Quit)
06:54:53 × winny quits (~weechat@user/winny) (Remote host closed the connection)
06:54:59 dcoutts_ joins (~duncan@host109-149-38-36.range109-149.btcentralplus.com)
06:55:30 winny joins (~weechat@user/winny)
06:56:13 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9851:a856:681c:da1a) (Remote host closed the connection)
06:56:52 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
06:57:35 × dcoutts__ quits (~duncan@host86-151-9-13.range86-151.btcentralplus.com) (Ping timeout: 260 seconds)
07:00:03 × noteness quits (~noteness@user/noteness) (Read error: Connection reset by peer)
07:00:03 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
07:00:18 christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
07:00:30 × dcoutts_ quits (~duncan@host109-149-38-36.range109-149.btcentralplus.com) (Ping timeout: 260 seconds)
07:00:47 noteness joins (~noteness@user/noteness)
07:00:51 gmg joins (~user@user/gehmehgeh)
07:01:13 nightbreak_ is now known as nightbreak[Away]
07:02:21 dcoutts_ joins (~duncan@host86-151-9-74.range86-151.btcentralplus.com)
07:06:09 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:07:20 coot joins (~coot@213.134.190.95)
07:09:55 × bilegeek quits (~bilegeek@2600:1008:b051:ad72:b292:6384:9c6:e29c) (Quit: Leaving)
07:12:02 × noteness quits (~noteness@user/noteness) (Ping timeout: 268 seconds)
07:12:40 noteness joins (~noteness@user/noteness)
07:13:59 <albet70> how to merge others cabal project into my project?
07:16:50 dcoutts joins (~duncan@host86-151-9-74.range86-151.btcentralplus.com)
07:17:10 × elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 240 seconds)
07:17:12 × dcoutts_ quits (~duncan@host86-151-9-74.range86-151.btcentralplus.com) (Ping timeout: 244 seconds)
07:17:25 nschoe joins (~quassel@178.251.84.79)
07:17:50 <[exa]> albet70: as in "use more packages in 1 project directory" ? there's `cabal.project` for that
07:18:07 <[exa]> AFAIK you just list the project subdirectories there and that's it
07:18:36 <[exa]> roughly like this: https://cabal.readthedocs.io/en/3.6/cabal-project.html
07:21:05 × zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
07:21:16 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
07:21:40 dcoutts_ joins (~duncan@host86-151-9-74.range86-151.btcentralplus.com)
07:22:30 × dcoutts quits (~duncan@host86-151-9-74.range86-151.btcentralplus.com) (Ping timeout: 240 seconds)
07:22:31 zmt00 joins (~zmt00@user/zmt00)
07:24:21 × abhinav quits (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
07:25:50 × dcoutts_ quits (~duncan@host86-151-9-74.range86-151.btcentralplus.com) (Ping timeout: 240 seconds)
07:29:31 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:29:35 dcoutts joins (~duncan@host165-120-97-107.range165-120.btcentralplus.com)
07:31:17 <albet70> I use 'cabal v2-install --lib scotty' to install scotty, but runghc told me couldn't load module 'Network.Wai' ... a member of the hidden package 'wai-3.2.3'
07:31:51 <albet70> why there always hidden package what the heck that supposed to be
07:34:21 <[exa]> if you don't declare that you need the package, it's hidden. How do you compile your project? with ghc or with cabal?
07:34:54 × Cajun quits (~Cajun@user/cajun) (Ping timeout: 252 seconds)
07:35:58 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
07:36:50 × dcoutts quits (~duncan@host165-120-97-107.range165-120.btcentralplus.com) (Ping timeout: 244 seconds)
07:37:00 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
07:37:20 Cajun joins (~Cajun@user/cajun)
07:37:21 Tuplanolla joins (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi)
07:37:41 dcoutts joins (~duncan@host213-122-124-201.range213-122.btcentralplus.com)
07:38:19 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
07:39:36 <jackdk> I'm about to run out the door, but I think albet70 just needs to be set up with a cabal package for his work, so that he can add any dependencies that he needs
07:39:38 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
07:40:00 dcoutts_ joins (~duncan@host213-122-124-145.range213-122.btcentralplus.com)
07:40:32 acidjnk_new joins (~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de)
07:40:59 Guest|38 joins (~Guest|38@89.253.138.59)
07:42:02 dcoutts__ joins (~duncan@host213-122-124-189.range213-122.btcentralplus.com)
07:42:17 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
07:42:32 × dcoutts quits (~duncan@host213-122-124-201.range213-122.btcentralplus.com) (Ping timeout: 244 seconds)
07:44:23 × `2jt quits (~jtomas@141.red-88-17-65.dynamicip.rima-tde.net) (Remote host closed the connection)
07:44:36 × dcoutts_ quits (~duncan@host213-122-124-145.range213-122.btcentralplus.com) (Ping timeout: 244 seconds)
07:48:22 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:49:38 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds)
07:49:57 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 272 seconds)
07:52:00 matthewmosior joins (~matthewmo@173.170.253.91)
07:52:29 chomwitt joins (~chomwitt@2a02:587:dc0d:4a00:99fe:ae00:5424:6d23)
07:55:19 geekosaur joins (~geekosaur@xmonad/geekosaur)
07:55:21 jumper149 joins (~jumper149@2001:a61:51a8:e202:d123:92ae:67ca:73e3)
07:55:24 × jumper149 quits (~jumper149@2001:a61:51a8:e202:d123:92ae:67ca:73e3) (Client Quit)
07:55:47 jgeerds joins (~jgeerds@55d437cf.access.ecotel.net)
07:55:49 jumper149 joins (~jumper149@2001:a61:51a8:e202:d123:92ae:67ca:73e3)
07:55:59 × jumper149 quits (~jumper149@2001:a61:51a8:e202:d123:92ae:67ca:73e3) (Client Quit)
07:56:28 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
07:58:41 jumper149 joins (~jumper149@2001:a61:51a8:e202:d123:92ae:67ca:73e3)
07:58:52 chele joins (~chele@user/chele)
07:58:59 × jumper149 quits (~jumper149@2001:a61:51a8:e202:d123:92ae:67ca:73e3) (Client Quit)
07:59:19 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
08:05:16 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
08:05:21 lottaquestions joins (~nick@S0106a84e3f794893.ca.shawcable.net)
08:05:23 <fockerize> [1..10] ^. ix 1 :: (Num a, Enum a, Monoid a) => a
08:05:38 <fockerize> it complains Int not a Monoid
08:05:56 <Axman6> Int is not a monoid
08:06:07 <Axman6> % :t ix
08:06:07 <yahb2> <interactive>:1:1: error: ; • Variable not in scope: ix ; • Perhaps you meant one of these: ; ‘id’ (imported from Prelude), ‘it’ (line 94)
08:06:17 <Axman6> % :t Control.Lens.At.ix
08:06:17 <c_wraith> what happens if there is no value at index 1 in the list?
08:06:17 <yahb2> <interactive>:1:1: error: ; Not in scope: ‘Control.Lens.At.ix’ ; No module named ‘Control.Lens.At’ is imported.
08:06:45 <Axman6> you possibly want to use ^?
08:06:55 <c_wraith> or at instead of ix
08:07:10 <fockerize> do i need to unwrap from a maybe?
08:07:16 <Axman6> % [1.. 10 :: Int] ^. ix 1
08:07:16 <yahb2> <interactive>:136:17: error: ; • Variable not in scope: (^.) :: [Int] -> t0 -> t ; • Perhaps you meant one of these: ; ‘^’ (imported from Prelude), ‘.’ (imported from Prelude), ; ...
08:07:28 <Axman6> % import Control.Lens
08:07:28 <yahb2> <no location info>: error: ; Could not find module ‘Control.Lens’ ; It is not a module in the current program, or in any known package.
08:07:32 <Axman6> D:
08:07:41 <c_wraith> just use lambdabot
08:07:45 <Axman6> why is yahb2 so uninformed
08:07:52 <Axman6> does lambdabot have any of the lens stuff?
08:07:53 <c_wraith> > [1 .. 10] ^. at 1
08:07:55 <lambdabot> error:
08:07:55 <lambdabot> • No instance for (At [Integer]) arising from a use of ‘e_11101’
08:07:55 <lambdabot> • In the expression: e_11101
08:08:12 <c_wraith> oh, right. lists can't be At
08:08:18 <c_wraith> > [1 .. 10] ^? ix 1
08:08:20 <lambdabot> Just 2
08:08:29 dcoutts_ joins (~duncan@host213-122-124-249.range213-122.btcentralplus.com)
08:09:34 <fockerize> [1..10] ^. pre (ix 1) . non 0
08:09:38 ccntrq joins (~Thunderbi@2a01:c22:90b1:6100:1d89:f6ad:e13f:6833)
08:09:42 <fockerize> > [1..10] ^. pre (ix 1) . non 0
08:09:44 <lambdabot> 2
08:10:12 <fockerize> ok just checking if there's other canonical way of doing this
08:10:30 <Axman6> > [1.. 10::Int] ^? ix 1
08:10:32 <lambdabot> Just 2
08:10:38 <fockerize> > [1..10] ^. pre (ix 11) . non 0
08:10:40 <lambdabot> 0
08:11:29 × dcoutts__ quits (~duncan@host213-122-124-189.range213-122.btcentralplus.com) (Ping timeout: 272 seconds)
08:13:42 × lottaquestions quits (~nick@S0106a84e3f794893.ca.shawcable.net) (Quit: Konversation terminated!)
08:14:39 × benin0 quits (~benin@183.82.29.162) (Ping timeout: 272 seconds)
08:14:45 <Profpatsch> When I have a left fold from postgres, I guess I don’t want to use a [] as the intermediate result type right?
08:15:06 <Profpatsch> cause append is horrible
08:15:53 <Profpatsch> In the same vein, is Validation (NonEmpty err) a even a good idea?
08:16:04 <Profpatsch> When using it with applicative instances that is
08:17:24 × chomwitt quits (~chomwitt@2a02:587:dc0d:4a00:99fe:ae00:5424:6d23) (Ping timeout: 276 seconds)
08:18:44 × mud quits (~mud@user/kadoban) (Remote host closed the connection)
08:19:02 × Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
08:19:04 <Profpatsch> But looks like there isn’t even a Map.fromSeq
08:19:09 mud joins (~mud@user/kadoban)
08:21:30 × phma quits (phma@2001:5b0:211c:eca8:4705:335b:2d2:d9c2) (Read error: Connection reset by peer)
08:22:25 × raym quits (~raym@user/raym) (Quit: kernel update, rebooting...)
08:22:30 phma joins (phma@2001:5b0:211f:568:3cfb:a496:a509:3082)
08:22:44 × thaumavorio quits (~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in)
08:24:01 thaumavorio joins (~thaumavor@thaumavor.io)
08:24:14 dextaa8 is now known as dextaa
08:25:20 matthewmosior joins (~matthewmo@173.170.253.91)
08:27:22 Midjak joins (~Midjak@82.66.147.146)
08:28:29 dcoutts joins (~duncan@host86-177-125-93.range86-177.btcentralplus.com)
08:29:38 kuribas joins (~user@silversquare.silversquare.eu)
08:30:02 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
08:30:19 <kuribas> ugh, my project for making a record of lenses is going totally out of hand...
08:30:35 × dcoutts_ quits (~duncan@host213-122-124-249.range213-122.btcentralplus.com) (Ping timeout: 244 seconds)
08:31:39 <kuribas> using generics
08:31:50 × wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
08:31:59 <kuribas> Now I am using an existential to hide a type variable, then unsafeCoerce to pull it out again.
08:32:13 <kuribas> I wonder if I shouldn't just scrap the idea, and go with template haskell instead.
08:32:16 wagle joins (~wagle@quassel.wagle.io)
08:32:30 <kuribas> The generics will be probably slower as well.
08:32:46 <fockerize> I have a MyData record type which contains a field(MyField) of type Num. how to make instance Num MyData to be the same as the field MyField?
08:32:59 × coot quits (~coot@213.134.190.95) (Quit: coot)
08:33:27 <fockerize> so that I don't have to define all the functions required by the class Num
08:33:32 <kuribas> fockerize: you cannot
08:33:33 <fockerize> by hand
08:33:35 <kuribas> unless it's a newtype
08:33:51 Pickchea joins (~private@user/pickchea)
08:34:11 <fockerize> kuribas: that's sad
08:34:11 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 244 seconds)
08:34:12 × mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds)
08:35:52 <merijn> fockerize: Also, that sounds like a terrible idea that should not be attempted >.>
08:36:06 <kuribas> that also
08:36:47 vglfr joins (~vglfr@coupling.penchant.volia.net)
08:36:54 <merijn> Whenever you think "I want X to be an instance of Num" and you are *not* writing an algebra library where X is something resembling a number, just go for a walk until the insanity passes :)
08:37:00 <kuribas> fockerize: make lenses for your record.
08:37:24 <kuribas> fockerize: then you can update the field using "over myFieldLens"
08:37:32 <kuribas> :t over
08:37:34 <lambdabot> ASetter s t a b -> (a -> b) -> s -> t
08:37:53 <kuribas> much saner
08:37:59 <kuribas> and also more general
08:39:47 <kuribas> or with generic-lens: over field @"myField" (* 2)
08:44:16 <kuribas> https://hackage.haskell.org/package/generic-lens-2.2.1.0/docs/Data-Generics-Product-Fields.html#v:field
08:44:59 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
08:44:59 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Write error: Connection reset by peer)
08:44:59 × noteness quits (~noteness@user/noteness) (Write error: Connection reset by peer)
08:44:59 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Write error: Connection reset by peer)
08:44:59 × winny quits (~weechat@user/winny) (Read error: Connection reset by peer)
08:44:59 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Read error: Connection reset by peer)
08:44:59 × califax quits (~califax@user/califx) (Read error: Connection reset by peer)
08:45:10 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
08:45:21 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
08:45:22 califax joins (~califax@user/califx)
08:45:23 noteness joins (~noteness@user/noteness)
08:45:24 chexum joins (~quassel@gateway/tor-sasl/chexum)
08:45:30 winny joins (~weechat@user/winny)
08:45:32 ChaiTRex joins (~ChaiTRex@user/chaitrex)
08:46:04 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
08:46:14 nate4 joins (~nate@98.45.169.16)
08:46:33 × winny quits (~weechat@user/winny) (Remote host closed the connection)
08:46:40 ubert joins (~Thunderbi@91.141.39.36.wireless.dyn.drei.com)
08:46:58 winny joins (~weechat@user/winny)
08:48:08 × Pickchea quits (~private@user/pickchea) (Ping timeout: 244 seconds)
08:50:18 × jargon quits (~jargon@184.101.188.251) (Remote host closed the connection)
08:50:34 schweers joins (~user@p200300e34f1b3c008e5a2f37be14a79a.dip0.t-ipconnect.de)
08:50:58 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
08:51:55 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
08:54:51 <albet70> I have a cabal project named "upload-files", and "cd upload-files; cabal init" got upload-files.cabal, now there's a cabal project called scotty-login-session on github, I git clone it into my upload-files, now how can use the third party modules in my code by config cabal.project?
08:55:36 <albet70> I read the doc about cabal.project, sorry I don't get it
08:57:11 <albet70> I know I can just cd scotty-login-session and use cabal v2-install --lib to install it, then config upload-files.cabal to use it, is there other proper way?
08:58:15 <albet70> I can't find kind of this question on google, it's so few people to use it?
08:58:28 matthewmosior joins (~matthewmo@173.170.253.91)
08:59:57 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
09:00:15 × Guest|38 quits (~Guest|38@89.253.138.59) (Ping timeout: 272 seconds)
09:02:37 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
09:02:39 dcoutts_ joins (~duncan@host86-158-23-99.range86-158.btcentralplus.com)
09:03:00 × dcoutts quits (~duncan@host86-177-125-93.range86-177.btcentralplus.com) (Ping timeout: 260 seconds)
09:07:51 × noteness quits (~noteness@user/noteness) (Remote host closed the connection)
09:08:06 noteness joins (~noteness@user/noteness)
09:10:07 `2jt joins (~jtomas@84.78.228.192)
09:10:16 wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de)
09:13:21 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
09:14:40 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:14:40 Igloo joins (~ian@matrix.chaos.earth.li)
09:14:43 coot joins (~coot@213.134.190.95)
09:15:27 × noctux quits (~noctux@user/noctux) (Read error: Connection reset by peer)
09:16:03 × ix quits (~ix@82-71-2-184.dsl.in-addr.zen.co.uk) (Ping timeout: 244 seconds)
09:16:48 Pickchea joins (~private@user/pickchea)
09:17:36 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
09:18:47 × bjobjo quits (~bjobjo@user/bjobjo) (Quit: leaving)
09:18:58 gmg joins (~user@user/gehmehgeh)
09:24:25 <[exa]> albet70: the "install it" goes to local project directories, it is still separated from other packages. Do you see the example on the top of the cabal.project docs?
09:25:44 Guest|38 joins (~Guest|38@89.253.138.59)
09:25:50 <[exa]> the only thing from that you need is the first line -- just put it into your "upload-files" directory next to "upload-files.cabal", i.e. into file "upload-files/cabal.project"
09:26:05 <[exa]> that tells cabal you have local packages in that directory's subdirectories
09:26:37 <[exa]> then you put the scotty-login-session as a subdirectory there, i.e. you will have `upload-files/scotty-login-session`
09:27:03 <[exa]> and then it should just work™
09:27:38 <[exa]> (just checking -- do you have a dependency declared in upload-files.cabal? it should explicitly say that it needs the scotty-login-session package.)
09:31:06 × pie__ quits (~pie_bnc@user/pie/x-2818909) ()
09:31:27 pie_ joins (~pie_bnc@user/pie/x-2818909)
09:31:30 noctux joins (~noctux@user/noctux)
09:32:08 matthewmosior joins (~matthewmo@173.170.253.91)
09:33:09 <albet70> "[exa] :the only thing from that you need is the first line -- just put it into your "upload-files" directory next to "upload-files.cabal", i.e. into file "upload-files/cabal.project"", the first line is "package: */*.cabal"? just write this into cabal.project?
09:33:22 <albet70> "[exa] :(just checking -- do you have a dependency declared in upload-files.cabal? it should explicitly say that it needs the scotty-login-session package.)", yes, I do
09:35:43 × mmhat quits (~mmh@p200300f1c7090757ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
09:36:32 mc47 joins (~mc47@xmonad/TheMC47)
09:36:38 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
09:38:33 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
09:39:51 <albet70> now I have upload-files/scotty-login-session and upload-files/cabal.project, just one line "package: */*.cabal" in it, and in upload-files.cabal's build-depends, there is scotty-login-session, but when I run "cabal run " it tells no target given and no package in current directory
09:41:15 × nschoe quits (~quassel@178.251.84.79) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
09:41:28 nschoe joins (~quassel@178.251.84.79)
09:44:35 × `2jt quits (~jtomas@84.78.228.192) (Ping timeout: 272 seconds)
09:44:36 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:45:09 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 276 seconds)
09:45:40 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
09:47:00 hsman joins (~hsman@80.95.197.227)
09:47:11 × drlkf quits (~drlkf@ns327185.ip-37-187-109.eu) (Quit: q=)
09:47:44 drlkf joins (~drlkf@ns327185.ip-37-187-109.eu)
09:48:48 mmhat joins (~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de)
09:48:49 <hsman> Hello all! I recently started using Haskell and I like what I've seen so far. Can somebody please point me to a good, open-source project to learn from? \
09:50:30 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 268 seconds)
09:54:33 __monty__ joins (~toonn@user/toonn)
09:54:47 <[exa]> hsman: depends on what you want to learn. The whole hackage has "source" buttons, so you can literally click any function you like in the docs and see how people do it
09:55:20 <[exa]> albet70: do you have `upload-files.cabal` ?
09:55:35 <[exa]> that should be the starting point of your current project
09:59:29 <hsman> I would like to learn how to structure the project, how to "include" files etc. My experience this far is only with the usual suspects (C++, Python etc) where you have quite a lot of liberty on how to organise files etc.
09:59:42 CiaoSen joins (~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:01:08 <hsman> albet70: I haven't used cabal
10:01:23 × CiaoSen quits (~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Client Quit)
10:04:00 CiaoSen joins (~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:04:32 Everything joins (~Everythin@37.115.210.35)
10:05:48 matthewmosior joins (~matthewmo@173.170.253.91)
10:07:27 <chreekat> albet70: it sounds like you just want to use scotty-login-session as a dependency in your project, right? If that's the case you don't want to download it manually, you just want to add it as a dependency in your project. You do that by editing your project's cabal file
10:10:05 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:10:24 <chreekat> Also if you just want to use it as a dependency, you don't need to bother with cabal.project file yet. That's basically only for projects that contain multiple Haskell packages. But you've just got one so far, "upload-files"
10:10:46 `2jt joins (~jtomas@84.78.228.192)
10:13:08 <[exa]> hsman: then this is probably for you https://wiki.haskell.org/How_to_write_a_Haskell_program
10:13:20 <chreekat> hsman: a Haskell package is defined by a cabal file. Unfortunately I haven't approached this from the newcomer perspective in a while, and I don't know if any good tutorials or examples for getting started off the top of my head. Fwiw the cabal docs are at https://cabal.readthedocs.io/en/3.6/
10:13:43 × Vajb quits (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Ping timeout: 272 seconds)
10:15:56 <chreekat> Ah it looks like https://en.m.wikibooks.org/wiki/Haskell/Packaging has a link to a simple example package
10:16:16 × toluene quits (~toluene@user/toulene) (Quit: Ping timeout (120 seconds))
10:16:18 Vajb joins (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi)
10:16:21 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 276 seconds)
10:17:48 toluene joins (~toluene@user/toulene)
10:18:10 merijn joins (~merijn@86.86.29.250)
10:18:18 <albet70> "🟢 [exa] :albet70: do you have `upload-files.cabal` ?", yes, I have
10:18:18 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 240 seconds)
10:18:50 Everything parts (~Everythin@37.115.210.35) ()
10:19:25 <hsman> Thanks. I'll have a look
10:19:58 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
10:22:10 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
10:24:16 <schweers> Since I recently ran `stack clean` on my project, my builds fail with this mysterious error: https://pastebin.com/gZx9bBD4 Does anyone have an idea what might be going on here?
10:26:53 × erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (Read error: Connection reset by peer)
10:27:12 erisco joins (~erisco@d24-57-249-233.home.cgocable.net)
10:28:36 × fjmorazan quits (~quassel@user/fjmorazan) (Remote host closed the connection)
10:29:45 fjmorazan joins (~quassel@user/fjmorazan)
10:30:35 × jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 268 seconds)
10:30:37 <schweers> On a possibly related note: are there known problems with both cabal and stack when using debian unstable? I get warnings about GHC being very new. Also cabal won’t build my project, because it can’t satisfy the dependencies for some reason. It seems to be a problem with different versions.
10:31:12 alexhandy2 joins (~trace@user/trace)
10:31:32 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Quit: WeeChat 3.5)
10:33:23 MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
10:33:42 cfricke joins (~cfricke@user/cfricke)
10:34:11 × alexhandy quits (~trace@user/trace) (Read error: Connection reset by peer)
10:34:17 × CiaoSen quits (~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
10:34:23 alexhandy joins (~trace@user/trace)
10:36:13 ccapndave joins (~ccapndave@xcpe-194-230-18-110.cgn.res.adslplus.ch)
10:36:56 × phma quits (phma@2001:5b0:211f:568:3cfb:a496:a509:3082) (Read error: Connection reset by peer)
10:37:40 × alexhandy2 quits (~trace@user/trace) (Ping timeout: 244 seconds)
10:37:42 phma joins (~phma@host-67-44-208-126.hnremote.net)
10:39:10 <chreekat> schweers: that warning looks specific to stack, which I hear doesn't support certain versions of ghc yet. In general, the interplay of versions of Haskell software (compiler, build tools, libraries) is sufficiently complex that relying on distro packages nearly doesn't work. For libraries you can rely on cabal/stack, and for compilers and cabal/stack themselves you can look at ghcup
10:40:32 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
10:40:56 <schweers> So the general recommendation of the haskell community is to use ghcup instead of distro packages?
10:41:14 <maerwald> schweers: that's an excellent choice
10:44:33 <Clint> schweers: unstable is a mess right now due to the GHC 9 transition; if you want something usable you'd need to use stable or testing
10:47:03 <[exa]> schweers: distro packages usually serve for powering the distro haskell software distribution (e.g., compiling pandoc for debians), which is very likely not what you want as a programmer
10:47:31 <[exa]> albet70: where do you run the 'cabal install' ? should be next to that upload-files.cabal file.
10:48:08 <schweers> I see that it’s a mess at the time. I normally prefer to use distro packages, but it seems that for many languages that’s no longer a good choice.
10:49:06 × ccapndave quits (~ccapndave@xcpe-194-230-18-110.cgn.res.adslplus.ch) (Quit: Textual IRC Client: www.textualapp.com)
10:49:13 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
10:50:32 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
10:51:18 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:51:28 <john> Hi .. I have a type signature munge :: (x -> y) -> (y -> (w, z)) -> x -> w for which the implementation in haskell book is
10:51:49 <john> munge :: (x -> y) -> (y -> (w, z)) -> x -> w
10:52:13 <john> sorry
10:52:37 <john> munge xy ywz x = fst $ ywz $ xy x
10:52:48 <john> how did they get the fst function here ??
10:53:14 <john> :t munge xy ywz x = fst $ ywz $ xy x
10:53:15 <lambdabot> error: parse error on input ‘=’
10:54:05 × Guest|38 quits (~Guest|38@89.253.138.59) (Ping timeout: 255 seconds)
10:55:17 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
10:56:28 <geekosaur> :t let munge xy ywz x = fst $ ywz $ xy x in munge
10:56:29 <lambdabot> (t1 -> t2) -> (t2 -> (a, b)) -> t1 -> a
10:57:41 Julius joins (~Julius@ip5f5abb4c.dynamic.kabel-deutschland.de)
10:58:16 × Julius quits (~Julius@ip5f5abb4c.dynamic.kabel-deutschland.de) (Client Quit)
10:59:01 <geekosaur> and I don't really understand the question, beyond that `ywz` is returning `(a,b)` so if we want just `a` then we have to use `fst`
10:59:08 absence_ is now known as absence
11:00:03 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
11:00:03 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
11:00:04 <john> "ywz is returning (a,b)" ?
11:00:39 chexum joins (~quassel@gateway/tor-sasl/chexum)
11:01:10 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
11:01:19 <geekosaur> this comes from the type signature, compared to what the function is doing
11:01:30 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
11:01:39 <john> geekosaur: Can you explain the type signature "munge :: (x -> y) -> (y -> (w, z)) -> x -> w"
11:01:49 chexum joins (~quassel@gateway/tor-sasl/chexum)
11:01:56 jgeerds joins (~jgeerds@55d437cf.access.ecotel.net)
11:01:57 <geekosaur> yes, based on the implementation
11:01:59 pmarg joins (~pmarg@2a01:799:159f:9b00:6584:89a5:7099:99c5)
11:02:17 × cheater quits (~Username@user/cheater) (Quit: Bitchx: Better than peer)
11:02:18 <albet70> "🟢 [exa] :albet70: where do you run the 'cabal install' ? should be next to that upload-files.cabal file.", you mean I need to run "cabal install" inside upload-files before "cabal run"?
11:02:21 <geekosaur> fst (ywz (xy x))
11:02:45 <geekosaur> (turning the `$`s into parentheses to show that it's function application)
11:03:22 <geekosaur> so this indicates that `ywz` and `xy` must be functions, and the type signature is showing you the types of these functions
11:04:07 <geekosaur> `xy` is a function from `x` to `y`, and `ywz` is a function from `y` to a tuple `(w,z)`
11:04:15 <john> I understood munge as a function which takes xy which in turn takes another function ywz which in turn takes an argument x resulting in an output w" .. does that sound right?
11:04:28 <geekosaur> not quite
11:04:49 <geekosaur> `xy` does not take that function. `munge xy` does
11:05:01 <john> yes
11:05:22 <geekosaur> (partial application, that is)
11:05:25 <john> yes
11:05:35 <geekosaur> `xy` is just a function from `x` to `y`
11:05:41 <john> ok
11:05:53 <geekosaur> `ywz` is a function from `y` to `(w,z)`
11:05:56 × mjacob quits (~mjacob@adrastea.uberspace.de) (Read error: Connection reset by peer)
11:06:05 <john> ok
11:06:09 <geekosaur> then we want, according to the type of `munge`, just the `w`
11:06:18 <geekosaur> so it applies `fst` to the result
11:06:49 <john> in such a scenario.. y refers to the function fst?
11:07:15 <geekosaur> it *is* kinda difficul;t to trace through this because it all looks like type variable soup 🙂 but if you trace through them it becomes fairly obvious
11:07:23 <geekosaur> no
11:07:38 <geekosaur> `fst` is not a parameter, it's a function from the Prelude
11:07:43 <john> yes
11:08:11 <geekosaur> `y` is the same `y` produced by `xy`
11:08:42 <john> ok
11:10:09 <geekosaur> in some sense you can think of `$` as pipelining values from one function to another, so `ywz $ xy x` computes `xy x` and sends the result to `ywz`
11:10:13 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
11:10:20 <geekosaur> then the result of that is sent to `fst`
11:10:24 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
11:10:26 cheater joins (~Username@user/cheater)
11:10:54 <geekosaur> (in general function application and function composition go right to left, not left to right)
11:11:21 <john> and that necessarily has to give the value (w,z) and we want to get w out so we apply fst ??
11:11:42 mjacob joins (~mjacob@adrastea.uberspace.de)
11:12:22 <geekosaur> yes
11:12:29 <john> got it..
11:12:35 bontaq` joins (~user@ool-45779fe5.dyn.optonline.net)
11:13:49 <john> one more advice.. you mentioned tracing through the it.. how do you do it.? I understand when you have real values you can compute / solve a bit and see if its lining along but how do you do it with abstract values?
11:15:22 <geekosaur> you can still see the flow of types. you also need the implementation as guidance, though
11:15:31 hpc joins (~juzz@ip98-169-32-242.dc.dc.cox.net)
11:15:38 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
11:16:28 xff0x joins (~xff0x@2405:6580:b080:900:226f:8243:60d1:9235)
11:16:28 <geekosaur> but, for example, since `w` only appears in the tuple `(w,z)` and as the result type, you can tell immediately that the tuple must be the result of `ywz`
11:16:38 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
11:16:38 bjobjo joins (~bjobjo@user/bjobjo)
11:17:05 <john> ok
11:17:18 <absence> is there a way to "rebalance" tuples automatically, e.g. ((x, y), z) -> (x, (y, z)), without spelling out all possible permutations? i realise that such tuples are different types, so i guess it would involve something like generics/th
11:17:51 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:18:15 <geekosaur> yeh, probably generics
11:19:00 × zxx7529 quits (~Thunderbi@user/zxx7529) (Ping timeout: 244 seconds)
11:19:10 <geekosaur> it's kinda unfortunate that tuples don't behave somewhat like lists (iirc they do in some other haskell-like languages😞 (a,b,c) is actually (a,(b,c)), and so on
11:20:12 <fockerize> any web scrapers that also supports modification or updates?
11:20:37 <fockerize> I'm fond of the scalpel library, but it can't update files
11:22:10 <absence> geekosaur: that sounds nice... do you know if there's a library that already does something like that with generics?
11:22:45 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
11:23:01 <geekosaur[m]> Not offhand
11:26:19 matthewmosior joins (~matthewmo@173.170.253.91)
11:27:50 × john quits (~john@60.254.0.204) (Ping timeout: 255 seconds)
11:30:25 nate4 joins (~nate@98.45.169.16)
11:32:50 × jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 240 seconds)
11:33:17 jtomas joins (~jtomas@84.78.228.192)
11:34:13 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
11:34:38 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
11:34:50 × `2jt quits (~jtomas@84.78.228.192) (Read error: Connection reset by peer)
11:35:15 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
11:36:08 `2jt joins (~jtomas@84.78.228.192)
11:37:02 <schweers> Can someone explain this cabal line to me? [__1] rejecting: base-4.14.3.0/installed-4.14.3.0 (conflict: aufb => base^>=4.11.3.0 && <5)
11:37:06 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:37:17 <schweers> Why does 4.14.3 not satisfy >=4.11.3.0?
11:37:31 <schweers> Also: what does ^>= mean, compared to >=?
11:38:10 × jtomas quits (~jtomas@84.78.228.192) (Ping timeout: 260 seconds)
11:38:49 <merijn> schweers: See the 2nd half of: https://cabal.readthedocs.io/en/3.6/cabal-package.html#pkg-field-build-depends
11:39:19 × cheater quits (~Username@user/cheater) (Quit: (BitchX) If you gaze into the abyss, the abyss gazes also into you)
11:40:18 <schweers> Oh, I see, thank you very much!
11:40:18 <schweers>
11:40:45 <merijn> I'm guessing the <5 constraint comes from another package
11:40:47 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
11:41:19 <merijn> And it's really just a conflict of ^>=4.11.3.0 not allowing 4.14
11:41:40 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:42:19 raym joins (~raym@user/raym)
11:43:10 × [exa] quits (exa@user/exa/x-3587197) (Ping timeout: 240 seconds)
11:44:00 [exa] joins (exa@srv3.blesmrt.net)
11:46:02 emanon421 joins (~emanon42@103.120.19.44)
11:47:24 cheater joins (~Username@user/cheater)
11:47:37 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
11:47:54 × emanon42 quits (~emanon42@103.120.19.44) (Ping timeout: 272 seconds)
11:47:54 emanon421 is now known as emanon42
11:51:41 × merijn quits (~merijn@86.86.29.250) (Ping timeout: 255 seconds)
11:52:04 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 244 seconds)
11:57:26 john joins (~john@115.96.219.230)
12:05:30 × bliminse quits (~bliminse@user/bliminse) (Ping timeout: 240 seconds)
12:06:57 × cheater quits (~Username@user/cheater) (Read error: Connection reset by peer)
12:07:28 bliminse joins (~bliminse@user/bliminse)
12:18:25 merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
12:21:11 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:23:55 × pmarg quits (~pmarg@2a01:799:159f:9b00:6584:89a5:7099:99c5) (Remote host closed the connection)
12:27:45 × merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
12:29:10 × `2jt quits (~jtomas@84.78.228.192) (Ping timeout: 240 seconds)
12:29:28 × schweers quits (~user@p200300e34f1b3c008e5a2f37be14a79a.dip0.t-ipconnect.de) (Remote host closed the connection)
12:30:47 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
12:31:13 alexhandy2 joins (~trace@user/trace)
12:31:34 dschrempf joins (~dominik@mobiledyn-62-240-134-33.mrsn.at)
12:33:59 × alexhandy quits (~trace@user/trace) (Read error: Connection reset by peer)
12:34:19 alexhandy joins (~trace@user/trace)
12:35:28 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
12:37:32 × alexhandy2 quits (~trace@user/trace) (Ping timeout: 244 seconds)
12:37:45 pgas joins (~pg@190.247.245.154)
12:38:25 img joins (~img@user/img)
12:39:47 fserucas joins (~fserucas@89.214.118.110)
12:39:51 fserucas_ joins (~fserucas@89.214.118.110)
12:41:51 zxx7529 joins (~Thunderbi@user/zxx7529)
12:42:24 × zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection)
12:42:37 zxx7529 joins (~Thunderbi@user/zxx7529)
12:43:45 Guest34 joins (~Guest34@152.7.255.203)
12:47:40 × phma quits (~phma@host-67-44-208-126.hnremote.net) (Read error: Connection reset by peer)
12:47:58 × raym quits (~raym@user/raym) (Ping timeout: 240 seconds)
12:48:19 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
12:48:38 phma joins (~phma@2001:5b0:211c:45d8:dcca:18c7:bf12:f383)
12:50:22 dextaa joins (~DV@user/dextaa)
12:51:09 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
12:51:55 <qrpnxz> there a way to get ghc to do an action when the garbage collector is called on an object?
12:52:32 × ccntrq quits (~Thunderbi@2a01:c22:90b1:6100:1d89:f6ad:e13f:6833) (Ping timeout: 244 seconds)
12:52:35 bontaq` is now known as bontaq
12:53:03 <qrpnxz> like __gc in lua
12:53:22 dextaa joins (~DV@user/dextaa)
12:53:27 <kuribas> qrpnxz: if you use the FFI you can make your own finalizer.
12:53:36 <kuribas> as far as I remember
12:54:19 <qrpnxz> hmm thanks.
12:54:33 <qrpnxz> Think i can get by with just a bracket actually, but that's good to know.
12:54:35 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
12:54:52 merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
12:55:56 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
12:56:58 jpds1 is now known as jpds
12:59:07 <geekosaur> there is ForeignPtr
12:59:38 ccntrq joins (~Thunderbi@dynamic-095-112-112-176.95.112.pool.telefonica.de)
12:59:38 matthewmosior joins (~matthewmo@173.170.253.91)
13:00:23 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection)
13:01:06 × mima quits (~mmh@aftr-62-216-210-233.dynamic.mnet-online.de) (Quit: leaving)
13:01:23 × ubert quits (~Thunderbi@91.141.39.36.wireless.dyn.drei.com) (Quit: ubert)
13:01:31 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
13:02:21 shriekingnoise joins (~shrieking@201.212.175.181)
13:03:20 mvk joins (~mvk@2607:fea8:5ce3:8500::909a)
13:06:39 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
13:07:50 × Colere quits (~colere@about/linux/staff/sauvin) (Ping timeout: 240 seconds)
13:08:33 Colere joins (~colere@about/linux/staff/sauvin)
13:09:28 nate4 joins (~nate@98.45.169.16)
13:09:36 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
13:11:00 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
13:11:07 Furor joins (~colere@about/linux/staff/sauvin)
13:12:58 × john quits (~john@115.96.219.230) (Quit: Leaving)
13:13:43 × Colere quits (~colere@about/linux/staff/sauvin) (Ping timeout: 244 seconds)
13:14:29 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds)
13:18:01 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
13:19:18 chomwitt joins (~chomwitt@2a02:587:dc0d:4a00:2f00:f9a4:8560:d503)
13:20:20 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
13:25:08 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:25:39 ccntrq1 joins (~Thunderbi@2a01:c23:9146:7000:ddce:cb28:98cc:4397)
13:26:03 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
13:26:10 matthewmosior joins (~matthewmo@173.170.253.91)
13:27:27 × ccntrq quits (~Thunderbi@dynamic-095-112-112-176.95.112.pool.telefonica.de) (Ping timeout: 276 seconds)
13:27:27 ccntrq1 is now known as ccntrq
13:28:45 × merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
13:29:36 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:32:11 × dcoutts_ quits (~duncan@host86-158-23-99.range86-158.btcentralplus.com) (Remote host closed the connection)
13:32:29 dcoutts_ joins (~duncan@host86-158-23-99.range86-158.btcentralplus.com)
13:35:31 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
13:36:01 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:36:33 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
13:38:21 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
13:39:16 × ystael quits (~ystael@user/ystael) (Quit: Lost terminal)
13:40:36 dcoutts joins (~duncan@host86-151-44-236.range86-151.btcentralplus.com)
13:41:50 × dcoutts_ quits (~duncan@host86-158-23-99.range86-158.btcentralplus.com) (Ping timeout: 240 seconds)
13:42:34 geschwindig joins (~John_Ivan@user/john-ivan/x-1515935)
13:43:59 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
13:45:40 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
13:49:26 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:49:33 juri_ joins (~juri@84-19-175-179.pool.ovpn.com)
13:49:41 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
13:50:45 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.5)
13:51:12 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:51:20 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
13:51:38 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
13:53:38 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
13:54:24 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
13:55:41 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
13:56:13 matthewmosior joins (~matthewmo@173.170.253.91)
13:57:06 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
13:57:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:57:38 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
13:58:34 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
13:58:43 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
13:58:51 dcoutts_ joins (~duncan@host86-151-44-236.range86-151.btcentralplus.com)
13:59:05 matthewmosior joins (~matthewmo@173.170.253.91)
13:59:41 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
13:59:41 × dcoutts quits (~duncan@host86-151-44-236.range86-151.btcentralplus.com) (Ping timeout: 244 seconds)
14:00:11 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
14:00:20 raym joins (~raym@user/raym)
14:00:37 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
14:01:13 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:02:10 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
14:03:10 × frost quits (~frost@user/frost) (Quit: Client closed)
14:06:29 dcoutts joins (~duncan@host86-151-44-236.range86-151.btcentralplus.com)
14:07:50 × dcoutts_ quits (~duncan@host86-151-44-236.range86-151.btcentralplus.com) (Ping timeout: 240 seconds)
14:08:38 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
14:10:20 dcoutts_ joins (~duncan@host86-176-29-82.range86-176.btcentralplus.com)
14:10:44 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
14:11:13 × MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 272 seconds)
14:12:04 MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
14:12:10 × dcoutts quits (~duncan@host86-151-44-236.range86-151.btcentralplus.com) (Ping timeout: 240 seconds)
14:12:40 dcoutts joins (~duncan@host86-167-90-210.range86-167.btcentralplus.com)
14:14:07 matthewmosior joins (~matthewmo@173.170.253.91)
14:14:41 × dcoutts_ quits (~duncan@host86-176-29-82.range86-176.btcentralplus.com) (Ping timeout: 244 seconds)
14:17:31 fserucas__ joins (~fserucas@1.75.114.89.rev.vodafone.pt)
14:18:17 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
14:19:38 × fserucas_ quits (~fserucas@89.214.118.110) (Ping timeout: 240 seconds)
14:19:51 fserucas_ joins (~fserucas@1.75.114.89.rev.vodafone.pt)
14:20:43 × fserucas quits (~fserucas@89.214.118.110) (Ping timeout: 272 seconds)
14:24:15 justsomeguy joins (~justsomeg@user/justsomeguy)
14:27:57 merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
14:28:43 <maerwald[m]> https://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-200002.6
14:28:57 <maerwald[m]> I'm wondering if base's Char type violates the standard
14:29:18 <maerwald[m]> As in: is the description of Char in the standard exhaustive?
14:30:09 <maerwald[m]> Because it doesn't speak of unicode codepoint, it is much more specific. But it's not clear to me whether it demands only those properties
14:30:18 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
14:32:34 elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
14:33:02 <dolio> https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1190006.1.2
14:33:41 <geekosaur> https://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-160002.2 has it hidden in graphic
14:34:19 <dolio> Or do you mean, it doesn't say you're allowed to use actual codepoints in a string?
14:34:27 <geekosaur> interestingly, the spec disallows literal unicode whitespace
14:35:03 <geekosaur> (since it calls for space instead of whitechar)
14:35:41 matthewmosior joins (~matthewmo@173.170.253.91)
14:35:43 frost joins (~frost@user/frost)
14:35:47 <maerwald[m]> dolio: Char allows surrogates even
14:35:53 <maerwald[m]> I don't see that in the spec
14:36:32 <maerwald[m]> This causes issues for IsString class
14:36:44 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
14:38:39 <geekosaur> (actually it also excludes literal tabs, which makes me think it's the standard that is buggy)
14:38:57 dextaa joins (~DV@user/dextaa)
14:39:56 <dolio> What is the space lexeme used for?
14:41:17 <geekosaur> it's used in the definition of whitechar which in turn is used in the definition of whitestuff
14:41:35 <geekosaur> space → a space (https://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-160002.2)
14:41:36 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
14:42:38 <dolio> Yeah, I saw that. But I don't have an encyclopedic knowledge of everywhere else `space` is referred to. And without that, it's not obvious that having a symbol for exactly an ascii space is a bug.
14:43:25 <geekosaur> I didn';t say it was. I said that using it in the definition of Char and String literals probably is, because it excludes both Unicode whitespace codepoints and literal tabs
14:43:44 <geekosaur> and that whitechar was probably intended
14:44:24 jakalx joins (~jakalx@base.jakalx.net)
14:45:09 <dolio> Can't be whitechar.
14:45:24 <dolio> It'd have to be filtered, at least.
14:45:25 <geekosaur> it also looks to me like grapheme covers most non-whitespace Unicode codepoints, so they're valid in Char and String literals. dunno on a quick look whether that would include surrogates
14:45:27 <maerwald[m]> Unicode standard chapter 22 defines Symbols. From my understanding, that excludes surrogates
14:45:30 × mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 240 seconds)
14:45:40 <dolio> Which I assume is what the subscript means.
14:46:10 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5)
14:46:12 nate4 joins (~nate@98.45.169.16)
14:46:43 × juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 244 seconds)
14:46:53 <maerwald[m]> https://imgur.com/a/px8MqRQ
14:49:19 <geekosaur> but I also think excluding surrogates from Char is a similar problem to excluding negative numbers from Word: for the most part it's defined at runtime, not compile time
14:50:40 <geekosaur> literals should exclude them, but excluding them from base would require every operation on Char or String to check for them
14:51:18 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
14:51:50 <maerwald[m]> geekosaur: yes but IsString doesn't just work on literals
14:53:27 juri_ joins (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
14:53:32 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
14:54:26 <geekosaur> dolio, what did you mean by "can't be whitechar"?
14:55:25 <geekosaur> oh, that newline would need to be filtered? (and probablky vertical tab)
14:55:43 <geekosaur> that's unfortunate, yes
14:55:59 <geekosaur> but then this feels like the whole grammar needs to be carefully gone over
14:56:21 × chomwitt quits (~chomwitt@2a02:587:dc0d:4a00:2f00:f9a4:8560:d503) (Remote host closed the connection)
14:56:40 <dolio> Right, it has stuff that can't be allowed in a character literal.
14:56:42 chomwitt joins (~chomwitt@2a02:587:dc0d:4a00:deae:e1cf:72:7368)
14:57:09 <dolio> There needs to be a 'within line whitespace' token or something.
14:57:27 × raym quits (~raym@user/raym) (Ping timeout: 272 seconds)
14:57:38 raym joins (~raym@user/raym)
14:58:43 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
14:59:04 × frost quits (~frost@user/frost) (Quit: Client closed)
15:00:17 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
15:02:10 × merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
15:02:23 pgas parts (~pg@190.247.245.154) (Leaving)
15:02:37 pgas joins (~pg@190.247.245.154)
15:04:10 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
15:05:09 dcoutts_ joins (~duncan@host86-167-90-210.range86-167.btcentralplus.com)
15:11:01 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
15:11:07 frost joins (~frost@user/frost)
15:16:26 merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
15:16:55 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
15:18:13 yax joins (~yax@2402:e280:3e30:264:6382:23ae:df6a:b0e1)
15:18:36 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
15:18:48 cheater joins (~Username@user/cheater)
15:18:55 hgolden joins (~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
15:18:56 × yax quits (~yax@2402:e280:3e30:264:6382:23ae:df6a:b0e1) (Changing host)
15:18:56 yax joins (~yax@user/yax/x-9576643)
15:18:57 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
15:19:21 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:19:24 yax parts (~yax@user/yax/x-9576643) ()
15:19:39 yax joins (~yax@user/yax/x-9576643)
15:19:55 yax is now known as yax__
15:20:01 matthewmosior joins (~matthewmo@173.170.253.91)
15:20:10 ulvarrefr joins (~user@185.24.53.152)
15:20:29 yax__ parts (~yax@user/yax/x-9576643) ()
15:21:14 yax__ joins (~yax@user/yax/x-9576643)
15:21:31 × merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
15:22:08 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:23:04 zebrag joins (~chris@user/zebrag)
15:23:57 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:24:29 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
15:24:39 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
15:26:14 × nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
15:27:12 × christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 268 seconds)
15:27:40 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
15:28:34 × juri_ quits (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
15:29:27 × chele quits (~chele@user/chele) (Remote host closed the connection)
15:30:23 PiDelport joins (uid25146@id-25146.lymington.irccloud.com)
15:30:33 juri_ joins (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
15:30:47 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
15:32:51 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
15:35:11 HaxCPU is now known as Andrew
15:37:42 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
15:39:33 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:40:30 stoned is now known as Hash
15:41:01 dcoutts__ joins (~duncan@host86-155-218-160.range86-155.btcentralplus.com)
15:41:23 × nschoe quits (~quassel@178.251.84.79) (Ping timeout: 268 seconds)
15:42:26 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
15:43:32 × dcoutts quits (~duncan@host86-167-90-210.range86-167.btcentralplus.com) (Ping timeout: 244 seconds)
15:43:45 × dcoutts_ quits (~duncan@host86-167-90-210.range86-167.btcentralplus.com) (Ping timeout: 260 seconds)
15:44:03 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
15:44:13 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:44:46 × frost quits (~frost@user/frost) (Ping timeout: 252 seconds)
15:45:59 dcoutts joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
15:46:06 dcoutts_ joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
15:46:50 Andrew is now known as HaxCPU
15:47:23 schweers joins (~user@2001:9e8:be68:9d00:aaa1:59ff:fe3f:235c)
15:47:51 × dcoutts__ quits (~duncan@host86-155-218-160.range86-155.btcentralplus.com) (Ping timeout: 276 seconds)
15:49:19 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
15:50:06 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
15:50:14 o-90 joins (~o-90@gateway/tor-sasl/o-90)
15:52:25 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
15:54:39 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
15:56:05 skubcat joins (~Guest48@156.57.184.235)
15:56:07 × dschrempf quits (~dominik@mobiledyn-62-240-134-33.mrsn.at) (Quit: WeeChat 3.5)
15:56:23 matthewmosior joins (~matthewmo@173.170.253.91)
15:57:36 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 276 seconds)
15:57:44 <sm> is there a more robust, featureful, portable regex lib than regex-tdfa these days ?
15:58:53 × ccntrq quits (~Thunderbi@2a01:c23:9146:7000:ddce:cb28:98cc:4397) (Remote host closed the connection)
15:59:12 ccntrq joins (~Thunderbi@2a01:c23:9146:7000:ddce:cb28:98cc:4397)
15:59:43 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:00:43 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
16:01:50 christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
16:02:06 × dcoutts quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Remote host closed the connection)
16:02:29 dcoutts joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
16:02:37 dcoutts__ joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
16:05:51 × dcoutts_ quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 272 seconds)
16:06:16 dcoutts_ joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
16:07:30 × dcoutts quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 240 seconds)
16:07:38 × juri_ quits (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Ping timeout: 240 seconds)
16:07:58 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
16:08:23 × dcoutts__ quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 272 seconds)
16:08:38 × acidjnk_new quits (~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
16:08:45 dcoutts joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
16:09:30 Guest8527 joins (~Guest85@ti0185a400-0748.bb.online.no)
16:09:38 juri_ joins (~juri@84-19-175-179.pool.ovpn.com)
16:12:06 × MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Read error: Connection reset by peer)
16:15:36 matthewmosior joins (~matthewmo@173.170.253.91)
16:16:57 × ccntrq quits (~Thunderbi@2a01:c23:9146:7000:ddce:cb28:98cc:4397) (Remote host closed the connection)
16:22:05 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.5)
16:24:13 × mmhat quits (~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5)
16:24:15 × chomwitt quits (~chomwitt@2a02:587:dc0d:4a00:deae:e1cf:72:7368) (Ping timeout: 276 seconds)
16:24:45 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
16:25:10 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
16:26:33 × kuribas quits (~user@silversquare.silversquare.eu) (Quit: ERC (IRC client for Emacs 26.3))
16:27:10 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
16:27:47 biberu joins (~biberu@user/biberu)
16:31:32 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
16:31:36 × machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 244 seconds)
16:32:36 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:32:38 jgeerds joins (~jgeerds@55d437cf.access.ecotel.net)
16:36:16 × yax__ quits (~yax@user/yax/x-9576643) (Ping timeout: 268 seconds)
16:38:05 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
16:43:02 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 272 seconds)
16:43:42 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:46:58 merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
16:49:43 × dcoutts quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Remote host closed the connection)
16:49:54 schweers parts (~user@2001:9e8:be68:9d00:aaa1:59ff:fe3f:235c) (ERC 5.4 (IRC client for GNU Emacs 28.1))
16:50:01 dcoutts__ joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
16:50:06 dcoutts joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
16:50:27 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
16:51:21 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
16:52:10 × dcoutts_ quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 240 seconds)
16:53:58 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:54:50 chomwitt joins (~chomwitt@2a02:587:dc0d:4a00:dd89:2ce:aa76:b885)
16:56:14 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
16:58:30 dcoutts_ joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
16:59:21 × dcoutts quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 276 seconds)
16:59:30 × dcoutts__ quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 244 seconds)
16:59:45 dcoutts joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
16:59:48 jese joins (~nikola@178-221-112-41.dynamic.isp.telekom.rs)
17:00:17 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
17:00:28 × sander quits (~sander@user/sander) (Quit: So long! :))
17:00:36 azimut joins (~azimut@gateway/tor-sasl/azimut)
17:00:57 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 268 seconds)
17:01:38 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
17:01:38 allbery_b joins (~geekosaur@xmonad/geekosaur)
17:01:41 allbery_b is now known as geekosaur
17:03:26 × coot quits (~coot@213.134.190.95) (Quit: coot)
17:04:42 <jese> Where can i see with which versions of base my compiler comes with?
17:05:31 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
17:05:35 jinsun__ joins (~jinsun@user/jinsun)
17:05:35 jinsun is now known as Guest2672
17:05:35 × Guest2672 quits (~jinsun@user/jinsun) (Killed (tungsten.libera.chat (Nickname regained by services)))
17:05:35 jinsun__ is now known as jinsun
17:06:36 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:10:57 <[exa]> jese: I'm usually looking at the output of `ghc-pkg list` but there might be better ways
17:11:05 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
17:11:46 <[exa]> AFAIK the ghc and base versions are pretty much fixed 1:1, so you might have luck with just `ghc --version` and looking base up on the internet (if there's a page about it :D )
17:13:02 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:13:09 yax___ joins (~yax@user/yax/x-9576643)
17:14:26 nate4 joins (~nate@98.45.169.16)
17:15:06 <geekosaur> https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history
17:16:19 <[exa]> oh beautiful
17:16:33 × mbuf quits (~Shakthi@122.165.55.71) (Quit: Leaving)
17:17:32 × zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection)
17:17:53 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
17:17:57 <geekosaur> but as mentioned, to see which version your compiler comes with, "ghc-pkg list base"
17:18:49 × jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 268 seconds)
17:19:18 pmarg joins (~pmarg@2a01:799:159f:9b00:893e:346:2854:a0fd)
17:19:57 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
17:20:20 jakalx joins (~jakalx@base.jakalx.net)
17:20:30 Guest45 joins (~Guest45@bras-base-okvlon5405w-grc-53-70-30-46-127.dsl.bell.ca)
17:20:48 × merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
17:21:48 × yax___ quits (~yax@user/yax/x-9576643) (Remote host closed the connection)
17:24:04 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
17:24:56 econo joins (uid147250@user/econo)
17:25:20 coot joins (~coot@213.134.190.95)
17:27:30 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 240 seconds)
17:29:19 matthewmosior joins (~matthewmo@173.170.253.91)
17:32:09 <jese> i see i have only one version of base; i thought i have more of them. can i install other versions of base or is base always tied to the compiler?
17:32:42 <[exa]> base is very tightly glued to the compiler
17:32:54 <[exa]> if you want another base, you probably need another ghc
17:32:54 <Rembane> jese: You can have many versions of base but base is always tied to the compiler. Both ghcup and stack helps you manage different version of ghc.
17:33:22 <geekosaur> well, there was one compiler which supported two versions of base. it's the reason they don't do that any more
17:34:03 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:38:38 <jese> Rembane: what about cabal? can it automatically select ghc to use based upon base constraints of a package i want to build?
17:38:56 <jese> (probably not but let's give it a try)
17:39:14 <geekosaur> cabal can't autoselect one for you but you can select one for it with -w
17:39:25 <Rembane> jese: What geekosaur said
17:39:30 <geekosaur> I'm unclear on whether that's intended as a future feature
17:39:59 janus joins (janus@anubis.0x90.dk)
17:40:15 <jese> i get it
17:40:17 <janus> which ghc releases, if any, include the driver rework patch ? https://gitlab.haskell.org/ghc/ghc/-/commit/25977ab542a30df4ae71d9699d015bcdd1ab7cfb
17:41:14 <janus> if i click the '...' next to 'branches unavailable' it says 9.4.1-alpha1, I guess that means its not in 9.2?
17:42:19 <geekosaur> yeh, that looks like it's in 9.4pre
17:46:01 dcoutts__ joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
17:48:34 × dcoutts quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 244 seconds)
17:48:34 × dcoutts_ quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 244 seconds)
17:48:58 dcoutts joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
17:50:55 × dcoutts__ quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 260 seconds)
17:55:18 <jese> if i use stack will the process of building, installing, and selecting the appropriate compiler version be carried out automatically? so that i don't have to bother with both ghcup and cabal.
17:57:15 <geekosaur> stack doesn't select automatically either. it lives and dies by the resolver you specify
17:57:44 <geekosaur> it just autoselects a bunch of compatible libraries for you, not just base, from the resolver
17:57:48 acidjnk_new joins (~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de)
17:58:56 nightbreak[Away] is now known as nightbreak_
17:58:58 <jese> okay thanks
17:59:33 × Guest34 quits (~Guest34@152.7.255.203) (Quit: Client closed)
18:00:04 × hsman quits (~hsman@80.95.197.227) (Quit: Client closed)
18:03:08 <jese> /exit/exit
18:03:10 × jese quits (~nikola@178-221-112-41.dynamic.isp.telekom.rs) (Quit: leaving)
18:05:57 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
18:06:22 kenran joins (~kenran@200116b82b67ed00effa09132c8744c8.dip.versatel-1u1.de)
18:08:17 causal joins (~user@50.35.83.177)
18:09:59 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:14:02 sander joins (~sander@user/sander)
18:15:04 × Guest45 quits (~Guest45@bras-base-okvlon5405w-grc-53-70-30-46-127.dsl.bell.ca) (Quit: Client closed)
18:15:13 <romes[m]> what’s the best way of debugging an infinite loop
18:15:42 Dutchgriffon joins (~Laurens@70.36.53.134)
18:16:06 × dcoutts quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Remote host closed the connection)
18:16:30 dcoutts joins (~duncan@host86-150-18-52.range86-150.btcentralplus.com)
18:17:48 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Remote host closed the connection)
18:18:11 vglfr joins (~vglfr@coupling.penchant.volia.net)
18:18:15 gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
18:19:36 <ski> romes[m] : i guess you could try binary search, maybe
18:19:43 <ski> ("staring hard" is also an option)
18:19:46 dcoutts_ joins (~duncan@host109-149-38-92.range109-149.btcentralplus.com)
18:20:11 <ski> (but it really depends on the nature of the code which exhibited the loop)
18:20:28 <romes[m]> hahahahah
18:20:35 <romes[m]> I have littered everything with traces
18:20:41 <romes[m]> I am at a loss ahah
18:20:54 <romes[m]> I cannot figure out what is looping
18:21:07 × dcoutts quits (~duncan@host86-150-18-52.range86-150.btcentralplus.com) (Ping timeout: 244 seconds)
18:21:10 <romes[m]> it feels like it just stops
18:21:25 <ski> i'm assuming you're talking about a data loop, rather than a control loop ?
18:21:42 <monochrom> If your debugging messages are not being printed infinitely, then your debugging messages are not part of the infinite loop.
18:22:00 <romes[m]> indeed monochrom
18:22:05 <romes[m]> but i’ve run out of ideas where to place more of them
18:22:14 <monochrom> But we gotta up the game and ask: What's the best way to ask a question?
18:22:19 <romes[m]> i was ready to turn to actual profiling/debugging
18:22:34 <ski> monochrom : surely to ask it as open-ended as possible ?
18:22:52 <monochrom> Yeah, in #math it would be "hi how do I solve equations?"
18:23:01 <romes[m]> ski: how would you differentiate them
18:23:25 <ski> i'm not sure i know how to differentiate (nor integrate) questions .. sounds interesting, though
18:23:25 <Rembane> romes[m]: Does the infinite loop make the program eventually crash?
18:23:28 [exa] suspects a traditional case of let x = x. romes[m], did you check your lets?
18:23:58 <romes[m]> but all is good, I’ll stare harder. I just realized I had never really asked “so how would the best way look like”
18:24:47 <romes[m]> Yeah, I’m going to revert some bits
18:24:47 <romes[m]> the program doesn’t crash; i’ll double check the let’s
18:25:26 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
18:25:29 <[exa]> esp. the nice great looking let's in `do` blocks tend to eeeasily mix with harmless `x <- x` binds
18:25:47 <ski> for a data loop, i guess there's a cyclic path somewhere .. so all points on the cycle contributes to the loop (or, if you break it anywhere, the loop disappears). so that would suggest not looking for a particular spot in code (although it can be that), but a set of spots, contributing to the cycle (a global property)
18:25:53 <Rembane> romes[m]: If the program doesn't crash it either means that you have infinite RAM or that it doesn't allocate in the infinite loop.
18:26:37 <ski> (or that what it allocates is GCed, i guess ?)
18:26:45 <monochrom> Rembane: In my case, Chrome crashed. (Explanation: Linux OOM handler chose to kill Chrome rather than my Haskell program. >:) )
18:26:46 <romes[m]> Rembane good insight
18:26:57 <romes[m]> LOL
18:27:19 × talismanick quits (~talismani@2601:200:c100:3850::dd64) (Ping timeout: 244 seconds)
18:27:34 <romes[m]> ski: right; those are trickier. mine is in a hotspot. i’m starting to feel like exa might be right
18:27:36 <Rembane> monochrom: That's a good symtom. :D
18:27:46 <romes[m]> those x <- x bindings are indeed misleading
18:27:53 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:28:18 <monochrom> Heh yesterday my student wrote "numberHelper left >>= \left -> ..."
18:28:25 <ski> try adding some `rec' to your `do's
18:28:30 × noteness quits (~noteness@user/noteness) (Remote host closed the connection)
18:28:46 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:28:57 <ski> monochrom : and they were then confused ?
18:28:58 noteness joins (~noteness@user/noteness)
18:29:42 <monochrom> Naw, he knew he had two different "left"s, just too lazy to think of a better name at an early stage, eventually he did the proper renaming.
18:30:02 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
18:30:02 <ski> ic
18:30:06 <monochrom> It was actually OK because the 1st "left" would not be used again.
18:30:44 <ski> in OCaml, they often suggest using (non-recursive) `let foo = ..foo..'s
18:30:49 × feliix42 quits (~felix@gibbs.uberspace.de) (Read error: Connection reset by peer)
18:31:07 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
18:31:07 × AWizzArd quits (~code@gehrels.uberspace.de) (Read error: Connection reset by peer)
18:31:18 <ski> (for different versions of "the same thing")
18:32:30 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
18:32:48 Sgeo joins (~Sgeo@user/sgeo)
18:33:44 seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net)
18:33:56 feliix42 joins (~felix@gibbs.uberspace.de)
18:35:15 <seriously> Hey question... am  i reading this bit here wrong? https://paste.tomsmeding.com/ExKVF9us
18:35:33 <monochrom> Going back to debugging messages, I guess the difference between my success and other people's failure is because I add debugging messages to where I think nothing goes wrong, other people add to where they thing something goes wrong.
18:35:49 <seriously> Does the refactored function not take any arguments?
18:36:10 <darkling> seriously: It returns a function.
18:36:10 <monochrom> Now consider the fact that human nature confirmation bias implies that I actually have a better chance.
18:36:17 <[exa]> seriously: that's perfectly okay
18:36:32 <darkling> seriously: So you can then pass an argument to it, and it'll evalute its thing.
18:36:43 AWizzArd joins (~code@gehrels.uberspace.de)
18:38:38 <ski> seriously : it does take an input
18:38:50 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
18:38:53 <seriously> but wont the compiler complain that its a partial function? The definition doesnt match any patteerns
18:38:55 <ski> (albeit not explicitly, in that code)
18:39:00 <ski> no
18:39:41 <monochrom> Patterns are not compulsory in defining functions. (or defining anything.)
18:39:59 <[exa]> seriously: (mathspeak:) it matches a single empty pattern
18:40:04 <ski> `even . length . greaterThan100' *is* a function, myTest' is declared to be a function (further, with matching input and output types). so there is no problem defining the latter to be equal to the former
18:40:07 <monochrom> You answer one single question.
18:40:09 <romes[m]> [exa]: let b = b + 1 :)))))))))))))
18:40:09 × PiDelport quits (uid25146@id-25146.lymington.irccloud.com) (Quit: Connection closed for inactivity)
18:40:24 <ski> [exa] : how's that mathspeak ?
18:40:25 <monochrom> Does "even . length . greaterThan100" have type "[Integer] -> Bool"?
18:40:32 <monochrom> If yes, then you're done.
18:40:36 <[exa]> romes[m]: that was the loop? :D
18:40:37 <monochrom> No but.
18:41:02 <romes[m]> [exa]: not literally but something like that
18:41:04 <romes[m]> your prediction was spot on
18:41:04 <ski> romes[m] : perhaps you should have added `b :: Natural' ..
18:41:15 <monochrom> You know, at this level, you don't even care whether "[Integer] -> Bool" is a function type.
18:41:47 <[exa]> haha lol good. Hope it helped. :D
18:41:57 <romes[m]> i finally understood why you might want to have explicit recursive lets
18:42:02 <[exa]> ski: I meant the tone there. :]
18:42:27 <romes[m]> the name didn’t even exist before the let :) i meant
18:42:56 <ski> i don't think math people talk about matching patterns too much ..
18:43:01 <romes[m]> * (null)
18:43:25 <ski> seriously : anyway, the definition is not "partial". and not matching patterns (explicitly) wouldn't make it partial, anyway
18:43:37 <monochrom> ski, math people include degenerate cases all the time, e.g., "a circle" can have radius 0.
18:43:51 <ski> sure
18:44:32 <seriously> How does myTest', when called, know what argument to apply itself too
18:44:41 <ski> (although, `1' is (nowadays) not a prime number. and an empty space is not connected)
18:45:10 <ski> myTest' [42]
18:45:22 <ski> = (even . length . greaterThan100) [42]
18:45:35 <ski> = even ((length . greaterThan100) [42])
18:45:50 <ski> = even (length (greaterThan100 [42]))
18:45:56 merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
18:45:59 <ski> = ...
18:46:41 <darkling> seriously: The Haskell syntax is very very simple: "f x" means apply the function f to the thing x.
18:47:35 matthewmosior joins (~matthewmo@173.170.253.91)
18:47:52 <darkling> So it doesn't need to know anything extra here -- invoking myTest' (which takes no parameters) returns a function which takes a parameter and returns a Bool.
18:48:02 <seriously> I see... I guess just up to this point it seemed mandatory to give a function definition arguments if its type demanded it... just through me off
18:48:54 <seriously> looking at it this way, myTest' [42], helps
18:49:23 <monochrom> I showed my students "f = \x -> ..."
18:49:52 <monochrom> from which point onwards it's a slippery slope to conclude that "f = <any expression of the right type>" is OK.
18:50:40 <monochrom> I also showed early on "v :: Integer ; v = 4" so they know that "definition" is not limited to "functions".
18:51:43 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.5)
18:52:06 <darkling> I was reaching for that one just now, but wasn't sure I could do the explanation justice.
18:55:10 <monochrom> Well, there is a cultural shock because the imperative culture is to make a big artificial fuss about syntactically distinguishing function definitions and non-function definitions.
18:55:10 × seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Quit: Client closed)
18:55:45 seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net)
18:56:02 alp joins (~alp@user/alp)
18:56:19 <seriously> Is there a way for me to stay in the chat without leaving; so I can review conversations later?
18:57:08 <geekosaur> use matrix instead of irc directly?
18:57:20 <geekosaur> (or irccloud or other service that does the same)
18:57:29 <monochrom> It took me a couple of years of teaching before I realized I could break that curse by the simple act of showing "n :: Int ; n = 4" and "f :: X->Y; f = \x -> ...", and stating that "f x = ..." is syntax sugar for the lambda version.
18:57:35 <geekosaur> you might however want to look at the logs url in the /topic
18:58:22 <seriously> ok
18:59:23 <monochrom> I also took the time to explain "X -> (Y -> Z)" and "\x -> \y -> ..." and even "f x = \y -> ...", at which point nothing is sacred.
18:59:44 <ski> monochrom : it's hard to even remember the time before this lesson was grokked
19:00:00 <geekosaur> I keep my client idling on the channel but I'm also on matrix because element for android is better than the android irc clients I've found; but it means I can pop onto app.element.io as well
19:00:08 alexhandy2 joins (~trace@user/trace)
19:00:57 <monochrom> Yeah, but I have the benefit of observing beginner questions in here and in my office hours.
19:01:39 ski nods
19:02:48 × skubcat quits (~Guest48@156.57.184.235) (Quit: Client closed)
19:03:30 × alexhandy quits (~trace@user/trace) (Ping timeout: 244 seconds)
19:03:32 <ski> [exa] : i guess i would've been less thrown off if you'd said something like "it matches a single case with no patterns"
19:04:08 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
19:05:03 sander is now known as sndr
19:05:47 <ski> ("empty pattern" made me think of e.g. the "absurd patterns" in Agda .. like in Haskell, you have `foo :: Void -> ...; foo v = case v of {}'. in Agda, that'd be `foo : Void -> ...; foo ()' (no definiens/body/right-hand-side), `()' being the absurd pattern .. personally, i write overscore instead (with an RHS))
19:06:39 <ski> foo ‾ = ‾ -- i.e.
19:07:31 <monochrom> -_-
19:07:37 <monochrom> I mean heh
19:08:04 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
19:08:30 <monochrom> But they should totally consider the syntax foo ^ = ^
19:09:13 <seriously> *Instead of thinking about what we want to do with each element, we can instead think about making incremental transformations to the entire input, using the existing recursion patterns that we know of. *
19:09:16 <seriously> this
19:09:20 <ski> (`‾' being the neutral element for disjunctive / or- patterns, just like the wildcard `_' is the neutral element for conjunctive / and- patterns (of which `<var> @ <pat>' is a special case))
19:09:21 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
19:09:28 <seriously> is said nicely**
19:09:34 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
19:09:39 talismanick joins (~talismani@campus-045-135.ucdavis.edu)
19:09:45 × talismanick quits (~talismani@campus-045-135.ucdavis.edu) (Remote host closed the connection)
19:10:01 talismanick joins (~talismani@campus-045-135.ucdavis.edu)
19:10:04 <ski> monochrom : heh, i think i've used `^' occasionally, when i only had access to ASCII
19:10:26 <ski> seriously : where does that come from ?
19:10:40 <seriously> https://www.seas.upenn.edu/~cis1940/spring13/lectures/04-higher-order.html
19:10:41 <ski> talk about wholemeal vs. piecemeal programming ?
19:10:43 <monochrom> I don't think it is said nicely. But it's because I don't think it can be said nicely at all. At least not until a few concrete examples are shown.
19:10:46 <seriously> yeah
19:11:28 <seriously> true I mean it makes better sense now after everything that was said here
19:11:33 × Guest8527 quits (~Guest85@ti0185a400-0748.bb.online.no) (Quit: Client closed)
19:11:47 <monochrom> This is also why I refuse to explain monads in words.
19:11:50 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
19:12:30 ski . o O ( <https://en.wikipedia.org/wiki/Ostensive_definition> )
19:12:57 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
19:12:58 <Rembane> monochrom: Do you give the equations and point to the paper?
19:13:06 <monochrom> Nah.
19:13:35 <monochrom> Examples. Use cases. Equations (but supported by examples and use cases).
19:13:42 <seriously> I suppose I will try to write all my functions in the "composed" style from now on, for practice
19:14:08 <ski> seriously : it is good practice .. but it can also be taken too far
19:14:52 <ski> @pointless myTest xs = even (length (greaterThan100 xs))
19:14:52 <lambdabot> myTest = even . length . greaterThan100
19:14:53 <monochrom> Haskell does have the advantage that you can do algebra and it explains a whole lot, and then you understand why Dijkstra says a formula is worth a thousand pictures.
19:15:40 <ski> @pointless greaterThan100 xs = filter (\x -> x > 100) xs
19:15:40 <lambdabot> greaterThan100 = filter (> 100)
19:15:53 <Rembane> monochrom: I dig that.
19:16:33 <seriously> probably best to keep a standard tho no?? if Im going to do it to long functions to make them short; shouldnt I just do it to the simple ones too?
19:16:58 <seriously> easier to read theas a whole
19:17:00 <seriously> then*
19:17:23 <monochrom> Keep 15 standards
19:18:14 <monochrom> The Haskell community is one of the very few sane communities that understand that one coding style guide doesn't fit all.
19:18:35 <monochrom> There we have another cultural shock.
19:20:01 × merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds)
19:20:32 <ski> seriously : i mean, sometimes if you do it to a function, the code just becomes pretty much incomprehensible (especially after a week or a month)
19:21:04 ski was looking for a suitable example in CIS194 to illustrate this on, but didn't find one
19:22:09 Guest85 joins (~Guest85@ti0185a400-0748.bb.online.no)
19:22:11 <ski> @pointless pythagoreanDiagonal x y = sqrt (x^2 + y^2) -- i guess this example will do ?
19:22:11 <lambdabot> pythagoreanDiagonal = (sqrt .) . (. (^ 2)) . (+) . (^ 2)
19:22:19 <monochrom> Yeah
19:22:40 <ski> seriously : would you prefer reading the "pointful" version, or the "pointless" one ?
19:22:46 × ulvarrefr quits (~user@185.24.53.152) (Ping timeout: 268 seconds)
19:23:08 <seriously> lol gotcha
19:23:18 <monochrom> Even in Unix pipelining, we realize that pipelining is very limiting. A general data flow diagram does not always look like a line.
19:24:10 <ski> it can be nice mental gymnastics to explore and try to stretch your ability to formulate code like this, once in a while .. but you should probably think twice before committing such code to your code base
19:25:42 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
19:25:50 <ski> (sometimes it can be warranted. e.g. using `liftA2 (+)' (using `Applicative (rho ->)') or specific (with practice) recognizable idioms like `(f .) . g' or `(post .) . (. pre)' .. but you should probably such sparingly)
19:26:48 <monochrom> I don't go as far as (f .) . g
19:26:55 <seriously> maybe then "point-style" is generally best for functions that work on list inputs
19:26:56 <ski> monochrom : reminds me of a shell that allowed naming pipes (not as files), passing them as explicit parameters to shell-defined procedures (actually the shell was inspired by logic programming)
19:28:10 <monochrom> bash has "cmd (< cmd2) (> cmd3)" for non-linear data flow diagrams
19:28:24 <monochrom> (Haskell has Arrow proc->do notation, heh)
19:28:35 <geekosaur> ksh had the notion of a (single) "coprocess"
19:28:38 PiDelport joins (uid25146@id-25146.lymington.irccloud.com)
19:28:47 <geekosaur> I think zsh generalized that
19:29:18 shapr joins (~user@2600:4040:2d31:7100:a4a4:5e03:eeb6:d024)
19:30:33 <ski> "one coding style guide doesn't fit all" -- as much as i have some quite particular idiosyncratic preferences and tendencies in code, i realize my personal style isn't for everyone (and shouldn't be) (although i'm not loathe to show examples of, or give suggestions regarding, my opinions about it) .. what matters most is how well *you* can understand your code
19:30:56 × pmarg quits (~pmarg@2a01:799:159f:9b00:893e:346:2854:a0fd) (Remote host closed the connection)
19:31:25 <exarkun> that matters most until it matters more that someone else can understand your code :)
19:31:42 <darkling> And how much the other people that have to read your code can do so. :)
19:31:48 <monochrom> Yeah I s/self/everyone who work with this code/
19:31:52 <ski> yes (i was thinking about adding that the "you" that's relevant can vary)
19:32:00 <monochrom> Sure, 99% of the time it's self again, but meh
19:32:17 <monochrom> Naw, since I teach, 99% of the time it's my poor students haha.
19:33:16 × Guest85 quits (~Guest85@ti0185a400-0748.bb.online.no) (Quit: Client closed)
19:33:37 <monochrom> Ugh now I see my code sometimes uses >> and sometimes uses *> and it's now inconsistent for no good reason :)
19:33:58 <monochrom> (worksforme wontfix)
19:34:10 <ski> seriously : it's good to lurk around and see what style and idioms people use and suggest. but in the end, you have to decide what is reasonable in your circumstance. but you should try to understand the commonly proposed options, and preferably the *reasons* for them (then you can make a more informed decision)
19:34:10 <Bulby[m]> mood
19:34:11 <EvanR> what matters most is if someone else can understand the code. Where someone else = you in 1 or more months from now
19:34:54 <darkling> "Which idiot wrote this code? Oh, yeah, that darkling knew nothing."
19:35:25 <EvanR> this test has been flunked many times by using "clever tricks" in the code
19:35:40 <darkling> I'm sure there's stuff in our codebase at work that, 5 years from now, will be the subject of a refactoring exercise initiated with the phrase "yes, that's a darkling special" :)
19:36:00 <EvanR> xkcd code review metric "wtfs per minute"
19:37:48 × nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
19:37:52 ski agrees with everything said in the last eight minutes, or so
19:39:14 <ski> seriously : it's more related to whether the processing can be expressed more or less as a "linear pipeline" or not, i think
19:39:55 <ski> (reminds me of concatenative programming, like in Forth e.g. ..)
19:42:11 <seriously> ski ok ill keep that in mind... while were on the subject of coding standards; I've found myself doing this alot... could be an imperative habit of mine manifesting into functional style: https://paste.tomsmeding.com/igJBGaD1
19:42:32 × phma quits (~phma@2001:5b0:211c:45d8:dcca:18c7:bf12:f383) (Read error: Connection reset by peer)
19:42:50 <seriously> What is the general opinion on that ... "by that, I mean the code in there 'where' block"
19:43:24 <ski> you mean the `where'-naming ? .. yea, you do
19:43:50 phma joins (phma@2001:5b0:210d:adb8:1b94:33b4:266b:899a)
19:44:02 <ski> sometimes, it's nice to give some names to intermediate results (documenting their intended interpretation somewhat)
19:44:41 <ski> sometimes, it doesn't really help comprehension, and just clutters up the code (and may be annoying to have to conjure up a name for it)
19:45:58 <darkling> Yeah, names as documentation is a very good reason for doing that sort of thing.
19:47:53 <EvanR> I just like a where clause so the sub-definitions don't extend down and to the right like a messed up stairway
19:48:16 <ski> > (last . transpose . chunksOf 3) "abcdefghijkl"
19:48:18 <lambdabot> "cfil"
19:48:46 <ski> > (map last . chunksOf 3) "abcdefghijkl" -- also as
19:48:47 <lambdabot> "cfil"
19:49:32 <EvanR> moving "dot chain" function definitions into a where clause can also serve to remove parentheses, esp if you use this function multiple times
19:50:11 <ski> (the `transpose' idea is nice, if you want to split a list/stream into `n' ones (alternating), process those separately, and then interleave them back into a single one again)
19:50:26 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-81b9-1e80-00bb-4a85.res6.spectrum.com) (Remote host closed the connection)
19:50:40 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:51:15 × fserucas__ quits (~fserucas@1.75.114.89.rev.vodafone.pt) (Remote host closed the connection)
19:51:23 <ski> darkling : otoh, naming a loop is often just clutter :)
19:51:29 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:51:32 fserucas__ joins (~fserucas@1.75.114.89.rev.vodafone.pt)
19:51:38 × fserucas_ quits (~fserucas@1.75.114.89.rev.vodafone.pt) (Read error: Connection reset by peer)
19:52:08 pavonia joins (~user@user/siracusa)
19:52:46 TonyStone joins (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
19:52:47 fserucas joins (~fserucas@1.75.114.89.rev.vodafone.pt)
19:53:41 <darkling> Yeha, it needs care. And of course, you're an idiot 3 months from now. :)
19:54:17 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
19:55:38 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
19:56:02 × EvanR quits (~EvanR@user/evanr) (Remote host closed the connection)
19:56:22 EvanR joins (~EvanR@user/evanr)
19:59:20 × bliminse quits (~bliminse@user/bliminse) (Quit: leaving)
20:00:11 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
20:00:58 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
20:01:39 dcoutts joins (~duncan@host109-149-38-92.range109-149.btcentralplus.com)
20:01:43 yax__ joins (~yax@user/yax/x-9576643)
20:02:23 × kenran quits (~kenran@200116b82b67ed00effa09132c8744c8.dip.versatel-1u1.de) (Quit: WeeChat info:version)
20:03:54 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:06:07 × seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Quit: Client closed)
20:07:40 seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net)
20:09:35 matthewmosior joins (~matthewmo@173.170.253.91)
20:10:49 slack1256 joins (~slack1256@191.125.99.86)
20:12:15 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
20:13:16 jgeerds joins (~jgeerds@55d437cf.access.ecotel.net)
20:15:05 <ski> or .. you were an idiot, 3 months ago, perpetually
20:16:52 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 244 seconds)
20:17:25 <EvanR> not being an idiot is always 40 years away
20:17:37 Furor is now known as Colere
20:17:48 <Rembane> When I stop being an idiot I stop learning.
20:18:46 Guest34 joins (~Guest34@2605:a601:a615:f600:81b3:7572:de1c:534d)
20:19:17 bliminse joins (~bliminse@user/bliminse)
20:23:58 dcoutts__ joins (~duncan@host86-151-9-33.range86-151.btcentralplus.com)
20:24:50 × dcoutts_ quits (~duncan@host109-149-38-92.range109-149.btcentralplus.com) (Ping timeout: 240 seconds)
20:25:47 dcoutts_ joins (~duncan@host86-151-9-33.range86-151.btcentralplus.com)
20:26:09 × dcoutts quits (~duncan@host109-149-38-92.range109-149.btcentralplus.com) (Ping timeout: 272 seconds)
20:26:21 <Bulby[m]> and imo, not learning is BORING
20:26:35 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
20:27:18 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
20:40:43 × dfg quits (dfg@user/dfg) (Remote host closed the connection)
20:40:54 Kaiepi joins (~Kaiepi@156.34.47.253)
20:40:58 <yax__> i was born a god
20:41:03 gustik joins (~gustik@2a01:c844:2457:2220:475d:34f:d571:996f)
20:42:06 dfg joins (~dfg@dfg.rocks)
20:42:06 × dfg quits (~dfg@dfg.rocks) (Changing host)
20:42:06 dfg joins (~dfg@user/dfg)
20:42:37 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
20:43:22 × [exa] quits (exa@srv3.blesmrt.net) (Changing host)
20:43:22 [exa] joins (exa@user/exa/x-3587197)
20:44:28 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
20:44:43 × coot quits (~coot@213.134.190.95) (Quit: coot)
20:45:04 × seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds)
20:45:58 × talismanick quits (~talismani@campus-045-135.ucdavis.edu) (Ping timeout: 240 seconds)
20:46:38 merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
20:47:50 <slack1256> The `compactAdd` function is the efficient way to append data to `Compact a` in the sense it will not re-copy the data already on the compact, right?
20:49:22 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
20:49:28 seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net)
20:49:38 nightbreak_ is now known as nightbreak[Away]
20:50:01 <maerwald> hey, I also want in on the idiot club
20:51:34 <slack1256> In this sense, a compact regions serves as an older manually promoted generation. I wonder if I could set up 4 generations. Not much data apart from this really long lived data structure will reach it.
20:51:51 machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net)
20:52:28 cosimone` joins (~user@93-44-186-171.ip98.fastwebnet.it)
20:54:01 × cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Ping timeout: 272 seconds)
20:54:18 <EvanR> behind the scenes compactAdd achieves what you said by taking on to a linked list of compacts? xD
20:54:24 <monochrom> I am an egomaniac. Anyone care to join me and form the egomaniac club? >:)
20:54:35 aisa joins (~serum@2a02:8388:6bc1:1d00:6ddd:7a24:70:80)
20:54:47 <monochrom> (P.S. Of course it is the, not an, egomaniac club!)
20:55:14 <Rembane> monochrom: I would love to join your meetings, but not your club. :D
20:55:21 <monochrom> haha
20:55:31 <monochrom> I'm a collegial egomaniac haha
20:56:15 <Rembane> ^^
20:57:08 <darkling> Is anybody else th eonly member of hte solipsist society?
20:57:38 sektor[m] joins (~sektor@2001:470:69fc:105::2:3f60)
20:57:58 × seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Quit: Client closed)
20:58:18 <slack1256> EvanR: Oh no no, the list is just for example purposes. I mean you obvious can cost on a list and preserve the most of the structure.
20:58:56 <slack1256> What I am asking is this: given that I only added a cons, will compactAdd make pay the cost of waiting for the whole list instead of just the new head?
21:00:13 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
21:01:30 × christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 240 seconds)
21:02:13 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
21:03:45 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 276 seconds)
21:03:46 geekosaur decides to avoid the clubs
21:04:13 Rembane hands geekosaur a sword instead
21:04:18 <monochrom> "I believe in talking nicely but chairing a bigger club" >:)
21:04:32 <darkling> I'll stick with slings and arrows.
21:04:41 <monochrom> w00t arrows
21:04:50 <monochrom> We have arrows in Haskell haha.
21:05:18 <Rembane> You'll have no chance against my profunctors! Ha!
21:05:39 <monochrom> Monads are like clubs. You use a club to slam two layers into one. club :: M (M a) -> M a
21:06:15 justsomeguy joins (~justsomeg@user/justsomeguy)
21:06:38 ski . o O ( "<shapr> I'm addicted to arrows. * shapr begins his own paper \"Generalizing Arrows to Spears\" <shapr> Spears can do anything efficiently, but they have sixty thousand laws they must satisfy, and we haven't actually found one yet. <raphael> maybe \"Generalizing Arrows to Nuclear Weapons\" would simply be: unsafeInterleaveIO" )
21:06:47 <monochrom> Alternatively, a 1000-page book like CLRS or HFFPP also works. >:)
21:07:52 <Rembane> :D
21:10:59 <EvanR> unsafeInterleaveIO seems more like a dr strange spell, whereas unsafeCoerce seems like the nuclear option. Unstoppable force followed by contamination xD
21:11:29 × alp quits (~alp@user/alp) (Remote host closed the connection)
21:11:48 alp joins (~alp@user/alp)
21:12:18 <ski> i've argued before that it shouldn't really be called `unsafe'
21:12:27 <ski> (unlike `unsafeInterleaveST')
21:12:38 <int-e> they're both capable footguns when put into capable hands
21:12:43 <monochrom> What do you prefer to call it?
21:12:47 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
21:13:00 <ski> how about just `interleaveIO' ?
21:13:36 <ski> (also, i don't really like the whole "unsafe" terminology .. there's many different notions of unsafe)
21:13:43 <monochrom> Hrm. I am sympathetic to that.
21:14:36 <EvanR> such as the rust version of safety. If it's written in rust, it's safe. Otherwise it's unsafe xD
21:14:40 <int-e> Hmm. unsafeInterleaveIO was named before nodup when it could produce observably impure values.
21:14:49 <ski> (Mercury uses "promise" instead, together with a description of the conditions under which it's safe to use, and which the programmer has as a proof obligation)
21:14:51 <[exa]> one should have a few levels of unsafe that allow to distinguish reasonably safe stuff from unsafePerformIO
21:15:01 <monochrom> Well, my similar gripe is about the simpleton dichotomy of "strict" and "non-strict".
21:16:06 <ski> (e.g. `promise_det'(erministic),`promise_equivalent_solutions',`promise_semipure',..)
21:16:09 <int-e> Also... how does unsafeInterleaveIO work wrt. exceptions when the value is used inside STM? I think there's still the thing that aborting an STM action doesn't cause an exception breaking stuff like withMVar.
21:16:54 nate4 joins (~nate@98.45.169.16)
21:18:01 <EvanR> how about pure and not pure
21:18:23 <EvanR> by what calculus can we know what is and isn't "really pure"
21:18:31 <geekosaur> hm, isn't that a ghc / rts violation then? (unsafeInterleaveIO is supposed to swallow/ignore exceptions, but doesn't)
21:18:32 <dolio> What happens in STM when you divide by 0?
21:18:43 × [Leary] quits (~Leary]@122-58-224-198-vdsl.sparkbb.co.nz) (Ping timeout: 272 seconds)
21:18:49 <dolio> Or run out of memory?
21:18:59 <ski> i've suggested `promisePureIO' for `unsafePerformIO' before (with the understanding that `promisePureIO . return = id')
21:19:54 <int-e> that reminds me of the naming of irrefutable patterns
21:20:11 <int-e> in that it requires logic to interpret correctly
21:20:56 × merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
21:21:00 <EvanR> promisePureIO makes sense. Is every place unsafePerformIO used in the standard library pure? xD
21:21:16 <EvanR> otherwise that would be hypocritical!
21:21:17 <int-e> ...global variables...
21:21:41 [exa] discovers don'tPerformIO is a valid identifier
21:21:47 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
21:21:50 <ski> int-e : logic, how ?
21:21:52 <int-e> (decidedly impure; the trick there is to ensure perfect sharing)
21:22:07 <int-e> ski: who's doing the promising here?
21:22:14 matthewmosior joins (~matthewmo@173.170.253.91)
21:22:24 <geekosaur> [exa], acme-dont
21:22:48 <ski> promising what, re irrefutable patterns ? that they can't be refuted, always matches ?
21:23:31 <ski> i guess the matching "promises" that in some sense, while later the actual subpattern may fail, when the branch has already been comitted to
21:23:48 <EvanR> a global variable can be pure, imagine the meaning of the term socrates. As long as all programs referring to socrates refer to the same guy, and he can hold values for you, it's referentially transparent xD
21:24:06 <monochrom> hahahaha
21:24:33 <int-e> Oh that. Well, I know what "irrefutable patterns" means (they match; they fail instead of being refuted at that point), but I think "lazy patterns", while less precise, would be easier to understand.
21:24:36 <[exa]> geekosaur: I knew it was somewhere!
21:25:10 <ski> EvanR : makes me think of mobile code
21:26:03 <ski> perhaps "delayed patterns" could be another option
21:26:11 <EvanR> I was going to use king of france but that's a different connotation
21:26:30 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
21:26:57 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 272 seconds)
21:27:30 <monochrom> Yeah that gives me baldness anxiety haha
21:28:10 <ski> if a program spawns a thread on a different node in the network, do you expect it to communicate with your node in order to access the "global variable", or to have its own instance ?
21:28:29 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:28:45 <ski> (you can express such things in Alice ML, iirc)
21:29:22 <EvanR> if you wanted it to not be so global, you should have passed it in as an argument xD
21:29:51 <monochrom> Yes I passed it in by reference.
21:29:51 <EvanR> taking global variables literally for fun and profit
21:30:54 <EvanR> point was originally... if that's what it means, accessing it by means of unsafePerformIO shouldn't violate your promise
21:31:11 <ski> <https://www.ps.uni-saarland.de/alice/manual/distribution.html>
21:31:22 <EvanR> having different instances is where it gets complicated
21:31:43 kyborg2011 joins (~kyborg201@217.147.170.194)
21:32:05 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
21:33:10 × alexhandy2 quits (~trace@user/trace) (Read error: Connection reset by peer)
21:33:28 alexhandy joins (~trace@user/trace)
21:33:56 ski . o O ( "This implies that you must be careful not to use sited values in a service!" )
21:34:11 × kyborg2011 quits (~kyborg201@217.147.170.194) (Remote host closed the connection)
21:35:12 kyborg2011 joins (~kyborg201@217.147.170.194)
21:35:13 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5)
21:35:20 dextaa joins (~DV@user/dextaa)
21:35:23 mmhat joins (~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de)
21:35:45 <yax__> @pf (\x -> if isAlphaNum x then x else ' ')
21:35:45 <lambdabot> Maybe you meant: pl bf
21:35:55 <yax__> what
21:35:58 <yax__> @help
21:35:58 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
21:36:09 <yax__> @help list
21:36:09 <lambdabot> list [module|command]. Show commands for [module] or the module providing [command].
21:36:13 <geekosaur> it's @pl
21:36:17 <yax__> @pl (\x -> if isAlphaNum x then x else ' ')
21:36:17 <lambdabot> flip (if' =<< isAlphaNum) ' '
21:36:24 × Guest34 quits (~Guest34@2605:a601:a615:f600:81b3:7572:de1c:534d) (Ping timeout: 252 seconds)
21:36:28 <[exa]> yax__: contrary to the popular belief it's a pointless form
21:36:33 <yax__> nvm im better of with it being point full
21:37:28 mvk joins (~mvk@2607:fea8:5ce3:8500::909a)
21:40:15 × kyborg2011 quits (~kyborg201@217.147.170.194) (Ping timeout: 272 seconds)
21:41:27 <ski> i remember seeing `cond p f g x = if p x then f x else g x' defined
21:41:28 janus parts (janus@anubis.0x90.dk) ()
21:42:10 × tomgus1 quits (~tomgus1@97e50351.skybroadband.com) (Ping timeout: 240 seconds)
21:42:10 <ski> (which'd make that `cond isAlphaNum id (const ' ')')
21:44:40 <monochrom> I wrote a shell script that went: if ... ; then cat foo ; else grep "$city" foo fi | sort | ...
21:44:46 pagnol joins (~me@213-205-209-87.ftth.glasoperator.nl)
21:44:58 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
21:45:05 matthewmosior joins (~matthewmo@173.170.253.91)
21:49:09 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
21:49:13 <hpc> functional bash is entertainingly weird
21:49:21 <hpc> and sometimes unentertainingly
21:49:27 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
21:49:37 <monochrom> Hey you liked it! Let me tell you a recursive shell function I wrote, too
21:49:43 <hpc> you know how you can do x="--a --b", and then "foo $x" runs foo with two arguments?
21:50:01 <hpc> if you do x = "foo --a" and then "$x --b", it tries to find a binary named "foo --a" :(
21:51:20 <monochrom> piper() { if [ $# -eq 0 ]; then cat; else p=$1 ; shift ; "$p" | piper "$@" ; fi ; }
21:51:59 <monochrom> So "piper x y z" means "x | y | z" (or more precisely "x | y | z | cat" but cat is the identity of the | monoid)
21:52:18 <hpc> another member of the useless use of cat club!
21:52:26 <hpc> i always start my pipelines with cat too
21:52:30 <hpc> cat file | grep foo
21:52:51 <hpc> this is definitely #haskell material :D
21:53:25 <hpc> although, i like calling it the pipe monoid
21:55:00 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
21:55:34 <hpc> i like thinking of rust code as a big monad too, because of they way their blocks work
21:55:42 <hpc> returning isn't a return keyword that changes control flow
21:55:48 <hpc> it's just the value of the last line of the block
21:55:59 <hpc> kind of like do, with implicit pure
21:56:22 <monochrom> Yeah they have a ? marker for an ExceptT IO monad.
21:56:31 <hpc> and the async keyword
21:57:42 <hpc> no joke, the first time i ever wrote rust code, i got to where i needed to write a case statement about 5 minutes into trying stuff out
21:57:52 <hpc> and thought "wow, this is basically low-level haskell"
21:57:53 img joins (~img@user/img)
21:58:05 jeetelongname joins (~jeet@cpc96970-rdng25-2-0-cust390.15-3.cable.virginm.net)
21:58:38 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
21:58:45 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:59:16 <hpc> its record syntax feels really natural too, and i think it's reproducible with a few language extensions
21:59:28 Pickchea joins (~private@user/pickchea)
21:59:41 <hpc> maybe ghc could bring back something like the glasgow extensions, and just have a quick "rust records" flag that turns them all on at once
22:00:04 <geekosaur> they're too wedded to the record dot abomination
22:01:09 <monochrom> They now say "-X GHC2021" but I don't know whether that package has what you want.
22:01:20 <hpc> i can live with record dot
22:01:29 <hpc> i always compose functions as f . g anyway
22:02:06 <monochrom> But it is referentially transparent glasgow extensions :)
22:03:33 <monochrom> nix-style glasgow extensions >:)
22:04:36 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
22:04:47 <yax__> isnt the correct way to use grep is to do `grep <pattern> <files>`
22:04:58 <hpc> if you don't specify a file, grep uses stdin
22:05:02 <yax__> instead of a pipe from cat
22:05:16 <hpc> it's meant to be used from pipelines, everything else is random conveniences
22:05:18 <monochrom> I did have grep <pattern> <one file>
22:05:35 <monochrom> I did not pipe from cat to grep. Read again.
22:05:45 <monochrom> I piped either cat or grep to sort.
22:05:53 <monochrom> Yes you can do that.
22:06:02 <hpc> monochrom: i meant how you put an empty cat at the end of the pipeline
22:06:04 <monochrom> Yes you can have if-then-else | sort
22:06:06 ski . o O ( `< file blah | bleh' )
22:06:31 <yax__> i was talking about hpc's message
22:06:38 <monochrom> OTOH yes grep is happy to read stdin too.
22:06:39 <hpc> oh, heh
22:06:47 <hpc> ski: <() is a pretty good construct too, yeah
22:07:01 <geekosaur> yax__ hence the "useless use of cat" remark
22:07:03 <hpc> diff <(foo) <(bar) is a staple of my shell scripts
22:07:03 <yax__> im not sure, which is the preferable way, pipe from cat or grep file
22:07:15 <geekosaur> either
22:07:18 <yax__> ive heard arguments for both but idk which one is better
22:07:51 <geekosaur> beauty is in the eye of the beholder
22:07:56 × mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds)
22:08:01 <monochrom> Depends on what you want to convey.
22:08:08 <yax__> mhm
22:08:11 <monochrom> (convey to people who read your code)
22:08:18 <hpc> yax__: a good way to see how fundamental piping is, is to see how all the commands handle specified files just a little bit differently
22:08:44 segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
22:08:45 <monochrom> So just yesterday a student asked me (about C) should you write "a[0]" or should you write "*a" (when char *a)
22:08:47 <hpc> you might see that the file is an --option instead of a positional argument, or that input and output files are specified oddly
22:08:47 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:08:57 <hpc> or that recursive is -r sometimes and -R other times
22:09:21 <monochrom> And my answer is again "depends on whether you want to emphasize arrayness or pointerness to people who read your code"
22:09:40 <hpc> everyone knows it's 0[a]
22:09:58 <yax__> monochrom: write 0[a]
22:10:05 <yax__> eeeee you said it befor me
22:10:08 <monochrom> Any other argument is pointless.
22:10:15 <hpc> @quote .stereo
22:10:15 <lambdabot> xplat says: Welcome to #haskell-blah, where your bot commands are executed in triumphant stereo!
22:10:28 <hpc> bah, there's a million of those quotes now
22:10:39 × nightbreak[Away] quits (~nightbrea@2600:1700:70d1:d800:7997:c6a5:32b7:3d2e) (Ping timeout: 272 seconds)
22:10:52 <monochrom> As if programmers were a communist party and one single party line is to be imposed and anyone deviating is to be excommunicated.
22:11:19 <yax__> what
22:11:32 <hpc> thou shalt always CamelCase, except for mysql_real_escape_string
22:11:33 <monochrom> This is why I made a fugue quote rather than a stereo quote :)
22:11:36 <monochrom> @quote fugue
22:11:36 <lambdabot> monochrom says: Welcome to #haskell, where your questions are answered in contrapuntal fugues.
22:11:54 <hpc> that's a totally different situation
22:12:05 <hpc> completing each other's sentences instead of just saying the same thing
22:12:22 <hpc> although that's also a really good one, that happens pretty frequently too
22:13:05 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:13:50 × pagnol quits (~me@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 240 seconds)
22:14:07 <monochrom> But fugues also have multiple parts singing the same thing, and sometimes time-delayed.
22:14:29 skubcat joins (~skubcat@156.57.184.235)
22:14:58 pagnol joins (~me@213-205-209-87.ftth.glasoperator.nl)
22:15:08 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
22:15:24 <hpc> if we accept electronic music slang, we could say #haskell is a layer 2 protocol, because it's full of arps :D
22:15:47 <monochrom> Yikes I don't understand that, but haha.
22:15:57 <hpc> arp is arpeggio, when you fake a chord by alternating notes
22:16:09 <monochrom> haha
22:16:43 <hpc> (and for the non-network people reading scrollback, https://en.wikipedia.org/wiki/Address_Resolution_Protocol)
22:16:44 <monochrom> OK that one I think I learned from twosetviolin
22:17:35 <hpc> monophonic synths were so common they needed to shorten the name of it because you had to do it everywhere just for technical reasons
22:18:17 <monochrom> Apparently in some circles "conflict of interests" is common enough to earn its acronym "COI" hehe
22:18:25 <hpc> heh
22:19:15 <yax__> add the Haskell's prayer to the bot
22:19:18 × juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 244 seconds)
22:19:27 Dutchgriffon_ joins (~Laurens@70.36.53.134)
22:19:56 × Dutchgriffon quits (~Laurens@70.36.53.134) (Read error: Connection reset by peer)
22:20:41 matthewmosior joins (~matthewmo@173.170.253.91)
22:24:59 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
22:26:10 × gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
22:26:10 juri_ joins (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
22:26:59 matthewmosior joins (~matthewmo@173.170.253.91)
22:30:35 <slack1256> Has anyone used three generations on the garbage collection (-G3)? What kind of test did you run to decide it was a good idea? or it was just a "this is long lived program with long lived data structures".
22:31:18 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
22:31:24 matthewmosior joins (~matthewmo@173.170.253.91)
22:31:59 × juri_ quits (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
22:32:18 × jeetelongname quits (~jeet@cpc96970-rdng25-2-0-cust390.15-3.cable.virginm.net) (Remote host closed the connection)
22:36:10 juri_ joins (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
22:36:27 kyborg2011 joins (~kyborg201@88.155.101.148)
22:36:51 × kyborg2011 quits (~kyborg201@88.155.101.148) (Client Quit)
22:40:54 × juri_ quits (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
22:41:00 mvk joins (~mvk@2607:fea8:5ce3:8500::909a)
22:43:24 × acidjnk_new quits (~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
22:45:59 gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
22:46:07 × yax__ quits (~yax@user/yax/x-9576643) (Ping timeout: 272 seconds)
22:47:10 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
22:49:15 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
22:49:50 acidjnk_new joins (~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de)
22:51:11 juri_ joins (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
22:52:04 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:53:18 merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
22:54:34 × juri_ quits (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
22:54:54 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
22:55:29 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 244 seconds)
22:56:45 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
23:01:11 juri_ joins (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
23:01:57 × acidjnk_new quits (~acidjnk@p200300d6e7058698ed7ff12f14b44c79.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
23:02:02 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
23:02:14 Dutchgriffon_ is now known as Dutchgriffon
23:03:22 × gustik quits (~gustik@2a01:c844:2457:2220:475d:34f:d571:996f) (Quit: Leaving)
23:04:57 img joins (~img@user/img)
23:05:17 × gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 244 seconds)
23:05:51 yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net)
23:06:19 juri__ joins (~juri@79.140.115.119)
23:06:26 × juri_ quits (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
23:08:35 × geschwindig quits (~John_Ivan@user/john-ivan/x-1515935) (Quit: Leaving)
23:11:16 × juri__ quits (~juri@79.140.115.119) (Ping timeout: 272 seconds)
23:11:16 × yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
23:11:43 juri_ joins (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
23:12:29 × juri_ quits (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Read error: Connection reset by peer)
23:16:20 <vulpine> @pl \x -> map (fst) x
23:16:20 <lambdabot> map fst
23:16:44 juri_ joins (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de)
23:18:18 × pagnol quits (~me@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 276 seconds)
23:21:19 × juri_ quits (~juri@dynamic-089-204-138-046.89.204.138.pool.telefonica.de) (Ping timeout: 244 seconds)
23:21:34 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
23:21:44 juri_ joins (~juri@79.140.115.122)
23:22:21 × merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds)
23:24:20 gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
23:24:30 × kjak quits (~kjak@pool-108-31-68-111.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
23:27:31 × segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
23:35:04 tomgus1 joins (~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3)
23:36:49 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
23:37:12 × skubcat quits (~skubcat@156.57.184.235) (Quit: Client closed)
23:38:03 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
23:38:04 Lord_of_Life_ is now known as Lord_of_Life
23:45:28 × alp quits (~alp@user/alp) (Ping timeout: 268 seconds)
23:53:04 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
23:57:56 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection)
23:58:34 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e)
23:59:35 × jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 272 seconds)

All times are in UTC on 2022-07-13.