Gets a string representation of a type.
NOTE: This must be used with TypeApplications language extension.
typeName @()"()"typeName @Int"Int"typeName @String"[Char]"typeName @(Maybe Int)"Maybe Int"
:: a typeCtrl KGHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27
Modulerelude-1.2.0.0Haskell2010
SPDX-License-Identifier : MIT Maintainer : Kowainik xrom.xkov@gmail.com Stability : Stable Portability : Portable
Contains useful utilities to work with Types.
Gets a string representation of a type.
NOTE: This must be used with TypeApplications language extension.
typeName @()"()"typeName @Int"Int"typeName @String"[Char]"typeName @(Maybe Int)"Maybe Int"
Concatenates type-level lists.
:kind! '[ 'Just 5, 'Nothing] ++ '[ 'Just 3, 'Nothing, 'Just 1]'[ 'Just 5, 'Nothing] ++ '[ 'Just 3, 'Nothing, 'Just 1] :: [Maybe Natural]= '[ 'Just 5, 'Nothing, 'Just 3, 'Nothing, 'Just 1]
:kind! '[] ++ '[ 'Just 3, 'Nothing, 'Just 1]'[] ++ '[ 'Just 3, 'Nothing, 'Just 1] :: [Maybe Natural]= '[ 'Just 3, 'Nothing, 'Just 1]
# 85 "srcReludeExtra/Type.hs"
Builds combined Constraint by applying Constraint constructor to all elements of type-level list.
:kind! AllHave Show '[Int, Text, Double]AllHave Show '[Int, Text, Double] :: Constraint= (Show Int, (Show Text, (Show Double, () :: Constraint)))
which is equivalent to:
(Show Int, Show Text, Show Double) :: Constraint
Check that a type is an element of a list:
:kind! Elem String '[]Elem String '[] :: Bool= 'False
:kind! Elem String '[Int, String]Elem String '[Int, String] :: Bool= 'True
:kind! Elem String '[Int, Bool]Elem String '[Int, Bool] :: Bool= 'False
Returns first element of tuple type (with kind *) or type-level tuple
(with kind (k1, k2), marked by prefix quote).
:kind! Maybe (Fst '(Int, Text))Maybe (Fst '(Int, Text)) :: *= Maybe Int
:kind! Maybe (Fst (Int, Text))Maybe (Fst (Int, Text)) :: *= Maybe Int
Returns second element of tuple type (with kind *) or type-level tuple
(with kind (k1, k2), marked by prefix quote).
:kind! Maybe (Snd '(Int, Text))Maybe (Snd '(Int, Text)) :: *= Maybe Text:kind! Maybe (Snd (Int, Text))Maybe (Snd (Int, Text)) :: *= Maybe Text