La syntaxe du langage de programmation Cobra est fortement inspirée de celle de Python, et elle supprime les deux points, il semble donc que ce ne soit pas strictement nécessaire. Cependant, il ne suffit pas de supprimer simplement les deux-points, d'autres modifications de la syntaxe sont nécessaires. Voir, par exemple, ce morceau de code d'un de mes projets de jouets :
kons = lambda hd, tl: lambda x: hd if x else tl
virst = lambda l: l(True )
rrest = lambda l: l(False)
Sans les deux points pour séparer le corps de la liste des paramètres, je devrais utiliser l'indentation:
kons = lambda hd, tl
lambda x
hd if x else tl
virst = lambda l
l(True )
rrest = lambda l
l(False)
Je crois que les versions antérieures de Cobra rendaient le deux-points facultatif, vous pouviez utiliser soit l'indentation, soit un deux-points, soit les deux. Semblable à la façon dont cela fonctionne dans Ruby, où il existe des mots clés pour séparer les différentes parties des expressions de contrôle, mais vous pouvez également utiliser des séparateurs d'expression (point-virgule ou nouvelle ligne):
# idiomatic
while true do puts "I am awesome" end
# ↑↑
# non-idiomatic, but legal
while true; puts "I am awesome" end
# ↑
# non-idiomatic, but legal
while true
puts "I am awesome" end
# idiomatic
while true
puts "I am awesome"
end
Dans les versions actuelles de Cobra, vous pouvez utiliser une virgule:
if x
y
peut être écrit comme
if x, y
Vous avez besoin d' un moyen de séparer les différentes parties des expressions ou définitions de contrôle. En Python, c'est le colon. Si vous supprimez les deux points, vous devez le remplacer par autre chose, par exemple une indentation forcée . Seul le retrait du côlon ne fonctionnera pas.
La seule façon d'être absolument sûr est de formaliser la syntaxe avec et sans deux points et de prouver sa non-ambiguïté.
Notez, cependant, que l'un des aphorismes du Zen de Python est "Explicit is better than Implicit", donc la délimitation explicite des blocs avec deux-points semble correspondre à la philosophie générale de Python. La FAQ sur la conception et l'histoire mentionne également que cette décision est basée sur des preuves empiriques du prédécesseur de Python, ABC.