The “ghc” command refers to the Glasgow Haskell Compiler, which is the primary compiler for the Haskell programming language. It is a command-line tool that takes Haskell source files as input, compiles them into executable code, and links them with any necessary libraries to produce runnable programs.
The Glasgow Haskell Compiler (GHC) is widely recognized as one of the most robust and feature-rich compilers for Haskell. It supports various Haskell language extensions, providing developers with advanced language features and capabilities. GHC also includes a comprehensive set of optimizations, allowing Haskell programs to achieve high performance and efficient execution.
Here are some key features and functionalities of the GHC compiler:
- Compilation: GHC reads Haskell source files (typically with a .hs extension) and performs various stages of compilation, including lexical analysis, parsing, type checking, and optimization. It translates the Haskell code into an intermediate representation known as Core.
- Optimization: GHC applies a range of optimizations to the Core representation, including inlining, specialization, strictness analysis, and loop optimization. These optimizations aim to improve the performance of the generated code by reducing runtime overhead and improving memory usage.
- Code Generation: Once the optimizations are applied, GHC generates low-level machine code suitable for the target platform. It supports various backends, including native code generation for different architectures and bytecode generation for platforms like the JVM.
- Linking: After code generation, GHC performs linking, which involves combining the generated object files with any required libraries and system dependencies to produce an executable program. It resolves symbols, manages memory layout, and generates the final executable file.
- Language Extensions: GHC supports a wide range of language extensions that go beyond the standard Haskell language specification. These extensions provide additional language features, type system enhancements, and advanced programming constructs, enabling developers to write expressive and powerful Haskell code.
- Interactive Mode: GHC also provides an interactive mode known as GHCi. It allows developers to load Haskell modules, experiment with code snippets, and execute expressions interactively. GHCi provides a convenient environment for exploring and debugging Haskell programs.
The Glasgow Haskell Compiler (GHC) is actively maintained and continuously improved by a dedicated community of developers. It is available on multiple platforms, including Windows, macOS, and various Unix-like systems, making it accessible to a wide range of developers.
GHC plays a crucial role in the Haskell ecosystem, enabling developers to compile their Haskell programs into efficient and executable code. It provides the necessary tools and optimizations to create high-performance Haskell applications, libraries, and tools. GHC’s rich set of features and its adherence to the Haskell language specification make it a go-to choice for Haskell development projects.
ghc Command Examples
1. Find and compile all modules in the current directory:
# ghc Main
2. Compile a single file:
# ghc file.hs
3. Compile using extra optimization:
# ghc -O file.hs
4. Stop compilation after generating object files (.o):
# ghc -c file.hs
5. Start a REPL (interactive shell):
# ghci
6. Evaluate a single expression:
# ghc -e expression