2014-11-29 3 views
0

У меня есть задание, в котором тип и монада имеют одно и то же имя (Rand), и кажется, что он испортил выполнение функции, которая может развернуть монаду (т.е. Rand Something -> Something), поскольку он, кажется, выбирает неправильный. Есть ли что-то, что я могу сделать, чтобы остановить это?Имея Монаду и одноименное имя

+1

Многие монады являются конструкторами типа (и * все * Монады являются типами вида '* -> *'), так что это нормально. Вам действительно нужно опубликовать более подробную информацию для нас, чтобы иметь хорошие шансы дать вам хороший совет. Как минимум, дайте нам достаточно кода, чтобы воспроизвести проблему и точную ошибку, которую вы получаете. –

+0

Обычно функция разворачивания монады имеет имя с префиксом 'un' или' get' или 'run', например' runReader', 'getConst' и т. Д. – kccqzy

ответ

1
import qualified Rand as R 

data Rand = Rand ... 

foo :: R.Rand Rand -> Rand 

Хотя, откровенно говоря, наличие такого же названия очень смущает, и я бы избегал этого.

+0

Я согласен, что это сбивает с толку, к сожалению, именно так работа была установлена поэтому мне нужно обходное решение. ура –

Смежные вопросы