On Tue, Apr 30, 2013 at 6:57 PM, Tim Chevalier <[email protected]>wrote:

> On Mon, Apr 29, 2013 at 9:30 PM, Erik S <[email protected]> wrote:
> > On 4/29/2013 2:00 PM, Graydon Hoare wrote:
> >> Yes. Formalizing and completing the definition of the constant
> >> expression subgrammar would be extremely valuable. It's one of the
> >> major high-risk areas remaining the the design space. -Graydon
> > VHDL is a very different language from Rust (it's a hardware design
> > language, not a normal programming language), but it has the nicest
> > constant system I've worked with.
> >
> > The rule is basically that constant expressions can contain:
> >
> > Literals (i.e. 5, 0x20)
> > Expressions that depend on constants  (i.e. 0x5 + 10 * const_k)
> > Any "pure" function whose arguments are constant.   (i.e. 5 + f_pure(5,
> > const_k) )
> >
> > It's this last rule that is truly beautiful. You can use the same
> > functions in both constant initialization and run-time code, with only
> > the requirement that they are pure. Pure functions are ones whose output
> > depends only on their arguments (and constants). Allowing functions to
> > initialize constants avoids the whole annoyance in C/C++ where you have
> > to use macros to make things compile-time const. It also allows a
> > surprising amount of compile-time optimization.
> >
> > I don't know how realistic this is for constants in a language like rust
> > - but it would be very elegant if it could work.
> >
>
> We used to have a notion of pure functions in Rust, but that was
> removed recently. It originally existed for typestate (a feature we
> removed a while ago) and more recently to assist the borrow checker.
> We removed it because in Rust, it was impractical to define an
> easily-checkable pure subset of the language. Bringing it back in is
> somewhat less likely than adding significant whitespace.
>
> Cheers,
> Tim
>

I thought an effects system (encompassing purity) is something that was
vaguely planned for 2.0?


>
>
>
> --
> Tim Chevalier * http://catamorphism.org/ * Often in error, never in doubt
> "Too much to carry, too much to let go
> Time goes fast, learning goes slow." -- Bruce Cockburn
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
>



-- 
Your ship was destroyed in a monadic eruption.
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to