2010-06-17 23 views

risposta

11

Un possibile esempio di utilizzo può essere l'utilizzo di TypeCompose di Conal per la composizione di trasformatori monad in stile point-free.

type MyT = StateT Foo :. MaybeT :. ContT Bar 

(tanto per fare un esempio, non ho idea di ciò che si sta andando a che fare con quei foos e bar ..)

Invece di:

type MyT m = StateT Foo (MaybeT (ContT Bar m)) 

(questo sarebbe lo stesso risultato a parte newtype -wrappers)

Attualmente è necessario duplicare il codice del combinatore per diversi tipi e questa estensione abolisce la ripetizione e consente di utilizzare un pezzo di codice per dominarli tutti.

1

Sono utili per definire funzioni che operano su costruttori di dati con arbitrarietà, ovviamente!

Un esempio concreto potrebbe essere una funzione che, dato un costruttore di dati con arbitrarietà arbitraria, restituisce un nuovo costruttore di dati che avvolge il costruttore indicato in Some().

+1

Può fare un esempio ? – solidsnack

11

Adding Polymorphic Kinds to GHC

Lo sfondo a questa domanda sarebbe il motivation in general for a more expressive kind system.

Cioè, la ragione generale per aggiungere tipi polimorfici a Haskell è migliorare l'esperienza di programmazione di tipo. Attualmente la programmazione a livello di caratteri in Haskell procede in un livello "kind" essenzialmente non tipizzato. Un linguaggio più ricco renderà la programmazione a livello di tipo in Haskell, in generale, più facile.

Un esempio più concreto potrebbe essere quello di rimuovere la (dinamica) vincolo tipizzabile dei generici dello stile SYB (citation), oltre a migliorare il supporto generale per la programmazione generica superiore kinded ..

Problemi correlati