Domanda

Sto studiando teoria dei linguaggi di programmazione e non riesco a capire un motivo solido per cui lingue pigri non hanno la mutazione. Qualcuno sa il motivo?

È stato utile?

Soluzione

pigrizia significa che una funzione non è effettivamente valutata fino (o meno) il valore restituito viene utilizzato. Ciò significa che le chiamate di funzione non sono necessariamente valutate nell'ordine in cui appaiono nel codice. Essa inoltre mezzi che non può essere funzioni nulli perché sarebbero mai essere valutati (come non è possibile utilizzare un valore di ritorno che non esiste).

Tuttavia, per le funzioni che svolgono effetti collaterali (come la mutazione, ma anche solo la stampa per lo schermo) che fa importa in che ordine sono eseguiti. E le cose ancora più che stanno eseguiti affatto. Questo significa che le lingue pigri hanno bisogno di un modo per effetti collaterali emulare tipi speciali che garantiscono che essi vengono eseguiti ed eseguiti nel giusto ordine.

Dato che i programmi privi di effetti collaterali del tutto sono inutili (è necessario essere in grado di stampare sullo schermo a tutti), lingue pigri effettivamente fare gli effetti collaterali di supporto. Hanno appena li incapsulano con l'IO Monade o tipi di unicità. Come esempio haskell non ha array mutabili, ma possono essere utilizzati solo all'interno monade IO.

Altri suggerimenti

La mutazione significa che non si può essere sicuri dello stato del programma in qualsiasi momento e dovrà preoccuparsi di effetti collaterali da qualsiasi azione. In realtà ho pensato e non riesco a pensare a un modo per avere un linguaggio completamente pigro che supporti mutazione. (io non sono un informatico però.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top