Home freenode/#haskell: Logs Calendar

Logs on 2021-01-10 (freenode/#haskell)

00:01:00 × neiluj quits (~jco@unaffiliated/neiluj) (Remote host closed the connection)
00:01:28 jedws joins (~jedws@121.209.189.201)
00:02:29 Tops2 joins (~Tobias@dyndsl-095-033-022-011.ewe-ip-backbone.de)
00:06:55 <ij> seems that I can't use the getter with NamedFieldPuns, if I have it "punned"
00:07:35 <ij> can I have multi-line arguments? how? I can't figure out the syntax
00:07:47 <ij> ah, no, figured it
00:08:14 neiluj joins (~jco@91-167-203-101.subs.proxad.net)
00:08:20 × neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host)
00:08:20 neiluj joins (~jco@unaffiliated/neiluj)
00:09:33 × raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
00:09:43 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e)
00:10:00 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
00:10:29 jpds joins (~jpds@gateway/tor-sasl/jpds)
00:10:46 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:10:47 <jle`> > Just{}
00:10:49 <lambdabot> Just *Exception: <interactive>:3:1-6: Missing field in record construction
00:11:15 <jle`> neat
00:11:17 <jle`> > (){}
00:11:19 <lambdabot> ()
00:11:28 <jle`> > (,){}
00:11:29 <lambdabot> (*Exception: <interactive>:3:1-5: Missing field in record construction
00:12:47 <jle`> > 5{}
00:12:49 <lambdabot> error: Empty record update
00:12:59 <jle`> is that a runtime error or a compiletime error
00:13:06 <Uniaika> let's see
00:13:09 <glguy> That would should be compile time
00:13:13 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit)
00:13:16 <glguy> one should*
00:13:17 <jle`> > let foo = 5{} in True
00:13:20 <lambdabot> error: Empty record update
00:13:28 <jle`> ah, 5 is interpreted as a value and not as a constructor
00:13:49 <jle`> what other things exist on that weird line
00:13:51 <jle`> > [1,2,3]{}
00:13:52 <ephemient> > let _ = (:){} in True{}
00:13:53 <lambdabot> error: Empty record update
00:13:54 <lambdabot> True
00:14:11 <glguy> The type has to be obvious from the syntax to use a record update
00:14:25 <glguy> whether that's from a record field or constructor
00:14:33 <jle`> Just{} is not interpreted as a record update though right? it's a constructor or pattern
00:14:38 <ephemient> it can't have extra parens either,
00:14:40 <ephemient> > []()
00:14:42 <lambdabot> error:
00:14:43 <lambdabot> • Couldn't match expected type ‘() -> t’ with actual type ‘[a0]’
00:14:43 <lambdabot> • The function ‘[]’ is applied to one argument,
00:14:45 <ephemient> > []{}
00:14:48 <lambdabot> []
00:14:51 <ephemient> > ([]){}
00:14:53 <lambdabot> error: Empty record update
00:15:11 × jedws quits (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:15:13 <glguy> jle`, the choice is constructor{} with zero or more fields, or arbitrary value with one or more fields
00:15:16 <jle`> it looks like for non-constructors {} is interpreted as as record update and for constructors it's a record initializer/constructor
00:15:37 <jle`> i guess i could just peek at the report
00:16:06 <jle`> :t (,)
00:16:07 <lambdabot> a -> b -> (a, b)
00:16:08 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds)
00:16:09 <jle`> :t (,){}
00:16:11 <lambdabot> (a, b)
00:16:13 <jle`> hehe
00:16:18 <glguy> :t ((,)){}
00:16:19 <lambdabot> error: Empty record update
00:16:38 <jle`> > length ( (,){} )
00:16:40 <lambdabot> 1
00:16:55 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-zvbazqanyhuylsws)
00:19:14 × stef204 quits (~stef204@unaffiliated/stef-204/x-384198) (Ping timeout: 264 seconds)
00:20:03 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds)
00:20:52 ransom joins (~c4264035@8.48.134.54)
00:21:40 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
00:22:30 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
00:22:55 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
00:22:59 × ph88 quits (~ph88@2a01:598:d002:63ff:f864:480b:85db:ffe9) (Ping timeout: 272 seconds)
00:25:05 ransom_ joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
00:25:52 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
00:26:49 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
00:26:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:27:45 × ransom quits (~c4264035@8.48.134.54) (Ping timeout: 240 seconds)
00:29:02 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
00:31:51 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
00:32:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
00:34:36 <ephemient> doesn't even need parentheses
00:34:44 <ephemient> > length (,) {}
00:34:45 <lambdabot> 1
00:36:11 heatsink joins (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba)
00:37:38 niekvandepas joins (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c)
00:38:34 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Read error: Connection reset by peer)
00:38:55 dcbdnl joins (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net)
00:39:53 × dcbdnl quits (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Client Quit)
00:40:46 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
00:41:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Ping timeout: 264 seconds)
00:41:56 × alx741 quits (~alx741@181.196.69.12) (Ping timeout: 240 seconds)
00:42:13 × niekvandepas quits (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 260 seconds)
00:42:57 <Axman6> > (){}{}{}{}{}
00:42:59 <lambdabot> error: Empty record updateerror: Empty record updateerror: Empty record upda...
00:43:17 <Axman6> cccccckvtilvtcdihrrubtnujbbetuuulrtfifbfrrdv
00:45:44 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
00:47:55 <glguy> Axman6, I added a script for detecting and blocking that for my own yubikey ^_^
00:48:03 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:52:46 <ij> is there like an "until" but only "while"?
00:52:59 <glguy> while p = until (not . p) ?
00:54:22 <ij> hm, but maybe even that won't work... I want to get the last Just in iterate (Map.lookup ..)
00:55:04 <ij> @pl while p = until (not . p)
00:55:05 <lambdabot> while = until . (not .)
00:55:07 alx741 joins (~alx741@181.196.69.216)
00:55:58 <Axman6> huh, must've triggered it with my thigh.
00:56:38 <Axman6> Is there a cononical vector tyoe with the length in its type? (and is there a better name than that monstrosity?)
00:57:01 <glguy> There's a few packages but nothing I'd call canonical
00:57:14 <Axman6> happy to go by number of downloads
00:57:49 <Axman6> I'm looking at the wireguard package written by the author of the wireguard protocol, and seeing a few places where it miught be happy
00:57:57 <Axman6> uh, useful
00:58:19 <Axman6> surprisingly, english is my first, and only, spoken language
00:58:32 <glguy> Axman6, Which package is that?
00:58:39 <koz_> Axman6: You likely want vector-sized.
00:58:54 <Axman6> sounds like the one
00:58:57 koz_ is a co-maintainer so is grossly biased.
00:59:17 <Axman6> glguy: https://git.zx2c4.com/wireguard-hs/about/
00:59:40 dcbdnl joins (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net)
00:59:42 <ski> @type \m -> fromJust . last . takeWhile isJust . iterate ((`lookup` m) =<<) . Just
00:59:43 <lambdabot> Eq c => [(c, c)] -> c -> c
00:59:44 <Axman6> koz_: great, I can hop across the pond and nag you about things that need fixing
00:59:44 × s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection)
00:59:57 <koz_> Axman6: Or just file an issue lol, that's probably easier.
01:00:38 <Axman6> but then I don't get o go to NZ
01:00:41 <ij> ski, can't think of anything other than this straight forward one either
01:01:31 <ij> maybe I could write converge (\v -> Map.lookup v `mplus` Just v) (Just a), if you know what I mean :)
01:02:11 <Axman6> hmm, I was actually looking for a data Vec (n : Nat) a where ZNil :: Vec 0 a; (:.) :: a -> Vec n a -> Vec (n + 1) a style vector
01:02:37 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
01:03:08 × conal quits (~conal@143.244.61.230) (Quit: Computer has gone to sleep.)
01:03:08 <Axman6> though if there's a way to pattern match on a Vec 3 a as [a, b, c] that would be good
01:03:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:05:20 conal joins (~conal@143.244.61.230)
01:05:48 <ski> @type \m -> either id (absurd . fst) . runStateT (forever (StateT (\k -> maybe (Left k) (Right . (,) ()) (lookup k m))))
01:05:50 <lambdabot> Eq b => [(b, b)] -> b -> b
01:08:16 <ij> :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (Map.lookup v' Map.empty) `mplus` v) (Just 1)
01:08:17 <lambdabot> error:
01:08:18 <lambdabot> Not in scope: ‘Map.lookup’
01:08:18 <lambdabot> Perhaps you meant one of these:
01:08:42 <ij> :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (lookup v' Map.empty) `mplus` v) (Just 1)
01:08:44 <lambdabot> error:
01:08:44 <lambdabot> Not in scope: ‘Map.empty’
01:08:44 <lambdabot> Perhaps you meant ‘M.empty’ (imported from Data.Map)
01:08:56 <ij> :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (lookup v' []) `mplus` v) (Just 1)
01:08:57 <lambdabot> (Eq a, Num a) => Maybe a
01:09:23 <ij> ski, that's a mouthful
01:10:33 × dcbdnl quits (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Quit: dcbdnl)
01:10:48 <ij> I'd have to add fromJust . converge ... . Just
01:11:37 rajivr joins (uid269651@gateway/web/irccloud.com/x-ctlecoeospidllrd)
01:11:51 × ransom_ quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:12:43 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
01:13:16 <ski> @type \m -> (id ||| uncurry absurd) . runStateT (forever (do k <- get; when (isNothing (lookup k m)) (throwError k)))
01:13:18 <lambdabot> Eq e => [(e, a)] -> e -> e
01:14:33 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
01:16:56 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
01:17:26 tribble2 joins (~tribble2@unaffiliated/tribble2)
01:18:16 Jeanne-Kamikaze joins (~Jeanne-Ka@static-198-54-134-170.cust.tzulo.com)
01:19:04 niekvandepas joins (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c)
01:20:13 stef204 joins (~stef204@unaffiliated/stef-204/x-384198)
01:20:15 heatsink joins (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba)
01:22:40 × tribble2 quits (~tribble2@unaffiliated/tribble2) (Quit: Leaving)
01:22:47 dandels joins (~dandels@unaffiliated/dandels)
01:23:24 × niekvandepas quits (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 240 seconds)
01:25:05 dfeuer joins (~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net)
01:25:27 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
01:27:29 <Axman6> Is there a tool for making github actions configs like hackell-ci does for travis?
01:27:31 × columbarius1 quits (~columbari@i5E86B3D4.versanet.de) (Ping timeout: 246 seconds)
01:27:37 <Axman6> haskell-ci*
01:29:37 <glguy> I don't know why, but just checking you know about: https://github.com/haskell/actions
01:29:50 columbarius1 joins (~columbari@i5E86B32C.versanet.de)
01:33:26 <ephemient> ah, I should migrate my workflows from actions/setup-haskell to haskell/actions/setup
01:33:45 <ephemient> when did that get deprecated
01:34:46 charukiewicz joins (~charukiew@irouteince04.i.subnet.rcn.com)
01:34:51 <ephemient> ah, https://github.com/actions/setup-haskell/pull/56
01:35:28 <sm[m]> additional bespoke, tested workflows here: https://github.com/simonmichael/hledger/tree/master/.github/workflows
01:36:13 × dandels quits (~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds)
01:36:38 <ephemient> if you only need stack then yeah, DIY looks easy enough
01:37:03 <sm[m]> I wouldn't say it was easy. A lot of hours went into these
01:38:05 <ephemient> that I believe, but actions/setup-haskell or haskell/actions/setup wouldn't have saved that time
01:38:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
01:38:40 × charukiewicz quits (~charukiew@irouteince04.i.subnet.rcn.com) (Client Quit)
01:38:52 charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com)
01:38:55 proc_ joins (~proc@177.155.80.112)
01:43:07 × proc_ quits (~proc@177.155.80.112) (Client Quit)
01:43:41 ransom joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
01:43:55 dcbdnl joins (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net)
01:44:16 Tario joins (~Tario@201.192.165.173)
01:49:26 × nhs_ quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Remote host closed the connection)
01:50:29 Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net)
01:52:25 × DavidEichmann quits (~david@98.27.93.209.dyn.plus.net) (Ping timeout: 264 seconds)
01:57:29 × electricityZZZZ quits (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
02:00:29 niekvandepas joins (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c)
02:05:02 × niekvandepas quits (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 260 seconds)
02:05:28 × dcbdnl quits (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Quit: dcbdnl)
02:05:48 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:05:58 × jollygood2 quits (~bc812391@217.29.117.252) (Quit: http://www.okay.uz/)
02:07:30 × ransom quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:09:16 ransom joins (~c4264035@2601:285:201:6720:f8d3:ffcb:d91b:58f8)
02:10:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
02:11:49 × conal quits (~conal@143.244.61.230) (Quit: Computer has gone to sleep.)
02:12:16 × xsperry quits (~as@unaffiliated/xsperry) (Read error: Connection reset by peer)
02:12:17 × Wuzzy quits (~Wuzzy@p5790e648.dip0.t-ipconnect.de) (Quit: Wuzzy)
02:12:21 conal joins (~conal@143.244.61.230)
02:12:32 × conal quits (~conal@143.244.61.230) (Client Quit)
02:13:10 conal joins (~conal@143.244.61.230)
02:13:16 × conal quits (~conal@143.244.61.230) (Client Quit)
02:13:35 ransom_ joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
02:13:46 conal joins (~conal@143.244.61.230)
02:14:01 × conal quits (~conal@143.244.61.230) (Client Quit)
02:14:34 conal joins (~conal@143.244.61.230)
02:14:44 fosterite joins (~fosterite@2600:6c46:7800:fecf:f917:a8fd:ae0d:b7ee)
02:15:02 × ransom quits (~c4264035@2601:285:201:6720:f8d3:ffcb:d91b:58f8) (Ping timeout: 264 seconds)
02:15:57 xsperry joins (~as@unaffiliated/xsperry)
02:16:44 × fosterite quits (~fosterite@2600:6c46:7800:fecf:f917:a8fd:ae0d:b7ee) (Client Quit)
02:21:29 rzjian joins (~l@203.168.12.226)
02:26:02 niekvandepas joins (~niekvande@2001:985:bebc:1:cd42:d8ce:7bc:301f)
02:26:23 × ransom_ quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:26:46 f-a joins (~f-a@151.38.2.154)
02:27:10 xiinotulp joins (~q@node-unv.pool-125-24.dynamic.totinternet.net)
02:28:46 × Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds)
02:29:19 machinedgod joins (~machinedg@24.105.81.50)
02:29:25 × plutoniix quits (~q@node-ugq.pool-125-24.dynamic.totinternet.net) (Ping timeout: 240 seconds)
02:30:42 × niekvandepas quits (~niekvande@2001:985:bebc:1:cd42:d8ce:7bc:301f) (Ping timeout: 260 seconds)
02:31:09 f-a parts (~f-a@151.38.2.154) ()
02:34:14 × conal quits (~conal@143.244.61.230) (Quit: Computer has gone to sleep.)
02:35:26 conal joins (~conal@143.244.61.230)
02:35:40 × conal quits (~conal@143.244.61.230) (Client Quit)
02:37:05 conal joins (~conal@143.244.61.230)
02:37:05 × conal quits (~conal@143.244.61.230) (Client Quit)
02:37:46 conal joins (~conal@143.244.61.230)
02:37:47 × conal quits (~conal@143.244.61.230) (Client Quit)
02:41:29 ransom joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
02:41:59 niekvandepas joins (~niekvande@80-100-16-191.ip.xs4all.nl)
02:44:52 × halbGefressen quits (~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) (Quit: halbGefressen)
02:45:19 × m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds)
02:45:24 × Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:3df7:2c2b:de8e:c444) (Quit: Leaving)
02:45:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:46:05 × niekvandepas quits (~niekvande@80-100-16-191.ip.xs4all.nl) (Read error: Connection reset by peer)
02:46:08 × aldum quits (~vishera@aldum.pw) (Ping timeout: 256 seconds)
02:46:14 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:e13a:446f:fd91:b45c) (Ping timeout: 264 seconds)
02:46:18 niekvandepas joins (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88)
02:46:45 conal joins (~conal@209.58.133.168)
02:48:38 × sqrt2 quits (~ben@unaffiliated/sqrt2) (Ping timeout: 264 seconds)
02:48:46 sqrt2_ joins (~ben@unaffiliated/sqrt2)
02:49:06 ericsagnes joins (~ericsagne@2405:6580:0:5100:3c13:dd0e:758f:287c)
02:50:32 × niekvandepas quits (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 260 seconds)
02:50:38 wei2912 joins (~wei2912@unaffiliated/wei2912)
02:51:03 × thunderrd quits (~thunderrd@183.182.115.7) (Remote host closed the connection)
02:53:27 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
02:56:59 aldum joins (~vishera@aldum.pw)
02:57:56 × Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
02:58:14 thunderrd joins (~thunderrd@183.182.115.7)
03:02:39 lagothrix is now known as Guest67909
03:02:39 xirhtogal joins (~lagothrix@unaffiliated/lagothrix)
03:02:39 × Guest67909 quits (~lagothrix@unaffiliated/lagothrix) (Killed (hitchcock.freenode.net (Nickname regained by services)))
03:02:39 xirhtogal is now known as lagothrix
03:05:36 jose_edil joins (~jose_edil@189.6.36.113)
03:12:22 × artyom quits (uid480728@gateway/web/irccloud.com/x-nqqalknrlwpfzvsu) (Quit: Connection closed for inactivity)
03:12:49 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
03:14:58 × Noldorin quits (~noldorin@unaffiliated/noldorin) (Quit: Textual IRC Client: www.textualapp.com)
03:17:08 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
03:18:42 m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
03:20:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
03:22:14 × Jeanne-Kamikaze quits (~Jeanne-Ka@static-198-54-134-170.cust.tzulo.com) (Quit: Leaving)
03:24:46 × aldum quits (~vishera@aldum.pw) (Ping timeout: 246 seconds)
03:27:18 niekvandepas joins (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88)
03:29:38 × acidjnk_new quits (~acidjnk@p200300d0c704e7293cc19a8744f5227e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
03:31:15 × xiinotulp quits (~q@node-unv.pool-125-24.dynamic.totinternet.net) (Remote host closed the connection)
03:31:50 × niekvandepas quits (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 264 seconds)
03:33:15 × ransom quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:33:59 flux66 joins (2fe3e53b@047-227-229-059.res.spectrum.com)
03:34:20 × rzjian quits (~l@203.168.12.226) (Quit: ##CoV)
03:34:44 <flux66> so I got some intuition for reader as a functor earlier this morning, where fmap is basically taking the transformation inside reader and then applying some function after that, but what is monadic bind doing in reader?
03:34:48 <flux66> is there some intuition for this?
03:35:26 <flux66> here is the definition: `(Reader ra) >>= aRb = Reader $ \r -> runReader (aRb (ra r)) r `
03:40:35 aldum joins (~vishera@aldum.pw)
03:41:50 × incertia_ quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (Ping timeout: 256 seconds)
03:46:01 incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com)
03:48:11 × stef204 quits (~stef204@unaffiliated/stef-204/x-384198) (Ping timeout: 272 seconds)
03:48:13 × theDon quits (~td@94.134.91.100) (Ping timeout: 246 seconds)
03:50:19 theDon joins (~td@94.134.91.57)
03:51:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:53:23 × jose_edil quits (~jose_edil@189.6.36.113) (Quit: Leaving...)
03:55:54 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
03:56:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
03:59:53 xirhtogal joins (~lagothrix@unaffiliated/lagothrix)
03:59:53 lagothrix is now known as Guest19966
03:59:53 xirhtogal is now known as lagothrix
04:00:01 × alexelcu quits (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
04:00:01 × haasn quits (~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
04:00:16 × dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 240 seconds)
04:00:32 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
04:01:03 alexelcu joins (~alexelcu@142.93.180.198)
04:01:18 haasn joins (~nand@mpv/developer/haasn)
04:02:36 × Guest19966 quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 240 seconds)
04:02:52 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
04:04:19 Varis joins (~Tadas@unaffiliated/varis)
04:05:58 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Remote host closed the connection)
04:06:08 × flux66 quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Remote host closed the connection)
04:07:30 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-kkcpnmskhkuyrrwu) ()
04:08:20 <koz_> o dam dey leff
04:08:55 niekvandepas joins (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88)
04:09:44 christo joins (~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net)
04:13:23 × niekvandepas quits (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 260 seconds)
04:13:33 jose_edil joins (~jose_edil@189.6.36.113)
04:13:59 × jose_edil quits (~jose_edil@189.6.36.113) (Client Quit)
04:17:12 vicfred joins (~vicfred@unaffiliated/vicfred)
04:19:05 heatsink joins (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba)
04:20:21 × viluon quits (uid453725@gateway/web/irccloud.com/x-kawrxnfkkehkxrdj) (Quit: Connection closed for inactivity)
04:20:25 × aldum quits (~vishera@aldum.pw) (Ping timeout: 246 seconds)
04:20:39 aldum joins (~vishera@aldum.pw)
04:22:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:22:54 × Cale quits (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Remote host closed the connection)
04:23:08 × m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 265 seconds)
04:27:58 <Graypup_> is there a function for `maybe (return ()) (.. make some other monad ..) (.. some Maybe value ..)`?
04:28:02 <Graypup_> other than, that one :P
04:28:07 ezrakilty joins (~ezrakilty@75-172-99-84.tukw.qwest.net)
04:30:58 slack1256 joins (~slack1256@dvc-186-186-101-190.movil.vtr.net)
04:35:06 niekvandepas joins (~niekvande@2001:985:bebc:1:31e4:12a0:baa9:a929)
04:35:39 drbean joins (~drbean@TC210-63-209-201.static.apol.com.tw)
04:35:42 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds)
04:36:22 niekvand_ joins (~niekvande@80-100-16-191.ip.xs4all.nl)
04:37:16 <ephemient> Hoogle finds https://hackage.haskell.org/package/extra/docs/Control-Monad-Extra.html#v:whenJust
04:38:36 <ezzieyguywuf> dang, never used the diagrams-* family of programs (i.e. diagrams-svg) but they look cool!
04:39:37 × niekvandepas quits (~niekvande@2001:985:bebc:1:31e4:12a0:baa9:a929) (Ping timeout: 260 seconds)
04:41:01 × niekvand_ quits (~niekvande@80-100-16-191.ip.xs4all.nl) (Ping timeout: 264 seconds)
04:42:01 <dolio> Graypup_: traverse_
04:43:05 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
04:46:22 niekvandepas joins (~niekvande@2001:985:bebc:1:986d:7629:5e04:a085)
04:47:41 <Graypup_> ezzieyguywuf, they were the most cursed part of my build process and caused several nightmares :) they're probably good also, but I just had the unfun part of the maintenance to do
04:50:23 <ezzieyguywuf> Graypup_: can you elaborate? I'm actually working on updating their packages on gentoo
04:50:42 × niekvandepas quits (~niekvande@2001:985:bebc:1:986d:7629:5e04:a085) (Ping timeout: 260 seconds)
04:52:45 × slack1256 quits (~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection)
04:52:56 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
04:54:22 <Graypup_> ezzieyguywuf, I was doing nix packaging to dockerize a web app and had a bunch of compilation/dependency issues related to src-exts (IIRC) with diagrams-builder, which I think I fixed by jailbreaking the cabal for it, and then I ended up with a runtime dependency on ghc that made my images super huge because diagrams requires it :(
04:56:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
04:56:55 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
04:58:44 dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
04:58:48 × dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
04:59:45 ADG1089__ joins (~aditya@122.163.165.143)
04:59:58 dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
05:00:07 × dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
05:02:37 × dfeuer quits (~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
05:09:48 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
05:14:23 × mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving)
05:14:33 × gnumonic quits (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Remote host closed the connection)
05:15:46 dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
05:15:50 × dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
05:16:17 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
05:18:45 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
05:19:37 dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
05:19:42 × dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
05:21:09 JohnTalent joins (~john@unaffiliated/johntalent)
05:21:30 <JohnTalent> How would you port SDL to haskell? I was thinking it could be done in I/O monads.
05:22:15 × SummerNinja quits (~SummerNin@84.39.117.57) (Remote host closed the connection)
05:23:23 Tops21 joins (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de)
05:23:37 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
05:24:51 <Axman6> aren't there already ports?
05:25:08 <JohnTalent> yes.
05:25:13 <JohnTalent> i was just looking at one.
05:25:31 × Tops2 quits (~Tobias@dyndsl-095-033-022-011.ewe-ip-backbone.de) (Ping timeout: 246 seconds)
05:26:02 Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net)
05:26:16 <Axman6> "I/O monads" doesn't make much sense to me. it would of course have to use the IO monad to interact with the OS
05:26:42 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
05:26:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:28:02 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 260 seconds)
05:29:29 <JohnTalent> yeah, didn't I just say that?
05:32:04 dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
05:32:08 × dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
05:32:34 matryoshka joins (~matryoshk@184.75.223.227)
05:32:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
05:33:55 <dsal> JohnTalent: You said something about "I/O monads" which sounds like a different thing from the IO monad.
05:33:57 <Axman6> glguy: Thank, I knew there was an actions thing but didn't know that was how to do it
05:34:07 <Axman6> s*
05:34:13 <dsal> It probably sounds pedantic, but if there's more than one, it'd be interesting to know how that works.
05:34:50 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
05:36:37 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
05:36:43 × ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection)
05:37:34 × ezrakilty quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
05:37:37 Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi)
05:37:37 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
05:38:26 <JohnTalent> How could I create modern Linux into a VM using strictly Haskell?
05:38:54 funkyb joins (~funkyb@139.28.218.148)
05:42:13 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds)
05:43:44 CMCDragonkai1 joins (~Thunderbi@124.19.3.250)
05:46:33 niekvandepas joins (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d)
05:47:22 × CMCDragonkai1 quits (~Thunderbi@124.19.3.250) (Client Quit)
05:50:48 × niekvandepas quits (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Ping timeout: 260 seconds)
05:52:51 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
05:53:54 Tario joins (~Tario@201.192.165.173)
05:58:52 × JohnTalent quits (~john@unaffiliated/johntalent) (Quit: leaving)
06:06:07 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:09:33 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
06:11:22 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
06:11:59 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
06:12:32 × Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
06:13:10 vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net)
06:14:22 × sqrt2_ quits (~ben@unaffiliated/sqrt2) (Quit: ZNC - http://znc.in)
06:14:33 sqrt2 joins (~ben@unaffiliated/sqrt2)
06:14:55 desophos joins (~desophos@2601:249:1680:a570:1a:d7e6:fee4:6ebe)
06:15:04 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
06:15:31 × desophos quits (~desophos@2601:249:1680:a570:1a:d7e6:fee4:6ebe) (Client Quit)
06:16:16 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds)
06:18:14 × vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
06:18:29 vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net)
06:18:55 <ephemient> there aren't SDL ports to haskell, there are SDL bindings
06:20:33 × vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
06:20:51 polyrain joins (~polyrain@121.222.65.83)
06:21:15 <ephemient> regarding Linux VM, depends on what you mean by "strictly Haskell" and what you want to achieve
06:23:21 <ephemient> Google Ganeti is a VM cluster manager written in Haskell (with Python tools for management), but it delegates to xen/kvm for the actual running of VMs
06:24:49 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
06:24:57 <ephemient> you could write your own VMM in Haskell using KVM, and in fact I see a project that looks like a start at that: https://github.com/PolyB/kvm
06:26:44 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
06:27:48 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
06:28:02 revtintin joins (~revtintin@42.61.242.247)
06:28:25 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
06:29:00 Varis joins (~Tadas@unaffiliated/varis)
06:31:56 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
06:34:08 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection)
06:40:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
06:49:31 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
06:51:22 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
06:54:23 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds)
06:55:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
06:58:20 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
06:59:36 × zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
06:59:37 × Nikotiini quits (~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com) (Ping timeout: 264 seconds)
07:00:39 × Tops21 quits (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) (Quit: Leaving.)
07:00:46 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
07:00:54 Nikotiini joins (~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com)
07:01:23 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
07:07:41 × jchia__1 quits (~jchia@58.32.36.39) (Remote host closed the connection)
07:09:42 jamm joins (~jamm@unaffiliated/jamm)
07:13:04 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:14:13 × jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
07:14:57 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
07:16:42 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
07:18:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
07:18:09 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
07:20:37 × ViCi quits (daniel@10PLM.ro) (Quit: Quit!)
07:22:37 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
07:25:58 × polyrain quits (~polyrain@121.222.65.83) (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:27:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Remote host closed the connection)
07:36:43 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
07:36:43 × srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
07:39:37 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 260 seconds)
07:40:44 polyrain joins (~polyrain@2001:8003:e501:6901:48d7:a5b0:7887:1dd9)
07:40:54 × polyrain quits (~polyrain@2001:8003:e501:6901:48d7:a5b0:7887:1dd9) (Client Quit)
07:42:47 Cthalupa joins (~cthulhu@47.186.47.75)
07:50:14 polyrain joins (~polyrain@2001:8003:e501:6901:aca6:1b18:3492:8fb8)
07:51:35 × gioyik quits (~gioyik@186.118.234.246) (Quit: WeeChat 3.0)
07:52:40 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:55:23 × Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
07:55:46 ADG1089__ joins (~aditya@122.163.165.143)
08:01:57 hexo joins (~hexo@gateway/tor-sasl/hexo)
08:02:01 srk joins (~sorki@gateway/tor-sasl/sorki)
08:06:01 tama joins (~tama@unaffiliated/tama00)
08:07:20 jpds joins (~jpds@gateway/tor-sasl/jpds)
08:11:16 × Rudd0^ quits (~Rudd0@185.189.115.108) (Ping timeout: 265 seconds)
08:11:55 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
08:14:14 × revtintin quits (~revtintin@42.61.242.247) (Quit: WeeChat 1.9.1)
08:15:29 Deide joins (~Deide@217.155.19.23)
08:16:50 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
08:17:17 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
08:17:29 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
08:17:48 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
08:22:03 pera joins (~pera@unaffiliated/pera)
08:22:14 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
08:24:17 <siraben> What's the Haskell equivalent of async/await/Futures?
08:24:56 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
08:27:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
08:27:50 heatsink joins (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba)
08:28:24 <Graypup_> If I have a bunch of constraints that I want to give a name, how can I do this? I tried a type class but realized it would have to have an instance for my thing, which I don't want to have to make
08:28:52 <Graypup_> or rather, an instance for every type I want to make it a part of
08:29:27 <Graypup_> I think it's probably *possible* to do a blanket implementation (rust terminology, sorry) for the type class, but I don't know how, or if that is an overcomplication
08:29:58 <siraben> Graypup_: there's ConstraintKinds
08:29:59 <siraben> e.g. `type StEff s r = (Reader s :<: r, Writer s :<: r)`
08:30:13 <siraben> Then, `sumN :: (StEff (Integer, Integer) f) => Term f ()`
08:31:09 knupfer joins (~Thunderbi@200116b82cc1a70088a433fffe03d6f1.dip.versatel-1u1.de)
08:31:11 × knupfer quits (~Thunderbi@200116b82cc1a70088a433fffe03d6f1.dip.versatel-1u1.de) (Client Quit)
08:31:19 <Graypup_> heck yeah, that looks like exactly what i was looking for
08:31:24 knupfer joins (~Thunderbi@87.123.206.207)
08:31:49 <siraben> Graypup_: what's a blanket implementation in Rust?
08:32:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Ping timeout: 264 seconds)
08:33:10 <Graypup_> impl<T: SomeOtherTrait> SomeTrait for T { }
08:33:15 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
08:33:38 Tops2 joins (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de)
08:33:43 <Graypup_> it implements SomeTrait for all types that implement SomeOtherTrait, having access to the functionality of SomeOtherTrait
08:34:38 <siraben> Oh ok so it's like, `class SomeOtherTrait t => SomeTrait t where {}`
08:34:39 <siraben> in Haskell
08:34:42 <c_wraith> siraben: for what purpose? Most use cases are handled by the async library, but some special cases are not
08:35:05 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
08:35:19 <Graypup_> siraben, I believe so yeah
08:35:39 <c_wraith> I bet the edge cases are different
08:35:50 <siraben> c_wraith: so the async library is sufficient for asynchronous programming in Haskell? I've used `mapConcurrently` in `Control.Concurrent` before and it sufficed
08:35:50 <c_wraith> Rust forbids orphan instances.
08:36:00 <siraben> But haven't done more complex async programs
08:36:10 <c_wraith> So it doesn't have to deal with an open-world assumption
08:36:28 <c_wraith> So it can handle overlapping instances with much less confusion than Haskell
08:37:16 <siraben> c_wraith: say I wanted to use gloss + some networking to render a dashboard of various things the user might be interested in, weather, currency rates, etc.
08:38:12 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds)
08:38:17 <Graypup_> c_wraith, yeah, the orphan rule sucks pretty hard, and I haven't thought hard about how haskell manages to not have one and avoid the troubles rust's orphan rule is intended to stop
08:38:32 <c_wraith> Graypup_: it doesn't avoid the troubles. :)
08:38:39 <Graypup_> heh
08:38:40 × tito_04 quits (~taurux@net-188-152-137-51.cust.vodafonedsl.it) (Read error: Connection reset by peer)
08:39:24 taurux joins (~taurux@net-109-115-33-52.cust.vodafonedsl.it)
08:39:41 <c_wraith> instead we have explicit overlapping indications and extensions like IncoherentInstances when that isn't enough.
08:40:07 <c_wraith> Note the word "incoherent" is scary. That is accurate.
08:40:59 <c_wraith> when instances overlap incoherently, GHC provides no guarantees that it will always select the same one :(
08:41:31 × cassim quits (~cassim@51.194.80.91) (Ping timeout: 246 seconds)
08:44:58 <c_wraith> siraben: async is not the only way to handle something like that. It sounds like it might be a better fit for various FRP systems, which take care of propagating updates for you.
08:44:59 <siraben> does anyone know of good tutorials and examples of async programming in Haskell?
08:45:30 <siraben> c_wraith: Right, I get the sense that async may be the wrong/too low level abstraction in Haskell
08:48:27 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:48:50 × taurux quits (~taurux@net-109-115-33-52.cust.vodafonedsl.it) (Read error: Connection reset by peer)
08:48:55 tito_04 joins (~taurux@net-109-115-33-214.cust.vodafonedsl.it)
08:55:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:56:50 × pera quits (~pera@unaffiliated/pera) (Quit: leaving)
08:57:28 taurux joins (~taurux@net-109-115-33-214.cust.vodafonedsl.it)
08:58:25 × tito_04 quits (~taurux@net-109-115-33-214.cust.vodafonedsl.it) (Ping timeout: 264 seconds)
08:58:46 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
09:01:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
09:17:34 <ij> where is the filter for Maybe? Is there one that works for lists and Maybes?
09:17:48 pera joins (~pera@unaffiliated/pera)
09:18:40 <ij> I guess find works for Maybe, surprisingly
09:20:02 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
09:22:07 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds)
09:23:15 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
09:23:39 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-zvbazqanyhuylsws) (Quit: Connection closed for inactivity)
09:24:40 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
09:25:13 Enrico63 joins (520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net)
09:25:59 <charukiewicz> ij: find works on Maybe values because its type signature is find :: Foldable t => (a -> Bool) -> t a -> Maybe a and Maybe has a Foldable instance
09:26:21 coot joins (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl)
09:26:41 <ij> right, but it wasn't the function I expected to find – I thought I was going to find a function that also works for lists
09:27:42 <charukiewicz> find does work for lists as well, since lists also have a Foldable instance
09:29:04 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
09:30:37 <charukiewicz> That being said, find always returns a single Maybe value. So it will only return the leftmost value that matches the predicate. You do need to use filter if you want to return all the values that match the predicate.
09:30:51 <Enrico63> Hello. I've installed ghcup via the command here (https://www.haskell.org/ghcup/). However I'm having some trouble in using it. For instance, after doing `ghcup install ghc 8.10.3`, if I run `ghci` I get `bash: ghci: comand not found`
09:30:57 <ij> ski, why did you need Right . (,) () there yesterday? Could it not have been just Right?
09:31:21 <ij> :t absurd
09:31:22 <lambdabot> Void -> a
09:31:44 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
09:31:51 × christo quits (~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net) (Remote host closed the connection)
09:32:29 christo joins (~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net)
09:33:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
09:35:02 berberman_ joins (~berberman@unaffiliated/berberman)
09:35:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:35:46 × drbean quits (~drbean@TC210-63-209-201.static.apol.com.tw) (Ping timeout: 246 seconds)
09:36:02 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
09:36:38 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
09:36:49 × christo quits (~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net) (Ping timeout: 246 seconds)
09:39:52 aerium joins (~aerium@51.194.80.91)
09:40:47 <idnar> :t catMaybes -- ij, maybe this?
09:40:48 <lambdabot> [Maybe a] -> [a]
09:41:17 <ij> I was looking for filter for Foldable, but maybe that is not possible
09:41:48 <idnar> ij: ah, that's ~ Witherable
09:42:18 <ij> well, find it is then, because I don't need another package just for that
09:43:21 <idnar> :t Data.Witherable.filter
09:43:23 <lambdabot> error:
09:43:23 <lambdabot> Not in scope: ‘Data.Witherable.filter’
09:43:23 <lambdabot> No module named ‘Data.Witherable’ is imported.
09:43:31 <idnar> % :t Data.Witherable.filter
09:43:31 <yahb> idnar: ; <interactive>:1:1: error:; Not in scope: `Data.Witherable.filter'; No module named `Data.Witherable' is imported.
09:43:46 <idnar> % import Data.Witherable
09:43:46 <yahb> idnar: ; <no location info>: error:; Could not find module `Data.Witherable'; It is not a module in the current program, or in any known package.
09:43:53 <idnar> bah
09:44:37 <idnar> anyway, yeah, overkill for just one instance
09:44:53 <ij> but at least I know it's there! scala has it, so I was kind of looking for it
09:45:19 <dibblego> scala's is broken, use Witherable
09:45:23 <ij> :)
09:45:37 <ij> but they pay me for it!
09:47:03 <ij> I'm writing a pipe maze solver and I added coloring for connected parts lookupEquiv v =
09:47:10 <ij> https://photos.app.goo.gl/26XtXxiG4WsM2K5ZA
09:47:27 <idnar> Data.Witherable.filter :: Filterable f => (a -> Bool) -> f a -> f a
09:47:27 <idnar> Data.Witherable.wither :: (Witherable t, Applicative f) => (a -> f (Maybe b)) -> t a -> f (t b)
09:47:38 <ij> they're all supposed to be connected, but first I had to write the code that detects
09:48:34 <ij> idnar, lambdabot doesn't have everything imported :)
09:50:01 <haasn> After `cabal install arithmoi`, my `ghci` no longer finds system-wide ghc pakages, instead considering them `hidden`. Is there a way to resolve this, so that I can use both global (provided via system packages) and local (installed via `cabal install`) libraries from `ghci`?
09:50:16 <haasn> my ~/.ghc/**/environment seems to have turned into this: https://0x1.st/Lm.txt
09:50:32 hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
09:51:34 <haasn> `ghc-pkg describe lens` shows `exposed: True`
09:52:12 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
09:52:23 × hekkaidekapus} quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
09:55:28 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
09:56:11 <haasn> It seems the only way around this is to also `cabal install` all of the packages I previously had installed system-wide, e.g. `cabal install lens` rather than `zypper install ghc-lens`. But, this way I obviously don't get upgrades automatically
09:56:57 <merijn> haasn: "cabal install" in 3.x doesn't really do global installs anymore, at least not in the sense it did previously.
09:57:32 <merijn> haasn: What the best solution is depends on what you need/are using global installs for
09:57:43 <haasn> I mostly just like the idea of getting automatic upgrades
09:58:07 <merijn> automatic upgrades for what
09:58:12 <haasn> Plus it makes a whole lot more sense to me to have one package manager for as many things as possible, rather than a separate package manager for every ecosystem
09:58:46 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
09:58:48 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
09:59:01 <haasn> Well, say the `lens` package gets an update. I want my `ghci` to always reference the latest version of `lens` that's installed on the system. Currently, that propagates into a new rpm, which `zypper update` will pick up during routine system updates
10:00:01 <haasn> If I `cabal install lens` then how does cabal know when there's a newer version of lens and install it automatically?
10:00:30 <merijn> haasn: It checks the package index from Hackage, which gets updated when you run "cabal update"
10:00:36 <Enrico63> Hello, is this a good place to ask for help with ghcup?
10:00:47 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
10:01:04 <haasn> merijn: So I need to manually `cabal update && cabal install lens && cabal install arithmoi && cabal install ....` for every package I reference from .ghci?
10:01:04 <merijn> haasn: Anyway, rpms as system packages are (presumably) installed in the global package database, but cabal-install 3.x doesn't really use that anymore
10:01:45 <merijn> haasn: If you're using cabal-install 3.x then that will almost definitely *not* do what you want/expect
10:02:11 <merijn> You could probably do v1-install, but that's not ideal either
10:02:22 × datajerk quits (~datajerk@sense.net) (Ping timeout: 246 seconds)
10:03:02 <merijn> haasn: cabal-install does not install libraries into the global package database, because that forces you to have only a single version of any package, which means working on multiple projects with conflicting dependencies becomes hard/impossible (see the clusterfuck with virtualenv in python, etc.)
10:04:04 <haasn> My question, I think, is still summarizable as "is there a way to make `cabal v2-install` play nicely with the global package database"
10:04:10 <merijn> haasn: Instead it has a global store which allows arbitrary many installs of different versions of any package and dynamically generates a package database per project/package you work on. The result is the notion of "the global package database" becomes meaningless and relying on having "a global package database" becomes tricky too
10:04:15 <merijn> haasn: No
10:04:23 <merijn> Because there is no global database in v2-install
10:05:44 <merijn> haasn: You probably wanna make a custom environment with cabal-install and tell ghc(i) to use that package environment as described in this xmonad issue: https://github.com/xmonad/xmonad/issues/199#issuecomment-609433196
10:08:43 Rudd0 joins (~Rudd0@185.189.115.103)
10:10:50 × sqrt2 quits (~ben@unaffiliated/sqrt2) (Ping timeout: 264 seconds)
10:11:57 sqrt2 joins (~ben@unaffiliated/sqrt2)
10:12:05 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
10:12:35 datajerk joins (~datajerk@sense.net)
10:13:10 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
10:18:02 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
10:18:22 kritzefitz joins (~kritzefit@212.86.56.80)
10:20:49 × charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Quit: charukiewicz)
10:22:45 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 272 seconds)
10:26:26 kuribas joins (~user@ptr-25vy0i7ug01ndhtx56u.18120a2.ip6.access.telenet.be)
10:29:12 kapasian joins (8de20846@141.226.8.70)
10:29:47 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
10:30:19 × kapasian quits (8de20846@141.226.8.70) (Remote host closed the connection)
10:33:41 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
10:34:14 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
10:34:23 × srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
10:34:47 × taurux quits (~taurux@net-109-115-33-214.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
10:35:03 × denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds)
10:35:05 taurux joins (~taurux@net-109-115-33-214.cust.vodafonedsl.it)
10:35:33 hacxman joins (~hexo@gateway/tor-sasl/hexo)
10:35:37 srk joins (~sorki@gateway/tor-sasl/sorki)
10:35:43 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
10:35:49 hacxman is now known as hexo
10:36:03 × xelxebar quits (~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds)
10:36:06 xelxebar_ joins (~xelxebar@gateway/tor-sasl/xelxebar)
10:36:09 denisse joins (~spaceCat@gateway/tor-sasl/alephzer0)
10:36:21 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Quit: No Ping reply in 180 seconds.)
10:36:23 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
10:36:43 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
10:36:46 acidjnk_new joins (~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de)
10:37:11 hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
10:37:41 jpds joins (~jpds@gateway/tor-sasl/jpds)
10:37:48 × coeus quits (~coeus@p200300d0271c3b00114a6166d66724be.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
10:38:26 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
10:44:20 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
10:45:54 livvy joins (~livvy@gateway/tor-sasl/livvy)
10:52:27 × seanparsons quits (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Ping timeout: 268 seconds)
10:53:44 coeus joins (~coeus@p200300d0273e3a0010a118dda365b6f5.dip0.t-ipconnect.de)
10:56:07 seanparsons joins (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
10:57:44 × ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection)
11:00:32 dominik joins (~weechat@2001:a61:35c0:901:9665:9cff:fe4d:b4d0)
11:01:01 × polyrain quits (~polyrain@2001:8003:e501:6901:aca6:1b18:3492:8fb8) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:02:11 × xwvvvvwx quits (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Read error: Connection reset by peer)
11:02:12 <Axman6> Is there a way with cabal to use a git repo as a source of a dependency like stack?
11:02:38 xwvvvvwx joins (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
11:02:45 <Axman6> Enrico63: First rule of IRC: don't ask to ask, just ask
11:05:52 × tama quits (~tama@unaffiliated/tama00) (Ping timeout: 256 seconds)
11:06:03 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
11:06:04 CMCDragonkai1 joins (~Thunderbi@124.19.3.250)
11:07:21 × CMCDragonkai1 quits (~Thunderbi@124.19.3.250) (Client Quit)
11:10:34 Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas)
11:17:24 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
11:17:27 <merijn> Axman6: Yes
11:17:49 <merijn> Axman6: https://github.com/merijn/Belewitte/blob/master/cabal.project.ghc-8.10#L8-L12
11:20:13 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
11:20:52 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
11:22:22 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
11:25:02 × xwvvvvwx quits (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Quit: ZNC 1.8.2 - https://znc.in)
11:25:14 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
11:27:15 xwvvvvwx joins (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
11:27:26 <Enrico63> Axman6 I did it earlier. Nobody answered. However I've solved. Thanks.
11:29:07 × Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 256 seconds)
11:30:37 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
11:32:34 <Axman6> merijn: thanks - how is subdir used?
11:33:04 <Axman6> Enrico63: I find just using ghcup tui is the simplest thing to do
11:35:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
11:39:03 <Axman6> ah, got it, it's which subdir in the repo ro use, not where the package ends up
11:41:59 × cpape` quits (~user@static.180.18.203.116.clients.your-server.de) (Quit: ERC (IRC client for Emacs 26.3))
11:42:20 cpape joins (~user@static.180.18.203.116.clients.your-server.de)
11:45:52 christo joins (~chris@81.96.113.213)
11:46:23 × HarveyPwca quits (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving)
11:51:06 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
11:51:13 <merijn> Axman6: Right, since (for example) persistent has multiple packages in one repo
11:51:44 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
11:52:27 × funkyb quits (~funkyb@139.28.218.148) (Remote host closed the connection)
11:53:37 j3parker1 joins (~j3parker@178.239.168.171)
11:56:32 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds)
12:03:40 xff0x joins (~fox@2001:1a81:53b9:9a00:76c5:7153:4a38:bc09)
12:04:14 niekvandepas joins (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d)
12:04:19 × xff0x quits (~fox@2001:1a81:53b9:9a00:76c5:7153:4a38:bc09) (Client Quit)
12:06:17 toppler joins (~user@mtop.default.momentoftop.uk0.bigv.io)
12:07:18 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
12:11:35 × niekvandepas quits (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Remote host closed the connection)
12:12:01 niekvandepas joins (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d)
12:12:02 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
12:12:31 juuandyy joins (~juuandyy@90.166.144.65)
12:12:49 Franciman joins (~francesco@host-82-48-174-127.retail.telecomitalia.it)
12:19:14 × niekvandepas quits (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Ping timeout: 264 seconds)
12:19:39 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
12:22:06 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
12:26:24 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 256 seconds)
12:26:54 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 260 seconds)
12:30:44 × juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
12:30:44 lush joins (4d0c3c64@dynamic-077-012-060-100.77.12.pool.telefonica.de)
12:31:19 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
12:33:19 <lush> stupid question about using git to publish a hakyll page: I've got a develop branch where the site config etc lies. now essentially what I want to do is: build the site, then copy _site/ to the master-branch of my repo and commit all the changes to get it published by github pages. however, after switching the branch by 'git checkout master', I
12:33:19 <lush> can't access the _site/ folder anymore if master isn't empty. I could work around this, but I'm pretty sure git has some neat features I just don't know that let me do this in a clean way. any thoughts?
12:33:42 ADG1089__ joins (~aditya@122.163.165.143)
12:35:46 × columbarius1 quits (~columbari@i5E86B32C.versanet.de) (Read error: Connection reset by peer)
12:36:02 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
12:36:18 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
12:37:22 sparsity joins (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
12:37:46 × knupfer quits (~Thunderbi@87.123.206.207) (Ping timeout: 272 seconds)
12:37:59 × troydm quits (~troydm@unaffiliated/troydm) (Ping timeout: 260 seconds)
12:39:22 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:40:15 __monty__ joins (~toonn@unaffiliated/toonn)
12:40:50 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds)
12:41:12 columbarius1 joins (~columbari@i5E86B32C.versanet.de)
12:42:08 drbean joins (~drbean@TC210-63-209-193.static.apol.com.tw)
12:46:49 immae joins (immaematri@gateway/shell/matrix.org/x-sofszfynxwfdycbe)
12:47:31 immae[m] parts (~immae@2a01:4f8:141:53e7::) ("WeeChat 2.9")
12:49:35 × p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
12:49:55 p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
12:52:35 × Enrico63 quits (520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net) (Ping timeout: 245 seconds)
12:53:48 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
12:54:41 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
12:57:52 knupfer joins (~Thunderbi@200116b82cc1a700f8d327fffe2ff6cd.dip.versatel-1u1.de)
12:57:53 × knupfer quits (~Thunderbi@200116b82cc1a700f8d327fffe2ff6cd.dip.versatel-1u1.de) (Client Quit)
12:58:07 knupfer joins (~Thunderbi@87.123.206.207)
12:58:50 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
12:59:33 × dominik quits (~weechat@2001:a61:35c0:901:9665:9cff:fe4d:b4d0) (Quit: WeeChat 2.8)
12:59:43 troydm joins (~troydm@unaffiliated/troydm)
13:02:50 × knupfer quits (~Thunderbi@87.123.206.207) (Ping timeout: 256 seconds)
13:06:06 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 265 seconds)
13:08:07 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
13:08:55 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
13:09:46 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
13:12:07 jamm joins (~jamm@unaffiliated/jamm)
13:12:32 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
13:13:03 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
13:13:04 <freeman42x[m]> any easy way to get indexes of a matrix in Haskell? something simpler than having to use zips etc. and using base libs preferably
13:14:24 <__monty__> You can index arrays with tuples.
13:14:56 <freeman42x[m]> __monty__: sure, without ziping?
13:15:57 <__monty__> Not sure what you mean by zipping. Data.Array.Array can be indexed by tuples. https://hackage.haskell.org/package/array-0.5.4.0/docs/Data-Array.html
13:16:50 × jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
13:16:56 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
13:20:10 da39a3ee5e6b4b0d joins (~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th)
13:20:55 <freeman42x[m]> __monty__: how do you index it by tuples?
13:21:18 <__monty__> That's an exercise for the reader.
13:21:20 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
13:22:19 <freeman42x[m]> __monty__: that was my question... and using zips is not the best way, there could be dedicated function or way to build he array
13:22:36 × darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 240 seconds)
13:24:02 <__monty__> I don't understand why a zip of two lists of indices is such a problem. How do you expect to initialize every element if you don't feel like even iterating over indices?
13:25:20 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
13:25:58 <freeman42x[m]> __monty__: if there is a better way that is less verbose / error prone, should I not seek to use that?
13:28:10 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
13:28:16 <ij> what decides the CSS on hackage.haskell.org? containers has old, websockets has new
13:29:33 <hpc> date of haddock build probably?
13:29:53 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds)
13:31:43 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
13:32:01 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
13:34:16 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
13:36:53 <__monty__> freeman42x[m]: Sure but with realistic expectations. To set all the elements of a matrix you have to iterate over all the coordinates. Or combine rows/colums of elements. There's not much space for improving on this.
13:37:50 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
13:38:20 <freeman42x[m]> __monty__: ofc there are ways to improve this, just provide a function that adds indexes to a matrix (nested lists) or provide a way to construct a matrix which will give you access to indexes
13:38:23 <ij> freeman42x[m], less error prone than just programming it? well, someone has to write the function to compute them...
13:38:26 <freeman42x[m]> like, that is super easy, barely an inconvenience
13:38:54 <__monty__> I really don't see the difference.
13:39:33 darjeeling_ joins (~darjeelin@115.215.40.96)
13:40:07 <freeman42x[m]> __monty__: the difference is that the programmer would not have to write the same code over and over again which leads to more bugs
13:41:15 <ij> are you proposing that should index range computations should added to some library?
13:42:21 <merijn> THose already exist :p
13:42:31 <merijn> See the Ix class :p
13:42:58 <merijn> I think he just wants SaC's array comprehensions
13:43:18 <ij> what's SaC?
13:43:51 <ij> freeman42x[m], was the question "where are they implemented, so I don't have to" all along?
13:44:21 <merijn> Single assignment C
13:45:48 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
13:48:13 × shailangsa quits (~shailangs@host86-186-191-114.range86-186.btcentralplus.com) (Ping timeout: 264 seconds)
13:48:30 fendor joins (~fendor@77.119.130.129.wireless.dyn.drei.com)
13:49:30 × berberman_ quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
13:49:55 berberman joins (~berberman@unaffiliated/berberman)
13:50:43 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
13:50:56 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
13:56:01 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
13:56:31 × drbean quits (~drbean@TC210-63-209-193.static.apol.com.tw) (Ping timeout: 256 seconds)
14:00:05 <ij> merijn, sorry, I couldn't quite follow what was going on with the monoid abuse immediately :)
14:00:38 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds)
14:00:40 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
14:00:53 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
14:01:26 × sparsity quits (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
14:05:26 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
14:05:59 <ij> is mapM_ some sort of traverse?
14:06:34 <merijn> It *is* traverse
14:06:36 <merijn> :t traverse
14:06:37 u0_a298 joins (~user@65.35.205.131)
14:06:37 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
14:06:38 <merijn> :t mapM_
14:06:39 <lambdabot> (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
14:06:41 <ij> ()
14:06:42 <merijn> well
14:06:44 <merijn> :t traverse_
14:06:46 <lambdabot> (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
14:06:52 <ij> ah, then I have to import it
14:07:05 <merijn> hysterical raisins
14:07:14 <ij> haha
14:07:19 <ij> I'd never heard that one
14:07:39 <merijn> traverse_ is basically a generalisation of traverse
14:07:45 <merijn> eh
14:07:48 <merijn> mapM >.>
14:08:12 <kuribas> merijn: mapM_
14:08:48 son0p joins (~son0p@181.136.122.143)
14:10:08 <merijn> kuribas: https://i.imgflip.com/4ta34y.jpg
14:10:18 <ij> :D
14:10:23 <ij> you like to have fun here
14:11:01 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
14:12:01 × cyphase quits (~cyphase@unaffiliated/cyphase) (Ping timeout: 272 seconds)
14:12:16 <kuribas> merijn: the type system disagrees
14:14:33 sajith[m] joins (sajithmatr@gateway/shell/matrix.org/x-xzxvlmzgkorbwysi)
14:16:00 <ij> do you know the f >>= (,) idiom?
14:16:12 Lycurgus joins (~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
14:17:34 <hpc> :t (>>= (,))
14:17:36 <lambdabot> (b -> a) -> b -> (a, b)
14:17:46 <hpc> oh, that's not bad
14:18:29 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
14:20:37 × u0_a298 quits (~user@65.35.205.131) (Read error: Connection reset by peer)
14:20:52 u0_a298 joins (~user@65.35.205.131)
14:21:32 <ezzieyguywuf> Graypup_: regarding your diagrams dependency stuff - guess i don't really understand, but also i don't know nix packaging stuff.
14:22:16 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 272 seconds)
14:23:22 shailangsa joins (~shailangs@host217-39-45-247.range217-39.btcentralplus.com)
14:25:26 × u0_a298 quits (~user@65.35.205.131) (Read error: Connection reset by peer)
14:25:54 kyali joins (~kyali@APN-123-254-27-gprs.simobil.net)
14:26:23 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
14:26:55 u0_a298 joins (~user@65.35.205.131)
14:28:04 × stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
14:28:22 stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
14:30:58 cyphase joins (~cyphase@unaffiliated/cyphase)
14:31:47 <ij> I need cheaper copies for matrixes https://hackage.haskell.org/package/matrix-0.3.6.1/docs/Data-Matrix.html
14:31:59 <ij> I think I'm going to go with Vector Vector Char
14:32:05 <ij> (because I'm storing Chars)
14:32:15 <ij> should that work out?
14:34:29 × u0_a298 quits (~user@65.35.205.131) (Read error: Connection reset by peer)
14:34:29 <ezzieyguywuf> ij: i bet that matrix is essentially a vector behind-the-scenes anyway
14:34:48 <ij> yes, but it isn't Vector Vector Char
14:34:50 <merijn> ezzieyguywuf: It literally is :p
14:35:03 <ij> i.e. Vector Vector a
14:35:03 × xlei quits (znc@unaffiliated/xlei) (Ping timeout: 256 seconds)
14:35:18 u0_a298 joins (~user@65.35.205.131)
14:35:20 <ij> doesn't matter what it holds, the updates will invalidate the whole array instead of just a row/column
14:35:24 <ezzieyguywuf> ij: that's how kmett does it at least - https://hackage.haskell.org/package/linear-1.21.3
14:35:47 × ericsagnes quits (~ericsagne@2405:6580:0:5100:3c13:dd0e:758f:287c) (Ping timeout: 260 seconds)
14:36:17 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
14:36:52 <ij> merijn, would Vector Vector a work?
14:37:17 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
14:37:18 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
14:37:34 <merijn> Yes, but almost certainly *less* efficient
14:37:38 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
14:37:51 <ij> well, my maze solver is eating my memory and that's the bottleneck right now
14:37:51 <merijn> Well, it depends for what, I suppose
14:38:10 dyeplexer joins (~lol@unaffiliated/terpin)
14:38:45 pera_ joins (pera@gateway/vpn/mullvad/pera)
14:38:45 × pera_ quits (pera@gateway/vpn/mullvad/pera) (Client Quit)
14:39:00 pera_ joins (pera@gateway/vpn/mullvad/pera)
14:39:59 pera__ joins (pera@gateway/vpn/mullvad/pera)
14:40:14 × pera quits (~pera@unaffiliated/pera) (Disconnected by services)
14:40:21 pera__ is now known as pera
14:41:50 × pera_ quits (pera@gateway/vpn/mullvad/pera) (Read error: Connection reset by peer)
14:42:13 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 260 seconds)
14:42:34 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
14:42:42 Entertainment joins (~entertain@104.246.132.210)
14:42:59 <edwardk> ij: if you want a cheap copy with a small change there is always the option of using a Map or tree-based representation trading off O(1) -> O(log n) time access for O(n) -> O(log n) time updates
14:43:12 vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net)
14:43:48 <ij> edwardk, I am backtracking on a pipe maze puzzle, so I think O(1) access is important
14:43:53 × lucas8 quits (~luc@2001:41d0:8:109c::1) (Read error: Connection reset by peer)
14:44:19 <edwardk> if you are doing backtracking, the other option is to use mutable arrays and just undo the writes on backtrack
14:44:26 <edwardk> i do this in guanxi a lot
14:44:59 <ij> I was thinking about that, but I'm not sure how to implement i
14:45:01 <ij> +t
14:45:11 × lush quits (4d0c3c64@dynamic-077-012-060-100.77.12.pool.telefonica.de) (Remote host closed the connection)
14:45:16 <edwardk> here let me paste the core module
14:45:19 <ij> yeah, it's visiting only one thing at a time, so that could work
14:45:54 <edwardk> https://github.com/ekmett/guanxi/blob/master/src/Ref.hs
14:45:55 <ij> it might much less painful than trying to make my own matrix
14:46:16 <edwardk> that link shows mutable references with backtracking. you use it with something like LogicT (ST s)
14:46:36 <edwardk> and just never use any of the fair interleaving operations (as they are dangerous for the ST s effects.
14:47:12 <edwardk> unwind f mu na = na >>= \a -> case f a of (b, c) -> pure b <|> (mu c *> empty) -- is the key operation
14:47:12 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
14:47:29 × vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 260 seconds)
14:47:34 <edwardk> it basically does 'f' keeping track of some information c it needs to undo and b which is the answer
14:47:36 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
14:47:37 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
14:47:42 ericsagnes joins (~ericsagne@2405:6580:0:5100:32fa:5861:e6a3:7ef9)
14:48:01 <edwardk> and returns b, but if that branch fails with <|> it does the unwind action 'mu' given the information needed to unwind 'c'
14:48:22 <edwardk> updateRef' (reference -> Ref r) f = unwind id (writeMutVar r) $ atomicModifyMutVar' r $ \a@(f->(b,a'))->(a',(b,a))
14:49:33 <edwardk> turns the 'write' to an atomicModify that grabs the old value, and passes it to the undo action, which just writes the old value back
14:50:58 <edwardk> the key is that LogicT here is going to backtrack over the entire 'future' computation when it does (<|>), which is morally (++) for a list monad, we just have these backtrackable references, too.
14:51:25 <nshepperd> nice viewpatterns there heh
14:51:38 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
14:51:56 × u0_a298 quits (~user@65.35.205.131) (Ping timeout: 240 seconds)
14:52:08 <edwardk> in the interest of showing more exposed wiring, when playing around with implementing sat solvers and the like in here i use something like
14:52:09 <edwardk> https://github.com/ekmett/guanxi/blob/master/src/Vec.hs
14:52:17 Wuzzy joins (~Wuzzy@p5790e648.dip0.t-ipconnect.de)
14:52:20 × da39a3ee5e6b4b0d quits (~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:52:20 <edwardk> that gives me something close to a std::vector<> in c++ terms
14:52:38 <edwardk> except its implemented 'transients' style rather than mutable data structure style.
14:52:40 geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com)
14:53:50 <nshepperd> sounds like basically the trick is to write a withFoo function for modifying your array instead of writing directly
14:54:04 <edwardk> you can have a normal functional flat array that you can't mutate. you can also have a flat array of fixed size that you can mutate. std::vector gives you something like a mutable pointer to a resizable array and a cursor to the end. in the 'transients' form instead of having mutable internals for the pointer to the flat array (since it can change) and the high water mark you pass them in to any function that uses them, and consider
14:54:04 <edwardk> the old one invalidated
14:54:45 <edwardk> you can get a little bit faster benchmark out of that transient style than you can out of the version that has to putz around with then dressing that up with a STRef or something
14:55:19 <edwardk> i use the name transients because its the same pattern used by hickey in clojure for making temporarily mutable structures
14:55:59 <edwardk> you can 'thaw' a list/map/vector/whatever there into a transient form, do mutable things to it and 'freeze' it back (using haskell freeze/thaw vocabulary here)
14:56:11 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
14:57:27 xlei joins (~akans@unaffiliated/xlei)
14:57:39 <edwardk> the key idea with the transients concept in clojure is that freeze/thaw should be O(1). which rules out haskell array freeze/thaw. the arrays there wind up being things that use 32-way fanout for trees, and the idea is to copy-on-write from the frozen form to the transient form in that tree as needed, so you can slam parts of the tree mutably over and over without copying the path to the root, before freezing the final construction
14:57:54 <edwardk> i started writing a transients library in haskell and never got around to finishing it
14:58:12 zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
14:59:49 × zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Client Quit)
14:59:51 <edwardk> anyways the vocabulary for transients assumes you have this O(1) freeze/thaw, but that the transient form gets threaded through by the user, and its a great candidate for linear haskell use later, and i distinguish it from the typical immutable growable vector and mutable growable vector from the lack of reference to manage the growth, even if here it doesn't quite meet the transients vocabulary as used by hickey because copying is
14:59:51 <edwardk> linear.
15:00:13 <edwardk> the piece of this that was interesting is that the vec type there can be backtracking or not depending on which operations you use to read/write to it.
15:00:36 <edwardk> i need SAT solver state about the set of clauses to _not_ backtrack because its true in all worlds
15:00:51 <edwardk> but i need the vector of current assertions _to_ backtrack
15:01:21 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
15:01:34 <edwardk> it'd probably be cleaner to have written two types, but i'm pretty comfortable with wires hanging out when working on quick prototypes
15:01:55 zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
15:03:34 <edwardk> er Vec in there is transients style, Vector is mutable style. addVector does a non-backtracking snoc, addBackVector does a backtracking snoc. same with writeVector and writeBackVector
15:04:11 <edwardk> that was way more word vomit than that deserved
15:04:14 × Lycurgus quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt)
15:05:38 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
15:07:45 × chirpsalot quits (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (Ping timeout: 240 seconds)
15:08:30 × geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (*.net *.split)
15:09:02 × Chobbes quits (~Chobbes@unaffiliated/chobbes) (Ping timeout: 264 seconds)
15:14:10 <nshepperd> couldn't you implement a basic backtracking mutable state with a combination of ST, WriterT, and MaybeT
15:14:46 Chobbes joins (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net)
15:14:46 <nshepperd> ST (UndoActions, Maybe a)
15:15:39 chirpsalot joins (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net)
15:16:16 <nshepperd> with special <|> which either flushes or returns the undo stack
15:18:28 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
15:18:42 ph88 joins (~ph88@ip5f5af71a.dynamic.kabel-deutschland.de)
15:20:28 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
15:21:51 <nshepperd> UndoActions being just a difflist of ST s ()
15:22:00 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
15:22:47 × zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
15:23:06 nshepperd likes to forget that that s parameter to ST exists
15:23:07 zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
15:23:11 fendor_ joins (~fendor@91.141.0.240.wireless.dyn.drei.com)
15:24:05 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
15:24:51 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
15:25:25 × fendor quits (~fendor@77.119.130.129.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
15:31:39 <kuribas> ij: IMO you should never use the (->) monad, always prepend it with Reader or ReaderT.
15:31:43 <kuribas> it's only good for code golf
15:31:50 <kuribas> or obfuscation
15:33:12 × Katarushisu quits (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) (Ping timeout: 272 seconds)
15:34:11 <__monty__> What if you want to use both the functor and contravariant interfaces though?
15:34:29 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
15:35:02 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection)
15:35:12 Katarushisu joins (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net)
15:36:01 <merijn> Man...naming modules is too hard >.<
15:36:14 <merijn> I need, like, anonymous modules so I don't have to think off reasonable names
15:37:01 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
15:38:08 <nshepperd> Project/Module1.hs
15:39:23 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 260 seconds)
15:39:38 <merijn> Far from module 1, though :p
15:40:29 <merijn> More like Module120.hs xD
15:41:11 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 244 seconds)
15:44:56 geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com)
15:45:48 <kuribas> merijn: use a uuid? :-)
15:48:11 × ADG1089__ quits (~aditya@122.163.165.143) (Quit: Konversation terminated!)
15:50:06 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
15:50:36 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
15:52:06 ADG1089__ joins (~aditya@122.163.165.143)
15:52:24 urodna joins (~urodna@unaffiliated/urodna)
15:52:52 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:53:13 mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d)
15:54:44 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 240 seconds)
15:55:13 knupfer joins (~Thunderbi@200116b82cc1a700506770fffe608453.dip.versatel-1u1.de)
15:55:15 × knupfer quits (~Thunderbi@200116b82cc1a700506770fffe608453.dip.versatel-1u1.de) (Client Quit)
15:55:30 knupfer joins (~Thunderbi@87.123.206.207)
15:55:39 <merijn> Is there a convenient way to "derive" monoid for product types where all fields are monoids?
15:55:50 cuz joins (~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891)
16:00:34 Rudd0 joins (~Rudd0@185.189.115.103)
16:00:59 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
16:01:31 carlomagno joins (~cararell@148.87.23.11)
16:01:47 <lyxia> semigroups or generic-data or "by hand" using the Monoid instance of the generic Rep mempty = to mempty
16:02:14 Guest_9 joins (89cd0154@host-137-205-1-84.warwick.ac.uk)
16:02:20 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
16:03:22 m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
16:03:55 cuz parts (~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891) ("ERC (IRC client for Emacs 27.1)")
16:04:59 <merijn> lyxia: generic-data sounds like "this is gonna be more work than writing out the instance by hand" :p
16:05:11 <merijn> I don't really see how semigroups can help?
16:05:14 × Franciman quits (~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
16:06:42 juuandyy joins (~juuandyy@90.166.144.65)
16:07:18 <juri_> does the newest GHC still support building it with the "unregistered" backend?
16:07:38 <merijn> The release builds don't
16:07:46 <merijn> You have to build GHC from source to enable that, afaik
16:07:55 <juri_> kk. thanks.
16:08:10 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
16:08:49 christo joins (~chris@81.96.113.213)
16:13:22 × christo quits (~chris@81.96.113.213) (Ping timeout: 246 seconds)
16:13:53 × Guest_9 quits (89cd0154@host-137-205-1-84.warwick.ac.uk) (Ping timeout: 248 seconds)
16:17:30 <lyxia> merijn: the only thing left in semigroups is Data.Semigroup.Generic
16:18:08 <merijn> ah, wait, now I get it
16:19:27 flux39 joins (2fe3e53b@047-227-229-059.res.spectrum.com)
16:24:05 machinedgod joins (~machinedg@24.105.81.50)
16:24:09 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
16:27:08 Guest_9 joins (89cd0154@host-137-205-1-84.warwick.ac.uk)
16:27:24 × Guest_9 quits (89cd0154@host-137-205-1-84.warwick.ac.uk) (Client Quit)
16:27:41 × pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!)
16:29:17 × Entertainment quits (~entertain@104.246.132.210) ()
16:30:40 Entertainment joins (~entertain@104.246.132.210)
16:33:12 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
16:38:50 cuz joins (~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891)
16:39:05 × son0p quits (~son0p@181.136.122.143) (Ping timeout: 240 seconds)
16:40:31 × stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
16:40:49 stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
16:40:49 × stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
16:41:20 stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
16:44:52 × juuandyy quits (~juuandyy@90.166.144.65) (Read error: Connection reset by peer)
16:45:12 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
16:45:49 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
16:48:20 dandart joins (~Thunderbi@home.dandart.co.uk)
16:48:35 ulidtko|k joins (~ulidtko@193.111.48.79)
16:50:30 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Quit: Quit)
16:50:47 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
16:52:22 × srk quits (~sorki@gateway/tor-sasl/sorki) (Read error: Connection reset by peer)
16:52:22 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Read error: Connection reset by peer)
16:52:22 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Read error: Connection reset by peer)
16:52:22 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Read error: Connection reset by peer)
16:52:22 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Read error: Connection reset by peer)
16:52:23 × xelxebar_ quits (~xelxebar@gateway/tor-sasl/xelxebar) (Write error: Connection reset by peer)
16:52:23 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Write error: Connection reset by peer)
16:52:23 × cantstanya quits (~chatting@gateway/tor-sasl/cantstanya) (Write error: Connection reset by peer)
16:52:23 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Read error: Connection reset by peer)
16:52:23 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
16:52:23 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Write error: Connection reset by peer)
16:52:23 × denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Write error: Connection reset by peer)
16:52:23 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Write error: Broken pipe)
16:52:32 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
16:52:49 × flux39 quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Ping timeout: 248 seconds)
16:52:56 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
16:54:33 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Client Quit)
16:54:38 × cuz quits (~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891) (Ping timeout: 264 seconds)
16:54:51 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
16:59:54 <ski> ij : nope
17:00:32 jedws joins (~jedws@121.209.189.201)
17:01:02 Franciman joins (~francesco@host-82-48-174-127.retail.telecomitalia.it)
17:01:04 jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl)
17:01:57 × jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection)
17:03:38 × acidjnk_new quits (~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
17:05:10 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds)
17:05:59 cuz joins (~user@2601:182:cc02:8b0:955b:4c38:4ff3:a006)
17:07:20 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
17:07:39 Tario joins (~Tario@201.192.165.173)
17:07:44 kupi joins (uid212005@gateway/web/irccloud.com/x-dnfwwxqcgyemldny)
17:09:24 × carlomagno quits (~cararell@148.87.23.11) (Remote host closed the connection)
17:09:34 jb55 joins (~jb55@gateway/tor-sasl/jb55)
17:10:24 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
17:10:49 carlomagno joins (~cararell@148.87.23.11)
17:12:06 jollygood2 joins (~bc812391@199.204.85.195)
17:12:34 <jollygood2> hi. is there case extension that lets you have same body for more than one match?
17:12:59 <Uniaika> jollygood2: maybe use guards?
17:13:01 <jollygood2> case x of 1, 2 -> .. _ -> ..
17:13:18 <Uniaika> foo x | x `elem` [1,2] = do
17:13:29 <Uniaika> | otherwise = stuff
17:13:34 <Uniaika> (damnit, one space too much)
17:13:56 × fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
17:14:17 piroule joins (2fe3e53b@047-227-229-059.res.spectrum.com)
17:14:19 <piroule> could somebody walk me through this syntax: newtype One f a = One (f a)
17:14:23 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
17:14:31 <piroule> why can't I do "One 3 3"
17:14:36 <Uniaika> well
17:14:48 <Uniaika> because the "One f a" is the type signature
17:14:56 <jollygood2> Uniaika, yeah, that would work. just out of curiosity, there's no such extension? I could swear there was
17:15:02 <Uniaika> the "One" constructor actually only takes 1 argument
17:15:12 <Uniaika> which is the application of f to a
17:15:55 <piroule> so is "f a" a type?
17:15:57 <ski> piroule : declare a new type `One f a' (type constructor being defined/declared is `One'), parameterized by *types* `f' and `a', having a data constructor (also happening to be named `One'). values of this type are represented by values of type `f a'
17:16:01 <ski> yes
17:16:11 <piroule> but One f a is also a type?
17:16:28 <Uniaika> piroule: One f a *is* the new type, which has two parameters
17:16:36 <ski> e.g. a value of type `One Maybe Integer' is represented by a value of type `Maybe Integer' (`f' being `Maybe' and `a' being `Integer')
17:16:37 <Uniaika> jollygood2: ping me if there is
17:17:05 <piroule> then why does "One 2" work?
17:17:16 <piroule> what would be the f, and what would be the a?
17:17:22 <piroule> since I assume (f a) would be Integer
17:17:56 × kuribas quits (~user@ptr-25vy0i7ug01ndhtx56u.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:17:58 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
17:17:59 <ski> piroule : first, i think it would help to change the declaration to `newtype One f a = MkOne (f a)', so you don't confuse the type constructor with the data constructor
17:18:36 <ski> @let newtype One f a = MkOne (f a) deriving Show
17:18:38 <lambdabot> Defined.
17:18:47 <ski> @type MkOne
17:18:48 <lambdabot> forall k (f :: k -> *) (a :: k). f a -> One f a
17:19:05 <ski> MkOne :: f a -> One f a -- for short
17:19:26 <ski> @type MkOne (Just False)
17:19:27 <lambdabot> One Maybe Bool
17:19:35 <ski> @type MkOne Nothing
17:19:36 <lambdabot> One Maybe a
17:20:10 hexo joins (~hexo@gateway/tor-sasl/hexo)
17:20:13 srk joins (~sorki@gateway/tor-sasl/sorki)
17:20:27 <piroule> so how does "MkOne 1" fit into all of this
17:20:43 <ski> when you used `One 2', then `2' was used (via overloading) to have type `f a'
17:20:49 <piroule> or MkOne Just (Just False)
17:21:00 <ski> @type MkOne False
17:21:01 <idnar> :t MkOne 1
17:21:02 <lambdabot> error:
17:21:02 <lambdabot> • Couldn't match expected type ‘f a’ with actual type ‘Bool’
17:21:02 <lambdabot> • In the first argument of ‘MkOne’, namely ‘False’
17:21:03 <lambdabot> forall k (f :: k -> *) (a :: k). Num (f a) => One f a
17:21:16 <idnar> oops
17:21:19 <ski> @type MkOne (Just (Just False))
17:21:20 <lambdabot> One Maybe (Maybe Bool)
17:22:33 <ski> numeric literals are overloaded, meaning you can manage to use them as having types that you'd not usually think of as functions
17:22:44 <ski> @type 2:3
17:22:45 <lambdabot> (Num a, Num [a]) => [a]
17:22:46 × zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
17:22:51 dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
17:22:56 × pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 256 seconds)
17:23:06 zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
17:23:13 <piroule> what is 2:3?
17:23:23 <__monty__> A list.
17:23:59 <piroule> huh
17:24:11 <piroule> thought you need 2:[3] for that
17:24:24 <ski> in `2:3', `3' is a list
17:24:29 <__monty__> It's because of the overloading ski mentioned.
17:24:43 <piroule> doesn't work in my ghci haha
17:24:47 <piroule> unless i use FlexibleContexts
17:25:18 <ski> piroule : you didn't try it with `:t'
17:25:23 <piroule> yeah now i did
17:25:23 <piroule> :D
17:25:28 <piroule> why's that the case?
17:25:30 cantstanya joins (~chatting@gateway/tor-sasl/cantstanya)
17:25:36 pfurla joins (~pfurla@64.145.79.190)
17:25:37 <piroule> why does a = 2:3 not work while :t (2:3) work?
17:25:45 <__monty__> An integer literal is interpreted as `fromInteger 3` (or is it fromIntegral?
17:25:58 <ski> (the former)
17:25:58 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
17:26:09 <__monty__> Because 3 can't be interpreted as a list, even with fromInteger.
17:26:12 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
17:26:22 <__monty__> But that's not clear given the types.
17:26:36 <__monty__> @type 3
17:26:38 <lambdabot> Num p => p
17:27:49 <ski> @let instance Num a => Num [a] where (+) = zipWith (+); (-) = zipWith (-); (*) = zipWith (*); negate = map negate; abs = map abs; signum = map signum; fromInteger = repeat . fromInteger
17:27:51 <lambdabot> Defined.
17:27:59 <ski> > [1,2] + 3
17:28:02 <lambdabot> [4,5]
17:28:09 × jedws quits (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:28:19 × mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving)
17:28:37 usr25 joins (~J@216.red-83-58-205.dynamicip.rima-tde.net)
17:29:26 <__monty__> That's evil.
17:29:33 <__monty__> > 2:3
17:29:35 <lambdabot> [2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3...
17:30:26 <ski> @let instance Num a => Num (rho -> a) where (+) = liftA2 (+); (-) = liftA2 (-); (*) = liftA2 (*); negate = fmap negate; abs = fmap abs; signum = fmap signum; fromInteger = pure . fromInteger
17:30:29 <lambdabot> Defined.
17:30:31 <ski> (another classic)
17:31:14 <ski> > map (id^2 - id + 1) [-3 .. 3] -- polynomial evaluation
17:31:14 × cuz quits (~user@2601:182:cc02:8b0:955b:4c38:4ff3:a006) (Ping timeout: 264 seconds)
17:31:17 <lambdabot> [13,7,3,1,1,3,7]
17:32:50 <ski> > (map . map) (fst^2 - fst*snd + snd^2) [[(x,y) | y <- [-2 .. 2]] | x <- [-2 .. 2]] -- multivariate polynomial
17:32:52 <lambdabot> [[4,3,4,7,12],[3,1,1,3,7],[4,1,0,1,4],[7,3,1,1,3],[12,7,4,3,4]]
17:33:01 × Tops2 quits (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) (Read error: Connection reset by peer)
17:34:29 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:34:37 guanohhh joins (uid477762@gateway/web/irccloud.com/x-heviwwoxmanqshwa)
17:34:40 <__monty__> Thank you, my noggin is sufficiently broken now.
17:35:09 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
17:35:18 <ski> @let infixr -:; (-:) :: a -> (Integer -> a) -> (Integer -> a); (x -: xs) 0 = x; (x -: xs) i = xs (i-1)
17:35:20 <lambdabot> Defined.
17:36:01 <ski> > map (2 -: 3) [0 ..] -- this is analogous to the `2:3' example above. `[a]' corresponding roughly to `Integer -> a'
17:36:04 <lambdabot> [2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3...
17:36:23 <piroule> so if I did One [Just 3], then we know that f a would be [Just Int], so how do you know if (f, a) = ([], Just) or if (f, a) = ([Just t], Int)?
17:36:33 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:37:14 <ski> `[Just Int]' means `[] (Just Int)'. so matching that with `f a' means `f' is `[]' and `a' is `Just Int'
17:37:27 <piroule> so what if I had [] [] (Just Int)
17:37:30 <piroule> would f still be []?
17:37:33 <ski> well, rather with `Maybe' in place of `Just' ..
17:37:36 <piroule> is there any chance f could be [] [], for example?
17:37:44 <ski> no
17:37:51 <piroule> why not?
17:38:00 <ski> @kind [] [] (Maybe Int) -- kind error
17:38:03 <lambdabot> error:
17:38:03 <lambdabot> • Expected kind ‘* -> k0’, but ‘[] []’ has kind ‘*’
17:38:03 <lambdabot> • In the type ‘[] [] (Maybe Int)’
17:38:15 <ski> @kind [] ([] (Maybe Int)) -- this is ok
17:38:17 <lambdabot> *
17:38:37 <piroule> is it because functions only take 1 argument?
17:38:43 <ski> `[] [] T' doesn't make sense, since the list type constructor `[]' doesn't take (curriedly) two parameters, it only takes one
17:39:18 jmchael joins (~jmchael@87.112.235.234)
17:40:07 <idnar> you could do `type LL x = [[x]]` I think
17:40:55 <ski> yes. but you couldn't say `One LL Int'
17:41:54 <idnar> @let type LL x = [[x]]
17:41:54 avdb joins (~avdb@gateway/tor-sasl/avdb)
17:41:56 <lambdabot> Defined.
17:42:35 <idnar> @kind One LL Int
17:42:36 <lambdabot> error:
17:42:37 <lambdabot> The type synonym ‘LL’ should have 1 argument, but has been given none
17:42:49 <idnar> ah yes
17:43:22 <ski> piroule : anyway .. please don't mix type and value levels. you should not have thought of using `Just' there above. this was why i suggested distinguishing type constructor from data constructor in the first place, by renaming the latter `MkOne'
17:43:36 Sgeo_ joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
17:44:07 <piroule> makes sense, i got that example from a book :)
17:44:09 <ski> @let type Teice f a = f (f a)
17:44:11 <lambdabot> Defined.
17:44:20 <ski> @let type Twice f a = f (f a) -- er, typo
17:44:22 <lambdabot> Defined.
17:44:35 <ski> @kind Twice LL Bool
17:44:36 <lambdabot> *
17:45:24 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 260 seconds)
17:47:46 <ski> (essentially, `LL' acts like a macro, which is why you must fully apply it. and `Twice' acts like a higher-order macro, which is why you can still pass an unapplied `LL' to it, since the definition of `Twice' will fully apply it)
17:50:40 cuz joins (~user@c-24-2-210-18.hsd1.ma.comcast.net)
17:50:47 <piroule> so are `newtype Identity a = MkIdentity { runIdentity :: a }`` and `newtype Identity a = MkIdentity a`equivalent?
17:51:36 UpstreamSalmon joins (uid12077@gateway/web/irccloud.com/x-rexnvewnzxxthgrm)
17:52:06 hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
17:52:28 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
17:52:46 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds)
17:53:07 Tario joins (~Tario@201.192.165.173)
17:56:01 × Guest43451 quits (~textual@mskresolve-a.mskcc.org) (Ping timeout: 264 seconds)
17:56:27 bitmapper joins (uid464869@gateway/web/irccloud.com/x-upuqeneqybvqnswn)
17:57:07 <ski> piroule : yes, apart from that the former also allows using record syntax for `MkIdentity', also introducing `runIdentity :: Identity a -> a' as a field accessor, essentially as if defined like
17:57:14 <ski> runIdentity :: Identity a -> a
17:57:23 <ski> runIdentity (MkIdentity x) = x
17:58:12 <piroule> so why would you ever want to use the latter
17:59:41 <ski> the record syntax means that you can write (both as a pattern, and as an expression) `MkIdentity {runIdentity = x}' in place of `MkIdentity x'; and, also that you can write (as an expression) an update `i {runIdentity = x}', which, in this case, also does the same as `MkIdentity x' (since there's only one field)
18:00:20 <ski> piroule : often there's no real need to bother with record syntax (including having to think up names for fields)
18:04:55 Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net)
18:08:07 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
18:08:15 mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d)
18:09:05 × conal quits (~conal@209.58.133.168) (Ping timeout: 240 seconds)
18:09:13 × dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 264 seconds)
18:10:39 conal joins (~conal@ip-66-115-176-156.creativelink.net)
18:11:35 × conal quits (~conal@ip-66-115-176-156.creativelink.net) (Client Quit)
18:12:03 albel727 joins (~albel727@unaffiliated/albel727)
18:12:07 jamm joins (~jamm@unaffiliated/jamm)
18:12:52 Alleria joins (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com)
18:13:16 Alleria is now known as Guest19797
18:13:59 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
18:16:29 conal joins (~conal@212.102.44.51)
18:16:42 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
18:20:07 ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
18:20:18 <piroule> can you unwrap an applicative?
18:20:42 <piroule> the opposite of "pure"
18:21:21 <piroule> i'm doing an exercise where i'm trying to write the <*> operator with type `f (g (a -> b)) -> f (g a) -> f (g b)`
18:21:38 <piroule> here f and g are applicatives, but not necessarily monads
18:21:39 <koz_> piroule: Not in general.
18:21:55 <koz_> But in this case, you don't need to.
18:22:31 <piroule> hmm my thought process is, if we could unwrap the first two arguments, apply <*>, then apply a pure, it would work
18:22:35 <piroule> but there's no way to unwrap here?
18:22:44 <koz_> piroule: No, but you don't need to.
18:22:46 × zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
18:22:50 <koz_> Think less of wrappers, more of interfaces.
18:23:00 <koz_> Applicative is an interface, and one capable 100% of describing what you want.
18:23:06 zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
18:23:09 <koz_> Here's a little warmup exercise for you.
18:23:35 <koz_> Can you write an Applicative instance for 'newtype AppComp f g a = AppComp (f (g a))'?
18:23:57 <koz_> Start with Functor, it'll give you a clue.
18:24:03 <piroule> yeah that's what i was trying to do :P
18:24:07 × MidAutumnHotaru quits (~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Quit 啾)
18:24:19 <piroule> well my functor is: `fmap f (MkCompose fga) = MkCompose $ (fmap . fmap) f fga`
18:24:33 <piroule> and my pure is `pure a = MkCompose $ (pure . pure) a`
18:24:42 <piroule> but i'm stuck on the `(<*>)`
18:24:51 <koz_> OK, cool.
18:24:59 <piroule> i'm not sure how i should be thinking through this
18:25:01 <koz_> You have the right idea.
18:25:11 <koz_> Basically, you have effs <*> exes = _
18:25:19 <koz_> Now, you only have fmap, pure, <*> to work with.
18:25:26 MidAutumnHotaru joins (~MidAutumn@unaffiliated/midautumnhotaru)
18:25:28 <koz_> So the only possible choice here is <*>
18:25:32 <koz_> So what you do in GHC is
18:25:36 <koz_> s/in/with/
18:25:40 <ski> you want a (possibly large) hint ?
18:25:43 <koz_> effs <*> exes = _ <*> _
18:25:53 <koz_> Then see what GHC suggests as types for those holes.
18:26:07 <piroule> what's that thing to the right?
18:26:10 <koz_> Like, basically, the process is 'start with hole, fill hole, repeat until no hole'.
18:26:16 <koz_> Typed holes.
18:26:18 <koz_> Use them.
18:26:21 <koz_> Early and often.
18:26:31 <ski> piroule : asking GHC for what types of expressions it expects, in place of those `_'s
18:26:35 <koz_> You need to use <*> somewhere.
18:26:42 <koz_> And effs and exes go into those holes somehow.
18:26:43 <ski> (directly, or indirectly)
18:26:45 <koz_> Possibly with more stuff.
18:26:56 <koz_> In fact, you can probably do better.
18:26:56 <piroule> am i doing this correctly? `(MkCompose f) <*> (MkCompose a) = MkCompose $ f <*> a = _ <*> _`
18:27:02 <koz_> No.
18:27:13 <ski> (those brackets are redundant)
18:27:21 <koz_> (also that)
18:27:23 <ski> you only want a single `='
18:27:30 <koz_> But yeah, ski can give you a possibly large hint.
18:28:12 <piroule> i do kind of want to learn the process for figuring out things like this rather than just get to the answer
18:28:35 <ski> "follow the types" is good general advice
18:28:36 <piroule> so where does the typed hole go?
18:28:49 <koz_> How I would start is thus:
18:28:52 <piroule> now i have: `MkCompose f <*> MkCompose a = MkCompose $ f <*> a`
18:29:02 <ski> MkCompose iab <*> MkCompose ia = MkCompose (_ <*> _)
18:29:03 <piroule> but i'm not sure how to inject a hole
18:29:14 × Katarushisu quits (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) (Ping timeout: 256 seconds)
18:29:16 <koz_> MkCompose fs <*> Mkcompose xs = MkCompose (_ fs <*> _ xs)
18:29:19 <ski> (is what koz_ meant you could try)
18:29:23 <koz_> And see what types the holes suggest
18:29:38 <koz_> Then think 'do I have anything available to me that might give me what I need here'.
18:29:46 <koz_> You may need to add more holes, rearrange, etc.
18:29:48 × shailangsa quits (~shailangs@host217-39-45-247.range217-39.btcentralplus.com) (Ping timeout: 256 seconds)
18:29:51 <ski> yea, that variant is useful if you suspect you should use `fs' for the left operand, and `xs' for the right one
18:29:53 <koz_> But yeah, 'follow the types' gets you extremely far.
18:30:13 <idnar> I'm building up a bunch of Text by <>ing things together; ghc -O2 is inlining this to produce madness. would switching to builders help?
18:30:22 <koz_> idnar: Probably.
18:30:26 <ski> (my hint had to do with looking at the type `f (g (a -> b)) -> f (g a) -> f (g b)' that you mentioned before)
18:30:30 <koz_> Generally <> on Text is not terribly efficient.
18:31:49 <ski> "follow the types" means focusing on "what do i have ?" and "what do i want to get ?", trying to fill in the blanks, step by step, by making those two ends get closer to each other
18:32:03 <idnar> (NOINLINE on two trivial fns saves 15 GB memory at compile time)
18:32:39 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
18:32:43 <ski> in your case, you have one input of type `f (g (a -> b))', and one of type `f (g a)', and want to get to an output of type `f (g b)'
18:33:57 <ski> .. often, it helps quite a bit to work backwards, from the goal. "goal-directed reasoning". but, sometimes, you may know, or have a good hunch, for some initial step(s) you want to perform on the inputs (you could write those down in code with a `where' or a `let'-`in', even if you're going to inline it later)
18:35:24 × sphalerite quits (~sphalerit@NixOS/user/lheckemann) (Quit: WeeChat 2.6)
18:35:35 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
18:36:52 <kyali> hey people :) i'm a bit of a newbie to haskell. As an exercise i'm trying to parse an org-mode file into a rose tree structure. I started with each node having a parent and a list of children (and depth, and content but not really relevant here). Trying to parse a file i figured out i didn't understand how to reference the parent node when building the tree. Specifically, if i started by making some root
18:36:57 <kyali> node to start with and started building from there, the would be children of that node ended up referencing the originally defined childless root node. So my question is, how would one populate that tree with the proper parent and children references?
18:37:22 × matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
18:37:32 vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net)
18:37:43 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
18:37:45 <kyali> (possibly a dumb question :P)
18:38:22 × neiluj quits (~jco@unaffiliated/neiluj) (Quit: leaving)
18:38:48 <piroule> i think the place i'm getting stuck is that i have a f (g (a -> b)) type, and the only thing that can do something to f ( ) objects is this f (a -> b) -> f a -> f b
18:39:01 <piroule> but g (a -> b) can't be unified with a' -> b'
18:39:07 × pfurla quits (~pfurla@64.145.79.190) (Ping timeout: 265 seconds)
18:39:11 <merijn> kyali: Normally you'd have parents refering to children, instead of the other way. Any reason why children need to refer to parents?
18:40:02 × knupfer quits (~Thunderbi@87.123.206.207) (Ping timeout: 272 seconds)
18:40:26 ski idly wonders whether kyali wants a zipper
18:40:52 <kyali> umm, the reason i had was to be able to get the parent node when i have the child returned by some function or other. I did end up making the tree without the parent reference, but i'd still be interested in figuring out how to do this with the parent as well
18:41:23 <kyali> it seems obvious that i'm not getting something here :) i'd like to learn
18:42:17 <ski> piroule : want that hint, yet ?
18:42:21 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
18:43:10 <ski> "to be able to get the parent node when i have the child returned by some function or other" -- in which situations would you find that useful ?
18:45:24 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
18:45:37 <c_wraith> it's a lot like building a doubly-linked list in Haskell - you just don't really do it because you basically have to copy the entire thing every time there's an update.
18:46:34 <kyali> to be honest i haven't thought that far, i've just been playing around :) but, useful every time i get a node as a return value, but not it's position in the tree, or the whole tree. without the parent being referenced in the node itself i'd have to search the tree for the node, then take the parent
18:46:53 sphalerite joins (~sphalerit@NixOS/user/lheckemann)
18:47:12 <kyali> which is okay as well i guess. Is there something wrong with my reasoning?
18:47:58 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
18:48:45 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
18:48:48 <c_wraith> not as such. It's just missing the consequences of bi-directional linkage in an immutable setting
18:49:09 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
18:49:17 <kyali> ah, we're getting to the "me not understanding something" part
18:49:28 <kyali> can you explain what you mean by this?
18:49:35 <ski> it precludes sharing of subtrees off the path, when computing a new tree by updating some node
18:51:55 khdjh joins (b0f82516@176.248.37.22)
18:52:06 <khdjh> hi
18:52:17 <ski> lo
18:52:31 <khdjh> what
18:52:42 shailangsa joins (~shailangs@host217-39-45-247.range217-39.btcentralplus.com)
18:52:45 <kyali> ski: i don't understand what you mean
18:52:53 <khdjh> is anyone a hacker
18:53:36 × ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:54:16 <ski> khdjh : <http://www.catb.org/jargon/html/H/hacker.html>
18:54:24 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection)
18:54:35 <khdjh> what is it
18:54:37 <c_wraith> kyali: the issue is what ski says. You end up having to copy the entire tree whenever you want to make *any* kind of update. If the links only go one direction, you can share most of the nodes in the two trees.
18:54:54 <dsal> khdjh: That's a URL. You can enter it into your browser and learn stuff.
18:55:04 <khdjh> ugh
18:55:43 × khdjh quits (b0f82516@176.248.37.22) (Client Quit)
18:56:12 <dsal> Oh man, we were just getting to Functors.
18:56:54 <ski> kyali : if you traverse from the root down to some node, and compute a new node from the old, then you also have to recompute all the parent nodes on the path (to repoint them to the updated child node), but the subtrees off the side of the path can be shared with the old tree. this is quite useful both to avoid (time spent) copying lots of stuff, but also that you can still refer to the old tree if you want
18:57:00 <ski> to (persistent, rather than ephemeral, making it trivial to do "undo"/"revert transaction")
18:57:13 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds)
18:58:03 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
18:58:06 <ski> ("then you also have to .." -- assuming you wanted to compute the whole updated tree, with that particular node replaced by its updated version, that is)
18:59:51 Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
18:59:53 <ski> (copying only the path to a node is `O(log(n))', `n' being number of nodes in the tree, assuming it's balanced)
19:00:30 Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362)
19:00:45 <ski> kyali : if you prefer, you can do ephemeral, mutable, trees. which would make it easy to have parent links, if you wanted to
19:01:18 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 256 seconds)
19:01:20 <ski> (but they're more clunky to work with than immutable ones)
19:01:49 Lord_of_Life_ is now known as Lord_of_Life
19:02:07 <ski> but if you just want to keep track of the context of a tree, around (above) some node in it, then doing a zipper might be what you want
19:02:19 <kyali> aaah okay. got it!
19:02:23 jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl)
19:03:20 <kyali> okay, so i'm guessing that the benefit of being able to reference the parent is outweighed by the fact that you need to recompute the entire tree with every update :)
19:03:21 <c_wraith> alternatively, you might look into libraries intended for working with general graphs
19:03:23 berberman_ joins (~berberman@unaffiliated/berberman)
19:04:05 <kyali> c_wraith: i will surely look up libs for graphs, but not quite yet :)
19:04:12 <kyali> thank you both for your help !
19:04:40 × berberman_ quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded)
19:04:43 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
19:04:48 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
19:05:06 berberman joins (~berberman@unaffiliated/berberman)
19:06:19 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
19:06:26 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
19:07:03 × jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
19:07:46 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
19:07:53 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
19:08:19 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
19:09:04 hackyhacker joins (~hackyhack@213.219.155.62.adsl.dyn.edpnet.net)
19:09:12 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
19:09:53 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
19:10:05 <hackyhacker> Hello I'm trying to use sin and cos with CInt but I keep getting the error couldn't match type 'CInt' with type 'Int'.
19:10:15 <hackyhacker> Can I convert back and forth between these?
19:10:44 <Clint> you can
19:10:54 × j3parker1 quits (~j3parker@178.239.168.171) (Remote host closed the connection)
19:11:01 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 265 seconds)
19:11:13 <hackyhacker> with fromIntegral?
19:11:13 × rajivr quits (uid269651@gateway/web/irccloud.com/x-ctlecoeospidllrd) (Quit: Connection closed for inactivity)
19:12:32 <ski> % fromIntegral (2 :: Int) :: Foreign.C.Types.CInt
19:12:32 <yahb> ski: 2
19:15:05 xff0x joins (~fox@2001:1a81:53b9:9a00:37a2:7e82:f80e:4d9b)
19:15:32 DavidEichmann joins (~david@98.27.93.209.dyn.plus.net)
19:15:35 <hackyhacker> Thanks I got it working!
19:17:17 Katarushisu joins (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net)
19:19:56 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
19:20:17 <piroule> how do you know when you need parenthesis in haskell
19:20:38 <ski> round brackets are for grouping (and for tuples)
19:21:25 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
19:21:44 <piroule> why does (c!!0) (Just 4) not work without either of the pairs of parenthesis
19:22:11 <ski> the "invisible" juxtaposition function application operator has higher precedence than all other (user-definable) operators. `f x y' means `(f x) y' (function application operator is left-associative)
19:22:26 <ski> `c' is a list of functions ?
19:22:29 <piroule> yeah
19:22:46 × zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
19:22:46 <piroule> ok so that explains why (c!!0) Just 4 wouldn't work
19:22:52 <piroule> but how about c!!0 (Just 4)?
19:23:06 zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
19:23:11 <ski> `c!!0 (Just 4)' means `c!!(0 (Just 4))'. `(c!!0) Just 4' means `((c!!0) Just) 4'. `c!!0 Just 4' means `c!!((0 Just) 4)'
19:23:15 <dsal> 0 isn't a function?
19:23:24 <ski> > 0 2
19:23:27 <lambdabot> 0
19:24:09 <ski> piroule : so "function application operator has higher precedence than all other (user-definable) operators" (e.g. `!!') is relevant, here
19:24:28 × notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 246 seconds)
19:24:29 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
19:24:30 <piroule> so a !! b would get parsed as (a) !! (b) always
19:24:38 <piroule> unless a and b have !! inside them?
19:24:40 <dsal> Wait, 0 *is* a function? That seems confusinig.
19:24:51 <geekosaur> looks like a Num instance for functions is in scope
19:25:09 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection)
19:25:12 <ski> depends on whether `a' and `b' are expressions that have some (unprotected by brackets) operator with lower precedence than `!!'
19:25:39 ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
19:25:40 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
19:25:48 <piroule> ugh this is so confusing
19:25:50 <piroule> ok
19:26:01 <piroule> so this is what the infixl things are for
19:26:10 <idnar> dsal: ski defined instance Num a => Num (rho -> a) earlier ;)
19:26:33 <dsal> Ah. Hard to make that out in lambdabot.
19:26:45 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Read error: Connection reset by peer)
19:26:52 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
19:27:14 <idnar> > (0 :: _) 2
19:27:19 ThaDon joins (~ThaDon@185.103.96.147)
19:27:20 <lambdabot> e
19:27:46 <idnar> what
19:27:50 <dsal> thanks, lambdabot
19:27:54 × xff0x quits (~fox@2001:1a81:53b9:9a00:37a2:7e82:f80e:4d9b) (Ping timeout: 246 seconds)
19:28:13 <idnar> @type (0 :: _) 2
19:28:15 <lambdabot> error:
19:28:15 <lambdabot> • Found type wildcard ‘_’ standing for ‘Integer -> t’
19:28:15 <lambdabot> Where: ‘t’ is a rigid type variable bound by
19:28:39 <idnar> ah no good
19:30:51 <ski> piroule : yea. we have `infixl 9 !!', where `9' is the highest precedence that a user-defined operator can have. so e.g. `a + b !! c + d' is parsed as `(a + (b !! c)) + d' (since `infixl 6 +', making `!!' bind tighter than `+')
19:31:34 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
19:33:05 knupfer joins (~Thunderbi@200116b82cc1a70028416ffffeb8b3d8.dip.versatel-1u1.de)
19:33:28 × conal quits (~conal@212.102.44.51) (Quit: Computer has gone to sleep.)
19:34:03 × knupfer quits (~Thunderbi@200116b82cc1a70028416ffffeb8b3d8.dip.versatel-1u1.de) (Remote host closed the connection)
19:34:16 knupfer joins (~Thunderbi@200116b82cc1a700e1e3928e496d3019.dip.versatel-1u1.de)
19:34:39 conal joins (~conal@212.102.44.51)
19:34:52 × conal quits (~conal@212.102.44.51) (Client Quit)
19:39:50 notzmv joins (~user@unaffiliated/zmv)
19:41:48 fendor_ is now known as fendor
19:42:46 × acowley quits (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
19:42:46 × knupfer quits (~Thunderbi@200116b82cc1a700e1e3928e496d3019.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
19:43:40 antalsz joins (~antalsz@68.175.130.216)
19:44:00 conal_ joins (~conal@185.247.70.252)
19:45:44 × jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
19:46:18 <antalsz> Is there a way to ask cabal to build my current pacakge but not haddock it? If I’m making frequent changes, the documentation generator just slows me down, but --disable-documentation seems to want to rebuild all of my dependencies without documentation too, which is too much
19:46:40 charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com)
19:46:44 × hackyhacker quits (~hackyhack@213.219.155.62.adsl.dyn.edpnet.net) (Ping timeout: 260 seconds)
19:48:00 hackyhacker joins (~hackyhack@213.219.155.62.adsl.dyn.edpnet.net)
19:48:38 <merijn> antalsz: Not sure if there's a good way to disable it per-package atm
19:49:25 <merijn> antalsz: You can try making a cabal.project file that has "packages: foo.cabal\npackage foo\n documentation: False", but I'm not entirely sure that will work
19:49:58 <dcoutts> antalsz: if you don't use --enable-documentation, you can still build docs for your current package using cabal haddock
19:50:14 × ph88 quits (~ph88@ip5f5af71a.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
19:50:16 <c_wraith> I feel like both of those responses miss the point entirely :P
19:50:27 <merijn> c_wraith: How so?
19:50:42 <antalsz> dcoutts: That’s kind of the reverse of what I want – I’d like to have the documentation for my dependencies, but not have to rebuild the local docs for every small change
19:50:53 <c_wraith> I get the impression antalsz wants haddocks for all the dependencies
19:51:04 <merijn> c_wraith: How does that conflict with my response?
19:51:47 <merijn> (Granted, I'm not sure it *works*, but hey!)
19:51:51 <monochrom> For fine-grained control, either direction, it is cabal.project.
19:52:00 <antalsz> merijn: It does work!
19:52:03 <merijn> \o/
19:52:04 <monochrom> (And if cabal.project doesn't do it, nothing does.)
19:52:14 <antalsz> (I happened to already have a cabal.project file, so that was easier)
19:52:34 <dcoutts> antalsz: ok, then specify exactly what you want in the cabal.project (or .local) file:
19:52:35 <dcoutts> package *
19:52:35 <dcoutts> documentation: True
19:52:36 <merijn> antalsz: The commandline doesn't really have a good way to differentiate "global" (i.e. all packages) and "local" (in this project) packages yet
19:52:40 <antalsz> but it would be nice to be able to specify that on the command line
19:52:57 <merijn> dcoutts: That'd build stuff for the current package too, no?
19:53:00 <dcoutts> antalsz: and for your local package, specify documentation: False
19:53:12 <dcoutts> so provide the default * and then specific named local packages
19:53:23 <antalsz> can I specify multiple cabal.project files on the command line?
19:53:24 <merijn> dcoutts: Isn't that the same as "documentation: True" globally and then override per package like I suggested? :p
19:53:38 <antalsz> just trying to think about ways I could switch between the two build approaches
19:53:38 <merijn> antalsz: No, but you can add "mixin" info in cabal.project.local
19:53:44 <dcoutts> merijn: but you generally have lots of deps
19:53:56 <merijn> dcoutts: I generally want docs for everything I use :p
19:54:23 <merijn> antalsz: cabal.project is for "permanent, for every dev" settings that you commit to the repo, and then you can specify local overrides in cabal.project.local
19:55:02 <monochrom> --project-file=FILE exists
19:55:16 <antalsz> ah, I kinda see – last time I used Cabal in earnest was before cabal.project files, then I used stack for a while, now I’m trying cabal new-build on this project
19:55:33 <antalsz> so I have a one-package project with a cabal.project file
19:55:47 × SlashLife quits (~slashlife@stienen.name) (Read error: Connection reset by peer)
19:55:54 <antalsz> and then cabal will also pick up cabal.project.local and take the union of the two, basically?
19:56:06 <merijn> yes
19:56:31 <antalsz> monochrom: So if I have two project files that are identical, I could switch that way, but I’d have to maintain any changes in between them
19:56:51 × Varis quits (~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
19:57:38 × hackyhacker quits (~hackyhack@213.219.155.62.adsl.dyn.edpnet.net) (Ping timeout: 256 seconds)
19:57:56 <merijn> antalsz: Not quite the union, though. Since if you have "documentation: True" in cabal.project and "documentation: False" in cabal.project.local that'd override the cabal.project :p
19:58:00 acidjnk_new joins (~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de)
19:58:01 <antalsz> True! :-)
19:59:14 × avdb quits (~avdb@gateway/tor-sasl/avdb) (Remote host closed the connection)
20:00:36 <antalsz> It seems like the best approach is either (1) having a “nodocs.project.local” file that I rename to/from “cabal.project.local” as necessary, or (2) having both a “cabal.project” and a “nodocs.project.local” file and switching between them with --project-file
20:00:56 <antalsz> The advantage of (1) is that there’s no duplication; the advantage of (2) is that it’s much easier to use and not stateful
20:01:15 <antalsz> Ideally I’d like --also-project-file or --local-project-file options
20:02:37 <antalsz> The “cabal.project.local” file is optimized for time-invariant but dev-variant settings; I’m looking for a solution that’s also useful for time-variant settings. Like --enable-profiling, which works because there you *want* it to rebuild all your settings
20:02:51 <merijn> antalsz: Note that as dcoutts pointed out you can use "cabal haddock" to generate docs even without documentation on :p
20:03:02 ph88 joins (~ph88@ip5f5af71a.dynamic.kabel-deutschland.de)
20:03:04 ubert joins (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de)
20:03:32 <antalsz> Hmm, not a bad point… also, if we’re being honest, I’m not using the documentation for the package itself 99 times out of 100
20:05:02 gproto23 joins (~gproto23@unaffiliated/gproto23)
20:06:11 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
20:07:29 × Sgeo_ quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
20:09:01 SlashLife joins (~slashlife@stienen.name)
20:09:18 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
20:10:45 × UpstreamSalmon quits (uid12077@gateway/web/irccloud.com/x-rexnvewnzxxthgrm) (Quit: Connection closed for inactivity)
20:12:38 xff0x joins (~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f)
20:12:45 × cuz quits (~user@c-24-2-210-18.hsd1.ma.comcast.net) (Ping timeout: 240 seconds)
20:14:34 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
20:14:40 × alx741 quits (~alx741@181.196.69.216) (Quit: alx741)
20:14:43 × ubert quits (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
20:14:44 knupfer joins (~Thunderbi@200116b82cc1a70018a8c3fffe3846d9.dip.versatel-1u1.de)
20:14:45 × knupfer quits (~Thunderbi@200116b82cc1a70018a8c3fffe3846d9.dip.versatel-1u1.de) (Client Quit)
20:15:02 knupfer joins (~Thunderbi@87.123.206.207)
20:15:03 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
20:16:28 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
20:16:34 alx741 joins (~alx741@181.196.69.216)
20:16:47 × coot quits (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
20:17:18 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
20:20:42 × lawid quits (~quassel@dslb-090-186-127-244.090.186.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
20:21:22 × gproto23 quits (~gproto23@unaffiliated/gproto23) (Ping timeout: 272 seconds)
20:22:00 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 272 seconds)
20:22:45 × zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
20:23:07 zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
20:24:00 × pera quits (pera@gateway/vpn/mullvad/pera) (Ping timeout: 265 seconds)
20:24:07 × usr25 quits (~J@216.red-83-58-205.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
20:24:25 × xff0x quits (~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f) (Ping timeout: 272 seconds)
20:25:03 × shf quits (~sheaf@2a01:cb19:80cc:7e00:85b4:a3a3:cabb:438d) (Read error: Connection reset by peer)
20:25:23 pera joins (pera@gateway/vpn/mullvad/pera)
20:28:46 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-afbyogyvilwdnzfx)
20:30:17 electricityZZZZ joins (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
20:30:49 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
20:31:22 × antalsz quits (~antalsz@68.175.130.216) (Quit: antalsz)
20:32:02 xff0x_ joins (~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f)
20:32:59 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
20:33:47 usr25 joins (~J@216.red-83-58-205.dynamicip.rima-tde.net)
20:34:40 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
20:36:23 Vulfe_ joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
20:36:59 tama joins (~tama@unaffiliated/tama00)
20:40:53 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 272 seconds)
20:48:09 bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com)
20:51:29 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
21:00:09 × usr25 quits (~J@216.red-83-58-205.dynamicip.rima-tde.net) (Quit: Bye)
21:00:41 ubert joins (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de)
21:03:16 Codaraxis joins (Codaraxis@gateway/vpn/mullvad/codaraxis)
21:03:38 cuz joins (~user@2601:182:cc02:8b0:b1a2:6837:1015:156c)
21:06:03 × ubert quits (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
21:08:49 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
21:10:57 cuz` joins (~user@c-24-2-210-18.hsd1.ma.comcast.net)
21:11:00 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
21:12:38 × cuz quits (~user@2601:182:cc02:8b0:b1a2:6837:1015:156c) (Ping timeout: 264 seconds)
21:13:04 × piroule quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Quit: Connection closed)
21:13:48 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:15:58 × conal_ quits (~conal@185.247.70.252) (Quit: Computer has gone to sleep.)
21:16:11 son0p joins (~son0p@181.136.122.143)
21:16:21 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
21:16:22 × geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Quit: Connection closed)
21:17:51 conal joins (~conal@185.247.70.252)
21:17:52 jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl)
21:18:04 × conal quits (~conal@185.247.70.252) (Client Quit)
21:18:19 cuz` is now known as cuz
21:19:37 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 246 seconds)
21:19:51 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:22:45 × zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
21:23:06 zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
21:25:44 jan_lawa_kon joins (~jan_lawa_@85.148.195.118)
21:29:44 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
21:30:31 × ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection)
21:30:42 × jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection)
21:31:24 × ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:31:36 jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl)
21:35:01 × cuz quits (~user@c-24-2-210-18.hsd1.ma.comcast.net) (Read error: Connection reset by peer)
21:36:03 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
21:37:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
21:38:54 flux488 joins (2fe3e53b@047-227-229-059.res.spectrum.com)
21:42:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:44:16 × kyali quits (~kyali@APN-123-254-27-gprs.simobil.net) (Ping timeout: 240 seconds)
21:47:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
21:48:23 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
21:49:56 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 240 seconds)
21:50:26 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
21:52:27 × jan_lawa_kon quits (~jan_lawa_@85.148.195.118) (Quit: Leaving)
21:54:05 coot joins (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl)
21:58:01 cohn parts (~noone@unaffiliated/cohn) ()
21:58:45 <troydm> how can I reinstall same version of a package using haskell
21:58:52 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->)
21:58:59 <troydm> basicly I want to test if a patch works or not
21:59:16 <troydm> but installing via cabal install --lib seems to do nothing
21:59:33 <troydm> as if a prev version of library is still cached somewhere
22:02:05 conal joins (~conal@64.71.133.70)
22:04:36 × ulidtko|k quits (~ulidtko@193.111.48.79) (Ping timeout: 272 seconds)
22:04:46 × bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
22:06:38 conal_ joins (~conal@66.115.176.210)
22:06:50 × conal quits (~conal@64.71.133.70) (Ping timeout: 256 seconds)
22:07:19 × _xor quits (~xor@74.215.46.133) (Ping timeout: 260 seconds)
22:08:04 vnz_ joins (~vnz@51.15.143.225)
22:08:47 × vnz quits (~vnz@unaffiliated/vnz) (Ping timeout: 260 seconds)
22:08:47 vnz_ is now known as vnz
22:08:47 × vnz quits (~vnz@51.15.143.225) (Changing host)
22:08:47 vnz joins (~vnz@unaffiliated/vnz)
22:08:55 _xor joins (~xor@74.215.46.133)
22:09:14 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
22:10:45 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
22:11:52 <__monty__> Maybe it's easier to test without installing it? Create a project that depends on it and add a local package to cabal.project for your patched library?
22:13:12 ogamita joins (~t@2a01cb04063ec500d4be9ffe0c684211.ipv6.abo.wanadoo.fr)
22:13:26 Codaraxis_ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
22:13:43 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 260 seconds)
22:14:21 tama1 joins (~tama@unaffiliated/tama00)
22:15:04 × jollygood2 quits (~bc812391@199.204.85.195) (Quit: CGI:IRC (Session timeout))
22:16:45 × Codaraxis quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 240 seconds)
22:16:47 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:17:37 × tama quits (~tama@unaffiliated/tama00) (Ping timeout: 264 seconds)
22:17:45 × knupfer quits (~Thunderbi@87.123.206.207) (Read error: Connection reset by peer)
22:17:50 knupfer1 joins (~Thunderbi@200116b82cc1a70035317a44b98a01a5.dip.versatel-1u1.de)
22:18:14 bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com)
22:18:29 <dmj`> It would be really nice if happy could generate counter examples like bison, or provide some kind of visual representation of the parser given the spec (again like bison)
22:19:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:21:12 × mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving)
22:21:43 hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
22:22:28 × knupfer1 quits (~Thunderbi@200116b82cc1a70035317a44b98a01a5.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
22:24:22 × fendor quits (~fendor@91.141.0.240.wireless.dyn.drei.com) (Remote host closed the connection)
22:24:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
22:25:32 <dmj`> the happy user guide on info files is a little sparse https://www.haskell.org/happy/doc/html/sec-info-files.html
22:25:52 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
22:26:15 hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
22:27:54 mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d)
22:28:16 Lycurgus joins (~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
22:28:24 <troydm> having to work with cabal again with it's nightmare model I now more appreciate what has stack achieved for Haskell community over years
22:28:56 × Franciman quits (~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
22:30:39 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
22:31:18 <MarcelineVQ> I like that stack egged on improvements for cabal-install
22:33:26 <Lycurgus> it broke the treadmill of slippery and forced breakage itself by allowing setting the hs level/version
22:33:32 <troydm> MarcelineVQ: yeah I see these already, haven't looked into cabal underneath for a long time since started using stack
22:33:43 <troydm> so was not aware of changes
22:34:59 <Lycurgus> nothing innovative about it, every major lang has
22:35:27 <Lycurgus> eg nvm for js
22:36:12 dandart joins (~Thunderbi@home.dandart.co.uk)
22:37:55 <dmj`> cabal has come a long way
22:45:22 × guanohhh quits (uid477762@gateway/web/irccloud.com/x-heviwwoxmanqshwa) (Quit: Connection closed for inactivity)
22:46:08 cohn joins (~noone@unaffiliated/cohn)
22:46:37 heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
22:48:02 × jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection)
22:49:29 × Lycurgus quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt)
22:55:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:57:29 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:01:19 × mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Remote host closed the connection)
23:02:09 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
23:03:20 × coot quits (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
23:04:16 × shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Ping timeout: 246 seconds)
23:06:21 hekkaidekapus] joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
23:07:03 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
23:07:10 × Tesseraction quits (~Tesseract@unaffiliated/tesseraction) (Read error: Connection reset by peer)
23:08:48 mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d)
23:08:56 × DavidEichmann quits (~david@98.27.93.209.dyn.plus.net) (Ping timeout: 256 seconds)
23:09:47 pavonia joins (~user@unaffiliated/siracusa)
23:10:10 edrx joins (~Eduardo@2804:56c:d2ef:cf00:369c:6c3f:6681:423e)
23:11:35 <dmj`> oh, ghc's Parser.y has 0 shift/reduce conflicts ...
23:12:12 <c_wraith> ghc's parser doesn't try to parse everything correctly, though. It leaves a lot of things to be fixed by later passes
23:12:52 <edrx> is it possible to put this "do" in a single line? how should I separate the "return" from the rest?
23:12:56 <edrx> do a <- [0,1], b <- [a+1,a+2]; return (a+b)
23:13:05 <c_wraith> semicolons
23:13:31 <edrx> c_wraith: perfect! thanks! =)
23:13:51 <c_wraith> you can write haskell as a {;} language. Most people don't. :)
23:13:57 <c_wraith> But for one-liners, it's useful
23:14:18 <edrx> next question... I am trying to understand list comprehensions by desugaring them - as Vladimir Zavialov does in this presentation here: https://youtu.be/fty9QL4aSRc ("Haskell to Core: Understanding Haskell Features Through Their Desugaring")...
23:14:56 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
23:14:56 × mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Remote host closed the connection)
23:15:02 <edrx> I've been able to draw typing diagrams for some examples of the do notation - e.g.: http://angg.twu.net/e/haskell.e.html#typing-do-notation - but in the syntax for list comprehensions an omitted "<-" seems to do something different... for example, here
23:15:11 <edrx> [(a,b) | a <- [0,1], b <- [a+1,a+2], a+b < 4]
23:15:43 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection)
23:15:57 <c_wraith> you can add filters to list comprehensions
23:16:10 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
23:16:23 <c_wraith> You can desugar those as calls to guard
23:16:32 <edrx> translating "a+b < 4" to "_ <- a+b" doesn't work - it seems that the right translation generates a one-element list when the"a+b < 4" is true, and a [] when it is false... do you know where I can find the details?
23:16:49 × flux488 quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Ping timeout: 248 seconds)
23:16:49 <edrx> ah, let me try :t guard
23:17:17 <edrx> "Variable not in scope"
23:17:26 <c_wraith> @where guard
23:17:26 <lambdabot> I know nothing about guard.
23:17:30 <c_wraith> it's in Control.Monad
23:17:35 <c_wraith> :tguard
23:17:37 <c_wraith> :t guard
23:17:39 <lambdabot> Alternative f => Bool -> f ()
23:18:02 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection)
23:18:04 Deide joins (~Deide@217.155.19.23)
23:18:09 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
23:18:13 <edrx> beautiful! thanks! =)
23:18:14 lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:2560:f230:a66e:db8d)
23:18:18 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection)
23:18:51 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
23:19:07 joshualit140[m] joins (joshualit1@gateway/shell/matrix.org/x-whhblwmaoulboefx)
23:19:11 <joshualit140[m]> Hi. I'm paying 100€ for a Haskell developer to complete a project in 24 hours (Nothing too extreme, just a simple IO program). Please DM me if you are interested.
23:19:11 <joshualit140[m]> Not sure if I can post that here, but I need the project done asap.
23:20:43 × heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
23:21:11 <dmj`> c_wraith: I noticed ghc doesn't try to parse patterns, yea. It has a post-processing step for that, wonder if it stole that from jhc
23:21:23 × ogamita quits (~t@2a01cb04063ec500d4be9ffe0c684211.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer)
23:22:07 <dmj`> c_wraith: too bad patterns can't be represented in happy
23:22:25 <c_wraith> dmj`: it also doesn't handle operator precedence, as that's context-sensitive
23:22:35 urek joins (~urek@2804:7f1:e10a:8920:8158:2ad1:b01b:bb41)
23:23:10 urek parts (~urek@2804:7f1:e10a:8920:8158:2ad1:b01b:bb41) ()
23:23:26 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds)
23:23:38 <dmj`> c_wraith: is that because custom operators specify their own precedence, so it'd have to know ahead of time what the precedence was before parsing
23:24:14 mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d)
23:24:31 <c_wraith> yes
23:25:04 <dmj`> rip
23:25:26 <c_wraith> at least haskell syntax is decideable, even if it is context-sensitive!
23:25:38 c_wraith taunts perl
23:25:44 <dmj`> c_wraith: purescript avoids patterns altogether, I see why
23:25:53 × pera quits (pera@gateway/vpn/mullvad/pera) (Quit: leaving)
23:28:49 <dmj`> c_wraith: I just want a nice declarative parser for Haskell is that too much to ask for?
23:29:19 <c_wraith> technically no. You could make a context-sensitive declarative tool.
23:29:27 <c_wraith> But it would probably be slow.
23:29:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
23:30:11 Tesseraction joins (~Tesseract@unaffiliated/tesseraction)
23:31:31 × son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal)
23:35:37 <c_wraith> also, I have *no idea* how to extend the formalisms you can prove handle context-sensitive grammars declaratively into a practical system.
23:38:01 <dmj`> c_wraith: the time I'd lose in parse time I could make up by not implementing a bunch of extensions that aren't used anymore
23:38:06 ransom joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
23:45:16 × darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 256 seconds)
23:47:48 × jess quits (jess@freenode/staff/jess) (Quit: updates)
23:48:10 niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
23:51:32 × vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
23:53:25 × ransom quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:54:02 × niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 260 seconds)
23:55:28 × Kaiepi quits (~Kaiepi@47.54.252.148) (Remote host closed the connection)
23:55:35 × ThaDon quits (~ThaDon@185.103.96.147) (Remote host closed the connection)
23:55:43 Kaiepi joins (~Kaiepi@47.54.252.148)
23:58:45 × p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
23:59:07 p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)

All times are in UTC on 2021-01-10.