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
Posté sur 29-02-2020