2013-03-08 7 views
6

also lasst uns sagen, dass ich etwas type-level program in Haskell geschrieben:Hierarchical Modulnamen für Typ-Level-Programme

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 

Ich denke, das nützlich ist, und ich will alles über mein Projekt verwenden. Also lege ich es in ein Modul.

Was wäre ein guter hierarchischer Name für das Modul? (Vgl Haskell Hierarchical Modules)

Viele Datenstrukturen leben in Data (Data.Text, Data.List, etc.), sind verschiedene Möglichkeiten der Strukturierung Effekte in Control wie Control.Monad oder Control.Applicative.

Wo sollten Typ-Level-Programme leben? Type? TypeFamily? Hat sich bereits ein Konsens entwickelt?

Antwort

1

überprüfte ich auf Hackage, und die meisten Pakete Typ Level-Funktionalität bereitstellt, live in der Data Hierarchie unter Data.Type, Data.TypeLevel oder dergleichen, oder manchmal Data.Number.Etc.TypeLevel. Es gibt jedoch ein paar Ausnahmen.

Das Typ-Level-natural-Nummer Paket lebt unter TypeLevel: http://hackage.haskell.org/package/type-level-natural-number

das TFP-Paket lebt unter Arten: http://hackage.haskell.org/package/tfp

Eine Reihe von nicolas frisby der Paketen lebt unter Typ: http://hackage.haskell.org/package/type-booleans und http://hackage.haskell.org/package/type-cereal zum Beispiel.

Also gibt es anscheinend im Moment keinen Konsens. Persönlich denke ich, Types ist der geeignete Ort für all diese Sachen zu gehen, aber wie es bei der Haskell-Community üblich ist, endet alles in Data enden.

die Gefahren einer Sprache, wo fast alles erste Klasse ist, nehme ich an :-)

Sie einige sehen können, aber nicht alle, der Typ-Level-Pakete in der „Type System“ Kategorie auf Hackage: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:type%20system