Un linguaggio puramente dichiarativo può causare eccezioni di runtime?

1

Consideriamo un linguaggio puramente dichiarativo come SQL, XQuery o un linguaggio logico come Prolog, o un linguaggio puramente funzionale senza mutabilità variabile.

Considerando che l'interprete o il compilatore per un tale linguaggio è privo di bug e può controllare ogni tipo di errore, un programma scritto in tale linguaggio può avere effetti collaterali che portano a un comportamento indesiderato o ad un errore di runtime?

    
posta csblo 16.03.2016 - 20:52
fonte

2 risposte

5

Sì. Si consideri, ad esempio, l'esaurimento della memoria. Oppure, se il programma non è "puro", i / o errori. O anche cose come la divisione per 0.

    
risposta data 16.03.2016 - 22:12
fonte
2

Per un noto esempio mainstream (presumo), le trasformazioni scritte in XSLT 1.0 (senza utilizzare alcuna funzione di estensione) sono strongmente normalizzato e (quindi) terminano sempre. XSLT rientra sicuramente nella categoria " abbastanza " (*) della lingua, e inoltre conosce solo / solo le variabili immutabili.

Nessun rischio di loop infiniti per gli input finiti che lo alimentano.

Ma poi, naturalmente, non è completo di Turing (senza l'uso di estensioni), e si possono certamente scrivere trasformazioni che non producono nulla di veramente utile (o qualcosa che non ci si aspettava).

Tuttavia, non sono sicuro che sarebbe corretto chiamare tali possibilità "fallimenti" perché del linguaggio semantico della lingua, in senso stretto.

'HTH,

(* e verboso, ma questo è un altro argomento)

    
risposta data 17.03.2016 - 08:33
fonte

Leggi altre domande sui tag