Каков текущий статус ограниченных монад?

Возвращаясь, по крайней мере, к концу 1990-х годов, были люди, желающие интегрировать ограниченные монады в Haskell по-дружески.

Например, без ограниченных монад вы не можете создать эффективную монаду из Set, Mapили вероятностных распределений . Вот вопрос SO несколько лет назад, когда кто-то еще столкнулся с этой проблемой.

Существуют различные обходные пути, которые придумали люди, в том числе:

Однако ни один из этих подходов не кажется «каноническим». Я нашел комментарий Дона Стюарта к этому сообщению в блоге в 2007 году, где он намекнул, что мы «довольно близки» к ограничению монад с помощью индексированных типов .

Каков текущий статус? Есть ли сейчас «канонический» способ создания ограниченных монад? Или мы все еще живем с обходными путями?

24
задан Community 23 May 2017 в 12:32
поделиться