Tornando almeno alla fine degli anni '90 ci sono state persone che desideravano l'integrazione di restricted monads in Haskell in modo amichevole.Qual è lo stato corrente delle monadi limitate?
Ad esempio, senza monadi limitati non è possibile creare una monade efficiente su Set
, Map
o probability distributions. Ecco un SO question di alcuni anni fa in cui qualcun altro si è imbattuto in questo problema.
ci sono diverse soluzioni che le persone hanno escogitato, tra cui:
Creazione di un new type class per ogni possibile restrizione.
Utilizzo di Template Haskell.
Utilizzo di Constraint Kinds.
Nessuno di questi approcci sembra essere "canonico" tuttavia. Ho trovato un commento da Don Stewart su this blog post, nel 2007, in cui ha affermato che eravamo "abbastanza vicini" ad avere monadi limitate con Indexed types.
Qual è lo stato corrente? Esiste ora un modo "canonico" di fare monadi limitati? O stiamo ancora vivendo con soluzioni alternative?
Penso che con i tipi di vincoli è tanto canonico come si ottiene, sono solo un po 'troppo nuovo per essere la soluzione più _common_ ancora. – leftaroundabout