(= 2 (+ 1 1))
prendi quanto sopra. Il requisito del predicato '=' è che i suoi argomenti siano comparabili. In questo caso, due strutture sono comparabili e quindi il contratto / requisito è piuttosto generico. Il predicato '+' richiede che i suoi argomenti siano numeri. Questo è più specifico.
(socket domain type protocol)
gli argomenti qui sono molto più specifici (anche se gli argomenti sono ancora solo numeri e la funzione stessa restituisce un descrittore di file, che è esso stesso un int), ma gli argomenti sono più astratti e l'implementazione è costruita da altri funzioni le cui astrazioni sono meno astratte, che sono costruite da astrazioni sempre meno astratte. Al punto in cui i requisiti sono qualcosa come spostarsi da una posizione a un'altra, osservare se l'interruttore in quella posizione è acceso o spento, accendere o spegnere l'interruttore o lasciarlo lo stesso, ecc.
Ma le funzioni sono sempre meno complesse meno astratte sono? E c'è una relazione tra il numero e la gamma di argomenti di una funzione e la complessità della sua implementazione, mentre vai da più astratto a meno astratto e viceversa?
(= 2 (+ 1 1) 2r10)
il predicato '=' è più generico del predicato '+', e quindi potrebbe essere più complesso nella sua implementazione. Il contratto del predicato '+' è meno generico, e quindi potrebbe essere meno complesso nella sua implementazione. Questo è anche un po 'corretto? Che dire della funzione 'socket'? Ognuno di questi argomenti è un numero di qualche tipo. Ciò che rappresentano, tuttavia, è qualcosa di più elaborato. Restituisce anche un numero (proprio come fanno gli altri), che è anche una rappresentazione di qualcosa concettualmente molto più elaborato di un numero.
Per ridurlo, ti sto chiedendo se esiste una relazione tra le seguenti dimensioni e perché:
- Astratto / calcestruzzo
- Complesso / Semplice
- generico / specifico
E più precisamente, le diverse configurazioni di queste dimensioni hanno un impatto specifico e misurabile sul numero e sull'intervallo degli argomenti (vale a dire, il contratto) di una funzione?