Esiste un nome per poter sostituire una variabile per il codice sorgente ad essa assegnato?

0

Considera il seguente codice (python)

x = [1, 2, 3, 4]
y = 2 + 3
z = x[0] + y

Qui, posso sostituire le espressioni per x e y verbatim nell'espressione per z , possibilmente circondando quindi in qualche sintassi di raggruppamento:

y = [1, 2, 3, 4][0] + (2 + 3)

Non tutte le lingue hanno questa caratteristica. Si consideri il seguente codice Matlab equivalente

x = [1, 2, 3, 4];
y = 2 + 3
z = x(1) + y;

Qui, nessuna trasformazione del genere è possibile, ed entrambi i seguenti sarebbero un errore di sintassi:

z = [1, 2, 3, 4](1) + (2 + 3);
z = ([1, 2, 3, 4])(1) + (2 + 3);

PHP si comporta in modo simile.

Questa proprietà di una lingua ha un nome? Esiste un modo conciso per descrivere questa proprietà di una lingua? Nello specifico, è in grado di fare delle sostituzioni del codice sorgente dei sottoespressione

    
posta Eric 12.05.2017 - 19:27
fonte

2 risposte

2

Si chiama "variabili"! In una lingua con variabili immutabili (contro variabili mutabili / assegnabili), la semantica per definizione dice che sostituiamo semplicemente una variabile con l'espressione assegnata a esso ovunque si verifichi. Questa è generalmente una proprietà delle lingue basata sul calcolo lambda (ad esempio Sistema F, Haskell, ML, Idris, ecc.)

L'operatore di sostituzione è scritto [M/x]N : sostituiamo qualsiasi occorrenza libera della variabile x in N con M . Ad esempio, la dinamica dell'applicazione di funzione fa uso di questo operatore: se abbiamo un'estrazione lambda lambda x: int. x + x , quindi

(lambda x: int: t. x + x)(5) - > [5/x](x+x) - > 5+5 - > 10 .

    
risposta data 15.05.2017 - 00:19
fonte
0

Ciò che stai descrivendo è chiamata sostituzione o inlining .

Tipicamente inlining è usato per riferire il processo fatto dal compilatore, in cui vengono valutate espressioni come y , e il loro risultato sostituito al posto dei riferimenti a y .

Non è necessariamente limitato alle variabili, neanche. Le funzioni possono essere sottolineate, il che consente al corpo della funzione di essere sostituito dalla chiamata alla funzione. Questo in genere aumenta le dimensioni dell'applicazione, ma migliora le prestazioni eliminando la necessità di eseguire una chiamata di funzione.

    
risposta data 12.05.2017 - 20:56
fonte

Leggi altre domande sui tag