Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→
Page 1 .. 868 869 870 871 872 873 874 875 876 877 878 .. 18026
1,802,584 events total
2021-07-09 18:49:53 <davean> I've seen plugins used for library support too
2021-07-09 18:49:55 <sclv> but again unpleasant compared to doing it directly
2021-07-09 18:50:06 <davean> where its not a language thing, but a specific library needs a macro-ish transform to work
2021-07-09 18:50:13 <davean> like for tracing
2021-07-09 18:50:23 <davean> Thats where a plugin always fits I think
2021-07-09 18:51:30 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-07-09 18:52:14 <Hecate> davean: Polysemy needs a plugin to avoid terrible performance
2021-07-09 18:52:20 <sclv> lechner: they're just anonymous records, also known as heterogenous lists, hlists, or "extensible tuples" among other things
2021-07-09 18:52:25 <Hecate> (but delcont primop should fix this)
2021-07-09 18:52:36 <sclv> there's plenty of packages for doing them in haskell -- hlist, row-types, etc...
2021-07-09 18:52:53 <sclv> they were scary in the context of ur because it was written by a type theorist so they looked scary
2021-07-09 18:52:59 <sclv> in the docs :-)
2021-07-09 18:53:03 <Hecate> lechner: https://hgiasac.github.io/posts/2018-11-18-Record-Row-Type-and-Row-Polymorphism.html
2021-07-09 18:53:39 <sclv> ml also had them for years, where they were considered Not Scary
2021-07-09 18:54:12 <davean> sclv: I don't know, I thought they were scary because they type system implimentations tend to work poorly and have bad comprimises :)
2021-07-09 18:54:20 justsomeguy joins (~justsomeg@user/justsomeguy)
2021-07-09 18:54:31 × yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2021-07-09 18:54:35 <sclv> there's a lot of systems that do them pretty well in the literature, not least ml
2021-07-09 18:54:36 <Hecate> I know error reporting in PureScript is at times painful
2021-07-09 18:54:45 <monochrom> "The row types documentation frankly scares me away." is very different from "the row types scares me away".
2021-07-09 18:55:21 <sclv> having them in the presence of a ton of other things including type classes and higher order polymorphism etc can be a bit much
2021-07-09 18:55:22 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-09 18:55:30 <monochrom> As usual, Chris Done doesn't write ridiculous things.
2021-07-09 18:55:38 <sclv> well...
2021-07-09 18:55:41 <Hecate> monochrom: since the documentation is the gateway to the concept, they mean the same thing
2021-07-09 18:55:55 <davean> Hecate: absolutely not!
2021-07-09 18:56:05 <monochrom> No. I know how to write scary documentation for Int.
2021-07-09 18:56:14 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-09 18:56:18 <lechner> Is this still true? (from Hecate) "you can't define Person { name :: String } and Cat { name :: String } in same module. Function name will be duplicated"
2021-07-09 18:56:32 <monochrom> For Bool. For ().
2021-07-09 18:56:42 <davean> lechner: somewhat
2021-07-09 18:56:52 <davean> lechner: Thats never a problem though
2021-07-09 18:57:03 <davean> (Its a problem if you can!)
2021-07-09 18:57:07 <Hecate> monochrom: I swear to god I've had terrifying introductions in maths class for concepts that scared me years after until someone introduced me to them again
2021-07-09 18:57:21 <sclv> we have an extension that removes that limitation iirc -- a whole universe of extensions for working with that sort of stuff now in fact (and i'm not up to speed because i haven't bothered to use em in practice yet)
2021-07-09 18:57:24 <davean> Hecate: right, so don't do the documentation, just do the concepts
2021-07-09 18:57:38 <davean> sclv: well thats not Haskell persay
2021-07-09 18:57:38 <Hecate> davean: the concepts don't appear from nowhere in your head :)
2021-07-09 18:58:00 <davean> Hecate: No, they appear from the direct specification
2021-07-09 18:58:01 <monochrom> I know how to write scary documentation for javascript. Hell, I learned from Guy Steele, he did that.
2021-07-09 18:58:09 <davean> Usually the construction
2021-07-09 18:58:18 <Hecate> davean: specification isn't documentation?
2021-07-09 18:58:33 <davean> Hecate: absolutely not, it exactly the thing
2021-07-09 18:58:42 <davean> Its definitional
2021-07-09 18:58:44 <lechner> I plan to use Generic instances for FromJSON for parsing, but the files are complicated and may share field names across levels. Will that be a problem?
2021-07-09 18:59:03 <Hecate> davean: is a reference documentation for you?
2021-07-09 18:59:11 <davean> Hecate: Yes
2021-07-09 18:59:13 <sclv> lechner: that shouldn't be a problem, no. just make sure that the datatypes with overlapping field names are each defined in different modules.
2021-07-09 18:59:29 <davean> Hecate: I do not mean "specification" like "someone describing it" I mean specification as in "this specifies it"
2021-07-09 18:59:34 <lechner> ok, thanks!
2021-07-09 18:59:44 × xff0x quits (~xff0x@2001:1a81:521d:ec00:3970:2542:2f1d:feb7) (Ping timeout: 255 seconds)
2021-07-09 18:59:46 <Hecate> davean: then you're the first person I've met who doesn't believe that specification is documentation
2021-07-09 18:59:56 <Hecate> Personally I follow this quadrant: https://documentation.divio.com/_images/overview.png
2021-07-09 19:00:02 <sclv> also cf https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/duplicate_record_fields.html
2021-07-09 19:00:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-09 19:00:19 <davean> Hecate: I think this is an issue with there being multiple meanings of the word specification, which I tried to clarify
2021-07-09 19:00:22 <dsal> ghc: panic! (the 'impossible' happened) -- well, I guess it's lunch time.
2021-07-09 19:00:29 <Hecate> dsal: happy meal
2021-07-09 19:00:36 motherfs1 joins (~motherfsc@user/motherfsck)
2021-07-09 19:01:03 <Hecate> davean: I don't understand the difference between "something describing it" and "something specifying it"?
2021-07-09 19:01:05 <monochrom> No one is interested in my scary take on Bool and ()? >:)
2021-07-09 19:01:20 <davean> Hecate: the later is the actual thing, the former is a description of a thing
2021-07-09 19:01:21 <Hecate> monochrom: I implemented 'Num ()', nothing scares me :P
2021-07-09 19:01:28 xff0x joins (~xff0x@185.65.135.235)
2021-07-09 19:01:32 <Hecate> davean: but the actual thing… isn't it the implementation?
2021-07-09 19:01:38 <davean> Hecate: yes, exactly
2021-07-09 19:01:39 <Hecate> does it exist on paper?
2021-07-09 19:01:43 <sclv> we need an RFC on the meaning of specification and reference. a specification MAY be documentation. a reference MUST be documentation.
2021-07-09 19:01:50 <davean> Hecate: Maybe?
2021-07-09 19:01:53 <monochrom> That doesn't mean I can't tell a scary story logically equivalent to a normal explanation of ().
2021-07-09 19:01:55 <sclv> everything can exist on paper, if you have enough pages
2021-07-09 19:01:59 <davean> sclv: yes
2021-07-09 19:02:04 <Hecate> davean: don't you need then to reverse-engineer the implementation to extract a set of observable behaviours?
2021-07-09 19:02:25 <sclv> the implementation contains the observable behaviors within it directly
2021-07-09 19:02:38 <davean> Hecate: no, thats rediculous, it does the tihng it does
2021-07-09 19:02:41 <Hecate> so you presume an implementation that follows the spec?
2021-07-09 19:02:47 <davean> Hecate: no!
2021-07-09 19:02:49 <davean> never!
2021-07-09 19:02:51 <davean> Thats horrid
2021-07-09 19:02:52 <sclv> a "reference implementation" MAY be a specification
2021-07-09 19:03:02 <davean> sclv: yes
2021-07-09 19:03:14 <Hecate> ok for context I have very, very little experience in program or static analysis
2021-07-09 19:03:46 <sclv> i don't think this is directly related to that. basically a specification is a socially agreed on thing that can take any number of forms but which has some method of validating conformance
2021-07-09 19:03:50 <davean> Hecate: data Z = S Z | N
2021-07-09 19:03:51 <monochrom> I even know many long and contrived ways to say "true".
2021-07-09 19:03:53 <davean> thats a specification
2021-07-09 19:04:14 <davean> I can start adding other facts
2021-07-09 19:04:21 <Hecate> monochrom: ok spill the beans already :P
2021-07-09 19:04:28 <Hecate> davean: oh, okay
2021-07-09 19:04:38 <davean> You start talking about it, and you're not longer a specification
2021-07-09 19:04:40 <sclv> > fix ("true && " ++)
2021-07-09 19:04:41 <monochrom> "The books I read are the books read by all those who read all books I read" is a long way to say "true", since it is a tautology.
2021-07-09 19:04:42 <lambdabot> "true && true && true && true && true && true && true && true && true && tru...
2021-07-09 19:05:21 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-07-09 19:05:43 <monochrom> "the stone topology of two points" is a trolling way to say "Bool", since every stone topology is a boolean algebra.
2021-07-09 19:05:55 × favonia quits (~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 19:06:11 <Hecate> damn I forgot what were talking about in the beginning
2021-07-09 19:06:38 <Hecate> ah yes, terrifying introductions that can bar access to simple concepts
2021-07-09 19:06:50 <monochrom> There are multiple ways to document/specify/define/characterize/whateveryoucallit a thing in a scary or trolling or highbrow way. All it takes is creativity and knowledge. Doesn't mean the thing itself is not simple.
2021-07-09 19:06:52 <davean> Hecate: the very nature of debuging is understanding something via specification instead of documentation!

All times are in UTC.