Softwares

Haskellのライブラリ(Hackageに登録中)

trie-simple

auto-lift-classes

matchable

coercible-subtypes

functor-monad

monad-ideals

Haskellのライブラリ(実験中)

完成度などの理由によりHackageには登録していません

cartesian-profunctors

(,)や和(+)で組み立てることができるProfunctorを表す、 CartesianCocartesianを定義するパッケージです。

instance Profunctor p => Cartesian p where
  proUnit :: p a ()
  (***) :: p a b -> p a' b' -> p (a,a') (b,b')

instance Profunctor p => Cocartesian p where
  proEmpty :: p Void b
  (+++) :: p a b -> p a' b' -> p (Either a a') (Either b b')

また、「Profunctortraverseできる」ことを表すPTraversableを提供します。

instance (Ord1 t, Traversable t) => PTraversable t where
  ptraverseWith ::
    (Cartesian p, Cocartesian p) =>
    (as -> t a) ->
    (t b -> bs) ->
    p a b ->
    p as bs

わりあい出来てはいるのですが、

  1. 既存のライブラリone-liner, product-profunctorsとかなり重複してしまっていること
  2. CartesianCocartesianの間の理論的な関係の不明瞭さ(AlternativeApplicativeの分配法則のような問題がある)

といった理由でHackageにはありません。

nat-map

通常のMapから、キーと値をFunctorであるf,gに拡張した NatMap f gを提供します。

data NatMap (f :: Type -> Type) (g :: Type -> Type)

lookup :: (WeakOrd f, Foldable f, Functor g) => f a -> NatMap f g -> Maybe (g a) 

こちらも割と自信をもって使える状態なのですが、 cartesian-profunctorsに強く依存して作ってしまったのでHackageにありません。

polynomial-functors

多項式関手に関連する実験的なライブラリ(たち)を作っています。