Home liberachat/#haskell: Logs Calendar

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

00:12:36 dcoutts joins (~duncan@net77-43-75-226.mclink.it)
00:13:03 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
00:15:13 shriekingnoise_ joins (~shrieking@186.137.175.87)
00:16:00 × aforemny quits (~aforemny@2001:9e8:6ce4:a700:b6be:fb5b:7ea6:79a3) (Ping timeout: 258 seconds)
00:17:09 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 258 seconds)
00:18:33 × shriekingnoise_ quits (~shrieking@186.137.175.87) (Remote host closed the connection)
00:19:13 aforemny joins (~aforemny@2001:9e8:6cf0:dd00:82d7:c870:ea12:df34)
00:20:13 × dcoutts quits (~duncan@net77-43-75-226.mclink.it) (Ping timeout: 258 seconds)
00:20:24 shriekingnoise joins (~shrieking@186.137.175.87)
00:20:47 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 255 seconds)
00:21:24 × shriekingnoise quits (~shrieking@186.137.175.87) (Client Quit)
00:21:40 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
00:32:29 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds)
00:45:01 <EvanR> if you only want mutable variables you can get away with ST instead of IO
00:45:39 <EvanR> which is a handy way to construct a value with a classic imperative pseudocode algorithm found on wikipedia, then freeze it to be returned to "pure code"
00:57:28 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
00:57:56 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:58:57 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 255 seconds)
00:59:46 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:00:06 Alleria joins (~JohnGalt@user/alleria)
01:00:53 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
01:08:12 × otto_s quits (~user@p5b044495.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
01:09:51 <EvanR> the threaded runtime also has more responsive sleep and wakeup, important for executing within audio deadlines
01:10:05 otto_s joins (~user@p5de2fa05.dip0.t-ipconnect.de)
01:18:05 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
01:33:41 × xff0x quits (~xff0x@ai101218.d.east.v6connect.net) (Ping timeout: 255 seconds)
01:39:24 <kanto> has anyone here read The Haskell Road to Logic, Maths and Programming who thinks highly of it?
01:42:48 aforemny_ joins (~aforemny@i59F516DD.versanet.de)
01:43:24 × aforemny quits (~aforemny@2001:9e8:6cf0:dd00:82d7:c870:ea12:df34) (Ping timeout: 258 seconds)
01:45:13 cpressey joins (~cpressey@host-2-102-14-126.as13285.net)
01:46:52 × vglfr quits (~vglfr@88.155.159.184) (Ping timeout: 248 seconds)
01:47:50 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
01:53:03 mud joins (~mud@user/kadoban)
01:57:31 × cpressey quits (~cpressey@host-2-102-14-126.as13285.net) (Quit: Client closed)
02:00:45 Vajb joins (~Vajb@207.61.167.122)
02:03:39 × euleritian quits (~euleritia@dynamic-046-114-202-144.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
02:03:57 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
02:10:18 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
02:11:43 bilegeek joins (~bilegeek@2600:1008:b046:1e20:2def:8984:9be9:6198)
02:14:25 × td_ quits (~td@i5387091B.versanet.de) (Ping timeout: 255 seconds)
02:15:19 × waleee quits (~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) (Ping timeout: 264 seconds)
02:15:33 × mud quits (~mud@user/kadoban) (Quit: quit)
02:16:13 td_ joins (~td@i53870939.versanet.de)
02:20:00 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:28:50 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:28:50 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:28:50 finn_elija is now known as FinnElija
02:41:49 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
02:48:16 Sgeo joins (~Sgeo@user/sgeo)
02:59:28 sm joins (~sm@plaintextaccounting/sm)
03:00:03 × sm quits (~sm@plaintextaccounting/sm) (Client Quit)
03:05:07 × Vajb quits (~Vajb@207.61.167.122) (Ping timeout: 264 seconds)
03:08:10 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b915:f992:5adb:85e) (Remote host closed the connection)
03:08:26 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
03:09:13 jinsun_ joins (~jinsun@user/jinsun)
03:09:13 jinsun is now known as Guest8599
03:09:14 × Guest8599 quits (~jinsun@user/jinsun) (Killed (silver.libera.chat (Nickname regained by services)))
03:09:14 jinsun_ is now known as jinsun
03:19:12 aforemny joins (~aforemny@2001:9e8:6cc3:2a00:a85b:4589:39bf:9c93)
03:20:07 × aforemny_ quits (~aforemny@i59F516DD.versanet.de) (Ping timeout: 255 seconds)
03:20:54 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
03:30:04 roboguy_ joins (~roboguy_@2605:a601:ac4a:2700:f810:32a3:6ffc:b04a)
03:31:00 × myxos quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Remote host closed the connection)
03:36:57 myyo joins (~myyo@75-166-145-203.hlrn.qwest.net)
03:50:50 <energizer> why is haskell hello world so big compared to other gc languages like golang? https://github.com/MichalStrehovsky/sizegame
03:55:46 vglfr joins (vglfr@gateway/vpn/protonvpn/vglfr)
04:02:23 <energizer> i see https://www.reddit.com/r/haskell/comments/1imfio/why_are_haskell_specifically_ghc_binaries_so_huge/
04:03:00 myxos joins (~myxos@cpe-65-28-251-121.cinci.res.rr.com)
04:07:50 <albet70> between threads, one to write, multiple to read, what should I use? MVar is blocked, not good for this case
04:14:20 × monochrom quits (trebla@216.138.220.146) (Ping timeout: 246 seconds)
04:18:57 monochrom joins (trebla@216.138.220.146)
04:19:41 derpyxdhs joins (~Thunderbi@user/derpyxdhs)
04:21:01 × vglfr quits (vglfr@gateway/vpn/protonvpn/vglfr) (Remote host closed the connection)
04:21:54 vglfr joins (vglfr@gateway/vpn/protonvpn/vglfr)
04:22:31 × myyo quits (~myyo@75-166-145-203.hlrn.qwest.net) ()
04:29:21 michalz joins (~michalz@185.246.207.218)
04:31:58 <c_wraith> energizer: because it's linking in the GHC runtime statically, instead of what C compilers do where they dynamically link to libc.
04:32:59 <energizer> c_wraith: iiuc golang runtime's statically linked too
04:33:10 <c_wraith> it does a lot less than GHC's
04:47:24 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 258 seconds)
04:47:40 × Inst quits (~Inst@120.244.192.250) (Read error: Connection reset by peer)
04:54:04 × vglfr quits (vglfr@gateway/vpn/protonvpn/vglfr) (Ping timeout: 248 seconds)
04:55:23 vglfr joins (~vglfr@88.155.170.213)
04:56:10 takuan joins (~takuan@178-116-218-225.access.telenet.be)
04:56:21 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
04:56:30 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
05:03:08 Square joins (~Square@user/square)
05:03:43 × roboguy_ quits (~roboguy_@2605:a601:ac4a:2700:f810:32a3:6ffc:b04a) (Quit: Leaving...)
05:04:06 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
05:16:14 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
05:18:39 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
05:19:11 euleritian joins (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
05:20:34 × euleritian quits (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
05:20:51 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
05:21:16 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
05:25:22 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
05:25:47 euleritian joins (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
05:29:58 Maxdamantus joins (~Maxdamant@user/maxdamantus)
05:48:31 <haskellbridge> <A​quas> albet70: You may want Control.Concurrent.Chan.Chan
05:58:12 trev joins (~trev@user/trev)
05:58:18 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 256 seconds)
06:00:29 × trev quits (~trev@user/trev) (Client Quit)
06:01:04 trev joins (~trev@user/trev)
06:02:43 × trev quits (~trev@user/trev) (Client Quit)
06:03:01 trev joins (~trev@user/trev)
06:05:43 × ubert quits (~Thunderbi@77.119.220.59.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
06:09:05 × Sanguine_ quits (~Sanguine@176.254.244.83) (Ping timeout: 255 seconds)
06:12:19 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 264 seconds)
06:16:40 × trev quits (~trev@user/trev) (Quit: trev)
06:17:00 kalj joins (~kalj@h-158-174-207-174.NA.cust.bahnhof.se)
06:18:08 × euleritian quits (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
06:18:39 euleritian joins (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
06:21:42 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 258 seconds)
06:23:11 × euleritian quits (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
06:24:04 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
06:24:42 derpyxdhs1 joins (~Thunderbi@user/derpyxdhs)
06:27:00 × derpyxdhs quits (~Thunderbi@user/derpyxdhs) (Ping timeout: 240 seconds)
06:27:00 derpyxdhs1 is now known as derpyxdhs
06:29:00 Square2 joins (~Square4@user/square)
06:30:55 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
06:31:18 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
06:32:18 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 272 seconds)
06:33:29 × Square quits (~Square@user/square) (Ping timeout: 255 seconds)
06:33:33 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
06:33:40 euleritian joins (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
06:34:08 × euleritian quits (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
06:34:28 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
06:36:09 derpyxdhs parts (~Thunderbi@user/derpyxdhs) ()
06:36:33 hugo joins (znc@verdigris.lysator.liu.se)
06:36:44 derpyxdhs joins (~Thunderbi@user/derpyxdhs)
06:43:27 acidjnk_new joins (~acidjnk@p200300d6e72b9391d1b8c4ed720c4872.dip0.t-ipconnect.de)
06:43:33 Ascension joins (~Ascension@176.254.244.83)
06:43:55 fendor joins (~fendor@2a02:8388:1640:be00:aab:1226:f274:5021)
06:46:52 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
06:47:50 euleritian joins (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
06:54:40 sm joins (~sm@plaintextaccounting/sm)
07:04:21 × euleritian quits (~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
07:05:28 rosco joins (~rosco@yp-150-69.tm.net.my)
07:08:25 × rosco quits (~rosco@yp-150-69.tm.net.my) (Client Quit)
07:11:34 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 272 seconds)
07:11:55 dcoutts joins (~duncan@net77-43-75-226.mclink.it)
07:12:12 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:18:05 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
07:18:32 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
07:19:44 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:21:11 gmg joins (~user@user/gehmehgeh)
07:21:29 rosco joins (~rosco@yp-150-69.tm.net.my)
07:33:43 × kalj quits (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Quit: Client closed)
07:33:59 mc47 joins (~mc47@xmonad/TheMC47)
07:36:37 Jackneill joins (~Jackneill@20014C4E1E0E6F003CEC9358C0A0FF0B.dsl.pool.telekom.hu)
07:37:31 vpan joins (~vpan@212.117.1.172)
07:41:39 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
07:46:16 ubert joins (~Thunderbi@77.119.220.44.wireless.dyn.drei.com)
07:47:49 <albet70> v = Right 3; how to use v to get value from 'fromList [(3, 2)]'?
07:50:24 <albet70> fmap (fromList [(3,2)] !) Right 3
07:52:05 chele joins (~chele@user/chele)
07:57:08 <int-e> plausible except that you'll need parentheses around (Right 3)
07:57:16 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
07:57:42 <int-e> :t Right
07:57:43 <lambdabot> b -> Either a b
08:05:46 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
08:12:49 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
08:13:06 hugo joins (znc@verdigris.lysator.liu.se)
08:15:58 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
08:20:20 <albet70> how to concat IO [2] and Right [3]?
08:20:44 <albet70> to get [2,3]
08:21:04 <dminuoso> That (!) and fromList is a bit silly.
08:21:20 <kuribas> albet70: you mean IO [2, 3] ?
08:22:14 <albet70> kuribas , yes, but Right may be Left so EitherT?
08:23:11 <kuribas> liftA2 (++) (pure 2) (pure $ fromRight [] $ Right [3])
08:23:35 notzmv joins (~zmv@user/notzmv)
08:23:36 <kuribas> Depends on how you want to handle Left.
08:24:04 <Unicorn_Princess> what's the point of the other-extensions field in cabal? https://cabal.readthedocs.io/en/stable/cabal-package.html#pkg-field-other-extensions - i can use the {-# LANGUAGE .. #-} pragmas without them, can't I?
08:24:17 <kuribas> liftA2 (++) (pure 2) (either error pure $ Right [3])
08:24:41 <kuribas> well "pure [2]"
08:26:23 <dminuoso> albet70: I recommend starting with just case-of in a sensible way.
08:26:57 <dminuoso> I tend to do something like `r <- case r of Left a -> fail ("failed to get thing: " <> a); Right a -> pure a`
08:27:15 <dminuoso> There's loads of various twists and ideas you can build ontop of this.
08:27:37 <albet70> decode msg :: Right Map Int SockAddr; takeMVar searchMap :: IO Map Int SockAddr; I want concat decode msg into that takeMVar and put it jnto putMVar
08:28:02 <albet70> and only if decode msg is Right then concat
08:28:02 <dminuoso> Like if you do this regularly, you might want some `note :: Either a b -> String -> IO b`
08:28:28 <dminuoso> albet70: Yes, and what if not?
08:28:37 <kuribas> dminuoso: I only use "either" if the cases are simple, as in not a lambda or a complicated composition.
08:28:53 <kuribas> But yeah, a case is recommended for beginners.
08:28:53 <dminuoso> kuribas: Sure. I consider `either` to be a twist on the idea.
08:28:59 <kuribas> right
08:29:03 <dminuoso> I dont like `either` personally *shrugs*
08:29:30 <albet70> dminuoso , do not run takeMVar and putMVar action
08:30:15 <kuribas> fair enough, you could say that many combinators make the code less readable, at only the gain of a few extra characters
08:30:45 <dminuoso> albet70: Yes, and instead do what?
08:31:05 <albet70> dminuoso , nothing else
08:31:13 <dminuoso> Use case-of then.
08:31:18 <dminuoso> Its simple enough and lets you express this idea.
08:32:36 <albet70> right, I already use case-of, I just wonder if no pattern matching is ok too
08:34:51 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
08:35:27 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
08:42:41 Square3 joins (~Square4@user/square)
08:44:01 <albet70> why we can't put IO into other monads?
08:45:01 × Square2 quits (~Square4@user/square) (Ping timeout: 255 seconds)
08:45:53 mokee joins (~mokee@37.228.215.243)
08:46:29 danza joins (~francesco@ge-19-98-133.service.infuturo.it)
08:47:13 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
08:47:39 <albet70> > fmap (+1) $ print 3
08:47:41 <lambdabot> error:
08:47:41 <lambdabot> • No instance for (Num ()) arising from a use of ‘+’
08:47:41 <lambdabot> • In the first argument of ‘fmap’, namely ‘(+ 1)’
08:50:57 <Unicorn_Princess> the result of "print 3" is of type "IO ()", so you're trying to map onto type ()
08:51:00 derpyxdhs parts (~Thunderbi@user/derpyxdhs) ()
08:51:07 derpyxdhs joins (~Thunderbi@user/derpyxdhs)
08:51:21 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:51:46 × derpyxdhs quits (~Thunderbi@user/derpyxdhs) (Quit: derpyxdhs)
08:52:40 × raym quits (~ray@user/raym) (Ping timeout: 255 seconds)
08:58:36 raym joins (~ray@user/raym)
08:58:59 cfricke joins (~cfricke@user/cfricke)
08:59:11 × rosco quits (~rosco@yp-150-69.tm.net.my) (Ping timeout: 255 seconds)
08:59:26 danse-nr3 joins (~francesco@ge-19-98-133.service.infuturo.it)
09:00:55 rosco joins (~rosco@193.138.218.161)
09:01:13 × rosco quits (~rosco@193.138.218.161) (Client Quit)
09:01:54 <albet70> what's the effect of ExceptT e IO a?
09:01:55 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
09:04:30 × raym quits (~ray@user/raym) (Ping timeout: 246 seconds)
09:10:36 raym joins (~ray@user/raym)
09:16:14 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
09:18:52 × bilegeek quits (~bilegeek@2600:1008:b046:1e20:2def:8984:9be9:6198) (Quit: Leaving)
09:19:06 × danza quits (~francesco@ge-19-98-133.service.infuturo.it) (Ping timeout: 260 seconds)
09:24:18 ubert1 joins (~Thunderbi@77.119.205.197.wireless.dyn.drei.com)
09:24:33 × ubert quits (~Thunderbi@77.119.220.44.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
09:24:34 ubert1 is now known as ubert
09:28:23 × ft quits (~ft@p3e9bc680.dip0.t-ipconnect.de) (Quit: leaving)
09:40:16 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
09:42:34 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
09:46:43 mikoto-chan joins (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
09:47:53 × chele quits (~chele@user/chele) (Ping timeout: 246 seconds)
09:49:24 rosco joins (~rosco@yp-150-69.tm.net.my)
09:53:20 lg188 joins (~lg188@82.18.98.230)
09:53:33 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
09:54:09 <albet70> I got it, traverse (IO a) (Right a)
09:56:17 <albet70> traverse (\a -> (fmap (<> a) (takeMVar searchMap)) >>= putMVar searchMap) $ Right fromList [(2,3)]
09:56:41 <dminuoso> albet70: For the same reason you cant put apples into boxes of oranges.
09:56:56 <dminuoso> Different things.
09:57:03 <dminuoso> The reason is quite simple
09:57:06 <dminuoso> :t (>>=)
09:57:07 <lambdabot> Monad m => m a -> (a -> m b) -> m b
09:57:30 <albet70> dminuoso , why this code worked?
09:57:38 <dminuoso> This demands that both monads be the *same* type (because both occurences of `m` in argument position are the same m)
09:58:03 <dminuoso> albet70: ExceptT is a monad transformer, which imbues the effect of one monad to another monad in some sensible fashion.
09:59:04 <albet70> in (\a ...) the m is IO
09:59:08 <albet70> not Right
10:00:05 <dminuoso> albet70: oh thats something else
10:00:10 <dminuoso> :t traverse
10:00:11 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
10:00:39 chele joins (~chele@user/chele)
10:01:24 × califax quits (~califax@user/califx) (Ping timeout: 256 seconds)
10:01:32 <dminuoso> albet70: `traverse` generalizes loops, and `Either a` is sort of like a `list with either no element and an error, or an element`
10:01:37 <dminuoso> If that helps
10:02:15 diamond joins (~user@89.223.35.3)
10:02:43 <albet70> traverse or fmap will not run on Left branch, on the Right branch, like only if then no else
10:03:27 <albet70> no case-of need for Right _ or Left _
10:04:13 × mikoto-chan quits (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 252 seconds)
10:04:15 <dminuoso> albet70: It's ultimately case-of inside.
10:04:29 <dminuoso> Like I said: There's various twists and ideas that all eventually build upon case-of.
10:04:45 <dminuoso> (Though I guess this could be said about every binding in haskell)
10:06:58 × chomwitt quits (~chomwitt@2a02:587:7a17:8900:1ac0:4dff:fedb:a3f1) (Ping timeout: 252 seconds)
10:07:29 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 258 seconds)
10:23:34 × ThePenguin quits (~ThePengui@cust-95-80-24-166.csbnet.se) (Ping timeout: 255 seconds)
10:26:33 ThePenguin joins (~ThePengui@cust-95-80-24-166.csbnet.se)
10:45:17 <rosco> new to haskell, i've heard that managing packages like stack or ghc with pacman is a mess, should i install these using ghcup?
10:46:10 <sshine> rosco, using stack or cabal instead of pacman, yes
10:46:20 <sshine> rosco, both stack and cabal can be installed with ghcup
10:46:58 <sshine> rosco, if you install stack or cabal with pacman, you can use stack or cabal to install itself locally.
10:47:32 <sshine> rosco, then you'll have two binaries, one being an old one in /usr and another being a new one in ~
10:48:07 <rosco> did the standard install with ghcup, seems to work fine! thanks
10:49:36 <rosco> now i don't have to install 150+ haskell libs just for stack, that's a relief
10:51:29 <sshine> since both stack and cabal-install use Cabal, the library, I would have thought that they share library source code, but maybe I'm just thinking of a nice possible future.
10:51:58 azimut joins (~azimut@gateway/tor-sasl/azimut)
10:52:41 <sshine> I ran out of disk space recently with Rust because the build directory has copies of all dependencies and their build artifacts, rather than symlink them. I'm not sure why this was never a problem with Haskell.
10:53:20 <sshine> too many pet projects with too many architectures and compiler versions
10:53:41 <sshine> (also, my disk partition is too small to begin with.)
10:59:13 <haskellbridge> <s​m> stack and cabal share installed haskell libs across your haskell projects, but not across ghc versions or each other
11:00:03 <haskellbridge> <s​m> I've noticed cargo seems to rebuild absolutely everything in each project, and even if you build again in the same project
11:06:21 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
11:08:02 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
11:08:09 <hpc> for extra fun, run "cargo vendor"
11:08:23 euleritian joins (~euleritia@dynamic-046-114-201-015.46.114.pool.telefonica.de)
11:08:54 × euleritian quits (~euleritia@dynamic-046-114-201-015.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
11:09:13 xff0x joins (~xff0x@2405:6580:b080:900:235e:1e4f:5a95:dd4d)
11:09:56 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
11:12:17 Vajb joins (~Vajb@207.61.167.122)
11:12:59 × thegeekinside quits (~thegeekin@189.180.124.118) (Ping timeout: 245 seconds)
11:17:09 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
11:19:04 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
11:19:32 arahael joins (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
11:27:11 Tlsx joins (~rscastilh@187.40.125.21)
11:35:04 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:38:43 × xff0x quits (~xff0x@2405:6580:b080:900:235e:1e4f:5a95:dd4d) (Ping timeout: 258 seconds)
11:39:07 xff0x joins (~xff0x@ai101218.d.east.v6connect.net)
11:45:47 × Tlsx quits (~rscastilh@187.40.125.21) ()
11:53:34 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
11:55:58 × danse-nr3 quits (~francesco@ge-19-98-133.service.infuturo.it) (Read error: Connection reset by peer)
11:56:07 danse-nr3 joins (~francesco@151.43.111.89)
12:01:11 falafel joins (~falafel@143.244.47.73)
12:01:31 sabino joins (~sabino@user/sabino)
12:05:14 × Vajb quits (~Vajb@207.61.167.122) (Read error: Connection reset by peer)
12:05:25 Vajb joins (~Vajb@207.61.167.122)
12:09:27 × Vajb quits (~Vajb@207.61.167.122) (Ping timeout: 240 seconds)
12:12:22 × danse-nr3 quits (~francesco@151.43.111.89) (Ping timeout: 252 seconds)
12:18:51 Inst joins (~Inst@120.244.192.250)
12:19:55 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
12:20:38 × vglfr quits (~vglfr@88.155.170.213) (Read error: Connection reset by peer)
12:20:58 vglfr joins (vglfr@gateway/vpn/protonvpn/vglfr)
12:29:16 stites joins (~stites@130.44.147.204)
12:29:36 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
12:29:55 Vajb joins (~Vajb@207.61.167.122)
12:30:05 × vglfr quits (vglfr@gateway/vpn/protonvpn/vglfr) (Ping timeout: 258 seconds)
12:32:08 vglfr joins (~vglfr@88.155.170.213)
12:33:11 falafel_ joins (~falafel@62.175.113.194.dyn.user.ono.com)
12:34:36 simendsjo joins (~user@84.211.91.241)
12:35:29 × falafel quits (~falafel@143.244.47.73) (Ping timeout: 245 seconds)
12:36:46 × Vajb quits (~Vajb@207.61.167.122) (Ping timeout: 255 seconds)
12:37:45 mikoto-chan joins (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
12:41:50 CiaoSen joins (~Jura@2a05:5800:2cf:a000:664b:f0ff:fe37:9ef)
12:42:06 <Unicorn_Princess> what does the last line do in "import Data.Text as T; default (T.Text);"? doesn't really fit with how 'default' is described on https://wiki.haskell.org/Keywords
12:42:36 <Unicorn_Princess> i mean it -looks- like it exports T.Text to just Text, but i'd like to know for surer
12:43:10 <Unicorn_Princess> oh wait i'm missing a 'qualified'
12:43:12 × vglfr quits (~vglfr@88.155.170.213) (Ping timeout: 255 seconds)
12:43:37 <mauke> that is indeed a default declaration as described on the wiki
12:43:54 <int-e> Unicorn_Princess: that import form exists; it combines both `import Data.Text` and `import qualified Data.Text as T`
12:44:40 <mauke> https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/overloaded_strings.html
12:45:09 <Unicorn_Princess> ah i see
12:45:18 <Unicorn_Princess> or will see, once i digest this, maybe
12:46:42 <mauke> :t 42
12:46:43 __monty__ joins (~toonn@user/toonn)
12:46:43 <lambdabot> Num p => p
12:46:43 <int-e> So when it's looking for an `IsString` instance it'll prefer T.Text = Data.Text.Text when the type would otherwise be ambiguous.
12:46:53 <mauke> this is a polymorphic type
12:46:56 <mauke> > 42
12:46:58 <lambdabot> 42
12:47:31 <mauke> normally this would be a type error ("ambiguous type"), but ghc applies defaulting rules to get Integer
12:48:10 <mauke> OverloadedStrings extends this polymorphism to string literals, which in standard haskell always have type String
12:48:22 <Unicorn_Princess> right right, so default(T) prioritizes T when resolving ambiguities
12:48:44 <Unicorn_Princess> and this only happens for numbers and strings
12:48:53 <mauke> yes, it's a bit of a hack
12:49:03 <Unicorn_Princess> i can live with it
12:49:05 <mauke> also, you can list multiple types in order of preference
12:49:06 × diamond quits (~user@89.223.35.3) (Ping timeout: 260 seconds)
12:49:17 <mauke> the first matching type is chosen
12:49:32 <mauke> > 42 + 0.0
12:49:35 <lambdabot> 42.0
12:49:47 <mauke> here 42 gets defaulted to Double, not Integer
12:51:30 <Unicorn_Princess> thanks, that clears it all up
12:52:14 diamond joins (~user@89.223.35.3)
13:03:33 <Unicorn_Princess> > Haddock are a member of the cod family, but they are smaller than Atlantic cod.
13:03:34 <lambdabot> <hint>:1:22: error: parse error on input ‘of’
13:03:40 <Unicorn_Princess> well that's good to know lol
13:05:35 waleee joins (~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c)
13:14:21 × _xor quits (~xor@72.49.199.93) (Quit: Ping timeout (120 seconds))
13:14:59 _xor joins (~xor@72.49.199.93)
13:18:39 vglfr joins (~vglfr@88.155.170.213)
13:24:33 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
13:28:16 <Unicorn_Princess> hm, so how should i be working with Data.Text? e.g. is there a Text version of Show, or a version of ++ that's shorter than `append`, etc?
13:29:49 <__monty__> Unicorn_Princess: Yes, `mappend`.
13:30:11 <__monty__> (That is spelled `<>` as an operator, sorry for being facetious : > )
13:30:21 Guest45 joins (~Guest45@ext-1-173.eduroam.chalmers.se)
13:30:35 <Guest45> Hi! Is there a way to make sure that a core plugin is executed after all the optimizations have taken place?
13:31:08 <Guest45> I want to inspect core just before it is handed off to the code generator
13:31:18 <Unicorn_Princess> __monty__, oh, thanks! totally forgot about monoids!
13:36:47 × falafel_ quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 258 seconds)
13:37:00 sm joins (~sm@plaintextaccounting/sm)
13:41:44 × myxos quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Remote host closed the connection)
13:42:46 × arahael quits (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 260 seconds)
13:47:45 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
13:48:08 ChaiTRex joins (~ChaiTRex@user/chaitrex)
13:48:55 × waleee quits (~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) (Ping timeout: 264 seconds)
13:57:23 danse-nr3 joins (~francesco@151.43.111.89)
13:57:33 Guest|16 joins (~Guest|16@i5387A4AF.versanet.de)
13:57:56 × Guest|16 quits (~Guest|16@i5387A4AF.versanet.de) (Client Quit)
14:00:28 × mikoto-chan quits (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 255 seconds)
14:02:03 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
14:05:54 × Cale quits (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
14:09:10 × rosco quits (~rosco@yp-150-69.tm.net.my) (Read error: Connection reset by peer)
14:16:24 × simendsjo quits (~user@84.211.91.241) (Remote host closed the connection)
14:17:36 simendsjo joins (~user@84.211.91.241)
14:24:01 × Alleria quits (~JohnGalt@user/alleria) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:28:58 thegeekinside joins (~thegeekin@189.180.124.118)
14:39:14 mikoto-chan joins (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
14:41:41 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
14:43:43 Sgeo joins (~Sgeo@user/sgeo)
14:46:22 × Inst quits (~Inst@120.244.192.250) (Read error: Connection reset by peer)
14:50:03 × puke quits (~puke@user/puke) (Remote host closed the connection)
14:50:22 puke joins (~puke@user/puke)
14:51:17 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
14:51:48 × puke quits (~puke@user/puke) (Excess Flood)
14:52:15 puke joins (~puke@user/puke)
14:57:19 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
14:58:06 gmg joins (~user@user/gehmehgeh)
14:58:18 × stites quits (~stites@130.44.147.204) (Read error: Connection reset by peer)
14:58:33 stites joins (~stites@130.44.147.204)
15:01:00 wombat8756 joins (~user@cpe-74-65-214-231.nyc.res.rr.com)
15:01:10 Alleria joins (~JohnGalt@user/alleria)
15:03:02 × stites quits (~stites@130.44.147.204) (Ping timeout: 258 seconds)
15:03:34 stites joins (~stites@2607:fb91:de5:5d85:fe03:1608:5962:585c)
15:08:16 billchenchina joins (~billchenc@2a0c:b641:7a2:230::10)
15:09:37 × Alleria quits (~JohnGalt@user/alleria) (Quit: Textual IRC Client: www.textualapp.com)
15:15:18 × Guest45 quits (~Guest45@ext-1-173.eduroam.chalmers.se) (Ping timeout: 258 seconds)
15:19:28 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
15:19:33 Inst joins (~Inst@120.244.192.250)
15:19:43 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
15:23:11 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds)
15:23:32 × EvanR quits (~EvanR@user/evanr) (Remote host closed the connection)
15:23:38 × chele quits (~chele@user/chele) (Remote host closed the connection)
15:23:50 EvanR joins (~EvanR@user/evanr)
15:25:54 elevenkb parts (elevenkb@thunix.net) (ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.1))
15:29:28 rosco joins (~rosco@yp-150-69.tm.net.my)
15:30:06 × billchenchina quits (~billchenc@2a0c:b641:7a2:230::10) (Quit: Leaving)
15:32:45 Kuttenbrunzer joins (~Kuttenbru@2a02:8108:8b80:1d48::eb0a)
15:32:59 × CiaoSen quits (~Jura@2a05:5800:2cf:a000:664b:f0ff:fe37:9ef) (Ping timeout: 246 seconds)
15:33:12 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
15:35:57 × alphacentauri quits (alphacenta@gateway/vpn/protonvpn/alphacentauri) (Quit: WeeChat 4.1.0)
15:43:36 × jinsun quits (~jinsun@user/jinsun) (Quit: No Ping reply in 180 seconds.)
15:45:02 jinsun joins (~jinsun@user/jinsun)
15:46:38 × danse-nr3 quits (~francesco@151.43.111.89) (Remote host closed the connection)
15:47:00 danse-nr3 joins (~francesco@151.43.111.89)
15:50:57 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 258 seconds)
15:51:04 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
15:51:15 diamond parts (~user@89.223.35.3) (ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.1))
15:55:58 cpressey joins (~cpressey@host-92-10-146-234.as13285.net)
15:56:35 danse-nr3_ joins (~francesco@ge-19-101-218.service.infuturo.it)
15:57:40 × danse-nr3 quits (~francesco@151.43.111.89) (Read error: Connection reset by peer)
16:03:40 × stites quits (~stites@2607:fb91:de5:5d85:fe03:1608:5962:585c) (Read error: Connection reset by peer)
16:04:02 stites joins (~stites@2607:fb91:de5:5d85:fe03:1608:5962:585c)
16:05:58 × stites quits (~stites@2607:fb91:de5:5d85:fe03:1608:5962:585c) (Read error: Connection reset by peer)
16:06:17 stites joins (~stites@155.33.134.28)
16:12:56 × Kuttenbrunzer quits (~Kuttenbru@2a02:8108:8b80:1d48::eb0a) (Quit: Where is it)
16:16:33 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
16:19:39 × wombat8756 quits (~user@cpe-74-65-214-231.nyc.res.rr.com) (Ping timeout: 245 seconds)
16:22:59 × danse-nr3_ quits (~francesco@ge-19-101-218.service.infuturo.it) (Ping timeout: 255 seconds)
16:30:47 danse-nr3_ joins (~francesco@ge-19-101-218.service.infuturo.it)
16:34:06 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 256 seconds)
16:34:12 × paddymahoney quits (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
16:35:28 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
16:36:01 myxos joins (~myxos@cpe-65-28-251-121.cinci.res.rr.com)
16:38:57 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
16:44:25 × vpan quits (~vpan@212.117.1.172) (Quit: Leaving.)
16:45:02 Cale joins (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com)
16:48:39 × mikoto-chan quits (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 240 seconds)
16:50:38 billchenchina joins (~billchenc@39.144.222.56)
16:52:49 billchenchina- joins (~billchenc@2a0c:b641:7a2:230::10)
16:53:52 sm joins (~sm@plaintextaccounting/sm)
16:55:31 × billchenchina quits (~billchenc@39.144.222.56) (Ping timeout: 255 seconds)
16:57:08 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
16:58:42 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
17:03:31 × sabino quits (~sabino@user/sabino) (Quit: Lambda _ -> x)
17:04:59 × billchenchina- quits (~billchenc@2a0c:b641:7a2:230::10) (Remote host closed the connection)
17:05:18 billchenchina- joins (~billchenc@2a0c:b641:7a2:230::10)
17:08:08 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
17:08:19 sabino joins (~sabino@user/sabino)
17:12:17 × krei-se quits (~krei-se@p50874770.dip0.t-ipconnect.de) (Quit: ZNC 1.8.2 - https://znc.in)
17:12:36 krei-se joins (~krei-se@p50874770.dip0.t-ipconnect.de)
17:13:52 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 272 seconds)
17:31:21 hugo joins (znc@verdigris.lysator.liu.se)
17:32:35 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
17:34:35 × td_ quits (~td@i53870939.versanet.de) (Ping timeout: 240 seconds)
17:34:36 × danse-nr3_ quits (~francesco@ge-19-101-218.service.infuturo.it) (Ping timeout: 240 seconds)
17:34:45 Simikando joins (~Simikando@adsl-dyn158.91-127-59.t-com.sk)
17:35:24 td_ joins (~td@i53870930.versanet.de)
17:41:30 mikoto-chan joins (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
17:42:50 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds)
17:43:05 × rosco quits (~rosco@yp-150-69.tm.net.my) (Quit: Lost terminal)
17:49:21 × migas9 quits (~migas@static.140.65.63.178.clients.your-server.de) (Remote host closed the connection)
17:49:39 migas9 joins (~migas@static.140.65.63.178.clients.your-server.de)
18:04:04 danza joins (~francesco@ge-19-101-218.service.infuturo.it)
18:07:17 × cpressey quits (~cpressey@host-92-10-146-234.as13285.net) (Quit: Client closed)
18:08:06 hugo joins (znc@verdigris.lysator.liu.se)
18:10:39 × billchenchina- quits (~billchenc@2a0c:b641:7a2:230::10) (Remote host closed the connection)
18:11:57 × statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Read error: Connection reset by peer)
18:12:09 statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
18:12:24 biberu\ joins (~biberu@user/biberu)
18:14:42 × qqq quits (~qqq@92.43.167.61) (Quit: leaving)
18:15:37 × biberu quits (~biberu@user/biberu) (Ping timeout: 255 seconds)
18:15:38 biberu\ is now known as biberu
18:22:24 × Simikando quits (~Simikando@adsl-dyn158.91-127-59.t-com.sk) (Quit: Leaving)
18:23:38 × td_ quits (~td@i53870930.versanet.de) (Quit: waking up from the american dream ...)
18:26:52 × mikoto-chan quits (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 255 seconds)
18:34:56 × Square3 quits (~Square4@user/square) (Ping timeout: 272 seconds)
18:39:31 aoliver joins (~aoliver@47.red-83-59-7.dynamicip.rima-tde.net)
18:39:34 × danza quits (~francesco@ge-19-101-218.service.infuturo.it) (Ping timeout: 252 seconds)
18:40:41 danza joins (~francesco@ge-19-101-218.service.infuturo.it)
18:41:43 aoliver parts (~aoliver@47.red-83-59-7.dynamicip.rima-tde.net) ()
18:42:11 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
18:43:07 td_ joins (~td@i53870930.versanet.de)
18:53:18 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
19:00:32 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
19:01:22 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
19:01:31 alphacentauri joins (alphacenta@gateway/vpn/protonvpn/alphacentauri)
19:02:46 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
19:08:15 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
19:10:34 × mokee quits (~mokee@37.228.215.243) (Quit: off)
19:19:36 Square joins (~Square@user/square)
19:33:31 CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
19:34:46 moni_ joins (~moni@cpe-174-106-185-141.ec.res.rr.com)
19:35:18 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
19:40:10 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Ping timeout: 272 seconds)
19:44:34 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
19:46:02 lortabac joins (~lortabac@185.238.219.63)
19:50:43 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 264 seconds)
19:56:09 danza_ joins (~francesco@151.57.117.212)
19:58:08 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:58:28 ft joins (~ft@p3e9bc680.dip0.t-ipconnect.de)
19:58:49 × danza quits (~francesco@ge-19-101-218.service.infuturo.it) (Ping timeout: 255 seconds)
20:01:37 mikoto-chan joins (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
20:03:03 × danza_ quits (~francesco@151.57.117.212) (Ping timeout: 240 seconds)
20:05:36 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
20:06:18 hugo joins (znc@verdigris.lysator.liu.se)
20:10:03 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
20:10:19 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
20:12:45 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
20:13:42 × stefan-__ quits (~m-ohzqow@42dots.de) (Remote host closed the connection)
20:14:07 stefan-__ joins (~m-ohzqow@42dots.de)
20:17:22 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 258 seconds)
20:19:00 × stefan-__ quits (~m-ohzqow@42dots.de) (Remote host closed the connection)
20:19:26 stefan-__ joins (~m-ohzqow@42dots.de)
20:23:52 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:24:19 × stefan-__ quits (~m-ohzqow@42dots.de) (Remote host closed the connection)
20:24:58 stefan-__ joins (~m-ohzqow@42dots.de)
20:26:16 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
20:28:45 × lortabac quits (~lortabac@185.238.219.63) (Quit: WeeChat 2.8)
20:30:04 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
20:30:27 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
20:35:50 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
20:41:44 × simendsjo quits (~user@84.211.91.241) (Ping timeout: 255 seconds)
20:42:23 × Jackneill quits (~Jackneill@20014C4E1E0E6F003CEC9358C0A0FF0B.dsl.pool.telekom.hu) (Ping timeout: 246 seconds)
20:46:06 Pickchea joins (~private@user/pickchea)
20:48:28 waleee joins (~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c)
20:50:44 × moni_ quits (~moni@cpe-174-106-185-141.ec.res.rr.com) (Ping timeout: 255 seconds)
20:50:58 moni joins (~moni@cpe-174-106-185-141.ec.res.rr.com)
21:04:03 <haskellbridge> <C​elestial> I'm pretty sure `mappend` is discouraged right?
21:04:29 <geekosaur> huh?
21:04:37 <haskellbridge> <C​elestial> because it's just a relic from the time where we didn't have semigroups and so nowadays it should never be anything different from `<>`
21:04:46 <haskellbridge> <C​elestial> atleast i read that in the docs somewhere I think
21:04:48 <haskellbridge> <I​nst> mappend vs sappend (iirc) vs <>
21:05:34 <haskellbridge> <C​elestial> > NOTE: This method is redundant and has the default implementation mappend = (<>) since base-4.11.0.0. Should it be implemented manually, since mappend is a synonym for (<>), it is expected that the two functions are defined the same way. In a future GHC release mappend will be removed from Monoid.
21:05:57 <haskellbridge> <C​elestial> It even seems to be marked as near-deprecated
21:06:26 <monochrom> Those who have learned from history know that "in a future release" means at least 10 years away. :)
21:06:35 <tomsmeding> Celestial: mappend will probably never be removed, but it might be removed _from the Monoid class_
21:06:47 <tomsmeding> it might be lifted out of the class to a top-level method that just calls (<>)
21:06:52 <haskellbridge> <C​elestial> right, that makes sense
21:07:02 <monochrom> Yeah, near-deprecated means 15 years, deprecated means 10 years, obsoleted means 5 years.
21:07:19 <tomsmeding> in a slow-moving thing like 'base', in any case
21:07:25 <haskellbridge> <C​elestial> the same way `return` will.be eventually removed from `Monad`?
21:07:30 <tomsmeding> in the JS world, replace "years" by "months" or less
21:07:37 <tomsmeding> "eventually", yes
21:07:47 <tomsmeding> even worse than "soon (tm)"
21:07:48 <monochrom> As an example, people decided to relocate "return" way before COVID. It still hasn't been moved.
21:08:15 <tomsmeding> do we now have an era-based time reckoning system based on pandemics?
21:08:42 <Rembane> That's ominous
21:09:32 <haskellbridge> <C​elestial> Are you not in the year 104 PSF? (Post Spanish Flu)
21:09:46 <monochrom> As another example, {-# OPTIONS #-} was deprecated in favour of {-# OPTIONS_GHC #-}. That was like 10-15 years ago already.
21:12:25 hugo joins (znc@verdigris.lysator.liu.se)
21:12:27 <monochrom> Personally I prefer <>, but not because I fear "deprecation" etc. I couldn't care less. But <> has been set up to be way more convenient in multiple ways.
21:12:47 <monochrom> For starters, it is a really nice and short infix notation.
21:13:33 <EvanR> the anti-operator crowd hates this
21:13:44 <EvanR> for some reason
21:13:55 <tomsmeding> % a ⋄ b = a <> b
21:13:56 <yahb2> <no output>
21:15:41 <monochrom> Well I am not extremist or religious about symbolic operators either. 55% of the time I prefer fmap to <$> for example.
21:16:15 <EvanR> yes I often can't bring myself to use <$> just because I can
21:16:19 × Square quits (~Square@user/square) (Ping timeout: 252 seconds)
21:16:24 × thegeekinside quits (~thegeekin@189.180.124.118) (Ping timeout: 258 seconds)
21:16:30 <monochrom> But every language has accepted to use a symbolic infix operator for string concatenation for example. <> is not out of the norm.
21:16:32 <EvanR> fmap is more obviously fmapping to me
21:18:23 <haskellbridge> <C​elestial> I like <$> when it's the only term in something paranthesised
21:18:29 <monochrom> And unlike Python, we actually have div and mod being alphabetical instead of symbolic.
21:18:36 <haskellbridge> <C​elestial> `foo (f <$> x)`
21:18:49 <monochrom> So anti-operator haters can bring their hate to Python instead, first and foremost.
21:22:06 <EvanR> foo (fmap f x)
21:22:18 <EvanR> shift key conservation
21:22:47 <EvanR> and less likely to trigger the anti-operator crowd
21:23:21 <haskellbridge> <C​elestial> we should start having half operators half named functions
21:23:28 <haskellbridge> <C​elestial> `<fm$ap>`
21:23:29 <monochrom> Often I like "a b <$> c d <*> e f" because it is fewer parentheses. But this is dangerously close to "use <$> to get rid of parentheses". :)
21:23:38 <haskellbridge> <C​elestial> `<mappend>`
21:24:08 <monochrom> Oooohhh that is giving me ideas...
21:25:18 × fendor quits (~fendor@2a02:8388:1640:be00:aab:1226:f274:5021) (Remote host closed the connection)
21:25:43 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:26:28 <monochrom> > let ᐸfᐳ = even in map ᐸfᐳ [3,4]
21:26:30 <lambdabot> [False,True]
21:27:26 <EvanR> what
21:27:42 <tomsmeding> :t let fm = flip (.) pure in (fm$ap)
21:27:42 <lambdabot> Monad m => (a -> b) -> m a -> m b
21:29:14 <tomsmeding> :t let fm = flip fmap pure in (fm$ap)
21:29:15 <lambdabot> Monad m => (a -> b) -> m a -> m b
21:29:30 <tomsmeding> :t let fm = fmap `flip` pure in (fm$ap)
21:29:31 <lambdabot> Monad m => (a -> b) -> m a -> m b
21:29:53 <tomsmeding> >:)
21:30:42 <monochrom> Cf. https://twitter.com/mosheroperandi/status/856946180810354688 :)
21:31:11 <tomsmeding> obviously
21:31:41 <tomsmeding> just 12 points? that be an old screenshot
21:32:11 <EvanR> twitter. Old school
21:32:30 <EvanR> do you also have a betamax player
21:32:36 × michalz quits (~michalz@185.246.207.218) (Ping timeout: 240 seconds)
21:33:13 <monochrom> My family did. :)
21:33:37 <monochrom> Our first video tape machine was Betamax.
21:33:50 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
21:36:05 × stites quits (~stites@155.33.134.28) (Ping timeout: 240 seconds)
21:36:56 stites joins (~stites@2607:fb91:de8:94ca:cd75:d180:a559:e9f9)
21:38:49 <Inst> hmmm, could I ask a quick question about rank 2 types?
21:39:38 <Inst> basically, rank2 just requires that the function being used has to be fully polymorphic, right?
21:40:18 <monochrom> That is very botched wording, but yes.
21:42:16 <Inst> Please help me out by indicating why it is botched wording?
21:42:47 <monochrom> Instead: an argument has to be fully polymorphic
21:44:07 <Inst> runST :: (forall s. ST s a) -> a
21:44:18 × stites quits (~stites@2607:fb91:de8:94ca:cd75:d180:a559:e9f9) (Ping timeout: 272 seconds)
21:44:24 <monochrom> "the" makes no sense. If I have "(forall a. a -> a) -> Bool", there is an outer function "(forall a. a -> a) -> Bool", and there is an inner funciton "forall a. a -> a". Which one is "the" function?
21:44:33 <Inst> in this case, the value of type ST s a cannot lock s to be a specific type
21:45:02 <EvanR> when runST is used, the choice of a is made
21:45:16 <EvanR> inside runST, the choice of s is made
21:45:23 <EvanR> or can be
21:45:51 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
21:45:59 <EvanR> or it could be passed to another rank 2 function
21:46:31 <Inst> wait, is it possible to have a value such that
21:46:42 <Inst> foo :: (forall a. a)
21:46:50 <EvanR> :t undefined
21:46:51 <lambdabot> a
21:46:54 <monochrom> It can only be bottom.
21:46:56 <Inst> or, actually, this should reduce because it's a non-function value, right?
21:47:18 <monochrom> There is a proof by free theorems or parametricity.
21:47:19 <EvanR> Maybe a doesn't reduce
21:47:35 <EvanR> what would it reduce to
21:47:49 <Inst> i mean, foo :: (forall a. a) is equivalent to foo :: forall a. a, right?
21:48:03 <EvanR> all you did was take away unnecessary parens
21:48:04 <Inst> and of course only undefined can satisfy this, or some other bottom
21:48:41 <monochrom> "reduce" is not relevant for why forall a. a can only be bottom.
21:49:54 <monochrom> In fact, normally, evaluation is way after type erasure, there is no longer any type consideration at all.
21:50:36 <Inst> but in haskell's type system, I can't have, say, and the State is intentional
21:50:37 <monochrom> So the flip side is that evaluation tells you nothing about types.
21:51:10 <Inst> State (forall s. s) a, or StateT (for all s. s) Identity a?
21:52:12 <monochrom> Have you tried?
21:52:24 <Inst> yeah, i'm asking too much, thanks
21:52:58 <monochrom> In fact, have you tried with ImpredicativeTypes enabled?
21:54:29 <Inst> whoa, this typechecks
21:54:39 <Inst> but in the example shown above, this is a rank 2 type?
21:54:58 <Inst> and the hypothesis that rank 2 types only exist in function types is hereby falsified, methinks
21:56:17 <EvanR> if there was a non-bottom value of type forall a . a, then it would have the type Char and the type Int if I so desire. No such common Char-Int exists by virtue of Char and Int being defined separately and independently from each other
21:57:31 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
21:57:43 <EvanR> or by virtue of just checking all the Char and Int
21:57:52 <Inst> What the actual context is, I stumbled across a usage of rank 2 types in defining a function, and I'm just trying to confirm that what it means is that its argument of rank 2 type cannot assert its own type for the type variable under forall, but must instead be polymorphic and allow the calling function to determine the type
21:58:08 <Inst> I'm just trying to make sure I understand it, and thanks
22:00:59 <EvanR> Inst, read this https://wiki.haskell.org/Impredicative_types
22:01:26 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
22:01:54 <monochrom> Right, the argument cannot assert its own type.
22:03:12 <monochrom> As in, if "f :: (forall a. a -> a) -> Whatever", I cannot use it like "f not" which would assert a=Bool.
22:03:36 <EvanR> without imperedicative types, rank 2 polymorphism only comes up when forall is nested in the left side of ->
22:04:08 <EvanR> with impredicative types, it's a free-for-all
22:04:55 <EvanR> free forall?
22:05:51 <monochrom> :)
22:06:39 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:06:46 <geekosaur> forall free.
22:06:53 <monochrom> It is not free! You have to accept Quick Look (shallow subsumption), which gives type errors for some old code.
22:07:31 <Unicorn_Princess> still trying to use ghci(+shelly) as my shell - how can i keep modules loaded while i change working dir? :cd unloads them, and shelly $ cd ".." only has effect within the shelly monad
22:08:00 <Unicorn_Princess> i.e. i can't shelly $ cd, enter, and then ls to see what's in the directory
22:08:27 <Unicorn_Princess> or if i can, i don't know how
22:10:18 <geekosaur> I did warn you ghci makes a poor shell environment…
22:11:36 winny parts (~weechat@user/winny) (trimming chats)
22:12:22 <EvanR> does that happen because ghci treats the current directory as the root for modules
22:12:48 <EvanR> (or a root)
22:13:12 <Unicorn_Princess> geekosaur, what kind of tragedy would this be if the protagonist heeded warnings?
22:13:29 <geekosaur> yes, see `-i`
22:13:38 <geekosaur> default is current directory
22:14:47 × mikoto-chan quits (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 246 seconds)
22:16:04 <monochrom> Perhaps shelly replaces shell scripting, but not shell REPL prompt.
22:16:46 <Unicorn_Princess> how do i see '-i'? not having much luck finding a list of ghci startup arguments, if that's what it is
22:17:16 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 248 seconds)
22:18:19 <Unicorn_Princess> ah found it
22:19:06 <geekosaur> https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/separate_compilation.html#search-path
22:21:24 <Unicorn_Princess> hrmmm. but even if i add the absolute path to my helper scripts with -i, they'll _still_ get unloaded when I :cd, no?
22:22:08 <geekosaur> yes; :cd doesn't change its behavior based on -i
22:23:16 <Unicorn_Princess> i am not remotely done banging my head against this wall
22:26:12 <Unicorn_Princess> HA! take that, wall! System.setCurrentDirectory did the trick :)
22:32:11 × vglfr quits (~vglfr@88.155.170.213) (Read error: Connection reset by peer)
22:46:31 × oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 252 seconds)
22:54:02 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
23:24:16 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
23:27:25 azimut joins (~azimut@gateway/tor-sasl/azimut)
23:30:51 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
23:31:52 iteratee_ joins (~kyle@162.218.222.207)
23:33:18 × iteratee quits (~kyle@162.218.222.207) (Read error: Connection reset by peer)
23:35:07 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
23:49:11 thegeekinside joins (~thegeekin@189.180.124.118)
23:53:25 Vajb joins (~Vajb@207.61.167.122)
23:54:55 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 264 seconds)

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