Home freenode/#haskell: Logs Calendar

Logs: freenode/#haskell

←Prev  Next→
Page 1 .. 431 432 433 434 435 436 437 438 439 440 441 .. 5022
502,152 events total
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.