2020/12/11

2020-12-11 00:04:03 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2020-12-11 00:04:46 +0100Wuzzy(~Wuzzy@p549c9bc8.dip0.t-ipconnect.de)
2020-12-11 00:05:22 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-12-11 00:05:28 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
2020-12-11 00:05:35 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-11 00:06:04 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Quit: WeeChat 2.8)
2020-12-11 00:07:07 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2020-12-11 00:07:53 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e)
2020-12-11 00:08:12 +0100TimWolla(~timwolla@2a01:4f8:150:6153:beef::6667)
2020-12-11 00:09:15 +0100whatisRT(~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de)
2020-12-11 00:09:54 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
2020-12-11 00:10:11 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-11 00:12:02 +0100ericsagn1(~ericsagne@2405:6580:0:5100:dfb:ab60:926e:6731) (Ping timeout: 264 seconds)
2020-12-11 00:12:07 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-11 00:14:03 +0100 <dsal> TIL you can pass the same Map type between strict and lazy maps.
2020-12-11 00:14:52 +0100neiluj(~jco@unaffiliated/neiluj) (Ping timeout: 256 seconds)
2020-12-11 00:14:59 +0100 <dolio> They're the same type, just different functions, yeah.
2020-12-11 00:15:08 +0100 <dolio> The Functor instance is lazy, too.
2020-12-11 00:16:34 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2020-12-11 00:17:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-11 00:20:40 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 00:22:21 +0100 <dsal> Yeah, that's the magic. So I was abler to fmap a strict map into a knot-tying lazy self-referencing map.
2020-12-11 00:22:44 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-11 00:23:24 +0100ericsagn1(~ericsagne@2405:6580:0:5100:68eb:cd6f:e65f:336b)
2020-12-11 00:23:34 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 00:24:55 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-11 00:26:38 +0100sMuNiX(~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca)
2020-12-11 00:26:55 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 00:27:36 +0100banner(~banner@116-255-17-47.ip4.superloop.com)
2020-12-11 00:27:36 +0100banner(~banner@116-255-17-47.ip4.superloop.com) (Client Quit)
2020-12-11 00:27:59 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-11 00:28:58 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 00:29:16 +0100doct0rhu(~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net)
2020-12-11 00:29:16 +0100 <dolio> It's probably better not to think of the map as strict. The functions are.
2020-12-11 00:29:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 00:30:43 +0100 <dsal> Yeah. I always thought they were two independent things. Makes sense but now I can do things easily I couldn't do before.
2020-12-11 00:30:58 +0100wonko7(~wonko7@lns-bzn-55-82-255-183-4.adsl.proxad.net) (Ping timeout: 256 seconds)
2020-12-11 00:33:45 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-11 00:34:39 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 00:34:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2020-12-11 00:38:01 +0100son0p(~son0p@181.136.122.143) (Quit: leaving)
2020-12-11 00:41:16 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-11 00:43:22 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-11 00:44:19 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-11 00:45:35 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 00:53:52 +0100jedws_(~jedws@121.209.189.201)
2020-12-11 00:54:12 +0100jedws(~jedws@121.209.189.201) (Read error: Connection reset by peer)
2020-12-11 00:58:27 +0100jedws_(~jedws@121.209.189.201) (Ping timeout: 260 seconds)
2020-12-11 00:59:15 +0100Lurkki(54f048f5@esm-84-240-72-245.netplaza.fi) (Ping timeout: 245 seconds)
2020-12-11 01:00:27 +0100lyxia(~lyxia@poisson.chat) (Quit: WeeChat 2.9)
2020-12-11 01:02:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 01:06:30 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
2020-12-11 01:09:20 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 256 seconds)
2020-12-11 01:09:57 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.209)
2020-12-11 01:10:49 +0100dopplergange(~dop@195.158.249.47) (Ping timeout: 260 seconds)
2020-12-11 01:11:37 +0100columbarius(~columbari@87.123.198.202) (Ping timeout: 264 seconds)
2020-12-11 01:12:09 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-12-11 01:12:12 +0100Benzi-Junior(~BenziJuni@88-149-65-135.du.xdsl.is) (Quit: gone)
2020-12-11 01:12:52 +0100columbarius(~columbari@mue-88-130-54-091.dsl.tropolys.de)
2020-12-11 01:15:03 +0100gxt__(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-12-11 01:15:03 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
2020-12-11 01:15:03 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds)
2020-12-11 01:15:03 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2020-12-11 01:15:19 +0100dopplergange(~dop@195.158.249.47)
2020-12-11 01:15:23 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
2020-12-11 01:15:24 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2020-12-11 01:15:24 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds)
2020-12-11 01:15:24 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-11 01:15:43 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2020-12-11 01:15:44 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds)
2020-12-11 01:15:44 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-12-11 01:15:44 +0100skiold(~skiold@gateway/tor-sasl/skiold) (Ping timeout: 240 seconds)
2020-12-11 01:15:44 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2020-12-11 01:15:44 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2020-12-11 01:16:03 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2020-12-11 01:16:03 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds)
2020-12-11 01:16:28 +0100 <Squarism> Thought I was down with function composition. But apparently not
2020-12-11 01:16:36 +0100 <Squarism> :t _1
2020-12-11 01:16:38 +0100 <lambdabot> (Field1 s t a b, Functor f) => (a -> f b) -> s -> f t
2020-12-11 01:16:54 +0100 <Squarism> :t (.)
2020-12-11 01:16:57 +0100 <lambdabot> (b -> c) -> (a -> b) -> a -> c
2020-12-11 01:17:08 +0100 <Squarism> :t _1 . _2
2020-12-11 01:17:10 +0100 <lambdabot> (Field1 s t a1 b1, Functor f, Field2 a1 b1 a2 b2) => (a2 -> f b2) -> s -> f t
2020-12-11 01:17:51 +0100 <Squarism> I cannot really see how that result is achieved
2020-12-11 01:18:14 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds)
2020-12-11 01:19:13 +0100mounty(~mounty@2001:8000:2f59:0:55c2:3b2f:d5d6:95de) (Read error: Connection reset by peer)
2020-12-11 01:19:23 +0100 <Squarism> g . f assumes g takes a result f produces, but however I move the parantheses I cannot make _2 deliver something _1 consumes?
2020-12-11 01:20:00 +0100 <dminuoso> Squarism: As a rough intuition, think of traverse.
2020-12-11 01:20:25 +0100 <dminuoso> traverse f -- will traverse over a given list, right?
2020-12-11 01:20:47 +0100 <Squarism> yes
2020-12-11 01:21:01 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: Lost terminal)
2020-12-11 01:21:35 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 01:21:52 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-11 01:21:54 +0100 <dminuoso> Squarism: And equivalently, how would you traverse over the Int in a `Tree [Int]`?
2020-12-11 01:22:41 +0100 <dminuoso> Or rather, without going that far
2020-12-11 01:22:43 +0100 <dminuoso> look at
2020-12-11 01:22:45 +0100 <dminuoso> % :t traverse
2020-12-11 01:22:45 +0100 <yahb> dminuoso: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
2020-12-11 01:22:46 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2020-12-11 01:22:47 +0100srk(~sorki@gateway/tor-sasl/sorki)
2020-12-11 01:22:48 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-12-11 01:22:56 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2020-12-11 01:23:01 +0100gxt__(~gxt@gateway/tor-sasl/gxt)
2020-12-11 01:23:06 +0100 <Squarism> ive not used traverse a ton (directly). Im just thinking in type terms here, looking at the signature
2020-12-11 01:23:14 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2020-12-11 01:23:15 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-12-11 01:23:16 +0100skiold(~skiold@gateway/tor-sasl/skiold)
2020-12-11 01:23:24 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-11 01:23:59 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2020-12-11 01:24:13 +0100 <dminuoso> Squarism: Ah well, lets continue anyway. So?
2020-12-11 01:24:20 +0100 <Squarism> Sure
2020-12-11 01:24:42 +0100mounty(~mounty@2001:8000:2f59:0:1862:62b5:e626:9d64)
2020-12-11 01:24:43 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2020-12-11 01:25:20 +0100 <dminuoso> Just to avoid confusion, Im awaiting your response here. :)
2020-12-11 01:25:43 +0100 <dminuoso> Oh, maybe that was your response.
2020-12-11 01:25:58 +0100 <dminuoso> So you'd just go `traverse (traverse f)`
2020-12-11 01:26:05 +0100 <dminuoso> Similar to how you'd go `fmap (fmap f)` right?
2020-12-11 01:26:05 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 01:26:07 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2020-12-11 01:26:14 +0100 <Squarism> yeah i mean, im glad for any help understanding. So im down with your approach
2020-12-11 01:26:27 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
2020-12-11 01:26:40 +0100 <dminuoso> Or say, you have a Tree [Int], and you want to fmap over the Int with (+1), how would you do that?
2020-12-11 01:26:55 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2020-12-11 01:27:07 +0100 <dminuoso> (for extra points, use map for the list mapping, and fmap for the tree)
2020-12-11 01:27:10 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer)
2020-12-11 01:27:35 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-11 01:27:52 +0100MOSCOS(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-11 01:28:15 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-12-11 01:28:17 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-11 01:29:19 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-11 01:29:25 +0100 <Squarism> fmap (fmap (+1)) tree ?
2020-12-11 01:29:34 +0100 <dminuoso> looks good
2020-12-11 01:29:43 +0100 <dminuoso> Now replace the correct fmap with `map` for the one that acts on the list
2020-12-11 01:30:35 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-11 01:30:37 +0100 <Squarism> fmap (map (+1)) tree ?
2020-12-11 01:30:49 +0100Tesseraction(~Tesseract@unaffiliated/tesseraction)
2020-12-11 01:30:52 +0100 <dminuoso> Good. Can you refactor that into using function composition?
2020-12-11 01:30:56 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 01:31:05 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds)
2020-12-11 01:31:32 +0100Kronic(~Kronic___@84.203.98.133)
2020-12-11 01:33:01 +0100 <Squarism> not sure how
2020-12-11 01:33:27 +0100 <dminuoso> Oh well, Im just looking for:
2020-12-11 01:33:35 +0100 <dminuoso> (fmap . map) (+1) tree
2020-12-11 01:33:39 +0100 <dminuoso> Make sense so far?
2020-12-11 01:34:19 +0100 <Squarism> oh ok. Sure
2020-12-11 01:34:23 +0100 <dminuoso> If I renamed those mapping functions further, we might get
2020-12-11 01:34:25 +0100 <dminuoso> (treeMap . listMap) (+1) tree
2020-12-11 01:34:36 +0100 <dminuoso> Let's toss everything to the right away, and focus on just this part:
2020-12-11 01:34:39 +0100 <dminuoso> (treeMap . listMap)
2020-12-11 01:35:11 +0100 <dminuoso> Alright, so far so good?
2020-12-11 01:35:21 +0100 <Squarism> yep
2020-12-11 01:35:31 +0100 <dminuoso> Great.
2020-12-11 01:35:39 +0100 <dminuoso> So, traverse works exactly the same
2020-12-11 01:35:41 +0100 <dminuoso> We could have
2020-12-11 01:35:53 +0100 <dminuoso> (treeTraverse . listTraverse) f tree
2020-12-11 01:36:22 +0100 <dminuoso> And then for some choice of `f`, we would map each element to an action, and sequence the actions and write the results back in
2020-12-11 01:36:29 +0100 <dminuoso> For instance:
2020-12-11 01:36:48 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Quit: leaving)
2020-12-11 01:37:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-11 01:37:11 +0100 <dminuoso> % (traverse . traverse) Just [[1,2], [2,3]]
2020-12-11 01:37:11 +0100 <yahb> dminuoso: Just [[1,2],[2,3]]
2020-12-11 01:37:17 +0100 <dminuoso> Squarism: So far so good?
2020-12-11 01:37:48 +0100 <dminuoso> Do you see the theme here? You first specify the thing acting on the "outer layer" first, and on the "inner layer" second in the composition.
2020-12-11 01:37:53 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-11 01:38:13 +0100 <Squarism> yeah
2020-12-11 01:39:02 +0100 <dminuoso> Here comes the cool trick. `traverse . traverse` is the relevant part here. Lens picks what goes in afterwards, and then comes your data structure
2020-12-11 01:39:17 +0100 <dminuoso> So `traverse . traverse` is not just a similar example, it's actually a valid lensy thing, namely a Traversal
2020-12-11 01:39:28 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2020-12-11 01:39:29 +0100 <dminuoso> % [[1,2,3], [2,3,4]] ^.. (traverse.traverse)
2020-12-11 01:39:29 +0100 <yahb> dminuoso: [1,2,3,2,3,4]
2020-12-11 01:39:37 +0100 <Squarism> i know about those view/over
2020-12-11 01:40:06 +0100 <dminuoso> Squarism: What view/over etc does, is it takes this `traverse.traverse`-like construction and then runs it with some functor
2020-12-11 01:40:23 +0100teardown(~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
2020-12-11 01:40:24 +0100 <dminuoso> except, you have:
2020-12-11 01:40:49 +0100 <dminuoso> type Lens s t a b = forall f . Functor f => (a -> f b) -> s -> f t
2020-12-11 01:40:52 +0100 <dminuoso> % :t traverse
2020-12-11 01:40:52 +0100 <yahb> dminuoso: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
2020-12-11 01:41:19 +0100 <dminuoso> Squarism: Ignore the Traversable constraint here. The important difference is that the constraints.
2020-12-11 01:41:29 +0100 <Squarism> ah ok. Im just surprise (.) did something more than I expected to. Like it could see a pattern or simplified the expression?!
2020-12-11 01:41:46 +0100 <dminuoso> What do you think did it simplify?
2020-12-11 01:42:02 +0100 <dminuoso> (Field1 s t a b, Functor f) => (a -> f b) -> s -> f t
2020-12-11 01:42:14 +0100 <dminuoso> Is a function from `(a -> f b)` to `s -> f t`
2020-12-11 01:43:04 +0100 <dminuoso> If we set s ~ t and a ~ b for simplicity, we have:
2020-12-11 01:43:15 +0100 <Squarism> ah ok
2020-12-11 01:43:18 +0100 <dminuoso> (Field1 s s a a, Functor f) => (a -> f a) -> s -> f s
2020-12-11 01:43:28 +0100 <dminuoso> Do you see how you can compose with, say, itself?
2020-12-11 01:44:17 +0100 <dminuoso> It's for the same reason
2020-12-11 01:44:18 +0100 <dminuoso> % :t map
2020-12-11 01:44:18 +0100 <yahb> dminuoso: (a -> b) -> [a] -> [b]
2020-12-11 01:44:23 +0100 <dminuoso> composes with itself
2020-12-11 01:44:24 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-11 01:44:26 +0100 <dminuoso> % :t map . map
2020-12-11 01:44:26 +0100 <yahb> dminuoso: (a -> b) -> [[a]] -> [[b]]
2020-12-11 01:44:31 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-12-11 01:44:45 +0100 <Squarism> it become M a -> M b and M b -> M c
2020-12-11 01:44:50 +0100 <Squarism> So to speak
2020-12-11 01:45:05 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.209) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 01:45:45 +0100 <Squarism> i mean how you structured the functions
2020-12-11 01:46:06 +0100 <dminuoso> I dont understand
2020-12-11 01:46:18 +0100 <Squarism> type M x = k -> j x
2020-12-11 01:47:16 +0100 <Squarism> or no.. =/
2020-12-11 01:48:27 +0100falafel_(~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Remote host closed the connection)
2020-12-11 01:48:53 +0100falafel_(~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
2020-12-11 01:49:12 +0100 <Squarism> ill save this conversation and look through it when im less tired. Im sure it will come to me then
2020-12-11 01:49:19 +0100 <Squarism> dminuoso, thanks for helping
2020-12-11 01:49:23 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2020-12-11 01:49:40 +0100teardown_(~user@gateway/tor-sasl/mrush)
2020-12-11 01:49:57 +0100 <Squarism> but yes, i see how it composes with itself
2020-12-11 01:50:44 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-12-11 01:55:00 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-12-11 01:55:44 +0100 <Squarism> atleast if you think of it in terms of (a -> f a) -> (s -> f s)
2020-12-11 01:58:03 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 260 seconds)
2020-12-11 01:59:51 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds)
2020-12-11 02:01:27 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-12-11 02:03:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 02:04:04 +0100iqubic(~user@2601:602:9500:4870:4825:944d:5fe3:72b9) (Remote host closed the connection)
2020-12-11 02:05:21 +0100heatsink_(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97)
2020-12-11 02:05:41 +0100iqubic(~user@2601:602:9500:4870:32f4:54f1:a1b5:83b8)
2020-12-11 02:07:01 +0100Amras(~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
2020-12-11 02:08:17 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e85f:7c7d:b6c9:7820) (Ping timeout: 258 seconds)
2020-12-11 02:09:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-11 02:10:58 +0100plutoniix(~q@node-uk9.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
2020-12-11 02:13:45 +0100alx741(~alx741@181.196.69.91) (Ping timeout: 240 seconds)
2020-12-11 02:14:05 +0100CMCDragonkai2(~Thunderbi@120.17.47.66)
2020-12-11 02:17:25 +0100machinedgod(~machinedg@24.105.81.50)
2020-12-11 02:17:57 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Read error: Connection reset by peer)
2020-12-11 02:18:42 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-11 02:18:58 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th)
2020-12-11 02:20:16 +0100 <Axman6> :t \x -> (uncurry x `asAppliedTo` (traverse, traverse)) (.)
2020-12-11 02:20:19 +0100 <lambdabot> error:
2020-12-11 02:20:19 +0100 <lambdabot> • Couldn't match expected type ‘((a -> f b) -> t a -> f (t b),
2020-12-11 02:20:19 +0100 <lambdabot> (a1 -> f1 b1) -> t1 a1 -> f1 (t1 b1))’
2020-12-11 02:20:31 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 02:21:13 +0100 <Axman6> :t (\x -> (uncurry x `asAppliedTo` (traverse, traverse))) `asAppliedTo` (.)
2020-12-11 02:21:15 +0100 <lambdabot> (Applicative f, Traversable t1, Traversable t2) => (((t2 a -> f (t2 b)) -> t1 (t2 a) -> f (t1 (t2 b))) -> ((a -> f b) -> t2 a -> f (t2 b)) -> (a -> f b) -> t1 (t2 a) -> f (t1 (t2 b))) -> ((t2 a -> f
2020-12-11 02:21:15 +0100 <lambdabot> (t2 b)) -> t1 (t2 a) -> f (t1 (t2 b)), (a -> f b) -> t2 a -> f (t2 b)) -> (a -> f b) -> t1 (t2 a) -> f (t1 (t2 b))
2020-12-11 02:21:44 +0100 <Axman6> hmm, yep, that'd definitely what I wanted...
2020-12-11 02:22:04 +0100 <Axman6> :t (\x -> (x traverse traverse)) `asAppliedTo` (.)
2020-12-11 02:22:06 +0100 <lambdabot> (Applicative f, Traversable t1, Traversable t2) => (((t2 a -> f (t2 b)) -> t1 (t2 a) -> f (t1 (t2 b))) -> ((a -> f b) -> t2 a -> f (t2 b)) -> (a -> f b) -> t1 (t2 a) -> f (t1 (t2 b))) -> (a -> f b) -
2020-12-11 02:22:06 +0100 <lambdabot> > t1 (t2 a) -> f (t1 (t2 b))
2020-12-11 02:24:01 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-siyupapsmlttvhqm) (Quit: Ping timeout (120 seconds))
2020-12-11 02:24:01 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-qznwsywzudvjynms) (Quit: Ping timeout (120 seconds))
2020-12-11 02:24:52 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-iogrzypdphdyrmwo)
2020-12-11 02:25:49 +0100iqubic(~user@2601:602:9500:4870:32f4:54f1:a1b5:83b8) (Remote host closed the connection)
2020-12-11 02:28:09 +0100Feuermagier(~Feuermagi@213.178.26.41) (Remote host closed the connection)
2020-12-11 02:28:11 +0100alx741(~alx741@181.196.69.196)
2020-12-11 02:28:12 +0100Feuermagier_(~Feuermagi@213.178.26.41)
2020-12-11 02:29:18 +0100 <ep1ctetus> Is there a way to do something like `map` on a list, but remember and use some state in between each value it runs on?
2020-12-11 02:29:41 +0100 <Clint> yes
2020-12-11 02:29:49 +0100 <ep1ctetus> please enlighten me!
2020-12-11 02:30:04 +0100 <Axman6> :t scanr
2020-12-11 02:30:06 +0100 <Axman6> :t scanl
2020-12-11 02:30:06 +0100 <lambdabot> (a -> b -> b) -> b -> [a] -> [b]
2020-12-11 02:30:09 +0100 <lambdabot> (b -> a -> b) -> b -> [a] -> [b]
2020-12-11 02:30:13 +0100lyxia(~lyxia@poisson.chat)
2020-12-11 02:30:18 +0100 <Axman6> hmm, not the one I was after
2020-12-11 02:30:23 +0100iqubic(~user@2601:602:9500:4870:bec7:122b:1c06:a2d0)
2020-12-11 02:30:54 +0100columbarius(~columbari@mue-88-130-54-091.dsl.tropolys.de) (Ping timeout: 258 seconds)
2020-12-11 02:31:19 +0100 <Clint> :t mapAccumL
2020-12-11 02:31:22 +0100 <lambdabot> Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
2020-12-11 02:31:22 +0100 <Clint> :t mapAccumR
2020-12-11 02:31:24 +0100 <lambdabot> Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
2020-12-11 02:31:40 +0100whatisRT(~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de) (Ping timeout: 258 seconds)
2020-12-11 02:31:43 +0100 <Axman6> % :t mapAccumL @[]
2020-12-11 02:31:43 +0100 <yahb> Axman6: (a -> b -> (a, c)) -> a -> [b] -> (a, [c])
2020-12-11 02:32:16 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-11 02:33:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-11 02:33:13 +0100columbarius(~columbari@mue-88-130-54-162.dsl.tropolys.de)
2020-12-11 02:33:21 +0100whatisRT(~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de)
2020-12-11 02:34:15 +0100 <ep1ctetus> ah very cool! thanks so much
2020-12-11 02:34:16 +0100 <Squarism> Axman6, thanks. I guess the above was for me. Ill decipher it later
2020-12-11 02:35:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 02:35:12 +0100st8less(~st8less@inet-167-224-197-181.isp.ozarksgo.net) (Quit: WeeChat 2.9)
2020-12-11 02:35:50 +0100 <Axman6> I'm not sure it made things any clearer - I was hoping for: ((a -> f b) -> s -> f t) -> ((s -> f t) -> p -> f q) -> (a -> f b) -> (p -> f q)
2020-12-11 02:36:01 +0100Kem36(cfac55db@207.172.85.219) (Remote host closed the connection)
2020-12-11 02:37:29 +0100 <dminuoso> mmm, mapAccumR is just traverse with State, isnt it?
2020-12-11 02:37:40 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 02:38:50 +0100CMCDragonkai2(~Thunderbi@120.17.47.66) (Remote host closed the connection)
2020-12-11 02:42:56 +0100Kronic(~Kronic___@84.203.98.133) (Read error: Connection reset by peer)
2020-12-11 02:42:58 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds)
2020-12-11 02:43:29 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-11 02:43:30 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-ctybhcsimuoygovq)
2020-12-11 02:47:16 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
2020-12-11 02:47:30 +0100Lord_of_Life(~Lord@46.217.219.165)
2020-12-11 02:47:54 +0100shailangsa(~shailangs@host86-186-177-155.range86-186.btcentralplus.com) ()
2020-12-11 02:50:05 +0100 <ep1ctetus> Clint dminuoso haha! It works perfectly! Thanks very again
2020-12-11 02:50:23 +0100 <ep1ctetus> Haskell is so satisfying to me once it works
2020-12-11 02:50:31 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 02:50:49 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds)
2020-12-11 02:50:51 +0100vonfry(~user@2001:da8:801b:1010:c0c3:e71d:a844:2faf)
2020-12-11 02:51:16 +0100jmchael(~jmchael@87.112.60.168) (Ping timeout: 240 seconds)
2020-12-11 02:53:16 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2020-12-11 02:53:37 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 02:54:43 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-11 02:55:44 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-11 02:57:08 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035) (Client Quit)
2020-12-11 02:58:25 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net)
2020-12-11 03:00:13 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 265 seconds)
2020-12-11 03:02:37 +0100jespada(~jespada@90.254.245.49)
2020-12-11 03:03:55 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2020-12-11 03:04:56 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.209)
2020-12-11 03:05:01 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2020-12-11 03:06:13 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-11 03:07:04 +0100conal(~conal@64.71.133.70)
2020-12-11 03:07:23 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-11 03:07:49 +0100ep1ctetus(b8bba2a3@gateway/web/cgi-irc/kiwiirc.com/ip.184.187.162.163) (Quit: Connection closed)
2020-12-11 03:08:37 +0100conal(~conal@64.71.133.70)
2020-12-11 03:08:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-11 03:08:57 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-11 03:09:49 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 03:12:10 +0100 <koz_> > mapAccumL (\acc x -> (acc + 1, acc + x)) 0 [1, 2, 3, 4, 5]
2020-12-11 03:12:12 +0100 <lambdabot> (5,[1,3,5,7,9])
2020-12-11 03:12:24 +0100 <koz_> > mapAccumR (\acc x -> (acc + 1, acc + x)) 0 [1, 2, 3, 4, 5]
2020-12-11 03:12:26 +0100 <lambdabot> (5,[5,5,5,5,5])
2020-12-11 03:12:46 +0100 <koz_> Wait wat.
2020-12-11 03:14:50 +0100guest1211(~user@49.5.6.87)
2020-12-11 03:14:54 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 272 seconds)
2020-12-11 03:15:22 +0100 <Squarism> Axman that in itself is pretty clear. Im thinking its made possible because of functional dependencies FieldN?
2020-12-11 03:16:48 +0100 <Squarism> ..or if thats irrelevant?
2020-12-11 03:17:19 +0100xff0x(~fox@2001:1a81:530c:8200:b602:4be0:ca24:7260) (Ping timeout: 272 seconds)
2020-12-11 03:18:27 +0100maop(~maop@185.204.1.185) (Remote host closed the connection)
2020-12-11 03:18:42 +0100xff0x(~fox@2001:1a81:5221:8f00:f974:7952:c764:dde1)
2020-12-11 03:24:24 +0100jlamothe(~jlamothe@198.251.55.207) (Ping timeout: 272 seconds)
2020-12-11 03:25:07 +0100jlamothe(~jlamothe@198.251.55.207)
2020-12-11 03:25:27 +0100sagax(~sagax_nb@213.138.71.146) (Ping timeout: 260 seconds)
2020-12-11 03:26:23 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2020-12-11 03:27:28 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
2020-12-11 03:28:25 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 264 seconds)
2020-12-11 03:28:43 +0100Wuzzy(~Wuzzy@p549c9bc8.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-11 03:29:10 +0100conal(~conal@64.71.133.70)
2020-12-11 03:32:17 +0100klawx3(~klawx3@190.5.32.196)
2020-12-11 03:33:14 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-11 03:34:58 +0100yahb(xsbot@haskell/bot/yahb) (Ping timeout: 256 seconds)
2020-12-11 03:37:10 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-12-11 03:37:58 +0100bstarr(~bstarr@139.28.218.148)
2020-12-11 03:38:22 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2020-12-11 03:39:05 +0100yahb(xsbot@haskell/bot/yahb)
2020-12-11 03:44:33 +0100 <jle`> :t mapAccumR
2020-12-11 03:44:35 +0100 <lambdabot> Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
2020-12-11 03:44:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 03:45:11 +0100 <jle`> :t \f x xs -> runState (traverse (state . flip f) xs) x
2020-12-11 03:45:13 +0100 <lambdabot> Traversable t => (s -> b1 -> (b2, s)) -> s -> t b1 -> (t b2, s)
2020-12-11 03:45:35 +0100 <jle`> little but shuffled around, but yeah
2020-12-11 03:46:23 +0100 <jle`> :t [mapAccumR, \f x xs -> runState (traverse (state . flip f) xs) x]
2020-12-11 03:46:25 +0100 <lambdabot> error:
2020-12-11 03:46:25 +0100 <lambdabot> • Occurs check: cannot construct the infinite type: s ~ t s
2020-12-11 03:46:25 +0100 <lambdabot> Expected type: (s, t s)
2020-12-11 03:46:30 +0100 <jle`> oh yeah, darn
2020-12-11 03:50:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-11 03:52:41 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Remote host closed the connection)
2020-12-11 03:53:17 +0100 <MarcelineVQ> koz_: come back, so jle` can explain how StateL and StateR differen in which side of <*> you pass your initial (and thus subsequent) state to
2020-12-11 03:55:50 +0100shailangsa(~shailangs@host86-186-177-155.range86-186.btcentralplus.com)
2020-12-11 03:55:51 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-12-11 03:58:59 +0100leothrix(~leothrix@elastic/staff/leothrix) (Quit: ZNC 1.7.5 - https://znc.in)
2020-12-11 04:00:22 +0100leothrix(~leothrix@elastic/staff/leothrix)
2020-12-11 04:04:18 +0100jlamothe(~jlamothe@198.251.55.207) (Quit: leaving)
2020-12-11 04:06:12 +0100shailangsa(~shailangs@host86-186-177-155.range86-186.btcentralplus.com) ()
2020-12-11 04:07:09 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 04:08:16 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 258 seconds)
2020-12-11 04:09:25 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 258 seconds)
2020-12-11 04:16:52 +0100ericsagn1(~ericsagne@2405:6580:0:5100:68eb:cd6f:e65f:336b) (Ping timeout: 260 seconds)
2020-12-11 04:17:08 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-12-11 04:17:51 +0100darjeeling_(~darjeelin@122.245.123.202) (Ping timeout: 258 seconds)
2020-12-11 04:20:12 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-11 04:20:40 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-11 04:22:40 +0100jlamothe(~jlamothe@198.251.55.207)
2020-12-11 04:23:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 04:24:44 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-11 04:25:51 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) (Remote host closed the connection)
2020-12-11 04:25:58 +0100alexelcu(~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-11 04:26:20 +0100alexelcu(~alexelcu@142.93.180.198)
2020-12-11 04:26:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003)
2020-12-11 04:26:36 +0100theDon(~td@muedsl-82-207-238-079.citykom.de) (Ping timeout: 240 seconds)
2020-12-11 04:26:46 +0100drbean(~drbean@TC210-63-209-30.static.apol.com.tw)
2020-12-11 04:28:04 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) (Remote host closed the connection)
2020-12-11 04:28:11 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003)
2020-12-11 04:28:44 +0100theDon(~td@muedsl-82-207-238-169.citykom.de)
2020-12-11 04:28:45 +0100lagothrixGuest16180
2020-12-11 04:28:45 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2020-12-11 04:28:45 +0100Guest16180(~lagothrix@unaffiliated/lagothrix) (Killed (orwell.freenode.net (Nickname regained by services)))
2020-12-11 04:28:45 +0100xirhtogallagothrix
2020-12-11 04:29:05 +0100ericsagn1(~ericsagne@2405:6580:0:5100:1672:eb44:5f35:5514)
2020-12-11 04:33:54 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-11 04:34:40 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 04:35:58 +0100jedws(~jedws@121.209.189.201)
2020-12-11 04:38:27 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) (Remote host closed the connection)
2020-12-11 04:40:54 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 04:44:02 +0100hvr(~hvr@haskell/developer/hvr) (Ping timeout: 256 seconds)
2020-12-11 04:44:05 +0100shailangsa(~shailangs@host86-186-177-155.range86-186.btcentralplus.com)
2020-12-11 04:44:50 +0100carlomagno(~cararell@148.87.23.8) (Ping timeout: 272 seconds)
2020-12-11 04:45:44 +0100hvr(~hvr@haskell/developer/hvr)
2020-12-11 04:45:44 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
2020-12-11 04:47:52 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-11 04:50:24 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-11 04:50:39 +0100plutoniix(~q@ppp-223-24-94-125.revip6.asianet.co.th)
2020-12-11 04:50:47 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 04:54:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003)
2020-12-11 04:55:22 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-12-11 04:55:38 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-11 04:58:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-11 04:59:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) (Ping timeout: 264 seconds)
2020-12-11 04:59:53 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
2020-12-11 05:00:08 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-11 05:01:11 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-12-11 05:08:31 +0100johnw(~johnw@haskell/developer/johnw) (Quit: ZNC - http://znc.in)
2020-12-11 05:08:54 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 05:09:49 +0100hvr(~hvr@haskell/developer/hvr) (Ping timeout: 264 seconds)
2020-12-11 05:10:35 +0100hvr(~hvr@haskell/developer/hvr)
2020-12-11 05:13:39 +0100cgfuh(~cgfuh@181.167.191.58) (Quit: WeeChat 2.9)
2020-12-11 05:15:22 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-12-11 05:15:36 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-11 05:19:53 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
2020-12-11 05:20:04 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-12-11 05:20:07 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-12-11 05:21:10 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) ()
2020-12-11 05:21:39 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2020-12-11 05:23:04 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-12-11 05:24:15 +0100aev(~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net)
2020-12-11 05:25:19 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2020-12-11 05:26:03 +0100teardown_(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2020-12-11 05:26:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 05:27:12 +0100shatriff_(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2020-12-11 05:27:46 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2020-12-11 05:31:28 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:6435:e070:2755:fa1e)
2020-12-11 05:31:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-11 05:32:59 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-11 05:33:13 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2020-12-11 05:35:03 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-11 05:35:09 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 05:36:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:6435:e070:2755:fa1e) (Ping timeout: 264 seconds)
2020-12-11 05:37:20 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 05:39:31 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 246 seconds)
2020-12-11 05:42:26 +0100argento(~argent0@168.227.97.29)
2020-12-11 05:43:49 +0100essem(essem@gateway/vpn/privateinternetaccess/essem)
2020-12-11 05:44:35 +0100 <essem> DDDDD=
2020-12-11 05:44:48 +0100essem(essem@gateway/vpn/privateinternetaccess/essem) ()
2020-12-11 05:47:55 +0100essem(essem@gateway/vpn/privateinternetaccess/essem)
2020-12-11 05:49:26 +0100plutoniix(~q@ppp-223-24-94-125.revip6.asianet.co.th) (Quit: Leaving)
2020-12-11 05:52:51 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:6435:e070:2755:fa1e)
2020-12-11 05:52:55 +0100essem(essem@gateway/vpn/privateinternetaccess/essem) (Quit: leaving)
2020-12-11 05:53:05 +0100essem(essem@gateway/vpn/privateinternetaccess/essem)
2020-12-11 05:54:35 +0100vonfry`(~user@23.234.199.184)
2020-12-11 05:55:58 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 05:56:19 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
2020-12-11 05:56:22 +0100vonfry(~user@2001:da8:801b:1010:c0c3:e71d:a844:2faf) (Ping timeout: 258 seconds)
2020-12-11 05:56:46 +0100essem(essem@gateway/vpn/privateinternetaccess/essem) (Client Quit)
2020-12-11 05:56:57 +0100essem(essem@gateway/vpn/privateinternetaccess/essem)
2020-12-11 05:57:10 +0100essem(essem@gateway/vpn/privateinternetaccess/essem) (Client Quit)
2020-12-11 05:57:21 +0100essem(essem@gateway/vpn/privateinternetaccess/essem)
2020-12-11 05:57:31 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:6435:e070:2755:fa1e) (Ping timeout: 258 seconds)
2020-12-11 05:57:43 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
2020-12-11 05:57:54 +0100bitmagie(~Thunderbi@200116b80638310001d2823cf2ef2077.dip.versatel-1u1.de)
2020-12-11 05:59:14 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-11 05:59:44 +0100vonfry`(~user@23.234.199.184) ("ERC (IRC client for Emacs 27.1)")
2020-12-11 06:01:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 06:04:36 +0100StoneToad(~StoneToad@199-167-119-150.ppp.storm.ca) (Ping timeout: 240 seconds)
2020-12-11 06:04:44 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 256 seconds)
2020-12-11 06:05:09 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-11 06:05:32 +0100p8m_(p8m@gateway/vpn/protonvpn/p8m)
2020-12-11 06:05:33 +0100StoneToad(~StoneToad@199-167-119-150.ppp.storm.ca)
2020-12-11 06:05:34 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 258 seconds)
2020-12-11 06:06:04 +0100falafel_(~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Remote host closed the connection)
2020-12-11 06:06:26 +0100nfd(~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net)
2020-12-11 06:07:45 +0100aev(~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net) (Ping timeout: 265 seconds)
2020-12-11 06:13:38 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
2020-12-11 06:14:52 +0100conal(~conal@64.71.133.70)
2020-12-11 06:15:41 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Quit: ERC (IRC client for Emacs 27.1))
2020-12-11 06:16:07 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 06:19:02 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Client Quit)
2020-12-11 06:19:28 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-12-11 06:19:46 +0100SanchayanMaity(~Sanchayan@122.178.233.231)
2020-12-11 06:21:23 +0100conal(~conal@64.71.133.70) (Ping timeout: 260 seconds)
2020-12-11 06:22:28 +0100unlink2(~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-11 06:23:55 +0100unlink2(~unlink2@p5dc0acf8.dip0.t-ipconnect.de)
2020-12-11 06:28:03 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-11 06:28:11 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2020-12-11 06:28:20 +0100 <ezzieyguywuf> is it safe to skip ~/.cabal/store in my backup snapshots?
2020-12-11 06:28:40 +0100 <ezzieyguywuf> i.e. will I still be able to use cabal, or am I better off just skipping ~/.cabal entirely?
2020-12-11 06:29:16 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 06:32:03 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-11 06:33:02 +0100sagax(~sagax_nb@213.138.71.146)
2020-12-11 06:33:59 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
2020-12-11 06:34:05 +0100joeyh_(joeyh@kitenet.net) (Quit: ZNC 1.8.1+deb1 - https://znc.in)
2020-12-11 06:34:44 +0100bandali(znc@fsf/interns/bandali) (Quit: ZNC - https://znc.in)
2020-12-11 06:34:45 +0100PlasmaStar(plasma@unaffiliated/plasmastar) (Quit: ZNC 1.7.3 - https://znc.in)
2020-12-11 06:35:18 +0100bandali(znc@fsf/interns/bandali)
2020-12-11 06:35:21 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.209) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 06:35:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-11 06:36:53 +0100drbean(~drbean@TC210-63-209-30.static.apol.com.tw) (Ping timeout: 260 seconds)
2020-12-11 06:37:28 +0100nshepperd(nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Ping timeout: 260 seconds)
2020-12-11 06:38:11 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2020-12-11 06:39:11 +0100nshepperd(~nshepperd@li364-218.members.linode.com)
2020-12-11 06:39:39 +0100agrif(agrif@overviewer/dev/agrif) (Remote host closed the connection)
2020-12-11 06:39:59 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-11 06:40:02 +0100agrif(agrif@rakeri.net)
2020-12-11 06:40:02 +0100agrif(agrif@rakeri.net) (Changing host)
2020-12-11 06:40:02 +0100agrif(agrif@overviewer/dev/agrif)
2020-12-11 06:40:20 +0100 <monochrom> .cabal/store can be skipped. This just means rebuilding libraries later.
2020-12-11 06:40:23 +0100joeyh(~joeyh@kitenet.net)
2020-12-11 06:40:54 +0100 <monochrom> .cabal/packages can also be skipped. This just means re-downloading Hackage packages later.
2020-12-11 06:41:15 +0100 <monochrom> If you have customized .cabal/config, you will want to save it.
2020-12-11 06:41:23 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-12-11 06:41:43 +0100 <ezzieyguywuf> monochrom: thanks for the input!
2020-12-11 06:42:12 +0100 <monochrom> Also, .cabal/packages has the stuff you got from "cabal update". So just run it again.
2020-12-11 06:42:25 +0100PlasmaStar(plasma@unaffiliated/plasmastar)
2020-12-11 06:42:28 +0100 <ezzieyguywuf> gotcha
2020-12-11 06:43:17 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2020-12-11 06:43:42 +0100 <ddellacosta> "randomly glanced at latest comments in #haskell immediately after signing in and learned something" count now at 53
2020-12-11 06:45:24 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2c68:32a0:f62b:f449)
2020-12-11 06:45:57 +0100acidjnk_new(~acidjnk@p200300d0c719ff053d8846c1390abdcb.dip0.t-ipconnect.de)
2020-12-11 06:50:17 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2c68:32a0:f62b:f449) (Ping timeout: 260 seconds)
2020-12-11 06:51:22 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-11 06:51:30 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 272 seconds)
2020-12-11 06:52:43 +0100klawx3(~klawx3@190.5.32.196) (Remote host closed the connection)
2020-12-11 06:53:28 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2020-12-11 06:55:07 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
2020-12-11 06:57:01 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-11 06:57:59 +0100monochrom(trebla@216.138.220.146)
2020-12-11 07:00:31 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2020-12-11 07:00:54 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2020-12-11 07:02:21 +0100russruss84(~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat)
2020-12-11 07:04:39 +0100perry69420(7aa1d004@122.161.208.4)
2020-12-11 07:05:04 +0100russruss84(~russruss@my.russellmcc.com)
2020-12-11 07:05:26 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d)
2020-12-11 07:06:13 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-11 07:06:18 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2020-12-11 07:08:18 +0100jpcooper(~user@unaffiliated/jpcooper)
2020-12-11 07:08:32 +0100 <jpcooper> Hello. Have there been any attempts at making an equivalent of the C++ STL for the ST monad?
2020-12-11 07:09:31 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-11 07:09:32 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-11 07:09:44 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2020-12-11 07:10:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 07:11:08 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-11 07:11:09 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2020-12-11 07:11:26 +0100hololeap(~hololeap@unaffiliated/hololeap)
2020-12-11 07:11:37 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-11 07:11:56 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2020-12-11 07:12:17 +0100nineonine(~nineonine@50.216.62.2)
2020-12-11 07:12:21 +0100 <hyiltiz> jpcooper: not quite sure what u mean by "an equivalent of C++ STL"
2020-12-11 07:12:56 +0100 <hyiltiz> seems to be Prelude and elsewhere provides lots of those, and you can lift those into ST or any monad of your choice
2020-12-11 07:13:03 +0100 <jpcooper> I'm thinking mostly of implementations of the containers like unordered_map, unorderdd_set, map, the <algorithm> library
2020-12-11 07:14:14 +0100 <hyiltiz> haskell has a lot of containers, and you can lift them into any monad, hence the benefit of abstracting away the monad interface so containers don't have to deal with IO or ST or whatnot
2020-12-11 07:14:24 +0100 <jpcooper> Although for a lot of functionality, you would probably need pointers, which might be unsafe
2020-12-11 07:15:17 +0100 <jpcooper> hyiltiz: My point is to have efficient implementations. For instance, replace a node in a linked list is O(N), as far as I understand with a normal non-mutable implementation
2020-12-11 07:15:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-11 07:16:06 +0100 <hyiltiz> well now we are talking about efficient implementation of (functional) data structures, some of which is theoretically impossible without mutability
2020-12-11 07:16:19 +0100 <jpcooper> Yes. This is why I'm interested in the ST monad
2020-12-11 07:16:22 +0100 <hyiltiz> maybe you'd be interested to learn about fingertrees
2020-12-11 07:16:32 +0100mounty(~mounty@2001:8000:2f59:0:1862:62b5:e626:9d64) (Ping timeout: 260 seconds)
2020-12-11 07:17:08 +0100 <hyiltiz> functional data structures have quite different "mindset"; without giving away mutability, you simply cannot do a few things
2020-12-11 07:17:18 +0100 <perry69420> jpcooper This might be helpful https://hackage.haskell.org/package/hashtables
2020-12-11 07:18:21 +0100 <hyiltiz> Ahah now I understand why specify the ST constrain
2020-12-11 07:18:48 +0100 <hyiltiz> You'd rather be stateful to be efficient
2020-12-11 07:18:49 +0100 <jpcooper> Finger trees would be interesting. I'm quite well acquainted with Haskell, by the way. I'm simply interested in getting various things done in Haskell without worrying too much about trying to bend the functional paradigm, and I'm also interested in performance. With the ST monad, who cares if it is mutating state under the bonnet. The interface itself is referentially transparent
2020-12-11 07:18:53 +0100 <jpcooper> Yes
2020-12-11 07:19:16 +0100 <jpcooper> Thanks, perry69420
2020-12-11 07:21:45 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-12-11 07:23:27 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 07:25:28 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-11 07:25:31 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2020-12-11 07:27:00 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2c68:32a0:f62b:f449)
2020-12-11 07:27:39 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-11 07:27:41 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2020-12-11 07:27:56 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds)
2020-12-11 07:29:51 +0100AwesomeRigg(awesomerig@45.15.143.179) ()
2020-12-11 07:29:59 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 260 seconds)
2020-12-11 07:30:21 +0100 <hololeap> i've been looking at edwardk's work on propagators and i don't really understand what a join-semilattice would look like in haskell
2020-12-11 07:30:30 +0100 <hololeap> can anyone give me a simple example?
2020-12-11 07:31:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2c68:32a0:f62b:f449) (Ping timeout: 260 seconds)
2020-12-11 07:33:01 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-11 07:34:48 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-11 07:36:02 +0100 <perry69420> hololeap Would you like a mathematical example?
2020-12-11 07:36:16 +0100 <hololeap> i know of the one involving natural numbers off wikipedia
2020-12-11 07:36:31 +0100 <hololeap> perry69420: but sure
2020-12-11 07:39:01 +0100 <perry69420> Consider any set of objects, call it S. Consider the power set of S without the empty subset. Then this power set is a join semilattice wrt inclusion
2020-12-11 07:39:18 +0100 <perry69420> Notice that it is NOT a meet semilattice
2020-12-11 07:39:45 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Ping timeout: 240 seconds)
2020-12-11 07:40:12 +0100jpcooper(~user@unaffiliated/jpcooper) ("ERC (IRC client for Emacs 26.1)")
2020-12-11 07:40:29 +0100 <perry69420> So for example, if S = {1,2,3}, then the power set I'm considering is {{1},{2},{3},{1,2},{2,3},{1,3},{1,2,3}}. Notice that the empty set {} is not in this set
2020-12-11 07:41:02 +0100mrchampion(~mrchampio@38.18.109.23) (Read error: Connection reset by peer)
2020-12-11 07:41:22 +0100 <hololeap> so then {1,2,3} would be the maximum meet
2020-12-11 07:41:24 +0100 <perry69420> The "join" operation is given by union of sets
2020-12-11 07:41:27 +0100 <perry69420> yes exactly
2020-12-11 07:41:47 +0100 <hololeap> ok, sorry i'm getting a lot of this off wikipedia
2020-12-11 07:41:48 +0100 <perry69420> hololeap maximum join, not meet
2020-12-11 07:42:10 +0100orzo(joe@lasker.childrenofmay.org) (Ping timeout: 272 seconds)
2020-12-11 07:42:20 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2020-12-11 07:42:26 +0100 <hololeap> right...
2020-12-11 07:43:04 +0100 <hololeap> i was reading the part about meet-semilattice accidentally
2020-12-11 07:43:16 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com) (Ping timeout: 240 seconds)
2020-12-11 07:43:18 +0100 <perry69420> so meet is defined as greatest lower bound, and join is the lowest upper bound.
2020-12-11 07:43:39 +0100 <perry69420> Note that we already have a partial order on the "power" set i defined via inclusion.
2020-12-11 07:45:17 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-12-11 07:45:27 +0100 <hololeap> so, what would be an example of a join-semilattice that isn't also a power set?
2020-12-11 07:46:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 07:47:21 +0100 <perry69420> hololeap That example I gave isn't a power set
2020-12-11 07:47:29 +0100 <perry69420> It is a subset of a powerset
2020-12-11 07:47:33 +0100 <hololeap> right, sans the empty set
2020-12-11 07:48:24 +0100 <iqubic> Data.Array array? I.E. return Maybe e to indicate an out of bounds error?
2020-12-11 07:49:45 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
2020-12-11 07:49:55 +0100 <hololeap> i assume that any power set sans its "maximum" set is a meet-semilattice?
2020-12-11 07:49:57 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
2020-12-11 07:50:19 +0100 <perry69420> yes. Obviously, the empty set is the GLB here
2020-12-11 07:50:38 +0100 <perry69420> but again, the partial order on the set has to be defined via inclusion
2020-12-11 07:52:24 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 260 seconds)
2020-12-11 07:53:32 +0100 <jchia> My program has 1~2GB of resident memory even when it's doing no work. Can a heap profile help me identify where all that memory is going? E.g. maybe it can tell me allocation amount minus deallocation amount so the outstanding amount is from memory leaks?
2020-12-11 07:54:43 +0100cfricke(~cfricke@unaffiliated/cfricke) (Ping timeout: 272 seconds)
2020-12-11 07:55:55 +0100 <hololeap> perry69420: i think i thought of a trivial example, a power set, sans empty, where there are two diffenet "maxima", and a ^ b yields a different result than a ^ c and b ^ c
2020-12-11 07:56:58 +0100 <perry69420> How can there be two different maximas in a power set? Can you expand the example a bit?
2020-12-11 07:57:08 +0100 <perry69420> is your partial order still inclusion?
2020-12-11 07:57:34 +0100 <hololeap> oh, you're right because the two different "maximal" results wouldn't have a join
2020-12-11 07:58:44 +0100 <hololeap> but, if they _did_ have a join, that would be a different shape than the power set for three elements
2020-12-11 07:58:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d14e:1637:1ed1:f68e)
2020-12-11 07:59:15 +0100 <hololeap> so there's the answer to my question
2020-12-11 07:59:16 +0100phasespace(~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 240 seconds)
2020-12-11 07:59:41 +0100 <perry69420> I'm not quite sure what you mean by shape here. But if they did have a join, both of them cannot be maximal
2020-12-11 08:00:06 +0100 <hololeap> i'm thinking of it as a directed graph
2020-12-11 08:00:33 +0100 <hololeap> so i can pull away from the example we had earlier and get more abstract
2020-12-11 08:00:47 +0100 <perry69420> x \le y iff directed edge x to y?
2020-12-11 08:01:50 +0100 <perry69420> iff x meet y = x
2020-12-11 08:02:28 +0100 <hololeap> that would require inclusion of identity arrows?
2020-12-11 08:03:05 +0100 <perry69420> right.. every node will have a edge to itself
2020-12-11 08:03:12 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-11 08:03:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d14e:1637:1ed1:f68e) (Ping timeout: 260 seconds)
2020-12-11 08:04:04 +0100 <hololeap> i understand what a dag looks like. is a join-semilattice any different?
2020-12-11 08:04:18 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-11 08:04:57 +0100 <hololeap> oh, yes it is
2020-12-11 08:05:01 +0100 <perry69420> yes! A DAG is always a meet-semilattice
2020-12-11 08:05:09 +0100 <perry69420> it needn't be join-semilattice
2020-12-11 08:05:18 +0100Lord_of_Life(~Lord@46.217.219.165) (Changing host)
2020-12-11 08:05:18 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-11 08:05:19 +0100 <perry69420> Consider any tree as an example
2020-12-11 08:05:26 +0100 <hololeap> i see
2020-12-11 08:06:09 +0100 <perry69420> You can take the dual of the graph to make a join semilattice
2020-12-11 08:06:28 +0100 <perry69420> dual of a DAG is DAG with all edges reversed
2020-12-11 08:06:46 +0100 <hololeap> that's very interesting
2020-12-11 08:06:57 +0100Fractalis(~Fractalis@2601:987:280:8d40:406e:6ad8:9d0d:835)
2020-12-11 08:07:29 +0100cfricke(~cfricke@unaffiliated/cfricke) (Client Quit)
2020-12-11 08:07:32 +0100 <hololeap> i'm looking at the image here: https://en.wikipedia.org/wiki/Directed_acyclic_graph
2020-12-11 08:07:55 +0100 <hololeap> and i can see how that if you reverse the arrows you get a join-semilattice
2020-12-11 08:08:30 +0100 <hololeap> and it's a good example of what i was asking for earlier
2020-12-11 08:09:28 +0100 <perry69420> I have absolutely no idea about uses/implementations of Join/Meet Semilattice in Haskell yet :P
2020-12-11 08:09:35 +0100plutoniix(~q@ppp-223-24-62-231.revip6.asianet.co.th)
2020-12-11 08:10:16 +0100 <hololeap> but wait... the semilattice has a structure that's based off a binary function...
2020-12-11 08:10:42 +0100 <perry69420> that is correct
2020-12-11 08:11:00 +0100 <hololeap> so how can a dag be a meet-semilattice?
2020-12-11 08:11:43 +0100 <perry69420> I define x meet y as the "maximal" node from which you can reach both x and y
2020-12-11 08:12:32 +0100Fractalis(~Fractalis@2601:987:280:8d40:406e:6ad8:9d0d:835) (Ping timeout: 260 seconds)
2020-12-11 08:12:42 +0100 <hololeap> ok, yeah that makes sense
2020-12-11 08:12:42 +0100leothrix(~leothrix@elastic/staff/leothrix) (Quit: ZNC 1.7.5 - https://znc.in)
2020-12-11 08:12:47 +0100 <perry69420> Ahh I see a little problem. Every DAG isn't a meet semilattice
2020-12-11 08:13:10 +0100leothrix(~leothrix@elastic/staff/leothrix)
2020-12-11 08:13:55 +0100 <perry69420> Consider 4 nodes. a,b,c,d. The available edges are (a,b),(a,c),(d,b),(d,c). Then there is no GLB here
2020-12-11 08:14:36 +0100 <perry69420> We will need to restrict ourselves to tree rather than DAGs
2020-12-11 08:16:13 +0100 <hololeap> what does tree mean here?
2020-12-11 08:16:51 +0100 <perry69420> A directed tree*. So we have a root node and exactly one path from root node to every other node
2020-12-11 08:17:26 +0100 <hololeap> ok
2020-12-11 08:18:16 +0100 <hololeap> thanks. that definitely gives me some room for thought on the propogators idea
2020-12-11 08:18:55 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-11 08:19:30 +0100 <hololeap> perry69420: can there be more than one root node?
2020-12-11 08:19:55 +0100phasespace(~sar@80-89-47-117.inet.signal.no)
2020-12-11 08:19:55 +0100 <perry69420> hololeap I think it'll be better to think of a Partial Order with GLB. Note that while every tree is meet lattice, I'm not sure if every meet lattice is a tree
2020-12-11 08:20:08 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-12-11 08:20:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-11 08:20:21 +0100 <perry69420> hololeap We cannot have a GLB then, can we?
2020-12-11 08:20:59 +0100 <hololeap> i was thinking of it in reverse, as a join-SL
2020-12-11 08:21:22 +0100 <perry69420> You'll need to take the dual of the directed tree then
2020-12-11 08:21:32 +0100 <hololeap> right, sorry :)
2020-12-11 08:21:39 +0100 <perry69420> In which case, it is no more a tree, but it does represent a join SL
2020-12-11 08:22:20 +0100pavonia(~user@unaffiliated/siracusa)
2020-12-11 08:23:45 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Quit: Leaving)
2020-12-11 08:23:51 +0100ericsagn1(~ericsagne@2405:6580:0:5100:1672:eb44:5f35:5514) (Ping timeout: 272 seconds)
2020-12-11 08:26:16 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2020-12-11 08:30:57 +0100aqd(~aqd@87-92-163-238.rev.dnainternet.fi)
2020-12-11 08:33:59 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-12-11 08:35:55 +0100ericsagn1(~ericsagne@2405:6580:0:5100:6393:9860:d118:b25)
2020-12-11 08:38:38 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 08:43:08 +0100sgibber2018(~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
2020-12-11 08:43:47 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d)
2020-12-11 08:45:30 +0100scasc(~szabi@213142096072.public.telering.at) (Ping timeout: 256 seconds)
2020-12-11 08:48:55 +0100SanchayanMaity(~Sanchayan@122.178.233.231) (Quit: SanchayanMaity)
2020-12-11 08:49:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 08:49:29 +0100SanchayanMaity(~Sanchayan@122.178.233.231)
2020-12-11 08:53:48 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2020-12-11 08:54:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-11 08:55:23 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 258 seconds)
2020-12-11 08:57:09 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-11 09:00:22 +0100nineonine_(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-11 09:01:03 +0100infosec_yo(sid476935@gateway/web/irccloud.com/x-ezccxoibyygulirl)
2020-12-11 09:01:08 +0100 <infosec_yo> haskell is bloated.
2020-12-11 09:01:52 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 256 seconds)
2020-12-11 09:01:53 +0100nineonine_nineonine
2020-12-11 09:03:03 +0100knupfer(~Thunderbi@200116b82c2b4200586bd9fffe42074d.dip.versatel-1u1.de)
2020-12-11 09:03:03 +0100knupfer(~Thunderbi@200116b82c2b4200586bd9fffe42074d.dip.versatel-1u1.de) (Client Quit)
2020-12-11 09:03:17 +0100knupfer(~Thunderbi@i5E86B444.versanet.de)
2020-12-11 09:03:30 +0100knupfer(~Thunderbi@i5E86B444.versanet.de) (Client Quit)
2020-12-11 09:03:48 +0100knupfer(~Thunderbi@200116b82c2b4200e010a8af79e2986c.dip.versatel-1u1.de)
2020-12-11 09:04:32 +0100vilpan(~0@212.117.1.172)
2020-12-11 09:05:01 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-12-11 09:06:18 +0100 <jle`> nice
2020-12-11 09:06:57 +0100 <infosec_yo> its also insecure.
2020-12-11 09:08:21 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-11 09:10:10 +0100 <jle`> not nice D:
2020-12-11 09:10:54 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133)
2020-12-11 09:11:25 +0100 <infosec_yo> ?
2020-12-11 09:11:54 +0100Feuermagier_(~Feuermagi@213.178.26.41) (Quit: Leaving)
2020-12-11 09:12:06 +0100Feuermagier(~Feuermagi@213.178.26.41)
2020-12-11 09:12:51 +0100 <int-e> infosec_yo: your mom is just bloated and insecure
2020-12-11 09:13:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:4dab:dca0:5971:aa33)
2020-12-11 09:14:06 +0100 <infosec_yo> what?
2020-12-11 09:14:18 +0100 <MarcelineVQ> I'm bloated and insecure
2020-12-11 09:14:31 +0100 <infosec_yo> how come ?
2020-12-11 09:14:33 +0100 <tomsmeding> people are, in general
2020-12-11 09:14:44 +0100 <MarcelineVQ> All the haskell I ate earlier I think
2020-12-11 09:15:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 09:15:15 +0100 <infosec_yo> 💩
2020-12-11 09:15:32 +0100 <int-e> infosec_yo: do you have any specific insecurity in mind?
2020-12-11 09:15:38 +0100 <infosec_yo> yea
2020-12-11 09:15:44 +0100 <int-e> infosec_yo: or are you just throwing around negative adjectives?
2020-12-11 09:15:56 +0100 <infosec_yo> no
2020-12-11 09:16:06 +0100 <int-e> so what is it?
2020-12-11 09:16:08 +0100 <perry69420> int-e yea, did she ever love me?
2020-12-11 09:16:13 +0100 <infosec_yo> general insecurities
2020-12-11 09:16:17 +0100 <infosec_yo> e.g. sandbox etc
2020-12-11 09:16:37 +0100 <int-e> so... that's not specific
2020-12-11 09:16:47 +0100 <infosec_yo> like ESCAPE
2020-12-11 09:17:14 +0100 <MarcelineVQ> with the wig, you remind me, of julia...
2020-12-11 09:17:18 +0100 <boxscape> > ESCAPE
2020-12-11 09:17:20 +0100 <lambdabot> error: Data constructor not in scope: ESCAPE
2020-12-11 09:17:26 +0100toorevitimirp(~tooreviti@117.182.180.221)
2020-12-11 09:17:26 +0100 <int-e> There isn't much of a sandbox in Haskell.
2020-12-11 09:18:02 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-12-11 09:18:02 +0100 <perry69420> oh how we used to play in the sandbox
2020-12-11 09:18:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:4dab:dca0:5971:aa33) (Ping timeout: 264 seconds)
2020-12-11 09:18:13 +0100 <int-e> There's SafeHaskell which tries to contain effects in IO and is probably flawed, though demonstrating that isn't exactly easy.
2020-12-11 09:18:58 +0100 <infosec_yo> well that can easily be bypassed.
2020-12-11 09:19:25 +0100 <int-e> Show us how.
2020-12-11 09:19:39 +0100 <infosec_yo> all the exploits i have for haskell are private.
2020-12-11 09:19:46 +0100 <int-e> Then stfu
2020-12-11 09:19:55 +0100 <infosec_yo> why
2020-12-11 09:20:02 +0100 <MarcelineVQ> the ladies love my day-zero haskell exploits
2020-12-11 09:20:23 +0100 <int-e> infosec_yo: because there's obviously nothing to talk about
2020-12-11 09:20:45 +0100 <infosec_yo> i got TONS of haskell.
2020-12-11 09:20:50 +0100 <infosec_yo> ready to be deployed.
2020-12-11 09:21:05 +0100 <MarcelineVQ> int-e: we could talk about puyo puyo 2
2020-12-11 09:21:41 +0100ADG1089_(~androirc@122.163.174.248)
2020-12-11 09:22:51 +0100 <infosec_yo> i think that haskell can be redone better.
2020-12-11 09:23:01 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 264 seconds)
2020-12-11 09:24:11 +0100Yumasi(~guillaume@176-172-89-74.abo.bbox.fr)
2020-12-11 09:24:12 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2020-12-11 09:24:32 +0100 <perry69420> MarcelineVQ is that .... Candy Crush Tetris?
2020-12-11 09:25:21 +0100 <jle`> pretty much every haskeller can think of some improvements to haskell they'd like to see, though
2020-12-11 09:25:23 +0100 <MarcelineVQ> it's so much more
2020-12-11 09:25:33 +0100 <infosec_yo> whos a haskeller in here ?
2020-12-11 09:26:50 +0100 <boxscape> Any haskellers in #haskell?
2020-12-11 09:27:07 +0100 <infosec_yo> ?
2020-12-11 09:28:08 +0100 <tomsmeding> no
2020-12-11 09:28:21 +0100 <dminuoso> As for security, I've been wondering about TH for a while. Considering how easy it is to upload a malicious package on hackage, or even straight up replace it without changing versions...
2020-12-11 09:28:31 +0100 <dminuoso> TH has full unbounded access to IO, doesn't it?
2020-12-11 09:28:38 +0100 <infosec_yo> yea hackage with the package.
2020-12-11 09:28:53 +0100MOSCOS(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-11 09:29:01 +0100 <tomsmeding> well safehaskell will certainly forbid TH
2020-12-11 09:29:20 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-11 09:29:20 +0100 <boxscape> oh I didn't know you could do that, I thought you could only change metadata without updating versions
2020-12-11 09:29:27 +0100 <infosec_yo> i can easily bypass safehaskel..
2020-12-11 09:29:45 +0100 <boxscape> do it
2020-12-11 09:29:47 +0100 <dminuoso> tomsmeding: Sure, but maybe I do want some TH..
2020-12-11 09:29:55 +0100 <tomsmeding> boxscape: keeping the same version isn't really a requirement for this being an issue I think
2020-12-11 09:30:02 +0100 <dminuoso> Say, I trust well typed's optics TH code, but nothing else
2020-12-11 09:30:04 +0100 <tomsmeding> who will notice if you do a patch upgrade
2020-12-11 09:30:05 +0100 <boxscape> yeah that's fair
2020-12-11 09:30:17 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-12-11 09:30:36 +0100 <dminuoso> tomsmeding: keeping the same version means people who maintain strict bounds dont even have the chance to audit the bump.
2020-12-11 09:30:37 +0100 <int-e> dminuoso: I didn't think you can replace a package without bumping the version on Hackage? (You can modify dependency versions though which is bound to have security implications.)
2020-12-11 09:30:55 +0100 <dminuoso> int-e: Mmm. Im convinced you could.. perhaps Im wrong?
2020-12-11 09:31:15 +0100 <int-e> dminuoso: Of course uploading a new minor version will probably go unnoticed anyway.
2020-12-11 09:31:20 +0100 <dminuoso> Right
2020-12-11 09:31:32 +0100 <infosec_yo> why minor?
2020-12-11 09:32:03 +0100 <int-e> Because uploading a major version will be caught by diligent use of the package versioning policy.
2020-12-11 09:32:10 +0100 <boxscape> Isn't there a security issue here even without TH though? The difference being you'd have problems when running the code rather than when compiling it
2020-12-11 09:32:31 +0100johnw(~johnw@haskell/developer/johnw)
2020-12-11 09:32:45 +0100 <nfd> may've been a bit too cheeky in my solution to 11-2
2020-12-11 09:32:48 +0100 <dminuoso> boxscape: When you compromise the compiler, you can hijack it to ruin your life completely
2020-12-11 09:32:52 +0100 <infosec_yo> i still feel that haskell is a bit cheeky.
2020-12-11 09:33:02 +0100 <nfd> wish i could solve my halting problem real fast here
2020-12-11 09:33:10 +0100 <dminuoso> boxscape: Say I get to hijack your build server, then I can infest *all* resulting build artifacts.
2020-12-11 09:33:11 +0100 <int-e> infosec_yo: There's little doubt that there's a lot of insecurities to find in Haskell and in particular its ecosystem. But if you're not willing to discuss *what* specifically is insecure, you're not contributing anything, you're just bragging.
2020-12-11 09:33:15 +0100 <dminuoso> As opposed to just your machine
2020-12-11 09:33:18 +0100 <boxscape> dminuoso hm I see
2020-12-11 09:33:23 +0100 <int-e> infosec_yo: Which is worthless to the rest of us.
2020-12-11 09:33:29 +0100infosec_yo(sid476935@gateway/web/irccloud.com/x-ezccxoibyygulirl) ()
2020-12-11 09:34:38 +0100 <int-e> @bot
2020-12-11 09:34:38 +0100 <lambdabot> :)
2020-12-11 09:34:46 +0100 <dminuoso> Mmm, perhaps SafeHaskell is the right answer after all
2020-12-11 09:34:47 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Quit: nineonine)
2020-12-11 09:35:17 +0100 <tomsmeding> couldn't you manually trust certain modules with safehaskell? I believe you could
2020-12-11 09:35:24 +0100 <dminuoso> Right, modules or packages
2020-12-11 09:35:26 +0100 <int-e> tomsmeding: you can trust packages
2020-12-11 09:35:28 +0100 <dminuoso> You could do a safe import
2020-12-11 09:35:32 +0100 <int-e> (not modules, I think)
2020-12-11 09:35:43 +0100 <dminuoso> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/safe_haskell.html
2020-12-11 09:35:48 +0100 <dminuoso> int-e: You can do a safe import on a module.
2020-12-11 09:36:06 +0100 <int-e> You mark a module Trustworthy, and then if you trust the package containing that module you can import it "safely".
2020-12-11 09:36:18 +0100 <int-e> But this isn't a bypass, this is by design.
2020-12-11 09:37:14 +0100mastarija(~mastarija@93-136-96-125.adsl.net.t-com.hr)
2020-12-11 09:38:17 +0100 <int-e> Any Trustworthy module in a trusted package is part of your trusted codebase. Which means that the TCB is usually pretty big.
2020-12-11 09:38:43 +0100 <int-e> (And then there's the compiler, as usual.)
2020-12-11 09:39:20 +0100 <dminuoso> The compiler we kind of have to take for granted..
2020-12-11 09:39:40 +0100 <dminuoso> Unless you're well-typed or facebook, it's not like you have any reasonable insight into the compiler..
2020-12-11 09:40:16 +0100 <int-e> . o O ( MSR knows a thing or two? )
2020-12-11 09:40:23 +0100 <dminuoso> Who is MSR?
2020-12-11 09:40:38 +0100 <int-e> Microsoft Research
2020-12-11 09:41:16 +0100 <dminuoso> Ah yeah, it was not a comprehensive list.
2020-12-11 09:41:32 +0100 <int-e> Well, logically it was. :P
2020-12-11 09:42:27 +0100bliminse(~bliminse@host86-134-63-68.range86-134.btcentralplus.com)
2020-12-11 09:42:53 +0100 <dminuoso> The main problem with hackage is just that through transitive dependencies, it gets very hard to track changes. I'd _love_ it if cabal had an `update bounds` feature, that sends me through a pager, displaying the diff of the source code behind the versions.
2020-12-11 09:43:08 +0100 <dminuoso> Hunk wise, like say `git add -p`, where I can simply audit the changes
2020-12-11 09:43:16 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-12-11 09:43:24 +0100 <dminuoso> That I would definitely use
2020-12-11 09:48:38 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 09:51:25 +0100mastarija(~mastarija@93-136-96-125.adsl.net.t-com.hr) (Quit: Leaving)
2020-12-11 09:52:56 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds)
2020-12-11 09:58:38 +0100darjeeling_(~darjeelin@112.16.171.8)
2020-12-11 09:59:00 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2020-12-11 10:00:14 +0100ADG1089_(~androirc@122.163.174.248) (Ping timeout: 265 seconds)
2020-12-11 10:00:45 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
2020-12-11 10:01:54 +0100ADG1089_(~androirc@122.163.174.248)
2020-12-11 10:02:58 +0100solonarv(~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr)
2020-12-11 10:03:00 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
2020-12-11 10:03:10 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
2020-12-11 10:05:41 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-11 10:06:35 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-11 10:10:29 +0100zebrag(~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Read error: Connection reset by peer)
2020-12-11 10:10:50 +0100zebrag(~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr)
2020-12-11 10:12:27 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
2020-12-11 10:13:03 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 10:13:54 +0100hlysig(~hlysig@mobile-194-144-46-247.3G.internet.is) (Remote host closed the connection)
2020-12-11 10:15:13 +0100boxscape(86ab2c53@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.83)
2020-12-11 10:16:45 +0100argento(~argent0@168.227.97.29) (Quit: leaving)
2020-12-11 10:17:36 +0100__monty__(~toonn@unaffiliated/toonn)
2020-12-11 10:19:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-11 10:19:14 +0100kuribas(~user@ptr-25vy0i9ovuvi4dmg8ha.18120a2.ip6.access.telenet.be)
2020-12-11 10:22:07 +0100heatsink_(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Remote host closed the connection)
2020-12-11 10:24:19 +0100SanchayanMaity(~Sanchayan@122.178.233.231) (Quit: SanchayanMaity)
2020-12-11 10:25:43 +0100SanchayanMaity(~Sanchayan@122.178.233.231)
2020-12-11 10:26:11 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-bdwcxdgjdouaybsg) (Quit: Connection closed for inactivity)
2020-12-11 10:28:28 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
2020-12-11 10:29:38 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 260 seconds)
2020-12-11 10:30:01 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-11 10:30:37 +0100zaquest(~notzaques@5.128.210.178)
2020-12-11 10:33:51 +0100ubert(~Thunderbi@p200300ecdf1e538de6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-11 10:34:03 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2020-12-11 10:34:12 +0100hololeap(~hololeap@unaffiliated/hololeap) (Quit: KVIrc 5.0.1 Aria http://www.kvirc.net/)
2020-12-11 10:34:53 +0100fendor(~fendor@77.119.131.193.wireless.dyn.drei.com)
2020-12-11 10:35:54 +0100Lurkki(54f048f5@esm-84-240-72-245.netplaza.fi)
2020-12-11 10:36:58 +0100zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2020-12-11 10:37:14 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-11 10:37:42 +0100 <maerwald> dminuoso: it would be so massive that I doubt it's useful
2020-12-11 10:37:42 +0100wwwww(~wwwww@unaffiliated/wwwww) (Ping timeout: 256 seconds)
2020-12-11 10:37:55 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 10:38:43 +0100 <dminuoso> maerwald: If your software is mission critical, would you not want to know how your dependencies changed every time you update? :0
2020-12-11 10:38:57 +0100 <maerwald> not sure who would pay me for that...
2020-12-11 10:39:14 +0100 <maerwald> also, reviewing GHC would be much more important than your deps...
2020-12-11 10:39:20 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-11 10:39:37 +0100wwwww(~wwwww@unaffiliated/wwwww)
2020-12-11 10:39:42 +0100 <dminuoso> It's much easier to sneak malicious changes into hackage than into GHC.
2020-12-11 10:39:51 +0100 <maerwald> I guess
2020-12-11 10:41:06 +0100 <dminuoso> Dunno about you, but I generally look through a libraries implementatoin before I use it. I sadly don't do it transitively, but at least I do that much
2020-12-11 10:42:38 +0100 <dminuoso> Eh by transitively I mean I dont check its dependencies transitively.
2020-12-11 10:42:58 +0100darjeeling_(~darjeelin@112.16.171.8) (Ping timeout: 256 seconds)
2020-12-11 10:43:07 +0100ggole(~ggole@2001:8003:8119:7200:cdad:14fe:9dc3:f21)
2020-12-11 10:43:30 +0100 <dminuoso> Though at the very least I verify dependency trees regularly to prevent my packages from blowing up
2020-12-11 10:45:57 +0100kenran(~kenran@i59F67BE7.versanet.de)
2020-12-11 10:47:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 10:48:16 +0100Moyst(~moyst@212-149-213-144.bb.dnainternet.fi) (Ping timeout: 240 seconds)
2020-12-11 10:49:29 +0100ADG1089_(~androirc@122.163.174.248) (Ping timeout: 260 seconds)
2020-12-11 10:51:25 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Quit: Nice weekend)
2020-12-11 10:53:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-11 10:53:42 +0100zaquest(~notzaques@5.128.210.178)
2020-12-11 10:56:43 +0100LKoen(~LKoen@214.175.9.109.rev.sfr.net)
2020-12-11 10:57:12 +0100zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2020-12-11 10:59:57 +0100chewb(~chewb@abhz34.neoplus.adsl.tpnet.pl)
2020-12-11 11:00:03 +0100gxt__(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-12-11 11:04:39 +0100knupfer(~Thunderbi@200116b82c2b4200e010a8af79e2986c.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-11 11:04:47 +0100knupfer(~Thunderbi@200116b82c2b420031fa514480f2150c.dip.versatel-1u1.de)
2020-12-11 11:06:15 +0100thc202(~thc202@unaffiliated/thc202)
2020-12-11 11:06:24 +0100essem(essem@gateway/vpn/privateinternetaccess/essem) (Ping timeout: 260 seconds)
2020-12-11 11:09:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 11:13:49 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-11 11:15:00 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:4dab:dca0:5971:aa33)
2020-12-11 11:19:23 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2020-12-11 11:19:31 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:4dab:dca0:5971:aa33) (Ping timeout: 258 seconds)
2020-12-11 11:21:55 +0100bitmagie(~Thunderbi@200116b80638310001d2823cf2ef2077.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-11 11:22:14 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-11 11:22:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97)
2020-12-11 11:24:41 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-11 11:25:40 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300)
2020-12-11 11:25:54 +0100perry69420(7aa1d004@122.161.208.4) (Ping timeout: 245 seconds)
2020-12-11 11:26:01 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
2020-12-11 11:27:11 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 258 seconds)
2020-12-11 11:30:00 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-11 11:30:15 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) (Ping timeout: 258 seconds)
2020-12-11 11:30:29 +0100Lurkki(54f048f5@esm-84-240-72-245.netplaza.fi) (Remote host closed the connection)
2020-12-11 11:30:33 +0100kritzefitz(~kritzefit@212.86.56.80) (Client Quit)
2020-12-11 11:36:08 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-11 11:38:30 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-11 11:40:02 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-11 11:41:45 +0100guest1211(~user@49.5.6.87) (Remote host closed the connection)
2020-12-11 11:43:52 +0100bstarr(~bstarr@139.28.218.148) (Remote host closed the connection)
2020-12-11 11:44:20 +0100Lurkki[m](lurkkipriv@gateway/shell/matrix.org/x-djvldaecobwrcdeg)
2020-12-11 11:51:58 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-11 11:58:07 +0100vilpan(~0@212.117.1.172) ()
2020-12-11 11:59:54 +0100SanchayanMaity(~Sanchayan@122.178.233.231) (Quit: SanchayanMaity)
2020-12-11 12:00:04 +0100lassulus(~lassulus@NixOS/user/lassulus) (Ping timeout: 260 seconds)
2020-12-11 12:01:08 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-11 12:03:31 +0100SchwarzeLocke(~SchwarzeL@185.163.110.125)
2020-12-11 12:04:58 +0100SanchayanMaity(~Sanchayan@122.178.245.223)
2020-12-11 12:04:59 +0100lassulus(~lassulus@NixOS/user/lassulus)
2020-12-11 12:07:03 +0100wtw(~wtw@unaffiliated/wtw)
2020-12-11 12:07:09 +0100wtw(~wtw@unaffiliated/wtw) ()
2020-12-11 12:07:24 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300)
2020-12-11 12:08:26 +0100daGrevis(~daGrevis@unaffiliated/dagrevis) (Remote host closed the connection)
2020-12-11 12:09:38 +0100daGrevis(~daGrevis@unaffiliated/dagrevis)
2020-12-11 12:11:10 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2020-12-11 12:12:13 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) (Ping timeout: 268 seconds)
2020-12-11 12:13:44 +0100SanchayanMaity(~Sanchayan@122.178.245.223) (Quit: SanchayanMaity)
2020-12-11 12:15:03 +0100SanchayanMaity(~Sanchayan@122.178.245.223)
2020-12-11 12:15:17 +0100SanchayanMaity(~Sanchayan@122.178.245.223) (Client Quit)
2020-12-11 12:20:27 +0100SanchayanMaity(~Sanchayan@122.178.245.223)
2020-12-11 12:20:58 +0100lassulus(~lassulus@NixOS/user/lassulus) (Ping timeout: 246 seconds)
2020-12-11 12:21:54 +0100rprije(~rprije@14-201-170-17.tpgi.com.au) (Ping timeout: 256 seconds)
2020-12-11 12:23:25 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-11 12:24:01 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97)
2020-12-11 12:25:54 +0100SolarAquarion(SolarAquar@gateway/shell/panicbnc/x-kjhphkgroirlqpvp) (Ping timeout: 244 seconds)
2020-12-11 12:26:26 +0100Klumben(Nsaiswatch@gateway/shell/panicbnc/x-mkcnlvblwjhyiwoj) (Ping timeout: 264 seconds)
2020-12-11 12:26:52 +0100dax(dax@bitbot/dax) (Ping timeout: 260 seconds)
2020-12-11 12:26:53 +0100SegFaultAX(SegFaultAX@unaffiliated/segfaultax) (Ping timeout: 260 seconds)
2020-12-11 12:26:53 +0100entropygain(levitate@unaffiliated/entropygain) (Ping timeout: 260 seconds)
2020-12-11 12:28:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 264 seconds)
2020-12-11 12:30:29 +0100entropygain(levitate@unaffiliated/entropygain)
2020-12-11 12:31:45 +0100darjeeling_(~darjeelin@122.245.123.202)
2020-12-11 12:32:26 +0100ericsagn1(~ericsagne@2405:6580:0:5100:6393:9860:d118:b25) (Ping timeout: 264 seconds)
2020-12-11 12:32:39 +0100 <kuribas> is Control.Category used somewhere else in Base?
2020-12-11 12:32:57 +0100 <kuribas> while it's nice to have the operators (>>>), it doesn't seem to have much use...
2020-12-11 12:33:08 +0100 <Taneb> kuribas: it's used by Control.Arrow
2020-12-11 12:33:24 +0100 <Taneb> Which has a bunch of subclasses of Category of varying utility
2020-12-11 12:34:23 +0100 <kuribas> I've never really got into Arrows
2020-12-11 12:34:33 +0100joehillen(joehillen@unaffiliated/joehillen) (Ping timeout: 246 seconds)
2020-12-11 12:34:37 +0100 <xerox_> nobody did
2020-12-11 12:34:50 +0100xacktm(xacktm@gateway/shell/panicbnc/x-fxbrslxxjjorsbbu) (Ping timeout: 264 seconds)
2020-12-11 12:34:50 +0100 <Taneb> Only whoever wrote that one xml library did
2020-12-11 12:34:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-11 12:35:51 +0100 <kuribas> hxt?
2020-12-11 12:36:03 +0100 <Taneb> That's the one
2020-12-11 12:36:32 +0100 <Taneb> (I think it turned out that Applicatives are about as powerful as Arrows and a lot easier to understand)
2020-12-11 12:36:33 +0100entropygain(levitate@unaffiliated/entropygain) (Ping timeout: 272 seconds)
2020-12-11 12:37:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 12:38:30 +0100dax(dax@bitbot/dax)
2020-12-11 12:38:58 +0100joehillen(joehillen@unaffiliated/joehillen)
2020-12-11 12:39:33 +0100SegFaultAX(SegFaultAX@unaffiliated/segfaultax)
2020-12-11 12:39:38 +0100entropygain(levitate@unaffiliated/entropygain)
2020-12-11 12:39:59 +0100lassulus(~lassulus@NixOS/user/lassulus)
2020-12-11 12:40:19 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-11 12:40:38 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-11 12:41:29 +0100 <kuribas> yeah, I find applicative/monadic processing of xml much easier
2020-12-11 12:44:48 +0100ericsagn1(~ericsagne@2405:6580:0:5100:c504:28ef:2ca:d7c2)
2020-12-11 12:45:25 +0100plutoniix(~q@ppp-223-24-62-231.revip6.asianet.co.th) (Ping timeout: 240 seconds)
2020-12-11 12:46:07 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com)
2020-12-11 12:48:00 +0100pokid(~pokid@unaffiliated/pokid)
2020-12-11 12:48:14 +0100drbean(~drbean@TC210-63-209-80.static.apol.com.tw)
2020-12-11 12:49:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300)
2020-12-11 12:49:52 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2020-12-11 12:50:03 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2020-12-11 12:50:34 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-11 12:51:54 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-11 12:53:49 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) (Ping timeout: 258 seconds)
2020-12-11 12:54:27 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
2020-12-11 12:54:51 +0100watt678(~watt678@124.123.105.254)
2020-12-11 12:54:59 +0100z0(~z0@188.251.86.84)
2020-12-11 12:55:23 +0100z0Guest81293
2020-12-11 12:55:40 +0100watt678(~watt678@124.123.105.254) (Read error: Connection reset by peer)
2020-12-11 12:56:21 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-11 12:57:08 +0100troydm(~troydm@unaffiliated/troydm) (Ping timeout: 260 seconds)
2020-12-11 12:58:06 +0100z0_(~z0@188.251.72.233) (Ping timeout: 265 seconds)
2020-12-11 12:58:26 +0100plutoniix(~q@184.82.200.118)
2020-12-11 13:00:26 +0100Amras(~Amras@unaffiliated/amras)
2020-12-11 13:00:44 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-12-11 13:01:15 +0100cgfbee(~bot@oc1.itim-cj.ro)
2020-12-11 13:04:21 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d32:ddb0:59ad:e779)
2020-12-11 13:09:00 +0100kenran(~kenran@i59F67BE7.versanet.de) (Ping timeout: 256 seconds)
2020-12-11 13:09:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:d32:ddb0:59ad:e779) (Ping timeout: 264 seconds)
2020-12-11 13:09:55 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds)
2020-12-11 13:10:26 +0100xacktm(xacktm@gateway/shell/panicbnc/x-jvtlirfmskjbwohd)
2020-12-11 13:10:36 +0100kenran(~kenran@i59F67BD5.versanet.de)
2020-12-11 13:11:40 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-11 13:11:47 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
2020-12-11 13:11:49 +0100machinedgod(~machinedg@24.105.81.50)
2020-12-11 13:12:02 +0100fendor_(~fendor@178.165.131.83.wireless.dyn.drei.com)
2020-12-11 13:12:55 +0100 <scasc> Do you know of a good summary / lookup of the module namespaces used across Hackage?
2020-12-11 13:13:28 +0100fendor(~fendor@77.119.131.193.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2020-12-11 13:13:38 +0100 <scasc> ... / analysis
2020-12-11 13:14:15 +0100inkbottle(~inkbottle@aaubervilliers-654-1-76-48.w86-212.abo.wanadoo.fr)
2020-12-11 13:14:16 +0100zebrag(~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2020-12-11 13:14:28 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-11 13:15:09 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d)
2020-12-11 13:15:55 +0100 <merijn> scasc: Depends what you wanna use it for?
2020-12-11 13:17:02 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Remote host closed the connection)
2020-12-11 13:17:50 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d)
2020-12-11 13:18:30 +0100loller_(uid358106@gateway/web/irccloud.com/x-rqmoabancwauhdqz) (Quit: Connection closed for inactivity)
2020-12-11 13:18:35 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-11 13:19:00 +0100scasc(~szabi@213142096072.public.telering.at) (Remote host closed the connection)
2020-12-11 13:21:02 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-11 13:21:02 +0100 <scasc> Sorry, I got disconnected. Did anyone give a pointer re used namespaces while I was gone?
2020-12-11 13:21:02 +0100jonathanx_(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-12-11 13:22:03 +0100 <Taneb> scasc: merijn asked what you want to use it for
2020-12-11 13:22:10 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Read error: Connection reset by peer)
2020-12-11 13:22:25 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 240 seconds)
2020-12-11 13:23:15 +0100 <scasc> Just a general overview. I was toying with a little package, and was trying to figure out where to put its modules.
2020-12-11 13:24:45 +0100 <scasc> It provides functionality which can be useful in CLI and TUI "semigraphical" representation.
2020-12-11 13:25:20 +0100 <merijn> There's no real organisation, tbh
2020-12-11 13:25:32 +0100SchwarzeLocke(~SchwarzeL@185.163.110.125) (Remote host closed the connection)
2020-12-11 13:25:56 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-11 13:26:07 +0100 <scasc> I know, that's why I wanted to look for inspiration / examples, should a collection / analysis exist.
2020-12-11 13:26:27 +0100 <merijn> What's the name of the package?
2020-12-11 13:26:51 +0100 <scasc> I mean, "brick" is a very popular TUI, and these could be arguably used in some custom Brick widgets, but I won't put it under "Brick." as it is more general.
2020-12-11 13:26:58 +0100 <merijn> If the name isn't super generic, I'd just use the name as root for you module hierarchy
2020-12-11 13:27:09 +0100Entertainment(~entertain@104.246.132.210)
2020-12-11 13:27:16 +0100jmchael(~jmchael@87.112.60.168)
2020-12-11 13:27:39 +0100Entertainment(~entertain@104.246.132.210) (Client Quit)
2020-12-11 13:28:06 +0100 <scasc> "What's the name of the package" -- none yet. Well, none settled yet. I have an absolutely unrepresentative WIP-name. Naming is the hardest thing in CS :o)
2020-12-11 13:28:33 +0100Entertainment(~entertain@104.246.132.210)
2020-12-11 13:29:51 +0100 <scasc> Even though it's String/Text related, "Data.Text." seems to be an overkill, as it's not really about "data".
2020-12-11 13:30:04 +0100 <merijn> Data and Control are historical mistakes, imo
2020-12-11 13:30:36 +0100 <scasc> Some packages use just "Text."
2020-12-11 13:30:54 +0100 <merijn> When hierarchical modules were introduced a bunch of stuff got put under Data or Control, but none of these have a clear argument for why they're under Data or under Control and they just add useless noise
2020-12-11 13:30:54 +0100 <scasc> Then I saw "Console."
2020-12-11 13:31:18 +0100st8less(~st8less@2603:a060:11fd:0:841d:e9ad:74f7:93f9)
2020-12-11 13:32:23 +0100 <scasc> Maybe I'll go for "Text." (without Data). It's for console / TUI usage, so that seems fair.
2020-12-11 13:32:23 +0100Klumben(Nsaiswatch@gateway/shell/panicbnc/x-fomxhgfovyvqanep)
2020-12-11 13:32:29 +0100 <scasc> And There's https://hackage.haskell.org/package/ascii-art-to-unicode-0.1.0.1/docs/Text-AsciiArt.html as a precedent.
2020-12-11 13:33:13 +0100 <merijn> Keep in mind modules are expected to be unique, so don't pick any overly general names
2020-12-11 13:35:40 +0100 <scasc> "Keep in mind modules are expected to be unique" -- I had to utilize `-XPackageImports` myself.
2020-12-11 13:35:47 +0100Tario(~Tario@201.192.165.173)
2020-12-11 13:36:05 +0100 <scasc> To be fair, that should be part of a new standard anyway.
2020-12-11 13:36:10 +0100 <scasc> IMO
2020-12-11 13:36:30 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 13:36:41 +0100 <merijn> scasc: I would not assume a new standard will happen any time soon
2020-12-11 13:37:10 +0100 <merijn> and "I had to utilise PackageImports too" is a poor reason to inflict it upon everybody else...
2020-12-11 13:41:41 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-11 13:42:20 +0100 <scasc> I was not implying I was going to willfully create a conflict. I was just trying to express I was feeling your pain.
2020-12-11 13:45:13 +0100SolarAquarion(SolarAquar@gateway/shell/panicbnc/x-vaxxzctuxkewousu)
2020-12-11 13:52:12 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-11 13:56:09 +0100troydm(~troydm@unaffiliated/troydm)
2020-12-11 13:58:20 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 14:00:14 +0100forell(~forell@unaffiliated/forell) (Ping timeout: 260 seconds)
2020-12-11 14:01:49 +0100theodorc(theodorc@cassarossa.samfundet.no)
2020-12-11 14:02:05 +0100forell(~forell@unaffiliated/forell)
2020-12-11 14:03:01 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2020-12-11 14:03:54 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-12-11 14:04:36 +0100plutoniix(~q@184.82.200.118) (Quit: Leaving)
2020-12-11 14:05:57 +0100 <phaazon> I have to say that, writing some Haskell for AoC is a pure joy
2020-12-11 14:06:01 +0100 <phaazon> I missed writing Haskell too much :D
2020-12-11 14:06:15 +0100 <phaazon> today’s exercise was super simple in Haskell, just, pure $ Joy
2020-12-11 14:06:16 +0100 <phaazon> :)
2020-12-11 14:06:17 +0100theodorcteddyc
2020-12-11 14:06:34 +0100Benzi-Junior(~BenziJuni@dsl-149-65-135.hive.is)
2020-12-11 14:08:58 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds)
2020-12-11 14:09:23 +0100Benzi-Junior(~BenziJuni@dsl-149-65-135.hive.is) (Client Quit)
2020-12-11 14:09:30 +0100 <boxscape> funny, today's exercise is the one that I wouldn't have minded writing in another language
2020-12-11 14:09:50 +0100todda7(~torstein@ppp-2-84-17-53.home.otenet.gr)
2020-12-11 14:10:08 +0100scasc(~szabi@213142096072.public.telering.at) (Ping timeout: 256 seconds)
2020-12-11 14:10:38 +0100Kronic(~Kronic___@84.203.98.133)
2020-12-11 14:10:56 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 256 seconds)
2020-12-11 14:11:39 +0100 <Kronic> A design question: If I have a type that I defined as having say, 5 or 6 strings -- is there a pattern I can use to apply a function to all of them? Seems like it would be a functor or something but I'm not sure
2020-12-11 14:11:54 +0100 <dminuoso> Kronic: You could make it MonoFoldable
2020-12-11 14:12:03 +0100ces(~ces@fsf/member/ces)
2020-12-11 14:12:16 +0100 <dminuoso> It would require either boilerplating this, or you could use Generics for it
2020-12-11 14:12:56 +0100 <dminuoso> Oh, MonoFunctor of course, not MonoFoldable. but the latter would also exist :)
2020-12-11 14:13:47 +0100 <Kronic> Hm, I did find search results for MonoFoldable but not MonoFunctor, could you point me in the right direction?
2020-12-11 14:14:06 +0100 <dminuoso> https://hackage.haskell.org/package/mono-traversable-1.0.15.1/docs/Data-MonoTraversable.html#t:Mon…
2020-12-11 14:14:32 +0100 <dminuoso> This is largely only useful when you write stuff that works over generic mono* things.
2020-12-11 14:15:28 +0100Benzi-Junior(~BenziJuni@88-149-65-135.du.xdsl.is)
2020-12-11 14:15:53 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-12-11 14:16:41 +0100 <dminuoso> Say you yourself are writing some `lowerCase :: MonoFunctor f => f Char -> f Char` that you intend to use on various textual containers. If its just a one-off, you're best off just writing some `fooMap :: (Text -> Text) -> T -> T`
2020-12-11 14:17:09 +0100 <dminuoso> Err, the example of lowerCase is wrong.
2020-12-11 14:17:43 +0100 <solonarv> dminuoso: wouldn't that actually be lowerCase :: (Element t ~ Char, MonoFunctor t) => t -> t
2020-12-11 14:17:43 +0100 <Kronic> you're probably right but perhaps I should learn how to use this, it looks a little bit above me at the moment but it seems very useful
2020-12-11 14:17:50 +0100 <dminuoso> solonarv: Was just about to write that, yeah
2020-12-11 14:18:11 +0100 <dminuoso> Mmm, I have yet to find a use for mono-traversable.. dunno..
2020-12-11 14:18:19 +0100drbean(~drbean@TC210-63-209-80.static.apol.com.tw) (Ping timeout: 260 seconds)
2020-12-11 14:18:28 +0100 <dminuoso> Out of the package, MonoTraversable and MonoFoldable seem most useful, MonoFunctor not so much
2020-12-11 14:18:58 +0100 <Kronic> My use case is I have a type that represents some user data and all of it is Maybe, so I want to filter out users who have any one field that is Nothing
2020-12-11 14:19:19 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:5d40:3eb5:dfbe:a235)
2020-12-11 14:21:14 +0100deu(de@uio.re) (Ping timeout: 265 seconds)
2020-12-11 14:23:19 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-11 14:23:41 +0100 <solonarv> I would usually just go straight to lens, tbh
2020-12-11 14:24:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:5d40:3eb5:dfbe:a235) (Ping timeout: 264 seconds)
2020-12-11 14:24:32 +0100 <solonarv> :t each %~ toLower
2020-12-11 14:24:34 +0100 <lambdabot> Each s t Char Char => s -> t
2020-12-11 14:25:23 +0100 <solonarv> > let tlc = each %~ toLower in (tlc "Hello World!", tld (Data.Text.pack "Good Bye!"))
2020-12-11 14:25:25 +0100 <lambdabot> error:
2020-12-11 14:25:26 +0100 <lambdabot> Not in scope: ‘Data.Text.pack’
2020-12-11 14:25:26 +0100 <lambdabot> No module named ‘Data.Text’ is imported.
2020-12-11 14:25:26 +0100xff0x(~fox@2001:1a81:5221:8f00:f974:7952:c764:dde1) (Ping timeout: 258 seconds)
2020-12-11 14:25:35 +0100 <solonarv> @let import qualified Data.Text
2020-12-11 14:25:35 +0100 <Kronic> I've never used lens before, if this is a good use case for learning Lens I'm open to doing that
2020-12-11 14:25:38 +0100 <lambdabot> Defined.
2020-12-11 14:25:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97)
2020-12-11 14:25:40 +0100 <solonarv> > let tlc = each %~ toLower in (tlc "Hello World!", tld (Data.Text.pack "Good Bye!"))
2020-12-11 14:25:42 +0100 <lambdabot> error:
2020-12-11 14:25:43 +0100 <lambdabot> • Variable not in scope: tld :: Data.Text.Text -> b
2020-12-11 14:25:43 +0100 <lambdabot> • Perhaps you meant ‘tlc’ (line 1)
2020-12-11 14:25:51 +0100 <solonarv> > let tlc = each %~ toLower in (tlc "Hello World!", tlc (Data.Text.pack "Good Bye!"))
2020-12-11 14:25:53 +0100 <lambdabot> ("hello world!","good bye!")
2020-12-11 14:26:01 +0100 <solonarv> there! sorry for the spam, dang typos
2020-12-11 14:26:02 +0100 <dminuoso> lens is definitely not a bad idea
2020-12-11 14:26:04 +0100xff0x(~fox@2001:1a81:5221:8f00:c3d7:cf86:7125:4808)
2020-12-11 14:26:19 +0100 <solonarv> lens is a large library that can do many things, so there are many use cases
2020-12-11 14:26:36 +0100 <dminuoso> but, Im not sure whether something will generate a traversal for uniform types for you
2020-12-11 14:26:44 +0100 <solonarv> this same large size also makes it somewhat hard to learn, however
2020-12-11 14:26:55 +0100 <solonarv> dminuoso: generic-lens can!
2020-12-11 14:27:16 +0100 <dminuoso> solonarv: Can generi-lens generate a `Traversal' T Text` for `data T = T { f1 :: Text, f2 :: Text }` ?
2020-12-11 14:27:34 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt)
2020-12-11 14:28:40 +0100 <solonarv> dminuoso: yes: types @Text --; that does a "deep" traversal, whcih is fine in this case
2020-12-11 14:29:03 +0100 <Kronic> That looks pretty powerful
2020-12-11 14:30:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 264 seconds)
2020-12-11 14:30:39 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d)
2020-12-11 14:30:42 +0100 <Kronic> which library would you guys recommend? I heard microlens is a good starting place but I'm honestly not sure. I could start out with the main lens lib but that looks a little bit intimidating lol
2020-12-11 14:31:01 +0100 <solonarv> surprsingly there doesn't seem to be a shallow-traversal variant of 'typed' in generic-lens
2020-12-11 14:31:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b)
2020-12-11 14:31:16 +0100 <solonarv> Kronic: I jumped straight into 'lens' and simply ignored most of the library, lol
2020-12-11 14:32:37 +0100 <Kronic> I guess I'll give it a whirl
2020-12-11 14:33:25 +0100 <dminuoso> Kronic: For beginners, I'd recommend `optics` over `lens`
2020-12-11 14:33:34 +0100 <dminuoso> (There's also an equivalent `generic-optics` library)
2020-12-11 14:35:10 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-12-11 14:35:57 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 14:35:58 +0100 <Kronic> Hm... well would I be able to accomplish the same thing that I wanted the lens lib for?
2020-12-11 14:36:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b) (Ping timeout: 264 seconds)
2020-12-11 14:36:05 +0100 <dminuoso> Yes.
2020-12-11 14:36:09 +0100 <solonarv> oh yes, that might be a good idea. 'optics' didn't exist yet when I learned this.
2020-12-11 14:36:24 +0100 <dminuoso> `optics` is a newer version of `lens` that has, mostly, the same operators and functions
2020-12-11 14:36:56 +0100 <dminuoso> To you, it differs mainly by hiding its implementation behind newtypes and using type machinery to generate custom error message if you mis-use it
2020-12-11 14:37:07 +0100 <Kronic> Oh okay, sounds good. Thanks so much for your help. I'll see where I can get to with that
2020-12-11 14:37:27 +0100 <solonarv> oh yes, 'lens' type errors are famously impenetrable
2020-12-11 14:38:12 +0100 <phaazon> boxscape: what did you write it in?
2020-12-11 14:38:21 +0100 <boxscape> haskell
2020-12-11 14:38:34 +0100 <phaazon> I’ve AoC in Lua this year… I wanted to test Lua and… I’ve had enough, switching back to Haskell :D
2020-12-11 14:38:42 +0100 <phaazon> I’ve been doing*
2020-12-11 14:39:03 +0100 <solonarv> I also wrote it in Haskell; fortunately I already had a little "2D grid" library left from day 3
2020-12-11 14:39:13 +0100 <solonarv> so it was fairly painless overall
2020-12-11 14:39:17 +0100 <phaazon> :)
2020-12-11 14:39:28 +0100 <phaazon> yeah, from scratch, it’s ~50 lines on my side
2020-12-11 14:39:36 +0100 <phaazon> I could compress it a bit more I guess, but it’s well enough
2020-12-11 14:39:58 +0100 <phaazon> I liked recognizing an anamorphism :)
2020-12-11 14:40:22 +0100 <solonarv> mine is 82sloc apparently: https://github.com/Solonarv/adventofcode-2020/blob/main/haskell/solutions/Day11.hs
2020-12-11 14:40:42 +0100 <solonarv> a bunch of that is boilerplate, tests, and generous newlines, though
2020-12-11 14:40:53 +0100 <phaazon> https://github.com/phaazon/advent-of-code-2020/blob/master/day11/Main.hs mine
2020-12-11 14:41:19 +0100 <phaazon> oh I need to remove part1, it’s not used
2020-12-11 14:41:32 +0100 <tomjaguarpaw> Who is responsible for the haskell.org website and/or where can I file tickets for issues on it?
2020-12-11 14:42:08 +0100 <dminuoso> tomjaguarpaw: #haskell-infrastructure is one place
2020-12-11 14:42:20 +0100 <tomjaguarpaw> Thanks, I shall try there
2020-12-11 14:42:23 +0100 <dminuoso> https://www.haskell.org/haskell-org-committee/
2020-12-11 14:42:25 +0100 <dminuoso> Is the proper place
2020-12-11 14:42:31 +0100 <Kronic> https://github.com/haskell-infra/www.haskell.org/ is the github repo
2020-12-11 14:42:42 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
2020-12-11 14:42:53 +0100shf(~sheaf@2a01:cb19:80cc:7e00:8914:36aa:fb38:e6af) (Read error: Connection reset by peer)
2020-12-11 14:44:42 +0100mrchampion(~mrchampio@38.18.109.23)
2020-12-11 14:44:51 +0100unfo-(~unfo-@185.103.96.147)
2020-12-11 14:45:51 +0100ces(~ces@fsf/member/ces) (Read error: Connection reset by peer)
2020-12-11 14:45:52 +0100Yumasi(~guillaume@176-172-89-74.abo.bbox.fr) (Ping timeout: 272 seconds)
2020-12-11 14:45:54 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b)
2020-12-11 14:46:50 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Ping timeout: 264 seconds)
2020-12-11 14:47:18 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-11 14:47:41 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-12-11 14:47:42 +0100Tario(~Tario@201.192.165.173)
2020-12-11 14:49:25 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds)
2020-12-11 14:50:03 +0100orzo(joe@lasker.childrenofmay.org)
2020-12-11 14:52:38 +0100LKoen(~LKoen@214.175.9.109.rev.sfr.net) (Read error: Connection reset by peer)
2020-12-11 14:53:15 +0100LKoen(~LKoen@214.175.9.109.rev.sfr.net)
2020-12-11 14:56:17 +0100gxt__(~gxt@gateway/tor-sasl/gxt)
2020-12-11 14:58:07 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 246 seconds)
2020-12-11 14:58:30 +0100 <Kronic> There's a lot in this optics lib, but from the looks of things I'll need to build a Traversal
2020-12-11 14:59:24 +0100 <dminuoso> Kronic: If you check solonarv' example above you dont need to do it yourself.
2020-12-11 14:59:33 +0100 <dminuoso> If you use generics-optics, it will do this out of the box
2020-12-11 14:59:44 +0100 <dminuoso> You just need to derive your type from Generic, and then you can just use `types` and voila
2020-12-11 15:00:48 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2020-12-11 15:01:25 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2020-12-11 15:03:08 +0100jespada(~jespada@90.254.245.49)
2020-12-11 15:08:33 +0100 <solonarv> hm. does anyone here have library recommendations for email access (read-only is fine)?
2020-12-11 15:09:13 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Ping timeout: 264 seconds)
2020-12-11 15:10:01 +0100carlomagno(~cararell@148.87.23.4)
2020-12-11 15:11:19 +0100 <solonarv> specifically, I'm looking to write a program that looks through my incoming emails, and if a particular email notification is found it does something else
2020-12-11 15:17:06 +0100SanchayanM(~Sanchayan@171.76.122.153)
2020-12-11 15:18:35 +0100daaaamien(~damien@2a01:e34:ef93:9a60:1adb:f2ff:fe40:717b)
2020-12-11 15:18:46 +0100SanchayanMaity(~Sanchayan@122.178.245.223) (Ping timeout: 256 seconds)
2020-12-11 15:19:07 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-11 15:19:35 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 15:20:02 +0100daaaamien(~damien@2a01:e34:ef93:9a60:1adb:f2ff:fe40:717b) ()
2020-12-11 15:23:47 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
2020-12-11 15:24:26 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2020-12-11 15:27:08 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97)
2020-12-11 15:28:41 +0100LKoen(~LKoen@214.175.9.109.rev.sfr.net) (Remote host closed the connection)
2020-12-11 15:29:58 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2020-12-11 15:31:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 264 seconds)
2020-12-11 15:33:17 +0100xsperry(~as@unaffiliated/xsperry) (Ping timeout: 258 seconds)
2020-12-11 15:34:19 +0100 <tomsmeding> is there a tool that lets me automatically find functions that are transitively unused in my haskell code?
2020-12-11 15:34:57 +0100 <tomsmeding> I don't particularly care what it does with functions that are exported from public modules of the library, though if it considers those unused I'd need to be able to set custom "used" roots
2020-12-11 15:35:33 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-12-11 15:35:57 +0100 <merijn> tomsmeding: GHC already does that at the module level?
2020-12-11 15:36:07 +0100 <tomsmeding> I know, and I explicitly want it across modules
2020-12-11 15:36:19 +0100 <tomsmeding> I think I'm exporting stuff that I'm not actually using anywhere
2020-12-11 15:36:20 +0100 <merijn> Not that I'm aware off?
2020-12-11 15:36:31 +0100 <tomsmeding> I thought so, but I wanted to ask before assuming
2020-12-11 15:38:31 +0100 <solonarv> the closest I can think of is -split-sections which allows for eliminating these unused functions at link time
2020-12-11 15:38:36 +0100darjeeling_(~darjeelin@122.245.123.202) (Ping timeout: 260 seconds)
2020-12-11 15:39:46 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-12-11 15:40:00 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-11 15:40:54 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com)
2020-12-11 15:41:21 +0100 <tomsmeding> thanks; while relevant, it's not what I'm looking for here :)
2020-12-11 15:43:28 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Client Quit)
2020-12-11 15:47:46 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b) (Remote host closed the connection)
2020-12-11 15:47:53 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b)
2020-12-11 15:48:42 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2020-12-11 15:49:18 +0100LKoen(~LKoen@214.175.9.109.rev.sfr.net)
2020-12-11 15:51:36 +0100Moyst(~moyst@212-149-213-144.bb.dnainternet.fi)
2020-12-11 15:52:03 +0100bitmagie(~Thunderbi@200116b80638310001d2823cf2ef2077.dip.versatel-1u1.de)
2020-12-11 15:52:36 +0100darjeeling_(~darjeelin@115.215.43.136)
2020-12-11 15:55:12 +0100aqd(~aqd@87-92-163-238.rev.dnainternet.fi) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-11 15:55:43 +0100atraii(~atraii@c-98-32-64-84.hsd1.ut.comcast.net) (Quit: ZNC 1.7.5 - https://znc.in)
2020-12-11 15:56:50 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-11 15:59:34 +0100atraii(~atraii@c-98-32-64-84.hsd1.ut.comcast.net)
2020-12-11 15:59:42 +0100SanchayanM(~Sanchayan@171.76.122.153) (Quit: SanchayanM)
2020-12-11 16:03:38 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-11 16:04:59 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-11 16:06:13 +0100shf(~sheaf@2a01:cb19:80cc:7e00:159e:9ac:2ff5:a704)
2020-12-11 16:08:46 +0100deu(de@uio.re)
2020-12-11 16:11:21 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-11 16:13:17 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-11 16:13:35 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
2020-12-11 16:15:17 +0100 <tomjaguarpaw> Perhaps I shouldn't have compiled Pandoc
2020-12-11 16:16:08 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-11 16:16:10 +0100phasespace(~sar@80-89-47-117.inet.signal.no) (Ping timeout: 246 seconds)
2020-12-11 16:17:15 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b) (Remote host closed the connection)
2020-12-11 16:22:33 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b)
2020-12-11 16:29:17 +0100 <sm[m]> tomjaguarpaw: yes that's almost always a mistake :-)
2020-12-11 16:30:14 +0100 <sm[m]> who would think a simple markdown reading module would humble our powerful machines
2020-12-11 16:31:58 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-11 16:33:51 +0100Entertainment(~entertain@104.246.132.210) ()
2020-12-11 16:34:44 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-11 16:36:38 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2020-12-11 16:37:50 +0100st8less(~st8less@2603:a060:11fd:0:841d:e9ad:74f7:93f9) (Ping timeout: 264 seconds)
2020-12-11 16:40:57 +0100phasespace(~sar@89-162-33-21.fiber.signal.no)
2020-12-11 16:42:09 +0100st8less(~st8less@inet-167-224-197-181.isp.ozarksgo.net)
2020-12-11 16:45:28 +0100 <dminuoso> solonarv: HaskellNet?
2020-12-11 16:45:29 +0100 <exarkun> do "simple" and "markdown" belong in the same sentence?
2020-12-11 16:46:48 +0100 <dminuoso> solonarv: Im using the SMTP portion of it, and aside from some oddities, it seemed fine.
2020-12-11 16:49:13 +0100 <dminuoso> tomsmeding: https://github.com/ocharles/weeder
2020-12-11 16:49:45 +0100 <sm[m]> I would think so!
2020-12-11 16:50:13 +0100 <sm[m]> We're not parsing Perl or Haskell here
2020-12-11 16:50:21 +0100codeAlways(uid272474@gateway/web/irccloud.com/x-kqsckzxfcmyupltw)
2020-12-11 16:50:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-11 16:51:29 +0100acidjnk_new(~acidjnk@p200300d0c719ff053d8846c1390abdcb.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2020-12-11 16:54:24 +0100 <merijn> sm[m]: Yeah, Haskell isn't ambiguous :p
2020-12-11 16:54:29 +0100 <merijn> (Not sure about Perl)
2020-12-11 16:54:30 +0100 <solonarv> dminuoso: I did find that one, it gave me pause due to being currently unmaintained; but I suppose email protocols don't exactly innovate very often
2020-12-11 16:55:10 +0100 <merijn> sm[m]: Markdown is one of those things that seems superficially simple, but when you look into it you realise it's so underspecified there's tons of ambiguity in both possible syntax and what it should mean
2020-12-11 16:55:34 +0100 <dminuoso> solonarv: Indeed, especially the older protocols are well designed that you can write a stable implementation around it very easily
2020-12-11 16:55:38 +0100 <merijn> Which is also why we have like 15 billion markdown "flavours", rather than a single "correct" markdown parser
2020-12-11 16:55:45 +0100 <dminuoso> fsvo "well designed"
2020-12-11 16:55:58 +0100 <merijn> Restructured Text > Markdown for that reason alone
2020-12-11 16:56:13 +0100 <justsomeguy> I like ReStructuredText, which is like a standardized alternative to markdown with a proper spec and rendering software.
2020-12-11 16:56:19 +0100 <justsomeguy> Ah, beat me to it.
2020-12-11 16:56:26 +0100 <merijn> justsomeguy: :p
2020-12-11 16:56:45 +0100kuribas(~user@ptr-25vy0i9ovuvi4dmg8ha.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-12-11 16:59:03 +0100gxt__(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-12-11 17:00:31 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-11 17:00:31 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2020-12-11 17:00:31 +0100neiluj(~jco@unaffiliated/neiluj)
2020-12-11 17:01:34 +0100_linker_(~linker@2a02:a31a:a041:9a80:1df2:d4df:88af:3980)
2020-12-11 17:05:05 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-11 17:06:03 +0100ericsagn1(~ericsagne@2405:6580:0:5100:c504:28ef:2ca:d7c2) (Ping timeout: 258 seconds)
2020-12-11 17:10:12 +0100notzmv(~user@unaffiliated/zmv)
2020-12-11 17:10:53 +0100scasc(~szabi@213142096072.public.telering.at) (Ping timeout: 265 seconds)
2020-12-11 17:12:48 +0100Rudd0(~Rudd0@185.189.115.98)
2020-12-11 17:17:01 +0100acidjnk_new(~acidjnk@p200300d0c719ff72385a765c3f0a7348.dip0.t-ipconnect.de)
2020-12-11 17:17:13 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-11 17:18:31 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-11 17:18:42 +0100ericsagn1(~ericsagne@2405:6580:0:5100:e26e:cf9:1dd6:9615)
2020-12-11 17:18:47 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Client Quit)
2020-12-11 17:19:16 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-11 17:20:43 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 17:23:11 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-11 17:24:23 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-11 17:25:03 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-12-11 17:25:37 +0100conal(~conal@107.181.166.103)
2020-12-11 17:25:47 +0100unlink2(~unlink2@p5dc0acf8.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-11 17:25:47 +0100 <shapr> Wow, I love this paper https://www.microsoft.com/en-us/research/uploads/prod/2020/11/perceus-tr-v1.pdf
2020-12-11 17:25:52 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 265 seconds)
2020-12-11 17:25:55 +0100 <shapr> It's a whole language inside the ST monad
2020-12-11 17:26:11 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com)
2020-12-11 17:27:07 +0100 <Uniaika> my gawd
2020-12-11 17:27:24 +0100unlink2(~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de)
2020-12-11 17:27:57 +0100 <Uniaika> oh yeah that's Koka
2020-12-11 17:28:01 +0100 <Uniaika> *used in Koka
2020-12-11 17:28:03 +0100 <Uniaika> very neat
2020-12-11 17:28:41 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97)
2020-12-11 17:30:38 +0100 <Geekingfrog> I'm using amazonka and I have a bunch of lens setters like so: x & foo . bar . set1 .~ val1 & foo . bar .set2 .~ val2 Is there a way to group together the prefix? Something like x & (foo . bar) & set1 .~ val1 & set2 .~ val2
2020-12-11 17:30:44 +0100 <Ariakenom> reads abstract. is confused. ctrl-f cycles. feels betrayed
2020-12-11 17:30:58 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2020-12-11 17:31:43 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2020-12-11 17:32:10 +0100Amras(~Amras@unaffiliated/amras) (Remote host closed the connection)
2020-12-11 17:32:20 +0100 <c_wraith> Geekingfrog: how do you feel about using &~ and zoom?
2020-12-11 17:33:14 +0100 <Geekingfrog> Never used that, but why not
2020-12-11 17:33:34 +0100 <Geekingfrog> zoom seems straightforward, &~ though…
2020-12-11 17:33:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 264 seconds)
2020-12-11 17:35:30 +0100 <aplainzetakind> My referential transparency is broken: https://dpaste.com/4DFLERT3B
2020-12-11 17:36:02 +0100 <aplainzetakind> What's going on I have no idea
2020-12-11 17:36:50 +0100pokid(~pokid@unaffiliated/pokid) ()
2020-12-11 17:38:11 +0100 <c_wraith> > ("string", (([1, 2, 3], True), ())) &~ zoom (_2 . _1 . _1) (do ix 0 += 5 ; ix 2 %= negate) -- Geekingfrog: this would be a lot cleaner if it wasn't all on one line
2020-12-11 17:38:14 +0100 <lambdabot> ("string",(([6,2,-3],True),()))
2020-12-11 17:38:22 +0100ubert(~Thunderbi@p200300ecdf1e538de6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-11 17:38:40 +0100 <ski> aplainzetakind> :t foo
2020-12-11 17:38:46 +0100ubert(~Thunderbi@p200300ecdf1e530fe6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-11 17:39:12 +0100 <aplainzetakind> ski: foo :: (Num a, Num b, Enum a, Enum b, Ord a, Ord b) => [(a, b)]
2020-12-11 17:39:36 +0100 <Geekingfrog> c_wraith, thanks. Indeed, it's fine with multilines
2020-12-11 17:39:47 +0100knupfer(~Thunderbi@200116b82c2b420031fa514480f2150c.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
2020-12-11 17:40:18 +0100 <ski> aplainzetakind> :t m0
2020-12-11 17:40:43 +0100 <aplainzetakind> ski: m0 :: M.Map (GHC.Word.Word32, GHC.Word.Word32) GHC.Word.Word32
2020-12-11 17:41:59 +0100 <solonarv> you can also write it without zoom and &~, like so: x & foo . bar %~ (set1 .~ val1) . (set2 .~ val2)
2020-12-11 17:42:01 +0100 <ski> > [-1 .. 1] :: [Word32]
2020-12-11 17:42:04 +0100 <lambdabot> []
2020-12-11 17:42:24 +0100 <aplainzetakind> Ah of course.
2020-12-11 17:42:26 +0100 <aplainzetakind> Thanks.
2020-12-11 17:44:05 +0100 <aplainzetakind> It's interesting though.
2020-12-11 17:44:22 +0100toorevitimirp(~tooreviti@117.182.180.221) (Remote host closed the connection)
2020-12-11 17:44:37 +0100 <aplainzetakind> So when foo is defined, how it's generated is still relevant or what?
2020-12-11 17:44:54 +0100 <aplainzetakind> After all no negative values survive that list comprehension.
2020-12-11 17:44:56 +0100 <aplainzetakind> Hmm.
2020-12-11 17:45:01 +0100 <aplainzetakind> OK.
2020-12-11 17:45:01 +0100 <ski> `foo' is overloaded
2020-12-11 17:45:21 +0100 <ski> it's presumably recomputed, each time you use it
2020-12-11 17:45:27 +0100 <aplainzetakind> foo isn't evaluated until it's called.
2020-12-11 17:46:08 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-11 17:46:08 +0100 <ski> it's most probably not even cached, even after its value has been demanded (at some particular type)
2020-12-11 17:47:04 +0100inkbottle(~inkbottle@aaubervilliers-654-1-76-48.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2020-12-11 17:48:51 +0100conal(~conal@107.181.166.103) (Quit: Computer has gone to sleep.)
2020-12-11 17:49:30 +0100zebrag(~inkbottle@aaubervilliers-654-1-76-48.w86-212.abo.wanadoo.fr)
2020-12-11 17:51:39 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2020-12-11 17:52:30 +0100notzmv(~user@unaffiliated/zmv)
2020-12-11 17:52:50 +0100boxscape(86ab2c53@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.83) (Ping timeout: 256 seconds)
2020-12-11 17:52:56 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 240 seconds)
2020-12-11 17:54:31 +0100Lowl3v3l(~Lowl3v3l@dslb-002-203-233-025.002.203.pools.vodafone-ip.de)
2020-12-11 17:54:36 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-11 17:54:46 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2020-12-11 17:55:00 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-11 17:55:03 +0100plutoniix(~q@ppp-223-24-188-231.revip6.asianet.co.th)
2020-12-11 17:57:18 +0100heatsink(~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97)
2020-12-11 18:02:31 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-12-11 18:04:03 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2020-12-11 18:04:32 +0100christo(~chris@81.96.113.213)
2020-12-11 18:09:16 +0100shadowdaemon(~user@unaffiliated/shadowdaemon) (Quit: ERC Version 5.3 (IRC client for Emacs))
2020-12-11 18:09:21 +0100son0p(~son0p@181.58.39.182)
2020-12-11 18:09:54 +0100ransom_(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-11 18:10:03 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-11 18:10:36 +0100qoppa(1842826a@S0106283b8265e5fa.cg.shawcable.net)
2020-12-11 18:12:17 +0100qoppa(1842826a@S0106283b8265e5fa.cg.shawcable.net) (Remote host closed the connection)
2020-12-11 18:13:02 +0100ransom__(c4264035@gateway/vpn/protonvpn/c4264035)
2020-12-11 18:14:41 +0100ransom_(c4264035@gateway/vpn/protonvpn/c4264035) (Ping timeout: 265 seconds)
2020-12-11 18:19:47 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-11 18:22:56 +0100 <phaazon> https://github.com/phaazon/advent-of-code-2020/blob/master/day11/Main.hs
2020-12-11 18:23:12 +0100 <phaazon> I think I cannot compress more without losing type signatures or yielding ugly where clauses :D
2020-12-11 18:23:24 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
2020-12-11 18:23:35 +0100 <glguy> phaazon, You'll also find a lot of Haskell AoC chat on ##adventofcode-spoilers
2020-12-11 18:24:08 +0100_linker_(~linker@2a02:a31a:a041:9a80:1df2:d4df:88af:3980) (Remote host closed the connection)
2020-12-11 18:24:22 +0100 <phaazon> glguy: neat :)
2020-12-11 18:25:13 +0100 <glguy> phaazon, we're also hammering on that one https://github.com/glguy/advent2020/blob/master/execs/Day11.hs
2020-12-11 18:25:54 +0100enedil(~enedil@d101-29.icpnet.pl)
2020-12-11 18:26:05 +0100 <phaazon> Data.Array
2020-12-11 18:26:08 +0100 <phaazon> interesting
2020-12-11 18:26:39 +0100 <phaazon> hm your stable anamorphism is fun
2020-12-11 18:26:39 +0100conal(~conal@64.71.133.70)
2020-12-11 18:26:43 +0100 <phaazon> it’s my “coFind” function
2020-12-11 18:28:02 +0100enedil(~enedil@d101-29.icpnet.pl) ()
2020-12-11 18:28:15 +0100 <glguy> phaazon, I think ti's a rule that you aren't allowed to shadow 'map' :)
2020-12-11 18:28:28 +0100 <phaazon> meh
2020-12-11 18:28:34 +0100 <phaazon> I’ll call it m4p then!
2020-12-11 18:28:51 +0100 <phaazon> shadowing should be allowed, I like shadowing.
2020-12-11 18:29:29 +0100 <glguy> Shadowing common names like that means I got very confused when I was reading out of order and found 'print $ solve <$> [rule1, rule2] <*> pure map'
2020-12-11 18:29:46 +0100 <phaazon> eheh
2020-12-11 18:29:52 +0100 <phaazon> yeah, you have a point
2020-12-11 18:29:55 +0100MOSCOS(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-11 18:30:21 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-11 18:30:53 +0100 <glguy> print (solve map <$> [rule1, rule2])
2020-12-11 18:32:25 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-12-11 18:33:13 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2020-12-11 18:33:45 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-12-11 18:34:20 +0100 <phaazon> I need to flip it if I do this
2020-12-11 18:34:23 +0100ubert(~Thunderbi@p200300ecdf1e530fe6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-11 18:35:44 +0100 <phaazon> yeah, rewrote it with just fmap
2020-12-11 18:37:36 +0100scasc(~szabi@213142096072.public.telering.at) (Ping timeout: 240 seconds)
2020-12-11 18:38:12 +0100 <glguy> phaazon, just reorder the parameters to solve so you don't have to flip it
2020-12-11 18:38:38 +0100 <ski> i guess it was more expedient to the definition of `go' to have the parameters in that order
2020-12-11 18:38:49 +0100 <phaazon> yep already done :)
2020-12-11 18:38:50 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-11 18:38:59 +0100tb6(239b6158@ec2-35-155-97-88.us-west-2.compute.amazonaws.com)
2020-12-11 18:39:24 +0100 <glguy> ski, sounds right
2020-12-11 18:39:53 +0100 <glguy> I like prioritizing the order for users rather than the implementation if I have to pick
2020-12-11 18:40:02 +0100 <ski> yes
2020-12-11 18:40:13 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Client Quit)
2020-12-11 18:40:15 +0100tb6(239b6158@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-11 18:41:03 +0100 <tomsmeding> dminuoso: Maybe I should've done slightly more research myself. Weeder looks exactly like what I was looking for. Thanks!
2020-12-11 18:41:11 +0100ski. o O ( `flip solve rule = go where ...' )
2020-12-11 18:41:19 +0100qoppa(1842826a@S0106283b8265e5fa.cg.shawcable.net)
2020-12-11 18:41:20 +0100jonathanx_(~jonathan@dyn-8-sc.cdg.chalmers.se) (Read error: Connection reset by peer)
2020-12-11 18:41:23 +0100 <dminuoso> tomsmeding: Oh I just know about it because it was mentioned about a week ago. ;)
2020-12-11 18:41:50 +0100tab40(239b6158@ec2-35-155-97-88.us-west-2.compute.amazonaws.com)
2020-12-11 18:41:51 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-12-11 18:42:09 +0100 <phaazon> ski: haha
2020-12-11 18:42:27 +0100 <pja> Weirdly, my solution for today’s AoC ran /faster/ if I generated adjacent co-ords on the fly in a list comprehension (ok, actually a do .. return) than if I explicitly wrote the 8 entry list of pairs in the source file.
2020-12-11 18:42:48 +0100 <pja> List fusion looking inside the comprehension? Maybe?
2020-12-11 18:43:13 +0100 <dminuoso> ski: Do you know of languages that let you define equalities like `flip solve rule = go` in the sense that they have no direction?
2020-12-11 18:43:27 +0100 <pja> Doing it the comprehension way chomped 20% off the runtime of Part1.
2020-12-11 18:43:44 +0100Lowl3v3l(~Lowl3v3l@dslb-002-203-233-025.002.203.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2020-12-11 18:43:46 +0100 <qoppa> If I want to dive into lenses for the first time, should I take a look at the lens package or the optics package? Or does it even matter?
2020-12-11 18:43:50 +0100 <dminuoso> That is, languages that have = as meaning an equation, rather than a declaration/binding
2020-12-11 18:44:07 +0100 <dminuoso> qoppa: They are functionally equivalent, but optics has better diagnostics.
2020-12-11 18:44:23 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2020-12-11 18:44:31 +0100 <dminuoso> lens has a few more exotic combinators, and optics is a little safer and more conservative, but it brings AffineTraversal/AffineFold to the game.
2020-12-11 18:44:33 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-12-11 18:44:45 +0100 <ski> @type let (flip -> mele) = \x0 -> fix (\loop -> \case [] -> False; x:xs -> x0 == x || loop xs) in mele
2020-12-11 18:44:47 +0100 <lambdabot> Eq a => [a] -> a -> Bool
2020-12-11 18:45:23 +0100 <ski> dminuoso : not quite sure what you mean by "they have no direction"
2020-12-11 18:46:03 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2020-12-11 18:46:57 +0100 <ski> can you clarify "languages that have = as meaning an equation, rather than a declaration/binding" ?
2020-12-11 18:47:19 +0100 <dminuoso> qoppa: Another consideration is, lens has a rather hefty dependency footprint, whereas optics-core is very light. You might think of microlens now, but that doesn't bring Prisms or Isos.
2020-12-11 18:47:55 +0100tab40(239b6158@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-11 18:47:58 +0100 <dminuoso> The ergonomics and names are mostly the same, so you can switch one for the other later on with relatively little work.
2020-12-11 18:47:58 +0100 <koz_> AffineTraversals are indeed very cool.
2020-12-11 18:48:14 +0100 <koz_> (also, what does the word 'affine' even mean?)
2020-12-11 18:48:18 +0100 <koz_> (I keep seeing it everywhere)
2020-12-11 18:48:39 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-11 18:49:32 +0100 <dminuoso> ski: Sure, so in Haskell (=) does not properly denote an equation, but rather a binding. The left side gets bound to the right hand side (with variable binders for function arguments), and you get to have multiple definitions, that sort of thing.
2020-12-11 18:49:51 +0100 <ski> (i think i played around a little with goal_expansion/2 in Prolog, to make a fact `maplist(foo,[a,b,c])).' be a shorthand for facts `foo(a). foo(b). foo(c).'. it would be interesting to have a principled way to be able to do something like that, though ..)
2020-12-11 18:50:05 +0100 <dminuoso> ski: So what I was wondering about, whether there were languages where you could just write `f = foldr (+) 0` or `foldr (+) 0 = f` either way, and have it declare an equivalence of expressions that can be used
2020-12-11 18:50:21 +0100 <dminuoso> Am I making any sense?
2020-12-11 18:50:29 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-11 18:51:22 +0100 <ski> equality in Prolog is used symmetrically, doesn't matter if you go `[X|Xs] = List' or `List = [X|Xs]', means the same thing
2020-12-11 18:52:46 +0100 <dminuoso> Ah interesting, I keep getting back to Prolog. Perhaps I should really learn it.
2020-12-11 18:52:48 +0100 <ski> and in Mercury, it doesn't matter if you type `Z = f(X,Y)' or `f(X,Y) = Z', when calling the function f/2. however, when defining it, i'm pretty sure you have to go either `f(X,Y) = ..X..Y..' or `f(X,Y) = Z :- ..X..Y..Z..' (you can have multiple defining equations, with pattern-matching, of course)
2020-12-11 18:52:56 +0100Saukk(~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e)
2020-12-11 18:53:15 +0100qoppa(1842826a@S0106283b8265e5fa.cg.shawcable.net) (Remote host closed the connection)
2020-12-11 18:54:21 +0100 <dolio> koz_: Comes from geometry. It's a relaxation of linear maps.
2020-12-11 18:55:29 +0100 <ski> koz_ : linear maps include scaling,rotation,reflection,shear -- affine further includes translations among those
2020-12-11 18:55:53 +0100 <koz_> ski and dolio both: So how does this relate to 'AffineTraversal'?
2020-12-11 18:56:49 +0100 <dolio> There, linear means stuff like `f(a*x + b*y) = a*f(x) + b*f(y)`, and affine allows you to also have a term that doesn't depend on the function argument. So it kind of preserves sizes.
2020-12-11 18:58:23 +0100 <pjb> /whoami
2020-12-11 18:58:24 +0100 <Kronic> Does anyone run into any issues with the haskell package just not detecting certain imports? I´m importing a library and it just cannot seem to find it despite stack build/ghci being able to see it. I restarted the LSP a few times and still nothing
2020-12-11 18:58:36 +0100 <Kronic> Haskell package in VSCode I should say
2020-12-11 18:58:41 +0100Saukk(~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e) (Remote host closed the connection)
2020-12-11 18:59:16 +0100 <ski> consider an affine function like `x |-> A*x + b'. `A',`x',`b' may be real numbers (say). or perhaps `x' and `b' are vectors, and `A' a matrix. now consider e.g. `type F x = Either (A,x) B'. a value of type `F x' contains at most one `x', hence `F' is affine. otoh with `type G x = (A,x)', a value of type `G x' contains exactly one `x', so `G' is linear
2020-12-11 18:59:43 +0100Lowl3v3l(~Lowl3v3l@2001:638:1558:99f8::1)
2020-12-11 19:00:30 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-12-11 19:00:41 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-12-11 19:01:02 +0100 <dolio> There's a relationship between linear maps and logical functions that use their variable exactly once. Adding translation is like adding building blocks that can ignore the argument, so the variables are used at most once.
2020-12-11 19:02:29 +0100 <ski> the presense of the "constant term", not involving `x', makes it affine. if there was any term (/ alternative) involving more than one value of type `x', then it would not be linear. e.g. i guess you could call `H', where `type H x = Either (x,x) (Either (Bool,x) C)', "quadratic" (cf. `x |-> x^2 + 2*x + C')
2020-12-11 19:02:30 +0100ransom_(~c4264035@undergraduate-jvossen-9690.mines.edu)
2020-12-11 19:02:43 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-11 19:03:20 +0100 <koz_> OK, I think I get the idea now.
2020-12-11 19:03:27 +0100 <koz_> Thanks!
2020-12-11 19:03:43 +0100 <dolio> Then an affine traversal visits at most 1 location.
2020-12-11 19:04:05 +0100ransom__(c4264035@gateway/vpn/protonvpn/c4264035) (Ping timeout: 240 seconds)
2020-12-11 19:04:09 +0100 <dolio> A lens is a linear traversal.
2020-12-11 19:04:49 +0100 <ski> it (the affine traversal) either refers to a single location, or it fails to refer (the location doesn't exist, in the given data structure that we're traversing in search for the location in question)
2020-12-11 19:04:59 +0100 <koz_> dolio: In this case, linear means 'exactly 1 location'?
2020-12-11 19:05:05 +0100 <dolio> Yes.
2020-12-11 19:06:28 +0100 <koz_> Oh, neat.
2020-12-11 19:06:40 +0100 <koz_> But yeah, big fan of the opticsverse, and also TIL!
2020-12-11 19:07:28 +0100 <ski> dminuoso : anyway, imho, having some familiarity of logic programming is worthwhile, at least as general background knowledge, for a programmer, so that one can recognize when applying it may be worthwhile. "another toolset in your toolbox"
2020-12-11 19:07:30 +0100 <solonarv> a Lens' s a is a witness that s ≃ a * x, for some x; this is linear!
2020-12-11 19:07:58 +0100 <ski> hm, so it is a witness of a divisibility relation ?
2020-12-11 19:08:17 +0100conal(~conal@64.71.133.70)
2020-12-11 19:08:28 +0100 <solonarv> a Traversal' s a is a witness that s ≃ sum_{i from 0 to infinity} a^i x_i, for some set of x_i
2020-12-11 19:08:35 +0100 <solonarv> (i.e. a power series / polynomial)
2020-12-11 19:08:48 +0100 <ski> (could we have called it `Divides a s' ?)
2020-12-11 19:09:29 +0100 <solonarv> an AffineTraversal' s a, then, says that actually, this power series / polynomial is an affine function: s ≃ x_0 + a * x_1
2020-12-11 19:10:22 +0100 <solonarv> ski: sure! there might even be a paper on that somewhere
2020-12-11 19:11:50 +0100 <koz_> solonarv: I think jle` did a writeup saying something similar?
2020-12-11 19:12:34 +0100ystael(~ystael@209.6.50.55) (Quit: Lost terminal)
2020-12-11 19:12:54 +0100ystael(~ystael@209.6.50.55)
2020-12-11 19:13:00 +0100 <solonarv> quite likely; if so then I probably read it at some point and just regurgitated what I remembered
2020-12-11 19:13:05 +0100ski. o O ( ⌜s ≃ ⌊s ∕ a⌋ + (s % a) ⋅ a⌝ )
2020-12-11 19:13:10 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-11 19:13:59 +0100 <solonarv> I think you meant to place that "⋅ a" next to the other term?
2020-12-11 19:14:01 +0100 <ski> (er .. sorry, meant ⌜s ≃ s % a + ⌊s ∕ a⌋ ⋅ a⌝, actually)
2020-12-11 19:14:01 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 264 seconds)
2020-12-11 19:14:13 +0100 <ski> yea
2020-12-11 19:15:24 +0100 <ski> (this reminds me of numeral systems, and arithmetic operations on finite prefices of naturals, that i've been thinking about recently)
2020-12-11 19:15:39 +0100enedil(~enedil@d101-29.icpnet.pl)
2020-12-11 19:16:04 +0100remby(~remby@2607:fea8:2c40:a3::56de)
2020-12-11 19:16:19 +0100 <enedil> Hey, is it possible to use guards inside anonymous functions? Something like \x -> | x<3 = 2 | otherwise 5
2020-12-11 19:16:29 +0100 <jle`> enedil: you can use -XMultiWayIf
2020-12-11 19:17:09 +0100 <jle`> \x -> if | x < 2 -> 2 | otherwise -> 5
2020-12-11 19:17:21 +0100 <ski> % :t \x -> if | x<3 -> 2 | otherwise -> 5
2020-12-11 19:17:21 +0100 <solonarv> or a 'case' expression (possibly merged into the lambda using LambdaCase)
2020-12-11 19:17:22 +0100 <yahb> ski: (Ord a, Num a, Num p) => a -> p
2020-12-11 19:17:23 +0100 <jle`> but since you only have two branches it might be better to use just a normal if
2020-12-11 19:17:35 +0100 <solonarv> % :t \case x | x<3 -> 2; _ -> 5
2020-12-11 19:17:35 +0100 <yahb> solonarv: (Ord a, Num a, Num p) => a -> p
2020-12-11 19:17:45 +0100 <ski> % :t \x -> case () of () | x<3 -> 2 | otherwise -> 5
2020-12-11 19:17:45 +0100 <yahb> ski: (Ord a, Num a, Num p) => a -> p
2020-12-11 19:17:46 +0100 <jle`> ooh fancy
2020-12-11 19:18:29 +0100nuncanada(~dude@179.235.160.168)
2020-12-11 19:18:47 +0100 <enedil> oo, cool
2020-12-11 19:19:05 +0100 <enedil> I fear using language extensions because when I use some, everything starts falling apart
2020-12-11 19:19:50 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-sljyysfpgmayjhiw)
2020-12-11 19:20:05 +0100 <solonarv> LambdaCase and MultiWayIf are both harmless syntax extensions, enabling them will never break existing code and they work straightforwardly
2020-12-11 19:20:19 +0100 <ski> the last version doesn't use any extensions
2020-12-11 19:20:47 +0100 <solonarv> it's also definitely not something I"d recommend, tbh
2020-12-11 19:21:18 +0100 <ski> `MultiWayIf' ?
2020-12-11 19:24:24 +0100 <solonarv> sure, that one's fine; I meant that I wouldn't recommend your (ski's) last version
2020-12-11 19:25:42 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-12-11 19:26:57 +0100 <ski> ah :)
2020-12-11 19:27:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Reconnecting)
2020-12-11 19:27:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 19:27:28 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2) (Read error: Connection reset by peer)
2020-12-11 19:27:33 +0100 <ski> i wasn't necessarily recommending it, either. just pointing out the possibility
2020-12-11 19:27:45 +0100 <enedil> what's wrong with that case?
2020-12-11 19:28:11 +0100 <ski> nothing wrong with it, really, i'd say
2020-12-11 19:28:16 +0100 <enedil> solonarv: ^
2020-12-11 19:28:25 +0100 <ski> but the other two may be clearer, more to the point
2020-12-11 19:28:39 +0100 <enedil> ah, ok
2020-12-11 19:29:17 +0100 <ski> (but if you didn't want to use those extensions, then you could use the latter. i have, occasionally, used it)
2020-12-11 19:30:00 +0100bollu2(~bollu@139.59.46.74)
2020-12-11 19:30:26 +0100solonarv_(~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr)
2020-12-11 19:30:34 +0100solonarv(~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr) (Ping timeout: 265 seconds)
2020-12-11 19:30:46 +0100bollu(~bollu@139.59.46.74) (Read error: Connection reset by peer)
2020-12-11 19:30:46 +0100bollu2bollu
2020-12-11 19:32:49 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2)
2020-12-11 19:33:00 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2020-12-11 19:33:41 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-11 19:34:33 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 272 seconds)
2020-12-11 19:35:34 +0100 <enedil> thanks <3
2020-12-11 19:35:48 +0100 <carbolymer> I have `foo :: STM ()` and `bar :: STM b`, how can I enforce that foo is executed before bar?
2020-12-11 19:36:07 +0100Fractalis(~Fractalis@2601:987:280:8d40:406e:6ad8:9d0d:835)
2020-12-11 19:36:16 +0100 <koz_> carbolymer: 'foo >> bar'?
2020-12-11 19:36:47 +0100Fractalis(~Fractalis@2601:987:280:8d40:406e:6ad8:9d0d:835) (Remote host closed the connection)
2020-12-11 19:36:56 +0100columbarius(~columbari@mue-88-130-54-162.dsl.tropolys.de) (Ping timeout: 240 seconds)
2020-12-11 19:37:26 +0100 <carbolymer> koz_, you sure about that? because I'm having weird issues with lazines
2020-12-11 19:37:36 +0100 <koz_> carbolymer: What manner of issues?
2020-12-11 19:37:38 +0100o1lo01ol1o(~o1lo01ol1@46.50.88.242)
2020-12-11 19:37:44 +0100 <carbolymer> i.e. foo doesn't modify mutable collection as it should
2020-12-11 19:38:31 +0100 <koz_> Could you pastebin a small example of what you've got?
2020-12-11 19:38:40 +0100 <koz_> It's a bit hard to say what the cause or solution are just on that.
2020-12-11 19:39:30 +0100 <carbolymer> hmm, I might try
2020-12-11 19:39:35 +0100columbarius(~columbari@i5E86B3A7.versanet.de)
2020-12-11 19:39:44 +0100 <carbolymer> because I need to retype code from remote desktop....
2020-12-11 19:39:45 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-11 19:39:46 +0100 <dolio> solonarv_: The problem with that explanation is that Haskell has infinite traversals that can actually work. :)
2020-12-11 19:40:13 +0100 <solonarv_> dolio: eh?what's that referring to?
2020-12-11 19:40:31 +0100 <dolio> The power series explanation of a traversal.
2020-12-11 19:40:43 +0100 <dolio> That only includes finite powers.
2020-12-11 19:41:14 +0100 <solonarv_> oh, right
2020-12-11 19:41:23 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2020-12-11 19:41:53 +0100 <solonarv_> make the sum up-to-infinity-inclusive, then, I guess :p
2020-12-11 19:42:12 +0100o1lo01ol1o(~o1lo01ol1@46.50.88.242) (Ping timeout: 256 seconds)
2020-12-11 19:42:20 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-11 19:42:50 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2020-12-11 19:42:50 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:f4bb:54f5:d69c:a304) (Ping timeout: 258 seconds)
2020-12-11 19:43:36 +0100jonasm(~jonasm@78-56-197-192.static.zebra.lt)
2020-12-11 19:43:43 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-11 19:43:44 +0100fendor(~fendor@178.165.131.83.wireless.dyn.drei.com)
2020-12-11 19:44:07 +0100jonasm(~jonasm@78-56-197-192.static.zebra.lt) (Read error: Connection reset by peer)
2020-12-11 19:44:27 +0100fendor_(~fendor@178.165.131.83.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2020-12-11 19:45:08 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2020-12-11 19:45:37 +0100jonasm(~jonasm@78-56-197-192.static.zebra.lt)
2020-12-11 19:45:56 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2020-12-11 19:46:37 +0100jonasm(~jonasm@78-56-197-192.static.zebra.lt) (Read error: Connection reset by peer)
2020-12-11 19:48:00 +0100skithought it was already intended to be inclusive
2020-12-11 19:50:04 +0100ADG1089_(~androirc@122.163.174.248)
2020-12-11 19:51:29 +0100errst(~errst@unaffiliated/tirej)
2020-12-11 19:52:15 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2) (Read error: Connection reset by peer)
2020-12-11 19:53:24 +0100 <dolio> The problem is that just saying 'inclusive' doesn't make a whole lot of sense. There are a lot of infinities that aren't reducible to a linear order or something.
2020-12-11 19:54:52 +0100nineonine_(~nineonine@50.216.62.2)
2020-12-11 19:55:33 +0100 <dolio> The weirder your infinites get, though, the fewer functors are going to work, I guess.
2020-12-11 19:55:56 +0100 <monochrom> Yikes, it really comes down to explicating the ordinal ω then! I was going to say a few words on that but refrained.
2020-12-11 19:56:09 +0100hiroaki(~hiroaki@2a02:908:4b1b:20a0::6874)
2020-12-11 19:56:11 +0100 <dolio> No, I mean ω is not sufficient.
2020-12-11 19:56:14 +0100shf(~sheaf@2a01:cb19:80cc:7e00:159e:9ac:2ff5:a704) (Read error: Connection reset by peer)
2020-12-11 19:56:33 +0100knupfer(~Thunderbi@200116b82c2b420054afd2fffe7dc17c.dip.versatel-1u1.de)
2020-12-11 19:56:34 +0100knupfer(~Thunderbi@200116b82c2b420054afd2fffe7dc17c.dip.versatel-1u1.de) (Client Quit)
2020-12-11 19:56:47 +0100knupfer(~Thunderbi@i5E86B444.versanet.de)
2020-12-11 19:56:51 +0100thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2020-12-11 19:56:56 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
2020-12-11 19:56:57 +0100nineonine_nineonine
2020-12-11 19:57:19 +0100 <monochrom> OK, explicating all necessary ordinals.
2020-12-11 19:57:25 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2)
2020-12-11 19:58:19 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:b4bc:f6c9:c430:776f)
2020-12-11 19:58:26 +0100skiidly ponders having the sequence of coefficients being convergent
2020-12-11 19:59:17 +0100 <dolio> E.G. it's similar to how 'the free monad' isn't possibly-infinite-lists in Haskell, because you can't flatten every tree to a linearized list without destroying some information.
2020-12-11 19:59:18 +0100 <monochrom> OK, confound it all! Maybe generally well-foundedness (i.e., not inflicting a total order) if you don't want to shoehorn tree structures to total orders.
2020-12-11 19:59:27 +0100 <dolio> Even an infnite list.
2020-12-11 20:00:11 +0100 <dolio> Free monoid, even.
2020-12-11 20:00:29 +0100ski. o O ( "The intrinsic topology of Martin-Löf universes" by Martín Hötzel Escardó,Thomas Streicher in 2016-02-12 at <http://www.cs.bham.ac.uk/~mhe/papers/universe-indiscrete.pdf> )
2020-12-11 20:02:39 +0100 <dolio> Because directed limits of the binary operation + unit presentation of monoids are not reducible to the list presentation, or something. Only finite limits.
2020-12-11 20:04:01 +0100 <solonarv_> I was playing around with loeb and type-tetris'd my way into loebM :: (Traversable t, Monad m) => t (t a -> m a) -> m (t a)
2020-12-11 20:04:07 +0100 <solonarv_> https://gist.github.com/Solonarv/16e2c3d1301a99b6c26f59d6a261884b
2020-12-11 20:04:27 +0100 <solonarv_> does this have any merit? I have trouble wrapping my head around exactly what it does
2020-12-11 20:06:48 +0100bliminse(~bliminse@host86-134-63-68.range86-134.btcentralplus.com) (Ping timeout: 256 seconds)
2020-12-11 20:07:45 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds)
2020-12-11 20:08:23 +0100bliminse(~bliminse@host86-140-186-196.range86-140.btcentralplus.com)
2020-12-11 20:08:32 +0100 <dolio> Actually, maybe the problem is not the presentations. But the presentations only say that you can do finite amounts of associativity, and that doesn't let you reassociate all trees into a stream.
2020-12-11 20:11:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-11 20:11:49 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 20:13:52 +0100ransom_(~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: Textual IRC Client: www.textualapp.com)
2020-12-11 20:14:13 +0100 <carbolymer> koz_, well, I can't give you code as I'm unable to reproduce that on my machine :|
2020-12-11 20:14:52 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Ping timeout: 260 seconds)
2020-12-11 20:17:01 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-11 20:17:04 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds)
2020-12-11 20:17:48 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-12-11 20:17:51 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-12-11 20:21:19 +0100 <ski> > let loeb = fix . sequence; loebM = sequenceA . loeb . fmap (<=< sequenceA) in loebM [\xs -> [0],\xs -> [1]]
2020-12-11 20:21:22 +0100 <lambdabot> *Exception: <<loop>>
2020-12-11 20:24:40 +0100filwisher(~filwisher@78.141.201.45) (Ping timeout: 260 seconds)
2020-12-11 20:26:57 +0100o1lo01ol1o(~o1lo01ol1@31.22.250.118)
2020-12-11 20:27:28 +0100 <tomsmeding> carbolymer: I assume you can't take a photograph?
2020-12-11 20:28:31 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Ping timeout: 246 seconds)
2020-12-11 20:28:41 +0100shf(~sheaf@2a01:cb19:80cc:7e00:159e:9ac:2ff5:a704)
2020-12-11 20:29:05 +0100Tario(~Tario@201.192.165.173)
2020-12-11 20:30:32 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2020-12-11 20:31:13 +0100 <ski> > let loebM = mfix . runReaderT . traverse ReaderT in loebM [\xs -> [0,1],\xs -> [2,3,4]]
2020-12-11 20:31:15 +0100 <lambdabot> [[0,2],[0,3],[0,4],[1,2],[1,3],[1,4]]
2020-12-11 20:31:41 +0100filwisher(~filwisher@78.141.201.45)
2020-12-11 20:32:50 +0100 <dsal> solonarv_: If you make a monadic möb, you can call it a mönad
2020-12-11 20:33:31 +0100luke(~luke@bitnomial/staff/luke)
2020-12-11 20:34:35 +0100bitmagie(~Thunderbi@200116b80638310001d2823cf2ef2077.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-11 20:34:59 +0100kupi(uid212005@gateway/web/irccloud.com/x-zcsljpeaozocdwya)
2020-12-11 20:35:18 +0100 <ski> > let loebM = mfix . runReaderT . traverse ReaderT in loebM [\xs -> [(f . tail) xs | f <- [sum,product]],\xs -> [xs !! 2 + 3],\xs -> [2,4],\xs -> [length xs]]
2020-12-11 20:35:21 +0100 <lambdabot> [[11,5,2,4],[15,7,4,4],[40,5,2,4],[112,7,4,4]]
2020-12-11 20:36:13 +0100unfo-(~unfo-@185.103.96.147) (Ping timeout: 264 seconds)
2020-12-11 20:40:56 +0100o1lo01ol1o(~o1lo01ol1@31.22.250.118) (Remote host closed the connection)
2020-12-11 20:41:44 +0100sunetoft(~sunetoft@s91904426.blix.com)
2020-12-11 20:42:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 20:42:56 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2020-12-11 20:43:22 +0100christo(~chris@81.96.113.213)
2020-12-11 20:43:29 +0100urodna(~urodna@unaffiliated/urodna) (Ping timeout: 256 seconds)
2020-12-11 20:44:23 +0100ambidextrose(~fut-learn@107.72.99.138)
2020-12-11 20:44:25 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
2020-12-11 20:45:53 +0100skiglances at solonarv_
2020-12-11 20:46:20 +0100notzmv(~user@unaffiliated/zmv)
2020-12-11 20:47:25 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-11 20:47:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-11 20:50:02 +0100jneira(501e6453@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.83)
2020-12-11 20:50:07 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-11 20:52:10 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-11 20:52:16 +0100nineonin_(~nineonine@50.216.62.2)
2020-12-11 20:52:16 +0100nineonine(~nineonine@50.216.62.2) (Quit: nineonine)
2020-12-11 20:53:13 +0100blissful-(~blissful@unaffiliated/azuline)
2020-12-11 20:53:24 +0100Ariakenom_(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
2020-12-11 20:53:47 +0100blissful(~azuline@unaffiliated/azuline) (Quit: The Lounge - https://thelounge.chat)
2020-12-11 20:53:47 +0100blissful-blissful
2020-12-11 20:54:26 +0100nineonin_(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-11 20:54:48 +0100nineonine(~nineonine@50.216.62.2)
2020-12-11 20:55:13 +0100remby(~remby@2607:fea8:2c40:a3::56de) ("Good Bye")
2020-12-11 20:57:00 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2020-12-11 20:57:44 +0100ubert(~Thunderbi@p200300ecdf1e530fe6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-11 20:59:41 +0100 <Unhammer> With QuickCheck, how do I label a test so that it shows *when it fails* ? If I do
2020-12-11 20:59:44 +0100 <Unhammer> let (lots of vars) in QC.label "prop1" x>y .&&. QC.label "prop2" z>y+x
2020-12-11 20:59:46 +0100 <Unhammer> then it only shows the label when both labels pass, which is the opposite of helpful :)
2020-12-11 20:59:58 +0100ggole(~ggole@2001:8003:8119:7200:cdad:14fe:9dc3:f21) (Quit: Leaving)
2020-12-11 21:01:44 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-11 21:02:28 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-11 21:02:40 +0100argento(~argent0@168.227.97.34)
2020-12-11 21:03:19 +0100jpcooper(~user@unaffiliated/jpcooper)
2020-12-11 21:03:57 +0100Tario(~Tario@201.192.165.173)
2020-12-11 21:04:02 +0100 <jpcooper> Hello. What's the name of the extension the associates data types to specific constructors by adding an apostrophe to the name of the constructor?
2020-12-11 21:06:46 +0100 <monochrom> I'll just answer "DataKinds" and secretly expect that you're barking up the wrong tree.
2020-12-11 21:08:19 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) (Ping timeout: 258 seconds)
2020-12-11 21:12:11 +0100christo(~chris@81.96.113.213)
2020-12-11 21:14:05 +0100mrchampion(~mrchampio@38.18.109.23) (Ping timeout: 240 seconds)
2020-12-11 21:15:48 +0100shadowdaemon(~user@unaffiliated/shadowdaemon)
2020-12-11 21:15:51 +0100 <jpcooper> monochrom: It's not DataKinds. I seem to remember there being a way to get a type which is all values constructed with a chosen constructor
2020-12-11 21:15:59 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2) (Read error: Connection reset by peer)
2020-12-11 21:16:40 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2020-12-11 21:16:40 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2020-12-11 21:16:41 +0100mouseghost(~draco@wikipedia/desperek)
2020-12-11 21:16:54 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2020-12-11 21:17:22 +0100 <monochrom> There are only two extensions that adds apostrophes to data constructors. DataKinds and TemplateHaskell. Neither fits your wording.
2020-12-11 21:17:33 +0100 <jpcooper> Or does DataKinds support that as well
2020-12-11 21:18:37 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-11 21:19:00 +0100 <jpcooper> It seems I am barking up the wrong tree. Is there any way to do this?
2020-12-11 21:19:11 +0100actuallybatman(~sam@S010664777dafd303.cg.shawcable.net) ()
2020-12-11 21:19:16 +0100mrchampion(~mrchampio@38.18.109.23)
2020-12-11 21:19:16 +0100 <jpcooper> (without splitting the data type up)
2020-12-11 21:19:18 +0100 <monochrom> No.
2020-12-11 21:19:29 +0100 <jpcooper> That's a shame
2020-12-11 21:20:23 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2)
2020-12-11 21:20:24 +0100 <Unhammer> and wtf is a Rose in QuickCheck https://hackage.haskell.org/package/QuickCheck-2.8.2/docs/Test-QuickCheck-Property.html#g:4 this tells me nothing except that a rose is a rose is a rose
2020-12-11 21:21:22 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-zbtjtxhgvedwatkk)
2020-12-11 21:21:22 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2) (Read error: Connection reset by peer)
2020-12-11 21:21:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 21:21:28 +0100 <jpcooper> Unhammer: roses are trees
2020-12-11 21:21:49 +0100 <jpcooper> With varying numbers of branches at each node
2020-12-11 21:22:24 +0100 <monochrom> No, the doc tells you there are two cases.
2020-12-11 21:22:35 +0100 <Unhammer> I got that part, but I still don't know what it's doing in QC.Property
2020-12-11 21:22:44 +0100 <monochrom> And the first case has two fields. Those fields have types written there.
2020-12-11 21:22:49 +0100 <monochrom> And the second case etc etc
2020-12-11 21:23:05 +0100 <monochrom> And overall this is a recursive type, too.
2020-12-11 21:23:18 +0100 <Kronic> Question: what is the appropriate way to take all of the getters for a Record and apply them to a value typed as such?
2020-12-11 21:23:31 +0100 <Kronic> getters generated through makelenses, I should say
2020-12-11 21:23:35 +0100 <monochrom> So don't worry about it?
2020-12-11 21:23:45 +0100wonko7(~wonko7@lns-bzn-55-82-255-183-4.adsl.proxad.net)
2020-12-11 21:25:24 +0100 <jpcooper> Unhammer: aren't properties rose trees?
2020-12-11 21:25:48 +0100 <jpcooper> or the group things
2020-12-11 21:26:21 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-11 21:26:43 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-11 21:27:22 +0100 <solonarv_> ski: sorry, was off eating dinner; looks like that is indeed a sensible thing!
2020-12-11 21:27:31 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-11 21:27:40 +0100knupfer(~Thunderbi@i5E86B444.versanet.de) (Ping timeout: 256 seconds)
2020-12-11 21:28:39 +0100conal(~conal@64.71.133.70)
2020-12-11 21:28:39 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-11 21:29:13 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-11 21:29:22 +0100jpcooper(~user@unaffiliated/jpcooper) ("ERC (IRC client for Emacs 26.1)")
2020-12-11 21:29:54 +0100conal(~conal@64.71.133.70)
2020-12-11 21:30:10 +0100 <mouseghost> hemlo, here to bother again; is arrow notation that popular?
2020-12-11 21:30:14 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-11 21:30:23 +0100 <monochrom> Not popular.
2020-12-11 21:30:24 +0100 <dolio> No.
2020-12-11 21:30:40 +0100conal(~conal@64.71.133.70)
2020-12-11 21:30:49 +0100 <Rembane> It's generally seen as a dead end.
2020-12-11 21:30:49 +0100 <monochrom> It had two major use cases, both waned. hxt and lava.
2020-12-11 21:31:01 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-11 21:31:03 +0100knupfer(~Thunderbi@i5E86B444.versanet.de)
2020-12-11 21:31:20 +0100 <mouseghost> 👀
2020-12-11 21:33:45 +0100 <monochrom> I think a version of functional reactive programming uses it too? But Cale will explain to you why the arr method is an obstacle, not a help.
2020-12-11 21:34:15 +0100 <solonarv_> yes, there are one or two arrow-based FRP libraries
2020-12-11 21:34:26 +0100 <koz_> solonarv_: More than one or two, I think.
2020-12-11 21:34:39 +0100 <solonarv_> so I'm still right, technically? :p
2020-12-11 21:34:55 +0100son0p(~son0p@181.58.39.182) (Quit: leaving)
2020-12-11 21:35:06 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2)
2020-12-11 21:35:09 +0100 <ski> solonarv_ : note that my version behaves differently
2020-12-11 21:35:12 +0100 <monochrom> I played safe by wording "version" so it's always right FSVO "version" :)
2020-12-11 21:35:16 +0100 <solonarv_> I've never managed to wrap my head around them, but I understand reflex (which is monadic, not arrow-based) well enough that I can write working programs with it
2020-12-11 21:35:34 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-11 21:36:11 +0100remby(~remby@2607:fea8:2c40:a3::56de)
2020-12-11 21:36:36 +0100 <monochrom> IMO modeling digital circuits is a great application of arrows, so Lava would be the champion use case. But Lava left Haskell entirely.
2020-12-11 21:37:18 +0100 <monochrom> As for hxt, that's just being cute (more seriously, an MSc project) by being a Kleisli arrow, i.e., you may as well go monadic.
2020-12-11 21:37:44 +0100 <geekosaur> ad iirc later versions did so
2020-12-11 21:37:49 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-11 21:37:52 +0100 <monochrom> But you can see how if it's good for digital circuits, then it's good for reactive things, same idea.
2020-12-11 21:38:07 +0100 <fuzzypixelz> hello. I am very new to Haskell and funcctional programming in general. How would you write a number generator in Haskell? One that each time you call it returns the next integer in line? Or does one simple use an expression like [1, 2 ..]?
2020-12-11 21:38:21 +0100 <koz_> fuzzypixelz: What do you plan to do with it?
2020-12-11 21:39:01 +0100 <fuzzypixelz> no I'm just wondering how an experienced person would do it
2020-12-11 21:39:04 +0100 <monochrom> Simply [1..]
2020-12-11 21:39:13 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-11 21:39:14 +0100 <solonarv_> fuzzypixelz: a basic fact of Haskell is that a function must return the same thing each time you call it; so instead you will need some sort of data structure that lets you keep track of what number should come next; an infinite list like [1..] is a simple way to do that
2020-12-11 21:39:22 +0100 <fuzzypixelz> koz_: because I have no idea how to do it just using pure functions
2020-12-11 21:39:28 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-11 21:39:47 +0100 <monochrom> Python generators dream to be lazy lists. Haskell has real lazy lists.
2020-12-11 21:39:48 +0100 <koz_> I would say that [1..] unless you have something specific in mind?
2020-12-11 21:39:59 +0100sgibber2018(~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
2020-12-11 21:40:32 +0100 <monochrom> The generator is going to be [1..] regardless. The real question is how to write the consumer.
2020-12-11 21:40:44 +0100 <monochrom> Beware that programmers never mean what they say.
2020-12-11 21:41:06 +0100 <fuzzypixelz> not really, I thought asking this question would reveal some black magic about functional programming but it turns out haskell people already a convinient solution implemented
2020-12-11 21:41:35 +0100 <exarkun> Do Conduits have to be lists? What if have two separate functions that can produce elements? Can I merge them into one producer that produces elements from each as soon as they are available?
2020-12-11 21:41:41 +0100 <monochrom> But laziness is black magic.
2020-12-11 21:42:03 +0100 <exarkun> Do I leave the Conduit abstraction when things get that complex?
2020-12-11 21:42:08 +0100remby(~remby@2607:fea8:2c40:a3::56de) ("Good Bye")
2020-12-11 21:42:11 +0100 <monochrom> Convenient at the same time just because the language gives it to you.
2020-12-11 21:42:47 +0100 <monochrom> I have seen how Scheme students emulate it with much confusion and pain, and it is still missing one feature that Haskell has.
2020-12-11 21:42:51 +0100 <fuzzypixelz> maybe what I really ought to ask is how you implement it in the functional paragigm
2020-12-11 21:43:10 +0100 <monochrom> from i = i : from (i+1) ?
2020-12-11 21:43:17 +0100 <Cale> monochrom: I'd say it's not so much arr's fault (although it does belong in its own class), but that because arr was included, Arrow left out a bunch of structural details that are usually part of the definition of a monoidal category, and once those details were included, the abstraction served its purpose a lot better.
2020-12-11 21:43:22 +0100 <monochrom> then from 0 = 0 : 1 : 2 : ...
2020-12-11 21:43:51 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-11 21:44:00 +0100 <fuzzypixelz> from is a kayword?
2020-12-11 21:44:07 +0100 <monochrom> No, it's my function name.
2020-12-11 21:44:19 +0100mastarija(~mastarija@93-136-86-23.adsl.net.t-com.hr)
2020-12-11 21:44:25 +0100 <tomsmeding> > let cheese i = i : cheese (i + 1) in take 10 (cheese 0)
2020-12-11 21:44:28 +0100 <lambdabot> [0,1,2,3,4,5,6,7,8,9]
2020-12-11 21:44:29 +0100 <Cale> i.e. the maps which explicitly re-associate tuples, which introduce or eliminate units on one or the other side of a pair, and which swap the pair components (for a symmetric monoidal category)
2020-12-11 21:45:36 +0100argento(~argent0@168.227.97.34) (Ping timeout: 240 seconds)
2020-12-11 21:45:54 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 265 seconds)
2020-12-11 21:45:59 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-11 21:46:01 +0100 <monochrom> Ah, one can use arr for that, but should be specific methods to explicate the structure.
2020-12-11 21:46:13 +0100 <Uniaika> arr!
2020-12-11 21:46:57 +0100 <ski> @arr
2020-12-11 21:46:57 +0100 <lambdabot> I'll keel haul ya fer that!
2020-12-11 21:47:05 +0100 <koz_> Arr!
2020-12-11 21:47:08 +0100 <mouseghost> yarrr
2020-12-11 21:47:11 +0100 <tomsmeding> are there more people using ghcide or HLS using neovim+ALE and running into this issue where all diagnostics randomly disappear when doing stuff?
2020-12-11 21:47:20 +0100 <tomsmeding> if so, please upvote: https://github.com/haskell/ghcide/issues/949
2020-12-11 21:47:30 +0100 <monochrom> Yes, I really had the temptation to write "Arr, one can use arr for that, ..."
2020-12-11 21:48:26 +0100 <Kronic> God my solution to the day 4 AOC is really disgusting
2020-12-11 21:49:27 +0100 <Cale> monochrom: Yeah, if you have those explicit methods, it becomes possible to figure out before running an arrow where most values are being wired to
2020-12-11 21:49:42 +0100 <fuzzypixelz> monochrom: what is the ":" syntax?
2020-12-11 21:49:50 +0100 <monochrom> List syntax.
2020-12-11 21:49:51 +0100codeAlways(uid272474@gateway/web/irccloud.com/x-kqsckzxfcmyupltw) (Quit: Connection closed for inactivity)
2020-12-11 21:49:53 +0100 <Cale> Any "arr" is still a black box, but you're not forced to put black boxes in between every pair of computations any longer
2020-12-11 21:50:15 +0100 <monochrom> I trust that you survived the first few Haskell lessons and know that already.
2020-12-11 21:51:20 +0100unlink2(~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-11 21:51:38 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2) (Read error: Connection reset by peer)
2020-12-11 21:52:13 +0100 <Kronic> Would anyone be interested in suggesting ways I can improve this code? It is for day 4 of the AOC, part 1 only; https://dpaste.org/9ts8
2020-12-11 21:52:39 +0100 <ski> fuzzypixelz : `2 : [3,5,7]' adds `2' in front of the list `[3,5,7]', giving back the list `[2,3,5,7]'. so it combines a single element, and a list of additional elements, into a new list
2020-12-11 21:52:59 +0100unlink2(~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de)
2020-12-11 21:53:11 +0100 <fuzzypixelz> Oh so it's like Scheme's "cons"
2020-12-11 21:53:41 +0100 <ski> (so `2 : 3 : 5 : 7 : []', which means `2 : (3 : (5 : (7 : [])))', is the same as `[2,3,5,7]')
2020-12-11 21:53:44 +0100 <ski> yes
2020-12-11 21:53:54 +0100gxt__(~gxt@gateway/tor-sasl/gxt)
2020-12-11 21:54:48 +0100 <ski> (in fact, the latter is syntactic sugar for the former. just like in the Lisps, `(2 3 5 7)' is syntactic sugar for `(2 . (3 . (5 . (7 . ()))))')
2020-12-11 21:55:20 +0100mastarija(~mastarija@93-136-86-23.adsl.net.t-com.hr) (Read error: Connection reset by peer)
2020-12-11 21:55:22 +0100LKoen(~LKoen@214.175.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-12-11 21:56:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-11 21:56:05 +0100 <monochrom> Kronic: I wonder if, for example, you can define "foo s = parseDataPoint chunks s", then you just have to say foo "byr", foo "iyr", etc.
2020-12-11 21:56:10 +0100 <exarkun> Maybe `mergeSource` is what I was looking for
2020-12-11 21:56:33 +0100 <exarkun> But I dunno ... the docs don't actually say what "merge" means ... anyone know?
2020-12-11 21:57:12 +0100ralejs(~ralejs@2620:10d:c093:400::5:9f2)
2020-12-11 21:57:29 +0100 <Kronic> oh I see what you mean I think
2020-12-11 21:58:33 +0100argento(~argent0@168.227.97.34)
2020-12-11 21:59:19 +0100 <Kronic> Yea that does make it less repetitive, thank you
2020-12-11 22:00:32 +0100 <dolio> Cale: So, the issue is that you can't actually see the context structure of the monoidal category. There are just arbitrary functions inserted at various places?
2020-12-11 22:00:45 +0100hlysig(~hlysig@mobile-194-144-46-247.3G.internet.is)
2020-12-11 22:01:08 +0100ambidextrose(~fut-learn@107.72.99.138) (Quit: leaving)
2020-12-11 22:02:19 +0100 <Kronic> By the way, on a completely different note, how many people are using rio, the base replacement? Is that moving towards a standard or is that just an alternative option?
2020-12-11 22:02:35 +0100 <koz_> Kronic: It's _definitely_ in the 'just an alternative' camp.
2020-12-11 22:02:38 +0100 <Cale> dolio: Well, you can see some of it, but e.g. when desugaring proc/do notation, there will be an arr between literally every pair of lines, so that will obscure everything
2020-12-11 22:02:40 +0100mrchampion(~mrchampio@38.18.109.23) (Ping timeout: 260 seconds)
2020-12-11 22:02:47 +0100 <ski> @type isJust
2020-12-11 22:02:49 +0100 <lambdabot> Maybe a -> Bool
2020-12-11 22:03:39 +0100 <Kronic> koz_, thank you, I figured as much
2020-12-11 22:03:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
2020-12-11 22:04:09 +0100 <ski> @type all isJust :: [Maybe a] -> Bool
2020-12-11 22:04:11 +0100 <lambdabot> [Maybe a] -> Bool
2020-12-11 22:04:34 +0100 <Kronic> woah, didn know about that function
2020-12-11 22:05:33 +0100 <ski> instead of having a guard `length res == 1', and then using `head res', match the `res' input with `[r]' (rename `r' to whatever you prefer), then use `r'
2020-12-11 22:06:20 +0100 <ski> oh, right, it's not an input, but locally defined. you can use `case'-`of' to match on it
2020-12-11 22:06:26 +0100mrchampion(~mrchampio@38.18.109.23)
2020-12-11 22:06:44 +0100 <Kronic> the isJust/isNothing thing was very helpful, i should have known something like that already existed
2020-12-11 22:07:02 +0100 <ski> > words =<< lines "foo bar\nbaz quux"
2020-12-11 22:07:05 +0100 <lambdabot> ["foo","bar","baz","quux"]
2020-12-11 22:07:15 +0100 <Cale> You might also be interested in sequence here
2020-12-11 22:07:23 +0100 <Cale> > sequence [Just 1, Just 2, Just 3]
2020-12-11 22:07:26 +0100 <lambdabot> Just [1,2,3]
2020-12-11 22:07:32 +0100 <Cale> > sequence [Just 1, Just 2, Nothing]
2020-12-11 22:07:34 +0100 <lambdabot> Nothing
2020-12-11 22:07:55 +0100 <Kronic> that is useful
2020-12-11 22:09:45 +0100 <ski> [byr,iyr,eyr,hgt,hcl,ecl,pid,cid] = [parseDataPoint chunks x | x <- ["byr","iyr","eyr","hgt","hcl","ecl","pid","cid"]]
2020-12-11 22:10:30 +0100 <ski> i would probably not bother with defining `parsePassports' (as opposed to `parsePassport')
2020-12-11 22:11:52 +0100 <Kronic> nice I was able to wittle down isValidPassport p to = isJust $ sequence res
2020-12-11 22:12:23 +0100 <Kronic> Let me see what I can do with the case comment from before
2020-12-11 22:12:48 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 22:13:14 +0100luke(~luke@bitnomial/staff/luke) (Quit: sleep)
2020-12-11 22:13:19 +0100 <ski> perhaps you could define `validatePassport :: Passport -> Maybe ValidPassport', where `ValidPassport' doesn't involve `Maybe's (apart from country ?) ?
2020-12-11 22:14:08 +0100mrchampion(~mrchampio@38.18.109.23) (Ping timeout: 256 seconds)
2020-12-11 22:14:16 +0100skiwould just write `isJust (sequence_ res)' there (alternatively `all isJust res')
2020-12-11 22:15:04 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-11 22:15:38 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
2020-12-11 22:16:12 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-12-11 22:16:56 +0100argento(~argent0@168.227.97.34) (Ping timeout: 258 seconds)
2020-12-11 22:17:54 +0100mrchampion(~mrchampio@38.18.109.23)
2020-12-11 22:17:56 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds)
2020-12-11 22:18:14 +0100knupfer(~Thunderbi@i5E86B444.versanet.de) (Quit: knupfer)
2020-12-11 22:18:18 +0100knupfer1(~Thunderbi@200116b82c2b4200a4bfc96be48f5e57.dip.versatel-1u1.de)
2020-12-11 22:18:28 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-12-11 22:20:14 +0100carlomagno(~cararell@148.87.23.4) (Remote host closed the connection)
2020-12-11 22:20:40 +0100knupfer1knupfer
2020-12-11 22:21:05 +0100 <Kronic> Thanks for all of the suggestions, that helped a lot
2020-12-11 22:22:34 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-11 22:23:05 +0100conal(~conal@64.71.133.70)
2020-12-11 22:23:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 22:26:47 +0100mounty(~mounty@210.1.196.133)
2020-12-11 22:28:40 +0100carlomagno(~cararell@148.87.23.4)
2020-12-11 22:28:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-12-11 22:29:19 +0100son0p(~son0p@181.136.122.143)
2020-12-11 22:33:05 +0100carlomagno(~cararell@148.87.23.4) (Ping timeout: 240 seconds)
2020-12-11 22:36:04 +0100carlomagno(~cararell@148.87.23.4)
2020-12-11 22:38:31 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 22:39:31 +0100 <dminuoso> ski: Do you think the value extends curiosity and broadening your horizon? Are there real-world problems worthwhile solving in Prolog?
2020-12-11 22:41:27 +0100o1lo01ol1o(~o1lo01ol1@31.22.250.118)
2020-12-11 22:41:55 +0100 <monochrom> I recently wrote pseudocode for type inference for my students. It felt like Prolog.
2020-12-11 22:42:39 +0100xiinotulp(~q@ppp-27-55-90-169.revip3.asianet.co.th)
2020-12-11 22:44:42 +0100 <monochrom> "\x -> body" has type U->V under type environment E :- "body" has type V under type environment E∪{x::U}. U and V are unknowns to be solved.
2020-12-11 22:44:44 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2020-12-11 22:45:08 +0100carlomagno(~cararell@148.87.23.4) (Ping timeout: 260 seconds)
2020-12-11 22:45:43 +0100 <monochrom> "f e" has type V :- "e" has type U, "f" has type U->V
2020-12-11 22:46:04 +0100 <monochrom> (all under the same type environment, omitted)
2020-12-11 22:46:25 +0100o1lo01ol1o(~o1lo01ol1@31.22.250.118) (Ping timeout: 264 seconds)
2020-12-11 22:46:25 +0100plutoniix(~q@ppp-223-24-188-231.revip6.asianet.co.th) (Ping timeout: 264 seconds)
2020-12-11 22:46:51 +0100 <monochrom> I don't need backtracking, but it's certainly unification all the way down.
2020-12-11 22:47:02 +0100carlomagno(~cararell@148.87.23.8)
2020-12-11 22:47:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-11 22:47:36 +0100 <monochrom> http://www.vex.net/~trebla/haskell/type-inference.html
2020-12-11 22:53:09 +0100 <monochrom> Actually there are also presentations of type inference that benefits from backtracking. :)
2020-12-11 22:53:18 +0100 <lortabac> dminuoso: learning Prolog is a bit like learning Haskell for an imperative programmer, it's a different paradigm
2020-12-11 22:54:08 +0100 <dolio> If your type inference uses backtracking you should probably get different type inference, though. :þ
2020-12-11 22:55:15 +0100 <lortabac> monochrom: do you have examples of type inference with backtracking?
2020-12-11 22:56:59 +0100 <dolio> Some systems can be inferred, but only by trying a bunch of different possibilities, because there is no "principal" choice for certain terms.
2020-12-11 22:58:07 +0100 <dolio> Although stuff like that easily degenerates into just not being decidable at all.
2020-12-11 22:59:29 +0100 <monochrom> The "practical type Inference for arbitrary rank" paper presents, for each of rank-1 and rank-n (I guess more so for rank-n), both a non-deterministic rule and a deterministic rule.
2020-12-11 22:59:57 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-11 23:00:23 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2020-12-11 23:01:19 +0100 <lortabac> I need to read that paper again, I don't remember that part
2020-12-11 23:02:14 +0100 <monochrom> Their wording is "non-syntax-directed" and "syntax-directed".
2020-12-11 23:04:04 +0100 <AWizzArd> Anyone here using the IHP web framework?
2020-12-11 23:04:29 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2020-12-11 23:04:41 +0100cybai_(~cybai@2400:4050:3122:900:8422:f0e8:f906:32e1)
2020-12-11 23:05:02 +0100Tario(~Tario@201.192.165.173)
2020-12-11 23:06:45 +0100 <lortabac> monochrom: ok thanks, I understand what you mean now
2020-12-11 23:06:53 +0100elliott__(~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
2020-12-11 23:07:21 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-12-11 23:08:26 +0100cybai(~cybai@2400:4050:3122:900:45a6:8125:8bb4:dbed) (Ping timeout: 264 seconds)
2020-12-11 23:09:53 +0100Deide(~Deide@217.155.19.23)
2020-12-11 23:10:05 +0100Kronic(~Kronic___@84.203.98.133) (Ping timeout: 240 seconds)
2020-12-11 23:10:30 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 23:11:14 +0100quantumvatican(~private@lfbn-idf2-1-504-211.w86-246.abo.wanadoo.fr)
2020-12-11 23:13:29 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-12-11 23:13:45 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 240 seconds)
2020-12-11 23:14:40 +0100ADG1089_(~androirc@122.163.174.248) (Read error: Connection reset by peer)
2020-12-11 23:16:03 +0100scasc(~szabi@213142096072.public.telering.at)
2020-12-11 23:16:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-11 23:16:28 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-11 23:16:32 +0100drincruz_drincruz
2020-12-11 23:17:07 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 258 seconds)
2020-12-11 23:17:17 +0100zenbamboo(~zen@cpe2-14-242.cable.triera.net)
2020-12-11 23:17:37 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-12-11 23:17:53 +0100brodie_(~brodie@207.53.253.137)
2020-12-11 23:18:24 +0100brodie_brodie
2020-12-11 23:20:43 +0100denisse_(~spaceCat@gateway/tor-sasl/alephzer0)
2020-12-11 23:20:58 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-12-11 23:21:10 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-11 23:22:04 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 256 seconds)
2020-12-11 23:22:22 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com)
2020-12-11 23:23:52 +0100conal(~conal@64.71.133.70) (Ping timeout: 246 seconds)
2020-12-11 23:25:02 +0100conal(~conal@66.115.157.156)
2020-12-11 23:27:18 +0100aev(~aev@pool-108-5-152-94.nwrknj.fios.verizon.net)
2020-12-11 23:27:51 +0100knupfer(~Thunderbi@200116b82c2b4200a4bfc96be48f5e57.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
2020-12-11 23:29:11 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-12-11 23:30:31 +0100ubert(~Thunderbi@p200300ecdf1e530fe6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-11 23:33:27 +0100MidAutumnHotaru(~MidAutumn@154.91.197.93) (Quit: Ping timeout (120 seconds))
2020-12-11 23:34:22 +0100neiluj(~jco@unaffiliated/neiluj) (Ping timeout: 258 seconds)
2020-12-11 23:34:47 +0100zenbamboo(~zen@cpe2-14-242.cable.triera.net) (Remote host closed the connection)
2020-12-11 23:35:36 +0100StoneToad(~StoneToad@199-167-119-150.ppp.storm.ca) (Ping timeout: 240 seconds)
2020-12-11 23:36:40 +0100StoneToad(~StoneToad@199-167-119-150.ppp.storm.ca)
2020-12-11 23:42:26 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-11 23:43:08 +0100Kronic(~Kronic___@84.203.98.133)
2020-12-11 23:43:22 +0100 <quantumvatican> Hello, big frustration, tiny annoying and non original question. I know this must have been asked a thousand times, especially now (advent of code and all that) but I really and honestly can't find any satisfying answer. The question is : "how the hell I am expected to model and manipulate 2d arrays of values?" (aoc day #11). I know about 846 ways to do it. The array package deprived of safe
2020-12-11 23:43:28 +0100 <quantumvatican> access functions that nobody seems to use. Two nested Vector from the vector package. A Map (Int, Int) value. Or... maybe an IntMap (IntMap value). And I have even seen people using [[value]]. This is level 9000 of frustration: there are so many documented libs and types out there but I find myself stuck trying to find which one to use. For now I have settled on (Vector (Vector value)), at least
2020-12-11 23:43:34 +0100 <quantumvatican> there are safe functions and it is easy to construct with fromList when parsing the input file of advent of code day 11. Are there any pseudo-official "current state of the art" recommandations on which libs or types to choose in general ?
2020-12-11 23:44:07 +0100 <glguy> quantumvatican: I liked array best for that problem
2020-12-11 23:45:51 +0100 <mouseghost> Matrix?
2020-12-11 23:47:18 +0100 <glguy> quantumvatican: My array version: https://github.com/glguy/advent2020/blob/master/execs/Day11.hs
2020-12-11 23:47:46 +0100 <glguy> quantumvatican: I think Map/IntMap works well for cases of sparse keys or small incremental changes
2020-12-11 23:49:53 +0100 <aev> I'd make a list of pairs. Wouldn't use a map unless one of the dimensions is a key.
2020-12-11 23:50:01 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
2020-12-11 23:50:37 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Ping timeout: 264 seconds)
2020-12-11 23:50:39 +0100 <quantumvatican> Thank you for your help. How do you choose one lib/type over another? I mean in general. There are always so many options. For example here, how would I choose between array, matrix, and vector?
2020-12-11 23:51:52 +0100 <glguy> array is my choice when I need configurable indexes. In this case I wanted coordinate indexes
2020-12-11 23:51:55 +0100gxt__(~gxt@gateway/tor-sasl/gxt) (Quit: WeeChat 2.9)
2020-12-11 23:52:10 +0100 <glguy> Map/IntMap when I need sparse mapping
2020-12-11 23:52:23 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2020-12-11 23:52:23 +0100 <glguy> vector works better as a fast list
2020-12-11 23:52:28 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-11 23:52:33 +0100 <glguy> with some of its fusion optimizations
2020-12-11 23:53:21 +0100 <quantumvatican> Ok I see
2020-12-11 23:53:25 +0100 <quantumvatican> thank you
2020-12-11 23:53:45 +0100 <quantumvatican> Do you know if there are safe functions in array?
2020-12-11 23:55:56 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
2020-12-11 23:55:56 +0100 <glguy> They're all "safe", but they raise exceptions if you wander out of bounds. The "unsafe" operations are the ones that read outside of valid memory when things go wrong
2020-12-11 23:56:16 +0100 <glguy> but I don't think the package has an indexing operation that returns a Maybe built in. I just defined one when I needed it
2020-12-11 23:57:44 +0100 <quantumvatican> Oh ok. I thought there were only exception in IO. In that case I was thinking it would come in handy to check neighboring cells without bothering about the edges.
2020-12-11 23:58:06 +0100 <glguy> I wrote this for myself: https://github.com/glguy/advent2020/blob/master/common/Advent.hs#L176-L180
2020-12-11 23:58:29 +0100 <Kronic> you can have exceptions in anything, e.g. head []
2020-12-11 23:58:47 +0100 <glguy> pure code can throw exceptions, but those exceptions are trickier to catch reliably because when they are thrown is driven by evaluation
2020-12-11 23:58:59 +0100argento(~argent0@168.227.97.34)
2020-12-11 23:59:59 +0100MidAutumnHotaru(~MidAutumn@154.91.197.93)