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) =>
(as -> t a) ->
(t b -> bs) ->
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モナド