Similar to the condition system in the Common Lisp and Dylan languages.
Conversation
Oh, haha, Rust used to have a condition system 😂
1
The punchline to this sad story is that there’s already enough machinery to express the fast & ubiquitous cases via implicits, and rust has no more (cognitive) room in its static type system for more degrees of polymorphism to handle the exceptional cases.
2
1
4
And if you only do it dynamically everyone just yells “zero cost” until you take it out.
1
(buy me a drink and we’ll talk about the size of the zero in zero cost exceptions)
1
1
14
Yeah I’d take you up on that (if not for the big ocean in the way)! There’s definitely a cost to zero cost. I’m also interested to see if we can define what people mean by ‘zero cost’ more precisely. had some interesting ideas on the Pikelet Gitter actually.
1
2
It was here: gitter.im/pikelet-lang/L
The notion is “indirections that the compiler can see through”
1
I don't think it's a very meaningful term tbh. It's close to a definition but if you're going to allow translation only "as good as if by hand" you get into a weird place: by hand an author would write different code, not the numerous as-if-by-hand instances the compiler emits.
2
2
I agree it’s not per se terribly meaningful, but I need a similar concept as a touchstone for thinking about my language design—what are the criteria by which I judge perf-sensitive features?—so I need a working definition that does mean something in the context of that design
1
1
There’s a subtlety, I think, between “would write” (willingly) and “could write” (conceivably, but it’s tedious and error-prone)—it’s more the latter that I care about: automatic rearrangement of the higher-level code I want to read & write into the lower-level code I want to run
1
1
Some interesting barometers:
- would I be willing to lean on this abstraction in a tight inner loops?
- does the optimization that this abstraction lean on break easily/silently?
- how does this it impact compilation time?
- how much damage does it do to the UX?
If you're willing to talk about compilation time or other not-just-runtime-microbenchmark costs in your cost model (hello ABI stability / version-stable separate compilation! hello user cognitive load / predictability!) the picture gets _much_ murkier.
2
3
Yeah it's an interesting landscape. I bring it up because often 'zero cost' stuff sacrifices it. I'm just interested in having a healthier, more honest design discussion.
1
Show replies



