News for hackers. Stuff that matters.
Re:The Odin Programming Language by olah_1 on Friday January 31, 2020 @02:28PM (#22204724)
I like Jai's `use` keyword.

Fun fact: Odin has this exact same thing with `using`. https://odin-lang.org/docs/overview/#using-statement

Re:The Odin Programming Language by hota_mazi on Friday January 31, 2020 @07:01PM (#22207294)
Kotlin also has it as "apply":

    Windows().apply {
      width = 100
      height = 200
    }
Now, I can't help but see the following kind of code:

    val someStructure = ...
    someStructure.x = ...
    someStructure.y = ...
    someStructure.name = ...
as an immediate language code smell
Re:The Odin Programming Language by gingerBill on Friday January 31, 2020 @07:04PM (#22207313)
Odin's `using` comes from Pascal's `with`, of which was block based. Odin's `using` can be applied to a load more than just scopes:

https://odin-lang.org/docs/overview/#using-statement

Re:The Odin Programming Language by hota_mazi on Friday January 31, 2020 @07:10PM (#22207354)
Yes, the general idea is not new but the devil is in the details.

As far as I can tell, Odin's `using` is applicable in the same areas as Kotlin's, but I still favor Kotlin's scoped version. When I see "using foo;" in Odin, it's not quite obvious to me where the scope of applicability is.

Any reason why you didn't do something like

    entity.use {
      // "this" is now the entity instance
    }
    // back to your regular "this"

?
Re:The Odin Programming Language by gingerBill on Friday January 31, 2020 @07:18PM (#22207407)
You can easily do the same in Odin, if you would like. However, `using` works for a lot more than that just this. `using` allows for many for type system features beyond a basic scope import like Pascal's with. `using` can be applied to procedure parameters, struct field declarations allow for subtype polymorphism (even of pointers), scope imports, and more.

Koltin's approach is limited to purely the same Pascal's `with` allowed.

But if you want to be clear:

    { using entity;
        // the fields of "entity" are not usable in this scope 
        x = 123;
    }
    entity.x = 123;
Re:The Odin Programming Language by gingerBill on Saturday February 01, 2020 @04:50AM (#22209677)
* are now usable typo