2013-09-24 17 views
5

ben kolayca yeniden olabilir birim funktoru/monadHaskell paketinin birim functor/monad'i nedir?

data Unit a = Unit 

arıyorum, ama yerine bu temel şey çoğaltmak istemem. Kategori-extras paketinde (http://hackage.haskell.org/packages/archive/category-extras/0.1/doc/html/Control-Functor.html) Control.Functor'da yaşardı. Hoogle ile bulamıyorum ya da kategori-extras parçalarının nerede yaşadığını gösteren haritada (http://hackage.haskell.org/package/category-extras-1.0.2)

Transformers paketinde olması gerektiği gibi görünüyor, çünkü Control.Monad.Identity'un gittiği yer burası. Data.Functor.Identity). Ben ile gelebilir

en yakın mevcut kütüphane kod transformatörler paketinden kullanılarak

type Unit a = Constant() a 

Data.Functor.Constant olduğunu.

cevap

8

Proxy türüne sahip olduğunuz şey olabilir.

+1

Mükemmel, işte tam olarak bu; çok teşekkür ederim. Veri birimi a = Unit' için proxy'ler için yazdığım şey, 'data Proxy a = a''nın bana gelmediği görülmedi. Hoogle, "data" bildirimlerini, işlev imzaları gibi aynı şekilde arayabilirse harika olur. – Cirdec

+1

Elbette, 'proxy a = Proxy' veri yazmayı kastediyorum. – Cirdec