Append two type-level symbols.
Example
:kind! Eval (Append "hmm" " ok")Eval (Append "hmm" " ok") :: Symbol = "hmm ok"
Instances1Eval
type Eval (Append s1 s2) = AppendSymbol s1 s2Defined in fcf-containers-0.8.2 · Fcf.Alg.Symbol
:: a typeCtrl KGHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05
Modulefcf-containers-0.8.2Haskell2010
Type-level symbols and functions for them.
Note that the operators from this module conflict with GHC.TypeLits.
TODO: Would this whole module have a place first-class-families?
From Fcf.Data.Symbol (which is from GHC).
module Fcf.Data.Symbol
Append two type-level symbols.
:kind! Eval (Append "hmm" " ok")Eval (Append "hmm" " ok") :: Symbol = "hmm ok"
type Eval (Append s1 s2) = AppendSymbol s1 s2Defined in fcf-containers-0.8.2 · Fcf.Alg.SymbolIntercalate type-level symbols.
:kind! Eval (Intercalate "+" '["aa", "bb", "cc"])Eval (Intercalate "+" '["aa", "bb", "cc"]) :: Symbol = "aa+bb+cc"
:kind! Eval (Intercalate "+" '["aa"])Eval (Intercalate "+" '["aa"]) :: Symbol = "aa"
:kind! Eval (Intercalate "+" '[])Eval (Intercalate "+" '[]) :: Symbol = ""
type Eval (Intercalate s1 '[]) = ""
Defined in fcf-containers-0.8.2 · Fcf.Alg.Symboltype Eval (Intercalate s1 (s ': sLst)) = Eval (Append s =<< Foldr (InterCalHelp s1) ""
sLst)Defined in fcf-containers-0.8.2 · Fcf.Alg.SymbolIsSpace
:kind! Eval (IsSpace "a")Eval (IsSpace "a") :: Bool = 'False
:kind! Eval (IsSpace " ")Eval (IsSpace " ") :: Bool = 'True
IsNewline
:kind! Eval (IsNewLine "a")Eval (IsNewLine "a") :: Bool = 'False
:kind! Eval (IsNewLine "\n")Eval (IsNewLine "n") :: Bool = 'True
IsTab
:kind! Eval (IsTab "a")Eval (IsTab "a") :: Bool = 'False
:kind! Eval (IsTab "\t")Eval (IsTab "t") :: Bool = 'True
IsSpaceDelim
:kind! Eval (IsSpaceDelim "a")Eval (IsSpaceDelim "a") :: Bool = 'False
:kind! Eval (IsSpaceDelim "\n")Eval (IsSpaceDelim "n") :: Bool = 'True
IsDigit
:kind! Eval (IsDigit "3")Eval (IsDigit "3") :: Bool = 'True
:kind! Eval (IsDigit "a")Eval (IsDigit "a") :: Bool = 'False
SymbolOrd - compare two symbols and give type-level Ordering ( $ 'LT $, $ 'EQ $ or $ 'GT $ ).
:kind! Eval (SymbolOrd "a" "b")Eval (SymbolOrd "a" "b") :: Ordering = 'LT
Less-than-or-equal comparison for symbols.
:kind! Eval ("b" <= "a")Eval ("b" <= "a") :: Bool = 'False
Larger-than-or-equal comparison for symbols.
:kind! Eval ("b" >= "a")Eval ("b" >= "a") :: Bool = 'True
Less-than comparison for symbols.
:kind! Eval ("a" < "b")Eval ("a" < "b") :: Bool = 'True
Larger-than comparison for symbols.
:kind! Eval ("b" > "a")Eval ("b" > "a") :: Bool = 'True
Equality of symbols
:kind! Eval ("b" == "a")Eval ("b" == "a") :: Bool = 'False