On Tue, Sep 1, 2009 at 7:39 PM, Paul D.
Anderson<[email protected]> wrote:
> I came across Lava, an experimental programming language ("What's hotter than 
> Java?") http://lavape.sourceforge.net/LavaHomePage.htm Lava has some curious 
> features (they claim to have no syntax, but the syntax is just hidden by the 
> "programming environment").
>
> One of the evils of other programming languages, according to the website, is 
> the infamous type cast: "Type casts are not only ugly, nasty, and annoying 
> but much worse: their justification can only be assessed on the basis of a 
> more comprehensive understanding of the dynamic program behavior in general."
>
> While I don't feel quite that strongly about type casts, one use case for 
> casting does bother me: Using a generic object as the type of a member, and 
> then specializing the object when you use it.
>
> A good example is a Token type in a lexer. The token typically has a line and 
> column number, a string (the text of the token), a token type (an enumeration 
> or int) and a value. The value is an integer for an integer token, a string 
> for a string, an enum for a symbol or keyword, etc. So the type of the value 
> field is "object", and you use the token type to tell you how to cast the 
> value field when you use it.
>
> The Lava solution to this problem is to allow an explicit type switch:
>
> switch (value.type) {
>
> case int:  // value is an int
>    value += 3;
>    break;
>
> case string: // value is a string
>    string sub = substring(value, 1, 5);
>    break;
>
> case symbol: // value is a symbol type
>    int index = value.getSymbolIndex;
>    break;
>
> }
>
> (Lava doesn't actually give an example of a type switch -- I just guessed at 
> what it would look like.)
>
> Anyone else think this is a good idea?
>
> Does anyone know of another language that does this? (I don't have much 
> knowledge of functional or logical languages.)

Just looks like simple pattern matching. It's very common in
functional languages.
  • type switch Paul D. Anderson
    • Re: type switch Jarrett Billingsley

Reply via email to