GHC 利用者の手引き にようこそ¶
(翻訳作業中: GitHub)
目次:
- 1. The Glasgow Haskell Compiler License
- 2. GHC の紹介
- 3. バージョン 8.2.1 のリリースノート
- 3.1. ハイライト
- 3.2. 詳細
- 3.3. ライブラリ
- 3.3.1. array
- 3.3.2. base
- 3.3.3. binary
- 3.3.4. bytestring
- 3.3.5. Cabal
- 3.3.6. containers
- 3.3.7. deepseq
- 3.3.8. directory
- 3.3.9. filepath
- 3.3.10. ghc
- 3.3.11. ghc-boot
- 3.3.12. ghc-compact
- 3.3.13. ghc-prim
- 3.3.14. hoopl
- 3.3.15. hpc
- 3.3.16. integer-gmp
- 3.3.17. process
- 3.3.18. template-haskell
- 3.3.19. time
- 3.3.20. unix
- 3.3.21. Win32
- 3.4. 既知のバグ
- 4. バージョン 8.2.2 のリリースノート
- 4.1. ハイライト
- 4.2. 詳細
- 4.3. ライブラリ
- 4.3.1. array
- 4.3.2. base
- 4.3.3. binary
- 4.3.4. bytestring
- 4.3.5. Cabal
- 4.3.6. containers
- 4.3.7. deepseq
- 4.3.8. directory
- 4.3.9. filepath
- 4.3.10. ghc
- 4.3.11. ghc-boot
- 4.3.12. ghc-compact
- 4.3.13. ghc-prim
- 4.3.14. hoopl
- 4.3.15. hpc
- 4.3.16. integer-gmp
- 4.3.17. process
- 4.3.18. template-haskell
- 4.3.19. time
- 4.3.20. unix
- 4.3.21. Win32
- 4.4. 既知のバグ
- 5. GHCi を使う
- 5.1. Introduction to GHCi
- 5.2. ソースファイルをロードする
- 5.3. コンパイル済みコードをロードする
- 5.4. プロンプトで対話的に評価する
- 5.5. GHCiのデバッガ
- 5.6. GHCi の起動
- 5.7. GHCi のコマンド群
- 5.8.
:set
コマンドと:seti
コマンド - 5.9.
.ghci
ファイルと.haskeline
ファイル - 5.10. GHCi内でオブジェクトコードにコンパイルする
- 5.11. インタプリタを別プロセスで走らせる
- 5.12. FAQ と注意事項
- 6. runghc を使う
- 7. GHCを使う
- 7.1. GHCを使う
- 7.2. 警告と整合性検査
- 7.3. 最適化 (コードの改善)
- 7.4. Concurrent Haskell を使う
- 7.5. SMP 並列を使う
- 7.6. フラグの一覧表
- 7.6.1. 饒舌性に関するオプション
- 7.6.2. 通常以外の実行モード
- 7.6.3. どの段階を実行するか
- 7.6.4. 出力先の変更
- 7.6.5. 中間ファイルの保持
- 7.6.6. 一時ファイル
- 7.6.7. インポートの検索
- 7.6.8. インターフェイスファイル関連オプション
- 7.6.9. 再コンパイル検査
- 7.6.10. 対話モードのオプション
- 7.6.11. パッケージ
- 7.6.12. 言語オプション
- 7.6.13. 警告
- 7.6.14. 最適化レベルの設定
- 7.6.15. 個々の最適化
- 7.6.16. プロファイリングオプション
- 7.6.17. プログラム網羅オプション
- 7.6.18. C プリプロセッサオプション
- 7.6.19. コード生成オプション
- 7.6.20. リンクオプション
- 7.6.21. プラグインオプション
- 7.6.22. フェーズの置き換え
- 7.6.23. 特定のフェーズにオプションを渡す
- 7.6.24. プラットフォーム固有のオプション
- 7.6.25. コンパイラをデバッグするためのオプション
- 7.6.26. その他のコンパイルオプション
- 7.7. コンパイル済みプログラムの実行
- 7.7.1. RTS オプションの設定方法
- 7.7.2. Miscellaneous RTS options
- 7.7.3. RTS options to control the garbage collector
- 7.7.4. RTS options to produce runtime statistics
- 7.7.5. RTS options for concurrency and parallelism
- 7.7.6. RTS options for profiling
- 7.7.7. Tracing
- 7.7.8. RTS options for hackers, debuggers, and over-interested souls
- 7.7.9. Getting information about the RTS
- 7.8. Filenames and separate compilation
- 7.8.1. Haskell source files
- 7.8.2. Output files
- 7.8.3. The search path
- 7.8.4. Redirecting the compilation output(s)
- 7.8.5. Keeping Intermediate Files
- 7.8.6. Redirecting temporary files
- 7.8.7. Other options related to interface files
- 7.8.8. The recompilation checker
- 7.8.9. How to compile mutually recursive modules
- 7.8.10. Module signatures
- 7.8.11. Using
make
- 7.8.12. Dependency generation
- 7.8.13. Orphan modules and instance declarations
- 7.9. Packages
- 7.9.1. Using Packages
- 7.9.2. The
main
package - 7.9.3. Consequences of packages for the Haskell language
- 7.9.4. Thinning and renaming modules
- 7.9.5. Package Databases
- 7.9.6. Installed package IDs, dependencies, and broken packages
- 7.9.7. Package management (the
ghc-pkg
command) - 7.9.8. Building a package from Haskell source
- 7.9.9.
InstalledPackageInfo
: a package specification
- 7.10. GHC Backends
- 7.11. Options related to a particular phase
- 7.12. Using shared libraries
- 7.13. Debugging the compiler
- 8. Profiling
- 8.1. Cost centres and cost-centre stacks
- 8.2. Compiler options for profiling
- 8.3. Time and allocation profiling
- 8.4. Profiling memory usage
- 8.5.
hp2ps
– Rendering heap profiles to PostScript - 8.6. Profiling Parallel and Concurrent Programs
- 8.7. Observing Code Coverage
- 8.8. Using “ticky-ticky” profiling (for implementors)
- 9. Advice on: sooner, faster, smaller, thriftier
- 10. GHC Language Features
- 10.1. Language options
- 10.2. Unboxed types and primitive operations
- 10.3. Syntactic extensions
- 10.3.1. Unicode syntax
- 10.3.2. The magic hash
- 10.3.3. Negative literals
- 10.3.4. Fractional looking integer literals
- 10.3.5. Binary integer literals
- 10.3.6. Pattern guards
- 10.3.7. View patterns
- 10.3.8. n+k patterns
- 10.3.9. The recursive do-notation
- 10.3.10. Applicative do-notation
- 10.3.11. Parallel List Comprehensions
- 10.3.12. Generalised (SQL-like) List Comprehensions
- 10.3.13. Monad comprehensions
- 10.3.14. New monadic failure desugaring mechanism
- 10.3.15. Rebindable syntax and the implicit Prelude import
- 10.3.16. Postfix operators
- 10.3.17. Tuple sections
- 10.3.18. Lambda-case
- 10.3.19. Empty case alternatives
- 10.3.20. Multi-way if-expressions
- 10.3.21. Local Fixity Declarations
- 10.3.22. Import and export extensions
- 10.3.23. Summary of stolen syntax
- 10.4. Extensions to data types and type synonyms
- 10.4.1. Data types with no constructors
- 10.4.2. Data type contexts
- 10.4.3. Infix type constructors, classes, and type variables
- 10.4.4. Type operators
- 10.4.5. Liberalised type synonyms
- 10.4.6. Existentially quantified data constructors
- 10.4.7. Declaring data types with explicit constructor signatures
- 10.4.8. Generalised Algebraic Data Types (GADTs)
- 10.5. Extensions to the record system
- 10.6. Extensions to the “deriving” mechanism
- 10.6.1. Inferred context for deriving clauses
- 10.6.2. Stand-alone deriving declarations
- 10.6.3. Deriving instances of extra classes (
Data
, etc.) - 10.6.4. Deriving
Functor
instances - 10.6.5. Deriving
Foldable
instances - 10.6.6. Deriving
Traversable
instances - 10.6.7. Deriving
Data
instances - 10.6.8. Deriving
Typeable
instances - 10.6.9. Deriving
Lift
instances - 10.6.10. Generalised derived instances for newtypes
- 10.6.11. Deriving any other class
- 10.6.12. Deriving strategies
- 10.7. Pattern synonyms
- 10.8. Class and instances declarations
- 10.9. Type families
- 10.10. Datatype promotion
- 10.11. Kind polymorphism and Type-in-Type
- 10.11.1. The difference between
-XTypeInType
and-XPolyKinds
- 10.11.2. Overview of kind polymorphism
- 10.11.3. Overview of Type-in-Type
- 10.11.4. Principles of kind inference
- 10.11.5. Complete user-supplied kind signatures and polymorphic recursion
- 10.11.6. Kind inference in closed type families
- 10.11.7. Kind inference in class instance declarations
- 10.11.8. Kind inference in type signatures
- 10.11.9. Explicit kind quantification
- 10.11.10. Kind-indexed GADTs
- 10.11.11. Constraints in kinds
- 10.11.12. The kind
*
- 10.11.13. Inferring dependency in datatype declarations
- 10.11.14. Kind defaulting without
-XPolyKinds
- 10.11.15. Pretty-printing in the presence of kind polymorphism
- 10.11.1. The difference between
- 10.12. Levity polymorphism
- 10.13. Type-Level Literals
- 10.14. Constraints in types
- 10.15. Extensions to type signatures
- 10.16. Lexically scoped type variables
- 10.17. Bindings and generalisation
- 10.18. Visible type application
- 10.19. Implicit parameters
- 10.20. Arbitrary-rank polymorphism
- 10.21. Impredicative polymorphism
- 10.22. Typed Holes
- 10.23. Partial Type Signatures
- 10.24. Custom compile-time errors
- 10.25. Deferring type errors to runtime
- 10.26. Template Haskell
- 10.27. Arrow notation
- 10.28. Bang patterns and Strict Haskell
- 10.29. Assertions
- 10.30. Static pointers
- 10.31. Pragmas
- 10.31.1. LANGUAGE pragma
- 10.31.2.
OPTIONS_GHC
pragma - 10.31.3.
INCLUDE
pragma - 10.31.4.
WARNING
andDEPRECATED
pragmas - 10.31.5. MINIMAL pragma
- 10.31.6. INLINE and NOINLINE pragmas
- 10.31.7.
LINE
pragma - 10.31.8.
COLUMN
pragma - 10.31.9.
RULES
pragma - 10.31.10.
SPECIALIZE
pragma - 10.31.11.
SPECIALIZE
instance pragma - 10.31.12.
UNPACK
pragma - 10.31.13.
NOUNPACK
pragma - 10.31.14.
SOURCE
pragma - 10.31.15.
COMPLETE
pragmas - 10.31.16.
OVERLAPPING
,OVERLAPPABLE
,OVERLAPS
, andINCOHERENT
pragmas
- 10.32. Rewrite rules
- 10.33. Special built-in functions
- 10.34. Generic classes
- 10.35. Generic programming
- 10.36. Roles
- 10.37. HasCallStack
- 10.38. Concurrent and Parallel Haskell
- 10.39. Safe Haskell
- 11. Foreign function interface (FFI)
- 12. Extending and using GHC as a Library
- 13. What to do when something goes wrong
- 14. Debugging compiled programs
- 15. Other Haskell utility programs
- 16. Running GHC on Win32 systems
- 17. Known bugs and infelicities
- 17.1. Haskell standards vs. Glasgow Haskell: language non-compliance
- 17.1.1. Divergence from Haskell 98 and Haskell 2010
- 17.1.1.1. Lexical syntax
- 17.1.1.2. Context-free syntax
- 17.1.1.3. Expressions and patterns
- 17.1.1.4. Declarations and bindings
- 17.1.1.5. Typechecking of recursive binding groups
- 17.1.1.6. Module system and interface files
- 17.1.1.7. Numbers, basic types, and built-in classes
- 17.1.1.8. In
Prelude
support - 17.1.1.9. The Foreign Function Interface
- 17.1.2. GHC’s interpretation of undefined behaviour in Haskell 98 and Haskell 2010
- 17.1.1. Divergence from Haskell 98 and Haskell 2010
- 17.2. Known bugs or infelicities
- 17.1. Haskell standards vs. Glasgow Haskell: language non-compliance
- 18. Eventlog encodings
- 19. Care and feeding of your GHC User’s Guide