Logs: liberachat/#haskell
| 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.