Ограничение монады к классу типа

15
задан Don Stewart 17 April 2011 в 19:33
поделиться

3 ответа

Мое понимание этого - то, что Вы просто не можете, потому что монада предназначена, чтобы быть обобщенной по всем типам, не некоторому ограниченному подмножеству типов такой как (Ord a).

Вместо того, чтобы ограничить одноместный тип M a, можно просто ограничить функции, которые используют тот одноместный тип, например,

foo :: Ord a => Int -> M a

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

и т.д.

10
ответ дан 1 December 2019 в 02:47
поделиться

Кажется, что я столкнулся с известной проблемой в Haskell. Я нашел много обходных решений поиск с помощью Google для "ограниченных монад" . Это решения , кажется, наименее разрушительно. Однако, в моих целях это кажется излишеством. Я думаю, что сохраню Distribution монада общим, и упрощу поддержку через ограниченную функцию, как предложено Revolucent.

13
ответ дан 1 December 2019 в 02:47
поделиться

Выезд библиотека Martin Erwig, PFP:

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

3
ответ дан 1 December 2019 в 02:47
поделиться