Quindi mi piace lo sviluppo basato sui test e spesso ho voluto un linguaggio di programmazione per assistere alla creazione di routine di test. Ho voluto definire il dominio di una funzione e poi avere qualche 'buddy' di test generare alcuni input test casuali basati sul dominio, alcuni dati di test deliberatamente all'interno del dominio e alcuni deliberatamente all'esterno per testare il caso di errore, anche alcuni deliberatamente sul confine che è dove possono verificarsi più errori.
Sembra possibile con un attributo C # personalizzato adornato su parametri di un metodo. Tuttavia, mi piacerebbe un livello extra di intelligenza che mi piacerebbe domini dedotti, dedotti dai domini delle funzioni di feeder. Dovrei introdurre alcuni esempi di codice a questo punto, il seguente è VBA e illustra un caso in cui (dato un supporto linguistico sufficiente) il dominio di i(x)
potrebbe essere dedotto guardando i domini di g(x)
e h(x)
.
Option Explicit
'* I'd like to define the domain of g(x) to be 2 <= x <= 5 , whilst g(x) maps x->x+1
Function g(x)
If Not (2 <= x And x <= 5) Then g = CVErr(2011): Exit Function '* VBA domain screened with If
g = x + 1
End Function
'* I'd like to define the domain of h(x) to be -4 <= x <= 4, whilst h(x) maps x->x^2
Function h(x)
If Not (-4 <= x And x <= 4) Then h = CVErr(2011): Exit Function '* VBA domain screened with If
h = x ^ 2
End Function
Function i(x)
'* it would be nice if a computer language could understand that the domain of i(x) can
'* be inferred from the domains
'* of g(x) and h(x) and is thus 2 <= x <= 3
'* obviating the need for me to write the line explicitly
i = h(g(x))
End Function
Scusa se questo è un esempio forzato ma nella mia esperienza sorgono istanze del mondo reale.
Credo che in termini formali il linguaggio necessiti di "definizione dichiarativa dei domini di funzione".
Quindi, in teoria, un linguaggio di programmazione potrebbe supportarlo?
Potrebbe essere correlato a Programmazione vincoli - Wikipedia ?
Altri link: