Doesn't racket also do this with its `#lang <foo>` construct?

On Fri, May 31, 2013 at 11:57 AM, Niko Matsakis <[email protected]> wrote:
> I was reading Armstrong's [review of Elixir][1] and I thought this
> paragraph was interesting, given our recent discussions about
> backwards compatibility in Rust. Basically he argues for tagging code
> with the version of the language it is targeting. I think this is a
> good idea too, though I don't know how helpful it is. The only
> language I knew of that took this approach was XSLT, but I guess
> Erlang does too. It'd be interesting to know how helpful it is for
> migrating and so forth.
>
> ```
> XML files always start
>
>   <?xml version="1.0"?>
>
> This is great. Reading the first line of an XML file is like listening to the 
> opening bars of Rachmaninoff’s third piano concerto. A sublime experience. 
> All praise to the XML designers, hallowed be their names, give these guys 
> some Turing prizes.
>
> Putting the language version in all source files is essential. Why is this?
>
> Early Erlang did not have list comprehensions. Suppose that we give a modern 
> Erlang module to an old Erlang compiler and ask it to compile it. The modern 
> code has list comprehensions, but the old compiler doesn’t know about list 
> comprehensions so the old compiler thinks this is a syntax error.
>
> If a version3 Erlang compiler is given a file that starts:
>
> -version(5,0).
>
> Then it should say
>
> ** auuuuugggghhhhhh **
>
>    Oh bother and blast, I am mere version 3 compiler
>    and cannot see into the future.
>
>    You have given me a version 5 program. This means
>    my time on earth has come.
>
>    You will have to kill me. You will uninstall me,
>    and install a version five compiler. I will be
>    no more. I will cease to exist.
>
>    Goodbye old friend.
>
>    I have a headache. I'm going to have a rest...
> **
>
> It’s the first law of data design:
>
>  All data that might change in the future should be
>  tagged with a version number.
>
> and a module is data.
> ```
>
>
> Niko
>
> [1] http://joearms.github.io/2013/05/31/a-week-with-elixir.html
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to