GHC
GHC is the primary compiler for the Haskell language and supports numerous language extensions, such as PolyKinds, DataKinds, and TypeFamilies. It is the core tool of the Haskell ecosystem.
Timeline (last 90 days)
The Haskell runtime system (RTS) is the execution engine behind GHC-compiled programs, responsible for scheduling green threads, managing generational garbage collection, and performing lazy evaluation.
After enabling the DataKinds extension, each data type automatically promotes its value constructors to type constructors and assigns them Kinds; for example, data Bool = True | False generates the types 'True and 'False (with Kind Bool).
In ghci, the :kind command (abbreviated as :k) is used to query the Kind of a type; for example, :k Int returns Int :: *.
In newer versions of GHC, * has been renamed Type and can be imported through the Data.Kind module.
The TypeApplications extension allows explicit specification of type parameters at the expression level (such as read @Int).
GHC's PolyKinds extension allows type variables to have polymorphic Kinds, enabling types such as Proxy to adapt to any Kind.
When defining an instance for Functor, the compiler checks whether the Kind of the target type is * -> *; if a type whose Kind is * (such as Int) is passed in, the compiler reports an error.
The TypeFamilies extension allows the definition of type-level functions, which fall into closed and open varieties; open type families can have instances defined incrementally across multiple modules.
At present there is no clear information on whether GHC will restart in another form or be permanently discontinued.
Over the past decade, GHC's sponsors have included giants such as Google, Meta, Apple and Microsoft.
1 more timeline events
All Facts (10)
The Haskell runtime system (RTS) is the execution engine behind GHC-compiled programs, responsible for scheduling green threads, managing generational garbage collection, and performing lazy evaluation.
50%UnverifiedGHC's PolyKinds extension allows type variables to have polymorphic Kinds, enabling types such as Proxy to adapt to any Kind.
50%UnverifiedWhen defining an instance for Functor, the compiler checks whether the Kind of the target type is * -> *; if a type whose Kind is * (such as Int) is passed in, the compiler reports an error.
50%UnverifiedAfter enabling the DataKinds extension, each data type automatically promotes its value constructors to type constructors and assigns them Kinds; for example, data Bool = True | False generates the types 'True and 'False (with Kind Bool).
50%UnverifiedThe TypeFamilies extension allows the definition of type-level functions, which fall into closed and open varieties; open type families can have instances defined incrementally across multiple modules.
50%UnverifiedIn newer versions of GHC, * has been renamed Type and can be imported through the Data.Kind module.
50%UnverifiedThe TypeApplications extension allows explicit specification of type parameters at the expression level (such as read @Int).
50%UnverifiedIn ghci, the :kind command (abbreviated as :k) is used to query the Kind of a type; for example, :k Int returns Int :: *.
50%UnverifiedOver the past decade, GHC's sponsors have included giants such as Google, Meta, Apple and Microsoft.
50%UnverifiedThe cancellation of GHC may have a negative impact on corporate recruiting pipelines, students' career planning, and women-in-tech community networks.
50%