Home liberachat/#haskell: Logs Calendar

Logs on 2023-11-13 (liberachat/#haskell)

00:02:21 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
00:03:46 <ph88> Could someone give me some pointers on this non-compiling pseudo code? i have an idea about the types https://bpa.st/HA2Q perhaps getCompose can help but i'm not sure how to use that
00:05:10 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
00:05:39 <Axman6> That's not how you use the State constructor
00:05:53 <Axman6> I can't tell what you're actually trying to do
00:08:12 <Axman6> Hmmm, maybe I can see - Compose might help, you can turn the State .. (Either .. a) into Compose (State ..) (Either ..) a using the Compose constructor, then you could use something like intersperse (pure $ Right Qux) $ map Compose [...], and then you probably want sequence before calling getCompose?
00:09:02 <Axman6> :t \xs -> getCompose . sequence . intersperse (pure (Right True)) $ map Compose xs
00:09:03 <lambdabot> forall k1 (f :: k1 -> *) (g :: * -> k1) a. Monad (Compose f g) => [f (g (Either a Bool))] -> f (g [Either a Bool])
00:09:27 <[Leary]> :t \x -> getCompose . traverse Compose . intersperse x
00:09:28 <lambdabot> forall k1 (f :: k1 -> *) (g :: * -> k1) b. Applicative (Compose f g) => f (g b) -> [f (g b)] -> f (g [b])
00:10:09 <Axman6> surprised that monad constraint appeared in mine
00:10:20 <[Leary]> Because sequence
00:10:23 <Axman6> :t traverse Compose
00:10:24 <lambdabot> forall k (t :: * -> *) (f :: k -> *) (g :: * -> k) b. (Traversable t, Applicative (Compose f g)) => t (f (g b)) -> Compose f g (t b)
00:10:42 <Axman6> :t getCompose . traverse Compose
00:10:43 <lambdabot> forall k1 (t :: * -> *) (f :: k1 -> *) (g :: * -> k1) b. (Traversable t, Applicative (Compose f g)) => t (f (g b)) -> f (g (t b))
00:11:20 ec_ joins (~ec@gateway/tor-sasl/ec)
00:11:26 <jackdk> % :m + Control.Lens Data.Functor.Compose
00:11:26 <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.
00:11:28 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 264 seconds)
00:11:39 <Axman6> :(
00:12:33 <jackdk> alas. Anyway, `lens` gives you `ala Compose traverse :: (Traversable t, Applicative f, Applicative g) => t (f (g a)) -> f (g (t a))`
00:13:46 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
00:15:10 khumba joins (~khumba@user/khumba)
00:15:13 × picnoir quits (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Ping timeout: 258 seconds)
00:15:49 <ph88> thanks Axman6 [Leary] .. is there any way that it can done more easily perhaps with pattern matching or do notation? i'm not familiar the compose
00:18:19 <ph88> maybe i
00:18:26 <ph88> maybe i'm using State in the wrong way
00:18:31 <ph88> and i should do it inside of State
00:18:32 × YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Ping timeout: 255 seconds)
00:18:34 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
00:22:29 <[Leary]> :t \x -> fmap sequenceA . sequenceA . intersperse x
00:22:30 <lambdabot> (Applicative f1, Applicative f2) => f2 (f1 a) -> [f2 (f1 a)] -> f2 (f1 [a])
00:22:38 YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:b240:4be0:6188:1692)
00:22:38 <[Leary]> :t \x -> runExceptT . traverse ExceptT . intersperse x
00:22:39 <lambdabot> Monad m => m (Either e b) -> [m (Either e b)] -> m (Either e [b])
00:25:42 <[Leary]> ph88: There are various ways, but they're pretty much all the same. I suggest you get familiar with Compose or EitherT; there's nothing particularly complicated or sophisticated going on there.
00:26:41 <ski> (s/EitherT/ExceptT/)
00:27:29 <[Leary]> Ah, yeah. EitherT/ExceptT/ErrorT; I can't even remember which ones happened and which is a figment of my imagination.
00:28:15 × YoungFrog quits (~youngfrog@2a02:a03f:ca07:f900:b240:4be0:6188:1692) (Ping timeout: 240 seconds)
00:28:16 × lottaquestions quits (~nick@2607:fa49:503d:b200:135c:2e9a:d788:4186) (Server closed connection)
00:28:43 lottaquestions joins (~nick@2607:fa49:503d:b200:bc96:53f6:bf3c:8b64)
00:28:56 _73 joins (~anon_73@2600:4040:5205:d800:21e8:9777:49a5:db28)
00:30:14 <geekosaur> iirc EitherT happened early and was removed in favor of ErrorT, then ExceptT was added and ErrorT was deprecated but apparently still exists
00:31:17 × YuutaW quits (~YuutaW@2404:f4c0:f9c3:502::100:17b7) (Quit: ZNC 1.8.2 - https://znc.in)
00:31:44 YuutaW joins (~YuutaW@mail.yuuta.moe)
00:33:05 picnoir joins (~picnoir@about/aquilenet/vodoo/NinjaTrappeur)
00:33:59 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
00:35:36 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
00:37:09 × _73 quits (~anon_73@2600:4040:5205:d800:21e8:9777:49a5:db28) (Quit: Leaving)
00:37:55 _73 joins (~anon_73@2600:4040:5205:d800:21e8:9777:49a5:db28)
00:38:44 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a) (Remote host closed the connection)
00:46:41 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 240 seconds)
00:48:25 × zmt00 quits (~zmt00@user/zmt00) (Server closed connection)
00:48:50 zmt00 joins (~zmt00@user/zmt00)
00:57:15 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
00:57:56 alphastate_ joins (~alphastat@176.254.244.83)
00:59:41 × sudden quits (~cat@user/sudden) (Server closed connection)
00:59:57 sudden joins (~cat@user/sudden)
01:00:01 × alphastate quits (~alphastat@176.254.244.83) (Ping timeout: 240 seconds)
01:02:52 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
01:02:59 yosef` joins (~yosef`@user/yosef/x-2947716)
01:05:04 img joins (~img@user/img)
01:05:09 ph88^ joins (~ph88@2a02:8109:9e26:c800::302a)
01:05:27 × yosef` quits (~yosef`@user/yosef/x-2947716) (Client Quit)
01:05:33 <ph88^> somehow i got disconnected o_O
01:06:22 <ph88^> thanks for the alternatives [Leary] i will try to study it
01:06:59 × seeg123456 quits (~seeg12345@64.176.64.83) (Server closed connection)
01:10:11 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a)
01:17:16 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
01:17:25 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
01:18:49 Lord_of_Life_ is now known as Lord_of_Life
01:27:10 × yvan-sraka quits (sid419690@id-419690.lymington.irccloud.com) (Server closed connection)
01:27:22 yvan-sraka joins (sid419690@id-419690.lymington.irccloud.com)
01:28:04 <EvanR> ExceptT for the sake of everyone coalescing around the same instance of a dumb type
01:31:51 × lexi-lambda quits (sid92601@id-92601.hampstead.irccloud.com) (Server closed connection)
01:32:00 lexi-lambda joins (sid92601@id-92601.hampstead.irccloud.com)
01:35:04 × dsal quits (sid13060@id-13060.lymington.irccloud.com) (Server closed connection)
01:35:14 dsal joins (sid13060@id-13060.lymington.irccloud.com)
01:36:58 × euleritian quits (~euleritia@dynamic-046-114-207-173.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
01:37:16 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
01:46:47 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a) (Remote host closed the connection)
01:47:02 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
01:48:31 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 264 seconds)
01:48:51 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
01:52:23 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
01:58:49 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
02:00:01 × _xor quits (~xor@72.49.195.41) (Read error: Connection reset by peer)
02:00:41 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
02:01:28 ChaiTRex joins (~ChaiTRex@user/chaitrex)
02:07:36 _xor joins (~xor@72.49.195.41)
02:15:46 × otto_s quits (~user@p5b044554.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
02:16:34 × _xor quits (~xor@72.49.195.41) (Read error: Connection reset by peer)
02:17:03 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
02:17:21 otto_s joins (~user@p5b044659.dip0.t-ipconnect.de)
02:19:04 _xor joins (~xor@72.49.195.41)
02:27:37 × jinsun quits (~jinsun@user/jinsun) (Server closed connection)
02:27:54 jinsun joins (~jinsun@user/jinsun)
02:30:45 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 255 seconds)
02:31:41 × haskl quits (~haskl@user/haskl) (Ping timeout: 258 seconds)
02:34:27 Inst joins (~Inst@120.244.192.250)
02:35:22 haskl joins (~haskl@user/haskl)
02:37:03 × CAT_S quits (apic@brezn3.muc.ccc.de) (Server closed connection)
02:37:14 CAT_S joins (apic@brezn3.muc.ccc.de)
02:43:19 × slack1256 quits (~slack1256@191.126.186.232) (Remote host closed the connection)
02:49:18 YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:b240:4be0:6188:1692)
02:56:59 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds)
02:58:37 × ouroboros quits (~ouroboros@user/ouroboros) (Server closed connection)
02:59:23 ouroboros joins (~ouroboros@user/ouroboros)
03:02:20 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:02:20 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:02:20 finn_elija is now known as FinnElija
03:14:15 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
03:19:01 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
03:20:07 × td_ quits (~td@i53870938.versanet.de) (Ping timeout: 255 seconds)
03:22:01 td_ joins (~td@i5387093F.versanet.de)
03:28:31 × nrr______ quits (sid20938@id-20938.lymington.irccloud.com) (Server closed connection)
03:28:49 nrr______ joins (sid20938@id-20938.lymington.irccloud.com)
03:43:30 × hc quits (~hc@ip-185-104-142-44.hosts-fiberone.de) (Remote host closed the connection)
03:51:05 × ec_ quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
03:51:12 razetime joins (~quassel@49.207.197.207)
03:51:45 ec joins (~ec@gateway/tor-sasl/ec)
03:54:10 × razetime quits (~quassel@49.207.197.207) (Read error: Connection reset by peer)
03:59:53 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:59:53 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:59:53 finn_elija is now known as FinnElija
04:00:00 × Taneb quits (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (Quit: I seem to have stopped.)
04:01:06 Taneb joins (~Taneb@runciman.hacksoc.org)
04:13:23 aforemny_ joins (~aforemny@2001:9e8:6ce5:8e00:9c3e:9c3b:5b8a:f18d)
04:13:24 × poscat0x04 quits (~poscat@user/poscat) (Ping timeout: 240 seconds)
04:13:51 poscat joins (~poscat@user/poscat)
04:14:19 × aforemny quits (~aforemny@i59F516D8.versanet.de) (Ping timeout: 246 seconds)
04:15:59 <Inst> It's way harder, I think, to get meta-guides on libraries, right?
04:16:13 <Inst> In the sense of, how is a library designed, what interfaces are used, and so on?
04:20:46 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
04:32:33 × poscat quits (~poscat@user/poscat) (Quit: Bye)
04:39:43 poscat joins (~poscat@user/poscat)
04:41:56 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
04:42:23 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
04:50:01 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 246 seconds)
04:51:44 Lycurgus joins (~georg@user/Lycurgus)
05:00:01 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 255 seconds)
05:02:08 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 252 seconds)
05:03:42 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
05:04:05 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
05:04:09 Inst joins (~Inst@120.244.192.250)
05:05:43 × tabemann_ quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Server closed connection)
05:06:16 tabemann_ joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
05:07:19 notzmv joins (~zmv@user/notzmv)
05:11:27 × lightandlight quits (sid135476@id-135476.helmsley.irccloud.com) (Server closed connection)
05:11:40 lightandlight joins (sid135476@id-135476.helmsley.irccloud.com)
05:19:30 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
05:19:53 Lycurgus joins (~georg@user/Lycurgus)
05:20:07 trev joins (~trev@user/trev)
05:23:27 × juri_ quits (~juri@84-19-175-187.pool.ovpn.com) (Server closed connection)
05:23:43 juri_ joins (~juri@84-19-175-187.pool.ovpn.com)
05:29:09 × fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
05:33:14 michalz joins (~michalz@185.246.207.201)
05:39:12 chomwitt joins (~chomwitt@2a02:587:7a12:2d00:1ac0:4dff:fedb:a3f1)
05:39:37 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 255 seconds)
05:47:47 seeg123456 joins (~seeg12345@64.176.64.83)
06:03:27 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
06:03:45 hc joins (~hc@ip-185-104-142-44.hosts-fiberone.de)
06:13:45 euleritian joins (~euleritia@dynamic-046-114-203-037.46.114.pool.telefonica.de)
06:20:44 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
06:22:56 acidjnk joins (~acidjnk@p200300d6e72b933384d06dff6b3ba200.dip0.t-ipconnect.de)
06:23:45 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:25:56 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
06:27:28 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
06:28:39 × dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Server closed connection)
06:29:04 dmj` joins (sid72307@id-72307.hampstead.irccloud.com)
06:32:01 zaquest joins (~notzaques@5.130.79.72)
06:34:12 × khumba quits (~khumba@user/khumba) ()
06:36:30 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
06:40:51 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 258 seconds)
06:47:02 × jjhoo quits (~jahakala@user/jjhoo) (Remote host closed the connection)
06:57:36 × nshepperd2 quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Server closed connection)
06:57:50 nshepperd2 joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
06:59:46 gmg joins (~user@user/gehmehgeh)
07:03:15 zetef joins (~quassel@95.77.17.251)
07:16:10 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
07:18:31 yosef` joins (~yosef`@user/yosef/x-2947716)
07:19:47 tengu1 joins (~tengu1@2603-80a0-1600-004c-61b1-92ae-b4b5-d35d.res6.spectrum.com)
07:21:00 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
07:26:49 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 246 seconds)
07:27:34 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:28:19 × pie_ quits (~pie_bnc@user/pie/x-2818909) (Server closed connection)
07:28:29 pie_ joins (~pie_bnc@user/pie/x-2818909)
07:31:04 × acidjnk quits (~acidjnk@p200300d6e72b933384d06dff6b3ba200.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
07:35:09 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
07:35:47 jjhoo joins (~jahakala@user/jjhoo)
07:37:12 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
07:45:10 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:7ba1:f09f:8b3c:2811)
07:45:40 sdz_ joins (~sdz@user/sdz)
07:45:55 glguy_ is now known as glguy
07:46:24 × sdz quits (~sdz@user/sdz) (Ping timeout: 258 seconds)
08:08:14 CiaoSen joins (~Jura@2a05:5800:2ad:5900:2a3a:4dff:fe84:dbd5)
08:10:56 misterfish joins (~misterfis@g250100.upc-g.chello.nl)
08:11:47 × euleritian quits (~euleritia@dynamic-046-114-203-037.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
08:12:10 euleritian joins (~euleritia@dynamic-046-114-203-037.46.114.pool.telefonica.de)
08:12:23 [_] is now known as [`itchyjunk`]
08:13:08 × euleritian quits (~euleritia@dynamic-046-114-203-037.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
08:13:25 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:17:01 ivan__ joins (~ivan__@2001:818:ea58:9200:959a:5da9:e3a0:5e1e)
08:18:01 × ACuriousMoose quits (~ACuriousM@142.166.18.53) (Server closed connection)
08:18:21 ACuriousMoose joins (~ACuriousM@142.166.18.53)
08:18:36 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 258 seconds)
08:19:32 euleritian joins (~euleritia@dynamic-046-114-203-037.46.114.pool.telefonica.de)
08:29:42 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
08:33:29 × ivan__ quits (~ivan__@2001:818:ea58:9200:959a:5da9:e3a0:5e1e) (Remote host closed the connection)
08:36:58 ivan__ joins (~ivan__@2001:818:ea58:9200:959a:5da9:e3a0:5e1e)
08:38:31 fendor joins (~fendor@2a02:8388:1640:be00:ca17:ceee:5bbe:1594)
08:46:55 × ivan__ quits (~ivan__@2001:818:ea58:9200:959a:5da9:e3a0:5e1e) (Remote host closed the connection)
08:53:24 × landonf quits (landonf@mac68k.info) (Server closed connection)
08:53:34 landonf joins (landonf@mac68k.info)
08:54:11 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:54:29 × kimiamania46 quits (~b4f4a2ab@user/kimiamania) (Quit: Ping timeout (120 seconds))
08:54:55 kimiamania46 joins (~b4f4a2ab@user/kimiamania)
08:58:58 <haskellbridge> 12<C​elestial> Does anyone have that article which talked about why recursion is introduced badly a lot of times?
08:59:05 <haskellbridge> 12<C​elestial> I believe that was here somewhere
09:07:39 siw5ohs0 joins (~aiw5ohs0@user/aiw5ohs0)
09:08:42 siw5ohs0 parts (~aiw5ohs0@user/aiw5ohs0) (Leaving)
09:08:52 × euleritian quits (~euleritia@dynamic-046-114-203-037.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
09:09:09 euleritian joins (~euleritia@77.22.252.56)
09:11:15 kuribas joins (~user@2a02:1808:7:44f1:c2bd:6ec:bd3b:9ae0)
09:14:15 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
09:16:01 Jackneill joins (~Jackneill@20014C4E1E058A00375EBC4DD70FB6A2.dsl.pool.telekom.hu)
09:16:48 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:20:30 dunj3 joins (~dunj3@kingdread.de)
09:21:47 zetef joins (~quassel@95.77.17.251)
09:24:00 kuribas` joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:26:19 × kuribas quits (~user@2a02:1808:7:44f1:c2bd:6ec:bd3b:9ae0) (Ping timeout: 264 seconds)
09:26:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:28:02 × ft quits (~ft@p508db3bc.dip0.t-ipconnect.de) (Quit: leaving)
09:36:22 × yosef` quits (~yosef`@user/yosef/x-2947716) (Ping timeout: 250 seconds)
09:39:03 × misterfish quits (~misterfis@g250100.upc-g.chello.nl) (Ping timeout: 260 seconds)
09:42:13 danse-nr3 joins (~danse@151.35.192.83)
09:46:40 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
09:48:40 × ec quits (~ec@gateway/tor-sasl/ec) (Read error: Connection reset by peer)
09:49:02 ec joins (~ec@gateway/tor-sasl/ec)
09:49:42 × tengu1 quits (~tengu1@2603-80a0-1600-004c-61b1-92ae-b4b5-d35d.res6.spectrum.com) (Quit: Client closed)
09:54:37 misterfish joins (~misterfis@87.215.131.102)
09:55:12 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 258 seconds)
09:57:54 __monty__ joins (~toonn@user/toonn)
10:00:00 cyphase joins (~cyphase@user/cyphase)
10:03:05 califax_ joins (~califax@user/califx)
10:03:40 × califax quits (~califax@user/califx) (Ping timeout: 264 seconds)
10:04:24 califax_ is now known as califax
10:06:13 × gmg quits (~user@user/gehmehgeh) (Read error: Connection reset by peer)
10:06:14 × jpds1 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
10:06:33 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
10:06:43 jpds joins (~jpds@gateway/tor-sasl/jpds)
10:06:55 gmg joins (~user@user/gehmehgeh)
10:10:01 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 260 seconds)
10:11:01 × hgolden quits (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com) (Remote host closed the connection)
10:13:01 hgolden joins (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com)
10:14:36 cyphase joins (~cyphase@user/cyphase)
10:16:10 Lycurgus_ joins (~georg@li1192-118.members.linode.com)
10:16:46 chele joins (~chele@user/chele)
10:18:39 × Lycurgus_ quits (~georg@li1192-118.members.linode.com) (Client Quit)
10:20:17 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
10:23:10 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
10:24:20 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
10:26:29 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17)
10:28:42 nilradical joins (~nilradica@user/naso)
10:29:14 × nilradical quits (~nilradica@user/naso) (Client Quit)
10:30:25 hc_ joins (~hc@mail.hce.li)
10:30:28 × hc quits (~hc@ip-185-104-142-44.hosts-fiberone.de) (Quit: leaving)
10:30:33 hc_ is now known as hc
10:30:55 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds)
10:31:43 × sdz_ quits (~sdz@user/sdz) (Ping timeout: 264 seconds)
10:38:34 sdz joins (~sdz@user/sdz)
10:39:40 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 264 seconds)
10:41:51 stiell joins (~stiell@gateway/tor-sasl/stiell)
10:45:28 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
10:51:33 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
10:55:55 billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
10:58:51 × califax quits (~califax@user/califx) (Remote host closed the connection)
10:59:12 califax joins (~califax@user/califx)
10:59:36 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:7ba1:f09f:8b3c:2811) (Ping timeout: 258 seconds)
11:00:04 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
11:00:29 stiell joins (~stiell@gateway/tor-sasl/stiell)
11:04:09 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 260 seconds)
11:05:23 × CiaoSen quits (~Jura@2a05:5800:2ad:5900:2a3a:4dff:fe84:dbd5) (Ping timeout: 260 seconds)
11:07:36 mhatta joins (~mhatta@www21123ui.sakura.ne.jp)
11:17:41 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
11:22:39 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
11:36:41 <danse-nr3> friday evening: interesting problem, it will be nice to look at it with fresh eyes!
11:36:41 <danse-nr3> monday morning: where do i start from?
11:36:41 <danse-nr3> in between: most local brain cache was wiped
11:38:59 × chomwitt quits (~chomwitt@2a02:587:7a12:2d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 260 seconds)
11:39:28 CiaoSen joins (~Jura@2a05:5800:2ad:5900:2a3a:4dff:fe84:dbd5)
11:42:08 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:b8cc:9457:893c:f87e)
11:42:16 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
11:43:53 × Angelz quits (Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) (Server closed connection)
12:00:52 Angelz joins (Angelz@2605:6400:30:fc15:9bd1:2217:41cd:bb15)
12:06:49 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17) (Ping timeout: 246 seconds)
12:08:13 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 246 seconds)
12:08:55 euleritian joins (~euleritia@dynamic-046-114-206-152.46.114.pool.telefonica.de)
12:09:32 × danse-nr3 quits (~danse@151.35.192.83) (Ping timeout: 255 seconds)
12:10:21 danse-nr3 joins (~danse@151.47.236.20)
12:12:24 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
12:12:51 × euleritian quits (~euleritia@dynamic-046-114-206-152.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
12:13:08 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
12:14:57 jpds joins (~jpds@gateway/tor-sasl/jpds)
12:15:11 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Server closed connection)
12:18:54 <ph88^> [Leary], Axman6 i was able to solve it with sequenceA i used more intermediate steps and put type annotations to see what changes step by step https://bpa.st/AMCQ
12:19:44 <danse-nr3> this of adding intermediate annotations is a life saver at times
12:21:12 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
12:26:51 chomwitt joins (~chomwitt@2a02:587:7a12:2d00:1ac0:4dff:fedb:a3f1)
12:28:04 × lottaquestions quits (~nick@2607:fa49:503d:b200:bc96:53f6:bf3c:8b64) (Quit: Konversation terminated!)
12:30:14 lottaquestions joins (~nick@2607:fa49:503d:b200:6f8c:dc97:9c02:d6b9)
12:31:51 <[Leary]> :t \x -> getCompose . getAp . foldMap (Ap . Compose) . intersperse x
12:31:52 <lambdabot> forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). Monoid (Ap (Compose f g) a) => f (g a) -> [f (g a)] -> f (g a)
12:32:18 <[Leary]> ph88^: Since you want to fold it down, you can actually skip the `sequenceA`s and do it all at once. ^
12:38:29 <ph88^> [Leary], you mean with that line you just posted? Such lines are hard to read for me, i tried before i always have to break them down in steps
12:40:11 <ph88^> i could learn Ap and Compose, but should i ? is the only benefit to be able to write one liners ?
12:40:20 zero is now known as zzz
12:42:22 × anpad quits (~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in)
12:44:23 anpad joins (~pandeyan@user/anpad)
12:44:54 <danse-nr3> haskell's efforts for abstraction are knowingly geared towards writing oneliners
12:45:50 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
12:47:30 <sshine> you make it sound hacky :P
12:48:05 edr joins (~edr@user/edr)
12:53:04 × phma quits (phma@2001:5b0:210b:a318:44a0:81b9:3949:19d6) (Read error: Connection reset by peer)
12:53:59 phma joins (phma@2001:5b0:211f:6428:acc1:d82a:ec2e:4fd2)
12:55:28 <[Leary]> ph88^: In a fraction of the time you've already spent on this problem, you could have learnt the purpose and use of both `Ap` and `Compose`. You'd then have two fine new tools in your toolbox, ready to help you easily solve not just this one problem, but an endless host of similar problems.
12:55:48 <[Leary]> That said, all they're doing is lifting Applicative and Monoid over Applicative. You can do it manually:
12:55:51 <[Leary]> :t \x -> foldr (liftA2 (liftA2 (<>))) (pure (pure mempty)) . intersperse x
12:55:52 <lambdabot> (Applicative f1, Applicative f2, Monoid c) => f1 (f2 c) -> [f1 (f2 c)] -> f1 (f2 c)
12:56:11 <danse-nr3> % :i Ap
12:56:11 <yahb2> <interactive>:1:1: error: Not in scope: ‘Ap’
12:56:22 <danse-nr3> @hoogle Ap
12:56:22 <lambdabot> Data.Monoid newtype Ap f a
12:56:22 <lambdabot> Data.Monoid Ap :: f a -> Ap f a
12:56:22 <lambdabot> Test.Tasty.Runners newtype Ap f a
12:56:31 <danse-nr3> % :i Data.Monoid.Ap
12:56:31 <yahb2> type role Data.Monoid.Ap representational nominal ; type Data.Monoid.Ap :: forall {k}. (k -> *) -> k -> * ; newtype Data.Monoid.Ap f a ; = Data.Monoid.Ap {Data.Monoid.getAp :: f a} ; -- Define...
12:56:59 <danse-nr3> /type role/... fancy
12:59:42 <ph88^> [Leary], thanks !
12:59:51 <ph88^> danse-nr3, thanks too
13:00:10 danse-nr3 did nothing once again ^^
13:00:26 <danse-nr3> but you are welcome :P
13:06:04 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 264 seconds)
13:06:59 kiriakos joins (~kiriakos@p57b64ab9.dip0.t-ipconnect.de)
13:07:29 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:08:30 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
13:08:52 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:10:09 × danse-nr3 quits (~danse@151.47.236.20) (Ping timeout: 260 seconds)
13:11:55 <Athas> tomsmeding: is there an up-to-date guide for how to set up Accelerate with GPU execution?
13:12:06 <Athas> I need a specific version of GHC, right? And what about LLVM?
13:15:23 <Athas> Oh, there's a stack.yaml here...
13:16:18 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
13:16:18 ChanServ sets mode +v haskellbridge
13:17:11 zetef joins (~quassel@95.77.17.251)
13:17:35 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
13:17:59 × zetef quits (~quassel@95.77.17.251) (Remote host closed the connection)
13:18:39 zetef joins (~quassel@95.77.17.251)
13:24:11 sawilagar joins (~sawilagar@user/sawilagar)
13:25:33 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
13:25:51 euleritian joins (~euleritia@dynamic-046-114-206-152.46.114.pool.telefonica.de)
13:28:57 <ph88^> hi Athas
13:29:15 <Athas> Hi ph88^
13:32:23 × michalz quits (~michalz@185.246.207.201) (Remote host closed the connection)
13:32:58 michalz joins (~michalz@185.246.207.217)
13:33:15 × elkcl quits (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Server closed connection)
13:33:23 elkcl joins (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru)
13:35:48 × srk quits (~sorki@user/srk) (Ping timeout: 240 seconds)
13:41:55 danse-nr3 joins (~danse@151.47.236.20)
13:47:11 × misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 255 seconds)
13:50:16 <ph88^> [State Foo Bar] how can i filter this list on Bar ?
13:50:32 <bwe> I've isolated two functions to consume majority of execution time. What's the go to way to profile their inner workings? I want to hunt down those things that consume major chunks of time.
13:51:23 <Athas> ph88^: it's sort of weird to have a list of monadic actions, and strictly speaking you cannot filter it. You can use 'sequence' to turn it into 'State Foo [Bar]', and then you can just filter it.
13:51:43 <ph88^> bwe, you can add cost centres on parts of your functions with annotations
13:53:15 <ph88^> Athas, how come it is weird to have a list of monadic actions ?
13:53:40 <Athas> ph88^: how do you create them? What do you end up doing with them?
13:53:58 <Athas> There are cases where it makes sense, but often it's just a symptom that you used 'map' instead of 'mapM'.
13:54:25 <bwe> ph88^: how can I run `cabal repl` with RTS enabled?
13:54:55 <ph88^> bwe, https://well-typed.com/blog/2023/03/prof-late/ https://downloads.haskell.org/ghc/latest/docs/users_guide/profiling.html#cost-centres-and-cost-centre-stacks https://www.tweag.io/blog/2020-01-30-haskell-profiling/
13:55:08 <danse-nr3> % minimum $ sort [0..100_000_000]
13:55:08 <yahb2> <interactive>:85:11: error: ; • Variable not in scope: sort :: [a0] -> t0 a ; • Perhaps you meant ‘sqrt’ (imported from Prelude)
13:55:31 <danse-nr3> % minimum [0..100_000_000]
13:55:33 <yahb2> <timeout>
13:56:09 <ph88^> bwe, do you mean rts options? i don't get your question
13:56:53 <bwe> ph88^: yes
13:57:57 <ph88^> bwe, i'm not sure. what option do you want to pass and what command did you try ?
14:00:32 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
14:01:30 <bwe> ph88^: I'd like to run `cabal repl` with +RTS -p options, like https://downloads.haskell.org/~ghc/9.0.1/docs/html/users_guide/profiling.html#cost-centres-and-cost-centre-stacks specifies
14:01:58 <bwe> (I'd like to run the function and create the profile report within a cabal repl session
14:04:35 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17)
14:05:19 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 264 seconds)
14:05:25 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Server closed connection)
14:05:31 <ph88^> bwe, https://github.com/haskell/cabal/issues/8641
14:06:25 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
14:06:41 × dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 240 seconds)
14:06:56 <ph88^> when you run cabal you can pass rts options to cabal, ghc, ghci/program 3 different things to pass options too ^^
14:07:29 friendshipaka joins (~Friendshi@user/Friendship)
14:08:15 × Friendship quits (~Friendshi@user/Friendship) (Ping timeout: 255 seconds)
14:32:23 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
14:34:09 × CiaoSen quits (~Jura@2a05:5800:2ad:5900:2a3a:4dff:fe84:dbd5) (Ping timeout: 260 seconds)
14:34:43 CiaoSen joins (~Jura@5.83.177.67)
14:35:39 × euleritian quits (~euleritia@dynamic-046-114-206-152.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
14:35:58 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
14:39:43 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
14:41:21 srk joins (~sorki@user/srk)
14:44:32 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
14:44:53 <bwe> now I've got a profiling report, however it does not show the specific calls within function `f` I want to profile. How can I focus only on that function's inner workings?
14:49:43 fweht joins (uid404746@id-404746.lymington.irccloud.com)
14:53:03 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
14:54:13 × danse-nr3 quits (~danse@151.47.236.20) (Ping timeout: 260 seconds)
14:56:37 Inst joins (~Inst@120.244.192.250)
14:59:04 dibblego joins (~dibblego@122-199-1-93.ip4.superloop.au)
14:59:04 × dibblego quits (~dibblego@122-199-1-93.ip4.superloop.au) (Changing host)
14:59:04 dibblego joins (~dibblego@haskell/developer/dibblego)
15:00:17 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
15:00:51 danse-nr3 joins (~danse@151.47.236.20)
15:01:33 × dibblego quits (~dibblego@haskell/developer/dibblego) (Excess Flood)
15:01:50 dibblego joins (~dibblego@122-199-1-93.ip4.superloop.au)
15:01:51 × dibblego quits (~dibblego@122-199-1-93.ip4.superloop.au) (Changing host)
15:01:51 dibblego joins (~dibblego@haskell/developer/dibblego)
15:02:38 Desyt joins (~Desyt@145.136.157.47)
15:05:01 × Shock_ quits (~shOkEy@77-234-80-134.pool.digikabel.hu) (Ping timeout: 240 seconds)
15:07:02 Shock_ joins (~shOkEy@178-164-235-249.pool.digikabel.hu)
15:10:18 × kiriakos quits (~kiriakos@p57b64ab9.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
15:19:10 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
15:24:05 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
15:24:24 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:36:20 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:36:31 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
15:36:49 euleritian joins (~euleritia@dynamic-046-114-206-152.46.114.pool.telefonica.de)
15:37:25 × euleritian quits (~euleritia@dynamic-046-114-206-152.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
15:37:42 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:44:27 × CiaoSen quits (~Jura@5.83.177.67) (Ping timeout: 260 seconds)
15:49:29 × danse-nr3 quits (~danse@151.47.236.20) (Read error: Connection reset by peer)
15:50:04 × CO2 quits (CO2@gateway/vpn/protonvpn/co2) (Quit: WeeChat 4.1.1)
15:50:09 danse-nr3 joins (~danse@151.47.236.20)
15:53:25 alp joins (~alp@2001:861:5e02:eff0:bb06:f56f:3244:15c0)
15:53:41 × alp quits (~alp@2001:861:5e02:eff0:bb06:f56f:3244:15c0) (Changing host)
15:53:41 alp joins (~alp@user/alp)
15:53:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17) (Remote host closed the connection)
15:54:04 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:54:16 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17)
15:56:58 × Desyt quits (~Desyt@145.136.157.47) (Quit: Client closed)
15:57:29 mechap joins (~mechap@user/mechap)
15:58:34 <Inst> hope this isn't too trollish
15:58:35 <Inst> http://blog.ezyang.com/2010/10/rapid-prototyping-in-haskell/
16:01:29 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:b8cc:9457:893c:f87e) (Quit: WeeChat 3.5)
16:04:19 CiaoSen joins (~Jura@2a05:5800:2ad:5900:2a3a:4dff:fe84:dbd5)
16:04:53 × absence quits (torgeihe@hildring.pvv.ntnu.no) (Ping timeout: 252 seconds)
16:06:57 × danse-nr3 quits (~danse@151.47.236.20) (Read error: Connection reset by peer)
16:07:54 danse-nr3 joins (~danse@151.35.241.49)
16:09:05 <danse-nr3> i do not find it trolling, nor too convincing. But then i am also not sure that scripting should be considered such a specific coding activity
16:11:19 sabino joins (~sabino@user/sabino)
16:15:02 acidjnk joins (~acidjnk@p200300d6e72b933384d06dff6b3ba200.dip0.t-ipconnect.de)
16:16:32 notzmv joins (~zmv@user/notzmv)
16:18:35 <Inst> It was just something interesting I found, I'm not willing to back it up, and should write Haskell more before I try to argue for Haskell used / abused in this manner.
16:19:38 <danse-nr3> why would it be abused? Also, you seem to be quite advanced in haskell. More than a beginner for sure
16:21:29 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 260 seconds)
16:22:29 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17) (Remote host closed the connection)
16:25:24 × justache quits (~justache@user/justache) (Quit: ZNC 1.8.2 - https://znc.in)
16:26:21 justache joins (~justache@user/justache)
16:27:16 <Inst> I'm actually a beginner in Haskell
16:27:26 <Inst> I just hung around people to learn all the weird hacks and tricks too much
16:27:53 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
16:29:21 × justache quits (~justache@user/justache) (Remote host closed the connection)
16:30:03 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
16:30:49 <danse-nr3> so you said, writing more would make you feel beyond beginner? Which % of haskell do you use at work?
16:31:04 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 246 seconds)
16:32:31 justache joins (~justache@user/justache)
16:36:09 <Inst> I'm not a professional, just a beginner :(
16:36:12 <Inst> Hobbyist
16:36:31 <Inst> danse-nr3: the theory I'm entertaining is that all the crazies who are pushing for unidiomatic Haskell, there is actually a place for them
16:36:39 <Inst> It's called small-scale script
16:37:04 <Inst> That's why I'm trying to consider scripting as a specific coding activity, i.e, if it's a small-scale, single-use script that's not intended to be reused, sure, go crazy, be unidiomatic
16:37:14 <Inst> but beyond that scale and specific use case, please write idiomatic Haskell
16:37:36 <Inst> And then everyone is at peace.
16:39:41 × Shock_ quits (~shOkEy@178-164-235-249.pool.digikabel.hu) (Ping timeout: 240 seconds)
16:40:37 <danse-nr3> makes sense to me. Scripting is a way to start, one never knows where it will end
16:41:48 Shock_ joins (~shOkEy@84-236-21-62.pool.digikabel.hu)
16:48:10 <ddellacosta> I dunno, I feel like you have to have a good grasp of Haskell to script in it effectively, and furthermore it's a different enough mode of using Haskell that you'd fail, as a beginner, to gain insight into some of Haskell's greatest strengths, like how useful a typechecker can be in refactoring when you leverage Haskell's type system effectively. But at the same time maybe there's value in
16:48:12 CO2 joins (CO2@gateway/vpn/protonvpn/co2)
16:48:12 <ddellacosta> learning how to pipe together commands in IO to get code running before you start really learning the language "for real?" I dunno
16:49:41 <ddellacosta> I mean, I suppose it depends on who exactly we're talking about here, not sure I know who the crazies are under discussion
16:50:21 <danse-nr3> huh maybe i missed some really ugly pattern in there, just skimmed through it to be honest. What is this? Can you make an instance with the interpreter?
16:51:02 <danse-nr3> or just paste a snippet?
16:51:04 justache is now known as justThanks
16:53:43 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 255 seconds)
16:54:20 m5zs7k joins (aquares@web10.mydevil.net)
16:57:38 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17)
16:59:51 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
17:01:37 × CiaoSen quits (~Jura@2a05:5800:2ad:5900:2a3a:4dff:fe84:dbd5) (Ping timeout: 260 seconds)
17:03:17 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
17:06:17 AlexNoo_ joins (~AlexNoo@178.34.162.228)
17:06:59 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
17:09:34 × AlexZenon quits (~alzenon@94.233.241.129) (Ping timeout: 246 seconds)
17:09:34 × AlexNoo quits (~AlexNoo@94.233.241.129) (Ping timeout: 246 seconds)
17:12:53 <kaol> @pl \f -> (f <$> pure 1 <*> pure 2)
17:12:53 <lambdabot> (<$> pure 1 <*> pure 2)
17:13:04 <kaol> Which extension makes that valid syntax?
17:14:16 <ski> none, i think
17:14:19 <ski> (unfortunately)
17:14:31 × sdz quits (~sdz@user/sdz) (Ping timeout: 260 seconds)
17:14:55 <ski> (`pl' may be confused about the precedence levels, there)
17:15:27 <dolio> Yeah, it seems to think it's (f <$> (pure 1 <*> pure 2))
17:16:11 <geekosaur> it doesn't know about <$> or <*> at all
17:16:16 <ski> (i've previously thought such "extended/chained sections" could be nice)
17:16:33 <dolio> Yeah, I've definitely wanted them before.
17:16:45 <geekosaur> so have I once or twice
17:17:00 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
17:17:19 <danse-nr3> % :t \f -> f <$> pure 1 <*> pure 2
17:17:20 <yahb2> \f -> f <$> pure 1 <*> pure 2 ; :: (Applicative f, Num a1, Num a2) => (a1 -> a2 -> b) -> f b
17:17:38 <kaol> I'm writing some parsec code and it'd be nice to do "try (SomeType <$> foo <*> bar) >>= (<$> bar <*> asfd)"
17:17:46 <ski> yahb2's parsing it correctly (of course)
17:18:26 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:18:43 <dolio> Is that really much better than introducing the variable?
17:19:05 <kaol> No, but it's admitting defeat.
17:20:34 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
17:21:46 hippoid joins (~hippoid@user/hippoid)
17:22:04 Square joins (~Square@user/square)
17:23:14 <mauke> @pl \f -> (f <$> pure 1) <*> pure 2
17:23:14 <lambdabot> (<*> pure 2) . (<$> pure 1)
17:23:18 AlexZenon joins (~alzenon@178.34.162.228)
17:23:57 <mauke> wait, >>= into fmap? how does that make sense
17:24:18 ski . o O ( `[> [< try [> SomeType [<foo>] [<bar>] <] >] [<bar>] [<asfd>] <]' )
17:24:25 <mauke> shouldn't it be try (...) <*> bar <*> asfd?
17:24:37 <dminuoso> Which black magic lens operator turned a function into a lens again?
17:24:46 <dminuoso> Or well, s/operator/combinator/
17:24:47 <dolio> I wonder why pl defaults to infixr.
17:28:05 <kaol> mauke: Thanks. Now I feel silly for not spotting that.
17:29:42 <ski> @type \mf ma mb -> Text.Parsec.try mf >>= \f -> f <$> ma <*> mb
17:29:43 <lambdabot> Text.Parsec.Prim.ParsecT s u m (a1 -> a2 -> b) -> Text.Parsec.Prim.ParsecT s u m a1 -> Text.Parsec.Prim.ParsecT s u m a2 -> Text.Parsec.Prim.ParsecT s u m b
17:29:44 <ski> @type \mf ma mb -> Text.Parsec.try mf <*> ma <*> mb
17:29:45 <lambdabot> Text.Parsec.Prim.ParsecT s u m (a1 -> a2 -> b) -> Text.Parsec.Prim.ParsecT s u m a1 -> Text.Parsec.Prim.ParsecT s u m a2 -> Text.Parsec.Prim.ParsecT s u m b
17:35:05 thegeekinside joins (~thegeekin@189.141.80.123)
17:41:38 n0den1te joins (~aaaa@223.178.83.62)
17:46:48 × n0den1te quits (~aaaa@223.178.83.62) (Remote host closed the connection)
17:49:12 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:49:49 <ddellacosta> dminuoso: were you thinking of https://hackage.haskell.org/package/lens-5.2.3/docs/Control-Lens-Combinators.html#v:to ?
17:50:29 × kuribas` quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:51:10 <mauke> that looks insufficiently evil
17:51:10 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:51:31 <tomsmeding> Athas: no good pre-made guide unfortunately
17:51:32 <ddellacosta> haha
17:51:54 × _xor quits (~xor@72.49.195.41) (Read error: Connection reset by peer)
17:51:57 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:51:58 <tomsmeding> I think I gave an overview a couple of days ago, did that work? Or are you looking for something for students (or CFAL)?
17:53:56 _xor joins (~xor@72.49.195.41)
17:54:11 <Athas> tomsmeding: yeah, this is CFAL. I managed to at least get it to compile (with stack), but it crashes with an internal error.
17:54:24 <Athas> I guess I'll post on the mailing list and ask for advice.
17:54:57 × fendor quits (~fendor@2a02:8388:1640:be00:ca17:ceee:5bbe:1594) (Remote host closed the connection)
17:56:34 <tomsmeding> Athas: yeah, if you post exactly what error you get, I suspect we'll know precisely what to do
17:56:43 <tomsmeding> this UX is something we should fix :p
17:57:31 <Athas> Well, you depend on some seriously intricate moving parts.
17:57:35 <Athas> I recommend a shell.nix!
17:58:02 <tomsmeding> (none of us use nix... :P)
17:58:26 <Athas> How do you manage the specific LLVM and CUDA versions that Accelerate needs?
17:58:34 <Athas> Ah, you must be Guix users!
18:02:03 <tomsmeding> by having folk knowledge of what versions to use, oops
18:02:38 <tomsmeding> the versions we need are not so old that the linux package managers we use don't have them :p
18:03:13 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
18:03:53 qqq joins (~qqq@92.43.167.61)
18:04:01 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
18:05:33 × danse-nr3 quits (~danse@151.35.241.49) (Ping timeout: 260 seconds)
18:05:54 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
18:06:29 × _xor quits (~xor@72.49.195.41) (Quit: Ping timeout (120 seconds))
18:07:04 _xor joins (~xor@72.49.195.41)
18:11:27 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
18:12:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:14:26 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
18:22:05 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
18:22:14 <ph88^> where can i find the regex tdfa supported patterns ?
18:24:17 <geekosaur> "This regex-tdfa package implements, correctly, POSIX extended regular expressions." (in haddock for Text.Regex.TDFA)
18:24:39 <geekosaur> so if you want a precise specification you can check the POSIX standard
18:24:59 <kaol> man 7 regex
18:25:36 <haskellbridge> 06<s​m> https://hledger.org/1.31/hledger.html#regular-expressions should be pretty accurate also
18:27:27 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
18:27:47 euleritian joins (~euleritia@x5271790e.dyn.telefonica.de)
18:32:24 × Teacup quits (~teacup@user/teacup) (Server closed connection)
18:32:35 Teacup joins (~teacup@user/teacup)
18:36:42 notzmv joins (~zmv@user/notzmv)
18:41:52 CiaoSen joins (~Jura@2a05:5800:2ad:5900:2a3a:4dff:fe84:dbd5)
18:49:04 <ph88^> thx :)
18:51:06 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17) (Remote host closed the connection)
18:51:21 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17)
18:52:06 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
18:56:52 <tomsmeding> it's nice that they explicitly state that they do it "correctly"
18:57:12 <tomsmeding> as opposed to... other implementations that also claim to support POSIX extended but don't do it correctly? or something?
18:57:35 <monochrom> :) :(
18:58:17 <monochrom> because of the potential for: the minority is correct but the incorrect majority is mainstream.
19:00:58 <monochrom> https://swtch.com/~rsc/regexp/regexp1.html This one is not so much about correctness, but if the mainstream is slow, no one takes it seriously when someone says it could be fast.
19:01:28 <haskellbridge> 14<m​auke> Posix regexes aren't very useful because in practice everyone just follows what Perl does
19:01:28 <dolio> The next sentence is: "It is highly unlikely that the regex-posix package on your operating system is correct..."
19:02:59 <haskellbridge> 14<m​auke> ^that page annoys me because it's basically sleight-of-hand
19:05:04 <haskellbridge> 14<m​auke> "no pathological patterns" he promises, and then doesn't implement all the nice features you want
19:05:22 <glguy> Maybe the nice features are pathological!
19:05:29 <dolio> Which nice features?
19:05:46 <haskellbridge> 14<m​auke> including some very basic things like {m,n} quantifiers
19:05:49 <glguy> irregular expressions
19:06:07 <glguy> or at that point are they just "expressions"?
19:06:36 target_i joins (~target_i@217.175.14.39)
19:08:21 <haskellbridge> 14<m​auke> Bounded repetition is still regular. In backtracking implementations it's just a loop, but in his version you'd get exponential space usage, best as I can tell
19:08:33 × alp quits (~alp@user/alp) (Ping timeout: 260 seconds)
19:08:54 <glguy> I don't mean bounded repetition is not regular, just that it seems like most people don't want the regular part of regular expressions
19:09:09 <haskellbridge> 14<m​auke> True
19:10:27 <EvanR> I mean how are you supposed to parse HTML with regular regular expression
19:10:33 <EvanR> sheesh!
19:10:41 <dolio> Yeah, not having {m,n} is a bummer.
19:10:48 <dolio> That's in posix.
19:11:00 × deriamis quits (deriamis@2600:1f14:1251:ba02:2994:f9dc:75a8:113b) (Server closed connection)
19:11:16 deriamis joins (deriamis@2600:1f14:1251:ba02:2994:f9dc:75a8:113b)
19:12:42 <haskellbridge> 14<m​auke> I mean, the lexical grammar of script tags is technically regular :-D
19:13:44 <EvanR> good point, which is all you can hope for when "parsing" html anyway
19:13:50 <EvanR> tag soup
19:14:41 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
19:16:50 AlexNoo_ is now known as AlexNoo
19:17:13 <haskellbridge> 14<m​auke> Back to my original point: I think Perl syntax won because it is more, uh, regular
19:18:16 <haskellbridge> 14<m​auke> E.g. you can backslash escape any punctuation character and it will match itself literally. That's not true in POSIX
19:19:31 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 255 seconds)
19:20:21 <monochrom> Yeah I do think when I saw Perl regex a long time ago my impression was "this is pretty uniform" and later POSIX was "this is unusually many special cases".
19:20:39 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
19:22:06 <monochrom> In other news, I have come up with a great pun.
19:22:21 <monochrom> Recursion is my recurring interest. I'm fixated on fixed points.
19:23:47 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
19:23:48 <monochrom> (I am recently learning recursion and inductive types in Lean, or generally Curry-Howard-isomorphic systems.)
19:25:49 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
19:26:26 <dolio> I could believe perl has better syntax for them. The problem with perl regexes are some of the features.
19:28:15 <geekosaur> POSIX regexps were an attempt to rationalize a shitton of different regex codebases all with their own idiosyncrasies
19:29:28 <dolio> The problems mentioned by the tdfa package are the meanings of various regexes.
19:31:09 <dolio> Like, not outputting the captures as specified in posix. I didn't read in detail, but it's possible you could get different capture information on different platforms for some regexes.
19:31:38 <geekosaur> yeh, I saw that
19:31:56 roosterphant joins (~roosterph@user/roosterphant)
19:33:21 <dolio> In a way that's already going beyond 'regular expression.' Because that kind of ambiguity doesn't really matter when you're just recognizing the whole string.
19:33:51 × CiaoSen quits (~Jura@2a05:5800:2ad:5900:2a3a:4dff:fe84:dbd5) (Ping timeout: 240 seconds)
19:34:53 CiaoSen joins (~Jura@5.83.177.67)
19:35:41 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:37:57 × CO2 quits (CO2@gateway/vpn/protonvpn/co2) (K-Lined)
19:38:22 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17) (Remote host closed the connection)
19:39:03 × [`itchyjunk`] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
19:40:46 <John_Ivan> I have a question regarding "IO". The function I'm wrapping is getCurrentDirectory as :: IO String
19:41:19 <John_Ivan> I'm trying to do "putStrLn get_c_dir" which is my wrapper but I get an error saying that it cannot convert from IO to String
19:41:35 <John_Ivan> I know I can do "var <- get_c_dir" and then "putStrLn var"
19:41:51 <John_Ivan> but is it not possible otherwise to directly get a value and pipe it to putStrLn?
19:41:56 <geekosaur> @where iotut
19:41:57 <lambdabot> https://www.vex.net/~trebla/haskell/IO.xhtml
19:42:02 <geekosaur> it is not possible
19:42:02 <monochrom> >>=
19:42:27 <geekosaur> getCurrentDirectory contains a String in the same way that /bin/'ls contains a list of files
19:42:33 <geekosaur> -`
19:42:51 <John_Ivan> I see. I guess that's what I wanted to know. "is it possible or not". I'll have a read of that page. thanks.
19:42:55 <geekosaur> it is an action that must be run using `>>=`
19:43:05 <John_Ivan> ahh
19:43:10 <John_Ivan> wait
19:43:34 Pickchea joins (~private@user/pickchea)
19:43:38 <kaol> I like to make the distinction: >>= is a bind, not running it. The RTS runs it.
19:43:52 danza joins (~francesco@151.35.224.181)
19:44:05 <John_Ivan> geekosaur, but what stops me from doing the "binding" inside get_c_dir wrapper and still signaturing it as ":: String" ?
19:44:10 <monochrom> This is why a formula is worth a thousand pictures (therefore a million words). >:)
19:44:33 <John_Ivan> but just merely returning the string
19:44:39 <geekosaur> you have to put it back in IO afterward
19:44:47 <geekosaur> read the IO tutorial I linked
19:44:49 <monochrom> What is get_c_dir?
19:44:52 <John_Ivan> ok thanks
19:45:10 <kaol> You can't escape IO. Even if you do it inside a function the return type has to have IO on it.
19:45:30 <geekosaur> once in IO, always in IO
19:45:47 <geekosaur> you can temporarily pull it out but you must put it back
19:45:54 <kaol> STD of type system.
19:46:39 × sudden quits (~cat@user/sudden) (Ping timeout: 255 seconds)
19:47:17 sudden joins (~cat@user/sudden)
19:48:42 <EvanR> you also can't escape Maybe a, you can't necessarily get `a'. The difference between Maybe and IO is that IO is abstract, you can't (normally) pattern match deconstruct it
19:49:30 <EvanR> alternatively, what does escape mean if not that
19:50:31 <haskellbridge> 14<m​auke> What stops you, technically, is the type checker
19:50:36 <ncf> cursed thought: IO is "morally State RealWorld", but has anyone considered Reader RealWorld and Writer RealWorld?
19:51:23 <haskellbridge> 14<m​auke> What's the real world mappend?
19:51:24 <monochrom> No, because IO is not morally State RealWorld.
19:51:49 <ncf> i mean it's more than morally
19:51:57 <monochrom> But perhaps s/morally/naïvely/ may work.
19:53:13 <monochrom> unsafePerformIO is Reader RealWorld.
19:53:42 <EvanR> world1 <> world2 is a(n ill concieved) many worlds multiversal split point
19:53:43 <ncf> not really
19:54:04 <ski> (you could use monadic I/O (as the only form of I/O) in a dynamically typed language)
19:54:13 <monochrom> This is very cursed and I am only interested in recursion, not cursion. >:)
19:55:19 <EvanR> world1 <> world2 is 0.707*world1 + 0.707*world2
19:55:48 <haskellbridge> 12<C​elestial> _re_ (re cursive)
19:56:06 <ncf> Reader RealWorld would allow the compiler to interleave actions that are guaranteed to only read from the world and not change it, so it'd be more like unsafeInterleaveIO i guess
19:56:06 × trev quits (~trev@user/trev) (Quit: trev)
19:56:52 <EvanR> I passively read the system clock, it doesn't change anything right
19:57:22 <ncf> i mean of course in practice reading anything might change it so this would be a very frail abstraction
19:57:25 <haskellbridge> 12<C​elestial> quantum physics disagrees (sort of)
19:57:48 <monochrom> This is madness.
19:58:06 <EvanR> you could set up the clock as a continuous wave coming in, whoever sends it won't know what we do with it (until much later technically)
19:58:09 <ski> Mercury has an impurity system (mostly intended for FFI, so that you can code more of the provided functionality in (impure) Mercury before wrapping it up in a (desiredly) pure interface). it distinguishes between `pure', `semipure', and `impure'. `semipure' calls commute with each other, but can't be moved across `impure' ones
19:58:18 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
19:58:48 alp joins (~alp@2001:861:5e02:eff0:18d6:86ab:73b8:9572)
19:59:22 <ncf> i guess both read-only and write-only segments would be a kind of semipure (but they wouldn't commute past each other)
19:59:42 <ski> (there's also the notion of "unique input", where you pass the unique reference to a data structure to a predicate, so that it can inspect it, but then hands it back (and it's immutable), so that calls that are handed that unique reference can then be commuted wrt each other)
20:00:12 <ncf> er, write-only wouldn't commute at all
20:00:17 <EvanR> what is "semipure"
20:00:37 <ski> EvanR : typical example would be "reading the current value of a mutable location"
20:03:56 <ski> (the uniqueness stuff is all pure and declarative, though. used to be able to use update-in-place under the covers, when taking a (the unique reference to a) structure as input and computing (a unique reference to) an updated structure. used e.g. for arrays, hashmaps, but also the world state (for general I/O). most similar to uniqueness in Clean)
20:03:59 yoyofreeman joins (~yoyofreem@176.97.76.178)
20:11:46 monochrom feels like Unpopular Sarcastic Opinion: Post "Let's remove all senses of humour from Hackage" on discourse.haskell.org
20:12:13 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17)
20:13:20 <probie> The "remove acme-everything" post?
20:13:54 <monochrom> Yeah.
20:13:59 <EvanR> what happens when hackage policy "remove nothing" collides with the "remove everything" movement
20:14:54 <EvanR> an epic amount of "something", I guess xD
20:15:17 <monochrom> You're very quantum today. :)
20:16:42 <mauke> reminds me of gcc function attributes
20:16:52 <probie> I think we need more humour on Hackage, like acme-default. acme-everything happens to sit in a place where it's funny, but also a slight inconvenience
20:17:25 <mauke> __attribute__((const)), which marks a function as pure, and __attribute__((pure)), which marks a function as not modifying global state
20:18:10 <monochrom> I can sympathize with the specific issue "acme-everything is ruining reverse dependency analyses". But I am put off by the OP's authoritative tone.
20:19:24 <EvanR> when you don't like the results of analysis, you edit the data source?
20:19:44 <monochrom> and the carpet-bombing attitude "if it doesn't have a use case then it doesn't deserve to live".
20:20:04 <EvanR> that's consistent with the quantum principle that you can't do a totally detached analysis with no effect on the system xD
20:21:12 sadmax joins (~user@67.22.210.152)
20:21:21 <mauke> how is it ruining analyses?
20:22:07 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
20:22:21 <probie> It's a reverse dependency of every package
20:22:27 <monochrom> Every package has acme-everything as a reverse dependency. That is annoying.
20:22:37 <mauke> I don't see the problem
20:23:03 <EvanR> it makes your package look like a joke!
20:23:35 <Clint> is my package a joke? we'll never know
20:24:05 <Athas> I check reverse dependencies sometimes, and I don't think I have ever been annoyed about acme-everything.
20:24:11 <monochrom> Right, so maerwald points out obvious "you can script up a filter to filter it out". I am ambivalent on that because it is annoying but you are right that it is not a big fuss.
20:24:33 <Athas> Since Hackage technically doesn't allow package removal, isn't that the end of the discussion?
20:24:45 <Athas> Is it overloading the Hackage software?
20:24:45 <EvanR> yes
20:24:54 <EvanR> that thread was closed
20:25:52 <monochrom> Well, the thread was closed because of "discussion too heated", not because "on the technical pretext that it is purely hypothetical" >:)
20:29:34 <probie> We should make a new package archive called "NoFun" that only allows the most serious of packages
20:30:12 <EvanR> and a complementary 3rd archive which is nothing but joke packages
20:30:15 <Rembane> probie: +1
20:30:25 <EvanR> if the humor level is too low, it's laughed off the island
20:31:00 <Rembane> Shouldn't all good package indices have some humour packages for good luck? IIRC CPAN have loads for them.
20:31:26 <probie> I wonder where things like recursion-schemes sit? It's mostly serious, but then also has `zygoHistoPrepro`
20:32:11 × ubert quits (~Thunderbi@178.115.54.161.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
20:32:11 <Rembane> Is that a humorous name?
20:32:14 <geekosaur> we already have an acme category in homage to CPAN
20:32:24 ubert joins (~Thunderbi@178.165.177.1.wireless.dyn.drei.com)
20:32:25 sadmax` joins (~user@67.22.210.152)
20:32:26 <geekosaur> Rembane, 9it's a meme
20:33:00 × sadmax quits (~user@67.22.210.152) (Read error: No route to host)
20:33:04 <mauke> nothing funny about zygohistomorphic prepromorphisms
20:33:55 Maxlelyonai joins (~Maxlelyon@178.237.232.145)
20:33:56 <Maxlelyonai> Hallo hallo
20:34:21 <Maxlelyonai> Does someone know if there is a haskell library, where you can use Naive Bayes?
20:35:39 <Rembane> geekosaur: Yeah, but I thought it was something at least slightly serious starting out in a paper and then it kinda got out of hand.
20:36:21 <geekosaur> well, it's a real recursion scheme, just one without a lot of practical use and a somewhat ridiculously convoluted name so it took on a life of its own
20:36:25 <geekosaur> so, yes
20:37:06 <monochrom> Each individual ingredient started out serious. Certain combinations too.
20:37:37 <monochrom> Then let combinations -> out of hand. :)
20:37:43 <Rembane> I didn't know that. Thank you. :D
20:37:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17) (Ping timeout: 260 seconds)
20:39:04 <Axman6> Maxlelyonai: https://hackage.haskell.org/packages/search?terms=Bayes turnes up a few results but I don't know enough to say if they do what you want
20:39:19 caryhartline joins (~caryhartl@168.182.58.169)
20:39:41 <Maxlelyonai> ahh
20:39:48 <Maxlelyonai> i didn't know you can do that
20:39:49 <Maxlelyonai> thx
20:40:03 <monochrom> For certain monads, I also find "M (M (M a))" funny and getting out of hand. :) (Unfortunately, it is pretty much seriously necessary to state the laws of join.)
20:40:37 <Axman6> the big kiss of the monad laws, mmma!
20:40:53 <probie> `[[[a]]]` considered harmful
20:41:14 <Axman6> or at least very indirect
20:41:47 × target_i quits (~target_i@217.175.14.39) (Quit: leaving)
20:42:49 × danza quits (~francesco@151.35.224.181) (Ping timeout: 260 seconds)
20:44:16 ski 's reminded of "triple star programmers" in C
20:44:41 <Rembane> Triple monad programmers ftw!
20:44:42 <ski> (where you have `blah_t ***p;')
20:46:34 <monochrom> I used triple-star once in C for backprop neural network training. Basically just because passing by reference a dynamically sized array of arrays.
20:46:54 <monochrom> I think of it as my crowning achievement in C skills. >:)
20:47:04 <probie> Resort to church encoding for triple lists `(((((a -> b -> b) -> b -> b) -> c -> d) -> c -> d) -> e -> f) -> e -> f`
20:48:03 <monochrom> "You want [[[a]]]. Let me introduce to you System F and rank-4 polymorphism..." >:)
20:49:25 <ski> arbitrarily nested `ContT' (as many levels as the user of the action wants there to be) is fun
20:49:55 <EvanR> discussion too heated sounds like an unhumorously realistic future HTTP response
20:50:20 <monochrom> hahaha
20:50:28 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
20:52:22 <ski> (something like `newtype Foo o p m a = MkFoo (forall n. ContStack m n => ContT o (ContT p n))', iirc, where `ContStack m' for some base level monads `m', and also `ContStack m n => ContStack m (ContT o n)')
20:52:55 <monochrom> "451 Server Overheat" >:)
20:54:28 ft joins (~ft@p508db3bc.dip0.t-ipconnect.de)
20:54:40 <monochrom> Can you simplify ContStack to MonadCont?
20:55:18 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
20:56:28 <ski> i don't think so
20:56:52 <ski> perhaps it would be possible to abstract from `ContT' to some type class for continuation monad transformers, though
20:58:25 <ski> (practically speaking, `ContStack' has methods for trailing which i need, without committing to a definite number of `ContT' levels)
20:58:53 <monochrom> Ah yeah callCC is puny.
20:59:28 <monochrom> ContStack can be said to have "stack" "unwinding" haha.
20:59:38 <ski> .. in case it's not clear, this is about logic programming, and a notion of "backtracking backtracking" which i came up with, in order to be able to support goal implications (and specifically left-nested goal implications, to an arbitrary nesting level)
21:00:05 × Square quits (~Square@user/square) (Ping timeout: 260 seconds)
21:00:12 <ski> this is also closely related to the Church encoding of addition, multiplication, and especially exponentiation
21:01:14 <ski> every time i use goal implication, the number of `ContT' levels increase by once (in the left operand of the implication)
21:01:24 <ski> s/once/one/
21:02:23 <ski> (top-level run operations start out with two levels, which are also used in most of the other basic operations (that doesn't shift levels) (some only use the top level, though))
21:03:01 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds)
21:04:17 × alp quits (~alp@2001:861:5e02:eff0:18d6:86ab:73b8:9572) (Ping timeout: 260 seconds)
21:05:16 <ski> (m + n) s f = m s (n s f)
21:05:25 <ski> (m * n) s f = m (n s) f
21:05:34 <ski> (n ^ m) s f = m n s f
21:05:59 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:06:03 <ski> where `type ChurchNat = forall o. (o -> o) -> (o -> o)'
21:06:36 <ski> first two doesn't actually require rank-2 signatures. the last one (exponentiation) does
21:07:20 <ski> (because it's not instantiating the `o' in the type of `m' to the same `o' that's in the type of `n ^ m', instead instantiating it to `o -> o')
21:07:57 zetef joins (~quassel@95.77.17.251)
21:08:16 <ski> these three are basically my implementations of disjunction (`(<|>)'), conjunction (`(>>=)'), and implication (`(==>)')
21:08:41 <EvanR> times :: Enum n => n -> (a -> a) -> a -> a -- haskell base why u no
21:09:30 <ski> (there's more extra fluff going on, e.g. to deal with universal quantification (and skolems), and how it interacts with instantiating logic variables. and also allowing the `o' and `p' in `Foo o p m a' to not be trivial, actually using them)
21:10:01 × NemesisD quits (sid24071@id-24071.lymington.irccloud.com) (Server closed connection)
21:10:10 NemesisD joins (sid24071@id-24071.lymington.irccloud.com)
21:10:12 <ski> (oh, and being able to do I/O and stuff)
21:12:12 <ski> EvanR : yea, that's the basic idea at the bottom
21:12:31 <ski> (lists of solutions are pretty similar to natural numbers)
21:13:36 <EvanR> list of unit = natural numbers
21:13:40 mc47 joins (~mc47@xmonad/TheMC47)
21:13:41 <ski> yep
21:13:49 <EvanR> list of a = uh generalized numbers
21:14:02 × sadmax` quits (~user@67.22.210.152) (Remote host closed the connection)
21:14:39 zetef_ joins (~quassel@5.2.182.98)
21:14:55 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 264 seconds)
21:15:28 <Franciman> what do you mean by backtracking backtracking?
21:15:41 <Franciman> Doesn't it flatten, because logic is a monad?
21:17:51 <ski> now, generalizing from `forall o. (o -> o) -> (o -> o)' to `forall o. (a -> o -> o) -> (o -> o)', we've lists. next step is to go to `forall o. (a -> (p -> o) -> o) -> ((p -> o) -> o)', which is `forall o. ContT p (Cont o) a'. you can also split `p' into `p0' and `p1', going into indexed monads, if you like
21:18:12 <ski> Franciman : flatten, how do you mean ?
21:18:18 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
21:18:25 <Franciman> hm i mean the dumb thing
21:18:27 <Franciman> :t join
21:18:28 <lambdabot> Monad m => m (m a) -> m a
21:18:42 <ski> anyway, one can wonder which data structure `(a -> (p -> o) -> o) -> ((p -> o) -> o)' corresponds to
21:18:50 × Maxlelyonai quits (~Maxlelyon@178.237.232.145) (Quit: Client closed)
21:19:19 <ski> oh, i have `Monad m => Monad (Foo o p m)', sure
21:19:37 <Franciman> so join is related to exponentials?
21:19:47 <Franciman> makes sense since it looks kinda like weakening
21:19:52 <ski> no, not really
21:20:04 <Franciman> err contraction*
21:20:06 <ski> the `Monad' stuff corresponds to (truth and) conjunction
21:20:13 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
21:20:13 <Franciman> ok cool
21:20:26 <ski> (of course there's also `Applicative' instance)
21:20:31 caryhartline joins (~caryhartl@168.182.58.169)
21:20:38 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:20:38 <ski> while `MonadPlus' (or `Alternative') is disjunction
21:20:40 <Franciman> do you have any public code?
21:20:45 <Franciman> i'm curious to read
21:20:49 Franciman is lost
21:21:02 <EvanR> > join ["ap", "pl", "e"] -- contraction
21:21:03 <lambdabot> "apple"
21:21:43 <ski> do you have logic programming experience ? like Prolog ? or maybe Mercury or Oz or something ?
21:22:00 <Franciman> yes
21:22:17 × euleritian quits (~euleritia@x5271790e.dyn.telefonica.de) (Read error: Connection reset by peer)
21:22:35 euleritian joins (~euleritia@2a02:810a:b00:1568:db91:81d0:5aee:f30f)
21:23:15 <ski> ok, so with a query `?- append(Front,Back,[2,3]).', you have implementations use backtracking to enumerate all solutions (three of them, being `Front = [],Back = [2,3] ; Front = [2],Back = [3] ; Front = [2,3],Back = []')
21:23:51 <Franciman> ok clear
21:24:54 <ski> it's possible to carry around substitutions for the current (if any) value that a variable is instantiated ("bound") to. (note that logic programming separates the introduction ("lexical scope variable binding") of a variable (which is uninstantiated (think "uninitialized"), to begin with), and the instantiation (actually associating it with a value))
21:26:14 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:26:15 <ski> however, implementations that aim for more efficiency tends to use update-in-place to implement variable instantiation. iow, you overwrite the "uninitialized" value. then, when backtracking, the variable goes back again from instantiated state, to uninstantiated (undoing a path taken in the maze, so that you can then explore another path)
21:27:19 <Franciman> ok
21:27:49 <ski> typically, "uninitialized" is a specific bit pattern the tun-time can check for. but it's also possible (with some restrictions in flexibility) to statically track the instantiation state, so that uninstantiation is a no-op (Mercury does this. Prolog systems, afaik, don't do this, except *maybe* occasionally as optimization (not sure if any does this))
21:28:33 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
21:28:53 <ski> anyway, keeping track of which variables you need to uninstantiate, on backtracking, is called "trailing". you're putting out "breadcrumbs" when you proceed, so that if you need to go back your path, you can undo what you did
21:29:25 × euleritian quits (~euleritia@2a02:810a:b00:1568:db91:81d0:5aee:f30f) (Ping timeout: 258 seconds)
21:30:14 euleritian joins (~euleritia@x5271790e.dyn.telefonica.de)
21:30:15 <ski> now, it's not too uncommon for Prolog implementations to have a predicate `forall(Antecedent,Consequent)' (which is slightly a misnomer, as it's a form of implication)
21:31:06 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
21:31:42 <ski> e.g. you could state the query `?- forall(member(P,[2,3,5,7]),prime(P)).', and that would succeed, by generating all solutions (for `P') of `member(P,[2,3,5,7])' (`P' takes on, in turn, the value of each of the elements of the list, on backtracking), and checking that `prime(P)' holds for each solution
21:32:23 <ski> (it's called forall/2, because of the "happy accident" of `P' here acting as if it was implicitly quantified over the whole call)
21:32:25 <Inst> for lists, is there no better version of ( concat . replicate n )?
21:33:33 <ski> can't think of any, Inst
21:33:42 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:34:08 <Franciman> ok ski
21:34:31 <Inst> it's painful with strings
21:34:39 <Inst> foldMap?
21:35:13 caryhartline joins (~caryhartl@168.182.58.169)
21:35:26 <ski> Franciman : anyway, `forall(A,C)' is implemented as `\+ ( A,\+ C )', where `\+' is "negation-as-failure" (a limited form of negation. if you use it outside of its preconditions, it'll generate results that don't follow logic) (and `,' is conjunction)
21:35:42 <ski> (iow `not (a && not c)', in Haskell terms)
21:36:04 <Franciman> \+ is nonmonotonic no?
21:36:15 <ski> by carefully understanding how negation-as-failure works here, one can check that forall/2 indeed works as intended
21:36:55 <ski> however, `\+ G' always either succeeds (once) or fails, but never instantiates any variables. you can't "export" any information from it, apart from this yes/no indication (unless you use side-effects, of course)
21:37:31 <ski> so that directly means that forall/2 can also only be used to check conditions, never as a part of computing your output
21:37:49 <ski> i wanted to lift this restriction !
21:38:07 <Franciman> oh cool
21:39:03 <ski> e.g. consider `?- List = [(2,_),(3,_)],( member((X,Y),List) , square(X,Y) ).', i want this to compute `List = [(2,4),(3,9)]' for me
21:39:08 <ski> er
21:39:13 <ski> e.g. consider `?- List = [(2,_),(3,_)],( member((X,Y),List) => square(X,Y) ).', i want this to compute `List = [(2,4),(3,9)]' for me
21:39:26 <ski> (where `=>' is my syntax, replacing forall/2)
21:39:50 <EvanR> Inst, concat . replicate n is pretty nice ngl
21:40:32 <ski> after the implication goal is done, `X' and `Y' will be uninstantiated. because, after each solution of member/2, we want to uninstantiate them, in preparation for getting the next pair of elements (one initially known/instantiated, and one initially unknown/uninstantiated)
21:40:48 <ski> Inst : i suspect it probably fuses nicely
21:41:33 <ski> however, despite this, somehow the instantiations that `square(X,Y)' makes to `Y' must still survive `X' and `Y' repeatedly getting uninstantiated and reinstantiated
21:42:50 <ski> `Y' will act as a temporary alias of the unknown components of `List', and when square/2 instantiates `Y', it will actually instantiate `List' *through* `Y' (and then the link from `Y' to that component of `List' is broken, but the instantiation remains)
21:44:01 <ski> Franciman : note that, to find a single solution of `( A => C )', we will need to enumerate *every* solution of `A' (until there's no more), and for each of these, spawn a new call of `C' (of which we find one solution)
21:44:18 <Franciman> hence the forall name :P
21:44:23 <Franciman> ok damn cool
21:44:27 <Inst> honestly, might as well go to text in this case :(
21:44:46 <EvanR> :t sconcat
21:44:47 <lambdabot> error:
21:44:47 <lambdabot> • Variable not in scope: sconcat
21:44:47 <lambdabot> • Perhaps you meant one of these:
21:44:56 <ski> we want `List = [(2,_),(3,_)],( member((X,Y),List) => square(X,Y) )' to behave similarly to `List = [(2,Y0),(3,Y1)],square(2,Y0),square(3,Y1)'
21:45:48 <EvanR> :t mconcat . replicate n
21:45:49 <lambdabot> error:
21:45:49 <lambdabot> • Couldn't match expected type ‘Int’ with actual type ‘Expr’
21:45:49 <lambdabot> • In the first argument of ‘replicate’, namely ‘n’
21:46:06 <EvanR> :t mconcat . replicate (n :: Int)
21:46:07 <lambdabot> error:
21:46:07 <lambdabot> • Couldn't match expected type ‘Int’ with actual type ‘Expr’
21:46:07 <lambdabot> • In the first argument of ‘replicate’, namely ‘(n :: Int)’
21:46:25 <EvanR> Inst, it would be basically the same code for Text
21:46:56 <Inst> T.replicate is :: Int -> Text -> Text
21:47:36 alp joins (~alp@2001:861:5e02:eff0:ab69:69ba:52c5:1a83)
21:47:37 <EvanR> there might be fusion for Text too
21:47:40 <EvanR> but yeah
21:48:09 <Inst> https://hoogle.haskell.org/?hoogle=Int%20-%3E%20%5Ba%5D%20-%3E%20%5Ba%5D
21:48:10 <Inst> seriously?
21:48:12 <ski> (there's actually a Prolog predicate, foreach/2, in some Prologs, that does this. but the implementation of this first (a) collects all solutions of the antecedent (*copying* them to a place where they won't be disturbed by uninstantiation), *then* (b) generates corresponding specialized calls of the consequence, one for each solution. but this requires first collecting all solutions (and copying), and only
21:48:12 <EvanR> if you're trying to optimize you probably want Text anyway
21:48:18 <ski> when that's done, do the rest. i don't want this ! i want to naturally interleave these two processes. and i don't want to copy data (which messes up attributed variables, if you have any, which are used for constraint logic programming))
21:48:38 <Inst> people are probably thinking, just replicate foo =<<
21:48:38 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
21:49:15 <Inst> but that provides the wrong behavior, i.e, the resulting list of lists has each individual element dumped back into a list of lists
21:49:34 <EvanR> good, the simpler code has the right behavior
21:49:52 <EvanR> let's be simple and right
21:49:58 <ski> Franciman : now, you can think of backtracking as traversing a tree. alternate branches are alternate paths you can take. going deeper means proceeding forward through conjunctions. after reaching a leaf (solutions), when you go back up in order to go down another branch, this is backtracking (and you uninstantiate variables here)
21:50:46 <ski> Franciman : now, consider the query `?- List = [(_,4),(_,9)],( member((X,Y),List) => square(X,Y) ).'. i want to get *four* solutions here (because each of the two numbers have two square roots)
21:50:58 <Inst> or rather, it works, but the problem is that you end up with the original order not being observed :(
21:51:22 <Inst> concat . replicate it is :(
21:52:12 <ski> Franciman : so, as before, we generate solutions for member/2, and spawn new calls of square/2 for each of them, getting the first solution for `List' in the end. but then, when we backtrack, we need to backtrack the square/2 calls (naturally). conceptually, we have `square(X0,4),square(X1,9)', and we're backtracking the second square/2 call
21:53:12 <ski> Franciman : but to get back to the first square/2 call, we must "backtrack backtracking". make the (single) member/2 call *not* advance to the next solution, but *revisit* an earlier solution (so reinstantiate variables to what they were on a previous search path through the maze/tree)
21:53:58 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
21:54:25 <ski> that's what i mean by "backtrack backtracking"
21:54:28 <ski> it's well known that you can implement backtracking, e.g. for logic programming, with two levels of continuations (`ContT o (ContT p m) a', in Haskell) terms. but to get "backtracking backtracking", i realized that you needed an unbounded number of `ContT' levels
21:55:42 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
21:57:01 × acidjnk quits (~acidjnk@p200300d6e72b933384d06dff6b3ba200.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
21:57:03 <ski> Franciman : makes somewhat more sense, now ?
21:58:09 <Franciman> yup!
21:58:17 <Franciman> sorry i was away
21:58:20 <ski> nw
21:58:31 <Franciman> fun, thanks ski
21:58:31 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:58:35 jinsun_ joins (~jinsun@user/jinsun)
21:58:36 jinsun is now known as Guest9520
21:58:36 × Guest9520 quits (~jinsun@user/jinsun) (Killed (zinc.libera.chat (Nickname regained by services)))
21:58:36 jinsun_ is now known as jinsun
21:59:05 <ski> anyway, i did a prototype (as an EDSL) of this in Haskell, years ago
22:05:00 × chomwitt quits (~chomwitt@2a02:587:7a12:2d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 240 seconds)
22:06:28 <ski> Franciman : i haven't put the code up anywhere public, but if you're curious, i could hand you a tarball of it
22:06:55 <ski> (i already showed it to someone else as well)
22:07:20 <Franciman> would be glad to look at it
22:07:22 <Franciman> thanks
22:08:39 <ski> (i didn't touch the code for years, and then when i was reminded of it (a couple years ago), i couldn't find the last version (that weeded out a few bugs that made my simple tests of implication fail). so it shouldn't be considered as cleaned up)
22:09:46 <ski> (also, when i tried to load it just now, it loads fine with GHC 8.8.4 (adding `-package mtl'), but apparently now not with GHC 9.4.5 ..)
22:11:34 acidjnk joins (~acidjnk@p200300d6e72b93217d79895cb809dcc2.dip0.t-ipconnect.de)
22:12:12 <ski> ok, PMed you a link
22:13:13 <ski> (oh, i should say that i did weed out those bugs again, in this version (after taking some time to read through the code, and try to recall what was the issue))
22:33:00 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
22:34:17 × acidjnk quits (~acidjnk@p200300d6e72b93217d79895cb809dcc2.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
22:34:47 × euleritian quits (~euleritia@x5271790e.dyn.telefonica.de) (Read error: Connection reset by peer)
22:35:05 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
22:36:17 Batzy joins (~quassel@user/batzy)
22:36:38 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:37:20 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3080:2ce:4a2:17)
22:38:37 × _73 quits (~anon_73@2600:4040:5205:d800:21e8:9777:49a5:db28) (Remote host closed the connection)
22:40:08 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
22:41:19 × Cale quits (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Read error: Connection reset by peer)
22:42:05 Sgeo joins (~Sgeo@user/sgeo)
22:42:21 × _xor quits (~xor@72.49.195.41) (Quit: Ping timeout (120 seconds))
22:42:55 _xor joins (~xor@72.49.195.41)
22:45:00 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
22:45:15 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
22:46:42 × zetef_ quits (~quassel@5.2.182.98) (Read error: Connection reset by peer)
22:47:26 zetef joins (~quassel@5.2.182.98)
22:52:00 × zetef quits (~quassel@5.2.182.98) (Ping timeout: 245 seconds)
22:52:48 × michalz quits (~michalz@185.246.207.217) (Remote host closed the connection)
22:54:17 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
22:55:12 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
22:55:12 <Inst> ugh, this is really weird, am i the only user of vty here?
22:55:13 <Inst> :(
22:56:11 <monochrom> There are others. But IRC is dying in general.
22:57:00 <monochrom> There is a Star Trek The Next Generation episode about this feeling. >:)
22:59:30 <Inst> which one?
22:59:33 <tomsmeding> Inst: vty? vty the haskell library?
22:59:41 <Inst> i figured it out, i misread documentation
22:59:56 <tomsmeding> ghcup uses brick which uses vty :p
23:00:08 <Inst> see, that's why I still store data as lists of text or strings
23:00:59 <haskellbridge> 04<z​wro> IRC is dying?
23:01:10 <monochrom> Wesley experiments with something that causes her mother trapped in an alternate bubble universe that keeps shrinking (in both space and history) so people keep disappearing and the natural question is "is it just me?"
23:03:02 × _xor quits (~xor@72.49.195.41) (Read error: Connection reset by peer)
23:04:00 _xor joins (~xor@72.49.195.41)
23:05:07 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 255 seconds)
23:05:28 <EvanR> like the only good Dr Crusher episode
23:05:41 <Inst> finally got it working
23:05:42 <Inst> pfft
23:05:50 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
23:06:10 <EvanR> if only internet bubbles in general would shrink and collapse instead of the other thing
23:06:27 <ski> zwro : "Team Chat" (XKCD comic) <https://xkcd.com/1782/>
23:06:29 <Inst> https://hackage.haskell.org/package/vty-6.0/docs/Graphics-Vty-Image.html#v:text-39-
23:08:12 <Inst> had to some gimmickry with appEndo, and foldmap, though :(
23:08:15 <monochrom> EvanR: Actually they do. Usenet, Geocities, Myspace. Give it time. >:)
23:08:43 <monochrom> Oh and Google Plus haha :(
23:09:09 <EvanR> :(
23:09:23 ski recalls Geocities' sites
23:09:23 <geekosaur> google's a special case since they just randomly kill stuff
23:09:57 <ski> (occasionally, i end up looking up such a site on the Web Archive)
23:10:07 <Inst> but i'm like the onlyp erson who likes using vty directly, right?
23:10:40 <monochrom> I think if you stay up in IRC for a week you will run into the other vty users.
23:11:03 <monochrom> But there are more who were on IRC but left.
23:11:10 <Inst> text' apparently bugs out if you try to use any escape char :(
23:11:52 <EvanR> usually your negative statements ending with ", right?" sound questionable, but this time the negative includes you like using vty. Crazy
23:12:12 <monochrom> Employable people tend to get employed and have no time left for IRC. (So probably also not found on Reddit, Discourse, ...)
23:12:19 <glguy> My IRC client uses vty and I'm always here
23:12:27 <geekosaur> Inst, if vty doesn't know what the escape char is doing (which will be a given since you used it instead of a vty mechanism) it will misrender
23:12:41 <Inst> https://hackage.haskell.org/package/vty-6.0/docs/Graphics-Vty-Image.html#v:text-39-
23:13:10 <geekosaur> well, yes
23:13:54 <Inst> the replacement code i got was using text to generate subimages, then using <-> to contact it together during foldMap
23:14:18 <geekosaur> is text' supposed to include a full terminal emulator so it can deal with your escape sequences?
23:14:40 <glguy> You shouldn't be putting escape sequences in text', only printable stuff
23:15:06 <Inst> but isn't unicode depicted as escape sequences?
23:15:06 × statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Read error: Connection reset by peer)
23:15:10 <glguy> no
23:15:19 statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
23:15:22 caryhartline joins (~caryhartl@168.182.58.169)
23:15:47 Wstfgl0 joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d)
23:15:56 cstml joins (~cstml@user/cstml)
23:16:15 × friendshipaka quits (~Friendshi@user/Friendship) (Remote host closed the connection)
23:16:24 × lhpitn_ quits (~tn@mail.lebenshilfe-pi.de) (Remote host closed the connection)
23:16:35 × Me-me quits (~me-me@user/me-me) (Read error: Connection reset by peer)
23:16:35 friendshipaka joins (~Friendshi@user/Friendship)
23:17:19 lhpitn joins (~tn@mail.lebenshilfe-pi.de)
23:18:35 <EvanR> if your terminal has unicode support then unicode text is comprehended directly
23:18:55 <Inst> yah, it's working, i misunderstood what escape sequences meant in this context
23:19:30 <geekosaur> well, as utf8. but the documentation for text' makes it clear that it's talking about ASCII 27, which introduces terminal control sequences
23:19:51 × Angelz quits (Angelz@2605:6400:30:fc15:9bd1:2217:41cd:bb15) (Ping timeout: 240 seconds)
23:20:15 <Inst> ah, so it'll be able to print any char, but not support \n \t etc...
23:20:30 <geekosaur> right
23:22:09 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
23:22:10 <EvanR> no love for utf-16? xD
23:22:30 <geekosaur> show me a terminal that speaks it
23:22:56 <monochrom> Maybe Windows console counts...
23:23:13 <geekosaur> vty doesn't work there, at least not yet
23:23:19 <monochrom> Also if you write a terminal in Java :)
23:23:35 <glguy> monochrom: vty has windows support released now afaik
23:23:53 <geekosaur> ah
23:24:15 <glguy> I haven't tried using it for anything, but it's in vty 6
23:24:27 <monochrom> But I haven't checked! I am just guessing based on knowing the two major and sole systems that go with 16.
23:25:00 thegman joins (~thegman@072-239-207-086.res.spectrum.com)
23:25:21 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 240 seconds)
23:25:55 <monochrom> Or rather, were early adopters back when Unicode needed only 16 so they chose that and got stuck and are now suffering bait-and-switch.
23:26:12 <EvanR> "In general, Windows PowerShell uses the Unicode UTF-16LE encoding by default"
23:26:17 <exarkun> I am using vty via reflex-vty.
23:26:43 <exarkun> _and_ I also like that star trek episode.
23:26:45 <monochrom> OTOH perhaps it is a consolation that MS is this time on the receiving end of embrace-extend-extinguish >:)
23:26:48 <exarkun> Computer, what is the nature of the universe?
23:27:06 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
23:27:16 <monochrom> don't forget the size of the universe >:)
23:27:30 <monochrom> "it's 1000km across"
23:27:41 <monochrom> or something like that. I forgot the exact number.
23:27:59 <exarkun> The universe is a spheriod region 705 meters in diameter.
23:28:03 <exarkun> spheroid
23:28:16 <EvanR> that must be after it starts to eat the ship, which is bigger than that
23:28:41 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
23:28:43 <exarkun> Of course "spheroid" leaves some wiggle room. You cannot completely describe a spheroid with a single diameter.
23:28:54 <exarkun> It could be highly oblate.
23:29:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:29:18 <ski> the geoid is bumpy
23:29:44 <monochrom> Wait did I make a pun? Console, consolation...
23:30:23 <exarkun> Now I wonder if they share a root.
23:30:49 fendor joins (~fendor@2a02:8388:1640:be00:ca17:ceee:5bbe:1594)
23:31:04 <exarkun> yes! the Latin, consolari, "offer solace, encourage, comfort, cheer,"
23:31:24 <exarkun> when you are feeling bad, go to your computer console to feel better.
23:31:46 <ski> there might be some console-related library called "consolation"
23:31:49 <EvanR> cmd.exe has the opposite effect
23:32:05 <ski> what's the opposite of "console" ?
23:32:10 <exarkun> (though .. probably not.. there's also the Latin, consolidare, "to make solid")
23:32:29 <exarkun> ski: "sole" obviously
23:32:32 <EvanR> heckle? harass?
23:33:27 ski was considering "prosole"
23:33:37 × cstml quits (~cstml@user/cstml) (Quit: WeeChat 3.7.1)
23:34:13 cstml joins (~cstml@cpc151593-shef16-2-0-cust406.17-1.cable.virginm.net)
23:34:35 × cstml quits (~cstml@cpc151593-shef16-2-0-cust406.17-1.cable.virginm.net) (Changing host)
23:34:35 cstml joins (~cstml@user/cstml)
23:34:46 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 258 seconds)
23:36:53 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 260 seconds)
23:39:36 × fendor quits (~fendor@2a02:8388:1640:be00:ca17:ceee:5bbe:1594) (Remote host closed the connection)
23:40:07 <jackdk> gui?
23:41:25 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 255 seconds)
23:41:31 Angelz joins (Angelz@2605:6400:30:fc15:9bd1:2217:41cd:bb15)
23:41:40 <monochrom> graphical consoles >:)
23:43:30 <exarkun> I have been thinking about doing something with tektronix ...
23:45:09 <exarkun> seems there is not yet a haskell library for doing so
23:46:31 × cstml quits (~cstml@user/cstml) (Quit: WeeChat 3.7.1)
23:46:39 × johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in)
23:46:43 × Shock_ quits (~shOkEy@84-236-21-62.pool.digikabel.hu) (Ping timeout: 264 seconds)
23:48:02 Shock_ joins (~shOkEy@87-97-82-186.pool.digikabel.hu)
23:51:48 cstml joins (~cstml@user/cstml)
23:52:53 × cstml quits (~cstml@user/cstml) (Client Quit)
23:53:09 cstml joins (~cstml@user/cstml)
23:55:33 × mechap quits (~mechap@user/mechap) (Ping timeout: 260 seconds)

All times are in UTC on 2023-11-13.