Logs: freenode/#haskell
| 2020-10-05 16:23:41 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 2020-10-05 16:24:26 | <fog23> | dsal: right! so you can easily try several different versions, just depending on the type, instead of trying all different named synonyms |
| 2020-10-05 16:24:27 | <c_wraith> | lortabac: yeah... with ad-hoc polymorphism, it depends on how big the class is. Num is almost too big to help. Monoid or Functor are vastly more informative than any concrete instance. Foldable... is right on the edge. |
| 2020-10-05 16:24:53 | <fog23> | but then, this might not be the case for "has" where you would very rarely, *not* want the synonym named version |
| 2020-10-05 16:25:08 | <fog23> | like, everytime you write a Has instance, you should make a synonym |
| 2020-10-05 16:25:15 | <fog23> | (Has is basically coerce) |
| 2020-10-05 16:25:45 | <fog23> | you wouldnt want the whole of your code being a bunch of has casts, and a myriad of type applications |
| 2020-10-05 16:26:30 | <fog23> | but then you have to think of better synonym names than hasTypeATypeB |
| 2020-10-05 16:26:50 | × | Stanley00 quits (~stanley00@unaffiliated/stanley00) (Ping timeout: 258 seconds) |
| 2020-10-05 16:26:57 | hackage | servant-auth 0.4.0.0 - Authentication combinators for servant https://hackage.haskell.org/package/servant-auth-0.4.0.0 (domenkozar) |
| 2020-10-05 16:27:07 | <fog23> | (your only really writing has instances where there is a natural choice for a unique coercion) |
| 2020-10-05 16:27:17 | <fog23> | hmm |
| 2020-10-05 16:27:26 | <ski> | monochrom : "But here is a downside I don't know how to solve.","Despite my white lies, error messages are going to leak the cold hard truth." -- in Racket, they have language levels, to deal with that |
| 2020-10-05 16:27:31 | <fog23> | i remember having a "labled" or tagged has class aswell |
| 2020-10-05 16:27:46 | <dsal> | racket-style language levels would be really neat. |
| 2020-10-05 16:27:52 | <fog23> | so you could choose which of several has instance, by an extensible label |
| 2020-10-05 16:27:59 | <dsal> | I like the idea of map when I know nothing at all, but I really dislike map today. |
| 2020-10-05 16:28:05 | <fog23> | dont think you can use data families in instances though... |
| 2020-10-05 16:28:20 | <fog23> | or if you do it has to use an equality constraint or something |
| 2020-10-05 16:28:22 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds) |
| 2020-10-05 16:28:27 | <fog23> | it was very complicated to say the least |
| 2020-10-05 16:29:13 | <sm[m]> | dsal: agreed on language levels! |
| 2020-10-05 16:29:13 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 2020-10-05 16:29:28 | <sm[m]> | as a start, we could at least define some |
| 2020-10-05 16:29:33 | <dsal> | I'm glad we've finally solved this problem. See you guys at the next meeting. |
| 2020-10-05 16:29:42 | <fog23> | bsically, i think i have to abandon haskell, because i cant express graphs |
| 2020-10-05 16:29:50 | <fog23> | because GADTs cant have copying |
| 2020-10-05 16:29:53 | <fog23> | or something |
| 2020-10-05 16:29:56 | sm[m] | assigns action time to dsal on the way out |
| 2020-10-05 16:30:01 | <sm[m]> | ITEM |
| 2020-10-05 16:30:18 | <ski> | there are a few graph libraries, i thought |
| 2020-10-05 16:30:24 | <fog23> | no |
| 2020-10-05 16:30:25 | <fog23> | like trees |
| 2020-10-05 16:30:34 | <fog23> | they can be expressed using GADTs |
| 2020-10-05 16:30:58 | <fog23> | graphs cant because several lower branches on different paths can refer to the same common lower branch |
| 2020-10-05 16:31:09 | <fog23> | and i dont think there is a way to express that "copying" |
| 2020-10-05 16:31:11 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-10-05 16:31:19 | <ski> | but no direct support for defining specialized kinds of graphs, akin to how `data' can be thought of as a way to define specialized kinds of trees |
| 2020-10-05 16:31:37 | <fog23> | also we need some way to say things like "this record is reserved for knot typing" |
| 2020-10-05 16:31:37 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 2020-10-05 16:31:41 | <fog23> | tying* |
| 2020-10-05 16:32:04 | <ski> | you could use some kind of references, to express that sharing (DAGs, i suppose you want ? or also allow cycles ?) |
| 2020-10-05 16:32:38 | <fog23> | and also maybe some kind of linear types, like "this lower tree portion is referred to exactly once" |
| 2020-10-05 16:33:23 | <fog23> | ski: what do you mean, i dont undertand how DAGs correponds to the sharing - and what are you asking about cycles? |
| 2020-10-05 16:33:23 | <ski> | (dunno what you mean by "this record is reserved for knot tying") |
| 2020-10-05 16:33:26 | → | balbirs joins (~balbirs__@bilbo.ozlabs.org) |
| 2020-10-05 16:33:41 | <ski> | there are many different kinds of graphs, mathematically speaking |
| 2020-10-05 16:33:59 | <fog23> | if i dont care about sharing/copying, then i can have a doubly linked tree as Free (\a -> (a,Nonempty a)) |
| 2020-10-05 16:34:16 | <fog23> | where the fst, the `a' - is "reserved for knot tying" |
| 2020-10-05 16:34:56 | <ski> | you can have directed vs. undirected graphs (or even have both directed and undirected edges). you can allow self-edges (loops) or not. you can allow multiple parallel edges or not. you can adorn vertices, ior edges, with some extra associated information |
| 2020-10-05 16:35:22 | <fog23> | without syntax to do that during the writing of the GADT, then this is not demanded of the user, and they must choose to write the knot typing function to actually construct the datatype properly |
| 2020-10-05 16:35:42 | <fog23> | you cant "pass the upper reference into the lower constructors" during the writing of the GADT |
| 2020-10-05 16:36:19 | <ski> | you can have graphs where the vertices come in several different kinds (which, say, determine which out-nodes they have, and possibly also determine in-nodes). and presumably also different kinds of edges |
| 2020-10-05 16:36:41 | <fog23> | thats quite comprehensive |
| 2020-10-05 16:37:03 | <ski> | (i still dunno what you mean by the "reserved for knot tying") |
| 2020-10-05 16:37:03 | <fog23> | but, we have *none* of the tools to express these as datatypes |
| 2020-10-05 16:37:38 | <ski> | yea, we have to do them, manually, as abstract data types .. it would be nice, if we could, somehow, express them more directly/explicitly |
| 2020-10-05 16:37:42 | <fog23> | we were using this example before |
| 2020-10-05 16:37:43 | <fog23> | https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Data/Account.hs#L93 |
| 2020-10-05 16:37:43 | ← | r-gt parts (63f22acf@gateway/web/cgi-irc/kiwiirc.com/ip.99.242.42.207) () |
| 2020-10-05 16:37:56 | <fog23> | as a "knot tying function" |
| 2020-10-05 16:38:05 | <fog23> | this has to be done aswell as construction |
| 2020-10-05 16:38:17 | → | sQVe joins (~sQVe@unaffiliated/sqve) |
| 2020-10-05 16:38:18 | <ski> | "pass the upper reference into the lower constructors" is for ? |
| 2020-10-05 16:38:28 | <fog23> | without those, there is no telling that the "parent" record, is actually a knot |
| 2020-10-05 16:38:48 | <fog23> | ski: thats basically what typing the knot is all about - in the context of double linkage |
| 2020-10-05 16:38:54 | <ski> | oh, you want parent links, in nodes |
| 2020-10-05 16:38:58 | <monochrom> | dsal: I wonder if you also find this other quote related :) |
| 2020-10-05 16:39:03 | <monochrom> | @quote monochrom Kripke |
| 2020-10-05 16:39:04 | <lambdabot> | monochrom says: There are truths, damn truths, and Kripke structures. |
| 2020-10-05 16:39:05 | <fog23> | but specifically, just for when the knot is tyed to the directly preceeding element |
| 2020-10-05 16:39:33 | <fog23> | ski: parent links, in nodes, is *one* of the forms of knot tying we dont support by construction |
| 2020-10-05 16:39:45 | <fog23> | we also dont have *several* knots, or knots extending far below |
| 2020-10-05 16:39:50 | <fog23> | or above |
| 2020-10-05 16:39:51 | <monochrom> | (So, Kripke structures formalize multiple worlds so you can have multiple different truths in different worlds.) |
| 2020-10-05 16:40:13 | <dolio> | Kripke structures are just degenerate sheaves. |
| 2020-10-05 16:40:21 | <fog23> | your a degenerate sheef |
| 2020-10-05 16:40:22 | <dolio> | Presheaves, even. |
| 2020-10-05 16:40:24 | <ski> | an alternative to parent links, is to use a zipper that reverses edges as you traverse them. but this doesn't work (at least directly), if you have cycles (other than the bidirectional edges) |
| 2020-10-05 16:40:41 | <fog23> | monochrom is the second variety |
| 2020-10-05 16:40:56 | <ski> | "we also dont have *several* knots, or knots extending far below or above" ? |
| 2020-10-05 16:41:02 | <ski> | by "knots", you mean cycles ? |
| 2020-10-05 16:41:13 | <fog23> | typing the knot establishes cycles |
| 2020-10-05 16:41:19 | × | conal quits (~conal@172.255.125.158) (Quit: Computer has gone to sleep.) |
| 2020-10-05 16:41:20 | <fog23> | a knot would be a cyclic reference, i think |
| 2020-10-05 16:41:23 | <ski> | (s/sheef/sheaf/) |
| 2020-10-05 16:41:59 | <ski> | monochrom : that's like, your truth, man |
| 2020-10-05 16:42:09 | <fog23> | pinciple bundle section of the module of spectral hyperkhaler distributions |
| 2020-10-05 16:42:45 | <monochrom> | But don't you like how it pairs up with "there are lies, damn lies, and statistics"? :) |
| 2020-10-05 16:43:13 | <fog23> | cuspidal solitonic top forms in the harmonic fibration of differential topologies |
| 2020-10-05 16:43:18 | <ski> | anyway, it's possible to use references to describe cycles. they can be compared for equality, so you can know when you're back again |
| 2020-10-05 16:44:19 | <monochrom> | Ooohhh, immutable references to help with explicating cycles. |
| 2020-10-05 16:44:19 | <fog23> | hodge arrows in the quiver monoid |
| 2020-10-05 16:44:27 | <nshepperd> | knot tying is generally a bad idea except as an optimization |
| 2020-10-05 16:45:27 | <fog23> | shepperd: oh contrare |
| 2020-10-05 16:45:58 | <fog23> | im away to run counterwidishins around the bliths stone, avast to you |
| 2020-10-05 16:46:00 | × | fog23 quits (c1b057e2@gateway/web/cgi-irc/kiwiirc.com/ip.193.176.87.226) (Quit: Connection closed) |
| 2020-10-05 16:46:13 | <monochrom> | Good riddance. |
| 2020-10-05 16:46:25 | <nshepperd> | the knot tying that hledger does seems very silly to me |
| 2020-10-05 16:46:32 | → | conal joins (~conal@64.71.133.70) |
All times are in UTC.