2013-09-24 2 views
5

Я ищу единичный функтор/монадыКакой пакет Haskell имеет единичный функтор/монада?

data Unit a = Unit 

Я мог бы легко воссоздать его, но я предпочел бы не дублировать то, это основное. Раньше он жил в Control.Functor в категории «Дополнительные услуги» (http://hackage.haskell.org/packages/archive/category-extras/0.1/doc/html/Control-Functor.html). Я не могу найти его с Hoogle, или в карте, где кусочки категории-статисты отправились жить (http://hackage.haskell.org/package/category-extras-1.0.2)

Похоже, он должен жить в пакете трансформаторов, так что там Control.Monad.Identity пошли (сейчас Data.Functor.Identity).

Ближайший существующий код библиотеки я могу придумать это

type Unit a = Constant() a 

использованием Data.Functor.Constant из пакета трансформаторов.

ответ

8

Тип Proxy может быть тем, что вам нужно.

+1

Отлично, это именно то, что я хочу; Большое спасибо. Мне не приходило в голову, что 'data Unit a = Unit' - это то же самое, что я пишу для прокси,' data Proxy a = a'. Было бы замечательно, если бы Hoogle мог искать объявления 'data' так же, как и поисковые функции. – Cirdec

+1

Конечно, я хотел набрать 'data Proxy a = Proxy'. – Cirdec

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