Quelle est la différence entre Kind et Type à Haskell?


Réponse 1:

les types sont comme les types

pour

les types

"abc", 1, True

String, Int, Bool, Monad

*, * -> *

Bool, Int, String

*

Peut être

* -> *

* -> (* -> *)

: k

ghci

Prélude>: k Soit Soit :: * -> * -> *

#

(#)

 .? / \ / \ ?? (#) / \ * #   

sur StackOverflow

??

?

ghci

ConstraintKinds

Prélude>: set -XConstraintKinds Prélude> type Foo a = (Afficher a, Ord a) Prélude>: k Foo Foo :: * -> Contrainte

DataKinds

{- # LANGUAGE DataKinds, KindSignatures, GADTs # -} data IsEmpty = Empty | Données non vides List :: IsEmpty -> * -> * où Nil :: List IsEmpty a Cons :: a -> List empty a -> List NonEmpty a myHead :: List NonEmpty a -> a myHead (Cons a _) = a

Est vide

Vide

Non vide

et

Prélude>: k Vide Vide :: IsEmpty Prélude>: t Vide Vide :: IsEmpty

1

2

nuit

Prélude>: set -XDataKinds Prélude>: k 10 10 :: Nat

Arithmétique modulaire

Int `Mod` 10