2021/01/10

2021-01-10 00:00:11 +0100 <ephemient> on both the construction and destruction side, it encourages name shadowing. I still use it sometimes but I think these are real downsides
2021-01-10 00:01:26 +0100 <ij> if you don't have all fields it returns a function to add the rest!?
2021-01-10 00:01:46 +0100 <ephemient> no, it returns a partial value with some fields uninitialized
2021-01-10 00:02:06 +0100 <sm[m]> Use where appropriate, but I must say I don't run into problems with it
2021-01-10 00:02:19 +0100 <ij> ephemient, I didn't know that's a possibility
2021-01-10 00:02:38 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-poouquqkxqavcjpz) (Quit: Connection closed for inactivity)
2021-01-10 00:02:45 +0100 <ij> sm[m], I would imagine the benefits outweigh the drawbacks if you have to get stuff done
2021-01-10 00:04:17 +0100 <sm[m]> Without it, some code can be really clunky/repetitive/hard to read. But this is without using lenses
2021-01-10 00:04:25 +0100f-a(~f-a@151.82.78.117) (Ping timeout: 264 seconds)
2021-01-10 00:04:56 +0100 <sm[m]> which could be another solution
2021-01-10 00:05:25 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 246 seconds)
2021-01-10 00:05:47 +0100dcbdnl(~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Quit: dcbdnl)
2021-01-10 00:06:29 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-10 00:06:46 +0100 <ski> > let Node {rootLabel = x} = Node () [] in x -- i don't like this, either
2021-01-10 00:06:48 +0100 <lambdabot> ()
2021-01-10 00:08:09 +0100 <ski> having `Node {rootLabel = x,..}' to allow not listing all the fields would be ok
2021-01-10 00:08:43 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-01-10 00:09:13 +0100conal_(~conal@64.71.133.70)
2021-01-10 00:12:25 +0100 <int-e> > let Just{} = Nothing in 42
2021-01-10 00:12:28 +0100 <lambdabot> 42
2021-01-10 00:12:57 +0100jackhill(~jackhill@marsh.hcoop.net)
2021-01-10 00:13:43 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds)
2021-01-10 00:14:18 +0100 <ephemient> > case Nothing of Just {} -> 42
2021-01-10 00:14:21 +0100 <lambdabot> *Exception: <interactive>:(3,1)-(4,22): Non-exhaustive patterns in case
2021-01-10 00:14:38 +0100 <ephemient> the "problem" is let bindings are lazy
2021-01-10 00:15:11 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-10 00:15:13 +0100 <ephemient> huh. actually can case bindings be lazy?
2021-01-10 00:15:17 +0100 <ephemient> > case Nothing of ~Just {} -> 42
2021-01-10 00:15:19 +0100 <lambdabot> 42
2021-01-10 00:15:37 +0100 <ephemient> apparently yes. I didn't realize that before but it makes sense...
2021-01-10 00:15:51 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2021-01-10 00:17:34 +0100 <ski> `Just {}' makes no sense to me
2021-01-10 00:19:32 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-10 00:19:36 +0100 <ephemient> > Nothing {}
2021-01-10 00:19:36 +0100usr25(~usr25@unaffiliated/usr25) ()
2021-01-10 00:19:38 +0100 <lambdabot> Nothing
2021-01-10 00:19:42 +0100 <ephemient> how's that? :P
2021-01-10 00:19:54 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-10 00:19:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 00:20:46 +0100vicfred(~vicfred@unaffiliated/vicfred)
2021-01-10 00:21:20 +0100minimario(2fe3e53b@047-227-229-059.res.spectrum.com) (Ping timeout: 245 seconds)
2021-01-10 00:23:11 +0100fosterite(~fosterite@2600:6c46:7800:fecf:9c0a:fa3e:f332:1444)
2021-01-10 00:24:38 +0100 <int-e> ephemient: consistent
2021-01-10 00:25:09 +0100 <int-e> ski: it is occasionally useful though
2021-01-10 00:25:18 +0100 <int-e> (though not for Maybe in particular)
2021-01-10 00:25:30 +0100 <MarcelineVQ> it's useful enough that I sorely miss it in languages without it
2021-01-10 00:25:49 +0100 <MarcelineVQ> especially when I'm only casing the constructor to prove what constructor it was
2021-01-10 00:25:50 +0100son0p(~son0p@181.136.122.143) (Quit: leaving)
2021-01-10 00:27:24 +0100fosterite(~fosterite@2600:6c46:7800:fecf:9c0a:fa3e:f332:1444) (Ping timeout: 240 seconds)
2021-01-10 00:29:07 +0100BuboBubo(~BuboBubo@rezo-mtrg2-17.ens.fr)
2021-01-10 00:30:00 +0100BuboBubo(~BuboBubo@rezo-mtrg2-17.ens.fr) (Client Quit)
2021-01-10 00:30:12 +0100cuz(~user@2601:182:cc02:8b0:4d5:a0a:63d7:bebb) ("ERC (IRC client for Emacs 27.1)")
2021-01-10 00:31:40 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 246 seconds)
2021-01-10 00:31:59 +0100conal_(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-10 00:32:33 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 00:35:48 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Remote host closed the connection)
2021-01-10 00:36:20 +0100roconnor(~roconnor@host-184-164-7-193.dyn.295.ca) (Quit: Konversation terminated!)
2021-01-10 00:37:23 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
2021-01-10 00:37:28 +0100knupfer(~Thunderbi@200116b82c54da006183220b81d59311.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-01-10 00:39:11 +0100 <ski> ephemient : there is a field
2021-01-10 00:39:31 +0100Tario(~Tario@200.119.186.110)
2021-01-10 00:40:59 +0100conal(~conal@143.244.61.230)
2021-01-10 00:41:03 +0100fendor(~fendor@77.119.130.129.wireless.dyn.drei.com) (Remote host closed the connection)
2021-01-10 00:41:24 +0100immae(~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 2.9)
2021-01-10 00:41:26 +0100 <ephemient> still consistent, the field is unnamed but you're not binding any names
2021-01-10 00:41:52 +0100edge563(~edge563@gateway/tor-sasl/edge563) (Quit: edge563)
2021-01-10 00:43:47 +0100 <ski> > let Just {} = Just () in Just {} -- imho, `let <pat-exp> = <exp> in <pat-exp>' ought to be equal to `<exp>', in case the pattern matches
2021-01-10 00:43:49 +0100 <lambdabot> Just *Exception: <interactive>:3:26-32: Missing field in record construction
2021-01-10 00:44:33 +0100 <dolio> I'm with MarcelineVQ. If you got rid of `C{}` on the grounds that C is not declared as a record, it'd be worth introducing another syntax for what it does.
2021-01-10 00:44:42 +0100immae[m](~immae@2a01:4f8:141:53e7::)
2021-01-10 00:45:30 +0100 <ski> (i'm not here objecting to being able to use the record syntax with a data constructor that wasn't declared with it)
2021-01-10 00:46:50 +0100 <dolio> Well, okay. I don't care what grounds are used to dismiss it. Something like it is too useful not to exist.
2021-01-10 00:47:08 +0100 <ski> having `Con {..}' match on the constructor, but not bind any variables, would at least be a clearer visual clue that there may be more fields
2021-01-10 00:47:13 +0100 <glguy> Unused syntax is too hard to come by to consider removing that
2021-01-10 00:54:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-10 00:57:13 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
2021-01-10 00:58:17 +0100Tario(~Tario@200.119.186.110) (Read error: Connection reset by peer)
2021-01-10 00:59:17 +0100Tario(~Tario@201.192.165.173)
2021-01-10 01:01:00 +0100neiluj(~jco@unaffiliated/neiluj) (Remote host closed the connection)
2021-01-10 01:01:28 +0100jedws(~jedws@121.209.189.201)
2021-01-10 01:02:29 +0100Tops2(~Tobias@dyndsl-095-033-022-011.ewe-ip-backbone.de)
2021-01-10 01:06:55 +0100 <ij> seems that I can't use the getter with NamedFieldPuns, if I have it "punned"
2021-01-10 01:07:35 +0100 <ij> can I have multi-line arguments? how? I can't figure out the syntax
2021-01-10 01:07:47 +0100 <ij> ah, no, figured it
2021-01-10 01:08:14 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-01-10 01:08:20 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2021-01-10 01:08:20 +0100neiluj(~jco@unaffiliated/neiluj)
2021-01-10 01:09:33 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
2021-01-10 01:09:43 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e)
2021-01-10 01:10:00 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-10 01:10:29 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-10 01:10:46 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-10 01:10:47 +0100 <jle`> > Just{}
2021-01-10 01:10:49 +0100 <lambdabot> Just *Exception: <interactive>:3:1-6: Missing field in record construction
2021-01-10 01:11:15 +0100 <jle`> neat
2021-01-10 01:11:17 +0100 <jle`> > (){}
2021-01-10 01:11:19 +0100 <lambdabot> ()
2021-01-10 01:11:28 +0100 <jle`> > (,){}
2021-01-10 01:11:29 +0100 <lambdabot> (*Exception: <interactive>:3:1-5: Missing field in record construction
2021-01-10 01:12:47 +0100 <jle`> > 5{}
2021-01-10 01:12:49 +0100 <lambdabot> error: Empty record update
2021-01-10 01:12:59 +0100 <jle`> is that a runtime error or a compiletime error
2021-01-10 01:13:06 +0100 <Uniaika> let's see
2021-01-10 01:13:09 +0100 <glguy> That would should be compile time
2021-01-10 01:13:13 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit)
2021-01-10 01:13:16 +0100 <glguy> one should*
2021-01-10 01:13:17 +0100 <jle`> > let foo = 5{} in True
2021-01-10 01:13:20 +0100 <lambdabot> error: Empty record update
2021-01-10 01:13:28 +0100 <jle`> ah, 5 is interpreted as a value and not as a constructor
2021-01-10 01:13:49 +0100 <jle`> what other things exist on that weird line
2021-01-10 01:13:51 +0100 <jle`> > [1,2,3]{}
2021-01-10 01:13:52 +0100 <ephemient> > let _ = (:){} in True{}
2021-01-10 01:13:53 +0100 <lambdabot> error: Empty record update
2021-01-10 01:13:54 +0100 <lambdabot> True
2021-01-10 01:14:11 +0100 <glguy> The type has to be obvious from the syntax to use a record update
2021-01-10 01:14:25 +0100 <glguy> whether that's from a record field or constructor
2021-01-10 01:14:33 +0100 <jle`> Just{} is not interpreted as a record update though right? it's a constructor or pattern
2021-01-10 01:14:38 +0100 <ephemient> it can't have extra parens either,
2021-01-10 01:14:40 +0100 <ephemient> > []()
2021-01-10 01:14:42 +0100 <lambdabot> error:
2021-01-10 01:14:43 +0100 <lambdabot> • Couldn't match expected type ‘() -> t’ with actual type ‘[a0]’
2021-01-10 01:14:43 +0100 <lambdabot> • The function ‘[]’ is applied to one argument,
2021-01-10 01:14:45 +0100 <ephemient> > []{}
2021-01-10 01:14:48 +0100 <lambdabot> []
2021-01-10 01:14:51 +0100 <ephemient> > ([]){}
2021-01-10 01:14:53 +0100 <lambdabot> error: Empty record update
2021-01-10 01:15:11 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 01:15:13 +0100 <glguy> jle`, the choice is constructor{} with zero or more fields, or arbitrary value with one or more fields
2021-01-10 01:15:16 +0100 <jle`> it looks like for non-constructors {} is interpreted as as record update and for constructors it's a record initializer/constructor
2021-01-10 01:15:37 +0100 <jle`> i guess i could just peek at the report
2021-01-10 01:16:06 +0100 <jle`> :t (,)
2021-01-10 01:16:07 +0100 <lambdabot> a -> b -> (a, b)
2021-01-10 01:16:08 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds)
2021-01-10 01:16:09 +0100 <jle`> :t (,){}
2021-01-10 01:16:11 +0100 <lambdabot> (a, b)
2021-01-10 01:16:13 +0100 <jle`> hehe
2021-01-10 01:16:18 +0100 <glguy> :t ((,)){}
2021-01-10 01:16:19 +0100 <lambdabot> error: Empty record update
2021-01-10 01:16:38 +0100 <jle`> > length ( (,){} )
2021-01-10 01:16:40 +0100 <lambdabot> 1
2021-01-10 01:16:55 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-zvbazqanyhuylsws)
2021-01-10 01:19:14 +0100stef204(~stef204@unaffiliated/stef-204/x-384198) (Ping timeout: 264 seconds)
2021-01-10 01:20:03 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds)
2021-01-10 01:20:52 +0100ransom(~c4264035@8.48.134.54)
2021-01-10 01:21:40 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-10 01:22:30 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-10 01:22:55 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2021-01-10 01:22:59 +0100ph88(~ph88@2a01:598:d002:63ff:f864:480b:85db:ffe9) (Ping timeout: 272 seconds)
2021-01-10 01:25:05 +0100ransom_(~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
2021-01-10 01:25:52 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2021-01-10 01:26:49 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-10 01:26:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 01:27:45 +0100ransom(~c4264035@8.48.134.54) (Ping timeout: 240 seconds)
2021-01-10 01:29:02 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-01-10 01:31:51 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-01-10 01:32:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-10 01:34:36 +0100 <ephemient> doesn't even need parentheses
2021-01-10 01:34:44 +0100 <ephemient> > length (,) {}
2021-01-10 01:34:45 +0100 <lambdabot> 1
2021-01-10 01:36:11 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba)
2021-01-10 01:37:38 +0100niekvandepas(~niekvande@2001:985:bebc:1:3d53:915:922b:d9c)
2021-01-10 01:38:34 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Read error: Connection reset by peer)
2021-01-10 01:38:55 +0100dcbdnl(~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net)
2021-01-10 01:39:53 +0100dcbdnl(~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Client Quit)
2021-01-10 01:40:46 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-10 01:41:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Ping timeout: 264 seconds)
2021-01-10 01:41:56 +0100alx741(~alx741@181.196.69.12) (Ping timeout: 240 seconds)
2021-01-10 01:42:13 +0100niekvandepas(~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 260 seconds)
2021-01-10 01:42:57 +0100 <Axman6> > (){}{}{}{}{}
2021-01-10 01:42:59 +0100 <lambdabot> error: Empty record updateerror: Empty record updateerror: Empty record upda...
2021-01-10 01:43:17 +0100 <Axman6> cccccckvtilvtcdihrrubtnujbbetuuulrtfifbfrrdv
2021-01-10 01:45:44 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
2021-01-10 01:47:55 +0100 <glguy> Axman6, I added a script for detecting and blocking that for my own yubikey ^_^
2021-01-10 01:48:03 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-10 01:52:46 +0100 <ij> is there like an "until" but only "while"?
2021-01-10 01:52:59 +0100 <glguy> while p = until (not . p) ?
2021-01-10 01:54:22 +0100 <ij> hm, but maybe even that won't work... I want to get the last Just in iterate (Map.lookup ..)
2021-01-10 01:55:04 +0100 <ij> @pl while p = until (not . p)
2021-01-10 01:55:05 +0100 <lambdabot> while = until . (not .)
2021-01-10 01:55:07 +0100alx741(~alx741@181.196.69.216)
2021-01-10 01:55:58 +0100 <Axman6> huh, must've triggered it with my thigh.
2021-01-10 01:56:38 +0100 <Axman6> Is there a cononical vector tyoe with the length in its type? (and is there a better name than that monstrosity?)
2021-01-10 01:57:01 +0100 <glguy> There's a few packages but nothing I'd call canonical
2021-01-10 01:57:14 +0100 <Axman6> happy to go by number of downloads
2021-01-10 01:57:49 +0100 <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
2021-01-10 01:57:57 +0100 <Axman6> uh, useful
2021-01-10 01:58:19 +0100 <Axman6> surprisingly, english is my first, and only, spoken language
2021-01-10 01:58:32 +0100 <glguy> Axman6, Which package is that?
2021-01-10 01:58:39 +0100 <koz_> Axman6: You likely want vector-sized.
2021-01-10 01:58:54 +0100 <Axman6> sounds like the one
2021-01-10 01:58:57 +0100koz_is a co-maintainer so is grossly biased.
2021-01-10 01:59:17 +0100 <Axman6> glguy: https://git.zx2c4.com/wireguard-hs/about/
2021-01-10 01:59:40 +0100dcbdnl(~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net)
2021-01-10 01:59:42 +0100 <ski> @type \m -> fromJust . last . takeWhile isJust . iterate ((`lookup` m) =<<) . Just
2021-01-10 01:59:43 +0100 <lambdabot> Eq c => [(c, c)] -> c -> c
2021-01-10 01:59:44 +0100 <Axman6> koz_: great, I can hop across the pond and nag you about things that need fixing
2021-01-10 01:59:44 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection)
2021-01-10 01:59:57 +0100 <koz_> Axman6: Or just file an issue lol, that's probably easier.
2021-01-10 02:00:38 +0100 <Axman6> but then I don't get o go to NZ
2021-01-10 02:00:41 +0100 <ij> ski, can't think of anything other than this straight forward one either
2021-01-10 02:01:31 +0100 <ij> maybe I could write converge (\v -> Map.lookup v `mplus` Just v) (Just a), if you know what I mean :)
2021-01-10 02:02:11 +0100 <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
2021-01-10 02:02:37 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
2021-01-10 02:03:08 +0100conal(~conal@143.244.61.230) (Quit: Computer has gone to sleep.)
2021-01-10 02:03:08 +0100 <Axman6> though if there's a way to pattern match on a Vec 3 a as [a, b, c] that would be good
2021-01-10 02:03:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 02:05:20 +0100conal(~conal@143.244.61.230)
2021-01-10 02:05:48 +0100 <ski> @type \m -> either id (absurd . fst) . runStateT (forever (StateT (\k -> maybe (Left k) (Right . (,) ()) (lookup k m))))
2021-01-10 02:05:50 +0100 <lambdabot> Eq b => [(b, b)] -> b -> b
2021-01-10 02:08:16 +0100 <ij> :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (Map.lookup v' Map.empty) `mplus` v) (Just 1)
2021-01-10 02:08:17 +0100 <lambdabot> error:
2021-01-10 02:08:18 +0100 <lambdabot> Not in scope: ‘Map.lookup’
2021-01-10 02:08:18 +0100 <lambdabot> Perhaps you meant one of these:
2021-01-10 02:08:42 +0100 <ij> :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (lookup v' Map.empty) `mplus` v) (Just 1)
2021-01-10 02:08:44 +0100 <lambdabot> error:
2021-01-10 02:08:44 +0100 <lambdabot> Not in scope: ‘Map.empty’
2021-01-10 02:08:44 +0100 <lambdabot> Perhaps you meant ‘M.empty’ (imported from Data.Map)
2021-01-10 02:08:56 +0100 <ij> :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (lookup v' []) `mplus` v) (Just 1)
2021-01-10 02:08:57 +0100 <lambdabot> (Eq a, Num a) => Maybe a
2021-01-10 02:09:23 +0100 <ij> ski, that's a mouthful
2021-01-10 02:10:33 +0100dcbdnl(~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Quit: dcbdnl)
2021-01-10 02:10:48 +0100 <ij> I'd have to add fromJust . converge ... . Just
2021-01-10 02:11:37 +0100rajivr(uid269651@gateway/web/irccloud.com/x-ctlecoeospidllrd)
2021-01-10 02:11:51 +0100ransom_(~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 02:12:43 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 02:13:16 +0100 <ski> @type \m -> (id ||| uncurry absurd) . runStateT (forever (do k <- get; when (isNothing (lookup k m)) (throwError k)))
2021-01-10 02:13:18 +0100 <lambdabot> Eq e => [(e, a)] -> e -> e
2021-01-10 02:14:33 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-10 02:16:56 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
2021-01-10 02:17:26 +0100tribble2(~tribble2@unaffiliated/tribble2)
2021-01-10 02:18:16 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-170.cust.tzulo.com)
2021-01-10 02:19:04 +0100niekvandepas(~niekvande@2001:985:bebc:1:3d53:915:922b:d9c)
2021-01-10 02:20:13 +0100stef204(~stef204@unaffiliated/stef-204/x-384198)
2021-01-10 02:20:15 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba)
2021-01-10 02:22:40 +0100tribble2(~tribble2@unaffiliated/tribble2) (Quit: Leaving)
2021-01-10 02:22:47 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-10 02:23:24 +0100niekvandepas(~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 240 seconds)
2021-01-10 02:25:05 +0100dfeuer(~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net)
2021-01-10 02:25:27 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-10 02:27:29 +0100 <Axman6> Is there a tool for making github actions configs like hackell-ci does for travis?
2021-01-10 02:27:31 +0100columbarius1(~columbari@i5E86B3D4.versanet.de) (Ping timeout: 246 seconds)
2021-01-10 02:27:37 +0100 <Axman6> haskell-ci*
2021-01-10 02:29:37 +0100 <glguy> I don't know why, but just checking you know about: https://github.com/haskell/actions
2021-01-10 02:29:50 +0100columbarius1(~columbari@i5E86B32C.versanet.de)
2021-01-10 02:33:26 +0100 <ephemient> ah, I should migrate my workflows from actions/setup-haskell to haskell/actions/setup
2021-01-10 02:33:45 +0100 <ephemient> when did that get deprecated
2021-01-10 02:34:46 +0100charukiewicz(~charukiew@irouteince04.i.subnet.rcn.com)
2021-01-10 02:34:51 +0100 <ephemient> ah, https://github.com/actions/setup-haskell/pull/56
2021-01-10 02:35:28 +0100 <sm[m]> additional bespoke, tested workflows here: https://github.com/simonmichael/hledger/tree/master/.github/workflows
2021-01-10 02:36:13 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds)
2021-01-10 02:36:38 +0100 <ephemient> if you only need stack then yeah, DIY looks easy enough
2021-01-10 02:37:03 +0100 <sm[m]> I wouldn't say it was easy. A lot of hours went into these
2021-01-10 02:38:05 +0100 <ephemient> that I believe, but actions/setup-haskell or haskell/actions/setup wouldn't have saved that time
2021-01-10 02:38:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-01-10 02:38:40 +0100charukiewicz(~charukiew@irouteince04.i.subnet.rcn.com) (Client Quit)
2021-01-10 02:38:52 +0100charukiewicz(~quassel@irouteince04.i.subnet.rcn.com)
2021-01-10 02:38:55 +0100proc_(~proc@177.155.80.112)
2021-01-10 02:43:07 +0100proc_(~proc@177.155.80.112) (Client Quit)
2021-01-10 02:43:41 +0100ransom(~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
2021-01-10 02:43:55 +0100dcbdnl(~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net)
2021-01-10 02:44:16 +0100Tario(~Tario@201.192.165.173)
2021-01-10 02:49:26 +0100nhs_(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-01-10 02:50:29 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-10 02:52:25 +0100DavidEichmann(~david@98.27.93.209.dyn.plus.net) (Ping timeout: 264 seconds)
2021-01-10 02:57:29 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2021-01-10 03:00:29 +0100niekvandepas(~niekvande@2001:985:bebc:1:3d53:915:922b:d9c)
2021-01-10 03:05:02 +0100niekvandepas(~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 260 seconds)
2021-01-10 03:05:28 +0100dcbdnl(~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Quit: dcbdnl)
2021-01-10 03:05:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 03:05:58 +0100jollygood2(~bc812391@217.29.117.252) (Quit: http://www.okay.uz/)
2021-01-10 03:07:30 +0100ransom(~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 03:09:16 +0100ransom(~c4264035@2601:285:201:6720:f8d3:ffcb:d91b:58f8)
2021-01-10 03:10:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-10 03:11:49 +0100conal(~conal@143.244.61.230) (Quit: Computer has gone to sleep.)
2021-01-10 03:12:16 +0100xsperry(~as@unaffiliated/xsperry) (Read error: Connection reset by peer)
2021-01-10 03:12:17 +0100Wuzzy(~Wuzzy@p5790e648.dip0.t-ipconnect.de) (Quit: Wuzzy)
2021-01-10 03:12:21 +0100conal(~conal@143.244.61.230)
2021-01-10 03:12:32 +0100conal(~conal@143.244.61.230) (Client Quit)
2021-01-10 03:13:10 +0100conal(~conal@143.244.61.230)
2021-01-10 03:13:16 +0100conal(~conal@143.244.61.230) (Client Quit)
2021-01-10 03:13:35 +0100ransom_(~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
2021-01-10 03:13:46 +0100conal(~conal@143.244.61.230)
2021-01-10 03:14:01 +0100conal(~conal@143.244.61.230) (Client Quit)
2021-01-10 03:14:34 +0100conal(~conal@143.244.61.230)
2021-01-10 03:14:44 +0100fosterite(~fosterite@2600:6c46:7800:fecf:f917:a8fd:ae0d:b7ee)
2021-01-10 03:15:02 +0100ransom(~c4264035@2601:285:201:6720:f8d3:ffcb:d91b:58f8) (Ping timeout: 264 seconds)
2021-01-10 03:15:57 +0100xsperry(~as@unaffiliated/xsperry)
2021-01-10 03:16:44 +0100fosterite(~fosterite@2600:6c46:7800:fecf:f917:a8fd:ae0d:b7ee) (Client Quit)
2021-01-10 03:21:29 +0100rzjian(~l@203.168.12.226)
2021-01-10 03:26:02 +0100niekvandepas(~niekvande@2001:985:bebc:1:cd42:d8ce:7bc:301f)
2021-01-10 03:26:23 +0100ransom_(~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 03:26:46 +0100f-a(~f-a@151.38.2.154)
2021-01-10 03:27:10 +0100xiinotulp(~q@node-unv.pool-125-24.dynamic.totinternet.net)
2021-01-10 03:28:46 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds)
2021-01-10 03:29:19 +0100machinedgod(~machinedg@24.105.81.50)
2021-01-10 03:29:25 +0100plutoniix(~q@node-ugq.pool-125-24.dynamic.totinternet.net) (Ping timeout: 240 seconds)
2021-01-10 03:30:42 +0100niekvandepas(~niekvande@2001:985:bebc:1:cd42:d8ce:7bc:301f) (Ping timeout: 260 seconds)
2021-01-10 03:31:09 +0100f-a(~f-a@151.38.2.154) ()
2021-01-10 03:34:14 +0100conal(~conal@143.244.61.230) (Quit: Computer has gone to sleep.)
2021-01-10 03:35:26 +0100conal(~conal@143.244.61.230)
2021-01-10 03:35:40 +0100conal(~conal@143.244.61.230) (Client Quit)
2021-01-10 03:37:05 +0100conal(~conal@143.244.61.230)
2021-01-10 03:37:05 +0100conal(~conal@143.244.61.230) (Client Quit)
2021-01-10 03:37:46 +0100conal(~conal@143.244.61.230)
2021-01-10 03:37:47 +0100conal(~conal@143.244.61.230) (Client Quit)
2021-01-10 03:41:29 +0100ransom(~c4264035@c-67-176-3-106.hsd1.co.comcast.net)
2021-01-10 03:41:59 +0100niekvandepas(~niekvande@80-100-16-191.ip.xs4all.nl)
2021-01-10 03:44:52 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) (Quit: halbGefressen)
2021-01-10 03:45:19 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds)
2021-01-10 03:45:24 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:3df7:2c2b:de8e:c444) (Quit: Leaving)
2021-01-10 03:45:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 03:46:05 +0100niekvandepas(~niekvande@80-100-16-191.ip.xs4all.nl) (Read error: Connection reset by peer)
2021-01-10 03:46:08 +0100aldum(~vishera@aldum.pw) (Ping timeout: 256 seconds)
2021-01-10 03:46:14 +0100ericsagn1(~ericsagne@2405:6580:0:5100:e13a:446f:fd91:b45c) (Ping timeout: 264 seconds)
2021-01-10 03:46:18 +0100niekvandepas(~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88)
2021-01-10 03:46:45 +0100conal(~conal@209.58.133.168)
2021-01-10 03:48:38 +0100sqrt2(~ben@unaffiliated/sqrt2) (Ping timeout: 264 seconds)
2021-01-10 03:48:46 +0100sqrt2_(~ben@unaffiliated/sqrt2)
2021-01-10 03:49:06 +0100ericsagnes(~ericsagne@2405:6580:0:5100:3c13:dd0e:758f:287c)
2021-01-10 03:50:32 +0100niekvandepas(~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 260 seconds)
2021-01-10 03:50:38 +0100wei2912(~wei2912@unaffiliated/wei2912)
2021-01-10 03:51:03 +0100thunderrd(~thunderrd@183.182.115.7) (Remote host closed the connection)
2021-01-10 03:53:27 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 03:56:59 +0100aldum(~vishera@aldum.pw)
2021-01-10 03:57:56 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-10 03:58:14 +0100thunderrd(~thunderrd@183.182.115.7)
2021-01-10 04:02:39 +0100lagothrixGuest67909
2021-01-10 04:02:39 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2021-01-10 04:02:39 +0100Guest67909(~lagothrix@unaffiliated/lagothrix) (Killed (hitchcock.freenode.net (Nickname regained by services)))
2021-01-10 04:02:39 +0100xirhtogallagothrix
2021-01-10 04:05:36 +0100jose_edil(~jose_edil@189.6.36.113)
2021-01-10 04:12:22 +0100artyom(uid480728@gateway/web/irccloud.com/x-nqqalknrlwpfzvsu) (Quit: Connection closed for inactivity)
2021-01-10 04:12:49 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-01-10 04:14:58 +0100Noldorin(~noldorin@unaffiliated/noldorin) (Quit: Textual IRC Client: www.textualapp.com)
2021-01-10 04:17:08 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2021-01-10 04:18:42 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-01-10 04:20:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-10 04:22:14 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-170.cust.tzulo.com) (Quit: Leaving)
2021-01-10 04:24:46 +0100aldum(~vishera@aldum.pw) (Ping timeout: 246 seconds)
2021-01-10 04:27:18 +0100niekvandepas(~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88)
2021-01-10 04:29:38 +0100acidjnk_new(~acidjnk@p200300d0c704e7293cc19a8744f5227e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-10 04:31:15 +0100xiinotulp(~q@node-unv.pool-125-24.dynamic.totinternet.net) (Remote host closed the connection)
2021-01-10 04:31:50 +0100niekvandepas(~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 264 seconds)
2021-01-10 04:33:15 +0100ransom(~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 04:33:59 +0100flux66(2fe3e53b@047-227-229-059.res.spectrum.com)
2021-01-10 04:34:20 +0100rzjian(~l@203.168.12.226) (Quit: ##CoV)
2021-01-10 04:34:44 +0100 <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?
2021-01-10 04:34:48 +0100 <flux66> is there some intuition for this?
2021-01-10 04:35:26 +0100 <flux66> here is the definition: `(Reader ra) >>= aRb = Reader $ \r -> runReader (aRb (ra r)) r `
2021-01-10 04:40:35 +0100aldum(~vishera@aldum.pw)
2021-01-10 04:41:50 +0100incertia_(~incertia@d4-50-26-103.nap.wideopenwest.com) (Ping timeout: 256 seconds)
2021-01-10 04:46:01 +0100incertia(~incertia@d4-50-26-103.nap.wideopenwest.com)
2021-01-10 04:48:11 +0100stef204(~stef204@unaffiliated/stef-204/x-384198) (Ping timeout: 272 seconds)
2021-01-10 04:48:13 +0100theDon(~td@94.134.91.100) (Ping timeout: 246 seconds)
2021-01-10 04:50:19 +0100theDon(~td@94.134.91.57)
2021-01-10 04:51:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 04:53:23 +0100jose_edil(~jose_edil@189.6.36.113) (Quit: Leaving...)
2021-01-10 04:55:54 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
2021-01-10 04:56:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-10 04:59:53 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2021-01-10 04:59:53 +0100lagothrixGuest19966
2021-01-10 04:59:53 +0100xirhtogallagothrix
2021-01-10 05:00:01 +0100alexelcu(~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-10 05:00:01 +0100haasn(~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-01-10 05:00:16 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 240 seconds)
2021-01-10 05:00:32 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-10 05:01:03 +0100alexelcu(~alexelcu@142.93.180.198)
2021-01-10 05:01:18 +0100haasn(~nand@mpv/developer/haasn)
2021-01-10 05:02:36 +0100Guest19966(~lagothrix@unaffiliated/lagothrix) (Ping timeout: 240 seconds)
2021-01-10 05:02:52 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-10 05:04:19 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-10 05:05:58 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Remote host closed the connection)
2021-01-10 05:06:08 +0100flux66(2fe3e53b@047-227-229-059.res.spectrum.com) (Remote host closed the connection)
2021-01-10 05:07:30 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-kkcpnmskhkuyrrwu) ()
2021-01-10 05:08:20 +0100 <koz_> o dam dey leff
2021-01-10 05:08:55 +0100niekvandepas(~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88)
2021-01-10 05:09:44 +0100christo(~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net)
2021-01-10 05:13:23 +0100niekvandepas(~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 260 seconds)
2021-01-10 05:13:33 +0100jose_edil(~jose_edil@189.6.36.113)
2021-01-10 05:13:59 +0100jose_edil(~jose_edil@189.6.36.113) (Client Quit)
2021-01-10 05:17:12 +0100vicfred(~vicfred@unaffiliated/vicfred)
2021-01-10 05:19:05 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba)
2021-01-10 05:20:21 +0100viluon(uid453725@gateway/web/irccloud.com/x-kawrxnfkkehkxrdj) (Quit: Connection closed for inactivity)
2021-01-10 05:20:25 +0100aldum(~vishera@aldum.pw) (Ping timeout: 246 seconds)
2021-01-10 05:20:39 +0100aldum(~vishera@aldum.pw)
2021-01-10 05:22:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 05:22:54 +0100Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Remote host closed the connection)
2021-01-10 05:23:08 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 265 seconds)
2021-01-10 05:27:58 +0100 <Graypup_> is there a function for `maybe (return ()) (.. make some other monad ..) (.. some Maybe value ..)`?
2021-01-10 05:28:02 +0100 <Graypup_> other than, that one :P
2021-01-10 05:28:07 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-10 05:30:58 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-01-10 05:35:06 +0100niekvandepas(~niekvande@2001:985:bebc:1:31e4:12a0:baa9:a929)
2021-01-10 05:35:39 +0100drbean(~drbean@TC210-63-209-201.static.apol.com.tw)
2021-01-10 05:35:42 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds)
2021-01-10 05:36:22 +0100niekvand_(~niekvande@80-100-16-191.ip.xs4all.nl)
2021-01-10 05:37:16 +0100 <ephemient> Hoogle finds https://hackage.haskell.org/package/extra/docs/Control-Monad-Extra.html#v:whenJust
2021-01-10 05:38:36 +0100 <ezzieyguywuf> dang, never used the diagrams-* family of programs (i.e. diagrams-svg) but they look cool!
2021-01-10 05:39:37 +0100niekvandepas(~niekvande@2001:985:bebc:1:31e4:12a0:baa9:a929) (Ping timeout: 260 seconds)
2021-01-10 05:41:01 +0100niekvand_(~niekvande@80-100-16-191.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-10 05:42:01 +0100 <dolio> Graypup_: traverse_
2021-01-10 05:43:05 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-10 05:46:22 +0100niekvandepas(~niekvande@2001:985:bebc:1:986d:7629:5e04:a085)
2021-01-10 05:47:41 +0100 <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
2021-01-10 05:50:23 +0100 <ezzieyguywuf> Graypup_: can you elaborate? I'm actually working on updating their packages on gentoo
2021-01-10 05:50:42 +0100niekvandepas(~niekvande@2001:985:bebc:1:986d:7629:5e04:a085) (Ping timeout: 260 seconds)
2021-01-10 05:52:45 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection)
2021-01-10 05:52:56 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-01-10 05:54:22 +0100 <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 :(
2021-01-10 05:56:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-10 05:56:55 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-10 05:58:44 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
2021-01-10 05:58:48 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
2021-01-10 05:59:45 +0100ADG1089__(~aditya@122.163.165.143)
2021-01-10 05:59:58 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
2021-01-10 06:00:07 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
2021-01-10 06:02:37 +0100dfeuer(~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-01-10 06:09:48 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-01-10 06:14:23 +0100mirrorbird(~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving)
2021-01-10 06:14:33 +0100gnumonic(~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-01-10 06:15:46 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
2021-01-10 06:15:50 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
2021-01-10 06:16:17 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-01-10 06:18:45 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2021-01-10 06:19:37 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
2021-01-10 06:19:42 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
2021-01-10 06:21:09 +0100JohnTalent(~john@unaffiliated/johntalent)
2021-01-10 06:21:30 +0100 <JohnTalent> How would you port SDL to haskell? I was thinking it could be done in I/O monads.
2021-01-10 06:22:15 +0100SummerNinja(~SummerNin@84.39.117.57) (Remote host closed the connection)
2021-01-10 06:23:23 +0100Tops21(~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de)
2021-01-10 06:23:37 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-01-10 06:24:51 +0100 <Axman6> aren't there already ports?
2021-01-10 06:25:08 +0100 <JohnTalent> yes.
2021-01-10 06:25:13 +0100 <JohnTalent> i was just looking at one.
2021-01-10 06:25:31 +0100Tops2(~Tobias@dyndsl-095-033-022-011.ewe-ip-backbone.de) (Ping timeout: 246 seconds)
2021-01-10 06:26:02 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-10 06:26:16 +0100 <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
2021-01-10 06:26:42 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-10 06:26:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 06:28:02 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 260 seconds)
2021-01-10 06:29:29 +0100 <JohnTalent> yeah, didn't I just say that?
2021-01-10 06:32:04 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
2021-01-10 06:32:08 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit)
2021-01-10 06:32:34 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-10 06:32:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-01-10 06:33:55 +0100 <dsal> JohnTalent: You said something about "I/O monads" which sounds like a different thing from the IO monad.
2021-01-10 06:33:57 +0100 <Axman6> glguy: Thank, I knew there was an actions thing but didn't know that was how to do it
2021-01-10 06:34:07 +0100 <Axman6> s*
2021-01-10 06:34:13 +0100 <dsal> It probably sounds pedantic, but if there's more than one, it'd be interesting to know how that works.
2021-01-10 06:34:50 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 06:36:37 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-10 06:36:43 +0100ADG1089__(~aditya@122.163.165.143) (Remote host closed the connection)
2021-01-10 06:37:34 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-10 06:37:37 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-10 06:37:37 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 06:38:26 +0100 <JohnTalent> How could I create modern Linux into a VM using strictly Haskell?
2021-01-10 06:38:54 +0100funkyb(~funkyb@139.28.218.148)
2021-01-10 06:42:13 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds)
2021-01-10 06:43:44 +0100CMCDragonkai1(~Thunderbi@124.19.3.250)
2021-01-10 06:46:33 +0100niekvandepas(~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d)
2021-01-10 06:47:22 +0100CMCDragonkai1(~Thunderbi@124.19.3.250) (Client Quit)
2021-01-10 06:50:48 +0100niekvandepas(~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Ping timeout: 260 seconds)
2021-01-10 06:52:51 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-10 06:53:54 +0100Tario(~Tario@201.192.165.173)
2021-01-10 06:58:52 +0100JohnTalent(~john@unaffiliated/johntalent) (Quit: leaving)
2021-01-10 07:06:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 07:09:33 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 07:11:22 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-10 07:11:59 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 07:12:32 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-10 07:13:10 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-10 07:14:22 +0100sqrt2_(~ben@unaffiliated/sqrt2) (Quit: ZNC - http://znc.in)
2021-01-10 07:14:33 +0100sqrt2(~ben@unaffiliated/sqrt2)
2021-01-10 07:14:55 +0100desophos(~desophos@2601:249:1680:a570:1a:d7e6:fee4:6ebe)
2021-01-10 07:15:04 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-01-10 07:15:31 +0100desophos(~desophos@2601:249:1680:a570:1a:d7e6:fee4:6ebe) (Client Quit)
2021-01-10 07:16:16 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds)
2021-01-10 07:18:14 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-10 07:18:29 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-10 07:18:55 +0100 <ephemient> there aren't SDL ports to haskell, there are SDL bindings
2021-01-10 07:20:33 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-10 07:20:51 +0100polyrain(~polyrain@121.222.65.83)
2021-01-10 07:21:15 +0100 <ephemient> regarding Linux VM, depends on what you mean by "strictly Haskell" and what you want to achieve
2021-01-10 07:23:21 +0100 <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
2021-01-10 07:24:49 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 07:24:57 +0100 <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
2021-01-10 07:26:44 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-10 07:27:48 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 07:28:02 +0100revtintin(~revtintin@42.61.242.247)
2021-01-10 07:28:25 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2021-01-10 07:29:00 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-10 07:31:56 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
2021-01-10 07:34:08 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection)
2021-01-10 07:40:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-10 07:49:31 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 07:51:22 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2021-01-10 07:54:23 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds)
2021-01-10 07:55:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2021-01-10 07:58:20 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-01-10 07:59:36 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-10 07:59:37 +0100Nikotiini(~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com) (Ping timeout: 264 seconds)
2021-01-10 08:00:39 +0100Tops21(~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) (Quit: Leaving.)
2021-01-10 08:00:46 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-10 08:00:54 +0100Nikotiini(~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com)
2021-01-10 08:01:23 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-01-10 08:07:41 +0100jchia__1(~jchia@58.32.36.39) (Remote host closed the connection)
2021-01-10 08:09:42 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-10 08:13:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 08:14:13 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-10 08:14:57 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 08:16:42 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-10 08:18:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-10 08:18:09 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 08:20:37 +0100ViCi(daniel@10PLM.ro) (Quit: Quit!)
2021-01-10 08:22:37 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
2021-01-10 08:25:58 +0100polyrain(~polyrain@121.222.65.83) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 08:27:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Remote host closed the connection)
2021-01-10 08:36:43 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2021-01-10 08:36:43 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2021-01-10 08:39:37 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 260 seconds)
2021-01-10 08:40:44 +0100polyrain(~polyrain@2001:8003:e501:6901:48d7:a5b0:7887:1dd9)
2021-01-10 08:40:54 +0100polyrain(~polyrain@2001:8003:e501:6901:48d7:a5b0:7887:1dd9) (Client Quit)
2021-01-10 08:42:47 +0100Cthalupa(~cthulhu@47.186.47.75)
2021-01-10 08:50:14 +0100polyrain(~polyrain@2001:8003:e501:6901:aca6:1b18:3492:8fb8)
2021-01-10 08:51:35 +0100gioyik(~gioyik@186.118.234.246) (Quit: WeeChat 3.0)
2021-01-10 08:52:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 08:55:23 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-10 08:55:46 +0100ADG1089__(~aditya@122.163.165.143)
2021-01-10 09:01:57 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-10 09:02:01 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-10 09:06:01 +0100tama(~tama@unaffiliated/tama00)
2021-01-10 09:07:20 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-10 09:11:16 +0100Rudd0^(~Rudd0@185.189.115.108) (Ping timeout: 265 seconds)
2021-01-10 09:11:55 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 09:14:14 +0100revtintin(~revtintin@42.61.242.247) (Quit: WeeChat 1.9.1)
2021-01-10 09:15:29 +0100Deide(~Deide@217.155.19.23)
2021-01-10 09:16:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 09:17:17 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 09:17:29 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-10 09:17:48 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 09:22:03 +0100pera(~pera@unaffiliated/pera)
2021-01-10 09:22:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 09:24:17 +0100 <siraben> What's the Haskell equivalent of async/await/Futures?
2021-01-10 09:24:56 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
2021-01-10 09:27:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-10 09:27:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba)
2021-01-10 09:28:24 +0100 <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
2021-01-10 09:28:52 +0100 <Graypup_> or rather, an instance for every type I want to make it a part of
2021-01-10 09:29:27 +0100 <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
2021-01-10 09:29:58 +0100 <siraben> Graypup_: there's ConstraintKinds
2021-01-10 09:29:59 +0100 <siraben> e.g. `type StEff s r = (Reader s :<: r, Writer s :<: r)`
2021-01-10 09:30:13 +0100 <siraben> Then, `sumN :: (StEff (Integer, Integer) f) => Term f ()`
2021-01-10 09:31:09 +0100knupfer(~Thunderbi@200116b82cc1a70088a433fffe03d6f1.dip.versatel-1u1.de)
2021-01-10 09:31:11 +0100knupfer(~Thunderbi@200116b82cc1a70088a433fffe03d6f1.dip.versatel-1u1.de) (Client Quit)
2021-01-10 09:31:19 +0100 <Graypup_> heck yeah, that looks like exactly what i was looking for
2021-01-10 09:31:24 +0100knupfer(~Thunderbi@87.123.206.207)
2021-01-10 09:31:49 +0100 <siraben> Graypup_: what's a blanket implementation in Rust?
2021-01-10 09:32:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Ping timeout: 264 seconds)
2021-01-10 09:33:10 +0100 <Graypup_> impl<T: SomeOtherTrait> SomeTrait for T { }
2021-01-10 09:33:15 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 09:33:38 +0100Tops2(~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de)
2021-01-10 09:33:43 +0100 <Graypup_> it implements SomeTrait for all types that implement SomeOtherTrait, having access to the functionality of SomeOtherTrait
2021-01-10 09:34:38 +0100 <siraben> Oh ok so it's like, `class SomeOtherTrait t => SomeTrait t where {}`
2021-01-10 09:34:39 +0100 <siraben> in Haskell
2021-01-10 09:34:42 +0100 <c_wraith> siraben: for what purpose? Most use cases are handled by the async library, but some special cases are not
2021-01-10 09:35:05 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2021-01-10 09:35:19 +0100 <Graypup_> siraben, I believe so yeah
2021-01-10 09:35:39 +0100 <c_wraith> I bet the edge cases are different
2021-01-10 09:35:50 +0100 <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
2021-01-10 09:35:50 +0100 <c_wraith> Rust forbids orphan instances.
2021-01-10 09:36:00 +0100 <siraben> But haven't done more complex async programs
2021-01-10 09:36:10 +0100 <c_wraith> So it doesn't have to deal with an open-world assumption
2021-01-10 09:36:28 +0100 <c_wraith> So it can handle overlapping instances with much less confusion than Haskell
2021-01-10 09:37:16 +0100 <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.
2021-01-10 09:38:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds)
2021-01-10 09:38:17 +0100 <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
2021-01-10 09:38:32 +0100 <c_wraith> Graypup_: it doesn't avoid the troubles. :)
2021-01-10 09:38:39 +0100 <Graypup_> heh
2021-01-10 09:38:40 +0100tito_04(~taurux@net-188-152-137-51.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2021-01-10 09:39:24 +0100taurux(~taurux@net-109-115-33-52.cust.vodafonedsl.it)
2021-01-10 09:39:41 +0100 <c_wraith> instead we have explicit overlapping indications and extensions like IncoherentInstances when that isn't enough.
2021-01-10 09:40:07 +0100 <c_wraith> Note the word "incoherent" is scary. That is accurate.
2021-01-10 09:40:59 +0100 <c_wraith> when instances overlap incoherently, GHC provides no guarantees that it will always select the same one :(
2021-01-10 09:41:31 +0100cassim(~cassim@51.194.80.91) (Ping timeout: 246 seconds)
2021-01-10 09:44:58 +0100 <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.
2021-01-10 09:44:59 +0100 <siraben> does anyone know of good tutorials and examples of async programming in Haskell?
2021-01-10 09:45:30 +0100 <siraben> c_wraith: Right, I get the sense that async may be the wrong/too low level abstraction in Haskell
2021-01-10 09:48:27 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-01-10 09:48:50 +0100taurux(~taurux@net-109-115-33-52.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2021-01-10 09:48:55 +0100tito_04(~taurux@net-109-115-33-214.cust.vodafonedsl.it)
2021-01-10 09:55:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 09:56:50 +0100pera(~pera@unaffiliated/pera) (Quit: leaving)
2021-01-10 09:57:28 +0100taurux(~taurux@net-109-115-33-214.cust.vodafonedsl.it)
2021-01-10 09:58:25 +0100tito_04(~taurux@net-109-115-33-214.cust.vodafonedsl.it) (Ping timeout: 264 seconds)
2021-01-10 09:58:46 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
2021-01-10 10:01:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-10 10:17:34 +0100 <ij> where is the filter for Maybe? Is there one that works for lists and Maybes?
2021-01-10 10:17:48 +0100pera(~pera@unaffiliated/pera)
2021-01-10 10:18:40 +0100 <ij> I guess find works for Maybe, surprisingly
2021-01-10 10:20:02 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 10:22:07 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 246 seconds)
2021-01-10 10:23:15 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-01-10 10:23:39 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-zvbazqanyhuylsws) (Quit: Connection closed for inactivity)
2021-01-10 10:24:40 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-10 10:25:13 +0100Enrico63(520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net)
2021-01-10 10:25:59 +0100 <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
2021-01-10 10:26:21 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl)
2021-01-10 10:26:41 +0100 <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
2021-01-10 10:27:42 +0100 <charukiewicz> find does work for lists as well, since lists also have a Foldable instance
2021-01-10 10:29:04 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 10:30:37 +0100 <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.
2021-01-10 10:30:51 +0100 <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`
2021-01-10 10:30:57 +0100 <ij> ski, why did you need Right . (,) () there yesterday? Could it not have been just Right?
2021-01-10 10:31:21 +0100 <ij> :t absurd
2021-01-10 10:31:22 +0100 <lambdabot> Void -> a
2021-01-10 10:31:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 10:31:51 +0100christo(~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net) (Remote host closed the connection)
2021-01-10 10:32:29 +0100christo(~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net)
2021-01-10 10:33:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
2021-01-10 10:35:02 +0100berberman_(~berberman@unaffiliated/berberman)
2021-01-10 10:35:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 10:35:46 +0100drbean(~drbean@TC210-63-209-201.static.apol.com.tw) (Ping timeout: 246 seconds)
2021-01-10 10:36:02 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2021-01-10 10:36:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 10:36:49 +0100christo(~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net) (Ping timeout: 246 seconds)
2021-01-10 10:39:52 +0100aerium(~aerium@51.194.80.91)
2021-01-10 10:40:47 +0100 <idnar> :t catMaybes -- ij, maybe this?
2021-01-10 10:40:48 +0100 <lambdabot> [Maybe a] -> [a]
2021-01-10 10:41:17 +0100 <ij> I was looking for filter for Foldable, but maybe that is not possible
2021-01-10 10:41:48 +0100 <idnar> ij: ah, that's ~ Witherable
2021-01-10 10:42:18 +0100 <ij> well, find it is then, because I don't need another package just for that
2021-01-10 10:43:21 +0100 <idnar> :t Data.Witherable.filter
2021-01-10 10:43:23 +0100 <lambdabot> error:
2021-01-10 10:43:23 +0100 <lambdabot> Not in scope: ‘Data.Witherable.filter’
2021-01-10 10:43:23 +0100 <lambdabot> No module named ‘Data.Witherable’ is imported.
2021-01-10 10:43:31 +0100 <idnar> % :t Data.Witherable.filter
2021-01-10 10:43:31 +0100 <yahb> idnar: ; <interactive>:1:1: error:; Not in scope: `Data.Witherable.filter'; No module named `Data.Witherable' is imported.
2021-01-10 10:43:46 +0100 <idnar> % import Data.Witherable
2021-01-10 10:43:46 +0100 <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.
2021-01-10 10:43:53 +0100 <idnar> bah
2021-01-10 10:44:37 +0100 <idnar> anyway, yeah, overkill for just one instance
2021-01-10 10:44:53 +0100 <ij> but at least I know it's there! scala has it, so I was kind of looking for it
2021-01-10 10:45:19 +0100 <dibblego> scala's is broken, use Witherable
2021-01-10 10:45:23 +0100 <ij> :)
2021-01-10 10:45:37 +0100 <ij> but they pay me for it!
2021-01-10 10:47:03 +0100 <ij> I'm writing a pipe maze solver and I added coloring for connected parts lookupEquiv v =
2021-01-10 10:47:10 +0100 <ij> https://photos.app.goo.gl/26XtXxiG4WsM2K5ZA
2021-01-10 10:47:27 +0100 <idnar> Data.Witherable.filter :: Filterable f => (a -> Bool) -> f a -> f a
2021-01-10 10:47:27 +0100 <idnar> Data.Witherable.wither :: (Witherable t, Applicative f) => (a -> f (Maybe b)) -> t a -> f (t b)
2021-01-10 10:47:38 +0100 <ij> they're all supposed to be connected, but first I had to write the code that detects
2021-01-10 10:48:34 +0100 <ij> idnar, lambdabot doesn't have everything imported :)
2021-01-10 10:50:01 +0100 <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`?
2021-01-10 10:50:16 +0100 <haasn> my ~/.ghc/**/environment seems to have turned into this: https://0x1.st/Lm.txt
2021-01-10 10:50:32 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-10 10:51:34 +0100 <haasn> `ghc-pkg describe lens` shows `exposed: True`
2021-01-10 10:52:12 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-01-10 10:52:23 +0100hekkaidekapus}(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2021-01-10 10:55:28 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-10 10:56:11 +0100 <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
2021-01-10 10:56:57 +0100 <merijn> haasn: "cabal install" in 3.x doesn't really do global installs anymore, at least not in the sense it did previously.
2021-01-10 10:57:32 +0100 <merijn> haasn: What the best solution is depends on what you need/are using global installs for
2021-01-10 10:57:43 +0100 <haasn> I mostly just like the idea of getting automatic upgrades
2021-01-10 10:58:07 +0100 <merijn> automatic upgrades for what
2021-01-10 10:58:12 +0100 <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
2021-01-10 10:58:46 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-10 10:58:48 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-10 10:59:01 +0100 <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
2021-01-10 11:00:01 +0100 <haasn> If I `cabal install lens` then how does cabal know when there's a newer version of lens and install it automatically?
2021-01-10 11:00:30 +0100 <merijn> haasn: It checks the package index from Hackage, which gets updated when you run "cabal update"
2021-01-10 11:00:36 +0100 <Enrico63> Hello, is this a good place to ask for help with ghcup?
2021-01-10 11:00:47 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-10 11:01:04 +0100 <haasn> merijn: So I need to manually `cabal update && cabal install lens && cabal install arithmoi && cabal install ....` for every package I reference from .ghci?
2021-01-10 11:01:04 +0100 <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
2021-01-10 11:01:45 +0100 <merijn> haasn: If you're using cabal-install 3.x then that will almost definitely *not* do what you want/expect
2021-01-10 11:02:11 +0100 <merijn> You could probably do v1-install, but that's not ideal either
2021-01-10 11:02:22 +0100datajerk(~datajerk@sense.net) (Ping timeout: 246 seconds)
2021-01-10 11:03:02 +0100 <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.)
2021-01-10 11:04:04 +0100 <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"
2021-01-10 11:04:10 +0100 <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
2021-01-10 11:04:15 +0100 <merijn> haasn: No
2021-01-10 11:04:23 +0100 <merijn> Because there is no global database in v2-install
2021-01-10 11:05:44 +0100 <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
2021-01-10 11:08:43 +0100Rudd0(~Rudd0@185.189.115.103)
2021-01-10 11:10:50 +0100sqrt2(~ben@unaffiliated/sqrt2) (Ping timeout: 264 seconds)
2021-01-10 11:11:57 +0100sqrt2(~ben@unaffiliated/sqrt2)
2021-01-10 11:12:05 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-10 11:12:35 +0100datajerk(~datajerk@sense.net)
2021-01-10 11:13:10 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-10 11:18:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 11:18:22 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-10 11:20:49 +0100charukiewicz(~quassel@irouteince04.i.subnet.rcn.com) (Quit: charukiewicz)
2021-01-10 11:22:45 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 272 seconds)
2021-01-10 11:26:26 +0100kuribas(~user@ptr-25vy0i7ug01ndhtx56u.18120a2.ip6.access.telenet.be)
2021-01-10 11:29:12 +0100kapasian(8de20846@141.226.8.70)
2021-01-10 11:29:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 11:30:19 +0100kapasian(8de20846@141.226.8.70) (Remote host closed the connection)
2021-01-10 11:33:41 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 11:34:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
2021-01-10 11:34:23 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2021-01-10 11:34:47 +0100taurux(~taurux@net-109-115-33-214.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
2021-01-10 11:35:03 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds)
2021-01-10 11:35:05 +0100taurux(~taurux@net-109-115-33-214.cust.vodafonedsl.it)
2021-01-10 11:35:33 +0100hacxman(~hexo@gateway/tor-sasl/hexo)
2021-01-10 11:35:37 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-10 11:35:43 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2021-01-10 11:35:49 +0100hacxmanhexo
2021-01-10 11:36:03 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds)
2021-01-10 11:36:06 +0100xelxebar_(~xelxebar@gateway/tor-sasl/xelxebar)
2021-01-10 11:36:09 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0)
2021-01-10 11:36:21 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Quit: No Ping reply in 180 seconds.)
2021-01-10 11:36:23 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2021-01-10 11:36:43 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-01-10 11:36:46 +0100acidjnk_new(~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de)
2021-01-10 11:37:11 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-10 11:37:41 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-10 11:37:48 +0100coeus(~coeus@p200300d0271c3b00114a6166d66724be.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-10 11:38:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 11:44:20 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-10 11:45:54 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2021-01-10 11:52:27 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Ping timeout: 268 seconds)
2021-01-10 11:53:44 +0100coeus(~coeus@p200300d0273e3a0010a118dda365b6f5.dip0.t-ipconnect.de)
2021-01-10 11:56:07 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
2021-01-10 11:57:44 +0100ADG1089__(~aditya@122.163.165.143) (Remote host closed the connection)
2021-01-10 12:00:32 +0100dominik(~weechat@2001:a61:35c0:901:9665:9cff:fe4d:b4d0)
2021-01-10 12:01:01 +0100polyrain(~polyrain@2001:8003:e501:6901:aca6:1b18:3492:8fb8) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 12:02:11 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Read error: Connection reset by peer)
2021-01-10 12:02:12 +0100 <Axman6> Is there a way with cabal to use a git repo as a source of a dependency like stack?
2021-01-10 12:02:38 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
2021-01-10 12:02:45 +0100 <Axman6> Enrico63: First rule of IRC: don't ask to ask, just ask
2021-01-10 12:05:52 +0100tama(~tama@unaffiliated/tama00) (Ping timeout: 256 seconds)
2021-01-10 12:06:03 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
2021-01-10 12:06:04 +0100CMCDragonkai1(~Thunderbi@124.19.3.250)
2021-01-10 12:07:21 +0100CMCDragonkai1(~Thunderbi@124.19.3.250) (Client Quit)
2021-01-10 12:10:34 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2021-01-10 12:17:24 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-10 12:17:27 +0100 <merijn> Axman6: Yes
2021-01-10 12:17:49 +0100 <merijn> Axman6: https://github.com/merijn/Belewitte/blob/master/cabal.project.ghc-8.10#L8-L12
2021-01-10 12:20:13 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 12:20:52 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2021-01-10 12:22:22 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-10 12:25:02 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-10 12:25:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 12:27:15 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
2021-01-10 12:27:26 +0100 <Enrico63> Axman6 I did it earlier. Nobody answered. However I've solved. Thanks.
2021-01-10 12:29:07 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 256 seconds)
2021-01-10 12:30:37 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 12:32:34 +0100 <Axman6> merijn: thanks - how is subdir used?
2021-01-10 12:33:04 +0100 <Axman6> Enrico63: I find just using ghcup tui is the simplest thing to do
2021-01-10 12:35:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
2021-01-10 12:39:03 +0100 <Axman6> ah, got it, it's which subdir in the repo ro use, not where the package ends up
2021-01-10 12:41:59 +0100cpape`(~user@static.180.18.203.116.clients.your-server.de) (Quit: ERC (IRC client for Emacs 26.3))
2021-01-10 12:42:20 +0100cpape(~user@static.180.18.203.116.clients.your-server.de)
2021-01-10 12:45:52 +0100christo(~chris@81.96.113.213)
2021-01-10 12:46:23 +0100HarveyPwca(~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving)
2021-01-10 12:51:06 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2021-01-10 12:51:13 +0100 <merijn> Axman6: Right, since (for example) persistent has multiple packages in one repo
2021-01-10 12:51:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 12:52:27 +0100funkyb(~funkyb@139.28.218.148) (Remote host closed the connection)
2021-01-10 12:53:37 +0100j3parker1(~j3parker@178.239.168.171)
2021-01-10 12:56:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds)
2021-01-10 13:03:40 +0100xff0x(~fox@2001:1a81:53b9:9a00:76c5:7153:4a38:bc09)
2021-01-10 13:04:14 +0100niekvandepas(~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d)
2021-01-10 13:04:19 +0100xff0x(~fox@2001:1a81:53b9:9a00:76c5:7153:4a38:bc09) (Client Quit)
2021-01-10 13:06:17 +0100toppler(~user@mtop.default.momentoftop.uk0.bigv.io)
2021-01-10 13:07:18 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 13:11:35 +0100niekvandepas(~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Remote host closed the connection)
2021-01-10 13:12:01 +0100niekvandepas(~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d)
2021-01-10 13:12:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 13:12:31 +0100juuandyy(~juuandyy@90.166.144.65)
2021-01-10 13:12:49 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it)
2021-01-10 13:19:14 +0100niekvandepas(~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Ping timeout: 264 seconds)
2021-01-10 13:19:39 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-10 13:22:06 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 13:26:24 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 256 seconds)
2021-01-10 13:26:54 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 260 seconds)
2021-01-10 13:30:44 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2021-01-10 13:30:44 +0100lush(4d0c3c64@dynamic-077-012-060-100.77.12.pool.telefonica.de)
2021-01-10 13:31:19 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 13:33:19 +0100 <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
2021-01-10 13:33:19 +0100 <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?
2021-01-10 13:33:42 +0100ADG1089__(~aditya@122.163.165.143)
2021-01-10 13:35:46 +0100columbarius1(~columbari@i5E86B32C.versanet.de) (Read error: Connection reset by peer)
2021-01-10 13:36:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
2021-01-10 13:36:18 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
2021-01-10 13:37:22 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2021-01-10 13:37:46 +0100knupfer(~Thunderbi@87.123.206.207) (Ping timeout: 272 seconds)
2021-01-10 13:37:59 +0100troydm(~troydm@unaffiliated/troydm) (Ping timeout: 260 seconds)
2021-01-10 13:39:22 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 13:40:15 +0100__monty__(~toonn@unaffiliated/toonn)
2021-01-10 13:40:50 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds)
2021-01-10 13:41:12 +0100columbarius1(~columbari@i5E86B32C.versanet.de)
2021-01-10 13:42:08 +0100drbean(~drbean@TC210-63-209-193.static.apol.com.tw)
2021-01-10 13:46:49 +0100immae(immaematri@gateway/shell/matrix.org/x-sofszfynxwfdycbe)
2021-01-10 13:47:31 +0100immae[m](~immae@2a01:4f8:141:53e7::) ("WeeChat 2.9")
2021-01-10 13:49:35 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
2021-01-10 13:49:55 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-10 13:52:35 +0100Enrico63(520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net) (Ping timeout: 245 seconds)
2021-01-10 13:53:48 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 13:54:41 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-10 13:57:52 +0100knupfer(~Thunderbi@200116b82cc1a700f8d327fffe2ff6cd.dip.versatel-1u1.de)
2021-01-10 13:57:53 +0100knupfer(~Thunderbi@200116b82cc1a700f8d327fffe2ff6cd.dip.versatel-1u1.de) (Client Quit)
2021-01-10 13:58:07 +0100knupfer(~Thunderbi@87.123.206.207)
2021-01-10 13:58:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 13:59:33 +0100dominik(~weechat@2001:a61:35c0:901:9665:9cff:fe4d:b4d0) (Quit: WeeChat 2.8)
2021-01-10 13:59:43 +0100troydm(~troydm@unaffiliated/troydm)
2021-01-10 14:02:50 +0100knupfer(~Thunderbi@87.123.206.207) (Ping timeout: 256 seconds)
2021-01-10 14:06:06 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 265 seconds)
2021-01-10 14:08:07 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 14:08:55 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
2021-01-10 14:09:46 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-10 14:12:07 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-10 14:12:32 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 14:13:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2021-01-10 14:13:04 +0100 <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
2021-01-10 14:14:24 +0100 <__monty__> You can index arrays with tuples.
2021-01-10 14:14:56 +0100 <freeman42x[m]> __monty__: sure, without ziping?
2021-01-10 14:15:57 +0100 <__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
2021-01-10 14:16:50 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-01-10 14:16:56 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
2021-01-10 14:20:10 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th)
2021-01-10 14:20:55 +0100 <freeman42x[m]> __monty__: how do you index it by tuples?
2021-01-10 14:21:18 +0100 <__monty__> That's an exercise for the reader.
2021-01-10 14:21:20 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-10 14:22:19 +0100 <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
2021-01-10 14:22:36 +0100darjeeling_(~darjeelin@115.215.40.96) (Ping timeout: 240 seconds)
2021-01-10 14:24:02 +0100 <__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?
2021-01-10 14:25:20 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 14:25:58 +0100 <freeman42x[m]> __monty__: if there is a better way that is less verbose / error prone, should I not seek to use that?
2021-01-10 14:28:10 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-01-10 14:28:16 +0100 <ij> what decides the CSS on hackage.haskell.org? containers has old, websockets has new
2021-01-10 14:29:33 +0100 <hpc> date of haddock build probably?
2021-01-10 14:29:53 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds)
2021-01-10 14:31:43 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-10 14:32:01 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 14:34:16 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-01-10 14:36:53 +0100 <__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.
2021-01-10 14:37:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds)
2021-01-10 14:38:20 +0100 <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
2021-01-10 14:38:23 +0100 <ij> freeman42x[m], less error prone than just programming it? well, someone has to write the function to compute them...
2021-01-10 14:38:26 +0100 <freeman42x[m]> like, that is super easy, barely an inconvenience
2021-01-10 14:38:54 +0100 <__monty__> I really don't see the difference.
2021-01-10 14:39:33 +0100darjeeling_(~darjeelin@115.215.40.96)
2021-01-10 14:40:07 +0100 <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
2021-01-10 14:41:15 +0100 <ij> are you proposing that should index range computations should added to some library?
2021-01-10 14:42:21 +0100 <merijn> THose already exist :p
2021-01-10 14:42:31 +0100 <merijn> See the Ix class :p
2021-01-10 14:42:58 +0100 <merijn> I think he just wants SaC's array comprehensions
2021-01-10 14:43:18 +0100 <ij> what's SaC?
2021-01-10 14:43:51 +0100 <ij> freeman42x[m], was the question "where are they implemented, so I don't have to" all along?
2021-01-10 14:44:21 +0100 <merijn> Single assignment C
2021-01-10 14:45:48 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 14:48:13 +0100shailangsa(~shailangs@host86-186-191-114.range86-186.btcentralplus.com) (Ping timeout: 264 seconds)
2021-01-10 14:48:30 +0100fendor(~fendor@77.119.130.129.wireless.dyn.drei.com)
2021-01-10 14:49:30 +0100berberman_(~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
2021-01-10 14:49:55 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-10 14:50:43 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2021-01-10 14:50:56 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
2021-01-10 14:56:01 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
2021-01-10 14:56:31 +0100drbean(~drbean@TC210-63-209-193.static.apol.com.tw) (Ping timeout: 256 seconds)
2021-01-10 15:00:05 +0100 <ij> merijn, sorry, I couldn't quite follow what was going on with the monoid abuse immediately :)
2021-01-10 15:00:38 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds)
2021-01-10 15:00:40 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 15:00:53 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-10 15:01:26 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2021-01-10 15:05:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 15:05:59 +0100 <ij> is mapM_ some sort of traverse?
2021-01-10 15:06:34 +0100 <merijn> It *is* traverse
2021-01-10 15:06:36 +0100 <merijn> :t traverse
2021-01-10 15:06:37 +0100u0_a298(~user@65.35.205.131)
2021-01-10 15:06:37 +0100 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
2021-01-10 15:06:38 +0100 <merijn> :t mapM_
2021-01-10 15:06:39 +0100 <lambdabot> (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
2021-01-10 15:06:41 +0100 <ij> ()
2021-01-10 15:06:42 +0100 <merijn> well
2021-01-10 15:06:44 +0100 <merijn> :t traverse_
2021-01-10 15:06:46 +0100 <lambdabot> (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
2021-01-10 15:06:52 +0100 <ij> ah, then I have to import it
2021-01-10 15:07:05 +0100 <merijn> hysterical raisins
2021-01-10 15:07:14 +0100 <ij> haha
2021-01-10 15:07:19 +0100 <ij> I'd never heard that one
2021-01-10 15:07:39 +0100 <merijn> traverse_ is basically a generalisation of traverse
2021-01-10 15:07:45 +0100 <merijn> eh
2021-01-10 15:07:48 +0100 <merijn> mapM >.>
2021-01-10 15:08:12 +0100 <kuribas> merijn: mapM_
2021-01-10 15:08:48 +0100son0p(~son0p@181.136.122.143)
2021-01-10 15:10:08 +0100 <merijn> kuribas: https://i.imgflip.com/4ta34y.jpg
2021-01-10 15:10:18 +0100 <ij> :D
2021-01-10 15:10:23 +0100 <ij> you like to have fun here
2021-01-10 15:11:01 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-10 15:12:01 +0100cyphase(~cyphase@unaffiliated/cyphase) (Ping timeout: 272 seconds)
2021-01-10 15:12:16 +0100 <kuribas> merijn: the type system disagrees
2021-01-10 15:14:33 +0100sajith[m](sajithmatr@gateway/shell/matrix.org/x-xzxvlmzgkorbwysi)
2021-01-10 15:16:00 +0100 <ij> do you know the f >>= (,) idiom?
2021-01-10 15:16:12 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
2021-01-10 15:17:34 +0100 <hpc> :t (>>= (,))
2021-01-10 15:17:36 +0100 <lambdabot> (b -> a) -> b -> (a, b)
2021-01-10 15:17:46 +0100 <hpc> oh, that's not bad
2021-01-10 15:18:29 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-10 15:20:37 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2021-01-10 15:20:52 +0100u0_a298(~user@65.35.205.131)
2021-01-10 15:21:32 +0100 <ezzieyguywuf> Graypup_: regarding your diagrams dependency stuff - guess i don't really understand, but also i don't know nix packaging stuff.
2021-01-10 15:22:16 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 272 seconds)
2021-01-10 15:23:22 +0100shailangsa(~shailangs@host217-39-45-247.range217-39.btcentralplus.com)
2021-01-10 15:25:26 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2021-01-10 15:25:54 +0100kyali(~kyali@APN-123-254-27-gprs.simobil.net)
2021-01-10 15:26:23 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-10 15:26:55 +0100u0_a298(~user@65.35.205.131)
2021-01-10 15:28:04 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2021-01-10 15:28:22 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-10 15:30:58 +0100cyphase(~cyphase@unaffiliated/cyphase)
2021-01-10 15:31:47 +0100 <ij> I need cheaper copies for matrixes https://hackage.haskell.org/package/matrix-0.3.6.1/docs/Data-Matrix.html
2021-01-10 15:31:59 +0100 <ij> I think I'm going to go with Vector Vector Char
2021-01-10 15:32:05 +0100 <ij> (because I'm storing Chars)
2021-01-10 15:32:15 +0100 <ij> should that work out?
2021-01-10 15:34:29 +0100u0_a298(~user@65.35.205.131) (Read error: Connection reset by peer)
2021-01-10 15:34:29 +0100 <ezzieyguywuf> ij: i bet that matrix is essentially a vector behind-the-scenes anyway
2021-01-10 15:34:48 +0100 <ij> yes, but it isn't Vector Vector Char
2021-01-10 15:34:50 +0100 <merijn> ezzieyguywuf: It literally is :p
2021-01-10 15:35:03 +0100 <ij> i.e. Vector Vector a
2021-01-10 15:35:03 +0100xlei(znc@unaffiliated/xlei) (Ping timeout: 256 seconds)
2021-01-10 15:35:18 +0100u0_a298(~user@65.35.205.131)
2021-01-10 15:35:20 +0100 <ij> doesn't matter what it holds, the updates will invalidate the whole array instead of just a row/column
2021-01-10 15:35:24 +0100 <ezzieyguywuf> ij: that's how kmett does it at least - https://hackage.haskell.org/package/linear-1.21.3
2021-01-10 15:35:47 +0100ericsagnes(~ericsagne@2405:6580:0:5100:3c13:dd0e:758f:287c) (Ping timeout: 260 seconds)
2021-01-10 15:36:17 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-01-10 15:36:52 +0100 <ij> merijn, would Vector Vector a work?
2021-01-10 15:37:17 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-10 15:37:18 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
2021-01-10 15:37:34 +0100 <merijn> Yes, but almost certainly *less* efficient
2021-01-10 15:37:38 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-10 15:37:51 +0100 <ij> well, my maze solver is eating my memory and that's the bottleneck right now
2021-01-10 15:37:51 +0100 <merijn> Well, it depends for what, I suppose
2021-01-10 15:38:10 +0100dyeplexer(~lol@unaffiliated/terpin)
2021-01-10 15:38:45 +0100pera_(pera@gateway/vpn/mullvad/pera)
2021-01-10 15:38:45 +0100pera_(pera@gateway/vpn/mullvad/pera) (Client Quit)
2021-01-10 15:39:00 +0100pera_(pera@gateway/vpn/mullvad/pera)
2021-01-10 15:39:59 +0100pera__(pera@gateway/vpn/mullvad/pera)
2021-01-10 15:40:14 +0100pera(~pera@unaffiliated/pera) (Disconnected by services)
2021-01-10 15:40:21 +0100pera__pera
2021-01-10 15:41:50 +0100pera_(pera@gateway/vpn/mullvad/pera) (Read error: Connection reset by peer)
2021-01-10 15:42:13 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 260 seconds)
2021-01-10 15:42:34 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2021-01-10 15:42:42 +0100Entertainment(~entertain@104.246.132.210)
2021-01-10 15:42:59 +0100 <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
2021-01-10 15:43:12 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-10 15:43:48 +0100 <ij> edwardk, I am backtracking on a pipe maze puzzle, so I think O(1) access is important
2021-01-10 15:43:53 +0100lucas8(~luc@2001:41d0:8:109c::1) (Read error: Connection reset by peer)
2021-01-10 15:44:19 +0100 <edwardk> if you are doing backtracking, the other option is to use mutable arrays and just undo the writes on backtrack
2021-01-10 15:44:26 +0100 <edwardk> i do this in guanxi a lot
2021-01-10 15:44:59 +0100 <ij> I was thinking about that, but I'm not sure how to implement i
2021-01-10 15:45:01 +0100 <ij> +t
2021-01-10 15:45:11 +0100lush(4d0c3c64@dynamic-077-012-060-100.77.12.pool.telefonica.de) (Remote host closed the connection)
2021-01-10 15:45:16 +0100 <edwardk> here let me paste the core module
2021-01-10 15:45:19 +0100 <ij> yeah, it's visiting only one thing at a time, so that could work
2021-01-10 15:45:54 +0100 <edwardk> https://github.com/ekmett/guanxi/blob/master/src/Ref.hs
2021-01-10 15:45:55 +0100 <ij> it might much less painful than trying to make my own matrix
2021-01-10 15:46:16 +0100 <edwardk> that link shows mutable references with backtracking. you use it with something like LogicT (ST s)
2021-01-10 15:46:36 +0100 <edwardk> and just never use any of the fair interleaving operations (as they are dangerous for the ST s effects.
2021-01-10 15:47:12 +0100 <edwardk> unwind f mu na = na >>= \a -> case f a of (b, c) -> pure b <|> (mu c *> empty) -- is the key operation
2021-01-10 15:47:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 15:47:29 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 260 seconds)
2021-01-10 15:47:34 +0100 <edwardk> it basically does 'f' keeping track of some information c it needs to undo and b which is the answer
2021-01-10 15:47:36 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-10 15:47:37 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-10 15:47:42 +0100ericsagnes(~ericsagne@2405:6580:0:5100:32fa:5861:e6a3:7ef9)
2021-01-10 15:48:01 +0100 <edwardk> and returns b, but if that branch fails with <|> it does the unwind action 'mu' given the information needed to unwind 'c'
2021-01-10 15:48:22 +0100 <edwardk> updateRef' (reference -> Ref r) f = unwind id (writeMutVar r) $ atomicModifyMutVar' r $ \a@(f->(b,a'))->(a',(b,a))
2021-01-10 15:49:33 +0100 <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
2021-01-10 15:50:58 +0100 <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.
2021-01-10 15:51:25 +0100 <nshepperd> nice viewpatterns there heh
2021-01-10 15:51:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds)
2021-01-10 15:51:56 +0100u0_a298(~user@65.35.205.131) (Ping timeout: 240 seconds)
2021-01-10 15:52:08 +0100 <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
2021-01-10 15:52:09 +0100 <edwardk> https://github.com/ekmett/guanxi/blob/master/src/Vec.hs
2021-01-10 15:52:17 +0100Wuzzy(~Wuzzy@p5790e648.dip0.t-ipconnect.de)
2021-01-10 15:52:20 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 15:52:20 +0100 <edwardk> that gives me something close to a std::vector<> in c++ terms
2021-01-10 15:52:38 +0100 <edwardk> except its implemented 'transients' style rather than mutable data structure style.
2021-01-10 15:52:40 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com)
2021-01-10 15:53:50 +0100 <nshepperd> sounds like basically the trick is to write a withFoo function for modifying your array instead of writing directly
2021-01-10 15:54:04 +0100 <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
2021-01-10 15:54:04 +0100 <edwardk> the old one invalidated
2021-01-10 15:54:45 +0100 <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
2021-01-10 15:55:19 +0100 <edwardk> i use the name transients because its the same pattern used by hickey in clojure for making temporarily mutable structures
2021-01-10 15:55:59 +0100 <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)
2021-01-10 15:56:11 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-10 15:57:27 +0100xlei(~akans@unaffiliated/xlei)
2021-01-10 15:57:39 +0100 <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
2021-01-10 15:57:54 +0100 <edwardk> i started writing a transients library in haskell and never got around to finishing it
2021-01-10 15:58:12 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-10 15:59:49 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Client Quit)
2021-01-10 15:59:51 +0100 <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
2021-01-10 15:59:51 +0100 <edwardk> linear.
2021-01-10 16:00:13 +0100 <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.
2021-01-10 16:00:36 +0100 <edwardk> i need SAT solver state about the set of clauses to _not_ backtrack because its true in all worlds
2021-01-10 16:00:51 +0100 <edwardk> but i need the vector of current assertions _to_ backtrack
2021-01-10 16:01:21 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 16:01:34 +0100 <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
2021-01-10 16:01:55 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-10 16:03:34 +0100 <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
2021-01-10 16:04:11 +0100 <edwardk> that was way more word vomit than that deserved
2021-01-10 16:04:14 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt)
2021-01-10 16:05:38 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
2021-01-10 16:07:45 +0100chirpsalot(~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (Ping timeout: 240 seconds)
2021-01-10 16:08:30 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com) (*.net *.split)
2021-01-10 16:09:02 +0100Chobbes(~Chobbes@unaffiliated/chobbes) (Ping timeout: 264 seconds)
2021-01-10 16:14:10 +0100 <nshepperd> couldn't you implement a basic backtracking mutable state with a combination of ST, WriterT, and MaybeT
2021-01-10 16:14:46 +0100Chobbes(~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net)
2021-01-10 16:14:46 +0100 <nshepperd> ST (UndoActions, Maybe a)
2021-01-10 16:15:39 +0100chirpsalot(~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net)
2021-01-10 16:16:16 +0100 <nshepperd> with special <|> which either flushes or returns the undo stack
2021-01-10 16:18:28 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-10 16:18:42 +0100ph88(~ph88@ip5f5af71a.dynamic.kabel-deutschland.de)
2021-01-10 16:20:28 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2021-01-10 16:21:51 +0100 <nshepperd> UndoActions being just a difflist of ST s ()
2021-01-10 16:22:00 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-10 16:22:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-10 16:23:06 +0100nshepperdlikes to forget that that s parameter to ST exists
2021-01-10 16:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-10 16:23:11 +0100fendor_(~fendor@91.141.0.240.wireless.dyn.drei.com)
2021-01-10 16:24:05 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 16:24:51 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-01-10 16:25:25 +0100fendor(~fendor@77.119.130.129.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
2021-01-10 16:31:39 +0100 <kuribas> ij: IMO you should never use the (->) monad, always prepend it with Reader or ReaderT.
2021-01-10 16:31:43 +0100 <kuribas> it's only good for code golf
2021-01-10 16:31:50 +0100 <kuribas> or obfuscation
2021-01-10 16:33:12 +0100Katarushisu(~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) (Ping timeout: 272 seconds)
2021-01-10 16:34:11 +0100 <__monty__> What if you want to use both the functor and contravariant interfaces though?
2021-01-10 16:34:29 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 16:35:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection)
2021-01-10 16:35:12 +0100Katarushisu(~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net)
2021-01-10 16:36:01 +0100 <merijn> Man...naming modules is too hard >.<
2021-01-10 16:36:14 +0100 <merijn> I need, like, anonymous modules so I don't have to think off reasonable names
2021-01-10 16:37:01 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
2021-01-10 16:38:08 +0100 <nshepperd> Project/Module1.hs
2021-01-10 16:39:23 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 260 seconds)
2021-01-10 16:39:38 +0100 <merijn> Far from module 1, though :p
2021-01-10 16:40:29 +0100 <merijn> More like Module120.hs xD
2021-01-10 16:41:11 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 244 seconds)
2021-01-10 16:44:56 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com)
2021-01-10 16:45:48 +0100 <kuribas> merijn: use a uuid? :-)
2021-01-10 16:48:11 +0100ADG1089__(~aditya@122.163.165.143) (Quit: Konversation terminated!)
2021-01-10 16:50:06 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-01-10 16:50:36 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 16:52:06 +0100ADG1089__(~aditya@122.163.165.143)
2021-01-10 16:52:24 +0100urodna(~urodna@unaffiliated/urodna)
2021-01-10 16:52:52 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-10 16:53:13 +0100mirrorbird(~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d)
2021-01-10 16:54:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 240 seconds)
2021-01-10 16:55:13 +0100knupfer(~Thunderbi@200116b82cc1a700506770fffe608453.dip.versatel-1u1.de)
2021-01-10 16:55:15 +0100knupfer(~Thunderbi@200116b82cc1a700506770fffe608453.dip.versatel-1u1.de) (Client Quit)
2021-01-10 16:55:30 +0100knupfer(~Thunderbi@87.123.206.207)
2021-01-10 16:55:39 +0100 <merijn> Is there a convenient way to "derive" monoid for product types where all fields are monoids?
2021-01-10 16:55:50 +0100cuz(~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891)
2021-01-10 17:00:34 +0100Rudd0(~Rudd0@185.189.115.103)
2021-01-10 17:00:59 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 17:01:31 +0100carlomagno(~cararell@148.87.23.11)
2021-01-10 17:01:47 +0100 <lyxia> semigroups or generic-data or "by hand" using the Monoid instance of the generic Rep mempty = to mempty
2021-01-10 17:02:14 +0100Guest_9(89cd0154@host-137-205-1-84.warwick.ac.uk)
2021-01-10 17:02:20 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 17:03:22 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-01-10 17:03:55 +0100cuz(~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891) ("ERC (IRC client for Emacs 27.1)")
2021-01-10 17:04:59 +0100 <merijn> lyxia: generic-data sounds like "this is gonna be more work than writing out the instance by hand" :p
2021-01-10 17:05:11 +0100 <merijn> I don't really see how semigroups can help?
2021-01-10 17:05:14 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
2021-01-10 17:06:42 +0100juuandyy(~juuandyy@90.166.144.65)
2021-01-10 17:07:18 +0100 <juri_> does the newest GHC still support building it with the "unregistered" backend?
2021-01-10 17:07:38 +0100 <merijn> The release builds don't
2021-01-10 17:07:46 +0100 <merijn> You have to build GHC from source to enable that, afaik
2021-01-10 17:07:55 +0100 <juri_> kk. thanks.
2021-01-10 17:08:10 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-10 17:08:49 +0100christo(~chris@81.96.113.213)
2021-01-10 17:13:22 +0100christo(~chris@81.96.113.213) (Ping timeout: 246 seconds)
2021-01-10 17:13:53 +0100Guest_9(89cd0154@host-137-205-1-84.warwick.ac.uk) (Ping timeout: 248 seconds)
2021-01-10 17:17:30 +0100 <lyxia> merijn: the only thing left in semigroups is Data.Semigroup.Generic
2021-01-10 17:18:08 +0100 <merijn> ah, wait, now I get it
2021-01-10 17:19:27 +0100flux39(2fe3e53b@047-227-229-059.res.spectrum.com)
2021-01-10 17:24:05 +0100machinedgod(~machinedg@24.105.81.50)
2021-01-10 17:24:09 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
2021-01-10 17:27:08 +0100Guest_9(89cd0154@host-137-205-1-84.warwick.ac.uk)
2021-01-10 17:27:24 +0100Guest_9(89cd0154@host-137-205-1-84.warwick.ac.uk) (Client Quit)
2021-01-10 17:27:41 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-01-10 17:29:17 +0100Entertainment(~entertain@104.246.132.210) ()
2021-01-10 17:30:40 +0100Entertainment(~entertain@104.246.132.210)
2021-01-10 17:33:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 17:38:50 +0100cuz(~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891)
2021-01-10 17:39:05 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 240 seconds)
2021-01-10 17:40:31 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2021-01-10 17:40:49 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-10 17:40:49 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-10 17:41:20 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-10 17:44:52 +0100juuandyy(~juuandyy@90.166.144.65) (Read error: Connection reset by peer)
2021-01-10 17:45:12 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-01-10 17:45:49 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-10 17:48:20 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-10 17:48:35 +0100ulidtko|k(~ulidtko@193.111.48.79)
2021-01-10 17:50:30 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Quit: Quit)
2021-01-10 17:50:47 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-01-10 17:52:22 +0100srk(~sorki@gateway/tor-sasl/sorki) (Read error: Connection reset by peer)
2021-01-10 17:52:22 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Read error: Connection reset by peer)
2021-01-10 17:52:22 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Read error: Connection reset by peer)
2021-01-10 17:52:22 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Read error: Connection reset by peer)
2021-01-10 17:52:22 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus) (Read error: Connection reset by peer)
2021-01-10 17:52:23 +0100xelxebar_(~xelxebar@gateway/tor-sasl/xelxebar) (Write error: Connection reset by peer)
2021-01-10 17:52:23 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Write error: Connection reset by peer)
2021-01-10 17:52:23 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Write error: Connection reset by peer)
2021-01-10 17:52:23 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Read error: Connection reset by peer)
2021-01-10 17:52:23 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2021-01-10 17:52:23 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Write error: Connection reset by peer)
2021-01-10 17:52:23 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0) (Write error: Connection reset by peer)
2021-01-10 17:52:23 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Write error: Broken pipe)
2021-01-10 17:52:32 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-01-10 17:52:49 +0100flux39(2fe3e53b@047-227-229-059.res.spectrum.com) (Ping timeout: 248 seconds)
2021-01-10 17:52:56 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-01-10 17:54:33 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Client Quit)
2021-01-10 17:54:38 +0100cuz(~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891) (Ping timeout: 264 seconds)
2021-01-10 17:54:51 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-01-10 17:59:54 +0100 <ski> ij : nope
2021-01-10 18:00:32 +0100jedws(~jedws@121.209.189.201)
2021-01-10 18:01:02 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it)
2021-01-10 18:01:04 +0100jonatanb(~jonatanb@83.24.29.180.ipv4.supernova.orange.pl)
2021-01-10 18:01:57 +0100jonatanb(~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection)
2021-01-10 18:03:38 +0100acidjnk_new(~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-01-10 18:05:10 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds)
2021-01-10 18:05:59 +0100cuz(~user@2601:182:cc02:8b0:955b:4c38:4ff3:a006)
2021-01-10 18:07:20 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-01-10 18:07:39 +0100Tario(~Tario@201.192.165.173)
2021-01-10 18:07:44 +0100kupi(uid212005@gateway/web/irccloud.com/x-dnfwwxqcgyemldny)
2021-01-10 18:09:24 +0100carlomagno(~cararell@148.87.23.11) (Remote host closed the connection)
2021-01-10 18:09:34 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-10 18:10:24 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-10 18:10:49 +0100carlomagno(~cararell@148.87.23.11)
2021-01-10 18:12:06 +0100jollygood2(~bc812391@199.204.85.195)
2021-01-10 18:12:34 +0100 <jollygood2> hi. is there case extension that lets you have same body for more than one match?
2021-01-10 18:12:59 +0100 <Uniaika> jollygood2: maybe use guards?
2021-01-10 18:13:01 +0100 <jollygood2> case x of 1, 2 -> .. _ -> ..
2021-01-10 18:13:18 +0100 <Uniaika> foo x | x `elem` [1,2] = do
2021-01-10 18:13:29 +0100 <Uniaika> | otherwise = stuff
2021-01-10 18:13:34 +0100 <Uniaika> (damnit, one space too much)
2021-01-10 18:13:56 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-01-10 18:14:17 +0100piroule(2fe3e53b@047-227-229-059.res.spectrum.com)
2021-01-10 18:14:19 +0100 <piroule> could somebody walk me through this syntax: newtype One f a = One (f a)
2021-01-10 18:14:23 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2021-01-10 18:14:31 +0100 <piroule> why can't I do "One 3 3"
2021-01-10 18:14:36 +0100 <Uniaika> well
2021-01-10 18:14:48 +0100 <Uniaika> because the "One f a" is the type signature
2021-01-10 18:14:56 +0100 <jollygood2> Uniaika, yeah, that would work. just out of curiosity, there's no such extension? I could swear there was
2021-01-10 18:15:02 +0100 <Uniaika> the "One" constructor actually only takes 1 argument
2021-01-10 18:15:12 +0100 <Uniaika> which is the application of f to a
2021-01-10 18:15:55 +0100 <piroule> so is "f a" a type?
2021-01-10 18:15:57 +0100 <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'
2021-01-10 18:16:01 +0100 <ski> yes
2021-01-10 18:16:11 +0100 <piroule> but One f a is also a type?
2021-01-10 18:16:28 +0100 <Uniaika> piroule: One f a *is* the new type, which has two parameters
2021-01-10 18:16:36 +0100 <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')
2021-01-10 18:16:37 +0100 <Uniaika> jollygood2: ping me if there is
2021-01-10 18:17:05 +0100 <piroule> then why does "One 2" work?
2021-01-10 18:17:16 +0100 <piroule> what would be the f, and what would be the a?
2021-01-10 18:17:22 +0100 <piroule> since I assume (f a) would be Integer
2021-01-10 18:17:56 +0100kuribas(~user@ptr-25vy0i7ug01ndhtx56u.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-01-10 18:17:58 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-10 18:17:59 +0100 <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
2021-01-10 18:18:36 +0100 <ski> @let newtype One f a = MkOne (f a) deriving Show
2021-01-10 18:18:38 +0100 <lambdabot> Defined.
2021-01-10 18:18:47 +0100 <ski> @type MkOne
2021-01-10 18:18:48 +0100 <lambdabot> forall k (f :: k -> *) (a :: k). f a -> One f a
2021-01-10 18:19:05 +0100 <ski> MkOne :: f a -> One f a -- for short
2021-01-10 18:19:26 +0100 <ski> @type MkOne (Just False)
2021-01-10 18:19:27 +0100 <lambdabot> One Maybe Bool
2021-01-10 18:19:35 +0100 <ski> @type MkOne Nothing
2021-01-10 18:19:36 +0100 <lambdabot> One Maybe a
2021-01-10 18:20:10 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-10 18:20:13 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-10 18:20:27 +0100 <piroule> so how does "MkOne 1" fit into all of this
2021-01-10 18:20:43 +0100 <ski> when you used `One 2', then `2' was used (via overloading) to have type `f a'
2021-01-10 18:20:49 +0100 <piroule> or MkOne Just (Just False)
2021-01-10 18:21:00 +0100 <ski> @type MkOne False
2021-01-10 18:21:01 +0100 <idnar> :t MkOne 1
2021-01-10 18:21:02 +0100 <lambdabot> error:
2021-01-10 18:21:02 +0100 <lambdabot> • Couldn't match expected type ‘f a’ with actual type ‘Bool’
2021-01-10 18:21:02 +0100 <lambdabot> • In the first argument of ‘MkOne’, namely ‘False’
2021-01-10 18:21:03 +0100 <lambdabot> forall k (f :: k -> *) (a :: k). Num (f a) => One f a
2021-01-10 18:21:16 +0100 <idnar> oops
2021-01-10 18:21:19 +0100 <ski> @type MkOne (Just (Just False))
2021-01-10 18:21:20 +0100 <lambdabot> One Maybe (Maybe Bool)
2021-01-10 18:22:33 +0100 <ski> numeric literals are overloaded, meaning you can manage to use them as having types that you'd not usually think of as functions
2021-01-10 18:22:44 +0100 <ski> @type 2:3
2021-01-10 18:22:45 +0100 <lambdabot> (Num a, Num [a]) => [a]
2021-01-10 18:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-10 18:22:51 +0100dcbdnl(~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net)
2021-01-10 18:22:56 +0100pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 256 seconds)
2021-01-10 18:23:06 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-10 18:23:13 +0100 <piroule> what is 2:3?
2021-01-10 18:23:23 +0100 <__monty__> A list.
2021-01-10 18:23:59 +0100 <piroule> huh
2021-01-10 18:24:11 +0100 <piroule> thought you need 2:[3] for that
2021-01-10 18:24:24 +0100 <ski> in `2:3', `3' is a list
2021-01-10 18:24:29 +0100 <__monty__> It's because of the overloading ski mentioned.
2021-01-10 18:24:43 +0100 <piroule> doesn't work in my ghci haha
2021-01-10 18:24:47 +0100 <piroule> unless i use FlexibleContexts
2021-01-10 18:25:18 +0100 <ski> piroule : you didn't try it with `:t'
2021-01-10 18:25:23 +0100 <piroule> yeah now i did
2021-01-10 18:25:23 +0100 <piroule> :D
2021-01-10 18:25:28 +0100 <piroule> why's that the case?
2021-01-10 18:25:30 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-01-10 18:25:36 +0100pfurla(~pfurla@64.145.79.190)
2021-01-10 18:25:37 +0100 <piroule> why does a = 2:3 not work while :t (2:3) work?
2021-01-10 18:25:45 +0100 <__monty__> An integer literal is interpreted as `fromInteger 3` (or is it fromIntegral?
2021-01-10 18:25:58 +0100 <ski> (the former)
2021-01-10 18:25:58 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
2021-01-10 18:26:09 +0100 <__monty__> Because 3 can't be interpreted as a list, even with fromInteger.
2021-01-10 18:26:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 18:26:22 +0100 <__monty__> But that's not clear given the types.
2021-01-10 18:26:36 +0100 <__monty__> @type 3
2021-01-10 18:26:38 +0100 <lambdabot> Num p => p
2021-01-10 18:27:49 +0100 <ski> @let instance Num a => Num [a] where (+) = zipWith (+); (-) = zipWith (-); (*) = zipWith (*); negate = map negate; abs = map abs; signum = map signum; fromInteger = repeat . fromInteger
2021-01-10 18:27:51 +0100 <lambdabot> Defined.
2021-01-10 18:27:59 +0100 <ski> > [1,2] + 3
2021-01-10 18:28:02 +0100 <lambdabot> [4,5]
2021-01-10 18:28:09 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 18:28:19 +0100mirrorbird(~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving)
2021-01-10 18:28:37 +0100usr25(~J@216.red-83-58-205.dynamicip.rima-tde.net)
2021-01-10 18:29:26 +0100 <__monty__> That's evil.
2021-01-10 18:29:33 +0100 <__monty__> > 2:3
2021-01-10 18:29:35 +0100 <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...
2021-01-10 18:30:26 +0100 <ski> @let instance Num a => Num (rho -> a) where (+) = liftA2 (+); (-) = liftA2 (-); (*) = liftA2 (*); negate = fmap negate; abs = fmap abs; signum = fmap signum; fromInteger = pure . fromInteger
2021-01-10 18:30:29 +0100 <lambdabot> Defined.
2021-01-10 18:30:31 +0100 <ski> (another classic)
2021-01-10 18:31:14 +0100 <ski> > map (id^2 - id + 1) [-3 .. 3] -- polynomial evaluation
2021-01-10 18:31:14 +0100cuz(~user@2601:182:cc02:8b0:955b:4c38:4ff3:a006) (Ping timeout: 264 seconds)
2021-01-10 18:31:17 +0100 <lambdabot> [13,7,3,1,1,3,7]
2021-01-10 18:32:50 +0100 <ski> > (map . map) (fst^2 - fst*snd + snd^2) [[(x,y) | y <- [-2 .. 2]] | x <- [-2 .. 2]] -- multivariate polynomial
2021-01-10 18:32:52 +0100 <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]]
2021-01-10 18:33:01 +0100Tops2(~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-01-10 18:34:29 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-01-10 18:34:37 +0100guanohhh(uid477762@gateway/web/irccloud.com/x-heviwwoxmanqshwa)
2021-01-10 18:34:40 +0100 <__monty__> Thank you, my noggin is sufficiently broken now.
2021-01-10 18:35:09 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-10 18:35:18 +0100 <ski> @let infixr -:; (-:) :: a -> (Integer -> a) -> (Integer -> a); (x -: xs) 0 = x; (x -: xs) i = xs (i-1)
2021-01-10 18:35:20 +0100 <lambdabot> Defined.
2021-01-10 18:36:01 +0100 <ski> > map (2 -: 3) [0 ..] -- this is analogous to the `2:3' example above. `[a]' corresponding roughly to `Integer -> a'
2021-01-10 18:36:04 +0100 <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...
2021-01-10 18:36:23 +0100 <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)?
2021-01-10 18:36:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-10 18:37:14 +0100 <ski> `[Just Int]' means `[] (Just Int)'. so matching that with `f a' means `f' is `[]' and `a' is `Just Int'
2021-01-10 18:37:27 +0100 <piroule> so what if I had [] [] (Just Int)
2021-01-10 18:37:30 +0100 <piroule> would f still be []?
2021-01-10 18:37:33 +0100 <ski> well, rather with `Maybe' in place of `Just' ..
2021-01-10 18:37:36 +0100 <piroule> is there any chance f could be [] [], for example?
2021-01-10 18:37:44 +0100 <ski> no
2021-01-10 18:37:51 +0100 <piroule> why not?
2021-01-10 18:38:00 +0100 <ski> @kind [] [] (Maybe Int) -- kind error
2021-01-10 18:38:03 +0100 <lambdabot> error:
2021-01-10 18:38:03 +0100 <lambdabot> • Expected kind ‘* -> k0’, but ‘[] []’ has kind ‘*’
2021-01-10 18:38:03 +0100 <lambdabot> • In the type ‘[] [] (Maybe Int)’
2021-01-10 18:38:15 +0100 <ski> @kind [] ([] (Maybe Int)) -- this is ok
2021-01-10 18:38:17 +0100 <lambdabot> *
2021-01-10 18:38:37 +0100 <piroule> is it because functions only take 1 argument?
2021-01-10 18:38:43 +0100 <ski> `[] [] T' doesn't make sense, since the list type constructor `[]' doesn't take (curriedly) two parameters, it only takes one
2021-01-10 18:39:18 +0100jmchael(~jmchael@87.112.235.234)
2021-01-10 18:40:07 +0100 <idnar> you could do `type LL x = [[x]]` I think
2021-01-10 18:40:55 +0100 <ski> yes. but you couldn't say `One LL Int'
2021-01-10 18:41:54 +0100 <idnar> @let type LL x = [[x]]
2021-01-10 18:41:54 +0100avdb(~avdb@gateway/tor-sasl/avdb)
2021-01-10 18:41:56 +0100 <lambdabot> Defined.
2021-01-10 18:42:35 +0100 <idnar> @kind One LL Int
2021-01-10 18:42:36 +0100 <lambdabot> error:
2021-01-10 18:42:37 +0100 <lambdabot> The type synonym ‘LL’ should have 1 argument, but has been given none
2021-01-10 18:42:49 +0100 <idnar> ah yes
2021-01-10 18:43:22 +0100 <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'
2021-01-10 18:43:36 +0100Sgeo_(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-10 18:44:07 +0100 <piroule> makes sense, i got that example from a book :)
2021-01-10 18:44:09 +0100 <ski> @let type Teice f a = f (f a)
2021-01-10 18:44:11 +0100 <lambdabot> Defined.
2021-01-10 18:44:20 +0100 <ski> @let type Twice f a = f (f a) -- er, typo
2021-01-10 18:44:22 +0100 <lambdabot> Defined.
2021-01-10 18:44:35 +0100 <ski> @kind Twice LL Bool
2021-01-10 18:44:36 +0100 <lambdabot> *
2021-01-10 18:45:24 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 260 seconds)
2021-01-10 18:47:46 +0100 <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)
2021-01-10 18:50:40 +0100cuz(~user@c-24-2-210-18.hsd1.ma.comcast.net)
2021-01-10 18:50:47 +0100 <piroule> so are `newtype Identity a = MkIdentity { runIdentity :: a }`` and `newtype Identity a = MkIdentity a`equivalent?
2021-01-10 18:51:36 +0100UpstreamSalmon(uid12077@gateway/web/irccloud.com/x-rexnvewnzxxthgrm)
2021-01-10 18:52:06 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-10 18:52:28 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-01-10 18:52:46 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 246 seconds)
2021-01-10 18:53:07 +0100Tario(~Tario@201.192.165.173)
2021-01-10 18:56:01 +0100Guest43451(~textual@mskresolve-a.mskcc.org) (Ping timeout: 264 seconds)
2021-01-10 18:56:27 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-upuqeneqybvqnswn)
2021-01-10 18:57:07 +0100 <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
2021-01-10 18:57:14 +0100 <ski> runIdentity :: Identity a -> a
2021-01-10 18:57:23 +0100 <ski> runIdentity (MkIdentity x) = x
2021-01-10 18:58:12 +0100 <piroule> so why would you ever want to use the latter
2021-01-10 18:59:41 +0100 <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)
2021-01-10 19:00:20 +0100 <ski> piroule : often there's no real need to bother with record syntax (including having to think up names for fields)
2021-01-10 19:04:55 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-10 19:08:07 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
2021-01-10 19:08:15 +0100mirrorbird(~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d)
2021-01-10 19:09:05 +0100conal(~conal@209.58.133.168) (Ping timeout: 240 seconds)
2021-01-10 19:09:13 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 264 seconds)
2021-01-10 19:10:39 +0100conal(~conal@ip-66-115-176-156.creativelink.net)
2021-01-10 19:11:35 +0100conal(~conal@ip-66-115-176-156.creativelink.net) (Client Quit)
2021-01-10 19:12:03 +0100albel727(~albel727@unaffiliated/albel727)
2021-01-10 19:12:07 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-10 19:12:52 +0100Alleria(~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com)
2021-01-10 19:13:16 +0100AlleriaGuest19797
2021-01-10 19:13:59 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-10 19:16:29 +0100conal(~conal@212.102.44.51)
2021-01-10 19:16:42 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2021-01-10 19:20:07 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2021-01-10 19:20:18 +0100 <piroule> can you unwrap an applicative?
2021-01-10 19:20:42 +0100 <piroule> the opposite of "pure"
2021-01-10 19:21:21 +0100 <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)`
2021-01-10 19:21:38 +0100 <piroule> here f and g are applicatives, but not necessarily monads
2021-01-10 19:21:39 +0100 <koz_> piroule: Not in general.
2021-01-10 19:21:55 +0100 <koz_> But in this case, you don't need to.
2021-01-10 19:22:31 +0100 <piroule> hmm my thought process is, if we could unwrap the first two arguments, apply <*>, then apply a pure, it would work
2021-01-10 19:22:35 +0100 <piroule> but there's no way to unwrap here?
2021-01-10 19:22:44 +0100 <koz_> piroule: No, but you don't need to.
2021-01-10 19:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-10 19:22:50 +0100 <koz_> Think less of wrappers, more of interfaces.
2021-01-10 19:23:00 +0100 <koz_> Applicative is an interface, and one capable 100% of describing what you want.
2021-01-10 19:23:06 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-10 19:23:09 +0100 <koz_> Here's a little warmup exercise for you.
2021-01-10 19:23:35 +0100 <koz_> Can you write an Applicative instance for 'newtype AppComp f g a = AppComp (f (g a))'?
2021-01-10 19:23:57 +0100 <koz_> Start with Functor, it'll give you a clue.
2021-01-10 19:24:03 +0100 <piroule> yeah that's what i was trying to do :P
2021-01-10 19:24:07 +0100MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Quit 啾)
2021-01-10 19:24:19 +0100 <piroule> well my functor is: `fmap f (MkCompose fga) = MkCompose $ (fmap . fmap) f fga`
2021-01-10 19:24:33 +0100 <piroule> and my pure is `pure a = MkCompose $ (pure . pure) a`
2021-01-10 19:24:42 +0100 <piroule> but i'm stuck on the `(<*>)`
2021-01-10 19:24:51 +0100 <koz_> OK, cool.
2021-01-10 19:24:59 +0100 <piroule> i'm not sure how i should be thinking through this
2021-01-10 19:25:01 +0100 <koz_> You have the right idea.
2021-01-10 19:25:11 +0100 <koz_> Basically, you have effs <*> exes = _
2021-01-10 19:25:19 +0100 <koz_> Now, you only have fmap, pure, <*> to work with.
2021-01-10 19:25:26 +0100MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru)
2021-01-10 19:25:28 +0100 <koz_> So the only possible choice here is <*>
2021-01-10 19:25:32 +0100 <koz_> So what you do in GHC is
2021-01-10 19:25:36 +0100 <koz_> s/in/with/
2021-01-10 19:25:40 +0100 <ski> you want a (possibly large) hint ?
2021-01-10 19:25:43 +0100 <koz_> effs <*> exes = _ <*> _
2021-01-10 19:25:53 +0100 <koz_> Then see what GHC suggests as types for those holes.
2021-01-10 19:26:07 +0100 <piroule> what's that thing to the right?
2021-01-10 19:26:10 +0100 <koz_> Like, basically, the process is 'start with hole, fill hole, repeat until no hole'.
2021-01-10 19:26:16 +0100 <koz_> Typed holes.
2021-01-10 19:26:18 +0100 <koz_> Use them.
2021-01-10 19:26:21 +0100 <koz_> Early and often.
2021-01-10 19:26:31 +0100 <ski> piroule : asking GHC for what types of expressions it expects, in place of those `_'s
2021-01-10 19:26:35 +0100 <koz_> You need to use <*> somewhere.
2021-01-10 19:26:42 +0100 <koz_> And effs and exes go into those holes somehow.
2021-01-10 19:26:43 +0100 <ski> (directly, or indirectly)
2021-01-10 19:26:45 +0100 <koz_> Possibly with more stuff.
2021-01-10 19:26:56 +0100 <koz_> In fact, you can probably do better.
2021-01-10 19:26:56 +0100 <piroule> am i doing this correctly? `(MkCompose f) <*> (MkCompose a) = MkCompose $ f <*> a = _ <*> _`
2021-01-10 19:27:02 +0100 <koz_> No.
2021-01-10 19:27:13 +0100 <ski> (those brackets are redundant)
2021-01-10 19:27:21 +0100 <koz_> (also that)
2021-01-10 19:27:23 +0100 <ski> you only want a single `='
2021-01-10 19:27:30 +0100 <koz_> But yeah, ski can give you a possibly large hint.
2021-01-10 19:28:12 +0100 <piroule> i do kind of want to learn the process for figuring out things like this rather than just get to the answer
2021-01-10 19:28:35 +0100 <ski> "follow the types" is good general advice
2021-01-10 19:28:36 +0100 <piroule> so where does the typed hole go?
2021-01-10 19:28:49 +0100 <koz_> How I would start is thus:
2021-01-10 19:28:52 +0100 <piroule> now i have: `MkCompose f <*> MkCompose a = MkCompose $ f <*> a`
2021-01-10 19:29:02 +0100 <ski> MkCompose iab <*> MkCompose ia = MkCompose (_ <*> _)
2021-01-10 19:29:03 +0100 <piroule> but i'm not sure how to inject a hole
2021-01-10 19:29:14 +0100Katarushisu(~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) (Ping timeout: 256 seconds)
2021-01-10 19:29:16 +0100 <koz_> MkCompose fs <*> Mkcompose xs = MkCompose (_ fs <*> _ xs)
2021-01-10 19:29:19 +0100 <ski> (is what koz_ meant you could try)
2021-01-10 19:29:23 +0100 <koz_> And see what types the holes suggest
2021-01-10 19:29:38 +0100 <koz_> Then think 'do I have anything available to me that might give me what I need here'.
2021-01-10 19:29:46 +0100 <koz_> You may need to add more holes, rearrange, etc.
2021-01-10 19:29:48 +0100shailangsa(~shailangs@host217-39-45-247.range217-39.btcentralplus.com) (Ping timeout: 256 seconds)
2021-01-10 19:29:51 +0100 <ski> yea, that variant is useful if you suspect you should use `fs' for the left operand, and `xs' for the right one
2021-01-10 19:29:53 +0100 <koz_> But yeah, 'follow the types' gets you extremely far.
2021-01-10 19:30:13 +0100 <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?
2021-01-10 19:30:22 +0100 <koz_> idnar: Probably.
2021-01-10 19:30:26 +0100 <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)
2021-01-10 19:30:30 +0100 <koz_> Generally <> on Text is not terribly efficient.
2021-01-10 19:31:49 +0100 <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
2021-01-10 19:32:03 +0100 <idnar> (NOINLINE on two trivial fns saves 15 GB memory at compile time)
2021-01-10 19:32:39 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2021-01-10 19:32:43 +0100 <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)'
2021-01-10 19:33:57 +0100 <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)
2021-01-10 19:35:24 +0100sphalerite(~sphalerit@NixOS/user/lheckemann) (Quit: WeeChat 2.6)
2021-01-10 19:35:35 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-10 19:36:52 +0100 <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
2021-01-10 19:36:57 +0100 <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?
2021-01-10 19:37:22 +0100matryoshka(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-10 19:37:32 +0100vappend(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-10 19:37:43 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-10 19:37:45 +0100 <kyali> (possibly a dumb question :P)
2021-01-10 19:38:22 +0100neiluj(~jco@unaffiliated/neiluj) (Quit: leaving)
2021-01-10 19:38:48 +0100 <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
2021-01-10 19:39:01 +0100 <piroule> but g (a -> b) can't be unified with a' -> b'
2021-01-10 19:39:07 +0100pfurla(~pfurla@64.145.79.190) (Ping timeout: 265 seconds)
2021-01-10 19:39:11 +0100 <merijn> kyali: Normally you'd have parents refering to children, instead of the other way. Any reason why children need to refer to parents?
2021-01-10 19:40:02 +0100knupfer(~Thunderbi@87.123.206.207) (Ping timeout: 272 seconds)
2021-01-10 19:40:26 +0100skiidly wonders whether kyali wants a zipper
2021-01-10 19:40:52 +0100 <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
2021-01-10 19:41:23 +0100 <kyali> it seems obvious that i'm not getting something here :) i'd like to learn
2021-01-10 19:42:17 +0100 <ski> piroule : want that hint, yet ?
2021-01-10 19:42:21 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-01-10 19:43:10 +0100 <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 ?
2021-01-10 19:45:24 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-10 19:45:37 +0100 <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.
2021-01-10 19:46:34 +0100 <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
2021-01-10 19:46:53 +0100sphalerite(~sphalerit@NixOS/user/lheckemann)
2021-01-10 19:47:12 +0100 <kyali> which is okay as well i guess. Is there something wrong with my reasoning?
2021-01-10 19:47:58 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-10 19:48:45 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-10 19:48:48 +0100 <c_wraith> not as such. It's just missing the consequences of bi-directional linkage in an immutable setting
2021-01-10 19:49:09 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-10 19:49:17 +0100 <kyali> ah, we're getting to the "me not understanding something" part
2021-01-10 19:49:28 +0100 <kyali> can you explain what you mean by this?
2021-01-10 19:49:35 +0100 <ski> it precludes sharing of subtrees off the path, when computing a new tree by updating some node
2021-01-10 19:51:55 +0100khdjh(b0f82516@176.248.37.22)
2021-01-10 19:52:06 +0100 <khdjh> hi
2021-01-10 19:52:17 +0100 <ski> lo
2021-01-10 19:52:31 +0100 <khdjh> what
2021-01-10 19:52:42 +0100shailangsa(~shailangs@host217-39-45-247.range217-39.btcentralplus.com)
2021-01-10 19:52:45 +0100 <kyali> ski: i don't understand what you mean
2021-01-10 19:52:53 +0100 <khdjh> is anyone a hacker
2021-01-10 19:53:36 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 19:54:16 +0100 <ski> khdjh : <http://www.catb.org/jargon/html/H/hacker.html>
2021-01-10 19:54:24 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection)
2021-01-10 19:54:35 +0100 <khdjh> what is it
2021-01-10 19:54:37 +0100 <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.
2021-01-10 19:54:54 +0100 <dsal> khdjh: That's a URL. You can enter it into your browser and learn stuff.
2021-01-10 19:55:04 +0100 <khdjh> ugh
2021-01-10 19:55:43 +0100khdjh(b0f82516@176.248.37.22) (Client Quit)
2021-01-10 19:56:12 +0100 <dsal> Oh man, we were just getting to Functors.
2021-01-10 19:56:54 +0100 <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
2021-01-10 19:57:00 +0100 <ski> to (persistent, rather than ephemeral, making it trivial to do "undo"/"revert transaction")
2021-01-10 19:57:13 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds)
2021-01-10 19:58:03 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-10 19:58:06 +0100 <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)
2021-01-10 19:59:51 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5)
2021-01-10 19:59:53 +0100 <ski> (copying only the path to a node is `O(log(n))', `n' being number of nodes in the tree, assuming it's balanced)
2021-01-10 20:00:30 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-01-10 20:00:45 +0100 <ski> kyali : if you prefer, you can do ephemeral, mutable, trees. which would make it easy to have parent links, if you wanted to
2021-01-10 20:01:18 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 256 seconds)
2021-01-10 20:01:20 +0100 <ski> (but they're more clunky to work with than immutable ones)
2021-01-10 20:01:49 +0100Lord_of_Life_Lord_of_Life
2021-01-10 20:02:07 +0100 <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
2021-01-10 20:02:19 +0100 <kyali> aaah okay. got it!
2021-01-10 20:02:23 +0100jonatanb(~jonatanb@83.24.29.180.ipv4.supernova.orange.pl)
2021-01-10 20:03:20 +0100 <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 :)
2021-01-10 20:03:21 +0100 <c_wraith> alternatively, you might look into libraries intended for working with general graphs
2021-01-10 20:03:23 +0100berberman_(~berberman@unaffiliated/berberman)
2021-01-10 20:04:05 +0100 <kyali> c_wraith: i will surely look up libs for graphs, but not quite yet :)
2021-01-10 20:04:12 +0100 <kyali> thank you both for your help !
2021-01-10 20:04:40 +0100berberman_(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-01-10 20:04:43 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2021-01-10 20:04:48 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2021-01-10 20:05:06 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-10 20:06:19 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2021-01-10 20:06:26 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 20:07:03 +0100jonatanb(~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
2021-01-10 20:07:46 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-10 20:07:53 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-10 20:08:19 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-10 20:09:04 +0100hackyhacker(~hackyhack@213.219.155.62.adsl.dyn.edpnet.net)
2021-01-10 20:09:12 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2021-01-10 20:09:53 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-10 20:10:05 +0100 <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'.
2021-01-10 20:10:15 +0100 <hackyhacker> Can I convert back and forth between these?
2021-01-10 20:10:44 +0100 <Clint> you can
2021-01-10 20:10:54 +0100j3parker1(~j3parker@178.239.168.171) (Remote host closed the connection)
2021-01-10 20:11:01 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 265 seconds)
2021-01-10 20:11:13 +0100 <hackyhacker> with fromIntegral?
2021-01-10 20:11:13 +0100rajivr(uid269651@gateway/web/irccloud.com/x-ctlecoeospidllrd) (Quit: Connection closed for inactivity)
2021-01-10 20:12:32 +0100 <ski> % fromIntegral (2 :: Int) :: Foreign.C.Types.CInt
2021-01-10 20:12:32 +0100 <yahb> ski: 2
2021-01-10 20:15:05 +0100xff0x(~fox@2001:1a81:53b9:9a00:37a2:7e82:f80e:4d9b)
2021-01-10 20:15:32 +0100DavidEichmann(~david@98.27.93.209.dyn.plus.net)
2021-01-10 20:15:35 +0100 <hackyhacker> Thanks I got it working!
2021-01-10 20:17:17 +0100Katarushisu(~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net)
2021-01-10 20:19:56 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-01-10 20:20:17 +0100 <piroule> how do you know when you need parenthesis in haskell
2021-01-10 20:20:38 +0100 <ski> round brackets are for grouping (and for tuples)
2021-01-10 20:21:25 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-01-10 20:21:44 +0100 <piroule> why does (c!!0) (Just 4) not work without either of the pairs of parenthesis
2021-01-10 20:22:11 +0100 <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)
2021-01-10 20:22:26 +0100 <ski> `c' is a list of functions ?
2021-01-10 20:22:29 +0100 <piroule> yeah
2021-01-10 20:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-10 20:22:46 +0100 <piroule> ok so that explains why (c!!0) Just 4 wouldn't work
2021-01-10 20:22:52 +0100 <piroule> but how about c!!0 (Just 4)?
2021-01-10 20:23:06 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-10 20:23:11 +0100 <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)'
2021-01-10 20:23:15 +0100 <dsal> 0 isn't a function?
2021-01-10 20:23:24 +0100 <ski> > 0 2
2021-01-10 20:23:27 +0100 <lambdabot> 0
2021-01-10 20:24:09 +0100 <ski> piroule : so "function application operator has higher precedence than all other (user-definable) operators" (e.g. `!!') is relevant, here
2021-01-10 20:24:28 +0100notzmv(~user@unaffiliated/zmv) (Ping timeout: 246 seconds)
2021-01-10 20:24:29 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
2021-01-10 20:24:30 +0100 <piroule> so a !! b would get parsed as (a) !! (b) always
2021-01-10 20:24:38 +0100 <piroule> unless a and b have !! inside them?
2021-01-10 20:24:40 +0100 <dsal> Wait, 0 *is* a function? That seems confusinig.
2021-01-10 20:24:51 +0100 <geekosaur> looks like a Num instance for functions is in scope
2021-01-10 20:25:09 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection)
2021-01-10 20:25:12 +0100 <ski> depends on whether `a' and `b' are expressions that have some (unprotected by brackets) operator with lower precedence than `!!'
2021-01-10 20:25:39 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2021-01-10 20:25:40 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
2021-01-10 20:25:48 +0100 <piroule> ugh this is so confusing
2021-01-10 20:25:50 +0100 <piroule> ok
2021-01-10 20:26:01 +0100 <piroule> so this is what the infixl things are for
2021-01-10 20:26:10 +0100 <idnar> dsal: ski defined instance Num a => Num (rho -> a) earlier ;)
2021-01-10 20:26:33 +0100 <dsal> Ah. Hard to make that out in lambdabot.
2021-01-10 20:26:45 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Read error: Connection reset by peer)
2021-01-10 20:26:52 +0100niekvandepas(~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599)
2021-01-10 20:27:14 +0100 <idnar> > (0 :: _) 2
2021-01-10 20:27:19 +0100ThaDon(~ThaDon@185.103.96.147)
2021-01-10 20:27:20 +0100 <lambdabot> e
2021-01-10 20:27:46 +0100 <idnar> what
2021-01-10 20:27:50 +0100 <dsal> thanks, lambdabot
2021-01-10 20:27:54 +0100xff0x(~fox@2001:1a81:53b9:9a00:37a2:7e82:f80e:4d9b) (Ping timeout: 246 seconds)
2021-01-10 20:28:13 +0100 <idnar> @type (0 :: _) 2
2021-01-10 20:28:15 +0100 <lambdabot> error:
2021-01-10 20:28:15 +0100 <lambdabot> • Found type wildcard ‘_’ standing for ‘Integer -> t’
2021-01-10 20:28:15 +0100 <lambdabot> Where: ‘t’ is a rigid type variable bound by
2021-01-10 20:28:39 +0100 <idnar> ah no good
2021-01-10 20:30:51 +0100 <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 `+')
2021-01-10 20:31:34 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2021-01-10 20:33:05 +0100knupfer(~Thunderbi@200116b82cc1a70028416ffffeb8b3d8.dip.versatel-1u1.de)
2021-01-10 20:33:28 +0100conal(~conal@212.102.44.51) (Quit: Computer has gone to sleep.)
2021-01-10 20:34:03 +0100knupfer(~Thunderbi@200116b82cc1a70028416ffffeb8b3d8.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-10 20:34:16 +0100knupfer(~Thunderbi@200116b82cc1a700e1e3928e496d3019.dip.versatel-1u1.de)
2021-01-10 20:34:39 +0100conal(~conal@212.102.44.51)
2021-01-10 20:34:52 +0100conal(~conal@212.102.44.51) (Client Quit)
2021-01-10 20:39:50 +0100notzmv(~user@unaffiliated/zmv)
2021-01-10 20:41:48 +0100fendor_fendor
2021-01-10 20:42:46 +0100acowley(~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
2021-01-10 20:42:46 +0100knupfer(~Thunderbi@200116b82cc1a700e1e3928e496d3019.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
2021-01-10 20:43:40 +0100antalsz(~antalsz@68.175.130.216)
2021-01-10 20:44:00 +0100conal_(~conal@185.247.70.252)
2021-01-10 20:45:44 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-01-10 20:46:18 +0100 <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
2021-01-10 20:46:40 +0100charukiewicz(~quassel@irouteince04.i.subnet.rcn.com)
2021-01-10 20:46:44 +0100hackyhacker(~hackyhack@213.219.155.62.adsl.dyn.edpnet.net) (Ping timeout: 260 seconds)
2021-01-10 20:48:00 +0100hackyhacker(~hackyhack@213.219.155.62.adsl.dyn.edpnet.net)
2021-01-10 20:48:38 +0100 <merijn> antalsz: Not sure if there's a good way to disable it per-package atm
2021-01-10 20:49:25 +0100 <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
2021-01-10 20:49:58 +0100 <dcoutts> antalsz: if you don't use --enable-documentation, you can still build docs for your current package using cabal haddock
2021-01-10 20:50:14 +0100ph88(~ph88@ip5f5af71a.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2021-01-10 20:50:16 +0100 <c_wraith> I feel like both of those responses miss the point entirely :P
2021-01-10 20:50:27 +0100 <merijn> c_wraith: How so?
2021-01-10 20:50:42 +0100 <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
2021-01-10 20:50:53 +0100 <c_wraith> I get the impression antalsz wants haddocks for all the dependencies
2021-01-10 20:51:04 +0100 <merijn> c_wraith: How does that conflict with my response?
2021-01-10 20:51:47 +0100 <merijn> (Granted, I'm not sure it *works*, but hey!)
2021-01-10 20:51:51 +0100 <monochrom> For fine-grained control, either direction, it is cabal.project.
2021-01-10 20:52:00 +0100 <antalsz> merijn: It does work!
2021-01-10 20:52:03 +0100 <merijn> \o/
2021-01-10 20:52:04 +0100 <monochrom> (And if cabal.project doesn't do it, nothing does.)
2021-01-10 20:52:14 +0100 <antalsz> (I happened to already have a cabal.project file, so that was easier)
2021-01-10 20:52:34 +0100 <dcoutts> antalsz: ok, then specify exactly what you want in the cabal.project (or .local) file:
2021-01-10 20:52:35 +0100 <dcoutts> package *
2021-01-10 20:52:35 +0100 <dcoutts> documentation: True
2021-01-10 20:52:36 +0100 <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
2021-01-10 20:52:40 +0100 <antalsz> but it would be nice to be able to specify that on the command line
2021-01-10 20:52:57 +0100 <merijn> dcoutts: That'd build stuff for the current package too, no?
2021-01-10 20:53:00 +0100 <dcoutts> antalsz: and for your local package, specify documentation: False
2021-01-10 20:53:12 +0100 <dcoutts> so provide the default * and then specific named local packages
2021-01-10 20:53:23 +0100 <antalsz> can I specify multiple cabal.project files on the command line?
2021-01-10 20:53:24 +0100 <merijn> dcoutts: Isn't that the same as "documentation: True" globally and then override per package like I suggested? :p
2021-01-10 20:53:38 +0100 <antalsz> just trying to think about ways I could switch between the two build approaches
2021-01-10 20:53:38 +0100 <merijn> antalsz: No, but you can add "mixin" info in cabal.project.local
2021-01-10 20:53:44 +0100 <dcoutts> merijn: but you generally have lots of deps
2021-01-10 20:53:56 +0100 <merijn> dcoutts: I generally want docs for everything I use :p
2021-01-10 20:54:23 +0100 <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
2021-01-10 20:55:02 +0100 <monochrom> --project-file=FILE exists
2021-01-10 20:55:16 +0100 <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
2021-01-10 20:55:33 +0100 <antalsz> so I have a one-package project with a cabal.project file
2021-01-10 20:55:47 +0100SlashLife(~slashlife@stienen.name) (Read error: Connection reset by peer)
2021-01-10 20:55:54 +0100 <antalsz> and then cabal will also pick up cabal.project.local and take the union of the two, basically?
2021-01-10 20:56:06 +0100 <merijn> yes
2021-01-10 20:56:31 +0100 <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
2021-01-10 20:56:51 +0100Varis(~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
2021-01-10 20:57:38 +0100hackyhacker(~hackyhack@213.219.155.62.adsl.dyn.edpnet.net) (Ping timeout: 256 seconds)
2021-01-10 20:57:56 +0100 <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
2021-01-10 20:58:00 +0100acidjnk_new(~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de)
2021-01-10 20:58:01 +0100 <antalsz> True! :-)
2021-01-10 20:59:14 +0100avdb(~avdb@gateway/tor-sasl/avdb) (Remote host closed the connection)
2021-01-10 21:00:36 +0100 <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
2021-01-10 21:00:56 +0100 <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
2021-01-10 21:01:15 +0100 <antalsz> Ideally I’d like --also-project-file or --local-project-file options
2021-01-10 21:02:37 +0100 <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
2021-01-10 21:02:51 +0100 <merijn> antalsz: Note that as dcoutts pointed out you can use "cabal haddock" to generate docs even without documentation on :p
2021-01-10 21:03:02 +0100ph88(~ph88@ip5f5af71a.dynamic.kabel-deutschland.de)
2021-01-10 21:03:04 +0100ubert(~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-10 21:03:32 +0100 <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
2021-01-10 21:05:02 +0100gproto23(~gproto23@unaffiliated/gproto23)
2021-01-10 21:06:11 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 21:07:29 +0100Sgeo_(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-10 21:09:01 +0100SlashLife(~slashlife@stienen.name)
2021-01-10 21:09:18 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-10 21:10:45 +0100UpstreamSalmon(uid12077@gateway/web/irccloud.com/x-rexnvewnzxxthgrm) (Quit: Connection closed for inactivity)
2021-01-10 21:12:38 +0100xff0x(~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f)
2021-01-10 21:12:45 +0100cuz(~user@c-24-2-210-18.hsd1.ma.comcast.net) (Ping timeout: 240 seconds)
2021-01-10 21:14:34 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 21:14:40 +0100alx741(~alx741@181.196.69.216) (Quit: alx741)
2021-01-10 21:14:43 +0100ubert(~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-10 21:14:44 +0100knupfer(~Thunderbi@200116b82cc1a70018a8c3fffe3846d9.dip.versatel-1u1.de)
2021-01-10 21:14:45 +0100knupfer(~Thunderbi@200116b82cc1a70018a8c3fffe3846d9.dip.versatel-1u1.de) (Client Quit)
2021-01-10 21:15:02 +0100knupfer(~Thunderbi@87.123.206.207)
2021-01-10 21:15:03 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-10 21:16:28 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-10 21:16:34 +0100alx741(~alx741@181.196.69.216)
2021-01-10 21:16:47 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-10 21:17:18 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 21:20:42 +0100lawid(~quassel@dslb-090-186-127-244.090.186.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-01-10 21:21:22 +0100gproto23(~gproto23@unaffiliated/gproto23) (Ping timeout: 272 seconds)
2021-01-10 21:22:00 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 272 seconds)
2021-01-10 21:22:45 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-10 21:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-10 21:24:00 +0100pera(pera@gateway/vpn/mullvad/pera) (Ping timeout: 265 seconds)
2021-01-10 21:24:07 +0100usr25(~J@216.red-83-58-205.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2021-01-10 21:24:25 +0100xff0x(~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f) (Ping timeout: 272 seconds)
2021-01-10 21:25:03 +0100shf(~sheaf@2a01:cb19:80cc:7e00:85b4:a3a3:cabb:438d) (Read error: Connection reset by peer)
2021-01-10 21:25:23 +0100pera(pera@gateway/vpn/mullvad/pera)
2021-01-10 21:28:46 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-afbyogyvilwdnzfx)
2021-01-10 21:30:17 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
2021-01-10 21:30:49 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-10 21:31:22 +0100antalsz(~antalsz@68.175.130.216) (Quit: antalsz)
2021-01-10 21:32:02 +0100xff0x_(~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f)
2021-01-10 21:32:59 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-10 21:33:47 +0100usr25(~J@216.red-83-58-205.dynamicip.rima-tde.net)
2021-01-10 21:34:40 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-10 21:36:23 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844)
2021-01-10 21:36:59 +0100tama(~tama@unaffiliated/tama00)
2021-01-10 21:40:53 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 272 seconds)
2021-01-10 21:48:09 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-10 21:51:29 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-10 22:00:09 +0100usr25(~J@216.red-83-58-205.dynamicip.rima-tde.net) (Quit: Bye)
2021-01-10 22:00:41 +0100ubert(~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-10 22:03:16 +0100Codaraxis(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-01-10 22:03:38 +0100cuz(~user@2601:182:cc02:8b0:b1a2:6837:1015:156c)
2021-01-10 22:06:03 +0100ubert(~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-10 22:08:49 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection)
2021-01-10 22:10:57 +0100cuz`(~user@c-24-2-210-18.hsd1.ma.comcast.net)
2021-01-10 22:11:00 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2021-01-10 22:12:38 +0100cuz(~user@2601:182:cc02:8b0:b1a2:6837:1015:156c) (Ping timeout: 264 seconds)
2021-01-10 22:13:04 +0100piroule(2fe3e53b@047-227-229-059.res.spectrum.com) (Quit: Connection closed)
2021-01-10 22:13:48 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-01-10 22:15:58 +0100conal_(~conal@185.247.70.252) (Quit: Computer has gone to sleep.)
2021-01-10 22:16:11 +0100son0p(~son0p@181.136.122.143)
2021-01-10 22:16:21 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2021-01-10 22:16:22 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Quit: Connection closed)
2021-01-10 22:17:51 +0100conal(~conal@185.247.70.252)
2021-01-10 22:17:52 +0100jonatanb(~jonatanb@83.24.29.180.ipv4.supernova.orange.pl)
2021-01-10 22:18:04 +0100conal(~conal@185.247.70.252) (Client Quit)
2021-01-10 22:18:19 +0100cuz`cuz
2021-01-10 22:19:37 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 246 seconds)
2021-01-10 22:19:51 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-01-10 22:22:45 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-10 22:23:06 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-10 22:25:44 +0100jan_lawa_kon(~jan_lawa_@85.148.195.118)
2021-01-10 22:29:44 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-01-10 22:30:31 +0100ADG1089__(~aditya@122.163.165.143) (Remote host closed the connection)
2021-01-10 22:30:42 +0100jonatanb(~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection)
2021-01-10 22:31:24 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-10 22:31:36 +0100jonatanb(~jonatanb@83.24.29.180.ipv4.supernova.orange.pl)
2021-01-10 22:35:01 +0100cuz(~user@c-24-2-210-18.hsd1.ma.comcast.net) (Read error: Connection reset by peer)
2021-01-10 22:36:03 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-10 22:37:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-10 22:38:54 +0100flux488(2fe3e53b@047-227-229-059.res.spectrum.com)
2021-01-10 22:42:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 22:44:16 +0100kyali(~kyali@APN-123-254-27-gprs.simobil.net) (Ping timeout: 240 seconds)
2021-01-10 22:47:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-10 22:48:23 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-01-10 22:49:56 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Ping timeout: 240 seconds)
2021-01-10 22:50:26 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2021-01-10 22:52:27 +0100jan_lawa_kon(~jan_lawa_@85.148.195.118) (Quit: Leaving)
2021-01-10 22:54:05 +0100coot(~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl)
2021-01-10 22:58:01 +0100cohn(~noone@unaffiliated/cohn) ()
2021-01-10 22:58:45 +0100 <troydm> how can I reinstall same version of a package using haskell
2021-01-10 22:58:52 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Quit: ->)
2021-01-10 22:58:59 +0100 <troydm> basicly I want to test if a patch works or not
2021-01-10 22:59:16 +0100 <troydm> but installing via cabal install --lib seems to do nothing
2021-01-10 22:59:33 +0100 <troydm> as if a prev version of library is still cached somewhere
2021-01-10 23:02:05 +0100conal(~conal@64.71.133.70)
2021-01-10 23:04:36 +0100ulidtko|k(~ulidtko@193.111.48.79) (Ping timeout: 272 seconds)
2021-01-10 23:04:46 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds)
2021-01-10 23:06:38 +0100conal_(~conal@66.115.176.210)
2021-01-10 23:06:50 +0100conal(~conal@64.71.133.70) (Ping timeout: 256 seconds)
2021-01-10 23:07:19 +0100_xor(~xor@74.215.46.133) (Ping timeout: 260 seconds)
2021-01-10 23:08:04 +0100vnz_(~vnz@51.15.143.225)
2021-01-10 23:08:47 +0100vnz(~vnz@unaffiliated/vnz) (Ping timeout: 260 seconds)
2021-01-10 23:08:47 +0100vnz_vnz
2021-01-10 23:08:47 +0100vnz(~vnz@51.15.143.225) (Changing host)
2021-01-10 23:08:47 +0100vnz(~vnz@unaffiliated/vnz)
2021-01-10 23:08:55 +0100_xor(~xor@74.215.46.133)
2021-01-10 23:09:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 23:10:45 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-01-10 23:11:52 +0100 <__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?
2021-01-10 23:13:12 +0100ogamita(~t@2a01cb04063ec500d4be9ffe0c684211.ipv6.abo.wanadoo.fr)
2021-01-10 23:13:26 +0100Codaraxis_(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2021-01-10 23:13:43 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 260 seconds)
2021-01-10 23:14:21 +0100tama1(~tama@unaffiliated/tama00)
2021-01-10 23:15:04 +0100jollygood2(~bc812391@199.204.85.195) (Quit: CGI:IRC (Session timeout))
2021-01-10 23:16:45 +0100Codaraxis(Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 240 seconds)
2021-01-10 23:16:47 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-01-10 23:17:37 +0100tama(~tama@unaffiliated/tama00) (Ping timeout: 264 seconds)
2021-01-10 23:17:45 +0100knupfer(~Thunderbi@87.123.206.207) (Read error: Connection reset by peer)
2021-01-10 23:17:50 +0100knupfer1(~Thunderbi@200116b82cc1a70035317a44b98a01a5.dip.versatel-1u1.de)
2021-01-10 23:18:14 +0100bi_functor(~bi_functo@192-0-134-138.cpe.teksavvy.com)
2021-01-10 23:18:29 +0100 <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)
2021-01-10 23:19:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 23:21:12 +0100mirrorbird(~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving)
2021-01-10 23:21:43 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-10 23:22:28 +0100knupfer1(~Thunderbi@200116b82cc1a70035317a44b98a01a5.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-01-10 23:24:22 +0100fendor(~fendor@91.141.0.240.wireless.dyn.drei.com) (Remote host closed the connection)
2021-01-10 23:24:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-10 23:25:32 +0100 <dmj`> the happy user guide on info files is a little sparse https://www.haskell.org/happy/doc/html/sec-info-files.html
2021-01-10 23:25:52 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2021-01-10 23:26:15 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-10 23:27:54 +0100mirrorbird(~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d)
2021-01-10 23:28:16 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
2021-01-10 23:28:24 +0100 <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
2021-01-10 23:28:56 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
2021-01-10 23:30:39 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-01-10 23:31:18 +0100 <MarcelineVQ> I like that stack egged on improvements for cabal-install
2021-01-10 23:33:26 +0100 <Lycurgus> it broke the treadmill of slippery and forced breakage itself by allowing setting the hs level/version
2021-01-10 23:33:32 +0100 <troydm> MarcelineVQ: yeah I see these already, haven't looked into cabal underneath for a long time since started using stack
2021-01-10 23:33:43 +0100 <troydm> so was not aware of changes
2021-01-10 23:34:59 +0100 <Lycurgus> nothing innovative about it, every major lang has
2021-01-10 23:35:27 +0100 <Lycurgus> eg nvm for js
2021-01-10 23:36:12 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-10 23:37:55 +0100 <dmj`> cabal has come a long way
2021-01-10 23:45:22 +0100guanohhh(uid477762@gateway/web/irccloud.com/x-heviwwoxmanqshwa) (Quit: Connection closed for inactivity)
2021-01-10 23:46:08 +0100cohn(~noone@unaffiliated/cohn)
2021-01-10 23:46:37 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58)
2021-01-10 23:48:02 +0100jonatanb(~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection)
2021-01-10 23:49:29 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt)
2021-01-10 23:55:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-10 23:57:29 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)