• 0 Posts
  • 3 Comments
Joined 3 years ago
cake
Cake day: August 3rd, 2023

help-circle
  • The basic problem is that identifiers can be either types or variables, and without a keyword letting you know what kind of statement you’re dealing with, there’s no way of knowing without a complete identifier table. For example, what does this mean:

    foo * bar;
    

    If foo is a type, that is a pointer declaration. But if it’s a variable, that’s a multiplication expression. Here’s another simple one:

    foo(bar);
    

    Depending on how foo is defined, that could be a function call or a declaration of a variable bar of type foo, with some meaningless parentheses thrown in.

    When you mix things together it gets even more crazy. Check this example from this article:

    foo(*bar)();
    
    

    Is bar a pointer to a function returning foo, or is foo a function that takes a bar and returns a function pointer?

    let and fn keywords solve a lot of these ambiguity problems because they let the parser know what kind of statement it’s looking at, so it can know whether identifiers in certain positions refer to types or variables. That makes parsing easier to write and helps give nicer error messages.



  • VW is good at making cars, but bad at software. They’ve had to delay the introduction of new models (Golf, ID.3) because of software issues. Rivian has sort of the opposite problem: their production lines sit still often because of problems in the supply chain.

    Volkswagen has the expertise to solve Rivian’s production and supplier problems, and the cash they will need to survive and develop some cheaper models (the EV market is stagnating right now for a lack of budget options, and Rivian only sells trucks and SUVs). And they’re hoping Rivian software engineers can help them fix their software woes.