language-extensionslisted
Install: claude install-skill ncaq/konoka
# 言語拡張の選択方針
Haskellの言語拡張と、
言語拡張のセットである言語バージョンの選択方針について説明します。
## 基本の方針
Haskellの言語バージョンは使える場合は`GHC2024`を使用します。
使えない場合は`GHC2021`を使用します。
`GHC2024`で有効になっていなくても、
比較的安全で有用な言語拡張は有効にします。
## GHC2021に含まれている拡張
- `BangPatterns`
- `BinaryLiterals`
- `ConstrainedClassMethods`
- `ConstraintKinds`
- `DeriveDataTypeable`
- `DeriveFoldable`
- `DeriveFunctor`
- `DeriveGeneric`
- `DeriveLift`
- `DeriveTraversable`
- `DoAndIfThenElse`
- `EmptyCase`
- `EmptyDataDecls`
- `EmptyDataDeriving`
- `ExistentialQuantification`
- `ExplicitForAll`
- `FieldSelectors`
- `FlexibleContexts`
- `FlexibleInstances`
- `ForeignFunctionInterface`
- `GADTSyntax`
- `GeneralisedNewtypeDeriving`
- `HexFloatLiterals`
- `ImplicitPrelude`
- `ImplicitStagePersistence`
- `ImportQualifiedPost`
- `InstanceSigs`
- `KindSignatures`
- `MonomorphismRestriction`
- `MultiParamTypeClasses`
- `NamedFieldPuns`
- `NamedWildCards`
- `NoExplicitNamespaces`
- `NumericUnderscores`
- `PatternGuards`
- `PolyKinds`
- `PostfixOperators`
- `RankNTypes`
- `RelaxedPolyRec`
- `ScopedTypeVariables`
- `StandaloneDeriving`
- `StandaloneKindSignatures`
- `StarIsType`
- `TraditionalRecordSyntax`
- `TupleSections`
- `TypeApplications`
- `TypeOperators`
- `TypeSynonymInstances`
## GHC2024に含まれている拡張
上の`GHC2021`に加えて、
以下の拡張が`GHC2024`に含まれています。
- `DataKinds`
- `DerivingStrategies`
- `DisambiguateRecordFields`
- `ExplicitNamespaces`
- `GADTs`
- `LambdaCase`
- `RoleAnnotations`
## cabalファイルの設定例
典型的なcabalファイルでの言語バージョン��言語拡張の設定は以下のようになります。
```cabal
defau