Softwares
Haskellのライブラリ(Hackageに登録中)
trie-simple
- trie-simple
- GitHub
auto-lift-classes
- auto-lift-classes
- GitHub
- 記事: reflectionを使ったテクニック
matchable
- パッケージ
- matchable
- 記事:matchable解説
- matchable-th
- matchable
- GitHub
coercible-subtypes
- パッケージ
- GitHub
functor-monad
- パッケージ
- functor-monad
- 記事: Functor上のモナド、FMonadについて
- 記事: Trail: 踏跡モナド
- free-applicative-t
- day-comonoid
- functor-monad
- GitHub
monad-ideals
- monad-ideals
- GitHub
Haskellのライブラリ(実験中)
完成度などの理由によりHackageには登録していません
cartesian-profunctors
積(,)
や和(+)
で組み立てることができるProfunctor
を表す、
Cartesian
とCocartesian
を定義するパッケージです。
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')
また、「Profunctor
でtraverse
できる」ことを表すPTraversable
を提供します。
instance (Ord1 t, Traversable t) => PTraversable t where
ptraverseWith ::
Cartesian p, Cocartesian p) =>
(-> t a) ->
(as -> bs) ->
(t b ->
p a b p as bs
わりあい出来てはいるのですが、
- 既存のライブラリone-liner, product-profunctorsとかなり重複してしまっていること
Cartesian
とCocartesian
の間の理論的な関係の不明瞭さ(Alternative
とApplicative
の分配法則のような問題がある)
といった理由で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
多項式関手に関連する実験的なライブラリ(たち)を作っています。
polynomial-functor (haddock)
- 多項式関手を表す型クラス
Polynomial
- 多項式関手を表す型クラス
finite-polynomial (haddock)
- 有限な多項式を表すデータ
Poly
、その多項式関手への実現(Ev :: Poly -> Type -> Type
) - 有限な多項式関手に
Applicative
やMonad
を定める
- 有限な多項式を表すデータ
polynomial-comonad (haddock)
- Directed Containers as Categoiresをsingletons(とpolynomial-functor)を使って実装
- TravelコモナドとFlowモナド