3 ms·
I'm inclined to agree that this law is something of a tautology. If nothing else, I think it is the wrong way to look at abstractions. I think it was Rich Hic
by eeperson 13y ago
I'm inclined to agree that this law is something of a tautology. If nothing else, I think it is the wrong way to look at abstractions. I think it was Rich Hickey who said something to the effect of "abstractions are not about hiding, they are about pulling something to the forefront".
It is entirely possible to produce an abstraction over some concept that is capable of expressing the exact same things but brings different areas to the forefront. I think assembly language acts as a simple example of this. You can express all of the same things you can with machine code but it is clearly an abstraction.
Edit: grammar
- tel 13y agoIn my own experience these "Haskelly" abstractions do a fantastic job "bringing something to the forefront". I love when I'm working with a parser and switch from Monadic mode to Applicative mode as it emphasizes a notion of application sequencing instead of procedural sequencing. When I concatenate strings using (<>) instead of (++) I emphasize that strings can be thought of as lists which are free monoids. Especially nice are the laws like Text.unpack (s1 <> s2) === Text.unpack s1 <> Text.unpack s2 which bring to the forefront that both the Unicode safe Text type and the String type share that monoidal structure.