2017-09-17 3 views
0

Je suis nouveau à haskell et je n'ai aucune idée de comment analyser.Comment analyser le type personnalisé dans Haskell

J'ai créé un nouveau type

type Field = String 

Maintenant, je veux analyser [chaîne] à [Champ], comment pourrais-je faire cela? J'ai déjà ceci:

parse :: [String] -> [Field] 
+1

Mais ici vous n'analysez pas: un 'Field' est un' String': vous avez défini un alias de type. Cela signifie que '[String]' est '[Field]'. Vous n'avez pas besoin de faire de traitement. –

Répondre

4

J'ai créé un nouveau type

Non, vous avez pas. Si vous écrivez type Foo = ..., vous définissez un alias de type : il n'y a pas de nouveau type, vous avez seulement donné un nouveau nom à un certain type (composite). A partir de maintenant, vous pouvez utiliser Field et String entrelacé. Vous définissez de nouveaux types avec data Foo = ... ou newtype Foo = .... Habituellement type Foo = ... est utilisé pour donner un type spécifique à un type plus complexe. Comme par exemple type NamedStringCollection = (String,[String]).

Puisque String et Field sont du même type, il en va de même pour [String] et [Field]. En conséquence, vous n'avez pas besoin de faire de traitement. Si vous avez un [String], il s'agit en même temps d'un [Field].

Vous pouvez écrire:

parse :: [String] -> [Field] 
parse = id -- not necessary

Mais le id retourne simplement ce que vous lui donnez. Donc id ne fait aucun travail.