2020-12-11 00:04:03 +0100 | Gurkenglas_ | (~Gurkengla@unaffiliated/gurkenglas) |
2020-12-11 00:04:46 +0100 | Wuzzy | (~Wuzzy@p549c9bc8.dip0.t-ipconnect.de) |
2020-12-11 00:05:22 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo) |
2020-12-11 00:05:28 +0100 | dftxbs3e | (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection) |
2020-12-11 00:05:35 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
2020-12-11 00:06:04 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) (Quit: WeeChat 2.8) |
2020-12-11 00:07:07 +0100 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds) |
2020-12-11 00:07:53 +0100 | dftxbs3e | (~dftxbs3e@unaffiliated/dftxbs3e) |
2020-12-11 00:08:12 +0100 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) |
2020-12-11 00:09:15 +0100 | whatisRT | (~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de) |
2020-12-11 00:09:54 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit) |
2020-12-11 00:10:11 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
2020-12-11 00:12:02 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:dfb:ab60:926e:6731) (Ping timeout: 264 seconds) |
2020-12-11 00:12:07 +0100 | geowiesnot | (~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 +0100 | neiluj | (~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 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds) |
2020-12-11 00:17:43 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
2020-12-11 00:20:40 +0100 | monadmatt | (~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 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection) |
2020-12-11 00:23:24 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:68eb:cd6f:e65f:336b) |
2020-12-11 00:23:34 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 00:24:55 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection) |
2020-12-11 00:26:38 +0100 | sMuNiX | (~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca) |
2020-12-11 00:26:55 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 00:27:36 +0100 | banner | (~banner@116-255-17-47.ip4.superloop.com) |
2020-12-11 00:27:36 +0100 | banner | (~banner@116-255-17-47.ip4.superloop.com) (Client Quit) |
2020-12-11 00:27:59 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection) |
2020-12-11 00:28:58 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 00:29:16 +0100 | doct0rhu | (~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 +0100 | merijn | (~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 +0100 | wonko7 | (~wonko7@lns-bzn-55-82-255-183-4.adsl.proxad.net) (Ping timeout: 256 seconds) |
2020-12-11 00:33:45 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection) |
2020-12-11 00:34:39 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 00:34:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2020-12-11 00:38:01 +0100 | son0p | (~son0p@181.136.122.143) (Quit: leaving) |
2020-12-11 00:41:16 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection) |
2020-12-11 00:43:22 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection) |
2020-12-11 00:44:19 +0100 | olligobber | (~olligobbe@unaffiliated/olligobber) |
2020-12-11 00:45:35 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 00:53:52 +0100 | jedws_ | (~jedws@121.209.189.201) |
2020-12-11 00:54:12 +0100 | jedws | (~jedws@121.209.189.201) (Read error: Connection reset by peer) |
2020-12-11 00:58:27 +0100 | jedws_ | (~jedws@121.209.189.201) (Ping timeout: 260 seconds) |
2020-12-11 00:59:15 +0100 | Lurkki | (54f048f5@esm-84-240-72-245.netplaza.fi) (Ping timeout: 245 seconds) |
2020-12-11 01:00:27 +0100 | lyxia | (~lyxia@poisson.chat) (Quit: WeeChat 2.9) |
2020-12-11 01:02:31 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 01:06:30 +0100 | Gurkenglas_ | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds) |
2020-12-11 01:09:20 +0100 | puffnfresh | (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 256 seconds) |
2020-12-11 01:09:57 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@171.5.29.209) |
2020-12-11 01:10:49 +0100 | dopplergange | (~dop@195.158.249.47) (Ping timeout: 260 seconds) |
2020-12-11 01:11:37 +0100 | columbarius | (~columbari@87.123.198.202) (Ping timeout: 264 seconds) |
2020-12-11 01:12:09 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2020-12-11 01:12:12 +0100 | Benzi-Junior | (~BenziJuni@88-149-65-135.du.xdsl.is) (Quit: gone) |
2020-12-11 01:12:52 +0100 | columbarius | (~columbari@mue-88-130-54-091.dsl.tropolys.de) |
2020-12-11 01:15:03 +0100 | gxt__ | (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
2020-12-11 01:15:03 +0100 | ChaiTRex | (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds) |
2020-12-11 01:15:03 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds) |
2020-12-11 01:15:03 +0100 | cantstanya | (~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds) |
2020-12-11 01:15:19 +0100 | dopplergange | (~dop@195.158.249.47) |
2020-12-11 01:15:23 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds) |
2020-12-11 01:15:24 +0100 | srk | (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds) |
2020-12-11 01:15:24 +0100 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds) |
2020-12-11 01:15:24 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9) |
2020-12-11 01:15:43 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2020-12-11 01:15:44 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds) |
2020-12-11 01:15:44 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2020-12-11 01:15:44 +0100 | skiold | (~skiold@gateway/tor-sasl/skiold) (Ping timeout: 240 seconds) |
2020-12-11 01:15:44 +0100 | tomboy64 | (~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds) |
2020-12-11 01:15:44 +0100 | teardown | (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds) |
2020-12-11 01:16:03 +0100 | hexo | (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
2020-12-11 01:16:03 +0100 | andreas303 | (~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 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds) |
2020-12-11 01:19:13 +0100 | mounty | (~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 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: Lost terminal) |
2020-12-11 01:21:35 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) |
2020-12-11 01:21:52 +0100 | machinedgod | (~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 +0100 | hexo | (~hexo@gateway/tor-sasl/hexo) |
2020-12-11 01:22:47 +0100 | srk | (~sorki@gateway/tor-sasl/sorki) |
2020-12-11 01:22:48 +0100 | ChaiTRex | (~ChaiTRex@gateway/tor-sasl/chaitrex) |
2020-12-11 01:22:56 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) |
2020-12-11 01:23:01 +0100 | gxt__ | (~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 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2020-12-11 01:23:15 +0100 | tomboy64 | (~tomboy64@gateway/tor-sasl/tomboy64) |
2020-12-11 01:23:16 +0100 | skiold | (~skiold@gateway/tor-sasl/skiold) |
2020-12-11 01:23:24 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-12-11 01:23:59 +0100 | jb55 | (~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 +0100 | mounty | (~mounty@2001:8000:2f59:0:1862:62b5:e626:9d64) |
2020-12-11 01:24:43 +0100 | cantstanya | (~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 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 01:26:07 +0100 | andreas303 | (~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 +0100 | o1lo01ol1o | (~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 +0100 | machinedgod | (~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 +0100 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) |
2020-12-11 01:27:35 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-12-11 01:27:52 +0100 | MOSCOS | (~MOSCOS@122.54.107.175) (Remote host closed the connection) |
2020-12-11 01:28:15 +0100 | teardown | (~user@gateway/tor-sasl/mrush) |
2020-12-11 01:28:17 +0100 | MOSCOS | (~MOSCOS@122.54.107.175) |
2020-12-11 01:29:19 +0100 | jamm_ | (~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 +0100 | monadmatt | (~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 +0100 | Tesseraction | (~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 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 01:31:05 +0100 | drincruz_ | (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds) |
2020-12-11 01:31:32 +0100 | Kronic | (~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 +0100 | nhs | (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Quit: leaving) |
2020-12-11 01:37:02 +0100 | merijn | (~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 +0100 | jamm_ | (~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 +0100 | nhs | (~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 +0100 | teardown | (~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 +0100 | fuzzypixelz | (~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 +0100 | teardown | (~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 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | falafel_ | (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Remote host closed the connection) |
2020-12-11 01:48:53 +0100 | falafel_ | (~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 +0100 | teardown | (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds) |
2020-12-11 01:49:40 +0100 | teardown_ | (~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 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
2020-12-11 01:55:00 +0100 | Jesin | (~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 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 260 seconds) |
2020-12-11 01:59:51 +0100 | dnlkrgr | (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds) |
2020-12-11 02:01:27 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
2020-12-11 02:03:31 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 02:04:04 +0100 | iqubic | (~user@2601:602:9500:4870:4825:944d:5fe3:72b9) (Remote host closed the connection) |
2020-12-11 02:05:21 +0100 | heatsink_ | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) |
2020-12-11 02:05:41 +0100 | iqubic | (~user@2601:602:9500:4870:32f4:54f1:a1b5:83b8) |
2020-12-11 02:07:01 +0100 | Amras | (~Amras@unaffiliated/amras) (Ping timeout: 272 seconds) |
2020-12-11 02:08:17 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:e85f:7c7d:b6c9:7820) (Ping timeout: 258 seconds) |
2020-12-11 02:09:02 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2020-12-11 02:10:58 +0100 | plutoniix | (~q@node-uk9.pool-125-24.dynamic.totinternet.net) (Quit: Leaving) |
2020-12-11 02:13:45 +0100 | alx741 | (~alx741@181.196.69.91) (Ping timeout: 240 seconds) |
2020-12-11 02:14:05 +0100 | CMCDragonkai2 | (~Thunderbi@120.17.47.66) |
2020-12-11 02:17:25 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2020-12-11 02:17:57 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Read error: Connection reset by peer) |
2020-12-11 02:18:42 +0100 | urodna | (~urodna@unaffiliated/urodna) |
2020-12-11 02:18:58 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | monadmatt | (~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 +0100 | xsarnik0 | (xsarnik@gateway/shell/fi.muni.cz/x-siyupapsmlttvhqm) (Quit: Ping timeout (120 seconds)) |
2020-12-11 02:24:01 +0100 | Jajik | (xchlup2@gateway/shell/fi.muni.cz/x-qznwsywzudvjynms) (Quit: Ping timeout (120 seconds)) |
2020-12-11 02:24:52 +0100 | Jajik | (xchlup2@gateway/shell/fi.muni.cz/x-iogrzypdphdyrmwo) |
2020-12-11 02:25:49 +0100 | iqubic | (~user@2601:602:9500:4870:32f4:54f1:a1b5:83b8) (Remote host closed the connection) |
2020-12-11 02:28:09 +0100 | Feuermagier | (~Feuermagi@213.178.26.41) (Remote host closed the connection) |
2020-12-11 02:28:11 +0100 | alx741 | (~alx741@181.196.69.196) |
2020-12-11 02:28:12 +0100 | Feuermagier_ | (~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 +0100 | lyxia | (~lyxia@poisson.chat) |
2020-12-11 02:30:18 +0100 | <Axman6> | hmm, not the one I was after |
2020-12-11 02:30:23 +0100 | iqubic | (~user@2601:602:9500:4870:bec7:122b:1c06:a2d0) |
2020-12-11 02:30:54 +0100 | columbarius | (~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 +0100 | whatisRT | (~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 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) |
2020-12-11 02:33:07 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-12-11 02:33:13 +0100 | columbarius | (~columbari@mue-88-130-54-162.dsl.tropolys.de) |
2020-12-11 02:33:21 +0100 | whatisRT | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 02:35:12 +0100 | st8less | (~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 +0100 | Kem36 | (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 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 02:38:50 +0100 | CMCDragonkai2 | (~Thunderbi@120.17.47.66) (Remote host closed the connection) |
2020-12-11 02:42:56 +0100 | Kronic | (~Kronic___@84.203.98.133) (Read error: Connection reset by peer) |
2020-12-11 02:42:58 +0100 | m0rphism | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds) |
2020-12-11 02:43:29 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) |
2020-12-11 02:43:30 +0100 | xsarnik0 | (xsarnik@gateway/shell/fi.muni.cz/x-ctybhcsimuoygovq) |
2020-12-11 02:47:16 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds) |
2020-12-11 02:47:30 +0100 | Lord_of_Life | (~Lord@46.217.219.165) |
2020-12-11 02:47:54 +0100 | shailangsa | (~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 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds) |
2020-12-11 02:50:51 +0100 | vonfry | (~user@2001:da8:801b:1010:c0c3:e71d:a844:2faf) |
2020-12-11 02:51:16 +0100 | jmchael | (~jmchael@87.112.60.168) (Ping timeout: 240 seconds) |
2020-12-11 02:53:16 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2020-12-11 02:53:37 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 02:54:43 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) |
2020-12-11 02:55:44 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-12-11 02:57:08 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) (Client Quit) |
2020-12-11 02:58:25 +0100 | puffnfresh | (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) |
2020-12-11 03:00:13 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 265 seconds) |
2020-12-11 03:02:37 +0100 | jespada | (~jespada@90.254.245.49) |
2020-12-11 03:03:55 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving) |
2020-12-11 03:04:56 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@171.5.29.209) |
2020-12-11 03:05:01 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
2020-12-11 03:06:13 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-12-11 03:07:04 +0100 | conal | (~conal@64.71.133.70) |
2020-12-11 03:07:23 +0100 | conal | (~conal@64.71.133.70) (Client Quit) |
2020-12-11 03:07:49 +0100 | ep1ctetus | (b8bba2a3@gateway/web/cgi-irc/kiwiirc.com/ip.184.187.162.163) (Quit: Connection closed) |
2020-12-11 03:08:37 +0100 | conal | (~conal@64.71.133.70) |
2020-12-11 03:08:56 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-11 03:08:57 +0100 | conal | (~conal@64.71.133.70) (Client Quit) |
2020-12-11 03:09:49 +0100 | o1lo01ol1o | (~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 +0100 | guest1211 | (~user@49.5.6.87) |
2020-12-11 03:14:54 +0100 | o1lo01ol1o | (~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 +0100 | xff0x | (~fox@2001:1a81:530c:8200:b602:4be0:ca24:7260) (Ping timeout: 272 seconds) |
2020-12-11 03:18:27 +0100 | maop | (~maop@185.204.1.185) (Remote host closed the connection) |
2020-12-11 03:18:42 +0100 | xff0x | (~fox@2001:1a81:5221:8f00:f974:7952:c764:dde1) |
2020-12-11 03:24:24 +0100 | jlamothe | (~jlamothe@198.251.55.207) (Ping timeout: 272 seconds) |
2020-12-11 03:25:07 +0100 | jlamothe | (~jlamothe@198.251.55.207) |
2020-12-11 03:25:27 +0100 | sagax | (~sagax_nb@213.138.71.146) (Ping timeout: 260 seconds) |
2020-12-11 03:26:23 +0100 | elliott__ | (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
2020-12-11 03:27:28 +0100 | elliott__ | (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) |
2020-12-11 03:28:25 +0100 | Entertainment | (~entertain@104.246.132.210) (Ping timeout: 264 seconds) |
2020-12-11 03:28:43 +0100 | Wuzzy | (~Wuzzy@p549c9bc8.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-12-11 03:29:10 +0100 | conal | (~conal@64.71.133.70) |
2020-12-11 03:32:17 +0100 | klawx3 | (~klawx3@190.5.32.196) |
2020-12-11 03:33:14 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-12-11 03:34:58 +0100 | yahb | (xsbot@haskell/bot/yahb) (Ping timeout: 256 seconds) |
2020-12-11 03:37:10 +0100 | hexfive | (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.) |
2020-12-11 03:37:58 +0100 | bstarr | (~bstarr@139.28.218.148) |
2020-12-11 03:38:22 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
2020-12-11 03:39:05 +0100 | yahb | (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 +0100 | merijn | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-12-11 03:52:41 +0100 | olligobber | (~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 +0100 | shailangsa | (~shailangs@host86-186-177-155.range86-186.btcentralplus.com) |
2020-12-11 03:55:51 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) |
2020-12-11 03:58:59 +0100 | leothrix | (~leothrix@elastic/staff/leothrix) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-12-11 04:00:22 +0100 | leothrix | (~leothrix@elastic/staff/leothrix) |
2020-12-11 04:04:18 +0100 | jlamothe | (~jlamothe@198.251.55.207) (Quit: leaving) |
2020-12-11 04:06:12 +0100 | shailangsa | (~shailangs@host86-186-177-155.range86-186.btcentralplus.com) () |
2020-12-11 04:07:09 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 04:08:16 +0100 | thc202 | (~thc202@unaffiliated/thc202) (Ping timeout: 258 seconds) |
2020-12-11 04:09:25 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 258 seconds) |
2020-12-11 04:16:52 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:68eb:cd6f:e65f:336b) (Ping timeout: 260 seconds) |
2020-12-11 04:17:08 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
2020-12-11 04:17:51 +0100 | darjeeling_ | (~darjeelin@122.245.123.202) (Ping timeout: 258 seconds) |
2020-12-11 04:20:12 +0100 | drincruz_ | (~adriancru@ool-44c748be.dyn.optonline.net) |
2020-12-11 04:20:40 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2020-12-11 04:22:40 +0100 | jlamothe | (~jlamothe@198.251.55.207) |
2020-12-11 04:23:52 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 04:24:44 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) |
2020-12-11 04:25:51 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) (Remote host closed the connection) |
2020-12-11 04:25:58 +0100 | alexelcu | (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in) |
2020-12-11 04:26:20 +0100 | alexelcu | (~alexelcu@142.93.180.198) |
2020-12-11 04:26:32 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) |
2020-12-11 04:26:36 +0100 | theDon | (~td@muedsl-82-207-238-079.citykom.de) (Ping timeout: 240 seconds) |
2020-12-11 04:26:46 +0100 | drbean | (~drbean@TC210-63-209-30.static.apol.com.tw) |
2020-12-11 04:28:04 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) (Remote host closed the connection) |
2020-12-11 04:28:11 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) |
2020-12-11 04:28:44 +0100 | theDon | (~td@muedsl-82-207-238-169.citykom.de) |
2020-12-11 04:28:45 +0100 | lagothrix | Guest16180 |
2020-12-11 04:28:45 +0100 | xirhtogal | (~lagothrix@unaffiliated/lagothrix) |
2020-12-11 04:28:45 +0100 | Guest16180 | (~lagothrix@unaffiliated/lagothrix) (Killed (orwell.freenode.net (Nickname regained by services))) |
2020-12-11 04:28:45 +0100 | xirhtogal | lagothrix |
2020-12-11 04:29:05 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:1672:eb44:5f35:5514) |
2020-12-11 04:33:54 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection) |
2020-12-11 04:34:40 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 04:35:58 +0100 | jedws | (~jedws@121.209.189.201) |
2020-12-11 04:38:27 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) (Remote host closed the connection) |
2020-12-11 04:40:54 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) |
2020-12-11 04:44:02 +0100 | hvr | (~hvr@haskell/developer/hvr) (Ping timeout: 256 seconds) |
2020-12-11 04:44:05 +0100 | shailangsa | (~shailangs@host86-186-177-155.range86-186.btcentralplus.com) |
2020-12-11 04:44:50 +0100 | carlomagno | (~cararell@148.87.23.8) (Ping timeout: 272 seconds) |
2020-12-11 04:45:44 +0100 | hvr | (~hvr@haskell/developer/hvr) |
2020-12-11 04:45:44 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds) |
2020-12-11 04:47:52 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2020-12-11 04:50:24 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection) |
2020-12-11 04:50:39 +0100 | plutoniix | (~q@ppp-223-24-94-125.revip6.asianet.co.th) |
2020-12-11 04:50:47 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 04:54:56 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) |
2020-12-11 04:55:22 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo) |
2020-12-11 04:55:38 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
2020-12-11 04:58:19 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-12-11 04:59:26 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d070:4174:c9a4:1003) (Ping timeout: 264 seconds) |
2020-12-11 04:59:53 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit) |
2020-12-11 05:00:08 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
2020-12-11 05:01:11 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
2020-12-11 05:08:31 +0100 | johnw | (~johnw@haskell/developer/johnw) (Quit: ZNC - http://znc.in) |
2020-12-11 05:08:54 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 05:09:49 +0100 | hvr | (~hvr@haskell/developer/hvr) (Ping timeout: 264 seconds) |
2020-12-11 05:10:35 +0100 | hvr | (~hvr@haskell/developer/hvr) |
2020-12-11 05:13:39 +0100 | cgfuh | (~cgfuh@181.167.191.58) (Quit: WeeChat 2.9) |
2020-12-11 05:15:22 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo) |
2020-12-11 05:15:36 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
2020-12-11 05:19:53 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit) |
2020-12-11 05:20:04 +0100 | Deide | (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
2020-12-11 05:20:07 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
2020-12-11 05:21:10 +0100 | rcdilorenzo | (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) () |
2020-12-11 05:21:39 +0100 | notzmv | (~user@unaffiliated/zmv) (Remote host closed the connection) |
2020-12-11 05:23:04 +0100 | teardown | (~user@gateway/tor-sasl/mrush) |
2020-12-11 05:24:15 +0100 | aev | (~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net) |
2020-12-11 05:25:19 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
2020-12-11 05:26:03 +0100 | teardown_ | (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds) |
2020-12-11 05:26:43 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 05:27:12 +0100 | shatriff_ | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2020-12-11 05:27:46 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) |
2020-12-11 05:31:28 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:6435:e070:2755:fa1e) |
2020-12-11 05:31:55 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-12-11 05:32:59 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2020-12-11 05:33:13 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds) |
2020-12-11 05:35:03 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-12-11 05:35:09 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) |
2020-12-11 05:36:02 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:6435:e070:2755:fa1e) (Ping timeout: 264 seconds) |
2020-12-11 05:37:20 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 05:39:31 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 246 seconds) |
2020-12-11 05:42:26 +0100 | argento | (~argent0@168.227.97.29) |
2020-12-11 05:43:49 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) |
2020-12-11 05:44:35 +0100 | <essem> | DDDDD= |
2020-12-11 05:44:48 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) () |
2020-12-11 05:47:55 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) |
2020-12-11 05:49:26 +0100 | plutoniix | (~q@ppp-223-24-94-125.revip6.asianet.co.th) (Quit: Leaving) |
2020-12-11 05:52:51 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:6435:e070:2755:fa1e) |
2020-12-11 05:52:55 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) (Quit: leaving) |
2020-12-11 05:53:05 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) |
2020-12-11 05:54:35 +0100 | vonfry` | (~user@23.234.199.184) |
2020-12-11 05:55:58 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 05:56:19 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds) |
2020-12-11 05:56:22 +0100 | vonfry | (~user@2001:da8:801b:1010:c0c3:e71d:a844:2faf) (Ping timeout: 258 seconds) |
2020-12-11 05:56:46 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) (Client Quit) |
2020-12-11 05:56:57 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) |
2020-12-11 05:57:10 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) (Client Quit) |
2020-12-11 05:57:21 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) |
2020-12-11 05:57:31 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:6435:e070:2755:fa1e) (Ping timeout: 258 seconds) |
2020-12-11 05:57:43 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds) |
2020-12-11 05:57:54 +0100 | bitmagie | (~Thunderbi@200116b80638310001d2823cf2ef2077.dip.versatel-1u1.de) |
2020-12-11 05:59:14 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-12-11 05:59:44 +0100 | vonfry` | (~user@23.234.199.184) ("ERC (IRC client for Emacs 27.1)") |
2020-12-11 06:01:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 06:04:36 +0100 | StoneToad | (~StoneToad@199-167-119-150.ppp.storm.ca) (Ping timeout: 240 seconds) |
2020-12-11 06:04:44 +0100 | Cthalupa | (~cthulhu@47.186.47.75) (Ping timeout: 256 seconds) |
2020-12-11 06:05:09 +0100 | Cthalupa | (~cthulhu@47.186.47.75) |
2020-12-11 06:05:32 +0100 | p8m_ | (p8m@gateway/vpn/protonvpn/p8m) |
2020-12-11 06:05:33 +0100 | StoneToad | (~StoneToad@199-167-119-150.ppp.storm.ca) |
2020-12-11 06:05:34 +0100 | p8m | (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 258 seconds) |
2020-12-11 06:06:04 +0100 | falafel_ | (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Remote host closed the connection) |
2020-12-11 06:06:26 +0100 | nfd | (~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net) |
2020-12-11 06:07:45 +0100 | aev | (~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net) (Ping timeout: 265 seconds) |
2020-12-11 06:13:38 +0100 | drincruz_ | (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds) |
2020-12-11 06:14:52 +0100 | conal | (~conal@64.71.133.70) |
2020-12-11 06:15:41 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Quit: ERC (IRC client for Emacs 27.1)) |
2020-12-11 06:16:07 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 06:19:02 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Client Quit) |
2020-12-11 06:19:28 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2020-12-11 06:19:46 +0100 | SanchayanMaity | (~Sanchayan@122.178.233.231) |
2020-12-11 06:21:23 +0100 | conal | (~conal@64.71.133.70) (Ping timeout: 260 seconds) |
2020-12-11 06:22:28 +0100 | unlink2 | (~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-12-11 06:23:55 +0100 | unlink2 | (~unlink2@p5dc0acf8.dip0.t-ipconnect.de) |
2020-12-11 06:28:03 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2020-12-11 06:28:11 +0100 | elliott__ | (~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 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) |
2020-12-11 06:32:03 +0100 | cads | (~cads@ip-64-72-99-232.lasvegas.net) |
2020-12-11 06:33:02 +0100 | sagax | (~sagax_nb@213.138.71.146) |
2020-12-11 06:33:59 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds) |
2020-12-11 06:34:05 +0100 | joeyh_ | (joeyh@kitenet.net) (Quit: ZNC 1.8.1+deb1 - https://znc.in) |
2020-12-11 06:34:44 +0100 | bandali | (znc@fsf/interns/bandali) (Quit: ZNC - https://znc.in) |
2020-12-11 06:34:45 +0100 | PlasmaStar | (plasma@unaffiliated/plasmastar) (Quit: ZNC 1.7.3 - https://znc.in) |
2020-12-11 06:35:18 +0100 | bandali | (znc@fsf/interns/bandali) |
2020-12-11 06:35:21 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@171.5.29.209) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 06:35:52 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-12-11 06:36:53 +0100 | drbean | (~drbean@TC210-63-209-30.static.apol.com.tw) (Ping timeout: 260 seconds) |
2020-12-11 06:37:28 +0100 | nshepperd | (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Ping timeout: 260 seconds) |
2020-12-11 06:38:11 +0100 | rekahsoft | (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) |
2020-12-11 06:39:11 +0100 | nshepperd | (~nshepperd@li364-218.members.linode.com) |
2020-12-11 06:39:39 +0100 | agrif | (agrif@overviewer/dev/agrif) (Remote host closed the connection) |
2020-12-11 06:39:59 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) |
2020-12-11 06:40:02 +0100 | agrif | (agrif@rakeri.net) |
2020-12-11 06:40:02 +0100 | agrif | (agrif@rakeri.net) (Changing host) |
2020-12-11 06:40:02 +0100 | agrif | (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 +0100 | joeyh | (~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 +0100 | urodna | (~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 +0100 | PlasmaStar | (plasma@unaffiliated/plasmastar) |
2020-12-11 06:42:28 +0100 | <ezzieyguywuf> | gotcha |
2020-12-11 06:43:17 +0100 | monochrom | (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 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2c68:32a0:f62b:f449) |
2020-12-11 06:45:57 +0100 | acidjnk_new | (~acidjnk@p200300d0c719ff053d8846c1390abdcb.dip0.t-ipconnect.de) |
2020-12-11 06:50:17 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2c68:32a0:f62b:f449) (Ping timeout: 260 seconds) |
2020-12-11 06:51:22 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) |
2020-12-11 06:51:30 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 272 seconds) |
2020-12-11 06:52:43 +0100 | klawx3 | (~klawx3@190.5.32.196) (Remote host closed the connection) |
2020-12-11 06:53:28 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
2020-12-11 06:55:07 +0100 | boxscape | (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) |
2020-12-11 06:57:01 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2020-12-11 06:57:59 +0100 | monochrom | (trebla@216.138.220.146) |
2020-12-11 07:00:31 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection) |
2020-12-11 07:00:54 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) |
2020-12-11 07:02:21 +0100 | russruss84 | (~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat) |
2020-12-11 07:04:39 +0100 | perry69420 | (7aa1d004@122.161.208.4) |
2020-12-11 07:05:04 +0100 | russruss84 | (~russruss@my.russellmcc.com) |
2020-12-11 07:05:26 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) |
2020-12-11 07:06:13 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-11 07:06:18 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
2020-12-11 07:08:18 +0100 | jpcooper | (~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 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-11 07:09:32 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-12-11 07:09:44 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
2020-12-11 07:10:39 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 07:11:08 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-11 07:11:09 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
2020-12-11 07:11:26 +0100 | hololeap | (~hololeap@unaffiliated/hololeap) |
2020-12-11 07:11:37 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-11 07:11:56 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
2020-12-11 07:12:17 +0100 | nineonine | (~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 +0100 | merijn | (~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 +0100 | mounty | (~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 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2020-12-11 07:23:27 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) |
2020-12-11 07:25:28 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-11 07:25:31 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
2020-12-11 07:27:00 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2c68:32a0:f62b:f449) |
2020-12-11 07:27:39 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-11 07:27:41 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
2020-12-11 07:27:56 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds) |
2020-12-11 07:29:51 +0100 | AwesomeRigg | (awesomerig@45.15.143.179) () |
2020-12-11 07:29:59 +0100 | perrier-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 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2c68:32a0:f62b:f449) (Ping timeout: 260 seconds) |
2020-12-11 07:33:01 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-11 07:34:48 +0100 | geowiesnot | (~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 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Ping timeout: 240 seconds) |
2020-12-11 07:40:12 +0100 | jpcooper | (~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 +0100 | mrchampion | (~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 +0100 | orzo | (joe@lasker.childrenofmay.org) (Ping timeout: 272 seconds) |
2020-12-11 07:42:20 +0100 | perrier-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 +0100 | Kaivo | (~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 +0100 | Kaivo | (~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 +0100 | merijn | (~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 +0100 | boxscape | (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 +0100 | boxscape | (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 +0100 | rekahsoft | (~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 +0100 | cfricke | (~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 +0100 | Vulfe | (~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 +0100 | phasespace | (~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 +0100 | scasc | (~szabi@213142096072.public.telering.at) |
2020-12-11 08:03:47 +0100 | Vulfe | (~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 +0100 | cfricke | (~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 +0100 | Lord_of_Life | (~Lord@46.217.219.165) (Changing host) |
2020-12-11 08:05:18 +0100 | Lord_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 +0100 | Fractalis | (~Fractalis@2601:987:280:8d40:406e:6ad8:9d0d:835) |
2020-12-11 08:07:29 +0100 | cfricke | (~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 +0100 | plutoniix | (~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 +0100 | Fractalis | (~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 +0100 | leothrix | (~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 +0100 | leothrix | (~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 +0100 | cfricke | (~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 +0100 | phasespace | (~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 +0100 | chele | (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) |
2020-12-11 08:20:16 +0100 | merijn | (~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 +0100 | pavonia | (~user@unaffiliated/siracusa) |
2020-12-11 08:23:45 +0100 | cads | (~cads@ip-64-72-99-232.lasvegas.net) (Quit: Leaving) |
2020-12-11 08:23:51 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:1672:eb44:5f35:5514) (Ping timeout: 272 seconds) |
2020-12-11 08:26:16 +0100 | dhouthoo | (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) |
2020-12-11 08:30:57 +0100 | aqd | (~aqd@87-92-163-238.rev.dnainternet.fi) |
2020-12-11 08:33:59 +0100 | polyphem | (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) |
2020-12-11 08:35:55 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:6393:9860:d118:b25) |
2020-12-11 08:38:38 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 08:43:08 +0100 | sgibber2018 | (~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9) |
2020-12-11 08:43:47 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) |
2020-12-11 08:45:30 +0100 | scasc | (~szabi@213142096072.public.telering.at) (Ping timeout: 256 seconds) |
2020-12-11 08:48:55 +0100 | SanchayanMaity | (~Sanchayan@122.178.233.231) (Quit: SanchayanMaity) |
2020-12-11 08:49:22 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 08:49:29 +0100 | SanchayanMaity | (~Sanchayan@122.178.233.231) |
2020-12-11 08:53:48 +0100 | Gurkenglas_ | (~Gurkengla@unaffiliated/gurkenglas) |
2020-12-11 08:54:59 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-12-11 08:55:23 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 258 seconds) |
2020-12-11 08:57:09 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-12-11 09:00:22 +0100 | nineonine_ | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2020-12-11 09:01:03 +0100 | infosec_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 +0100 | nineonine | (~nineonine@50.216.62.2) (Ping timeout: 256 seconds) |
2020-12-11 09:01:53 +0100 | nineonine_ | nineonine |
2020-12-11 09:03:03 +0100 | knupfer | (~Thunderbi@200116b82c2b4200586bd9fffe42074d.dip.versatel-1u1.de) |
2020-12-11 09:03:03 +0100 | knupfer | (~Thunderbi@200116b82c2b4200586bd9fffe42074d.dip.versatel-1u1.de) (Client Quit) |
2020-12-11 09:03:17 +0100 | knupfer | (~Thunderbi@i5E86B444.versanet.de) |
2020-12-11 09:03:30 +0100 | knupfer | (~Thunderbi@i5E86B444.versanet.de) (Client Quit) |
2020-12-11 09:03:48 +0100 | knupfer | (~Thunderbi@200116b82c2b4200e010a8af79e2986c.dip.versatel-1u1.de) |
2020-12-11 09:04:32 +0100 | vilpan | (~0@212.117.1.172) |
2020-12-11 09:05:01 +0100 | geowiesnot | (~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 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-12-11 09:10:10 +0100 | <jle`> | not nice D: |
2020-12-11 09:10:54 +0100 | wonko7 | (~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) |
2020-12-11 09:11:25 +0100 | <infosec_yo> | ? |
2020-12-11 09:11:54 +0100 | Feuermagier_ | (~Feuermagi@213.178.26.41) (Quit: Leaving) |
2020-12-11 09:12:06 +0100 | Feuermagier | (~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 +0100 | Vulfe | (~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 +0100 | merijn | (~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 +0100 | toorevitimirp | (~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 +0100 | sakirious | (~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 +0100 | Vulfe | (~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 +0100 | ADG1089_ | (~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 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 264 seconds) |
2020-12-11 09:24:11 +0100 | Yumasi | (~guillaume@176-172-89-74.abo.bbox.fr) |
2020-12-11 09:24:12 +0100 | Sgeo | (~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 +0100 | MOSCOS | (~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 +0100 | MOSCOS | (~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 +0100 | cole-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 +0100 | johnw | (~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 +0100 | infosec_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 +0100 | nineonine | (~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 +0100 | mastarija | (~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 +0100 | bliminse | (~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 +0100 | jonathanx | (~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 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) |
2020-12-11 09:51:25 +0100 | mastarija | (~mastarija@93-136-96-125.adsl.net.t-com.hr) (Quit: Leaving) |
2020-12-11 09:52:56 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds) |
2020-12-11 09:58:38 +0100 | darjeeling_ | (~darjeelin@112.16.171.8) |
2020-12-11 09:59:00 +0100 | m0rphism | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2020-12-11 10:00:14 +0100 | ADG1089_ | (~androirc@122.163.174.248) (Ping timeout: 265 seconds) |
2020-12-11 10:00:45 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds) |
2020-12-11 10:01:54 +0100 | ADG1089_ | (~androirc@122.163.174.248) |
2020-12-11 10:02:58 +0100 | solonarv | (~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr) |
2020-12-11 10:03:00 +0100 | boxscape | (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed) |
2020-12-11 10:03:10 +0100 | boxscape | (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) |
2020-12-11 10:05:41 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2020-12-11 10:06:35 +0100 | neiluj | (~jco@91-167-203-101.subs.proxad.net) |
2020-12-11 10:10:29 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Read error: Connection reset by peer) |
2020-12-11 10:10:50 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) |
2020-12-11 10:12:27 +0100 | boxscape | (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed) |
2020-12-11 10:13:03 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 10:13:54 +0100 | hlysig | (~hlysig@mobile-194-144-46-247.3G.internet.is) (Remote host closed the connection) |
2020-12-11 10:15:13 +0100 | boxscape | (86ab2c53@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.83) |
2020-12-11 10:16:45 +0100 | argento | (~argent0@168.227.97.29) (Quit: leaving) |
2020-12-11 10:17:36 +0100 | __monty__ | (~toonn@unaffiliated/toonn) |
2020-12-11 10:19:10 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-12-11 10:19:14 +0100 | kuribas | (~user@ptr-25vy0i9ovuvi4dmg8ha.18120a2.ip6.access.telenet.be) |
2020-12-11 10:22:07 +0100 | heatsink_ | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Remote host closed the connection) |
2020-12-11 10:24:19 +0100 | SanchayanMaity | (~Sanchayan@122.178.233.231) (Quit: SanchayanMaity) |
2020-12-11 10:25:43 +0100 | SanchayanMaity | (~Sanchayan@122.178.233.231) |
2020-12-11 10:26:11 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-bdwcxdgjdouaybsg) (Quit: Connection closed for inactivity) |
2020-12-11 10:28:28 +0100 | dnlkrgr | (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) |
2020-12-11 10:29:38 +0100 | Cthalupa | (~cthulhu@47.186.47.75) (Ping timeout: 260 seconds) |
2020-12-11 10:30:01 +0100 | Cthalupa | (~cthulhu@47.186.47.75) |
2020-12-11 10:30:37 +0100 | zaquest | (~notzaques@5.128.210.178) |
2020-12-11 10:33:51 +0100 | ubert | (~Thunderbi@p200300ecdf1e538de6b318fffe838f33.dip0.t-ipconnect.de) |
2020-12-11 10:34:03 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds) |
2020-12-11 10:34:12 +0100 | hololeap | (~hololeap@unaffiliated/hololeap) (Quit: KVIrc 5.0.1 Aria http://www.kvirc.net/) |
2020-12-11 10:34:53 +0100 | fendor | (~fendor@77.119.131.193.wireless.dyn.drei.com) |
2020-12-11 10:35:54 +0100 | Lurkki | (54f048f5@esm-84-240-72-245.netplaza.fi) |
2020-12-11 10:36:58 +0100 | zaquest | (~notzaques@5.128.210.178) (Remote host closed the connection) |
2020-12-11 10:37:14 +0100 | sord937 | (~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 +0100 | wwwww | (~wwwww@unaffiliated/wwwww) (Ping timeout: 256 seconds) |
2020-12-11 10:37:55 +0100 | o1lo01ol1o | (~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 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection) |
2020-12-11 10:39:37 +0100 | wwwww | (~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 +0100 | darjeeling_ | (~darjeelin@112.16.171.8) (Ping timeout: 256 seconds) |
2020-12-11 10:43:07 +0100 | ggole | (~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 +0100 | kenran | (~kenran@i59F67BE7.versanet.de) |
2020-12-11 10:47:47 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 10:48:16 +0100 | Moyst | (~moyst@212-149-213-144.bb.dnainternet.fi) (Ping timeout: 240 seconds) |
2020-12-11 10:49:29 +0100 | ADG1089_ | (~androirc@122.163.174.248) (Ping timeout: 260 seconds) |
2020-12-11 10:51:25 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Quit: Nice weekend) |
2020-12-11 10:53:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2020-12-11 10:53:42 +0100 | zaquest | (~notzaques@5.128.210.178) |
2020-12-11 10:56:43 +0100 | LKoen | (~LKoen@214.175.9.109.rev.sfr.net) |
2020-12-11 10:57:12 +0100 | zaquest | (~notzaques@5.128.210.178) (Remote host closed the connection) |
2020-12-11 10:59:57 +0100 | chewb | (~chewb@abhz34.neoplus.adsl.tpnet.pl) |
2020-12-11 11:00:03 +0100 | gxt__ | (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
2020-12-11 11:04:39 +0100 | knupfer | (~Thunderbi@200116b82c2b4200e010a8af79e2986c.dip.versatel-1u1.de) (Remote host closed the connection) |
2020-12-11 11:04:47 +0100 | knupfer | (~Thunderbi@200116b82c2b420031fa514480f2150c.dip.versatel-1u1.de) |
2020-12-11 11:06:15 +0100 | thc202 | (~thc202@unaffiliated/thc202) |
2020-12-11 11:06:24 +0100 | essem | (essem@gateway/vpn/privateinternetaccess/essem) (Ping timeout: 260 seconds) |
2020-12-11 11:09:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 11:13:49 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) |
2020-12-11 11:15:00 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:4dab:dca0:5971:aa33) |
2020-12-11 11:19:23 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds) |
2020-12-11 11:19:31 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:4dab:dca0:5971:aa33) (Ping timeout: 258 seconds) |
2020-12-11 11:21:55 +0100 | bitmagie | (~Thunderbi@200116b80638310001d2823cf2ef2077.dip.versatel-1u1.de) (Quit: bitmagie) |
2020-12-11 11:22:14 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-12-11 11:22:32 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) |
2020-12-11 11:24:41 +0100 | coot | (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) |
2020-12-11 11:25:40 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) |
2020-12-11 11:25:54 +0100 | perry69420 | (7aa1d004@122.161.208.4) (Ping timeout: 245 seconds) |
2020-12-11 11:26:01 +0100 | hiroaki | (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds) |
2020-12-11 11:27:11 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 258 seconds) |
2020-12-11 11:30:00 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-12-11 11:30:15 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) (Ping timeout: 258 seconds) |
2020-12-11 11:30:29 +0100 | Lurkki | (54f048f5@esm-84-240-72-245.netplaza.fi) (Remote host closed the connection) |
2020-12-11 11:30:33 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Client Quit) |
2020-12-11 11:36:08 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) |
2020-12-11 11:38:30 +0100 | jamm_ | (~jamm@unaffiliated/jamm) |
2020-12-11 11:40:02 +0100 | hiroaki | (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) |
2020-12-11 11:41:45 +0100 | guest1211 | (~user@49.5.6.87) (Remote host closed the connection) |
2020-12-11 11:43:52 +0100 | bstarr | (~bstarr@139.28.218.148) (Remote host closed the connection) |
2020-12-11 11:44:20 +0100 | Lurkki[m] | (lurkkipriv@gateway/shell/matrix.org/x-djvldaecobwrcdeg) |
2020-12-11 11:51:58 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2020-12-11 11:58:07 +0100 | vilpan | (~0@212.117.1.172) () |
2020-12-11 11:59:54 +0100 | SanchayanMaity | (~Sanchayan@122.178.233.231) (Quit: SanchayanMaity) |
2020-12-11 12:00:04 +0100 | lassulus | (~lassulus@NixOS/user/lassulus) (Ping timeout: 260 seconds) |
2020-12-11 12:01:08 +0100 | Boomerang | (~Boomerang@xd520f68c.cust.hiper.dk) |
2020-12-11 12:03:31 +0100 | SchwarzeLocke | (~SchwarzeL@185.163.110.125) |
2020-12-11 12:04:58 +0100 | SanchayanMaity | (~Sanchayan@122.178.245.223) |
2020-12-11 12:04:59 +0100 | lassulus | (~lassulus@NixOS/user/lassulus) |
2020-12-11 12:07:03 +0100 | wtw | (~wtw@unaffiliated/wtw) |
2020-12-11 12:07:09 +0100 | wtw | (~wtw@unaffiliated/wtw) () |
2020-12-11 12:07:24 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) |
2020-12-11 12:08:26 +0100 | daGrevis | (~daGrevis@unaffiliated/dagrevis) (Remote host closed the connection) |
2020-12-11 12:09:38 +0100 | daGrevis | (~daGrevis@unaffiliated/dagrevis) |
2020-12-11 12:11:10 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
2020-12-11 12:12:13 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) (Ping timeout: 268 seconds) |
2020-12-11 12:13:44 +0100 | SanchayanMaity | (~Sanchayan@122.178.245.223) (Quit: SanchayanMaity) |
2020-12-11 12:15:03 +0100 | SanchayanMaity | (~Sanchayan@122.178.245.223) |
2020-12-11 12:15:17 +0100 | SanchayanMaity | (~Sanchayan@122.178.245.223) (Client Quit) |
2020-12-11 12:20:27 +0100 | SanchayanMaity | (~Sanchayan@122.178.245.223) |
2020-12-11 12:20:58 +0100 | lassulus | (~lassulus@NixOS/user/lassulus) (Ping timeout: 246 seconds) |
2020-12-11 12:21:54 +0100 | rprije | (~rprije@14-201-170-17.tpgi.com.au) (Ping timeout: 256 seconds) |
2020-12-11 12:23:25 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) |
2020-12-11 12:24:01 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) |
2020-12-11 12:25:54 +0100 | SolarAquarion | (SolarAquar@gateway/shell/panicbnc/x-kjhphkgroirlqpvp) (Ping timeout: 244 seconds) |
2020-12-11 12:26:26 +0100 | Klumben | (Nsaiswatch@gateway/shell/panicbnc/x-mkcnlvblwjhyiwoj) (Ping timeout: 264 seconds) |
2020-12-11 12:26:52 +0100 | dax | (dax@bitbot/dax) (Ping timeout: 260 seconds) |
2020-12-11 12:26:53 +0100 | SegFaultAX | (SegFaultAX@unaffiliated/segfaultax) (Ping timeout: 260 seconds) |
2020-12-11 12:26:53 +0100 | entropygain | (levitate@unaffiliated/entropygain) (Ping timeout: 260 seconds) |
2020-12-11 12:28:50 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 264 seconds) |
2020-12-11 12:30:29 +0100 | entropygain | (levitate@unaffiliated/entropygain) |
2020-12-11 12:31:45 +0100 | darjeeling_ | (~darjeelin@122.245.123.202) |
2020-12-11 12:32:26 +0100 | ericsagn1 | (~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 +0100 | joehillen | (joehillen@unaffiliated/joehillen) (Ping timeout: 246 seconds) |
2020-12-11 12:34:37 +0100 | <xerox_> | nobody did |
2020-12-11 12:34:50 +0100 | xacktm | (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 +0100 | merijn | (~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 +0100 | entropygain | (levitate@unaffiliated/entropygain) (Ping timeout: 272 seconds) |
2020-12-11 12:37:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 12:38:30 +0100 | dax | (dax@bitbot/dax) |
2020-12-11 12:38:58 +0100 | joehillen | (joehillen@unaffiliated/joehillen) |
2020-12-11 12:39:33 +0100 | SegFaultAX | (SegFaultAX@unaffiliated/segfaultax) |
2020-12-11 12:39:38 +0100 | entropygain | (levitate@unaffiliated/entropygain) |
2020-12-11 12:39:59 +0100 | lassulus | (~lassulus@NixOS/user/lassulus) |
2020-12-11 12:40:19 +0100 | star_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 +0100 | star_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 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:c504:28ef:2ca:d7c2) |
2020-12-11 12:45:25 +0100 | plutoniix | (~q@ppp-223-24-62-231.revip6.asianet.co.th) (Ping timeout: 240 seconds) |
2020-12-11 12:46:07 +0100 | Lycurgus | (~niemand@cpe-45-46-137-210.buffalo.res.rr.com) |
2020-12-11 12:48:00 +0100 | pokid | (~pokid@unaffiliated/pokid) |
2020-12-11 12:48:14 +0100 | drbean | (~drbean@TC210-63-209-80.static.apol.com.tw) |
2020-12-11 12:49:12 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) |
2020-12-11 12:49:52 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2020-12-11 12:50:03 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) |
2020-12-11 12:50:34 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
2020-12-11 12:51:54 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2020-12-11 12:53:49 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:931:406a:be08:5300) (Ping timeout: 258 seconds) |
2020-12-11 12:54:27 +0100 | polyphem | (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9) |
2020-12-11 12:54:51 +0100 | watt678 | (~watt678@124.123.105.254) |
2020-12-11 12:54:59 +0100 | z0 | (~z0@188.251.86.84) |
2020-12-11 12:55:23 +0100 | z0 | Guest81293 |
2020-12-11 12:55:40 +0100 | watt678 | (~watt678@124.123.105.254) (Read error: Connection reset by peer) |
2020-12-11 12:56:21 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2020-12-11 12:57:08 +0100 | troydm | (~troydm@unaffiliated/troydm) (Ping timeout: 260 seconds) |
2020-12-11 12:58:06 +0100 | z0_ | (~z0@188.251.72.233) (Ping timeout: 265 seconds) |
2020-12-11 12:58:26 +0100 | plutoniix | (~q@184.82.200.118) |
2020-12-11 13:00:26 +0100 | Amras | (~Amras@unaffiliated/amras) |
2020-12-11 13:00:44 +0100 | polyphem | (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) |
2020-12-11 13:01:15 +0100 | cgfbee | (~bot@oc1.itim-cj.ro) |
2020-12-11 13:04:21 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d32:ddb0:59ad:e779) |
2020-12-11 13:09:00 +0100 | kenran | (~kenran@i59F67BE7.versanet.de) (Ping timeout: 256 seconds) |
2020-12-11 13:09:02 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:d32:ddb0:59ad:e779) (Ping timeout: 264 seconds) |
2020-12-11 13:09:55 +0100 | dnlkrgr | (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds) |
2020-12-11 13:10:26 +0100 | xacktm | (xacktm@gateway/shell/panicbnc/x-jvtlirfmskjbwohd) |
2020-12-11 13:10:36 +0100 | kenran | (~kenran@i59F67BD5.versanet.de) |
2020-12-11 13:11:40 +0100 | scasc | (~szabi@213142096072.public.telering.at) |
2020-12-11 13:11:47 +0100 | dnlkrgr | (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) |
2020-12-11 13:11:49 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2020-12-11 13:12:02 +0100 | fendor_ | (~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 +0100 | fendor | (~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 +0100 | inkbottle | (~inkbottle@aaubervilliers-654-1-76-48.w86-212.abo.wanadoo.fr) |
2020-12-11 13:14:16 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
2020-12-11 13:14:28 +0100 | coot | (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2020-12-11 13:15:09 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Remote host closed the connection) |
2020-12-11 13:17:50 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) |
2020-12-11 13:18:30 +0100 | loller_ | (uid358106@gateway/web/irccloud.com/x-rqmoabancwauhdqz) (Quit: Connection closed for inactivity) |
2020-12-11 13:18:35 +0100 | cosimone | (~cosimone@93-47-228-249.ip115.fastwebnet.it) |
2020-12-11 13:19:00 +0100 | scasc | (~szabi@213142096072.public.telering.at) (Remote host closed the connection) |
2020-12-11 13:21:02 +0100 | scasc | (~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 +0100 | jonathanx_ | (~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 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Read error: Connection reset by peer) |
2020-12-11 13:22:25 +0100 | Neuromancer | (~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 +0100 | SchwarzeLocke | (~SchwarzeL@185.163.110.125) (Remote host closed the connection) |
2020-12-11 13:25:56 +0100 | cosimone | (~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 +0100 | Entertainment | (~entertain@104.246.132.210) |
2020-12-11 13:27:16 +0100 | jmchael | (~jmchael@87.112.60.168) |
2020-12-11 13:27:39 +0100 | Entertainment | (~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 +0100 | Entertainment | (~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 +0100 | st8less | (~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 +0100 | Klumben | (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 +0100 | Tario | (~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 +0100 | monadmatt | (~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 +0100 | rayyyy | (~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 +0100 | SolarAquarion | (SolarAquar@gateway/shell/panicbnc/x-vaxxzctuxkewousu) |
2020-12-11 13:52:12 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2020-12-11 13:56:09 +0100 | troydm | (~troydm@unaffiliated/troydm) |
2020-12-11 13:58:20 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 14:00:14 +0100 | forell | (~forell@unaffiliated/forell) (Ping timeout: 260 seconds) |
2020-12-11 14:01:49 +0100 | theodorc | (theodorc@cassarossa.samfundet.no) |
2020-12-11 14:02:05 +0100 | forell | (~forell@unaffiliated/forell) |
2020-12-11 14:03:01 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2020-12-11 14:03:54 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) |
2020-12-11 14:04:36 +0100 | plutoniix | (~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 +0100 | theodorc | teddyc |
2020-12-11 14:06:34 +0100 | Benzi-Junior | (~BenziJuni@dsl-149-65-135.hive.is) |
2020-12-11 14:08:58 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds) |
2020-12-11 14:09:23 +0100 | Benzi-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 +0100 | todda7 | (~torstein@ppp-2-84-17-53.home.otenet.gr) |
2020-12-11 14:10:08 +0100 | scasc | (~szabi@213142096072.public.telering.at) (Ping timeout: 256 seconds) |
2020-12-11 14:10:38 +0100 | Kronic | (~Kronic___@84.203.98.133) |
2020-12-11 14:10:56 +0100 | Rudd0 | (~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 +0100 | ces | (~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 +0100 | Benzi-Junior | (~BenziJuni@88-149-65-135.du.xdsl.is) |
2020-12-11 14:15:53 +0100 | geekosaur | (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 +0100 | drbean | (~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 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:5d40:3eb5:dfbe:a235) |
2020-12-11 14:21:14 +0100 | deu | (de@uio.re) (Ping timeout: 265 seconds) |
2020-12-11 14:23:19 +0100 | scasc | (~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 +0100 | Vulfe | (~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 +0100 | xff0x | (~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 +0100 | heatsink | (~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 +0100 | xff0x | (~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 +0100 | Lycurgus | (~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 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 264 seconds) |
2020-12-11 14:30:39 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | Vulfe | (~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 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
2020-12-11 14:35:57 +0100 | monadmatt | (~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 +0100 | Vulfe | (~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 +0100 | Ariakenom | (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) |
2020-12-11 14:42:53 +0100 | shf | (~sheaf@2a01:cb19:80cc:7e00:8914:36aa:fb38:e6af) (Read error: Connection reset by peer) |
2020-12-11 14:44:42 +0100 | mrchampion | (~mrchampio@38.18.109.23) |
2020-12-11 14:44:51 +0100 | unfo- | (~unfo-@185.103.96.147) |
2020-12-11 14:45:51 +0100 | ces | (~ces@fsf/member/ces) (Read error: Connection reset by peer) |
2020-12-11 14:45:52 +0100 | Yumasi | (~guillaume@176-172-89-74.abo.bbox.fr) (Ping timeout: 272 seconds) |
2020-12-11 14:45:54 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b) |
2020-12-11 14:46:50 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:bbcd:f950:50c:999:2b9d) (Ping timeout: 264 seconds) |
2020-12-11 14:47:18 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-12-11 14:47:41 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) (Remote host closed the connection) |
2020-12-11 14:47:42 +0100 | Tario | (~Tario@201.192.165.173) |
2020-12-11 14:49:25 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds) |
2020-12-11 14:50:03 +0100 | orzo | (joe@lasker.childrenofmay.org) |
2020-12-11 14:52:38 +0100 | LKoen | (~LKoen@214.175.9.109.rev.sfr.net) (Read error: Connection reset by peer) |
2020-12-11 14:53:15 +0100 | LKoen | (~LKoen@214.175.9.109.rev.sfr.net) |
2020-12-11 14:56:17 +0100 | gxt__ | (~gxt@gateway/tor-sasl/gxt) |
2020-12-11 14:58:07 +0100 | pfurla | (~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 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2020-12-11 15:01:25 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
2020-12-11 15:03:08 +0100 | jespada | (~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 +0100 | neiluj | (~jco@91-167-203-101.subs.proxad.net) (Ping timeout: 264 seconds) |
2020-12-11 15:10:01 +0100 | carlomagno | (~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 +0100 | SanchayanM | (~Sanchayan@171.76.122.153) |
2020-12-11 15:18:35 +0100 | daaaamien | (~damien@2a01:e34:ef93:9a60:1adb:f2ff:fe40:717b) |
2020-12-11 15:18:46 +0100 | SanchayanMaity | (~Sanchayan@122.178.245.223) (Ping timeout: 256 seconds) |
2020-12-11 15:19:07 +0100 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
2020-12-11 15:19:35 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 15:20:02 +0100 | daaaamien | (~damien@2a01:e34:ef93:9a60:1adb:f2ff:fe40:717b) () |
2020-12-11 15:23:47 +0100 | elliott__ | (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) |
2020-12-11 15:24:26 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
2020-12-11 15:27:08 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) |
2020-12-11 15:28:41 +0100 | LKoen | (~LKoen@214.175.9.109.rev.sfr.net) (Remote host closed the connection) |
2020-12-11 15:29:58 +0100 | elliott__ | (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 246 seconds) |
2020-12-11 15:31:50 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 264 seconds) |
2020-12-11 15:33:17 +0100 | xsperry | (~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 +0100 | Tuplanolla | (~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 +0100 | darjeeling_ | (~darjeelin@122.245.123.202) (Ping timeout: 260 seconds) |
2020-12-11 15:39:46 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection) |
2020-12-11 15:40:00 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2020-12-11 15:40:54 +0100 | s00pcan | (~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 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Client Quit) |
2020-12-11 15:47:46 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b) (Remote host closed the connection) |
2020-12-11 15:47:53 +0100 | Vulfe_ | (~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b) |
2020-12-11 15:48:42 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0) |
2020-12-11 15:49:18 +0100 | LKoen | (~LKoen@214.175.9.109.rev.sfr.net) |
2020-12-11 15:51:36 +0100 | Moyst | (~moyst@212-149-213-144.bb.dnainternet.fi) |
2020-12-11 15:52:03 +0100 | bitmagie | (~Thunderbi@200116b80638310001d2823cf2ef2077.dip.versatel-1u1.de) |
2020-12-11 15:52:36 +0100 | darjeeling_ | (~darjeelin@115.215.43.136) |
2020-12-11 15:55:12 +0100 | aqd | (~aqd@87-92-163-238.rev.dnainternet.fi) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-11 15:55:43 +0100 | atraii | (~atraii@c-98-32-64-84.hsd1.ut.comcast.net) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-12-11 15:56:50 +0100 | urodna | (~urodna@unaffiliated/urodna) |
2020-12-11 15:59:34 +0100 | atraii | (~atraii@c-98-32-64-84.hsd1.ut.comcast.net) |
2020-12-11 15:59:42 +0100 | SanchayanM | (~Sanchayan@171.76.122.153) (Quit: SanchayanM) |
2020-12-11 16:03:38 +0100 | jamm | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2020-12-11 16:04:59 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2020-12-11 16:06:13 +0100 | shf | (~sheaf@2a01:cb19:80cc:7e00:159e:9ac:2ff5:a704) |
2020-12-11 16:08:46 +0100 | deu | (de@uio.re) |
2020-12-11 16:11:21 +0100 | jamm | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2020-12-11 16:13:17 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-12-11 16:13:35 +0100 | elliott__ | (~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 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2020-12-11 16:16:10 +0100 | phasespace | (~sar@80-89-47-117.inet.signal.no) (Ping timeout: 246 seconds) |
2020-12-11 16:17:15 +0100 | Vulfe_ | (~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b) (Remote host closed the connection) |
2020-12-11 16:22:33 +0100 | Vulfe | (~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 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2020-12-11 16:33:51 +0100 | Entertainment | (~entertain@104.246.132.210) () |
2020-12-11 16:34:44 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-12-11 16:36:38 +0100 | jamm | (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
2020-12-11 16:37:50 +0100 | st8less | (~st8less@2603:a060:11fd:0:841d:e9ad:74f7:93f9) (Ping timeout: 264 seconds) |
2020-12-11 16:40:57 +0100 | phasespace | (~sar@89-162-33-21.fiber.signal.no) |
2020-12-11 16:42:09 +0100 | st8less | (~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 +0100 | codeAlways | (uid272474@gateway/web/irccloud.com/x-kqsckzxfcmyupltw) |
2020-12-11 16:50:56 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
2020-12-11 16:51:29 +0100 | acidjnk_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 +0100 | kuribas | (~user@ptr-25vy0i9ovuvi4dmg8ha.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2020-12-11 16:59:03 +0100 | gxt__ | (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
2020-12-11 17:00:31 +0100 | neiluj | (~jco@91-167-203-101.subs.proxad.net) |
2020-12-11 17:00:31 +0100 | neiluj | (~jco@91-167-203-101.subs.proxad.net) (Changing host) |
2020-12-11 17:00:31 +0100 | neiluj | (~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 +0100 | o1lo01ol1o | (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection) |
2020-12-11 17:06:03 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:c504:28ef:2ca:d7c2) (Ping timeout: 258 seconds) |
2020-12-11 17:10:12 +0100 | notzmv | (~user@unaffiliated/zmv) |
2020-12-11 17:10:53 +0100 | scasc | (~szabi@213142096072.public.telering.at) (Ping timeout: 265 seconds) |
2020-12-11 17:12:48 +0100 | Rudd0 | (~Rudd0@185.189.115.98) |
2020-12-11 17:17:01 +0100 | acidjnk_new | (~acidjnk@p200300d0c719ff72385a765c3f0a7348.dip0.t-ipconnect.de) |
2020-12-11 17:17:13 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2020-12-11 17:18:31 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) |
2020-12-11 17:18:42 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:e26e:cf9:1dd6:9615) |
2020-12-11 17:18:47 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) (Client Quit) |
2020-12-11 17:19:16 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) |
2020-12-11 17:20:43 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 17:23:11 +0100 | hekkaidekapus{ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-12-11 17:24:23 +0100 | scasc | (~szabi@213142096072.public.telering.at) |
2020-12-11 17:25:03 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2020-12-11 17:25:37 +0100 | conal | (~conal@107.181.166.103) |
2020-12-11 17:25:47 +0100 | unlink2 | (~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 +0100 | fresheyeball | (~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 +0100 | fresheyeball | (~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 +0100 | unlink2 | (~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 +0100 | heatsink | (~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 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
2020-12-11 17:31:43 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds) |
2020-12-11 17:32:10 +0100 | Amras | (~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 +0100 | heatsink | (~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 +0100 | pokid | (~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 +0100 | ubert | (~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 +0100 | ubert | (~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 +0100 | knupfer | (~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 +0100 | toorevitimirp | (~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 +0100 | cole-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 +0100 | inkbottle | (~inkbottle@aaubervilliers-654-1-76-48.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2020-12-11 17:48:51 +0100 | conal | (~conal@107.181.166.103) (Quit: Computer has gone to sleep.) |
2020-12-11 17:49:30 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-76-48.w86-212.abo.wanadoo.fr) |
2020-12-11 17:51:39 +0100 | notzmv | (~user@unaffiliated/zmv) (Remote host closed the connection) |
2020-12-11 17:52:30 +0100 | notzmv | (~user@unaffiliated/zmv) |
2020-12-11 17:52:50 +0100 | boxscape | (86ab2c53@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.83) (Ping timeout: 256 seconds) |
2020-12-11 17:52:56 +0100 | Kaivo | (~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 240 seconds) |
2020-12-11 17:54:31 +0100 | Lowl3v3l | (~Lowl3v3l@dslb-002-203-233-025.002.203.pools.vodafone-ip.de) |
2020-12-11 17:54:36 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection) |
2020-12-11 17:54:46 +0100 | hiroaki | (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
2020-12-11 17:55:00 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2020-12-11 17:55:03 +0100 | plutoniix | (~q@ppp-223-24-188-231.revip6.asianet.co.th) |
2020-12-11 17:57:18 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) |
2020-12-11 18:02:31 +0100 | hexfive | (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) |
2020-12-11 18:04:03 +0100 | elliott__ | (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
2020-12-11 18:04:32 +0100 | christo | (~chris@81.96.113.213) |
2020-12-11 18:09:16 +0100 | shadowdaemon | (~user@unaffiliated/shadowdaemon) (Quit: ERC Version 5.3 (IRC client for Emacs)) |
2020-12-11 18:09:21 +0100 | son0p | (~son0p@181.58.39.182) |
2020-12-11 18:09:54 +0100 | ransom_ | (c4264035@gateway/vpn/protonvpn/c4264035) |
2020-12-11 18:10:03 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2020-12-11 18:10:36 +0100 | qoppa | (1842826a@S0106283b8265e5fa.cg.shawcable.net) |
2020-12-11 18:12:17 +0100 | qoppa | (1842826a@S0106283b8265e5fa.cg.shawcable.net) (Remote host closed the connection) |
2020-12-11 18:13:02 +0100 | ransom__ | (c4264035@gateway/vpn/protonvpn/c4264035) |
2020-12-11 18:14:41 +0100 | ransom_ | (c4264035@gateway/vpn/protonvpn/c4264035) (Ping timeout: 265 seconds) |
2020-12-11 18:19:47 +0100 | drincruz_ | (~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 +0100 | polyphem | (~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 +0100 | enedil | (~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 +0100 | conal | (~conal@64.71.133.70) |
2020-12-11 18:26:43 +0100 | <phaazon> | it’s my “coFind” function |
2020-12-11 18:28:02 +0100 | enedil | (~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 +0100 | MOSCOS | (~MOSCOS@122.54.107.175) (Remote host closed the connection) |
2020-12-11 18:30:21 +0100 | MOSCOS | (~MOSCOS@122.54.107.175) |
2020-12-11 18:30:53 +0100 | <glguy> | print (solve map <$> [rule1, rule2]) |
2020-12-11 18:32:25 +0100 | dhouthoo | (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9) |
2020-12-11 18:33:13 +0100 | Neuromancer | (~Neuromanc@unaffiliated/neuromancer) |
2020-12-11 18:33:45 +0100 | polyphem | (~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 +0100 | ubert | (~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 +0100 | scasc | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2020-12-11 18:38:59 +0100 | tb6 | (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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Client Quit) |
2020-12-11 18:40:15 +0100 | tb6 | (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 +0100 | ski | . o O ( `flip solve rule = go where ...' ) |
2020-12-11 18:41:19 +0100 | qoppa | (1842826a@S0106283b8265e5fa.cg.shawcable.net) |
2020-12-11 18:41:20 +0100 | jonathanx_ | (~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 +0100 | tab40 | (239b6158@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) |
2020-12-11 18:41:51 +0100 | jonathanx | (~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 +0100 | Lowl3v3l | (~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 +0100 | sord937 | (~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 +0100 | chele | (~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 +0100 | cole-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 +0100 | tab40 | (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 +0100 | sord937 | (~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 +0100 | nineonine | (~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 +0100 | Saukk | (~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e) |
2020-12-11 18:53:15 +0100 | qoppa | (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 +0100 | Saukk | (~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 +0100 | Lowl3v3l | (~Lowl3v3l@2001:638:1558:99f8::1) |
2020-12-11 19:00:30 +0100 | phaul | (~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds) |
2020-12-11 19:00:41 +0100 | conal | (~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 +0100 | ransom_ | (~c4264035@undergraduate-jvossen-9690.mines.edu) |
2020-12-11 19:02:43 +0100 | phaul | (~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 +0100 | ransom__ | (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 +0100 | conal | (~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 +0100 | ystael | (~ystael@209.6.50.55) (Quit: Lost terminal) |
2020-12-11 19:12:54 +0100 | ystael | (~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 +0100 | ski | . o O ( ⌜s ≃ ⌊s ∕ a⌋ + (s % a) ⋅ a⌝ ) |
2020-12-11 19:13:10 +0100 | rayyyy | (~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 +0100 | Boomerang | (~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 +0100 | enedil | (~enedil@d101-29.icpnet.pl) |
2020-12-11 19:16:04 +0100 | remby | (~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 +0100 | nuncanada | (~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 +0100 | hnOsmium0001 | (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 +0100 | jonathanx | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Reconnecting) |
2020-12-11 19:27:09 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 19:27:28 +0100 | ralejs | (~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 +0100 | bollu2 | (~bollu@139.59.46.74) |
2020-12-11 19:30:26 +0100 | solonarv_ | (~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr) |
2020-12-11 19:30:34 +0100 | solonarv | (~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr) (Ping timeout: 265 seconds) |
2020-12-11 19:30:46 +0100 | bollu | (~bollu@139.59.46.74) (Read error: Connection reset by peer) |
2020-12-11 19:30:46 +0100 | bollu2 | bollu |
2020-12-11 19:32:49 +0100 | ralejs | (~ralejs@2620:10d:c093:400::5:9f2) |
2020-12-11 19:33:00 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) |
2020-12-11 19:33:41 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-12-11 19:34:33 +0100 | matryoshka | (~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 +0100 | Fractalis | (~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 +0100 | Fractalis | (~Fractalis@2601:987:280:8d40:406e:6ad8:9d0d:835) (Remote host closed the connection) |
2020-12-11 19:36:56 +0100 | columbarius | (~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 +0100 | o1lo01ol1o | (~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 +0100 | columbarius | (~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 +0100 | matryoshka | (~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 +0100 | matryoshka | (~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 +0100 | o1lo01ol1o | (~o1lo01ol1@46.50.88.242) (Ping timeout: 256 seconds) |
2020-12-11 19:42:20 +0100 | matryoshka | (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
2020-12-11 19:42:50 +0100 | matryoshka | (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit) |
2020-12-11 19:42:50 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:f4bb:54f5:d69c:a304) (Ping timeout: 258 seconds) |
2020-12-11 19:43:36 +0100 | jonasm | (~jonasm@78-56-197-192.static.zebra.lt) |
2020-12-11 19:43:43 +0100 | matryoshka | (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
2020-12-11 19:43:44 +0100 | fendor | (~fendor@178.165.131.83.wireless.dyn.drei.com) |
2020-12-11 19:44:07 +0100 | jonasm | (~jonasm@78-56-197-192.static.zebra.lt) (Read error: Connection reset by peer) |
2020-12-11 19:44:27 +0100 | fendor_ | (~fendor@178.165.131.83.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
2020-12-11 19:45:08 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection) |
2020-12-11 19:45:37 +0100 | jonasm | (~jonasm@78-56-197-192.static.zebra.lt) |
2020-12-11 19:45:56 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) |
2020-12-11 19:46:37 +0100 | jonasm | (~jonasm@78-56-197-192.static.zebra.lt) (Read error: Connection reset by peer) |
2020-12-11 19:48:00 +0100 | ski | thought it was already intended to be inclusive |
2020-12-11 19:50:04 +0100 | ADG1089_ | (~androirc@122.163.174.248) |
2020-12-11 19:51:29 +0100 | errst | (~errst@unaffiliated/tirej) |
2020-12-11 19:52:15 +0100 | ralejs | (~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 +0100 | nineonine_ | (~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 +0100 | hiroaki | (~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 +0100 | shf | (~sheaf@2a01:cb19:80cc:7e00:159e:9ac:2ff5:a704) (Read error: Connection reset by peer) |
2020-12-11 19:56:33 +0100 | knupfer | (~Thunderbi@200116b82c2b420054afd2fffe7dc17c.dip.versatel-1u1.de) |
2020-12-11 19:56:34 +0100 | knupfer | (~Thunderbi@200116b82c2b420054afd2fffe7dc17c.dip.versatel-1u1.de) (Client Quit) |
2020-12-11 19:56:47 +0100 | knupfer | (~Thunderbi@i5E86B444.versanet.de) |
2020-12-11 19:56:51 +0100 | thc202 | (~thc202@unaffiliated/thc202) (Quit: thc202) |
2020-12-11 19:56:56 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
2020-12-11 19:56:57 +0100 | nineonine_ | nineonine |
2020-12-11 19:57:19 +0100 | <monochrom> | OK, explicating all necessary ordinals. |
2020-12-11 19:57:25 +0100 | ralejs | (~ralejs@2620:10d:c093:400::5:9f2) |
2020-12-11 19:58:19 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:b4bc:f6c9:c430:776f) |
2020-12-11 19:58:26 +0100 | ski | idly 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 +0100 | ski | . 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 +0100 | bliminse | (~bliminse@host86-134-63-68.range86-134.btcentralplus.com) (Ping timeout: 256 seconds) |
2020-12-11 20:07:45 +0100 | drincruz_ | (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds) |
2020-12-11 20:08:23 +0100 | bliminse | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-11 20:11:49 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 20:13:52 +0100 | ransom_ | (~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 +0100 | DavidEichmann | (~david@62.110.198.146.dyn.plus.net) (Ping timeout: 260 seconds) |
2020-12-11 20:17:01 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-12-11 20:17:04 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds) |
2020-12-11 20:17:48 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-12-11 20:17:51 +0100 | geekosaur | (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 +0100 | filwisher | (~filwisher@78.141.201.45) (Ping timeout: 260 seconds) |
2020-12-11 20:26:57 +0100 | o1lo01ol1o | (~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 +0100 | fresheyeball | (~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Ping timeout: 246 seconds) |
2020-12-11 20:28:41 +0100 | shf | (~sheaf@2a01:cb19:80cc:7e00:159e:9ac:2ff5:a704) |
2020-12-11 20:29:05 +0100 | Tario | (~Tario@201.192.165.173) |
2020-12-11 20:30:32 +0100 | fresheyeball | (~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 +0100 | filwisher | (~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 +0100 | luke | (~luke@bitnomial/staff/luke) |
2020-12-11 20:34:35 +0100 | bitmagie | (~Thunderbi@200116b80638310001d2823cf2ef2077.dip.versatel-1u1.de) (Quit: bitmagie) |
2020-12-11 20:34:59 +0100 | kupi | (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 +0100 | unfo- | (~unfo-@185.103.96.147) (Ping timeout: 264 seconds) |
2020-12-11 20:40:56 +0100 | o1lo01ol1o | (~o1lo01ol1@31.22.250.118) (Remote host closed the connection) |
2020-12-11 20:41:44 +0100 | sunetoft | (~sunetoft@s91904426.blix.com) |
2020-12-11 20:42:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 20:42:56 +0100 | notzmv | (~user@unaffiliated/zmv) (Remote host closed the connection) |
2020-12-11 20:43:22 +0100 | christo | (~chris@81.96.113.213) |
2020-12-11 20:43:29 +0100 | urodna | (~urodna@unaffiliated/urodna) (Ping timeout: 256 seconds) |
2020-12-11 20:44:23 +0100 | ambidextrose | (~fut-learn@107.72.99.138) |
2020-12-11 20:44:25 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds) |
2020-12-11 20:45:53 +0100 | ski | glances at solonarv_ |
2020-12-11 20:46:20 +0100 | notzmv | (~user@unaffiliated/zmv) |
2020-12-11 20:47:25 +0100 | urodna | (~urodna@unaffiliated/urodna) |
2020-12-11 20:47:54 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-12-11 20:50:02 +0100 | jneira | (501e6453@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.83) |
2020-12-11 20:50:07 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-12-11 20:52:10 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz) |
2020-12-11 20:52:16 +0100 | nineonin_ | (~nineonine@50.216.62.2) |
2020-12-11 20:52:16 +0100 | nineonine | (~nineonine@50.216.62.2) (Quit: nineonine) |
2020-12-11 20:53:13 +0100 | blissful- | (~blissful@unaffiliated/azuline) |
2020-12-11 20:53:24 +0100 | Ariakenom_ | (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) |
2020-12-11 20:53:47 +0100 | blissful | (~azuline@unaffiliated/azuline) (Quit: The Lounge - https://thelounge.chat) |
2020-12-11 20:53:47 +0100 | blissful- | blissful |
2020-12-11 20:54:26 +0100 | nineonin_ | (~nineonine@50.216.62.2) (Remote host closed the connection) |
2020-12-11 20:54:48 +0100 | nineonine | (~nineonine@50.216.62.2) |
2020-12-11 20:55:13 +0100 | remby | (~remby@2607:fea8:2c40:a3::56de) ("Good Bye") |
2020-12-11 20:57:00 +0100 | Ariakenom | (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
2020-12-11 20:57:44 +0100 | ubert | (~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 +0100 | ggole | (~ggole@2001:8003:8119:7200:cdad:14fe:9dc3:f21) (Quit: Leaving) |
2020-12-11 21:01:44 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-12-11 21:02:28 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-12-11 21:02:40 +0100 | argento | (~argent0@168.227.97.34) |
2020-12-11 21:03:19 +0100 | jpcooper | (~user@unaffiliated/jpcooper) |
2020-12-11 21:03:57 +0100 | Tario | (~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 +0100 | wonko7 | (~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) (Ping timeout: 258 seconds) |
2020-12-11 21:12:11 +0100 | christo | (~chris@81.96.113.213) |
2020-12-11 21:14:05 +0100 | mrchampion | (~mrchampio@38.18.109.23) (Ping timeout: 240 seconds) |
2020-12-11 21:15:48 +0100 | shadowdaemon | (~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 +0100 | ralejs | (~ralejs@2620:10d:c093:400::5:9f2) (Read error: Connection reset by peer) |
2020-12-11 21:16:40 +0100 | mouseghost | (~draco@87-206-9-185.dynamic.chello.pl) |
2020-12-11 21:16:40 +0100 | mouseghost | (~draco@87-206-9-185.dynamic.chello.pl) (Changing host) |
2020-12-11 21:16:41 +0100 | mouseghost | (~draco@wikipedia/desperek) |
2020-12-11 21:16:54 +0100 | raehik | (~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 +0100 | raehik | (~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 +0100 | actuallybatman | (~sam@S010664777dafd303.cg.shawcable.net) () |
2020-12-11 21:19:16 +0100 | mrchampion | (~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 +0100 | ralejs | (~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 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-zbtjtxhgvedwatkk) |
2020-12-11 21:21:22 +0100 | ralejs | (~ralejs@2620:10d:c093:400::5:9f2) (Read error: Connection reset by peer) |
2020-12-11 21:21:26 +0100 | merijn | (~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 +0100 | wonko7 | (~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 +0100 | sgibber2018 | (~arch-gibb@208.85.237.137) |
2020-12-11 21:26:43 +0100 | geowiesnot | (~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 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-12-11 21:27:40 +0100 | knupfer | (~Thunderbi@i5E86B444.versanet.de) (Ping timeout: 256 seconds) |
2020-12-11 21:28:39 +0100 | conal | (~conal@64.71.133.70) |
2020-12-11 21:28:39 +0100 | conal | (~conal@64.71.133.70) (Client Quit) |
2020-12-11 21:29:13 +0100 | vfaronov | (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
2020-12-11 21:29:22 +0100 | jpcooper | (~user@unaffiliated/jpcooper) ("ERC (IRC client for Emacs 26.1)") |
2020-12-11 21:29:54 +0100 | conal | (~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 +0100 | conal | (~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 +0100 | conal | (~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 +0100 | conal | (~conal@64.71.133.70) (Client Quit) |
2020-12-11 21:31:03 +0100 | knupfer | (~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 +0100 | son0p | (~son0p@181.58.39.182) (Quit: leaving) |
2020-12-11 21:35:06 +0100 | ralejs | (~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 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2020-12-11 21:36:11 +0100 | remby | (~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 +0100 | matryoshka | (~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 +0100 | Kaiepi | (~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 +0100 | Kaiepi | (~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 +0100 | sgibber2018 | (~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 +0100 | remby | (~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 +0100 | Varis | (~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 +0100 | mastarija | (~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 +0100 | argento | (~argent0@168.227.97.34) (Ping timeout: 240 seconds) |
2020-12-11 21:45:54 +0100 | Gurkenglas_ | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 265 seconds) |
2020-12-11 21:45:59 +0100 | Varis | (~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 +0100 | codeAlways | (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 +0100 | unlink2 | (~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-12-11 21:51:38 +0100 | ralejs | (~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 +0100 | unlink2 | (~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 +0100 | gxt__ | (~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 +0100 | mastarija | (~mastarija@93-136-86-23.adsl.net.t-com.hr) (Read error: Connection reset by peer) |
2020-12-11 21:55:22 +0100 | LKoen | (~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 +0100 | merijn | (~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 +0100 | ralejs | (~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 +0100 | argento | (~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 +0100 | hlysig | (~hlysig@mobile-194-144-46-247.3G.internet.is) |
2020-12-11 22:01:08 +0100 | ambidextrose | (~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 +0100 | mrchampion | (~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 +0100 | star_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 +0100 | mrchampion | (~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 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 22:13:14 +0100 | luke | (~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 +0100 | mrchampion | (~mrchampio@38.18.109.23) (Ping timeout: 256 seconds) |
2020-12-11 22:14:16 +0100 | ski | would just write `isJust (sequence_ res)' there (alternatively `all isJust res') |
2020-12-11 22:15:04 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz) |
2020-12-11 22:15:38 +0100 | ChaiTRex | (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection) |
2020-12-11 22:16:12 +0100 | ChaiTRex | (~ChaiTRex@gateway/tor-sasl/chaitrex) |
2020-12-11 22:16:56 +0100 | argento | (~argent0@168.227.97.34) (Ping timeout: 258 seconds) |
2020-12-11 22:17:54 +0100 | mrchampion | (~mrchampio@38.18.109.23) |
2020-12-11 22:17:56 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds) |
2020-12-11 22:18:14 +0100 | knupfer | (~Thunderbi@i5E86B444.versanet.de) (Quit: knupfer) |
2020-12-11 22:18:18 +0100 | knupfer1 | (~Thunderbi@200116b82c2b4200a4bfc96be48f5e57.dip.versatel-1u1.de) |
2020-12-11 22:18:28 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection) |
2020-12-11 22:20:14 +0100 | carlomagno | (~cararell@148.87.23.4) (Remote host closed the connection) |
2020-12-11 22:20:40 +0100 | knupfer1 | knupfer |
2020-12-11 22:21:05 +0100 | <Kronic> | Thanks for all of the suggestions, that helped a lot |
2020-12-11 22:22:34 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9) |
2020-12-11 22:23:05 +0100 | conal | (~conal@64.71.133.70) |
2020-12-11 22:23:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-11 22:26:47 +0100 | mounty | (~mounty@210.1.196.133) |
2020-12-11 22:28:40 +0100 | carlomagno | (~cararell@148.87.23.4) |
2020-12-11 22:28:55 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2020-12-11 22:29:19 +0100 | son0p | (~son0p@181.136.122.143) |
2020-12-11 22:33:05 +0100 | carlomagno | (~cararell@148.87.23.4) (Ping timeout: 240 seconds) |
2020-12-11 22:36:04 +0100 | carlomagno | (~cararell@148.87.23.4) |
2020-12-11 22:38:31 +0100 | monadmatt | (~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 +0100 | o1lo01ol1o | (~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 +0100 | xiinotulp | (~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 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
2020-12-11 22:45:08 +0100 | carlomagno | (~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 +0100 | o1lo01ol1o | (~o1lo01ol1@31.22.250.118) (Ping timeout: 264 seconds) |
2020-12-11 22:46:25 +0100 | plutoniix | (~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 +0100 | carlomagno | (~cararell@148.87.23.8) |
2020-12-11 22:47:06 +0100 | merijn | (~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 +0100 | drincruz_ | (~adriancru@ool-44c748be.dyn.optonline.net) |
2020-12-11 23:00:23 +0100 | danvet | (~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 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 260 seconds) |
2020-12-11 23:04:41 +0100 | cybai_ | (~cybai@2400:4050:3122:900:8422:f0e8:f906:32e1) |
2020-12-11 23:05:02 +0100 | Tario | (~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 +0100 | elliott__ | (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) |
2020-12-11 23:07:21 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2020-12-11 23:08:26 +0100 | cybai | (~cybai@2400:4050:3122:900:45a6:8125:8bb4:dbed) (Ping timeout: 264 seconds) |
2020-12-11 23:09:53 +0100 | Deide | (~Deide@217.155.19.23) |
2020-12-11 23:10:05 +0100 | Kronic | (~Kronic___@84.203.98.133) (Ping timeout: 240 seconds) |
2020-12-11 23:10:30 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
2020-12-11 23:11:14 +0100 | quantumvatican | (~private@lfbn-idf2-1-504-211.w86-246.abo.wanadoo.fr) |
2020-12-11 23:13:29 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2020-12-11 23:13:45 +0100 | son0p | (~son0p@181.136.122.143) (Ping timeout: 240 seconds) |
2020-12-11 23:14:40 +0100 | ADG1089_ | (~androirc@122.163.174.248) (Read error: Connection reset by peer) |
2020-12-11 23:16:03 +0100 | scasc | (~szabi@213142096072.public.telering.at) |
2020-12-11 23:16:03 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
2020-12-11 23:16:28 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) |
2020-12-11 23:16:32 +0100 | drincruz_ | drincruz |
2020-12-11 23:17:07 +0100 | monadmatt | (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 258 seconds) |
2020-12-11 23:17:17 +0100 | zenbamboo | (~zen@cpe2-14-242.cable.triera.net) |
2020-12-11 23:17:37 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds) |
2020-12-11 23:17:53 +0100 | brodie_ | (~brodie@207.53.253.137) |
2020-12-11 23:18:24 +0100 | brodie_ | brodie |
2020-12-11 23:20:43 +0100 | denisse_ | (~spaceCat@gateway/tor-sasl/alephzer0) |
2020-12-11 23:20:58 +0100 | vfaronov | (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
2020-12-11 23:21:10 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) |
2020-12-11 23:22:04 +0100 | fresheyeball | (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 256 seconds) |
2020-12-11 23:22:22 +0100 | fresheyeball | (~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) |
2020-12-11 23:23:52 +0100 | conal | (~conal@64.71.133.70) (Ping timeout: 246 seconds) |
2020-12-11 23:25:02 +0100 | conal | (~conal@66.115.157.156) |
2020-12-11 23:27:18 +0100 | aev | (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) |
2020-12-11 23:27:51 +0100 | knupfer | (~Thunderbi@200116b82c2b4200a4bfc96be48f5e57.dip.versatel-1u1.de) (Ping timeout: 258 seconds) |
2020-12-11 23:29:11 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) () |
2020-12-11 23:30:31 +0100 | ubert | (~Thunderbi@p200300ecdf1e530fe6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-12-11 23:33:27 +0100 | MidAutumnHotaru | (~MidAutumn@154.91.197.93) (Quit: Ping timeout (120 seconds)) |
2020-12-11 23:34:22 +0100 | neiluj | (~jco@unaffiliated/neiluj) (Ping timeout: 258 seconds) |
2020-12-11 23:34:47 +0100 | zenbamboo | (~zen@cpe2-14-242.cable.triera.net) (Remote host closed the connection) |
2020-12-11 23:35:36 +0100 | StoneToad | (~StoneToad@199-167-119-150.ppp.storm.ca) (Ping timeout: 240 seconds) |
2020-12-11 23:36:40 +0100 | StoneToad | (~StoneToad@199-167-119-150.ppp.storm.ca) |
2020-12-11 23:42:26 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-12-11 23:43:08 +0100 | Kronic | (~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 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection) |
2020-12-11 23:50:37 +0100 | seanparsons | (~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 +0100 | gxt__ | (~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 +0100 | monadmatt | (~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 +0100 | star_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 +0100 | seanparsons | (~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 +0100 | argento | (~argent0@168.227.97.34) |
2020-12-11 23:59:59 +0100 | MidAutumnHotaru | (~MidAutumn@154.91.197.93) |