Je comprends l'intérêt de "let x = y2 - 3*y + 2", mais pas de "let x2 -5*x + 3 = 6*y".
La deuxième forme n'est qu'une conséquence du fait que = est une opération. La plupart des langages appellent cette opération ==, du coup je comprend la confusion.
Autoriser la première forme, c'est autoriser la seconde. Sachant que pour la seconde, si je connais la valeur de x et de y, il est logique de pouvoir faire ce test.
Ce qu'il faut comprendre, c'est que let ajoute des contraintes (qui doivent être compatibles avec les contraintes existantes) :
let (x, y): (int, int)
let x**2 - 5 * x + 3 = 6 * y # tout seul ne sert pas a grand chose
x := get_int_from_stdin()
# si le user tape "0" alors :
# l'equation devient 3 = 6 * y
# il n'y a pas de solutions dans int
# ==> runtime error!
Ce qui pourrait aussi être utilisé comme il suit :
data := csv_data
|> filter(record =>
record.x ** 2 - 5 * record.x + 3 = 6 * record.y
)
# data ne contient que les lignes qui valident l'équation
[^] # Re: Contraintes
Posté par David Delassus (site web personnel) . En réponse au journal Letlang, encore un nouveau langage de programmation. Évalué à 1.
La deuxième forme n'est qu'une conséquence du fait que
=est une opération. La plupart des langages appellent cette opération==, du coup je comprend la confusion.Au niveau de l'AST, j'ai :
Autoriser la première forme, c'est autoriser la seconde. Sachant que pour la seconde, si je connais la valeur de
xet dey, il est logique de pouvoir faire ce test.Ce qu'il faut comprendre, c'est que
letajoute des contraintes (qui doivent être compatibles avec les contraintes existantes) :Ce qui pourrait aussi être utilisé comme il suit :
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg