La sintaxis del lenguaje de programación Cobra está muy inspirada en Python y elimina el colon, por lo que parece que no es estrictamente necesario. Sin embargo, no es suficiente simplemente eliminar el colon, hay otros cambios en la sintaxis necesaria. Vea, por ejemplo, este código de uno de mis proyectos de juguetes :
kons = lambda hd, tl: lambda x: hd if x else tl
virst = lambda l: l(True )
rrest = lambda l: l(False)
Sin los dos puntos para separar el cuerpo de la lista de parámetros, tendría que usar sangría:
kons = lambda hd, tl
lambda x
hd if x else tl
virst = lambda l
l(True )
rrest = lambda l
l(False)
Creo que las versiones anteriores de Cobra hicieron que el colon fuera opcional, podría usar sangría o un colon o ambos. Similar a cómo funciona en Ruby, donde hay palabras clave para separar las diferentes partes de las expresiones de control, pero también puede usar separadores de expresión (punto y coma o nueva línea):
# 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
En las versiones actuales de Cobra, puede usar una coma:
if x
y
Se puede escribir como
if x, y
Necesita alguna forma de separar las diferentes partes de las expresiones o definiciones de control. En Python, ese es el colon. Si quita los dos puntos, debe reemplazarlo con otra cosa, por ejemplo, sangría forzada . Solo quitar el colon no funcionará.
La única forma de estar absolutamente seguro es formalizar la sintaxis con y sin dos puntos y demostrar su no ambigüedad.
Sin embargo, tenga en cuenta que uno de los aforismos del Zen de Python es "explícito es mejor que implícito", por lo que la delineación explícita de bloques con dos puntos parece encajar con la filosofía general de Python. Las preguntas frecuentes sobre diseño e historia también mencionan que esta decisión se basa en evidencia empírica del predecesor de Python, ABC.