zo iNiTiATiON SPEECHES
S01E06 2024-08-03

S01E06 — 03-08-2024.

Ça fonctionne !

jour 6.

Sayé ! J’ai un interpréteur opérationnel pour faire des calculs. Pour l’instant il prend en compte que les nombres entiers et accepte que les opérations binaires du type addition essentiellement. Ce qui est parfait, puisque aujourd’hui c’est samedi et la deadline est fixée à dimanche soir. Ce qui me laisse pas mal de temps pour étendre les opérations binaires.

A savoir qu’avec la structure actuelle de mon projet ça va se faire rapidement. Par exemple, pour ajouter le support de la soustraction, je n’ai besoin que d’une seule ligne :

BinOpKind::Sub => Ok(Value::int(lhs - rhs, span))

Bien sùr pour les autres d’autres opérations, je devrais me pencher côté tokenizer pour qu’il accepte ces nouveaux opérateurs. Ensuite, c’est assez triviale.

Ce que je retiens, c’est que j’ai déjà mon petit compilo. Il est 15h45 au moment où j’écris cette ligne donc je suis bien pour me faire une petite calculette pour les int et float. De cette base, je pourrai me renseigner sur l’inférence de type. Je comprends le concept, mais pour l’implémenter… j’y comprends que dalle. Il faut suivre l’algorithme Hindley-Milner ou l’algorithme W, cependant lorsque tu n’as rien branlé pendant les cours de mathématiques comme moi. Bah des années après, tu te manges la porte blindée, le mur en adamantium, à te demander s’il n’est pas venu le temps de prendre des cours particuliers pour être capable de comprendre et d’avancer. C’est dans un coin de ma tête.

En attendant, j’ai trouvé un repo sur github qui implémente l’inférence de type en rust. C’est clair à comprendre sur les examples simples et il y a plusieurs dérivés pour être adapté au besoin.

@invisageable