• [^] # Re: type

    Posté par (site web personnel) . En réponse au journal [Letlang] Écrire un compilateur en Rust (partie 3). Évalué à 3.

    Je vois que tu as pensé à créer des types pour les litéraux. C'est une bonne idée.

    C'est nécessaire vu que le langage target est statiquement typé. En fait, même si je target le Python ou l'Assembleur, à un moment j'ai besoin de savoir que "hello world" est une string. Tout les types composites sont construit à partir de littéraux, peu importe le langage.

    Concrètement, cela veut dire que le type est une donnée comme une autre.

    En Letlang ce n'est pas le cas. Je n'ai pas de type type par exemple. Ce qui veut dire que tu ne peux pas passer un type en argument d'un fonction :

    func foo(t: type) -> type {
     # n'existe pas en letlang
    }
    

    Le seul moyen de "passer un type en argument" c'est en utilisant des fonctions génériques :

    func foo<T>(v: T) -> T {
     # ...
    }
    

    Mais on ne peut toujours pas manipuler T comme on manipulerait un entier ou un booléen.

    tendre le concept de "constante propagation" lors de la phase d'optimisation en incluant les types structurées

    Je suis encore loin d'implémenter des optimisations, mais oui c'est dans mon radar.

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