GHC拡張
GHCの拡張
Haskell98やHaskell2010の仕様を拡張した機能を使える
プラグマ{-# LANGUAGE HogeHoge #-}で指定する
code:hs
{-# LANGUAGE OverloadedStrings #-}
module Main where
--
docs
分類もされている
GHC.LanguageExtensions.Type
https://hackage.haskell.org/package/ghc-boot-th-8.10.1/docs/GHC-LanguageExtensions-Type.html#t:Extension
GHC拡張一覧
ghci上でGHC拡張する ref
起動時に設定する
$ ghci -XNoImplicitPrelude -XStrict --make Main.hs
-Xの後ろに読み込む拡張名を続ける
-XNoのあとに無効にする拡張名を続ける
起動後に読み込む
有効にする
:set -XImplicitPrelude
無効にする
:set -XNoImplicitPrelude
:unset -XImplicitPrelude
$ ghc --supported-languages
一覧見れる
noXXXも表示されるので、単にwcしても倍ぐらいになる
拡張全体の大まかな分類
(Ordinary) Extensions
一般的なGHC拡張
それぞれの拡張に対してEnabledとDisabled用のものがある
雑に言うと、↓の2つに含まれないもの全て
Haskell Language Standard Extensions
Safe Haskell Extensions
kowainik/extensions
そのproject内で使われている全ての拡張を一覧する
https://github.com/kowainik/extensions
https://kowainik.github.io/posts/extensions#our-solution-extensions-library
Cabal拡張もある
GHC拡張とは別にある
cabalは他のコンパイラでも使われるので
https://kowainik.github.io/posts/extensions#stranger-things
参考
Extensions :: Kowainik
GHC拡張全体の概要
拡張の大別
拡張が有効になるフロー