La sintassi del linguaggio di programmazione Cobra è fortemente ispirata a quella di Python e elimina i due punti, quindi sembra che non sia strettamente necessario. Tuttavia, non è sufficiente rimuovere solo i due punti, sono necessarie altre modifiche alla sintassi. Vedi, ad esempio, questo pezzo di codice di uno dei miei progetti di giocattoli :
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 facoltativo il colon, potevi usare il rientro o un colon 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 i separatori di espressioni (punto e virgola o newline):
# 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 versioni attuali di Cobra, puoi usare una virgola:
if x
y
può essere scritto come
if x, y
È necessario un modo per separare le diverse parti delle espressioni o definizioni di controllo. 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 due punti e dimostrarne la non ambiguità.
Si noti, tuttavia, che uno degli aforismi dello Zen di Python è "Explicit è meglio di Implicit", quindi la delimitazione esplicita di blocchi con due punti sembra adattarsi alla filosofia generale di Python. Le domande frequenti su design e storia menzionano anche che questa decisione si basa su prove empiriche del predecessore di Python, ABC.