2013-03-08 29 views
6

Więc powiedzmy pisałem jakiś type-level program w Haskell:hierarchiczny Nazwa modułu dla programów typu szczebla

type family NAryFn (n::Nat) (dom::*) (cod::*) :: * 
type instance NAryFn Ze dom cod = cod 
type instance NAryFn (Su n) dom cod = dom -> NAryFn n dom cod 

myślę, że to jest przydatne i chcę użyć to wszystko nad moim projektem. Więc umieściłem to w module.

Jaka byłaby dobra hierarchiczna nazwa modułu? (Por Haskell Hierarchical Modules)

Wiele struktur danych żyć w Data (Data.Text, Data.List itp), różne sposoby wpływu strukturę są w Control takich jak Control.Monad lub Control.Applicative.

Gdzie powinny znajdować się programy poziomu podstawowego? Type? TypeFamily? Czy osiągnięto konsensus?

Odpowiedz

1

Sprawdziłem hackage, a większość pakietów zapewniających funkcjonalność poziomie typu żyć w hierarchii Data pod Data.Type, Data.TypeLevel lub podobny, albo czasami Data.Number.Etc.TypeLevel. Jest jednak kilka wyjątków.

Pakiet typu poziom naturalny numer mieszka pod TypeLevel: http://hackage.haskell.org/package/type-level-natural-number

Pakiet TFP mieszka pod typów: http://hackage.haskell.org/package/tfp

Pewna liczba pakietów Nicolas Frisby żyje pod Rodzaj: http://hackage.haskell.org/package/type-booleans i http://hackage.haskell.org/package/type-cereal na przykład.

W tej chwili nie ma konsensusu. Osobiście uważam, że Types jest odpowiednim miejscem na wszystkie te rzeczy, ale jak zwykle w przypadku społeczności Haskell, wszystko kończy się na Data.

niebezpieczeństw języku, gdzie prawie wszystko jest pierwszej klasy, przypuszczam :-)

można zobaczyć niektóre, ale nie wszystkie, z pakietami typu szczebla w kategorii „Typ systemu” na hackage: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:type%20system

Powiązane problemy