La sintassi Cobra Programming Language è strongmente ispirata a Python e fa sparire i due punti, quindi sembra che non è strettamente necessario. Tuttavia, non è sufficiente solo rimuovere i due punti, ci sono altre modifiche alla sintassi necessarie. Vedi, ad esempio questo pezzo di codice da uno dei miei progetti fai da te :
kons = lambda hd, tl: lambda x: hd if x else tl
virst = lambda l: l(True )
rrest = lambda l: l(False)
Senza i due punti per separare il corpo dall'elenco dei parametri, dovrei usare il rientro:
kons = lambda hd, tl
lambda x
hd if x else tl
virst = lambda l
l(True )
rrest = lambda l
l(False)
Credo che le versioni precedenti di Cobra rendessero opzionale il colon, potevi usare sia il rientro che i due punti o entrambi. Simile a come funziona in Ruby, dove ci sono parole chiave per separare le diverse parti delle espressioni di controllo, ma puoi anche usare separatori di espressioni (punto e virgola o nuova riga):
# 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
Nelle attuali versioni di Cobra, puoi usare una virgola:
if x
y
può essere scritto come
if x, y
Hai bisogno di qualche modo per separare le diverse parti delle espressioni di controllo o delle definizioni. In Python, questo è il colon. Se rimuovi i due punti, devi sostituirlo con qualcos'altro, ad es. rientro forzato . Solo la rimozione dei due punti non funzionerà.
L'unico modo per essere assolutamente sicuri è formalizzare la sintassi con e senza colon e dimostrare la sua non ambiguità.
Nota, tuttavia, che uno degli aforismi dello Zen di Python è "Esplicito è meglio di Implicito ", quindi la delineazione esplicita di blocchi con due punti sembra adattarsi alla filosofia generale di Python. Design e storia Le FAQ menzionano inoltre che questa decisione si basa su prove empiriche fornite dal predecessore di Python, ABC.