Home freenode/#haskell: Logs Calendar

Logs on 2021-02-26 (freenode/#haskell)

00:00:08 × finn_elija quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection)
00:00:30 Rudd0 joins (~Rudd0@185.189.115.108)
00:00:31 finn_elija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
00:01:58 seneca joins (~epictetus@ip72-194-215-136.sb.sd.cox.net)
00:05:21 × epicte7us quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 264 seconds)
00:05:30 Tario joins (~Tario@200.119.184.113)
00:06:15 × aenesidemus quits (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Quit: Leaving)
00:06:58 × Guest70386 quits (~micro@a9.lence.net) (Quit: leaving)
00:08:19 × __minoru__shirae quits (~shiraeesh@109.166.59.137) (Ping timeout: 272 seconds)
00:08:23 micro joins (~micro@unaffiliated/micro)
00:12:05 mmarusea1ph2 is now known as mmaruseacph2
00:19:45 × Tario quits (~Tario@200.119.184.113) (Read error: Connection reset by peer)
00:20:00 Tario joins (~Tario@201.192.165.173)
00:22:10 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
00:23:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
00:23:33 conal joins (~conal@64.71.133.70)
00:23:53 × skewerr quits (~spoonm@2602:ffd5:1:119::1) (Quit: Don't look behind you!)
00:24:13 spoonm joins (~spoonm@2602:ffd5:1:119::1)
00:25:55 × sablib quits (~sablib@59.173.152.160) (Read error: Connection reset by peer)
00:25:57 × conal quits (~conal@64.71.133.70) (Client Quit)
00:26:23 magnuscake joins (~magnuscak@87.121.92.61)
00:26:29 sablib joins (~sablib@59.173.155.233)
00:27:23 × spoonm quits (~spoonm@2602:ffd5:1:119::1) (Client Quit)
00:27:26 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
00:27:47 conal joins (~conal@64.71.133.70)
00:27:48 spoonm joins (~spoonm@2602:ffd5:1:119::1)
00:29:45 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
00:30:15 kadobanana is now known as kadoban_
00:30:29 × cocytus_ quits (~cocytus@cpe-76-95-48-109.socal.res.rr.com) (Quit: Leaving)
00:30:35 kadoban is now known as kadobanana
00:30:56 mud is now known as kadoban
00:31:11 kadobanana is now known as mud
00:32:13 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
00:33:43 ph88 joins (~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a)
00:36:41 × usr25 quits (~J@45.red-88-1-79.dynamicip.rima-tde.net) (Quit: Bye)
00:37:57 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6)
00:38:29 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) (Remote host closed the connection)
00:38:50 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
00:38:56 ph88 joins (~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a)
00:39:13 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
00:40:37 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
00:41:08 polyrain joins (~polyrain@2001:8003:e4d8:4101:11d5:eb2a:5a3d:13dc)
00:42:04 × crobbins quits (~crobbins@2600:1700:48eb:8490:f085:4e3f:f643:338d) (Remote host closed the connection)
00:44:21 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
00:44:48 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
00:47:37 × Benzi-Junior quits (~BenziJuni@88-149-67-143.du.xdsl.is) (Quit: gone)
00:50:35 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:51:00 Benzi-Junior joins (~BenziJuni@88-149-67-143.du.xdsl.is)
00:53:40 × apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 276 seconds)
00:55:08 × magnuscake quits (~magnuscak@87.121.92.61) (Quit: Leaving)
00:55:34 conal joins (~conal@64.71.133.70)
00:57:42 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
00:57:56 × m0rphism1 quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds)
00:58:24 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
01:00:28 <c_wraith> I'm not sure anything supports rank-n kinds
01:00:31 × srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
01:00:31 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
01:00:48 srk joins (~sorki@gateway/tor-sasl/sorki)
01:00:51 hexo joins (~hexo@gateway/tor-sasl/hexo)
01:02:04 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
01:02:25 gzj joins (~gzj@unaffiliated/gzj)
01:03:11 × carlomagno quits (~cararell@148.87.23.9) (Quit: Leaving.)
01:04:41 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) (Ping timeout: 272 seconds)
01:04:46 ezrakilt_ joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
01:05:40 <Feuermagier> how does one do a pairwise list comprehension (first element of xs with first element of ys and so on)?
01:07:06 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
01:07:11 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:07:19 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 276 seconds)
01:07:30 apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net)
01:07:34 <edwardk> > [ (x, y) | x <- [1..10] | y <- [21..30] ]
01:07:35 <lambdabot> [(1,21),(2,22),(3,23),(4,24),(5,25),(6,26),(7,27),(8,28),(9,29),(10,30)]
01:07:54 <edwardk> use a | not a , to separate and turn on the extension it hollers at you about
01:08:43 <swarmcollective> :t zip
01:08:45 <lambdabot> [a] -> [b] -> [(a, b)]
01:09:30 <Feuermagier> ah, thx!
01:09:33 <edwardk> zip/zipWith is generally more idiomatic, but if you really want comprehension syntax the above works
01:11:33 <swarmcollective> The comprehension syntax is very powerful. If I remember correctly, it allows you to do a cross join of the source lists, if needed.
01:12:38 <Feuermagier> edwardk, my predicate variables appear to go out of scope if i do that
01:13:31 × polyrain quits (~polyrain@2001:8003:e4d8:4101:11d5:eb2a:5a3d:13dc) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:13:31 <swarmcollective> (aka: cartesian join, cartesian product)
01:15:09 <Feuermagier> essentially I want "halfEven3 xs ys = map (`div` 2) $ filter even $ zipWith (+) xs ys" - but as a list comprehension
01:15:15 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
01:17:55 <edwardk> Feuermagier: pretty sure you need to use two nested comprehensions for that
01:18:57 <edwardk> something like [ z `div` 2 | z <- [ x + y | x <- xs | y <- ys ], even z ]
01:19:51 hackage yahoo-prices 0.1.0.2 - A wrapper around Yahoo API for downloading market data. https://hackage.haskell.org/package/yahoo-prices-0.1.0.2 (alojzyleszcz)
01:20:26 × shatriff quits (~vitaliish@protective.remission.volia.net) (Remote host closed the connection)
01:20:59 shatriff joins (~vitaliish@protective.remission.volia.net)
01:21:56 <swarmcollective> I ended up rebuilding the lambdabot stock lookup plugin to pull from a different provider. Didn't the yahoo API go away? Maybe it is just not free anymore?
01:22:57 × lemmih_ quits (~lemmih@2406:3003:2072:44:5428:f0dd:ed19:b4df) (Remote host closed the connection)
01:24:18 × totoro2022 quits (~t@unaffiliated/totoro2021) (Quit: WeeChat 2.7.1)
01:24:40 totoro2021 joins (~t@unaffiliated/totoro2021)
01:28:13 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
01:29:10 × theelous3 quits (~theelous3@unaffiliated/theelous3) (Read error: Connection reset by peer)
01:30:47 da39a3ee5e6b4b0d joins (~da39a3ee5@184.22.157.95)
01:31:02 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
01:35:07 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
01:39:58 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds)
01:41:07 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
01:42:57 deviantfero joins (~deviantfe@190.150.27.58)
01:43:18 × petersen quits (~petersen@redhat/juhp) (Remote host closed the connection)
01:43:37 ransom joins (~c4264035@2a09:bac0:21::81a:b438)
01:43:45 × ransom quits (~c4264035@2a09:bac0:21::81a:b438) (Client Quit)
01:44:34 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
01:46:31 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
01:46:47 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
01:49:38 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
01:50:56 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
01:53:26 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 264 seconds)
01:57:09 <ski> `[z `div` 2 | (x <- xs | y <- ys),let z = x + y,even z]' ought to work .. :(
01:59:15 <ski> > [z | [x,y] <- transpose [[0 .. 9],[10 .. 19]],z <- [x,y]]
01:59:16 <lambdabot> [0,10,1,11,2,12,3,13,4,14,5,15,6,16,7,17,8,18,9,19]
01:59:29 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
02:00:09 <ski> > [z | (x,y) <- [(x,y) | x <- [0 .. 9] | y <- [10 .. 19]],z <- [x,y]]
02:00:11 <lambdabot> [0,10,1,11,2,12,3,13,4,14,5,15,6,16,7,17,8,18,9,19]
02:01:47 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
02:02:09 jb55 joins (~jb55@gateway/tor-sasl/jb55)
02:04:05 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
02:04:26 gzj joins (~gzj@unaffiliated/gzj)
02:04:26 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
02:06:45 × xff0x_ quits (~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff) (Ping timeout: 272 seconds)
02:07:56 xff0x_ joins (~xff0x@2001:1a81:52d0:d300:24a8:fbee:5e92:3e0)
02:08:52 rajivr joins (uid269651@gateway/web/irccloud.com/x-lipeedvqihpcwewl)
02:08:54 <Feuermagier> whats the difference between || and "or" ?
02:09:08 <edwardk> :t or
02:09:09 <lambdabot> Foldable t => t Bool -> Bool
02:09:11 <edwardk> :t (||)
02:09:12 <lambdabot> Bool -> Bool -> Bool
02:09:27 <edwardk> a || b = or [a,b]
02:09:36 <Feuermagier> ah, so "or" is like "list stuff"?
02:09:41 <edwardk> yeah
02:09:50 <Feuermagier> thx
02:09:59 <edwardk> nowadays generalized to arbitrary Foldable containers
02:10:15 <edwardk> :t any
02:10:17 <lambdabot> Foldable t => (a -> Bool) -> t a -> Bool
02:10:26 <edwardk> any is 'or' with a built in 'map' applied
02:10:30 <edwardk> > any even [1,2,3]
02:10:32 <lambdabot> True
02:10:44 <edwardk> or = any id
02:11:57 × apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 264 seconds)
02:13:50 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
02:14:35 koz_ . o O (any = orMap)
02:14:43 × soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds)
02:14:48 <koz_> And all = andMap.
02:15:05 × conal quits (~conal@64.71.133.70) (Read error: Connection reset by peer)
02:15:21 <koz_> Speaking of which, edwardk - is there any reason why Predicate's Divisible instance combines with &&, as opposed to ||?
02:15:44 <koz_> As far as I can tell, Predicate is just a special case of (Monoid b) => Op b, right?
02:15:47 × esoteric1lgo quits (~matt@uncertain.win) (Remote host closed the connection)
02:16:52 soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net)
02:16:52 nbloomf joins (~nbloomf@2600:1700:ad14:3020:f4d9:46b5:acd5:46aa)
02:17:00 <ski> @type (`withCoyoneda` any)
02:17:01 <edwardk> koz_: because it is almost always the version you seem to want?
02:17:01 <lambdabot> Foldable f => Coyoneda f Bool -> Bool
02:17:10 <koz_> edwardk: Fair.
02:17:18 <edwardk> koz_: but yes, its just a special case of Op
02:17:39 <edwardk> it also makes the relationship between it and Equivalence clear
02:18:34 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
02:18:57 <ski> @type (`withCoyoneda` foldMap)
02:18:58 <lambdabot> (Foldable f, Monoid o) => Coyoneda f o -> o
02:19:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:21:09 <koz_> Also, edwardk - Strong allows you to 'pass through' (c,), Choice allows the same for Either c. Is it possible to have something analogous for These c, and how would that relate to those other two?
02:22:04 × ezrakilt_ quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
02:23:47 <edwardk> IIRC These works as a valid tensor for a monoidal category, so it should exist
02:24:02 <edwardk> i don't actually think it relates to the other two. you can force a relationship but its artificial
02:24:05 conal joins (~conal@64.71.133.70)
02:24:51 <koz_> So basically we have Profunctor, and then each of Strong, Choice and [whatever the These-based one is called] are their own thing on top of it?
02:25:00 <koz_> What _would_ you call the These-based one?
02:25:02 geowiesnot_bis joins (~user@87-89-181-157.abo.bbox.fr)
02:25:17 <MarcelineVQ> ChoiceChoiceStrong
02:25:23 <edwardk> its all 'Strong' really
02:25:32 <koz_> Just differently Strong.
02:25:35 <edwardk> but Choice was named to match ArrowChoice
02:26:11 <nshepperd2> Stronk
02:26:19 <edwardk> i went with separate classes because inference works better and it doesn't need flexible instances, mptcs, etc. for user code
02:26:21 <koz_> nshepperd2: LegDay.
02:26:52 <edwardk> Stroice or Chong
02:27:09 <koz_> edwardk: I guess in an ideal world, you'd have Strong parameterized over the tensor?
02:27:21 <edwardk> koz_: tried it, but the thing is it sucks to use
02:27:38 <koz_> Yeah, I can imagine that.
02:27:40 <edwardk> you get the same combinator names too many manual type applications are required
02:28:13 <koz_> Also, can we Co- out of Stroice like with Costrong and Cochoice?
02:28:19 <edwardk> i don;t like the fact that linear-base decided to pun the two, makes the lenses they offer even more awkward
02:28:26 <koz_> (I still don't fully get how Cochoice's method doesn't infinitely loop)
02:28:29 <edwardk> yes
02:28:29 <koz_> (for ->)
02:29:02 travisb is now known as tabemann
02:29:21 × Lowl3v3l quits (~Lowl3v3l@dslb-002-207-103-026.002.207.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
02:30:13 <ski> @type (`withCoyoneda` traverse)
02:30:14 <lambdabot> (Traversable f1, Applicative f2) => Coyoneda f1 (f2 b) -> f2 (f1 b)
02:30:14 <MarcelineVQ> what does pun the two mean here?
02:30:17 <ski> @type \xs -> MkYoneda (`traverse` xs)
02:30:18 <lambdabot> error:
02:30:18 <lambdabot> • Couldn't match type ‘b’ with ‘f b0’
02:30:19 <lambdabot> ‘b’ is a rigid type variable bound by
02:30:26 <ski> @type \xs -> MkYoneda (`map` xs)
02:30:27 <lambdabot> [a] -> Yoneda [] a
02:30:33 × conal quits (~conal@64.71.133.70) (Ping timeout: 264 seconds)
02:30:59 Maxdaman1us is now known as Maxdamantus
02:31:24 <edwardk> consider the Maybe instance for MonadFix and then it looks better
02:31:33 <koz_> Fair.
02:33:45 <koz_> I wonder what you could get if you thought 'I want Arrow = Strong + Category, but replace Strong with Stroice'.
02:34:01 <koz_> DecoherentArrow
02:34:29 × seneca quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
02:36:20 <ski> `Stroice' being ?
02:36:21 conal_ joins (~conal@64.71.133.70)
02:37:09 <koz_> ski: Strong, but with These instead of (,) as the tensor.
02:37:50 Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362)
02:38:28 <ski> `forall a b. These a (f b) -> f (These a b?
02:38:30 <ski> )'
02:39:07 <koz_> ski: Strong has a method 'first' :: p a b -> p (c, a) (c, b)'
02:39:22 <koz_> Stroice would have 'this' :: p a b -> p (These c a) (These c b)'.
02:39:37 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds)
02:39:37 Lord_of_Life_ is now known as Lord_of_Life
02:39:43 × conal_ quits (~conal@64.71.133.70) (Read error: Connection reset by peer)
02:39:46 <ski> oh, strong difunctor i guess
02:39:58 <ski> ok
02:40:17 <koz_> ski: Profunctor.
02:40:21 <koz_> Sorry if I wasn't clear there.
02:40:36 <koz_> Should have mentioned 'Strong from profunctors' or something.
02:41:08 <ski> yah
02:41:54 <ski> (i think you may have mixed up the ordering to the tensor, there ?)
02:42:01 conal joins (~conal@64.71.133.70)
02:42:14 × cr3_ quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
02:42:41 × conal quits (~conal@64.71.133.70) (Read error: Connection reset by peer)
02:42:43 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
02:42:56 <koz_> Yes: https://hackage.haskell.org/package/profunctors-5.6.2/docs/Data-Profunctor.html#t:Strong
02:43:02 <koz_> I can never remember which way around it goes.
02:43:23 <ski> edwardk : hm, just wondering if you maybe had an idea for my earlier question
02:43:43 <ski> <ski> is there a particular name for when a monoid action acts on a monoid, or a group action acts on a group, (in a compatible way), or the like ?
02:43:57 <ski> <ski> for vector spaces, this would be a case of bilinear transformation/map (where one of the two domains is the same as the codomain). can one say "bimonoidal transformation" or something like that ?
02:44:17 <ski> <ski> well, it would correspond to an ordinary homomorphism (monoid or group) from a tensor product .. in case the relevant tensor product exists (i'm not sure when it does. in the group case, i think the domain groups have to be abelian. maybe it can sometimes exist even when not ?)
02:45:05 <ski> koz_ : well, `first' applies to / modifies the first parameter, and `second' the second
02:45:11 × Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
02:45:18 <koz_> ski: Yeah, I guess that makes mnemonic sense.
02:45:26 <ski> and, airi, `this' is the first one for `These', while `that' is the second
02:45:43 <ski> @type first ord
02:45:43 <koz_> Yeah, it is.
02:45:44 <lambdabot> (Char, d) -> (Int, d)
02:45:55 conal_ joins (~conal@64.71.133.70)
02:47:38 <koz_> I guess I'm wondering if the statement 'Arrow = Strong + Category' means 'any Arrow method can be implemented with Strong and/or Category method(s)'.
02:48:07 <edwardk> ski: sorry, distracted irl
02:48:12 <ski> no worry
02:49:02 × alx741 quits (~alx741@181.196.69.27) (Quit: alx741)
02:49:05 <edwardk> monoids acting on monoids come up when dealing with semidirect products, because you need a monoid that acts on a monoid "in a compatible way"
02:49:57 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
02:51:40 <ski> someone mentioned a paper <https://repository.upenn.edu/cgi/viewcontent.cgi?article=1773&context=cis_papers> about monoids, specifically mentioned "monoid-on-monoid action" (page ten), and i was wondering whether it was mapping monoid elements to monoid homomorphisms
02:52:21 ddellacosta joins (~ddellacos@86.106.143.100)
02:52:48 <ski> hm, yea i think i vaguely remember you mentioning something like that in a recorded presentation you made, where you talked about monoidal parsing
02:52:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
02:53:46 <koz_> ski: That was me.
02:53:53 <ski> ah, ok
02:53:54 <koz_> (the monoid-on-monoid action thing)
02:54:00 <koz_> (because I have a very mature imagination)
02:54:09 ski already forgot who mentioned what :)
02:55:53 apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net)
02:57:36 toorevitimirp joins (~tooreviti@117.182.182.60)
02:57:49 × ddellacosta quits (~ddellacos@86.106.143.100) (Ping timeout: 276 seconds)
02:59:05 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
03:07:29 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
03:07:35 × viluon quits (uid453725@gateway/web/irccloud.com/x-amxewsahyzvflymf) (Quit: Connection closed for inactivity)
03:10:07 × gzj quits (~gzj@unaffiliated/gzj) (Read error: Connection reset by peer)
03:10:26 gzj joins (~gzj@unaffiliated/gzj)
03:11:07 × gzj quits (~gzj@unaffiliated/gzj) (Read error: Connection reset by peer)
03:11:29 gzj joins (~gzj@unaffiliated/gzj)
03:12:08 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
03:12:30 gzj joins (~gzj@unaffiliated/gzj)
03:14:36 × geowiesnot_bis quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
03:17:12 jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de)
03:18:38 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
03:19:58 FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
03:19:58 finn_elija is now known as Guest45799
03:19:58 FinnElija is now known as finn_elija
03:21:08 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
03:21:11 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-xtlevgyyzcpkswkn) (Quit: Connection closed for inactivity)
03:21:28 gzj joins (~gzj@unaffiliated/gzj)
03:21:29 × apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 272 seconds)
03:23:28 × Guest45799 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
03:24:52 apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net)
03:25:21 <edwardk> ski: re monoid on monoid action i give laws for that in coda
03:25:56 <edwardk> ah i remember now
03:26:04 <edwardk> you're looking for a 'unital distributive monoid action'
03:26:36 <edwardk> distributive monoid action doesn't imply the taking of units to units per se
03:27:50 <ski> hm, okay
03:27:56 <ski> a bit of a mouthful :/
03:28:11 <edwardk> it is the only way you'll find the original literaturte
03:28:13 <edwardk> er literature
03:28:19 <ski> ok
03:28:29 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
03:30:33 <edwardk> in 'coda' i wind up using a class 'Relative' rather than 'MonoidAction' because i can use backpack to make it a 1 parameter typeclass
03:30:44 <edwardk> then i wind up with RelativeSemigroup and RelativeMonoid
03:30:50 <edwardk> but its made up vocabulary
03:31:00 × tv quits (~tv@unaffiliated/tv) (Ping timeout: 246 seconds)
03:31:06 <edwardk> i should split this out into a hackage package
03:31:28 <edwardk> and provide relative:group-relative and relative:monoid-relative libraries users can extend
03:31:36 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
03:31:47 <edwardk> which can then offer the catenable lists, sets, maps, etc.
03:31:59 <edwardk> with the optimizations i support to make O(1) relocatable maps and the like
03:32:12 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
03:32:16 <ski> hm, right. i was wondering whether it was a good idea to have a class `MonoidAction' .. that is, how common would it be to want to talk about multiple parallel actions ?
03:32:33 <edwardk> Relative works better than MonoidAction for two reasons
03:32:40 <edwardk> one is single parameter typeclasses
03:32:53 <edwardk> the other is i can unpack the monoid in data types parameterized on it
03:33:04 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds)
03:33:16 tv joins (~tv@unaffiliated/tv)
03:33:24 <edwardk> e.g. data List a = Nil | Cons {-# UNPACK #-} !Delta a (List a)
03:33:34 <edwardk> or into the maps or fingertrees
03:34:08 <ski> not seeing how the OPTC is related to unpacking
03:34:24 <edwardk> the backpack solution is parameterized on the monoid.
03:34:27 <edwardk> Delta is that monoid
03:34:40 <edwardk> so its concrete for any instantiation of the package
03:34:45 <edwardk> meaning unpack can fire on it
03:35:12 <edwardk> if it was data List m a = Nil | Cons !m a (List a) -- for some Monoid m that acts on a that wouldn't work
03:35:26 <edwardk> the m would still be, say a pointer to a box holding an Int#
03:35:27 Rob7 joins (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net)
03:35:39 <ski> ah, ok
03:35:43 <edwardk> and inference would suck on top of that
03:35:53 × mstksg quits (~mstksg@unaffiliated/mstksg) (Quit: WeeChat 2.7)
03:36:13 jle` joins (~mstksg@cpe-23-240-75-236.socal.res.rr.com)
03:36:13 × jle` quits (~mstksg@cpe-23-240-75-236.socal.res.rr.com) (Changing host)
03:36:13 jle` joins (~mstksg@unaffiliated/mstksg)
03:37:03 <edwardk> this lets me cleanly deal with multiple actions because each class is a separate class, each function is a separate function, each type of catenable list that supports group or monoid actions in O(1) is a separate type that gets to monomorphize away the representation of the monoid
03:37:34 <edwardk> now when you go to replicate this for the `mtl` life starts to suck
03:37:42 <edwardk> but for basic stuff? easy
03:38:04 <ski> aren't the classes effectively specialized partially applied versions of the MPTC ?
03:38:14 <edwardk> the problem with the MTL is there's a common idiom of StateT (MyState s) (ST s) ...
03:38:38 <edwardk> so you need to parameterize the modules over monads with parameters, not just monads you need the ability to smuggle that 's' down
03:38:46 <edwardk> and into all the states even if you may not need it
03:39:02 <edwardk> but then when we look at the MPTC classes we get another issue
03:39:17 <ski> hmm
03:39:40 <edwardk> which is that you wind up needing to make modules for each 'instance' you'd write. but then can't even benefit from default signatures on anything.
03:39:46 <edwardk> so its just a worse typeclass mechanism
03:39:50 <ski> would (uniformly) parameterizing modules over tyvars help, there ?
03:39:56 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
03:39:56 <edwardk> and the user is writing a mixin line in their cabal file for every instantiation
03:39:58 <ski> (if that was a thing, i mean)
03:40:11 <edwardk> yes
03:40:30 <edwardk> also we could reduce pressure by parameterizing on runtime reps or something
03:40:34 <edwardk> instead of concrete types
03:40:35 <edwardk> perhaps
03:41:13 <edwardk> I don't care if you are State Word# a or State Char# a as they are both the same runtime kind (TYPE 'WordRep)
03:41:29 desophos joins (~desophos@2601:249:1680:a570:1ceb:ae8f:9938:9938)
03:41:31 <ski> mhm, i see
03:41:46 <ski> (not following the bit with default signatures)
03:42:45 <edwardk> consider making a library which has a signature that you depend on some data M s a such that there is Monad (M s), etc. and the module the lib supplies offers get, put, modify
03:43:11 <edwardk> you can't fill in the 'default' for get/put in terms of modify in anything for the result library
03:43:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:43:52 <edwardk> so anyone who goes to write an equivalent of what was instance MonadState s m => MonadState s (ReaderT e m) -- has to write all 3 defs out longhand
03:44:30 <edwardk> and you also need to explicitly mixin all these little baby backpack modules to make your fully unboxed mtl go
03:44:36 × Rob7 quits (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) (Quit: Connection closed)
03:44:38 Lowl3v3l joins (~Lowl3v3l@dslb-002-207-103-026.002.207.pools.vodafone-ip.de)
03:44:51 <ski> hm .. so this is a current issue/limitation with backpack ?
03:46:06 <ski> well, it's cool that people are starting to play around with backpack, finding out where pain points are, and where there might be room for improvement. and seeing how it interacts with tyoe classes, what the trade-offs are
03:46:09 <edwardk> i mean, sure. backpack doesn't 'mixin' the signature code with the module you supply it in any way. it isn't clear how it would. its just an hs-boot parser
03:46:54 <edwardk> i pointed out a while back that in theory one could have a backpack like feature in a language that let you merge signatures into larger signatures, specify defaults/partial definitions, etc. doesn't feel like haskell but there's a language there
03:47:15 <edwardk> has some cute benefits it can offer to the expression problem and the like if you can supply individual cases in the definitions even
03:47:56 <ski> coming from different modules that you mix, you mean ?
03:48:41 <edwardk> e.g. in "Shangri-La-skel" pretend you can make a signature for a module that looks like data Expr a; eval :: Expr a -> a
03:48:52 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
03:49:15 <edwardk> then one could envision defining a module that said data Expr a where Lit :: Int -> Expr Int; Plus :: Int -> Int -> Expr Int; obvious eval.
03:49:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
03:49:23 <edwardk> and another that offers Lam/Abs and the obvious eval
03:49:59 × theDon_ quits (~td@muedsl-82-207-238-098.citykom.de) (Ping timeout: 265 seconds)
03:50:00 <edwardk> and a desire to merge the two definitions into a composite module with all the data constructors and all the top level cases for eval merged.
03:50:04 <ski> being able to combine two modules which each depend on a parameter module with a signature matching the other one could be useful sometimes. so one module can use some operations given by the other, and vice versa. so a mutually recursive instantiation, if you think of it as two module functors
03:50:51 <ski> hm, yea. that's what i was thinking you had in mind more or less
03:50:53 theDon joins (~td@94.134.91.130)
03:51:01 <edwardk> (you'd need something like jesper cockx's definitional equality for all: https://link.springer.com/chapter/10.1007%2F978-3-642-54833-8_6
03:51:02 <ski> binary operations is a problem, i guess
03:51:22 <edwardk> its not a haskell-like language feature
03:51:30 <edwardk> but in another language you can come up with ways to play with it
03:52:13 <edwardk> to do binary you wind up needing module signatures for how the two types interoperate and then to inherit from that multiple times, messy, but doable
03:52:35 <edwardk> e.g. a package parameterized on two others
03:53:10 <edwardk> its a thing i played with for coda because it offers up interesting code reuse patterns we don't currently have
03:53:17 <edwardk> but its also its own brand of crazy
03:53:39 <ski> and then one can wonder what if one fragment would like one kind of effect in `eval', and another would like another fragment, how to combine
03:53:49 <edwardk> anyways, the status quo is to define a fully backpacked mtl i'd have to suffer some serious pain.
03:54:31 <edwardk> ski: thats handlable. you push the effect into another module signature. define combinators for interacting with it. then merge the signatures for what has to be fed you.
03:55:20 <ski> hm, i think i see
03:55:44 <edwardk> the pain point i have here is that my usual dodge for work effects now is to stop thinking in mtl terms and start using implicit parameters, but with all the representation polymorphic stuff i'm doing, i can't push unlifted or linear things onto the left of the =>
03:55:56 <edwardk> er for working with
03:56:15 <edwardk> i think we talked about this trick before
03:56:27 <ski> `(?foo :: Lev T) => ..' ?
03:56:50 rkrishnan joins (~rkrishnan@rkrishnan.org)
03:56:51 <edwardk> lev makes that by name, which is super dangerous from a recomputation perspective
03:57:59 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
03:58:58 rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-cdhhieietudbtkyo)
04:00:01 × alexelcu quits (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
04:00:02 × haasn quits (~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
04:00:52 alexelcu joins (~alexelcu@142.93.180.198)
04:00:52 <ski> hm. so need thunked version of `() => T' ?
04:01:22 <ski> although, how would the caching work ?
04:02:58 <edwardk> basically i'm just observing that with current haskell i can't quite maintain the unboxing tricks i have and the effect system tricks i've been using at the same time
04:03:20 <edwardk> in my perfect world i'd use reflection to pass my argument as a CONSTRAINT 'IntRep or something
04:06:00 <ski> mm
04:06:23 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
04:07:02 Rob30 joins (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net)
04:10:37 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 276 seconds)
04:10:55 Tordek parts (tordek@gateway/shell/blinkenshell.org/x-igtnswqonmwtslsx) ()
04:14:19 ep1ctetus joins (~epictetus@ip72-194-215-136.sb.sd.cox.net)
04:17:02 × Rob30 quits (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) (Quit: Connection closed)
04:19:13 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 272 seconds)
04:19:15 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
04:19:20 × jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.0.1)
04:19:30 × ep1ctetus quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
04:20:06 haasn joins (~nand@mpv/developer/haasn)
04:22:10 forgottenone joins (~forgotten@176.88.28.250)
04:23:44 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 240 seconds)
04:31:00 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
04:31:46 × shutdown_-h_now quits (~arjan@2001:1c06:2d0b:2312:750e:d23:b28:17e4) (Ping timeout: 258 seconds)
04:32:32 × tomku|two quits (~tomku@unaffiliated/tomku) (Ping timeout: 272 seconds)
04:37:31 shutdown_-h_now joins (~arjan@2001:1c06:2d0b:2312:9922:cfc5:8f27:49f4)
04:38:49 tomku joins (~tomku@unaffiliated/tomku)
04:41:18 psutcliffe joins (~psutcliff@2a00:801:44b:5fb3:b852:cfd3:ade7:f24f)
04:41:57 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
04:42:22 × Tops2 quits (~Tobias@dyndsl-095-033-019-043.ewe-ip-backbone.de) (Read error: Connection reset by peer)
04:44:36 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
04:45:03 × soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds)
04:45:29 Tario joins (~Tario@201.192.165.173)
04:46:59 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
04:51:27 × conal_ quits (~conal@64.71.133.70) (Read error: Connection reset by peer)
04:52:08 × da39a3ee5e6b4b0d quits (~da39a3ee5@184.22.157.95) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:52:39 × gienah_ quits (~mwright@119-18-2-241.771202.syd.nbn.aussiebb.net) (Quit: leaving)
04:57:46 conal joins (~conal@64.71.133.70)
05:01:38 blissful is now known as boomsayer
05:01:47 boomsayer is now known as blissful
05:03:07 <zzz> hey. why are circular imports not allowed?
05:03:44 <glguy> They are allowed, but you have to help GHC along with a boot file
05:04:22 <zzz> oh ok! where can i learn more about it?
05:05:25 <glguy> generally if you need them it means your program structure isn't great, https://downloads.haskell.org/ghc/latest/docs/html/users_guide/separate_compilation.html#how-to-compile-mutually-recursive-modules
05:06:19 drbean_ joins (~drbean@TC210-63-209-156.static.apol.com.tw)
05:08:21 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds)
05:10:59 zerok is now known as z0k
05:15:34 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
05:16:33 <zzz> yeah i'm feeling it's not great. I'm having trouble with types. is having a module with basically just all my custom types a healthy thing to do?
05:17:36 <zzz> something like import Project.Types on all modules?
05:18:01 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
05:20:02 <EvanR> that works, and simplifies types that form a loop
05:20:41 <EvanR> ah that's what you were talking about
05:21:38 <zzz> it kind of weirds me out but ill try
05:23:13 × zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
05:24:45 _d0t joins (void@gateway/vpn/mullvad/d0t/x-89419360)
05:26:23 <hyiltiz-M> @monochrome What’s an MSc cert.? Is it gonna have a stamp on it ;P
05:26:23 <lambdabot> Unknown command, try @list
05:27:09 <hyiltiz-M> monochrome: What’s an MSc cert.? Is it gonna have a stamp on it with fancy old English font? ;P
05:28:13 elliott__ joins (~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
05:28:17 × elliott__ quits (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Client Quit)
05:28:37 × apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 276 seconds)
05:29:00 <pjb> MicroSoft Consultant Certification.
05:29:53 <hyiltiz-M> Do I get extra credit for making data Pair a=MkPair a a into a Hilbert space too?
05:30:35 <hyiltiz-M> Is MSc a joke or a cert that is recognized by anyone else?
05:31:08 <hyiltiz-M> I thought it was a joke when monochrome put out the challenge
05:32:08 <Feuermagier> don't all big tech-companies think they have authority to hand out certs nowdays?
05:33:06 <MarcelineVQ> msc https://en.wikipedia.org/wiki/Master_of_Science
05:33:31 <hyiltiz-M> Yeah I was thinking MSc meant MS degree too and hence a joke
05:35:37 <hyiltiz__> Anyway, I am intrigued and I'll bite next time I need a reason to procrastinate (and claim that MSc since monoschrome is not known to make false promises :D) And while I am on it, I'll make it an Hilbert space 'cuz why not.
05:36:53 <MarcelineVQ> he promised me a rose garden once
05:44:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:47:46 × Wuzzy quits (~Wuzzy@p5b0df8ea.dip0.t-ipconnect.de) (Remote host closed the connection)
05:48:04 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
05:48:15 jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se)
05:52:57 apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net)
05:53:14 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
05:53:21 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Ping timeout: 264 seconds)
05:53:44 da39a3ee5e6b4b0d joins (~da39a3ee5@190-2-138-17.hosted-by-worldstream.net)
05:55:33 × jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
05:55:57 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
05:56:22 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:56:25 jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se)
05:57:34 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
05:57:37 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
05:58:31 × da39a3ee5e6b4b0d quits (~da39a3ee5@190-2-138-17.hosted-by-worldstream.net) (Ping timeout: 276 seconds)
06:00:58 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds)
06:01:26 aqd joins (~aqd@84.20.147.33)
06:02:45 × dave_uy3 quits (~david@108.61.193.26) (Quit: The Lounge - https://thelounge.chat)
06:03:46 × forgottenone quits (~forgotten@176.88.28.250) (Quit: Konversation terminated!)
06:05:03 × jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
06:05:29 jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se)
06:05:40 dave_uy3 joins (~david@108.61.193.26)
06:09:12 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:f4d9:46b5:acd5:46aa) (Quit: My MacBook has gone to sleep. ZZZzzz…)
06:13:07 proteusguy joins (~proteusgu@cm-58-10-208-13.revip7.asianet.co.th)
06:13:36 × mp___ quits (mp@hell.cx) (Ping timeout: 240 seconds)
06:13:49 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
06:15:03 × jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
06:15:26 jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se)
06:17:24 × apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 265 seconds)
06:18:36 × rdivyanshu quits (uid322626@gateway/web/irccloud.com/x-cdhhieietudbtkyo) (Quit: Connection closed for inactivity)
06:19:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
06:20:33 × jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
06:23:18 × xff0x_ quits (~xff0x@2001:1a81:52d0:d300:24a8:fbee:5e92:3e0) (Quit: xff0x_)
06:23:26 xff0x joins (~xff0x@2001:1a81:52d0:d300:24a8:fbee:5e92:3e0)
06:24:21 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
06:28:26 geyaeb_ joins (~geyaeb@gateway/tor-sasl/geyaeb)
06:29:05 × geyaeb quits (~geyaeb@gateway/tor-sasl/geyaeb) (Ping timeout: 268 seconds)
06:29:36 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
06:32:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
06:33:23 <hyiltiz__> oh that sounds like the beginning of a sad love story... Does it have a bottom?
06:34:39 <MarcelineVQ> a cobottom
06:35:07 × howdoi quits (uid224@gateway/web/irccloud.com/x-csqlidmiacqyvucp) (Quit: Connection closed for inactivity)
06:37:10 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:43:38 × echoreply quits (~echoreply@unaffiliated/echoreply) (Quit: WeeChat 1.9.1)
06:44:07 echoreply joins (~echoreply@unaffiliated/echoreply)
06:45:13 × hyiltiz__ quits (~quassel@31.220.5.250) (Quit: hyiltiz__)
06:45:27 cfricke joins (~cfricke@unaffiliated/cfricke)
06:48:41 Varis joins (~Tadas@unaffiliated/varis)
06:49:57 <koz_> MarcelineVQ: So, a top?
06:53:54 × Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007)
06:55:18 rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-umknbygenttiqgds)
06:55:38 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
06:56:31 × werneta_ quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
06:56:41 <Feuermagier> how do i convert a normal boolean into an IO-Bool?
06:58:44 <Feuermagier> nvmnd, just a missing bracket
06:59:56 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 240 seconds)
07:00:35 redmp joins (~redmp@172.58.38.168)
07:00:53 <redmp> where does the "PostNoContent" in here come from? https://github.com/haskell-servant/servant/blob/master/servant/src/Servant/Test/ComprehensiveAPI.hs
07:01:24 <redmp> when I ask for the :kind! of "PostNoContent" in ghci I get ... PostNoContent :: [*] -> * -> *
07:01:33 × gioyik_ quits (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.0)
07:01:37 <redmp> but in the above it seems to be used without type-arguments
07:01:55 <redmp> as it seems was decided in https://github.com/haskell-servant/servant/issues/828
07:02:26 <redmp> ah, nevermind.. i'm on and old version.. rubber duck etc, thank you
07:05:44 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
07:06:04 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
07:10:24 × Rudd0 quits (~Rudd0@185.189.115.108) (Read error: Connection reset by peer)
07:10:45 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
07:11:10 × Cthalupa- quits (~cthulhu@47.186.47.75) (Read error: Connection reset by peer)
07:11:28 Cthalupa joins (~cthulhu@47.186.47.75)
07:11:45 mp___ joins (mp@hell.cx)
07:12:44 × spoonm quits (~spoonm@2602:ffd5:1:119::1) (Ping timeout: 240 seconds)
07:16:52 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:19:57 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
07:21:07 × quinn quits (~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Quit: ZNC 1.8.1 - https://znc.in)
07:21:19 <zfnmxt> I have a type like `Compose :: Func b c -> Func a b -> Fun a c`. Then, any function which takes a Func a c with some constraints: foo :: (C a, C c) => Fun a c -> ... can't determine if C holds for b. Is there a nice way to deal with this issue aside from doing something like `Comp :: (C1 b, C2 b, ...) => f b c -> f a b -> f a c` (which is super gross and might not even work)?
07:21:56 o1lo01ol1o joins (~o1lo01ol1@188.140.102.232)
07:23:21 mananamenos joins (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
07:26:31 × o1lo01ol1o quits (~o1lo01ol1@188.140.102.232) (Ping timeout: 265 seconds)
07:26:52 quinn joins (~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
07:29:03 <c_wraith> the problem is that you've made the type b existential, so GHC can't auto-populate the instance
07:29:57 <c_wraith> None of the methods of dealing with that are very pleasant
07:30:11 <zfnmxt> c_wraith: So is the best fix doing the somewhat artifical thing of changing `Func a b` to `Func a b c`?
07:30:49 <c_wraith> or replacing the class with a function (or record of them) such that the type isn't being used to determine anything
07:30:59 × redmp quits (~redmp@172.58.38.168) (Quit: leaving)
07:31:57 <zfnmxt> Seems less than ideal, since then I can take advantage of libraries which define classes. (This issue just came up trying to make Func an instance of Pretty).
07:32:35 forgottenone joins (~forgotten@176.42.27.254)
07:32:51 <zfnmxt> s/can/can't
07:33:00 <c_wraith> Well, there are tools like the constraints package for moving classes to values
07:33:23 <zfnmxt> I keep seeing that pop-up but haven't looked into it. Maybe now's the time!
07:33:37 <c_wraith> but in the end the solution has to be some form of "reify the class" or "don't throw away the type information"
07:34:11 <zfnmxt> But I think something like `type Func a b = Func' a b ()` and then having `data Func' a b c where...` isn't so ugly.
07:34:21 <c_wraith> if it stops at 2....
07:34:47 <zfnmxt> 2 being the number of arguments to data constructors which are Funcs?
07:34:56 <c_wraith> 2 functions being composed
07:35:19 <zfnmxt> Oh. Yikes.
07:38:22 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 256 seconds)
07:39:29 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
07:41:13 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
07:46:24 × ddere quits (uid110888@gateway/web/irccloud.com/x-mbygtejiccludvmt) (Quit: Connection closed for inactivity)
07:49:17 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
07:51:21 polyrain joins (~polyrain@2001:8003:e4d8:4101:11d5:eb2a:5a3d:13dc)
07:53:56 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
07:55:33 <desophos> i have a list of records that i want to generate length-n combinations of (game theory player matchups). i profiled my program and my function that generates these combinations was by far my largest bottleneck. i ended up memoizing a list of indexes for Data.Vector.! to massively improve the performance and now i have two questions: 1. is `V.fromList . sort . nub` faster than `V.fromList . S.toAscList . S.fromList`? i don't
07:55:33 <desophos> know the complexity of `sort`. 2. is there a more sensible way to go about this? my approach feels inelegant!
07:55:34 <desophos> https://paste.tomsmeding.com/RtEveHds
07:56:24 <koz_> desophos: sort is n log(n).
07:56:31 <koz_> (because in general you can't do better)
07:56:41 <koz_> nub is horrendous and best not used - it's quadratic.
07:57:11 <desophos> alright thanks, yeah i figured the Set conversion would be better because nub is O(n^2)
07:57:18 <koz_> Do you need to generate _every_ length-n combination?
07:58:04 <desophos> well... ideally, yes
07:58:25 <desophos> i'd like to match each element against each other element
07:58:35 <koz_> So is your 'n' fixed?
07:58:38 <desophos> excluding duplicates and self-matches
07:58:40 × ephemera_ quits (~E@122.34.1.187) (Quit: ephemera_)
07:59:03 <desophos> `n` and `k` should be fixed during program execution
07:59:32 <koz_> OK, so if you're excluding dupes, you can already do one thing and have your input be a HashSet, or a Set, as opposed to a list.
07:59:33 <desophos> hence the memoization
07:59:35 <koz_> That means no dupes.
08:00:03 <koz_> In terms of combination generation, I'm trying to find a publically available reference for one of the loopfree generator algorithms.
08:00:08 <koz_> Since they're basically the best you can do.
08:00:43 ephemera_ joins (~E@122.34.1.187)
08:01:49 __minoru__shirae joins (~shiraeesh@109.166.56.143)
08:02:27 <koz_> https://dl.acm.org/doi/pdf/10.1145/321765.321781?casa_token=mqEhkgUN4eIAAAAA:j0ZM3Vmwt5eBKlJJx20e1aVHLtyWfHGzYKNvuLq7Jnrd2C1DBeYudym9y9YoVz-ddIF8XQ4ZXd-lLA
08:02:31 <koz_> Algorithm 7 is what you seek.
08:02:33 <desophos> taking a Set would be a good idea but that would require the caller to import Data.Set and perform the conversion anyway, right?
08:02:39 <koz_> And?
08:02:48 <koz_> You might as well burn out the dupes immediately.
08:02:51 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
08:02:52 <koz_> Or demand your user do it.
08:02:57 Varis joins (~Tadas@unaffiliated/varis)
08:03:33 <desophos> right, there shouldn't actually be any dupes in the first place -- that would be a logic error
08:03:44 <koz_> Then you lose nothing by asking for a Set.
08:03:58 <koz_> And in fact you gain a lot, because now you have some guarantees no dork will feed you inappropriate input _ever_.
08:04:06 <desophos> that's true
08:04:24 <koz_> But yeah, read the link I gave you; algorithms 7 and 8 are _the_ best way to do what you want.
08:04:32 <koz_> Since they're loopless.
08:04:50 <desophos> hmm, it looks like this article is purchase-required?
08:04:57 <koz_> My link worked?
08:05:06 <koz_> I can access it fine.
08:05:15 <koz_> (and I know I don't have ACM credentials)
08:05:27 Yumasi joins (~guillaume@2a01:e0a:5cb:4430:2f12:f782:a87b:e2ae)
08:05:42 <koz_> Can you not access it?
08:05:54 <desophos> no, only the abstract and references
08:05:58 <koz_> Huh, weird.
08:06:01 <koz_> One moment.
08:06:11 × polyrain quits (~polyrain@2001:8003:e4d8:4101:11d5:eb2a:5a3d:13dc) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:06:18 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:07:09 <desophos> the great thing about memoization here is that the speed of the combination algorithm doesn't actually matter that much, since it'll only happen once per program execution
08:07:10 <koz_> https://transfer.sh/urUNU/enjoy-reading.pdf
08:07:15 <desophos> thank you!
08:07:23 <koz_> I would say 'don't even worry about memoization at this stage'.
08:07:30 <koz_> Use a proper loopfree combination generator.
08:07:34 <koz_> You probably won't even need it.
08:08:02 <desophos> wow alright, i'll see if i can implement it
08:08:05 <koz_> To do this efficiently you might wanna make use of the vector library, because you'll need some arrays.
08:08:10 <koz_> Again, algorithm 7 and 8 are what you want.
08:08:21 <koz_> You can skip the others, although they're good background knowledge in any case.
08:08:34 × __minoru__shirae quits (~shiraeesh@109.166.56.143) (Ping timeout: 265 seconds)
08:08:35 <koz_> (Johnson-Steinhaus-Trotter is still what I reach for whenever I need permutation enumeration for example)
08:09:28 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
08:09:53 vilpan joins (~0@212.117.1.172)
08:10:00 gzj joins (~gzj@unaffiliated/gzj)
08:15:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:16:01 × xff0x quits (~xff0x@2001:1a81:52d0:d300:24a8:fbee:5e92:3e0) (Ping timeout: 258 seconds)
08:16:40 xff0x joins (~xff0x@port-92-195-110-249.dynamic.as20676.net)
08:16:49 __minoru__shirae joins (~shiraeesh@109.166.56.143)
08:18:13 ddellacosta joins (~ddellacos@86.106.143.201)
08:19:52 mawk joins (mawk@serveur.io)
08:20:25 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
08:21:14 <tomsmeding> koz_: you're not by any chance on a university network? that acm link is inaccessible to me too unless I connect to my university's proxy
08:21:22 <koz_> tomsmeding: Nope.
08:21:29 <koz_> Unless my house is magically a university now.
08:21:44 <koz_> But it's fine - it got where it needed to go.
08:21:59 <tomsmeding> interesting
08:22:01 sphalerite_ is now known as sphalerite
08:22:23 <koz_> Meanwhile, here I am trying to find an ELI5 of l0 regularization.
08:22:49 × ddellacosta quits (~ddellacos@86.106.143.201) (Ping timeout: 276 seconds)
08:23:26 jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se)
08:26:39 <koz_> Oh lol, number of nonzero elements.
08:27:07 × mawk quits (mawk@serveur.io) (Ping timeout: 256 seconds)
08:28:34 cfricke joins (~cfricke@unaffiliated/cfricke)
08:31:04 × toorevitimirp quits (~tooreviti@117.182.182.60) (Remote host closed the connection)
08:31:35 toorevitimirp joins (~tooreviti@117.182.182.60)
08:36:40 fendor joins (~fendor@178.115.128.24.wireless.dyn.drei.com)
08:38:03 mawk joins (mawk@serveur.io)
08:39:17 kritzefitz joins (~kritzefit@fw-front.credativ.com)
08:43:04 o1lo01ol1o joins (~o1lo01ol1@188.140.102.232)
08:44:21 × __minoru__shirae quits (~shiraeesh@109.166.56.143) (Ping timeout: 264 seconds)
08:45:23 × fendor quits (~fendor@178.115.128.24.wireless.dyn.drei.com) (Remote host closed the connection)
08:48:17 × drbean_ quits (~drbean@TC210-63-209-156.static.apol.com.tw) (Ping timeout: 272 seconds)
08:50:22 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
08:50:53 shad0w_ joins (a0ca2456@160.202.36.86)
08:51:38 borne joins (~fritjof@200116b864cbc80010f2d07664396fd4.dip.versatel-1u1.de)
08:52:04 × terrorjack quits (~terrorjac@ec2-52-47-143-92.eu-west-3.compute.amazonaws.com) (Quit: The Lounge - https://thelounge.chat)
08:52:17 chele joins (~chele@ip5b40237d.dynamic.kabel-deutschland.de)
08:53:01 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
08:53:42 terrorjack joins (~terrorjac@ec2-52-47-143-92.eu-west-3.compute.amazonaws.com)
08:54:38 × desophos quits (~desophos@2601:249:1680:a570:1ceb:ae8f:9938:9938) (Ping timeout: 264 seconds)
08:54:52 desophos joins (~desophos@c-24-14-63-128.hsd1.il.comcast.net)
08:55:15 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
08:55:26 × vchlup_ quits (~vchlup@nat.brnet.cz) (Ping timeout: 256 seconds)
08:56:37 ubert joins (~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de)
08:57:17 ph88 joins (~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a)
09:00:11 × Sarievo[m] quits (sarievoale@gateway/shell/matrix.org/x-pwulriigshezukrd) (Quit: Idle for 30+ days)
09:02:20 peutri_ is now known as peutri
09:04:43 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
09:06:06 kuribas joins (~user@ptr-25vy0i6y5ai1dlzwgol.18120a2.ip6.access.telenet.be)
09:06:45 × shad0w_ quits (a0ca2456@160.202.36.86) (Quit: Connection closed)
09:08:32 CatWithMoustache joins (~CatWithMo@gateway/tor-sasl/catwithmoustache)
09:09:05 × CatWithMoustache quits (~CatWithMo@gateway/tor-sasl/catwithmoustache) (Client Quit)
09:09:08 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
09:09:28 gzj joins (~gzj@unaffiliated/gzj)
09:09:48 hendursa1 joins (~weechat@gateway/tor-sasl/hendursaga)
09:10:57 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
09:11:16 × hendursaga quits (~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 268 seconds)
09:11:32 m0rphism1 joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
09:11:38 × guest222 quits (~user@49.5.6.87) (Remote host closed the connection)
09:11:44 chisui joins (5882391e@mue-88-130-57-030.dsl.tropolys.de)
09:12:59 × aarvar quits (~foewfoiew@2601:602:a080:fa0:49bc:1f9e:3510:3fc5) (Ping timeout: 272 seconds)
09:18:53 michalz joins (~user@185.246.204.61)
09:19:08 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
09:21:36 × kam1 quits (~kam1@5.125.126.175) (Ping timeout: 240 seconds)
09:21:50 pera joins (~pera@unaffiliated/pera)
09:21:52 Codaraxis joins (Codaraxis@gateway/vpn/mullvad/codaraxis)
09:25:17 pera_ joins (~pera@unaffiliated/pera)
09:27:36 × o1lo01ol1o quits (~o1lo01ol1@188.140.102.232) (Remote host closed the connection)
09:28:42 ddellacosta joins (~ddellacos@86.106.143.84)
09:28:57 × pera_ quits (~pera@unaffiliated/pera) (Client Quit)
09:28:57 × pera quits (~pera@unaffiliated/pera) (Quit: leaving)
09:29:07 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
09:29:18 pera joins (~pera@unaffiliated/pera)
09:30:10 spoonm joins (~spoonm@tokyo.spoonm.org)
09:30:15 × mananamenos quits (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 265 seconds)
09:30:36 _noblegas joins (uid91066@gateway/web/irccloud.com/x-koxpwnnitfybavxb)
09:32:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:33:38 × ddellacosta quits (~ddellacos@86.106.143.84) (Ping timeout: 265 seconds)
09:34:26 × AWizzArd quits (~code@unaffiliated/awizzard) (Ping timeout: 240 seconds)
09:34:33 mananamenos joins (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
09:36:56 × runeks quits (sid21167@gateway/web/irccloud.com/x-knlehmbevkamnxoa) (Ping timeout: 240 seconds)
09:37:17 × jbetz quits (sid283648@gateway/web/irccloud.com/x-mbznlfwgozuyecdk) (Ping timeout: 260 seconds)
09:37:30 × topos quits (sid467876@gateway/web/irccloud.com/x-jjuaerngijjjrgfb) (Ping timeout: 265 seconds)
09:37:35 × moobar quits (sid171730@gateway/web/irccloud.com/x-frdbmxzesbedehug) (Read error: Connection reset by peer)
09:37:45 runeks joins (sid21167@gateway/web/irccloud.com/x-rckbkalawmplrynn)
09:37:45 jbetz joins (sid283648@gateway/web/irccloud.com/x-xrbchakxhwrqcwzv)
09:37:48 moobar joins (sid171730@gateway/web/irccloud.com/x-lxdmnqustlyookkh)
09:37:52 topos joins (sid467876@gateway/web/irccloud.com/x-zlylmlnixcvrclez)
09:38:36 × rdivyanshu quits (uid322626@gateway/web/irccloud.com/x-umknbygenttiqgds) (Quit: Connection closed for inactivity)
09:41:46 × zaquest_ quits (~notzaques@5.128.210.178) (Quit: Leaving)
09:42:27 <siers> is it possible to make parser from invertible functions? say, a json parser
09:43:06 zaquest joins (~notzaques@5.128.210.178)
09:43:30 <koz_> siers: jle` wrote a whole article on this!
09:44:03 <koz_> https://blog.jle.im/entry/enhancing-functor-structures-step-by-step-1.html
09:44:50 catt joins (~r@31.127.31.99)
09:45:18 <siers> sounds cool, I'll take a look!
09:49:28 <siers> can the functor-combinators do the same thing as the invertible library?
09:50:23 <koz_> siers: They're separate concerns.
09:50:29 <koz_> You wanna read both parts all the way through.
09:50:39 viluon joins (uid453725@gateway/web/irccloud.com/x-dqymabneifveqvzq)
09:51:11 <siers> I have to work now, I can't dig into it, but that's just something I wanted to ask off the top of my head :)
09:53:25 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
09:53:31 × hiroaki__ quits (~hiroaki@2a02:8108:8c40:2bb8:cedc:3317:ccec:602b) (Ping timeout: 272 seconds)
09:53:52 × jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
09:54:03 jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se)
09:55:04 cods_ is now known as cods
09:55:14 × cods quits (~fred@82-65-232-44.subs.proxad.net) (Changing host)
09:55:14 cods joins (~fred@unaffiliated/cods)
09:57:13 × datajerk_ quits (~datajerk@sense.net) (Ping timeout: 256 seconds)
09:58:14 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
09:59:36 × grumble quits (~Thunderbi@freenode/staff/grumble) (Quit: K-Lined)
10:01:25 Rudd0 joins (~Rudd0@185.189.115.108)
10:02:36 datajerk joins (~datajerk@sense.net)
10:03:11 Pickchea joins (~private@unaffiliated/pickchea)
10:03:41 grumble joins (~Thunderbi@freenode/staff/grumble)
10:04:17 hiroaki__ joins (~hiroaki@2a02:8108:8c40:2bb8:8fe4:ef1e:34cd:b814)
10:04:40 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-kzbgzpokvgnzruvp) (Quit: Connection closed for inactivity)
10:06:11 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:07:23 <kuribas> I wonder, if parsing is done with a monad, then would generating be done with a comonad?
10:08:01 __monty__ joins (~toonn@unaffiliated/toonn)
10:08:01 <kuribas> since generating is the oposite of parsing
10:08:04 thc202 joins (~thc202@unaffiliated/thc202)
10:08:25 DavidEichmann joins (~david@234.109.45.217.dyn.plus.net)
10:08:34 <jle`> generating would be a contravariant functor
10:08:44 <jle`> which is the opposite of the covariant functor (monad)
10:08:58 <jle`> i guess maybe not "the", but "a" :)
10:09:43 <jle`> *an opposite
10:10:37 <dminuoso> kuribas: Duality does not mean "opposite" in that sense.
10:10:58 <dminuoso> Consider how Either is a categorical dual of (,)
10:11:20 <dminuoso> (which is why sum types are sometimes called coproducts)
10:11:48 <shachaf> But the dual of a covariant functor is also not a contravariant functor.
10:13:36 × mp___ quits (mp@hell.cx) (Ping timeout: 240 seconds)
10:17:33 <kuribas> It does seem to work: (\a -> myParserOfB) >=> (b -> (myParserOfC)
10:19:10 <ski> i guess there's "abstract duals" and "concrete duals". the former you apply not to some particular thing, but to a concept. so, strictly speaking, `Either' is not dual to `(,)', but the concept of sum/coproduct is dual to the concept of product. the latter typically involves, given a thing, considering all functions/homomorphisms/arrows from it to some specific other thing, or considering a similar
10:19:16 <ski> exponential object, or the corresponding thing in monoidal closed or compact closed categories. an example is that the dual of a vector space is the vector space of all linear transformations/maps from it to the vector space of scalars
10:20:48 × cafce25 quits (~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
10:21:08 AWizzArd joins (~code@gehrels.uberspace.de)
10:21:41 × AWizzArd quits (~code@gehrels.uberspace.de) (Changing host)
10:21:41 AWizzArd joins (~code@unaffiliated/awizzard)
10:24:26 × _d0t quits (void@gateway/vpn/mullvad/d0t/x-89419360) (Quit: Konversation terminated!)
10:26:45 × siers quits (~ij@raitis.veinbahs.lv) (Changing host)
10:26:45 siers joins (~ij@NixOS/user/siers)
10:27:06 siers is now known as ij
10:27:49 Guest3557 is now known as stilgart
10:28:19 stilgart is now known as Guest10121
10:29:02 Guest10121 is now known as stilgart
10:31:16 × aqd quits (~aqd@84.20.147.33) (Quit: Textual IRC Client: www.textualapp.com)
10:32:04 <kuribas> to generate: (\GeneratorOfa -> b) =>= (\GeneratorOfB -> c)
10:32:29 <dminuoso> kuribas: comonads dont "generate" - at least not the way Id think about them
10:33:22 <kuribas> Well, I am thinking about filling in a form for example.
10:34:02 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
10:34:06 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
10:34:26 gzj joins (~gzj@unaffiliated/gzj)
10:35:05 <kuribas> So the comonad represents some field of the form...
10:35:17 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) (Remote host closed the connection)
10:36:00 errst joins (~errst@unaffiliated/tirej)
10:37:49 × psutcliffe quits (~psutcliff@2a00:801:44b:5fb3:b852:cfd3:ade7:f24f) (Quit: Leaving)
10:38:16 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
10:39:01 todda7 joins (~torstein@athedsl-258913.home.otenet.gr)
10:40:23 <kuribas> what's the dual of applicative?
10:41:09 <kuribas> ah wait, that's the contravariant functor jle` mentioned...
10:43:17 <kuribas> https://hackage.haskell.org/package/contravariant-1.5.3/docs/Data-Functor-Contravariant-Divisible.html
10:43:20 <merijn> Logically the dual of applicative would have to take a single 'c' and turn it into an arbitrary tuple?
10:43:26 <dminuoso> If we think of monads as efffectful computations, then comonads might be closer to context sensitive comptuations
10:44:08 <dminuoso> One of the very few comonadic examples we have, is something like cellular automatons.
10:44:16 <kuribas> so a monad "adds" context to a computation, while a comonad "removes" it.
10:44:19 <dminuoso> (Where computing the next cell state depends on surrounding state)
10:44:26 <dminuoso> Not quite "removes it" but "depends on it"
10:45:16 <dminuoso> In the common instances you usually have some concept of "focus" and "neighborhood" that you can inspect
10:45:25 <kuribas> doesn't "w a -> b " remove the context?
10:45:35 <dminuoso> I'd rather say it can "read" the context.
10:45:42 <dminuoso> So the resulting value depends on it
10:45:47 <dminuoso> Consider something like a blur filter
10:45:56 <dminuoso> Where the computed value depends on the neighborhood
10:46:29 son0p joins (~son0p@181.58.39.182)
10:47:22 × desophos quits (~desophos@c-24-14-63-128.hsd1.il.comcast.net) (Quit: Leaving)
10:52:02 <kuribas> merijn: yes, that's the type of Divisble
10:55:52 davros1 joins (~davros@host86-183-29-83.range86-183.btcentralplus.com)
10:56:53 bitmagie joins (~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de)
10:58:21 × davros_ quits (~davros@host86-184-190-159.range86-184.btcentralplus.com) (Ping timeout: 256 seconds)
11:05:08 jippiedoe joins (4dab983e@77-171-152-62.fixed.kpn.net)
11:05:09 _Alleria joins (~AllahuAkb@2603-7000-3040-0000-6cee-2fa2-b3ba-fa1a.res6.spectrum.com)
11:07:21 × mananamenos quits (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Remote host closed the connection)
11:07:46 mananamenos joins (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
11:08:12 × Alleria_ quits (~AllahuAkb@2603-7000-3040-0000-18b0-cfa2-5ed5-49de.res6.spectrum.com) (Ping timeout: 260 seconds)
11:10:56 × danso quits (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 240 seconds)
11:11:45 mp___ joins (mp@hell.cx)
11:14:46 danso joins (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
11:17:00 × bitmagie quits (~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de) (Quit: bitmagie)
11:19:47 __minoru__shirae joins (~shiraeesh@109.166.56.143)
11:24:21 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
11:25:43 Graf_Blutwurst joins (~grafblutw@2001:171b:226e:adc0:e40c:bc1a:ac08:b43b)
11:30:29 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
11:31:34 <kuribas> hmm, it seems easier to have Form' a b, which is a Profunctor, meaning a form that returns something of type "b", and can be populated with something of type "a".
11:31:53 <kuribas> then Form a = Form' a a
11:33:00 <kuribas> Then I can do Person <$> (personAge >$< intField) <*> (personName >$< stringField)
11:34:24 <kuribas> with intField :: Form Int, stringFIeld :: Form String
11:34:56 × danso quits (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 240 seconds)
11:35:23 danso joins (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
11:36:03 <kuribas> But you'll need a selective functor for choice...
11:36:06 aqd joins (~aqd@84.20.147.33)
11:36:48 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 268 seconds)
11:38:34 statusfa1led is now known as statusfailed
11:39:04 statusfailed is now known as Guest334
11:39:47 × todda7 quits (~torstein@athedsl-258913.home.otenet.gr) (Quit: Konversation terminated!)
11:39:56 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
11:39:57 × Guest334 quits (~statusfai@statusfailed.com) (Quit: leaving)
11:40:02 todda7 joins (~torstein@athedsl-258913.home.otenet.gr)
11:40:15 statusfa1led joins (~statusfai@statusfailed.com)
11:40:59 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
11:44:20 statusfa1led is now known as statusfailed
11:44:21 <ski> kuribas> :t (>$<)
11:45:20 <kuribas> ski: right, it's lmap
11:45:26 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
11:45:36 <kuribas> :t (>$<)
11:45:37 <lambdabot> error:
11:45:37 <lambdabot> • Variable not in scope: >$<
11:45:37 <lambdabot> • Perhaps you meant one of these:
11:45:37 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds)
11:45:42 <kuribas> :t lmap
11:45:43 <lambdabot> Profunctor p => (a -> b) -> p b c -> p a c
11:45:53 thc202 joins (~thc202@unaffiliated/thc202)
11:48:00 × ubert quits (~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
11:48:07 <Feuermagier> following function: "f xs [] = False" ; "f [] xs = True" --- function: xxl = xxl ---- call: f [] xll --- question: why does this not evaluate to "True"?
11:48:32 <ski> ok
11:49:01 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
11:49:31 <infinisil> Feuermagier: What's xll?
11:49:38 <Feuermagier> xll = xll
11:49:45 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
11:49:47 <Feuermagier> recursive infinite definition
11:50:01 <ski> `xll' is not a function here (it's a list)
11:50:19 × pavonia^\_^\ quits (~user@unaffiliated/siracusa) (Quit: Bye!)
11:50:19 <ski> specificlly, it's a bottom value
11:50:27 <Feuermagier> xll :: a ; xll = xll
11:50:28 <Taneb> Feuermagier: the runtime has no idea if xll is an empty list or not
11:50:30 deja joins (~deja@212095008174.public.telering.at)
11:50:36 <Feuermagier> *ah*
11:50:48 <Feuermagier> it tries to evaluate it; thx!
11:50:57 <ski> matching on `[]' in the second argument of `f' means that `f' becomes strict in that argument. meaning that if you pass a bottom value, the result will be bottom
11:51:04 <ski> f xs _|_ = _|_
11:51:12 <Taneb> It has to evaluate it at least as far to see if it's empty or not
11:54:17 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
11:54:55 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
11:56:57 <Feuermagier> do you have a good guide on how to make a function tail-recursive?
11:57:54 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9)
11:59:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
12:00:02 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds)
12:00:28 <ski> you can try to introduce an accumulator. (one way of doing that is doing CPS, but that doesn't necessarily help)
12:00:55 <ski> also, you should ask yourself *if* you want to make the definition tail-recursive
12:01:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:01:52 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
12:01:58 <ski> it can be better to refrain from doing so, depending. if the function can be incremental, it's commonly better to refrain, since making it tail-recursive will make it bulky, i.e. non-incremental
12:02:56 <ski> also, if you introduce an accumulator, then usually you'll want to force that accumulator to some extent at least, while you're iterating
12:06:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
12:06:36 bitmagie joins (~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de)
12:06:37 usr25 joins (~usr25@unaffiliated/usr25)
12:06:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:09:49 × bitmagie quits (~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de) (Client Quit)
12:12:09 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
12:12:44 bitmapper joins (uid464869@gateway/web/irccloud.com/x-pcguwrpjphfcmwqk)
12:12:46 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:14:43 thc202 joins (~thc202@unaffiliated/thc202)
12:15:03 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
12:15:27 fendor joins (~fendor@178.115.128.24.wireless.dyn.drei.com)
12:19:45 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
12:19:52 bitmagie joins (~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de)
12:21:04 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
12:23:07 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
12:23:28 gzj joins (~gzj@unaffiliated/gzj)
12:23:41 × bitmagie quits (~Thunderbi@200116b8065e3a00e0754dbe4af9ad6b.dip.versatel-1u1.de) (Client Quit)
12:28:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:29:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:34:26 × Pickchea quits (~private@unaffiliated/pickchea) (Quit: Leaving)
12:34:54 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
12:37:09 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 264 seconds)
12:39:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
12:39:50 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
12:40:33 drbean_ joins (~drbean@TC210-63-209-12.static.apol.com.tw)
12:40:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:41:41 <Feuermagier> I'm in an IO - function and I want to call another IO-function with an initial value- how do i do that?
12:41:53 <Feuermagier> i have f :: Integer -> IO ()
12:42:03 <Feuermagier> and start :: IO
12:42:20 <Feuermagier> I want to call "f 0"
12:43:36 <lortabac> Feuermagier: start = f 0
12:43:48 <lortabac> or did I misunderstand the question?
12:43:59 <Feuermagier> Couldn't match expected type `Integer -> IO ()'
12:43:59 <Feuermagier> with actual type `IO ()'
12:44:06 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
12:44:06 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
12:44:06 mouseghost joins (~draco@wikipedia/desperek)
12:44:18 <Feuermagier> I tried that, but it dislikes the type
12:44:45 <lortabac> can you paste your actual code somewhere?
12:45:05 × dirediresalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
12:45:18 <Feuermagier> https://pastebin.com/rVSrUWZT
12:45:26 dirediresalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
12:46:06 <lortabac> there is a typo, vokalZaehler is calling itself instead of calling vokalZaehlerLoop
12:46:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
12:46:16 <Feuermagier> omg
12:46:18 <Feuermagier> thx
12:46:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:46:46 <lortabac> when the errors are too strange, it's generally a silly typo :)
12:49:58 × mananamenos quits (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 276 seconds)
12:50:20 nbloomf joins (~nbloomf@2600:1700:ad14:3020:b557:d49b:efe9:c5b5)
12:51:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
12:52:16 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:53:00 kam1 joins (~kam1@5.125.126.175)
12:53:18 ddellacosta joins (~ddellacos@86.106.143.32)
12:55:03 ubert joins (~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de)
12:55:39 × kam1 quits (~kam1@5.125.126.175) (Remote host closed the connection)
12:55:49 mananamenos joins (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net)
12:56:21 kam1 joins (~kam1@5.125.126.175)
12:57:31 peutetre joins (~peutetre@185.163.110.108)
12:58:25 × ddellacosta quits (~ddellacos@86.106.143.32) (Ping timeout: 276 seconds)
13:00:11 × mananamenos quits (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
13:01:21 supercoven joins (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi)
13:01:22 × supercoven quits (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Max SendQ exceeded)
13:01:28 emmanuel_erc joins (~user@cpe-74-71-106-64.nyc.res.rr.com)
13:01:31 <ski> Feuermagier : needs more brackets in `countChar', and less in `count'
13:01:36 supercoven joins (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi)
13:01:37 × supercoven quits (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Max SendQ exceeded)
13:01:46 <Feuermagier> ski, yeah, fixed it already
13:01:51 supercoven joins (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi)
13:01:57 <ski> also, what about `y' ?
13:02:26 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 264 seconds)
13:02:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
13:02:49 <ski> i guess it's sometimes considered a vowel, sometimes a consonant, in english. but in german, it's a vowel, right ?
13:03:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:04:04 <boxscape> ski that's typically how it's used, but only a, e, i, o, u are commonly called vowels in German
13:04:31 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:b557:d49b:efe9:c5b5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:04:35 urodna joins (~urodna@unaffiliated/urodna)
13:04:58 <Feuermagier> exactly
13:05:11 <ski> hm, i suppose `ä',`ö',`ü' are considered as versions of `a',`o',`u'
13:05:13 thc202 joins (~thc202@unaffiliated/thc202)
13:05:26 <boxscape> (looking it up, the more precise statement is that the sound usually represented by y is a vowel but only a e i o u are "vowel letters")
13:05:57 <ski> (that's not the case in swedish, though)
13:06:03 <boxscape> interesting
13:06:33 <ski> `å',`ä',`ö' are considered separate letters from `a' and `o'
13:06:54 <Feuermagier> ä ö ü are as well
13:06:59 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
13:07:02 <ski> (sorted separately (at the end of the alphabet), in dictionaries)
13:07:07 <brkscnce> hey, does anyone know why all(inRange (0,7)) (1,9) is False, but all(inRange (0,7) (9,1) resolves to True?
13:07:13 <Feuermagier> they are not in the alphabet here at all
13:07:20 <boxscape> yeah in German a and ä are interspersed in the dictionary
13:07:25 <ski> right
13:07:47 thorsten` parts (~Thorsten@ananke.uberspace.de) ("WeeChat 2.7.1")
13:08:19 <Feuermagier> often they are seen as equivalent to ae, oe, ue - often they get written that way as well. especially handy when you want to avoid localised font
13:08:20 <ski> brkscnce : because `Foldable' for tuples only considers the last component as an "element"
13:08:20 × totoro2021 quits (~t@unaffiliated/totoro2021) (Quit: WeeChat 2.7.1)
13:08:50 <brkscnce> ah, that explains it
13:09:22 <ski> > length (1,9)
13:09:24 <lambdabot> 1
13:09:31 <ski> > sum (1,9)
13:09:33 <lambdabot> 9
13:09:47 <merijn> ski: Also language dependendent
13:10:03 <ski> merijn : yes, goes without saying ?
13:10:08 <merijn> (the effect of diaeresis on vowels)
13:10:09 <brkscnce> interesting
13:10:45 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
13:10:47 <merijn> brkscnce: It makes sense when you consider "Foldable :: (* -> *) -> Constraint" i.e. foldable types take one argument
13:11:13 <merijn> brkscnce: So if we rewrite (a, b) into prefix style "(,) a b", then only "(,) a" could be Foldable
13:11:16 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
13:11:49 <brkscnce> haskell tuples are weird
13:12:00 <merijn> How so?
13:12:01 <ski> brkscnce : it's because of different components of tuples can have different types. and these types are parameters of the type constructor for the tuple type. only the last type parameter can effectively be subject to `Foldable' (and `Traversable'), by partially applying the tuple type constructor to the previous type parameters
13:12:01 <brkscnce> they probably make a lot of sense, just not used to them yet
13:12:32 <merijn> brkscnce: It makes sense when you stop considering them as "sequences of things" as they are in, for example, python
13:12:42 <brkscnce> yup
13:12:43 <ski> so, you have `Foldable ((,) a)' which means that in a value of type `(,) a b', only the component of type `b' will be folded
13:13:09 <ski> for triples, it'd be `Foldable ((,,) a b)' folding over `c' in `(,,) a b c'
13:13:53 <brkscnce> i mean i started writing haskell 2 days ago, probably going to take a bit until I get it down
13:14:51 <ski> yea, tuples are heterogenous "aggregates" of some definite number of values (that therefore can have differing types. for a give tuple type, the value at the same position always has the same type)
13:15:08 <brkscnce> makes sense
13:15:08 <ski> while lists are homogenous collections of varying length
13:15:28 <ski> (homogenous meaning that every element has the same type)
13:15:38 hpc_ is now known as hpc
13:15:55 <brkscnce> took me a second, but i was able to parse that sentence still
13:15:58 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 276 seconds)
13:16:00 <ski> conceptually, these two cases are rather different. you'd handle them differently, in code
13:16:02 <merijn> ski: something, something, Dynamic ;) *ducks*
13:16:18 <brkscnce> haskell talk does seem a lot more mathy than python talk
13:16:37 gienah joins (~mwright@gentoo/developer/gienah)
13:17:04 <ski> for a varying-length thing, normally you want to "do the same thing to every element" (that might be something slightly complex, like "if it's at an even index, do this; otherwise (odd index), do that")
13:17:05 <merijn> That's because there's lots of good maths to steal ;)
13:17:12 berberman_ joins (~berberman@unaffiliated/berberman)
13:17:14 × pera quits (~pera@unaffiliated/pera) (Quit: leaving)
13:17:15 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
13:17:26 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 240 seconds)
13:17:33 Deide joins (~Deide@217.155.19.23)
13:17:37 <brkscnce> yeah, I mean I'm really just using them for array indexing
13:17:59 <brkscnce> so I need to generate series of them
13:18:06 <ski> there are cases where one wants a varying-length sequence of elements not all of the same type. but this is comparatively rare. and normally, there's some definite pattern between the types, even in this cases
13:18:40 <merijn> > (,) <$> [0..5] <*> [0..5] -- something like that? :p
13:18:41 <lambdabot> [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(2,...
13:18:42 mayleesia joins (4dbf5b8f@x4dbf5b8f.dyn.telefonica.de)
13:18:48 <ski> e.g. you might want a sequence, where the first element contains one object, the next contains two objects, the next contains three objects, and so on
13:18:57 <brkscnce> yup
13:19:12 nbloomf joins (~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee)
13:19:19 <ski> or perhaps the first contains one, next one contains two, next one contains four, next eight .. doubling every time
13:19:21 <brkscnce> actually that's quite neat, did not see the <> operators before
13:19:32 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:19:36 <brkscnce> have to check out what those do
13:19:38 <merijn> brkscnce: <$> is just fmap as operator
13:19:45 <boxscape> brkscnce you'll learn about them once you learn about the Applicative class
13:19:53 <ski> you can do these in Haskell, too, if you want to. but you'd have to make a custom sequence type for that particular use-case, can't use the regular homogenous lists
13:20:09 <merijn> brkscnce: <*> is from Applicative, which, for lists, does cartesian product (speaking of mathy >.>)
13:20:28 <ski> > liftA2 (,) [0 .. 3] [0 .. 2]
13:20:29 <lambdabot> [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2)]
13:20:46 <ski> > [(x,y) | x <- [0 .. 3],y <- [0 .. 2]]
13:20:48 <lambdabot> [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2)]
13:20:49 <brkscnce> I mean I'm honestly enjoying haskell so far
13:20:56 × deja quits (~deja@212095008174.public.telering.at) (Quit: requested)
13:21:04 <ski> > [(x,y) | x <- [0 .. 3],y <- [0 .. x]]
13:21:05 <lambdabot> [(0,0),(1,0),(1,1),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2),(3,3)]
13:21:23 deja joins (~deja@212095008174.public.telering.at)
13:21:25 <merijn> brkscnce: Occasional sensation of brains melting out of ears is considered expected behaviour ;)
13:21:40 <ski> > do x <- [0 .. 3]; y <- [0 .. x]; return (x,y)
13:21:41 <lambdabot> [(0,0),(1,0),(1,1),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2),(3,3)]
13:21:56 geekosaur joins (82650c7a@130.101.12.122)
13:21:58 <ski> @quote is.the.solution
13:21:58 <lambdabot> quicksilver says: head-explosion is the solution, not the problem.
13:22:04 <merijn> Not sure 50 variations of tupling lists will add much ;)
13:22:10 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee) (Client Quit)
13:22:12 <brkscnce> I feel like it's just been constantly broiling since I've started
13:22:57 lemmih joins (~lemmih@2406:3003:2072:44:d8ed:96e9:a19d:e53b)
13:23:16 <swarmcollective> Once you get used to the predictability of pure functions, it will balance out (at least in my experience). And that is wonderful.
13:23:44 <brkscnce> there's also like so many ways to skin a cat here
13:24:07 <ski> different approaches can be good in differing circumstances
13:24:10 <dminuoso> brkscnce: That's programming. In Haskell we just have a larger plethora of tools and combinators. :)
13:24:12 <brkscnce> i mean I mostly write python, which is very "this is the way you skin these cats"
13:24:17 <ski> and there's room for variation, and for style and taste
13:25:19 <ski> part of the point here is that it's usually relatively easy (at least compared to many other languages) to refactor some piece of code, step by step, by reformulating things successively
13:26:01 <ski> without "multiple (slightly different, with different pros and cons) ways to do the same thing", that would presumably be harder
13:26:07 <brkscnce> yeah, it does feel a lot more fluid
13:26:15 <boxscape> yeah python has "there's only one obvious way to do things" as one of its mantras, doesn't it
13:26:29 <brkscnce> indeed, it's part of the Zen of Python
13:26:47 <ski> if the alternatives are more or less completely functionally equivalent, then there's not much point, agreed
13:26:49 <merijn> brkscnce: Ironically, over time they are breaking their Zen more and more ;)
13:26:57 × deja quits (~deja@212095008174.public.telering.at) (Quit: requested)
13:27:04 <merijn> *Especially* "explicit is better than implicit"
13:27:07 <ski> merijn : probably for good reason
13:27:23 <merijn> ski: tbh, the Zen of Python has some sensible stuff
13:27:41 <xsperry> > zip [0..3] [0..2] -- the most obvious (and boring) version
13:27:43 <lambdabot> [(0,0),(1,1),(2,2)]
13:27:45 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
13:27:53 <merijn> xsperry: That does something different
13:27:57 <ski> "explicit is better than implicit" sounds like a thing that one ought to say "it depends" to
13:27:58 <__minoru__shirae> brkscnce: why would a beginner use tuples as foldables though?
13:28:01 × xff0x quits (~xff0x@port-92-195-110-249.dynamic.as20676.net) (Ping timeout: 256 seconds)
13:28:15 <xsperry> uh, yeah I wasn't paying attention
13:28:32 <brkscnce> trying to write a chess move generator, so I'm storing the board as an array
13:28:35 <boxscape> __minoru__shirae because a lot of methods that encode very straightforward concepts require Foldable
13:28:45 <brkscnce> which seemed fine to me, since I'm not mutating it, and i'm checking all over
13:29:00 <brkscnce> so having nested lists seemed icky to me?
13:29:15 <merijn> brkscnce: Also, slow :p
13:29:23 <ski> beginners can easily conflate the "heterogenous, definite size" with the "homogenous, indefinite size" aggregates, coming from a language that doesn't that clearly emphasize the distinction
13:29:24 <brkscnce> yup, O(n) over and over
13:29:30 <merijn> brkscnce: Nested lists are a mess. They're slow, might have inconsistent dimensions, etc.
13:29:38 <merijn> Array is much better
13:29:47 <boxscape> tbf it's actually O(8) in both dimensions making it O(1) :P
13:29:48 <brkscnce> hence the (0,0)(7,7) array
13:29:53 × _noblegas quits (uid91066@gateway/web/irccloud.com/x-koxpwnnitfybavxb) (Quit: Connection closed for inactivity)
13:29:54 <ski> brkscnce : two-dimensional array ?
13:29:55 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:30:03 <brkscnce> for the board, yeah
13:30:07 <__minoru__shirae> boxscape: I mean there should be an alternative, more beginner-friendly way of doing things than using tuples as foldables
13:30:07 <merijn> brkscnce: Alternatively, you could have gone for "Map (Int, Int) Square", but for something as tiny as a chessboard it doesn't matter much
13:30:46 <merijn> brkscnce: FYI, Array isn't limited to either 0 indexing nor integral indexing
13:31:15 <merijn> brkscnce: You could, hypothetically, use an array that's indexed via, say (H, 5) :p
13:31:23 <ski> you could make an enumeration type for the chess rows, and one for the chess columns, and index with those
13:31:31 <ski> yea
13:31:34 <brkscnce> right, because tuple indexes
13:31:43 <brkscnce> and tuples being heterogenous
13:31:47 <ski> (more specifically, the index types needs to be instances of `Ix')
13:31:50 Sheilong joins (uid293653@gateway/web/irccloud.com/x-ozhkekfvbfssrzmb)
13:31:54 <merijn> brkscnce: Well, the real trick is that it indexes via Ix
13:32:03 <merijn> brkscnce: And you can provide custom instances for that
13:32:13 <merijn> (Which tuples have)
13:32:34 <boxscape> hm does [Int] have an Ix instance
13:32:48 deja joins (~deja@212095008174.public.telering.at)
13:32:48 <brkscnce> should have, right?
13:32:53 <merijn> Specifically "instance (Ix a, Ix b) => Ix (a, b)" (i.e. tuples are indexable if their components are)
13:32:56 <boxscape> % range ([1,2], [3,4])
13:32:57 <yahb> boxscape: ; <interactive>:55:1: error:; * No instance for (Ix [Integer]) arising from a use of `it'; * In the first argument of `print', namely `it'; In a stmt of an interactive GHCi command: print it
13:32:59 <ski> @let data Column = A | B | C | D | E | F | G | H deriving (Show,Read,Eq,Ord,Bounded,Enum,Ix)
13:32:59 <boxscape> nope
13:33:01 <lambdabot> Defined.
13:33:11 <boxscape> (well, that was [Integer] not [Int], but close enough)
13:33:29 <merijn> ski: Should have a bounded newtype with smart constructor for the column ;)
13:33:31 × usr25 quits (~usr25@unaffiliated/usr25) (Ping timeout: 276 seconds)
13:33:55 ski forgets whether it's columns or rows that are lettered
13:34:04 <boxscape> you mean ranks or files :P
13:34:15 <ski> ty, that's better :)
13:35:06 dyeplexer joins (~lol@unaffiliated/terpin)
13:35:11 <merijn> So far today's "lets overcomplicate things" session ;)
13:35:21 ski grins
13:35:28 <brkscnce> hrm, that looks very clean, but at the same time, I think I'd probably need to define something to add a number to a rank, which seems like extra work
13:35:56 <brkscnce> like A + 2 or B - 1
13:36:18 <merijn> "offsetRank :: Rank -> Int -> Maybe Rank" ;)
13:36:38 <merijn> (or file, whatever)
13:36:55 <merijn> brkscnce: You can go quite far with that, but whether it's worth the effort right now is...debatable :)
13:37:12 <ski> > (toEnum . pred . fromEnum :: Column -> Column) C
13:37:14 <lambdabot> B
13:37:22 <boxscape> > (toEnum . pred . fromEnum :: Column -> Column) A
13:37:24 <lambdabot> *Exception: toEnum{Column}: tag (-1) is outside of enumeration's range (0,7)
13:37:28 <boxscape> partial :(
13:37:29 <merijn> ski: You...probably don't want wrap around for a chess board :p
13:37:31 <brkscnce> I mean the letter representations really only come back up when I'm converting the position tuples back to string moves
13:37:46 <brkscnce> only if you're playing moebius chess
13:37:53 <ski> no wrap
13:37:58 <boxscape> ooh or klein bottle chess
13:37:58 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
13:38:56 <brkscnce> right now I'm just doing posToString (x,y) = ['a'..'h'] !! x .. ['1'..'8'] !! y
13:39:05 totoro2021 joins (~t@unaffiliated/totoro2021)
13:39:06 <brkscnce> which seems sufficient
13:39:26 <boxscape> brkscnce the nice thing about the letter representation is that you're guaranteed to only have valid indices, since you can't even generate an index like (4,9)
13:39:39 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) (Client Quit)
13:39:40 <brkscnce> hrm, yeah
13:39:45 <boxscape> though as merijn said "whether it's worth it is debateable"
13:39:48 <merijn> boxscape: Supporting the numbered index is awkward, though
13:39:49 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
13:39:52 <boxscape> yes
13:40:01 × z0k quits (~user@115-186-141-91.nayatel.pk) (Ping timeout: 276 seconds)
13:40:05 <merijn> You'd have to newtype + smart constructor and before you know it you're in funky town ;)
13:40:07 <brkscnce> right now I'm using a filter function to try to restrict the generated ranges
13:40:18 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:40:48 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
13:40:49 <brkscnce> which is where that fold problem popped up, since I was trying to do takeBounded = takeWhile $ all $ inRange (0,7)
13:40:49 <boxscape> merijn could also go directly to funkytown with Fin (S (S (S (S (S (S (S (S Z)))))))) :)
13:40:59 Tario joins (~Tario@201.192.165.173)
13:41:05 <boxscape> (actually 7 Ss, not 8)
13:41:13 <boxscape> no, 8
13:41:30 <ski> off-by-one, here we come ! :)
13:42:51 <ski> brkscnce : i'd use brackets there
13:43:13 <brkscnce> for style reasons, or danger reasons?
13:43:45 × sm2n quits (~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca) (Ping timeout: 264 seconds)
13:43:46 <ski> style. `$' is ugly, i generally try to use it as little as possible .. with only a few exceptions
13:43:49 <boxscape> how much $ is being used differs from code base to code base
13:44:43 <brkscnce> I did read a page saying it was controversial
13:44:50 <ski> at least `takeWhile . all . inRange $ (0,7)' would probably look nicer (and, imho, `(takeWhile . all . inRange) (0,7)', moreso). but there's nothing wrong with `takeWhile (all (inRange (0,7)))', either
13:45:23 <brkscnce> right, the . for function composition, might change it to that
13:45:40 <brkscnce> because that's more what I'm trying to say there
13:45:42 <merijn> boxscape: Chess in typeclasses on the type level :p
13:45:47 <merijn> I'm sure Oleg has done that
13:45:52 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 276 seconds)
13:46:10 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
13:46:11 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
13:46:14 <boxscape> merijn hm reminds me of the blog post about the 8 queens problem in classes
13:46:15 <merijn> You want "inRange ((0,0), (7,7))", no?
13:46:29 <ski> it's generally a good habit to replace `foo $ bar $ baz $ quux $ blah' by `foo . bar . baz . quux $ blah' (or `(foo . bar . baz . quux) blah' or `foo (bar (baz (quux blah)))')
13:46:30 <merijn> > inRange ((0,0),(7,7) (0,9)
13:46:32 <lambdabot> <hint>:1:27: error:
13:46:32 <lambdabot> <hint>:1:27: error:
13:46:32 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
13:46:37 <merijn> > inRange ((0,0),(7,7)) (0,9)
13:46:38 <lambdabot> False
13:46:44 <merijn> > inRange ((0,0),(7,7)) (3,5)
13:46:46 <lambdabot> True
13:46:48 <brkscnce> oh, I can do that?
13:46:52 <ski> sure
13:46:55 <merijn> :t inRange
13:46:56 <lambdabot> Ix a => (a, a) -> a -> Bool
13:47:01 <boxscape> (i.e. https://aphyr.com/posts/342-typing-the-technical-interview )
13:47:16 <merijn> brkscnce: tuples are Ix instances, so yes :)
13:47:24 <ski> `a' there is the index type. in this case, it's type of pairs of rank and file indices
13:47:25 <brkscnce> well, that makes my function redundant, that's great
13:48:25 × drbean_ quits (~drbean@TC210-63-209-12.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
13:49:03 <brkscnce> oh, also, i guess a style question, if I'm taking an input string, and doing things to it until its in the form I'd like it to be, and I do not care about intermediary results, would I pack all of that processing into a where?
13:49:09 <ski> brkscnce : in `foo . bar . baz . quux', you could break/factor out any composition subsequence into its own definition, and vice versa. not so with the `$' version
13:49:42 <ski> brkscnce : you could use `<$>', possibly
13:50:13 <brkscnce> for composition or string processing?
13:50:17 <ski> `where' can not access your local variable inside `do', unless the `where' is inside the `do' as well (which is usually not what happens. you'll know if you do this)
13:50:33 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
13:50:51 <merijn> brkscnce: "It Depends (TM)" ;)
13:50:58 <ski> myResult <- (finalProcess . moreProcess . initialProcess) <$> readLn
13:51:09 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
13:51:18 <ski> however, if you want to catch parse errors and the like, you may want to break that up
13:52:25 <brkscnce> I think catching fire on malformed input is fine and preferred for this script
13:52:44 <ski> (i guess those brackets are redundant)
13:53:15 <brkscnce> you'd use those if you're doing (f . g . h) (x), right?
13:53:40 <xsperry> (f . g . h) x works too
13:53:43 ski would
13:54:00 <merijn> xsperry: Depends on if 'x' is a variable or a meta-variable ;)
13:54:02 <ski> in general, `x' might be a non-atomic expression
13:54:23 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
13:54:36 ski . o O ( meta all the variables ! )
13:55:11 sm2n joins (~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca)
13:55:17 <brkscnce> also, another thing I have yet to find a good example for, how would you split one value into several variables cleanly?
13:55:28 <brkscnce> if the calculation of those variables shares processing
13:55:47 <ski> return a tuple (or a list) is a common choice
13:56:05 <brkscnce> so (x,y) = expression is fine?
13:56:15 <ski> > let (front,back) = splitAt 2 "fubar" in back ++ front
13:56:16 <lambdabot> "barfu"
13:56:18 <ski> yes
13:56:53 <brkscnce> right, just seemed like the kind of thing where it's either totally fine or I'm committing a grave sin, and I will be shamed for it
13:57:22 <Taneb> This one's at the "totally find" end
13:57:28 <ski> sometimes you'll want to pass on those two parts directly to some other function, without having to name them
13:57:37 <__minoru__shirae> boxscape, hey, I searched aphyr! I heard that nickname in another language and didn't know how to spell it in english
13:57:47 × hendursa1 quits (~weechat@gateway/tor-sasl/hendursaga) (Quit: hendursa1)
13:57:50 <ski> if that function accepts them curriedly, you could use `uncurry' on the function to be able to do this
13:58:15 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
13:58:15 <ski> > (uncurry . flip) (++) (splitAt 2 "fubar")
13:58:17 <lambdabot> "barfu"
13:58:19 hendursaga joins (~weechat@gateway/tor-sasl/hendursaga)
13:58:55 <brkscnce> right, that's the one where you modify a function to take a tuple or reverse it
13:59:06 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
13:59:09 <brkscnce> which, honestly, very neat
13:59:20 <ski> yea, `uncurry' makes it take a pair, and then feeds the two components of that pair to the original function
13:59:27 <ski> `curry' does the opposite thing
13:59:31 <merijn> brkscnce: It also depends how complex your splitting is :p
13:59:41 <boxscape> __minoru__shirae judging by your nickname, did you hear it in Japanese?
13:59:44 <merijn> brkscnce: At some point the answer just becomes "write a proper parser" :p
14:00:00 <ski> for more complicated cases, it's probably a better idea to name things, rather than attempting to juggle them, unnamed
14:00:15 <__minoru__shirae> boxscape, no I heard it in a podcast in russian
14:00:22 <boxscape> ah, got it
14:02:34 <brkscnce> https://paste.tomsmeding.com/cAOk5jxp I mean this is roughly my two attempts at it so far
14:04:28 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9)
14:04:31 <brkscnce> in the first I'm taking the string through various intermediary values, In the second I try to compose things a bit more, tuck away some of the intermediary functions
14:04:35 <ski> [boardRaw,player2] = words testString -- ?
14:04:37 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
14:05:27 <brkscnce> right, that works
14:05:52 petersen joins (~petersen@redhat/juhp)
14:06:05 <brkscnce> didn't even think of that, i can pattern match lists, right
14:06:13 <ski> numToSpc n = replicate ' '
14:06:31 <ski> @src replicate
14:06:32 <lambdabot> replicate n x = take n (repeat x)
14:06:46 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
14:07:10 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
14:07:33 <ski> `read [cha]' could be `digitToInt cha'
14:07:38 jacks2 joins (~bc8134e3@217.29.117.252)
14:08:24 <jacks2> you can pattern match many things, including data of types you created
14:08:51 <ski> concatMap f xs = concat (map f xs)
14:08:53 nbloomf joins (~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee)
14:08:57 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
14:08:58 <brkscnce> yeah, I keep thinking about it too much like pythons tuple unpacking
14:10:00 <ski> why `init' in `boardSpc' ?
14:11:04 usr25 joins (~usr25@unaffiliated/usr25)
14:11:44 <brkscnce> it's a chess variation with a depot marked down as a 9th rank, so the last element needs to be removed
14:11:49 <ski> boardArr = array ((0,0),(7,7)) [((x,y),val) | (y,row) <- zip [0 ..] boardSpc,(x,val) <- zip [0 ..] row]
14:11:53 <ski> if you define
14:12:16 <ski> tabulate ix f = listArray ix [f i | i <- range ix]
14:12:17 deviantfero joins (~deviantfe@190.150.27.58)
14:12:26 <ski> then you could say
14:13:15 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
14:13:52 zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
14:13:53 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Read error: Connection reset by peer)
14:14:28 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 276 seconds)
14:14:39 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:15:00 <ski> well, i guess it doesn't make much sense in this case to us `tabulate ((0,0),(7,7)) (\(x,y) -> ..x..y..)'
14:15:19 <ski> boardArr = listArray ((0,0),(7,7)) boardSpc -- i think
14:15:26 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
14:15:46 <ski> > range ((0,0),(2,1))
14:15:48 <lambdabot> [(0,0),(0,1),(1,0),(1,1),(2,0),(2,1)]
14:16:29 <ski> ah, so it'd be `(y,x)', not `(x,y)', when indexing, if you use the standard ordering
14:16:51 thc202 joins (~thc202@unaffiliated/thc202)
14:16:57 carlomagno joins (~cararell@148.87.23.6)
14:16:58 <brkscnce> so curses indexing
14:17:18 <ski> (oh, guess you also need `(concat boardSpc)', not just `boardSpc')
14:17:24 ezrakilt_ joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
14:17:31 <ski> yea .. so might not be worth it
14:17:37 <brkscnce> but that might actually work out, since the elements in the outer list are ranks
14:17:50 <zmagii> When aphyr said he has a Mastodon for leather, I kind of thought for leather craft... eh.
14:17:52 <brkscnce> so y is ranks, x is files
14:18:16 <ski> (that tells me nothing, not being familiar with the terms "rank" and "file")
14:19:17 <brkscnce> ah, chess ranks are the rows of the board, and files are the columns
14:19:27 <ski> i'd definitely avoid the `concat' on the list comprehension, though
14:19:53 <ski> ok
14:21:30 <brkscnce> hrm, so I could do array ((0,0), (7,7)) (zip (range((0,0), (7,7))) (concat boardSpc))
14:21:36 × ezrakilt_ quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 240 seconds)
14:22:02 <ski> or just use `listArray' ?
14:22:28 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
14:22:28 <ski> (it uses the `Ix' ordering of the elements)
14:22:37 × Chai-T-Rex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
14:22:51 <ski> > listArray ((0,0),(2,1)) "abcdef"
14:22:53 <lambdabot> array ((0,0),(2,1)) [((0,0),'a'),((0,1),'b'),((1,0),'c'),((1,1),'d'),((2,0),...
14:23:06 <brkscnce> ah, right, didn't initally get what that function did
14:23:26 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Read error: No route to host)
14:23:50 <ski> listArray ix es = array ix (zip (range ix) es) -- basically
14:24:16 <brkscnce> alright, that does look a lot cleaner
14:24:47 <ski> as long as you're ok with the standard `Ix' ordering, that should be less cluttered
14:25:09 <ski> `array', though, allowes the elements to come in any order, since their indices are attached
14:25:13 Chai-T-Rex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
14:25:29 <ski> (last one wins, if there's duplicates, iirc)
14:25:50 <brkscnce> right, but if they're already correctly ordered, it isn't necessairy
14:26:10 <ski> > array ((),()) (zip (repeat ()) [False,True])
14:26:12 <lambdabot> array ((),()) [((),True)]
14:26:21 <ski> right
14:26:31 terzievk joins (~user@78.90.139.65)
14:26:35 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
14:27:17 <brkscnce> thanks, that actually does simplify a number of spots where I was like "huh, there probably is a better way here" when I wrote them
14:27:22 hackage lifted-async 0.10.1.3 - Run lifted IO operations asynchronously and wait for their results https://hackage.haskell.org/package/lifted-async-0.10.1.3 (MitsutoshiAoe)
14:27:56 kupi joins (uid212005@gateway/web/irccloud.com/x-ueszxmgrjupzjwnp)
14:29:46 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:29:55 <terzievk> Does anybody know happen to know how to tell emacs to use dynamic linking with haskell related stuff? Or maybe it's supposed to work with static linking only? Which one is preferred?
14:30:21 <Unhammer> I'm having some weird issues with tempfiles disappearing in windows – I'm using System.Process.Typed and UnliftIO.Temporary, with something like
14:30:22 <Unhammer> withSystemTempFile name $\f h ->withSystemTempFile name $\fe he -> runProcess (setStdout (useHandleOpen h) $ setStdErr (useHandleOpen he) $ proc prog args) >>= readOnFail f fe
14:31:08 <Unhammer> shouldn't withSystemTempFile ensure the file exists as long as the path and handle are in scope?
14:31:22 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 276 seconds)
14:31:31 × kuribas quits (~user@ptr-25vy0i6y5ai1dlzwgol.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
14:31:54 <merijn> Unhammer: No
14:32:00 <geekosaur> terzievk, static linking for Haskell libs is preferred, add --dynamic if you really want dynamic linking
14:32:28 gr33nbits joins (~gr33nbits@a109-49-87-64.cpe.netcabo.pt)
14:32:36 <merijn> Unhammer: Well, wait, maybe I dunno, I don't understand how that code associates
14:32:36 <Unhammer> assuming I'm not actively deleting it of course
14:34:04 <merijn> Unhammer: Why are you using temp files to access the output of the child process anyway?
14:34:18 <merijn> Unhammer: Why not just use pipes?
14:34:42 <Unhammer> I want to attach the output to an email if it's smaller than x bytes
14:34:59 <merijn> That seems unrelated to the question?
14:35:22 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
14:35:26 <merijn> You can read the data from the pipe and then do whatever you want, same as you appear to do now
14:35:28 <Unhammer> I have to check the size of the output, and I don't want to keep it in memory (in case it's huge)
14:35:32 Tario joins (~Tario@201.192.165.173)
14:35:54 × Graf_Blutwurst quits (~grafblutw@2001:171b:226e:adc0:e40c:bc1a:ac08:b43b) (Quit: WeeChat 3.0)
14:35:56 <Unhammer> but I want the file to disappear when my whole program is done
14:36:11 <terzievk> geekosaur: yes, compiling with ghc -dynamic does the job, but I was wondering if somebody knows how to tell emacs `haskell-mode` to use dynamic linking
14:36:40 <geekosaur> I don't know the mode variable name offhand
14:37:11 nbloomf joins (~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee)
14:39:50 × ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection)
14:40:05 <geekosaur> in any case it is probably easier to specify it as part of a cabal or stack project, as opposed to hardcoding in your config or using a local vars section in specific source files
14:40:12 ukari joins (~ukari@unaffiliated/ukari)
14:40:17 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
14:40:34 Tario joins (~Tario@201.192.165.173)
14:41:21 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9)
14:41:48 <terzievk> geekosaur: thanks
14:42:01 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
14:42:33 × son0p quits (~son0p@181.58.39.182) (Quit: leaving)
14:43:15 × ubert quits (~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de) (Quit: ubert)
14:43:45 ubert joins (~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de)
14:47:23 × borne quits (~fritjof@200116b864cbc80010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
14:51:02 × geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
14:52:18 z0k joins (~user@115-186-141-91.nayatel.pk)
14:53:25 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:54:01 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
14:54:20 son0p joins (~son0p@181.136.122.143)
14:56:51 hackage too-many-cells 2.1.0.1 - Cluster single cells and analyze cell clade relationships. https://hackage.haskell.org/package/too-many-cells-2.1.0.1 (GregorySchwartz)
14:57:17 × jacks2 quits (~bc8134e3@217.29.117.252) (Quit: quit)
14:57:51 hackage ghc-trace-events 0.1.2.2 - Faster traceEvent and traceMarker, and binary object logging foreventlog https://hackage.haskell.org/package/ghc-trace-events-0.1.2.2 (MitsutoshiAoe)
15:01:18 × nek0 quits (~nek0@mail.nek0.eu) (Quit: The Lounge - https://thelounge.chat)
15:06:44 geowiesnot_bis joins (~user@87-89-181-157.abo.bbox.fr)
15:08:41 nhs joins (~nhs@ip68-2-235-160.ph.ph.cox.net)
15:11:33 × cantstanya quits (~chatting@gateway/tor-sasl/cantstanya) (Remote host closed the connection)
15:11:47 cartwright joins (~chatting@gateway/tor-sasl/cantstanya)
15:12:44 avn joins (~avn@78-56-108-78.static.zebra.lt)
15:16:01 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
15:21:25 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds)
15:22:04 knupfer joins (~Thunderbi@i577BCEAC.versanet.de)
15:23:01 × knupfer quits (~Thunderbi@i577BCEAC.versanet.de) (Client Quit)
15:23:13 knupfer joins (~Thunderbi@200116b824ff4800ec20a5b5814c5563.dip.versatel-1u1.de)
15:25:04 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:bcbc:e9c6:2795:e9ee) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:25:10 _noblegas joins (uid91066@gateway/web/irccloud.com/x-ifvgvksedlldsfmy)
15:25:21 Jd007 joins (~Jd007@162.156.11.151)
15:27:31 × z0k quits (~user@115-186-141-91.nayatel.pk) (Read error: Connection reset by peer)
15:27:56 Pickchea joins (~private@unaffiliated/pickchea)
15:28:09 × Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 264 seconds)
15:28:38 z0k joins (~user@115-186-141-91.nayatel.pk)
15:28:44 crobbins joins (~crobbins@2600:380:b821:1504:174:cc11:b263:1220)
15:30:58 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
15:31:30 × hiroaki__ quits (~hiroaki@2a02:8108:8c40:2bb8:8fe4:ef1e:34cd:b814) (Remote host closed the connection)
15:32:55 CatWithMoustache joins (~CatWithMo@gateway/tor-sasl/catwithmoustache)
15:33:30 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
15:37:22 alx741 joins (~alx741@181.196.69.27)
15:38:02 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
15:38:03 × Feuermagier quits (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Quit: Leaving)
15:38:27 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
15:39:54 × thunderrd quits (~thunderrd@183.182.115.128) (Ping timeout: 272 seconds)
15:43:45 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
15:47:16 xff0x joins (~xff0x@2001:1a81:52d0:d300:e069:1246:9742:b9dd)
15:49:31 ozataman joins (~textual@pool-100-37-221-69.phlapa.fios.verizon.net)
15:52:14 × crobbins quits (~crobbins@2600:380:b821:1504:174:cc11:b263:1220) (Ping timeout: 264 seconds)
15:52:45 thunderrd joins (~thunderrd@183.182.112.145)
15:56:26 ddellacosta joins (~ddellacos@86.106.143.10)
15:56:47 × kam1 quits (~kam1@5.125.126.175) (Read error: Connection reset by peer)
15:57:20 ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net)
15:57:28 × ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Changing host)
15:57:28 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
15:58:40 <bitmapper> is there a way to use indexed lenses with iovector?
15:58:58 Wuzzy joins (~Wuzzy@p5b0df8ea.dip0.t-ipconnect.de)
15:59:31 jamm_ joins (~jamm@unaffiliated/jamm)
16:00:28 × deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0)
16:02:21 × aqd quits (~aqd@84.20.147.33) (Quit: Textual IRC Client: www.textualapp.com)
16:02:24 deviantfero joins (~deviantfe@190.150.27.58)
16:02:30 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
16:04:26 <zebrag> When nat-transform horizontally composing `beta . alpha`, it is "beta after lifted alpha", or, "(the other)-lifted alpha after beta". I'm pretty sure I'm not mistaken there. The fact that alpha might be after beta, or equivalently, before, is mind-boggling.
16:06:04 <zebrag> I'm pretty sure it's true, I've been doing the diagram chasing, but nevertheless I can't believe it.
16:06:12 hrdl_ is now known as hrdl
16:06:27 <zebrag> It just doesn't stick.
16:06:39 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
16:07:03 × chisui quits (5882391e@mue-88-130-57-030.dsl.tropolys.de) (Ping timeout: 240 seconds)
16:07:11 <infinisil> :t void . pure
16:07:12 <lambdabot> Applicative f => a -> f ()
16:07:42 <infinisil> Saw this in a codebase, seems entirely useless!
16:08:22 <shapr> ah, the purity of the void
16:08:39 <c_wraith> bitmapper: see the lens-action package
16:08:46 soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net)
16:09:29 × juri_ quits (~juri@178.63.35.222) (Ping timeout: 265 seconds)
16:09:43 <bitmapper> thanks!
16:10:59 <infinisil> % void . pure $ undefined
16:10:59 <yahb> infinisil:
16:11:10 <infinisil> Doesn't even evaluate the argument
16:11:12 ski . o O ( insert standard complaint about that `void' name being exported from non-FFI modules )
16:11:13 <hololeap> nothing is useless
16:12:23 <ski> Nothing seems pretty useful, to me
16:12:36 <hololeap> although, arguably `pure ()` is butter
16:12:53 <hololeap> and bread
16:13:02 <hololeap> wow, good morning folks
16:13:36 ski . o O ( butter cake )
16:13:56 ski waves
16:14:22 Rudd0 joins (~Rudd0@185.189.115.103)
16:14:24 smitop joins (uid328768@gateway/web/irccloud.com/x-fvijgodnvjoivvsf)
16:14:35 <remexre> is there a good way to have multiple runnable-as-main lhs files which can import things from each other?
16:14:55 <remexre> would I wanna make each one a cabal executable?
16:16:39 <c_wraith> that's a bit of an unexpected use case. You'd want to make each an executable no matter what, but importing from each other seems weird.
16:17:28 nek0 joins (~nek0@mail.nek0.eu)
16:17:35 <remexre> yeah; I've got a blog post that has an algorithm and a main function (to do some demo)
16:17:53 <remexre> then a followup one that depends on it, and some misc tooling that depends on it too
16:18:03 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
16:18:08 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
16:18:37 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0)
16:19:56 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
16:19:57 <hololeap> does cabal let you "overlap" dirs? can a lib and an executable stanza both point to the same dir?
16:20:08 <hololeap> remexre: you may have to experiment with this yourself
16:20:10 <c_wraith> hololeap: yes, but it doesn't work the way you'd hope.
16:20:25 <c_wraith> hololeap: it recompiles modules instead of getting them from the lib
16:21:01 <c_wraith> remexre: it should all just work. the problem is just that it would recompile stuff a lot.
16:21:17 <remexre> okay, I'll try that; would this be like,
16:21:28 <remexre> library exposed-modules: Foo, Bar
16:21:33 <remexre> executable Foo main-is: Foo.hs
16:21:36 <remexre> ?
16:21:46 <c_wraith> I wouldn't have a library stanze. just the executables
16:21:51 <c_wraith> *stanza
16:22:11 <bitmapper> c_wraith: i don't really understand how to use it tbh
16:22:17 × chele quits (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
16:22:17 × jippiedoe quits (4dab983e@77-171-152-62.fixed.kpn.net) (Quit: Connection closed)
16:22:35 <remexre> oh, sweet, that works; thanks to both y'all!
16:23:01 <c_wraith> bitmapper: well, it only works for Getters and Folds. If you want to update, it doesn't do the job.
16:23:40 <hololeap> what about just sticking them all in the same dir, then just using ghc directly? `module Foo where ... main = ...` ; `module Bar where ... import Foo ... main = ...`
16:23:59 <hololeap> then compile Foo.hs and Bar.hs directly with ghc
16:24:16 <remexre> I tried this with ghci and it was unhappy
16:24:26 <remexre> er, runghc*
16:25:34 crobbins joins (~crobbins@2601:2c1:200:ec50:6092:acc2:26a1:f490)
16:26:17 <hololeap> remexre: are you going to be presenting this?
16:26:27 <hololeap> (just curious)
16:26:38 <remexre> uh like I'm not gonna be recommending my setup to anyone else :P
16:26:56 <hololeap> you said it was for some kind of demo
16:28:46 <remexre> More like, I'm demoing some language's semantics in a blogpost; the haskell implementation is... relevant, but not the "cool part"
16:31:44 <hololeap> oh ok. i was just wondering.
16:31:58 syd joins (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net)
16:32:58 gioyik joins (~gioyik@gateway/tor-sasl/gioyik)
16:33:37 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:34:50 chisui joins (5882391e@mue-88-130-57-030.dsl.tropolys.de)
16:35:26 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:36:05 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
16:36:34 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
16:37:58 nbloomf joins (~nbloomf@2600:1700:ad14:3020:e9e3:841b:e645:b35e)
16:38:00 × son0p quits (~son0p@181.136.122.143) (Ping timeout: 265 seconds)
16:38:13 <ij> I need to draw pixels on a canvas and export it as a png – juicypixels or hip?
16:38:14 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:39:08 <ij> ah, I read the readmes, nvm
16:42:58 × carlomagno quits (~cararell@148.87.23.6) (Quit: Leaving.)
16:44:09 ep1ctetus joins (~epictetus@ip72-194-215-136.sb.sd.cox.net)
16:46:14 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Quit: Leaving)
16:49:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
16:49:52 × knupfer quits (~Thunderbi@200116b824ff4800ec20a5b5814c5563.dip.versatel-1u1.de) (Read error: Connection reset by peer)
16:50:06 knupfer joins (~Thunderbi@200116b824ff48009d25b45d13597f3f.dip.versatel-1u1.de)
16:50:15 × mayleesia quits (4dbf5b8f@x4dbf5b8f.dyn.telefonica.de) (Quit: Connection closed)
16:50:37 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:e9e3:841b:e645:b35e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:51:13 juri_ joins (~juri@178.63.35.222)
16:53:08 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
16:53:23 nbloomf joins (~nbloomf@2600:1700:ad14:3020:e9e3:841b:e645:b35e)
16:53:48 bergey joins (~user@107.181.19.30)
16:56:07 geekosaur joins (82650c7a@130.101.12.122)
16:56:47 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:e9e3:841b:e645:b35e) (Client Quit)
16:57:12 × usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving)
16:57:22 <shapr> ij: what was the answer?
17:02:22 bennofs_ joins (~quassel@dslb-094-222-093-100.094.222.pools.vodafone-ip.de)
17:03:17 × sMuNiX quits (~sMuNiX@lnsm2-montreal02-142-118-236-120.internet.virginmobile.ca) (Ping timeout: 256 seconds)
17:03:28 <tomsmeding> for those who have set their browser (or perhaps their OS) to prefer dark mode, what do you think of my colour choices? https://paste.tomsmeding.com/ | https://paste.tomsmeding.com/FbLBhrVM
17:03:54 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
17:03:54 × srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
17:04:05 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
17:04:16 hexo joins (~hexo@gateway/tor-sasl/hexo)
17:04:17 srk joins (~sorki@gateway/tor-sasl/sorki)
17:04:33 carlomagno joins (~cararell@148.87.23.4)
17:04:42 × darjeeling_ quits (~darjeelin@122.245.218.150) (Ping timeout: 268 seconds)
17:04:45 sMuNiX joins (~sMuNiX@lnsm2-montreal02-142-118-236-120.internet.virginmobile.ca)
17:05:37 jamm_ joins (~jamm@unaffiliated/jamm)
17:05:46 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-xgujbhvivyzipvnb)
17:07:01 nbloomf joins (~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f)
17:07:15 × kupi quits (uid212005@gateway/web/irccloud.com/x-ueszxmgrjupzjwnp) (Quit: Connection closed for inactivity)
17:08:29 <swarmcollective> tomsmeding: Dark mode looks good, colour choices make the text quite readable. Thumbsup from me.
17:08:48 <maerwald> is the dark mode based on the system theme?
17:09:50 <NieDzejkob> yeah, it's a CSS feature known as prefers-color-scheme
17:10:34 <NieDzejkob> see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme for how to enable it for firefox
17:11:56 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds)
17:12:32 <tomsmeding> swarmcollective: thanks! Good to hear :)
17:13:50 <tomsmeding> maerwald: I don't have a manual mode toggle yet; due to the way prefers-color-scheme works that would give some duplication of css rules, and I was lazy :)
17:18:23 × dmwit quits (~dmwit@pool-173-66-86-32.washdc.fios.verizon.net) (Remote host closed the connection)
17:19:33 <sm[m]> looks pretty good tomsmeding
17:20:21 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds)
17:20:42 Tario joins (~Tario@201.192.165.173)
17:20:57 darjeeling_ joins (~darjeelin@122.245.218.150)
17:21:56 × kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
17:22:04 <tomsmeding> sm[m]: cool!
17:22:42 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
17:23:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:24:14 <brkscnce> how would you flip the arguments of a function?
17:24:25 <boxscape> tomsmeding not bad, personally I'd prefer the neon green to be a little less neon green, and comments to be a bit more visible
17:24:29 <koz_> :t flip
17:24:31 <lambdabot> (a -> b -> c) -> b -> a -> c
17:24:35 <brkscnce> neat :D
17:27:10 <tomsmeding> boxscape: I'm using the monokai theme from highlightjs; I can change the colour values though, of course. Do you have a different theme you would suggest, or some changes to this one?
17:27:34 <tomsmeding> If not I'll have a look after dinner
17:28:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
17:28:22 <boxscape> tomsmeding hm I've just always used solarized but that's maybe a bit overdone. With the colors as is, I'd be happy if the green is a little darker and the grey used for comments a little lighter
17:29:26 <CatWithMoustache> I have a list of (intA, intB) - how do i map it to a list of the larger int of the two pairs with a list comprehension?
17:29:45 <CatWithMoustache> of the pair*
17:30:55 <koz_> CatWithMoustache: [ max x y | (x, y) <- myList ]
17:31:26 <koz_> Although I think a comprehension is unnecessary here.
17:31:37 <koz_> You can just as well do something like 'uncurry max <$> myList'
17:32:14 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
17:33:57 × wpcarro quits (sid397589@gateway/web/irccloud.com/x-cuzogimzlccgtoqb) (Ping timeout: 272 seconds)
17:34:14 × totbwf quits (sid402332@gateway/web/irccloud.com/x-zjkfuwgfajmvzezn) (Ping timeout: 264 seconds)
17:34:35 × jared-w quits (uid405292@gateway/web/irccloud.com/x-nwbhkmbdnnaxykxk) (Ping timeout: 272 seconds)
17:34:47 jared-w joins (uid405292@gateway/web/irccloud.com/x-izhpuwmltgyrnquq)
17:34:52 wpcarro joins (sid397589@gateway/web/irccloud.com/x-kqymfcxonhkyygxg)
17:35:26 × saitamaplus quits (uid272474@gateway/web/irccloud.com/x-pvdimpwkxzjbymuk) (Ping timeout: 264 seconds)
17:36:26 saitamaplus joins (uid272474@gateway/web/irccloud.com/x-tqrynpyipoxrnkjn)
17:36:41 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Ping timeout (120 seconds))
17:36:57 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
17:37:11 totbwf joins (sid402332@gateway/web/irccloud.com/x-wekjmtigqhueuhzk)
17:40:19 <ntjns> ls
17:40:27 vicfred joins (~vicfred@unaffiliated/vicfred)
17:40:35 <CatWithMoustache> koz_, can I still use max if i have a tuple of ((String, int), (String, int)) and want to keep the string int pairs together?
17:40:52 <koz_> :t maximumBy
17:40:54 <lambdabot> Foldable t => (a -> a -> Ordering) -> t a -> a
17:40:58 <koz_> :t maxBy
17:40:59 <lambdabot> error: Variable not in scope: maxBy
17:41:07 psutcliffe joins (~psutcliff@2a00:801:44b:5fb3:b852:cfd3:ade7:f24f)
17:41:32 <koz_> No, that'd require some more effort.
17:41:58 <koz_> Easiest would be to first define 'maxBy :: (Ord b) => (a -> b) -> a -> a -> a'
17:42:06 <koz_> Then use that to write the rest.
17:42:33 <koz_> Using 'maxBy snd'.
17:43:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:44:20 ADG1089__ joins (~aditya@122.163.247.232)
17:44:34 × terzievk quits (~user@78.90.139.65) (Remote host closed the connection)
17:44:53 nineonine joins (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3)
17:45:21 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:45:48 × Natch quits (~Natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) (Read error: Connection reset by peer)
17:46:47 × ADG1089__ quits (~aditya@122.163.247.232) (Client Quit)
17:47:34 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
17:50:10 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
17:53:18 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0)
17:53:23 nbloomf joins (~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f)
17:54:21 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
17:54:40 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
17:55:28 × zaquest quits (~notzaques@5.128.210.178) (Ping timeout: 276 seconds)
17:57:03 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
17:57:11 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f) (Client Quit)
17:57:53 zaquest joins (~notzaques@5.128.210.178)
17:59:06 × Pickchea quits (~private@unaffiliated/pickchea) (Quit: Leaving)
18:00:16 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Ping timeout (120 seconds))
18:00:21 hackage linux-capabilities 0.1.0.0 - Linux capabilities Haskell data type https://hackage.haskell.org/package/linux-capabilities-0.1.0.0 (TristanCacqueray)
18:00:24 conal joins (~conal@64.71.133.70)
18:00:37 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
18:01:30 <__minoru__shirae> @src Control.Monad.when
18:01:30 <lambdabot> Source not found. Take a stress pill and think things over.
18:02:57 <geekosaur> "@src" is a fraud
18:03:12 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
18:03:22 <geekosaur> @src when
18:03:23 <lambdabot> when p s = if p then s else return ()
18:03:41 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
18:03:57 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
18:04:20 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
18:05:04 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
18:06:31 × __minoru__shirae quits (~shiraeesh@109.166.56.143) (Ping timeout: 276 seconds)
18:07:24 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
18:08:13 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 260 seconds)
18:08:36 × Wuzzy quits (~Wuzzy@p5b0df8ea.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
18:09:13 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
18:09:21 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
18:09:25 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
18:09:51 × esph quits (~weechat@unaffiliated/esph) (Ping timeout: 246 seconds)
18:10:38 × vilpan quits (~0@212.117.1.172) (Quit: Leaving.)
18:11:10 × fr33domlover quits (~fr33domlo@fsf/member/fr33domlover) (Quit: fr33domlover)
18:12:09 tzlil joins (~tzlil@unaffiliated/tzlil)
18:13:39 × alx741 quits (~alx741@181.196.69.27) (Quit: alx741)
18:14:52 × rajivr quits (uid269651@gateway/web/irccloud.com/x-lipeedvqihpcwewl) (Quit: Connection closed for inactivity)
18:15:16 esph joins (~weechat@unaffiliated/esph)
18:16:26 <swarmcollective> @src foldl'
18:16:27 <lambdabot> foldl' f a [] = a
18:16:27 <lambdabot> foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs
18:18:25 raym joins (~ray@45.64.220.3)
18:20:27 neiluj joins (~jco@91-167-203-101.subs.proxad.net)
18:20:27 × neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host)
18:20:27 neiluj joins (~jco@unaffiliated/neiluj)
18:21:47 nbloomf joins (~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f)
18:21:50 fr33domlover joins (~fr33domlo@fsf/member/fr33domlover)
18:22:24 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
18:22:39 ADG1089__ joins (~aditya@122.163.247.232)
18:22:50 Natch joins (~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se)
18:23:38 minoru_shiraeesh joins (592a3c0a@gateway/web/cgi-irc/kiwiirc.com/ip.89.42.60.10)
18:24:03 <koz_> If I enable ApplicativeDo and MonadComprehensions, can I potentially get Applicative-based comprehensions?
18:24:40 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
18:24:57 × toorevitimirp quits (~tooreviti@117.182.182.60) (Remote host closed the connection)
18:25:20 Rob60 joins (268ce492@38.140.228.146)
18:25:21 <monochrom> I think no. It is not ApplicativeComprehensions afterall.
18:25:51 <geekosaur> I think the rewrite uses >>=
18:26:04 <geekosaur> so it can't be Applicative
18:26:10 <koz_> monochrom: My reasoning is this - MonadComprehensions desugars to do-notation, and ApplicativeDo can make (some) do-blocks only need Applicative.
18:26:25 <koz_> Or am I misreading MonadComprehensions?
18:26:33 <geekosaur> (specifically <- translates to >>=)
18:26:39 <koz_> "Bindings are translated with the (>>=) and return functions to the usual do-notation:"
18:26:41 × CatWithMoustache quits (~CatWithMo@gateway/tor-sasl/catwithmoustache) (Quit: Leaving)
18:27:04 <koz_> Or does it actually mean to say 'Bindings are translated with the (>>=) and return functions to (the equivalent of) this do-notation:"?
18:27:14 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 265 seconds)
18:27:36 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
18:27:36 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
18:27:36 mouseghost joins (~draco@wikipedia/desperek)
18:31:14 <minoru_shiraeesh> This is weird: I typed @src Control.Monad.when, got an answer from the lambdabot and then the electricity cut off
18:32:13 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
18:32:22 <minoru_shiraeesh> As if my actions caused it
18:33:53 <geekosaur> unlikely, especially since it actually rejected yours and took mine
18:34:03 <geekosaur> (because @src is a fraud)
18:34:24 <koz_> geekosaur: Drat, you're right.
18:34:24 <tomsmeding> minoru_shiraeesh: lambdabot not only didn't like your input, it then proceeded to take revenge
18:34:32 <koz_> The docs should probably be a bit clearer on this point.
18:34:33 <minoru_shiraeesh> Some weird side-effect
18:34:47 × ADG1089__ quits (~aditya@122.163.247.232) (Quit: Konversation terminated!)
18:34:48 <monochrom> koz_: I tested and conclude that the user guide wording is poor. <- is really translated to >>= directly, not going though a do-notation intermediate.
18:34:58 <koz_> (and ApplicativeComprehensions would be lovely)
18:35:00 redmp joins (~redmp@172.58.35.77)
18:35:08 <monochrom> I think the time is ripe for a "do considered harmful".
18:35:27 <koz_> In this case? It's 'bad documentation considered harmful' more than anything.
18:35:55 <koz_> Maybe I might write a GHC proposal...
18:36:04 <redmp> hello! anyone here familiar with how to use Servant.API.Generic to combine two record-apis into a single server?
18:36:24 <tomsmeding> boxscape: right-hand side better? https://tomsmeding.com/ss/get/tomsmeding/lPoDSF (different theme)
18:36:50 <monochrom> As usual, it is more like "<getting too used to do> considered harmful".
18:36:56 <minoru_shiraeesh> Which suggests that maybe the matrix is not written in haskell, or not
18:37:12 <koz_> Also, does anyone know where I can find the descriptions of the n^2 and n^3 algorithms for ApplicativeDo desugaring?
18:37:20 <tomsmeding> minoru_shiraeesh: the matrix is currently written in python
18:37:22 <geekosaur> tomsmeding, I prefer the right hand side, for what it's worth
18:37:31 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
18:37:32 <koz_> I also prefer the right-hand side.
18:37:33 <monochrom> So the confusing part is that the example in the user guide uses do-notation instead of >>=. When do-notation is completely irrelevant in the context.
18:37:40 <koz_> The left one looks too electric.
18:37:50 <tomsmeding> I agree
18:37:52 <koz_> monochrom: Indeed.
18:38:06 <tomsmeding> okay 'tomorrow night' is is :)
18:38:09 <monochrom> And of course the sentence "... >>= ... do ..." simply fails to make up its mind.
18:38:10 <tomsmeding> *it is
18:38:13 × nineonine quits (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection)
18:38:28 <koz_> monochrom: The 'les deux' of monad-oriented syntax. :P
18:38:38 <geekosaur> tomsmeding, cue https://xkcd.com/224/
18:38:56 nineonine joins (~nineonine@50.216.62.2)
18:39:04 <tomsmeding> geekosaur: thanks for the due diligence
18:39:45 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
18:39:49 × esph quits (~weechat@unaffiliated/esph) (Ping timeout: 272 seconds)
18:40:45 × DataComp_ quits (~lumeng@50.43.26.251) (Ping timeout: 256 seconds)
18:41:52 <minoru_shiraeesh> tomsmeding: by matrix you mean the messenger? I was making a joke about Matrix.
18:41:52 <tomsmeding> instance has been updated with new theme: https://paste.tomsmeding.com/rT6TJbdr
18:42:14 <minoru_shiraeesh> Neo, Morpheus, etc
18:42:35 <tomsmeding> minoru_shiraeesh: and I was deliberately misinterpreting your reference :)
18:42:45 <tomsmeding> in the style of the xkcd that geekosaur linked
18:43:15 <minoru_shiraeesh> Oh, multi-layer jokes
18:43:17 mirrorb2rd joins (~psutcliff@2a00:801:3f2:4b56:e93e:1663:ff0c:6c42)
18:43:56 DataComputist joins (~lumeng@50.43.26.251)
18:44:44 × knupfer quits (~Thunderbi@200116b824ff48009d25b45d13597f3f.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
18:45:09 <redmp> Here's what I mean record-apis: https://termbin.com/3rqc
18:45:24 <redmp> I define a "parent" record API and have it contain a "child" record API
18:45:27 carlomagno1 joins (~cararell@148.87.23.4)
18:45:49 <redmp> But `genericServe` seems unhappy with that, even though the type of the input is correct, and the `routes AsServer` gives no error..
18:45:50 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
18:46:09 × psutcliffe quits (~psutcliff@2a00:801:44b:5fb3:b852:cfd3:ade7:f24f) (Ping timeout: 272 seconds)
18:46:23 <redmp> (ParentRoutes AsServer types correctly, with one field populated by ChildRoutes AsServer)
18:46:56 × carlomagno quits (~cararell@148.87.23.4) (Ping timeout: 240 seconds)
18:48:23 × minoru_shiraeesh quits (592a3c0a@gateway/web/cgi-irc/kiwiirc.com/ip.89.42.60.10) (Quit: Connection closed)
18:48:30 × geowiesnot_bis quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 265 seconds)
18:50:21 ADG1089__ joins (~aditya@122.163.247.232)
18:50:34 myShoggoth joins (~myShoggot@75.164.81.55)
18:50:52 __minoru__shirae joins (~shiraeesh@46.34.207.247)
18:51:16 × DataComputist quits (~lumeng@50.43.26.251) (Quit: Leaving...)
18:51:23 <redmp> Thanks in advance, if anybody can take a look at that example :)
18:51:50 <koz_> Also, does anyone know where I can find the descriptions of the n^2 and n^3 algorithms for ApplicativeDo desugaring? <-- anyone?
18:52:07 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:2c68:3465:24dc:c80f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:52:12 carlomagno joins (~cararell@148.87.23.4)
18:52:34 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
18:53:45 <__minoru__shirae> koz_, if I'm not misunderstanding a question, you just substitute a specific applicative's bind implementation after desugaring the do notation into binds, no?
18:53:57 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
18:54:08 <__minoru__shirae> wait, applicative's don't have biind
18:54:10 <tomsmeding> __minoru__shirae: applicative != monad
18:54:22 nbloomf joins (~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236)
18:54:23 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
18:54:27 <koz_> __minoru__shirae: There are, according to the GHC docs, two desugaring algorithms. One is n^2, the other, more thorough, one, n^3.
18:54:32 <koz_> I wanted to know what those are.
18:54:36 <tomsmeding> koz_: I assume you've already looked at https://simonmar.github.io/bib/papers/applicativedo.pdf ?
18:54:48 <tomsmeding> no saying the algorithms are in there (haven't read it)
18:54:53 <tomsmeding> s/^no/not/
18:55:01 × carlomagno1 quits (~cararell@148.87.23.4) (Ping timeout: 272 seconds)
18:55:07 <koz_> tomsmeding: I have not, but that lineup is amazing.
18:55:18 <tomsmeding> it is, isn't it?
18:55:21 <koz_> Two Simons, an Edward and the Selective guy?
18:55:25 <koz_> Sign me up.
18:55:45 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 264 seconds)
18:56:22 × geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
18:56:41 apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net)
18:58:28 × ADG1089__ quits (~aditya@122.163.247.232) (Remote host closed the connection)
18:58:46 <tomsmeding> note the sudden appearance of game theory in the second bullet point of section 8
18:59:07 <swarmcollective> tomsmeding: Yeah, the colour theme looks good.
18:59:23 <swarmcollective> And, now I know I can have two files. :D
18:59:45 <tomsmeding> swarmcollective: :D
18:59:57 <tomsmeding> did you miss the big button? :p
19:00:28 × emmanuel_erc quits (~user@cpe-74-71-106-64.nyc.res.rr.com) (Ping timeout: 276 seconds)
19:02:13 <Rob60> I'm looking for haskell stars in the SF Bay Area - if you're in the market, please drop me a note at rob@banyaninfrastructure.com.
19:02:19 × jpds_ quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
19:02:50 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236) (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:02:51 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 256 seconds)
19:02:52 jpds_ joins (~jpds@gateway/tor-sasl/jpds)
19:02:54 <koz_> Rob60: Do you accept remote?
19:02:56 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
19:03:28 berberman joins (~berberman@unaffiliated/berberman)
19:03:29 <Rob60> We're all remote now, but we're a small company and want people that can not be remote in the hopeful days ahead when Covid isn't such a thing.
19:03:46 <maerwald> in 2022 :)
19:03:56 × smitop quits (uid328768@gateway/web/irccloud.com/x-fvijgodnvjoivvsf) (Quit: Connection closed for inactivity)
19:03:58 esph joins (~weechat@unaffiliated/esph)
19:04:05 <koz_> Rob60: Would you be good with someone who wanted to _stay_ remote?
19:04:37 × berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 258 seconds)
19:04:38 <Rob60> it wouldn't be our first choice, but I have some flexibility for the right person, of course
19:04:48 <koz_> Rob60: What's the job?
19:05:44 <__minoru__shirae> what do you as a company do with haskell in production, did you start with haskell, or did you move to it from another language?
19:05:56 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
19:06:27 <Rob60> senior dev - our code started in haskell
19:06:37 <Rob60> https://angel.co/company/banyan-infrastructure/jobs/1157302-senior-developer-haskell-java
19:08:43 × chisui quits (5882391e@mue-88-130-57-030.dsl.tropolys.de) (Ping timeout: 240 seconds)
19:08:43 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
19:10:20 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
19:10:44 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
19:11:00 nbloomf joins (~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236)
19:13:46 geekosaur joins (82650c7a@130.101.12.122)
19:14:18 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
19:14:40 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
19:18:13 DataComputist joins (~lumeng@50.43.26.251)
19:18:25 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
19:18:54 <boxscape> tomsmeding yes, thanks, right hand side is quite a bit better
19:19:04 <tomsmeding> it's live :)
19:19:14 <boxscape> nice
19:20:16 × redmp quits (~redmp@172.58.35.77) (Ping timeout: 240 seconds)
19:21:59 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
19:22:20 redmp joins (~redmp@172.58.35.77)
19:22:23 hyiltiz joins (~quassel@unaffiliated/hyiltiz)
19:24:16 <infinisil> :t foldr (<|>) empty
19:24:17 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
19:24:27 <infinisil> Is there some function which does that already ^?
19:26:05 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
19:28:40 <tomsmeding> :t asum
19:28:41 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
19:28:47 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
19:28:49 <tomsmeding> infinisil: ^
19:29:21 <infinisil> Oh nice
19:29:41 <infinisil> Wasn't there a type signature search in lambdabot
19:30:26 <swarmcollective> @hoogle t (f a) -> f a
19:30:27 <lambdabot> No results found
19:31:28 <__minoru__shirae> @hoogle (Foldable t, Alternative f) => t (f a) -> f a
19:31:29 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
19:31:29 <lambdabot> Protolude asum :: (Foldable t, Alternative f) => t (f a) -> f a
19:31:29 <lambdabot> BasePrelude asum :: (Foldable t, Alternative f) => t (f a) -> f a
19:31:55 <tomsmeding> infinisil: which also exists as a web service: https://hoogle.haskell.org/
19:32:21 hackage bitwise-enum 1.0.1.0 - Bitwise operations on bounded enumerations https://hackage.haskell.org/package/bitwise-enum-1.0.1.0 (jnbooth)
19:32:28 <infinisil> Ohh I have been using hoogle for a while but never used that
19:33:31 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
19:33:35 <__minoru__shirae> a question regarding "when" function: how does it short-circuit? I'm trying to desugar a do block with "when" inside, and I don't see how.
19:34:01 <tomsmeding> @src when
19:34:02 <lambdabot> when p s = if p then s else return ()
19:34:12 kam1 joins (~kam1@5.125.126.175)
19:34:12 <__minoru__shirae> do when p (return "a"); return "b"
19:34:30 <tomsmeding> = when p (return "a") >> return "b"
19:34:36 <geekosaur> it doesn't really short-circuit, were you thinking of guard?
19:34:44 <tomsmeding> = (if p then return "a" else return ()) >> return "b"
19:34:48 <redmp> i found a solution to the problem i was having before
19:35:13 <__minoru__shirae> (if p then return "a" else return ()) >>= \_ -> return "b"
19:35:16 <__minoru__shirae> right?
19:35:36 <redmp> the solution is to convert the record-apis types to normal api types and then combine them as siblings (not through composition) same as how you would combine normal apis q
19:35:39 <redmp> https://termbin.com/0t72
19:35:49 <redmp> hope that helps if anybody has the same question; cheers
19:36:08 <tomsmeding> __minoru__shirae: true, that means the same thing
19:36:18 <geekosaur> __minoru__shirae, you already have a type error there (unless you have some funky extensions and instances in scope)
19:36:23 × ozataman quits (~textual@pool-100-37-221-69.phlapa.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
19:36:43 <monochrom> Again, it doesn't short-circuit, not in my sense of the word.
19:37:17 <__minoru__shirae> how does it ignore the rest of the do-block when the condition is met?
19:37:22 <geekosaur> it doesn't
19:37:24 <monochrom> It doesn't.
19:38:08 <geekosaur> I'll ask again: are you thinking of guard?
19:38:27 <__minoru__shirae> hmm, but it won't run IO actions if they are after when and the condition is met, right?
19:38:41 <monochrom> Have you tested?
19:38:48 <__minoru__shirae> I'm reading about continuations and callCC
19:38:56 <geekosaur> hoo boy
19:38:59 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
19:39:06 <monochrom> That's not IO.
19:39:21 <__minoru__shirae> and "when" is used in the examples
19:39:23 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
19:39:59 × mirrorb2rd quits (~psutcliff@2a00:801:3f2:4b56:e93e:1663:ff0c:6c42) (Ping timeout: 272 seconds)
19:40:08 <monochrom> Has it occurred to you that maybe it's callCC that does the skipping?
19:40:15 <tomsmeding> % do when True (putStrLn "abc") ; putStrLn "def"
19:40:16 <yahb> tomsmeding: abc; def
19:40:40 <__minoru__shirae> oh, I midunderstood the logic of when, then
19:40:46 alx741 joins (~alx741@181.196.69.27)
19:41:31 <monochrom> It's every 1st-year STEM student's common sense that if you have two moving parts, you can't just pick one of them and blame everything on it.
19:42:56 <tomsmeding> monochrom: do you mean that it _should be_ every 1st-year stem studen's common sense, or that is _is_?
19:43:14 geekosaur is always wary of "common sense"
19:43:22 <monochrom> hehe
19:43:44 <tomsmeding> because the former, sure, but the latter, no way :p
19:46:44 cntrl joins (~cntrl@p200300ea6f413600978678b2fc08a449.dip0.t-ipconnect.de)
19:47:51 hackage xlsx 0.8.3 - Simple and incomplete Excel file parser/writer https://hackage.haskell.org/package/xlsx-0.8.3 (KirillZaborsky)
19:48:06 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
19:49:24 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 265 seconds)
19:50:32 <redmp> I created an issue (for documentation) about the above servant question that I had. If you want to chime in, here's the link: https://github.com/haskell-servant/servant/issues/1394
19:51:18 × cntrl quits (~cntrl@p200300ea6f413600978678b2fc08a449.dip0.t-ipconnect.de) (Client Quit)
19:53:41 × xff0x quits (~xff0x@2001:1a81:52d0:d300:e069:1246:9742:b9dd) (Ping timeout: 258 seconds)
19:53:41 cntrl joins (~cntrl@p200300ea6f413600978678b2fc08a449.dip0.t-ipconnect.de)
19:54:30 xff0x joins (~xff0x@2001:1a81:52d0:d300:4228:6d0f:7477:ec73)
19:54:38 × cntrl quits (~cntrl@p200300ea6f413600978678b2fc08a449.dip0.t-ipconnect.de) (Client Quit)
19:55:56 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:00:21 hackage zip-stream 0.2.1.0 - ZIP archive streaming using conduits https://hackage.haskell.org/package/zip-stream-0.2.1.0 (DylanSimon)
20:00:57 nbloomf joins (~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236)
20:01:21 hackage tasty-bench 0.2.2 - Featherlight benchmark framework https://hackage.haskell.org/package/tasty-bench-0.2.2 (Bodigrim)
20:01:36 × syd quits (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Ping timeout: 240 seconds)
20:03:52 × Rob60 quits (268ce492@38.140.228.146) (Quit: Connection closed)
20:05:03 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
20:05:28 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 276 seconds)
20:06:55 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
20:07:15 petersen joins (~petersen@redhat/juhp)
20:09:58 kipras joins (~Kipras@78-56-235-39.static.zebra.lt)
20:10:31 frozenErebus joins (~frozenEre@94.128.219.166)
20:11:21 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
20:11:56 × juri_ quits (~juri@178.63.35.222) (Ping timeout: 240 seconds)
20:12:40 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
20:13:06 Wuzzy joins (~Wuzzy@p5790e341.dip0.t-ipconnect.de)
20:15:13 geowiesnot_bis joins (~user@87-89-181-157.abo.bbox.fr)
20:15:27 lolololppppp joins (68ab32ea@104.171.50.234)
20:16:17 <lolololppppp> how would you write foldL using foldR in haskell? I have tried for many hours but i do not know
20:17:31 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:18:06 × lolololppppp quits (68ab32ea@104.171.50.234) (Client Quit)
20:18:11 <davean> lolololppppp: ok, so whats the relation between foldL and foldR?
20:18:50 dftxbs3e joins (~dftxbs3e@unaffiliated/dftxbs3e)
20:21:06 × geowiesnot_bis quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
20:21:29 fendor_ joins (~fendor@91.141.0.74.wireless.dyn.drei.com)
20:23:01 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds)
20:23:52 terzievk joins (~user@78.90.139.65)
20:24:58 × fendor quits (~fendor@178.115.128.24.wireless.dyn.drei.com) (Ping timeout: 276 seconds)
20:25:18 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ...zzzZZZ)
20:25:58 × jneira quits (501e6551@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.101.81) (Ping timeout: 260 seconds)
20:26:10 × averell quits (~averell@unaffiliated/averell) (Remote host closed the connection)
20:27:45 <terzievk> `ghcup install ghc` finished with `GHC installation successful`, but i get `bash: ghc: command not found`. However installing cabal the same way works fine. What am I missing?
20:29:10 averell joins (~averell@unaffiliated/averell)
20:29:24 × averell quits (~averell@unaffiliated/averell) (Remote host closed the connection)
20:29:37 <maerwald[m]> terzievk: ghcup set ghc 8.10.4
20:29:55 averell joins (~averell@unaffiliated/averell)
20:30:17 <maerwald[m]> Also see `ghcup tui`
20:30:45 × kipras quits (~Kipras@78-56-235-39.static.zebra.lt) (Read error: Connection reset by peer)
20:31:27 <Uniaika> the TUI is <3
20:31:39 <terzievk> well, 8.10.4 is installed, but ghcup set does nothing. Should I add something to my bash_profile?
20:32:44 <Uniaika> terzievk: yes, I prepend this to my PATH
20:32:45 <Uniaika> GHCUP_PATH="${HOME}/.ghcup/bin"
20:33:23 emmanuel_erc joins (~user@2603-7000-9600-01c9-c589-d024-9ed2-1840.res6.spectrum.com)
20:33:29 hiroaki_ joins (~hiroaki@2a02:908:4b18:8c40:417b:587b:f9ad:a890)
20:33:52 juri_ joins (~juri@178.63.35.222)
20:34:27 <maerwald[m]> terzievk: `source ~/.ghcup/env`
20:35:07 <maerwald[m]> Did you install the binary manually?
20:35:28 <maerwald[m]> Usually the installation explains those steps
20:35:36 × ukari quits (~ukari@unaffiliated/ukari) (Ping timeout: 240 seconds)
20:37:03 × soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds)
20:37:08 vchlup_ joins (~vchlup@115.128.broadband17.iol.cz)
20:37:47 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
20:37:47 <terzievk> I have no .ghcup/env directory; I got ghcup-hs-bin from AUR, which links to here https://gitlab.haskell.org/haskell/ghcup-hs
20:38:10 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
20:39:23 <maerwald[m]> terzievk: https://aur.archlinux.org/cgit/aur.git/tree/ghcup-hs-bin.install?h=ghcup-hs-bin
20:39:37 <maerwald[m]> There is a post install message explaining it
20:39:39 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 246 seconds)
20:39:53 × _noblegas quits (uid91066@gateway/web/irccloud.com/x-ifvgvksedlldsfmy) (Quit: Connection closed for inactivity)
20:40:28 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:7506:7a46:fb18:8236) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:41:23 orion joins (~orion@c-76-19-236-20.hsd1.ct.comcast.net)
20:41:23 × orion quits (~orion@c-76-19-236-20.hsd1.ct.comcast.net) (Changing host)
20:41:23 orion joins (~orion@unaffiliated/orion)
20:43:03 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
20:43:25 × zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
20:43:43 deviantfero joins (~deviantfe@190.150.27.58)
20:43:47 zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
20:44:09 hexagenic joins (~mattias@81-224-116-201-no71.tbcn.telia.com)
20:44:17 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
20:44:31 <terzievk> maerwald[m]: how did you find this
20:44:45 <maerwald[m]> terzievk: magic
20:45:31 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
20:45:54 <maerwald[m]> The XDG option might be more popular for arch users
20:46:12 <maerwald[m]> I remember they're into that
20:46:51 <hexagenic> We're into what now?
20:47:26 <maerwald[m]> :D
20:47:36 <terzievk> maerwald[m]: thanks :)
20:48:12 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
20:48:23 × apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 272 seconds)
20:48:27 <maerwald[m]> hexagenic: https://wiki.archlinux.org/index.php/XDG_Base_Directory
20:48:40 <hexagenic> Yes, we're into that
20:49:15 × zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
20:49:36 zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
20:50:53 × zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Client Quit)
20:51:16 zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
20:51:42 jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de)
20:53:04 <hexagenic> But who isn't into a wellstrcutured home directory?
20:53:58 <terzievk> and now I have to learn what XDG is :d
20:55:00 <geekosaur> it's a specification for unixlike desktop machines. in this case specifically it's the base directory specification, which says where applications should put their files
20:55:06 × sujeet quits (sujeet@unaffiliated/freeboson) (Quit: bye)
20:55:15 <geekosaur> https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
20:55:17 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
20:55:41 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
20:56:02 <geekosaur> ("XDG" is "X11 Desktop Group" which was the forerunner of the current standards group)
20:56:36 <davean> Weird, here I thought GNOME was ;)
20:56:49 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 276 seconds)
20:57:09 geekosaur refuses to go there
20:58:31 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
20:59:03 <hexagenic> To Gnome?
20:59:48 <geekosaur> I have Opinions about RH more or less becoming the Linux world's Microsoft
21:00:16 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
21:00:50 × forgottenone quits (~forgotten@176.42.27.254) (Quit: Konversation terminated!)
21:01:35 <maerwald[m]> Well, in his early days Lennart tried with standards. But at one point he gave up on them
21:02:52 soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net)
21:04:00 knupfer joins (~Thunderbi@200116b824ff48008ca8ba96c8c7f12e.dip.versatel-1u1.de)
21:04:16 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:05:58 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
21:06:05 jyp joins (~user@155.4.127.210)
21:06:18 × emmanuel_erc quits (~user@2603-7000-9600-01c9-c589-d024-9ed2-1840.res6.spectrum.com) (Read error: Connection reset by peer)
21:06:28 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:07:18 <merijn> I know you meant formal standards, but I'm going to pretend you meant engineering standards ;)
21:09:03 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
21:10:36 conal joins (~conal@64.71.133.70)
21:12:38 chrpape joins (~user@2a01:4f9:c010:632d::1)
21:13:09 <maerwald[m]> Whatever works for bashing Lennart :p
21:15:53 nineonine joins (~nineonine@50.216.62.2)
21:17:49 nineonin_ joins (~nineonine@50.216.62.2)
21:19:56 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 240 seconds)
21:23:53 <terzievk> came for advice, stayed for the jokes
21:23:58 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
21:24:50 sujeet joins (sujeet@unaffiliated/freeboson)
21:27:52 Rob38 joins (268ce492@38.140.228.146)
21:30:20 nbloomf joins (~nbloomf@2600:1700:ad14:3020:d121:eb35:d957:d1dd)
21:32:06 frozenErebus joins (~frozenEre@94.128.219.166)
21:32:32 × geekosaur quits (82650c7a@130.101.12.122) (Quit: Connection closed)
21:32:45 tafa joins (~tafa@vps-83a5c612.vps.ovh.net)
21:33:59 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
21:34:53 son0p joins (~son0p@181.136.122.143)
21:35:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
21:36:13 × hexagenic quits (~mattias@81-224-116-201-no71.tbcn.telia.com) (Quit: WeeChat 1.9.1)
21:37:38 akasha joins (~user@unaffiliated/akasha)
21:38:14 dmwit joins (~dmwit@pool-173-66-86-32.washdc.fios.verizon.net)
21:38:57 ixlun joins (~user@213.205.241.237)
21:40:37 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
21:40:48 × kam1 quits (~kam1@5.125.126.175) (Remote host closed the connection)
21:41:21 × errst quits (~errst@unaffiliated/tirej) (Ping timeout: 264 seconds)
21:41:29 <ixlun> Hi all, quick question. I've got data EvalM = StateT (Map String Obj) IO, and I'm trying to do: 'doEval obj = eval obj >>= lift print'
21:41:42 <ixlun> However, for some reason lift print doesn't typecheck
21:42:05 <ixlun> where doEval :: Eval ()
21:42:12 kam1 joins (~kam1@5.125.126.175)
21:42:45 <ixlun> oops, doEval :: EvalM ()
21:44:31 × Rob38 quits (268ce492@38.140.228.146) (Quit: Connection closed)
21:45:01 banyanRob joins (268ce492@38.140.228.146)
21:45:42 geyaeb joins (~geyaeb@gateway/tor-sasl/geyaeb)
21:46:04 <ixlun> I'm guessing that '>>=' doesn't do what I think it does on a transformed monad
21:46:10 × geyaeb_ quits (~geyaeb@gateway/tor-sasl/geyaeb) (Remote host closed the connection)
21:46:52 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 276 seconds)
21:46:56 × alx741 quits (~alx741@181.196.69.27) (Ping timeout: 240 seconds)
21:47:10 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
21:47:36 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
21:47:37 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
21:48:36 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
21:51:43 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
21:52:23 Tops2 joins (~Tobias@dyndsl-095-033-090-206.ewe-ip-backbone.de)
21:53:12 × dirediresalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
21:56:06 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
21:56:31 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 265 seconds)
21:56:33 <monochrom> lift . print
21:57:04 <monochrom> For beginners it is best to not write pointfreely. Then everything makes sense.
21:57:16 <monochrom> eval obj >>= \x -> lift (print x)
21:57:35 × lawid quits (~quassel@dslb-090-186-099-002.090.186.pools.vodafone-ip.de) (Read error: Connection reset by peer)
21:58:14 × ubert quits (~Thunderbi@p200300ecdf25d992a0d2e31ed48a2cf4.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
21:58:41 lawid joins (~quassel@dslb-090-186-099-002.090.186.pools.vodafone-ip.de)
21:59:49 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
22:00:12 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
22:00:16 alx741 joins (~alx741@186.178.108.37)
22:02:16 <ixlun> Ah, yeah that makes sense. Thanks monochrom
22:04:44 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 265 seconds)
22:05:35 rndnoise joins (~rndnoise@136.32.107.152)
22:06:36 <rndnoise> /query NickServ
22:06:51 hackage yesod-markdown 0.12.6.4 - Tools for using markdown in a yesod application https://hackage.haskell.org/package/yesod-markdown-0.12.6.4 (PatrickBrisbin)
22:06:56 × sm2n quits (~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca) (Ping timeout: 240 seconds)
22:07:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:07:06 × banyanRob quits (268ce492@38.140.228.146) (Quit: Connection closed)
22:08:09 rndnoise parts (~rndnoise@136.32.107.152) ()
22:09:06 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 246 seconds)
22:12:03 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
22:13:16 frozenErebus joins (~frozenEre@94.128.219.166)
22:13:23 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
22:14:15 × kam1 quits (~kam1@5.125.126.175) (Remote host closed the connection)
22:14:20 apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net)
22:14:48 kam1 joins (~kam1@5.125.126.175)
22:16:28 deviantfero joins (~deviantfe@190.150.27.58)
22:16:49 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
22:18:41 × mp___ quits (mp@hell.cx) (Remote host closed the connection)
22:18:58 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
22:21:50 × kam1 quits (~kam1@5.125.126.175) (Remote host closed the connection)
22:22:15 kam1 joins (~kam1@5.125.126.175)
22:23:07 <ij> shapr, well, since hip uses juicypixels and juicypixels says it's a serialization library, it seems like hip has more power and is more general and probably also more convenient
22:23:35 × fendor_ quits (~fendor@91.141.0.74.wireless.dyn.drei.com) (Read error: Connection reset by peer)
22:24:32 mp___ joins (mp@hell.cx)
22:24:50 × michalz quits (~user@185.246.204.61) (Remote host closed the connection)
22:27:45 × terzievk quits (~user@78.90.139.65) (Remote host closed the connection)
22:27:50 rndnoise joins (~rndnoise@136.32.107.152)
22:28:28 × ixlun quits (~user@213.205.241.237) (Ping timeout: 276 seconds)
22:29:05 geowiesnot_bis joins (~user@87-89-181-157.abo.bbox.fr)
22:29:48 merelyme joins (~merelyme@192.154.196.18)
22:30:21 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
22:31:52 theelous3 joins (~theelous3@unaffiliated/theelous3)
22:32:04 conal joins (~conal@64.71.133.70)
22:32:27 × neiluj quits (~jco@unaffiliated/neiluj) (Quit: leaving)
22:34:40 × conal quits (~conal@64.71.133.70) (Client Quit)
22:38:13 × jyp quits (~user@155.4.127.210) (Ping timeout: 276 seconds)
22:39:20 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
22:39:28 × knupfer quits (~Thunderbi@200116b824ff48008ca8ba96c8c7f12e.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
22:39:51 × merelyme quits (~merelyme@192.154.196.18) (Ping timeout: 272 seconds)
22:41:57 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
22:43:10 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
22:43:31 × catt quits (~r@31.127.31.99) (Remote host closed the connection)
22:43:47 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:d121:eb35:d957:d1dd) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:48:14 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
22:48:38 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
22:49:27 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
22:53:49 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 276 seconds)
22:57:50 Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net)
22:58:12 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:58:36 conal joins (~conal@64.71.133.70)
22:59:01 × myShoggoth quits (~myShoggot@75.164.81.55) (Ping timeout: 276 seconds)
22:59:37 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
23:00:36 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
23:01:26 × rndnoise quits (~rndnoise@136.32.107.152) (Quit: leaving)
23:03:38 desophos joins (~desophos@2601:249:1680:a570:b97d:e49f:4b50:473b)
23:04:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds)
23:05:21 × bergey quits (~user@107.181.19.30) (Ping timeout: 264 seconds)
23:05:35 × klardots1 quits (~klardotsh@75-172-17-41.tukw.qwest.net) (Quit: WeeChat 3.0.1)
23:06:33 × gr33nbits quits (~gr33nbits@a109-49-87-64.cpe.netcabo.pt) (Quit: Konversation terminated!)
23:06:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
23:10:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:13:02 hidedagger joins (~nate@unaffiliated/hidedagger)
23:14:03 heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d)
23:14:16 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
23:19:18 pavonia^\_^\ joins (~user@unaffiliated/siracusa)
23:19:43 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
23:19:45 klardotsh joins (~klardotsh@75-172-17-41.tukw.qwest.net)
23:19:47 myShoggoth joins (~myShoggot@75.164.81.55)
23:20:05 afidegnum joins (~afidegnum@102.176.65.26)
23:20:08 × geowiesnot_bis quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 265 seconds)
23:20:32 × frozenErebus quits (~frozenEre@94.128.219.166) (Quit: leaving)
23:24:03 hnOsmium0001 is now known as hnOsmium0002
23:24:33 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 264 seconds)
23:25:07 hnOsmium0002 is now known as hnOsmium0001
23:26:06 × omnitrogen quits (~omnitroge@vps-c9700282.vps.ovh.net) (Read error: Connection reset by peer)
23:28:14 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-ozhkekfvbfssrzmb) (Quit: Connection closed for inactivity)
23:28:21 omnitrogen joins (~omnitroge@vps-c9700282.vps.ovh.net)
23:34:08 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
23:37:16 bergey joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net)
23:38:57 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
23:39:30 sm2n joins (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-251.dsl.bell.ca)
23:40:09 × hidedagger quits (~nate@unaffiliated/hidedagger) (Quit: WeeChat 3.0)
23:41:03 × soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds)
23:42:22 × bergey quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
23:43:27 × heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection)
23:46:16 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:47:31 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
23:49:21 sm2n_ joins (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-251.dsl.bell.ca)
23:49:21 × Jd007 quits (~Jd007@162.156.11.151) (Ping timeout: 246 seconds)
23:49:25 conal_ joins (~conal@64.71.133.70)
23:52:09 × sm2n quits (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-251.dsl.bell.ca) (Ping timeout: 264 seconds)
23:53:40 sm2n joins (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-251.dsl.bell.ca)
23:54:56 × sm2n_ quits (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-251.dsl.bell.ca) (Ping timeout: 240 seconds)
23:56:01 × Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
23:56:10 Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net)
23:56:36 × theelous3 quits (~theelous3@unaffiliated/theelous3) (Read error: Connection reset by peer)
23:57:03 theelous3 joins (~theelous3@unaffiliated/theelous3)
23:57:15 <hololeap> @unmtl ContT r1 (Cont r2) a
23:57:15 <lambdabot> (a -> (r1 -> r2) -> r2) -> (r1 -> r2) -> r2
23:57:39 <hololeap> @unmtl ContT () (Cont r) a
23:57:39 <lambdabot> (a -> (() -> r) -> r) -> (() -> r) -> r

All times are in UTC on 2021-02-26.