Sono principalmente un programmatore C++ (quindi un OO/imperativo) e trovo piuttosto bizzarro che si possa avere una sola istruzione per valutazione in un'istruzione condizionale come un'istruzione if in Scheme, un linguaggio funzionale.Esiste la possibilità di più istruzioni all'interno del corpo di un'istruzione condizionale?
Ad esempio:
(let ((arg1 0) (arg2 1))
(if (> arg1 arg2)
arg1
arg2)))
esempio Erroneo:
(let ((arg1 0) (arg2 1))
(if (> arg1 arg2)
(arg1 (display "cool"))
(arg2 (display "not cool"))))
mi dà un errore di tipo "application Procedura: procedura prevista, data: 2; argomenti sono stati: #void"
Questo può essere risolto posizionando detta istruzione condizionale in istruzioni diverse all'interno di un corpo di una funzione definita, ad esempio, con il corpo dell'istruzione condizionale che ha sep dichiarazioni arate ogni volta come segue:
(if (condition) statement1a statement2a)
(if (condition) statement1b statement2b)
e così via ...
Va da sé che non è troppo pratico. Per non parlare del sovraccarico del codice duplicato.
Mi manca qualcosa qui o c'è davvero nessun altro modo?
Vero, dovrei averlo notato poiché la sintassi per chiamare la funzione è (nome_file argomenti ...) e una funzione stessa può essere una variabile in Schema. Per non parlare del messaggio di errore ha detto la stessa identica cosa. Grazie per una rapida risposta. –