Proprietà delle funzioni con lo stesso input = output indipendente dalla lingua o dai nomi

2

Consideriamo queste quattro funzioni:

# Racket
(define (square x) (* x x))

(define (sqr a) (* a a))

# Javascript
function square(x) {
  return x * x
}

function sqr(y) {
  return y * y
}

Tutte le funzioni quadrano il numero specificato ma in lingue diverse o con nomi diversi. L'output di chiamare uno di essi è sempre uguale se viene fornito lo stesso input.

(square 4) == (sqr 4) == square(4) == sqr(4)

Esiste qualche proprietà che descriva tali funzioni? C'è un modo per dimostrare se le funzioni date hanno questa proprietà?

    
posta tomazzlender 21.08.2016 - 20:24
fonte

2 risposte

2

Tali funzioni sono indicate come pure .

Tratto dal link:

In computer programming, a function may be considered a pure function if both of the following statements about the function hold:

  1. The function always evaluates the same result value given the same argument value(s). The function result value cannot depend on any hidden information or state that may change while program execution proceeds or between different executions of the program, nor can it depend on any external input from I/O devices (usually—see below).

  2. Evaluation of the result does not cause any semantically observable side effect or output, such as mutation of mutable objects or output to I/O devices (usually—see below).

Come per tutte le funzioni matematiche, quando si piazza un numero, non solo l'output può essere accuratamente indovinato al 100% in anticipo, ma l'esecuzione della funzione non causa alcun cambiamento di stato; l'interezza della funzione è qualsiasi cosa emetta.

Potrebbe valere la pena di leggere anche questo, dato che ti fornirà maggiori dettagli su questo comportamento:

Trasparenza referenziale

    
risposta data 22.08.2016 - 00:52
fonte
0

Le funzioni che si ripetono sempre nello stesso out-out dato lo stesso input sono chiamate deterministiche .

Theu usa algoritmi deterministici.

In computer science, a deterministic algorithm is an algorithm which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. Deterministic algorithms are by far the most studied and familiar kind of algorithm, as well as one of the most practical, since they can be run on real machines efficiently.

Per estensione le funzioni che fanno questo sono chiamate funzioni deterministiche.

La qualità dell'essere deterministico è chiamata determinismo .

Non so come dimostrare che una funzione è deterministica diversa dal test ir e dall'esame del codice, ma algoritmi non deterministici hanno alcuni dei seguenti:

  • If it uses external state other than the input, such as user input, a global variable, a hardware timer value, a random value, or stored disk data.
  • If it operates in a way that is timing-sensitive, for example if it has multiple processors writing to the same data at the same time. In this case, the precise order in which each processor writes its data will affect the result.
  • If a hardware error causes its state to change in an unexpected way.

Fonte.

    
risposta data 22.08.2016 - 00:36
fonte

Leggi altre domande sui tag