• [^] # Re: Intéressant

    Posté par (site web personnel) . En réponse au journal Letlang, encore un nouveau langage de programmation. Évalué à 2.

    La sémantique est bien différente dans chacun de ces langages. Mais à l'usage, ça se ressemble.

    Entre Python :

    match val:
     SomeClass(a, b):
     # ...
     SomeOtherClass(c):
     # ...

    Et Elixir :

    case val do
     (:some_val, a, b) -> # ...
     (:some_other_val, c) -> # ...
    end

    Ou TypeScript :

    type SomeTaggedUnion =
     | { t: 'SomeClass', a: osef, b: osef }
     | { t: 'SomeOtherClass', c: osef }
    const f = (val: SomeTaggedUnion) => {
     switch (val.t) {
     case 'SomeClass': # ...
     case 'SomeOtherClass': # ...
     }
    }

    La réflexion du développeur est la même bien que l'implémentation du langage et le sens du code soit différent.

    En Letlang on aurait donc :

    class some_class(ab: (osef, osef))
    class some_other_class(c: osef)
    res := match val {
     some_class((a, b)) => # ...
     some_other_class(c) => # ...
    }
    

    https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg