GHC extension은 적어도 3가지 방법으로 단독 또는 결합하여 사용가능합니다. ExtensionName
이라고 불리는 가상의 extension에 대해 알아봅니다.
LANGUAGE
Pragma
개별 파일에 대해서는 파일 상단에 {-# LANGUAGE
ExtensionName
#-}
라는 형식으로 사용이 가능합니다 (module
헤더 이전, 또는 첫 번째 import
이전 및 module
헤더가 없다면 definition 이전에 위치).
여러 개의 LANGUAGE
pragmas 를 사용함으로써 여러개의 extension 도 사용가능합니다. 예를 들면, ScopedTypeVariables
, LiberalTypeSynonyms
, 와 MultiWayIf
라는 3개의 extension 을 사용하려면 다음의 3가지 방식 모두 똑같은 결과를 보입니다.
{-# LANGUAGE ScopedTypeVariables, LiberalTypeSynonyms, MultiWayIf #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE LiberalTypeSynonyms #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE ScopedTypeVariables, LiberalTypeSynonyms #-}
{-# LANGUAGE MultiWayIf #-}
.cabal
File
cabal
과 stack
으로 관리되는 프로젝트라면, .cabal
파일에 추가함으로써 전체 프로젝트에 영향을 미칠 수 있습니다.
.cabal
파일의 library
와/또는 executable
섹션에 extensions:
ExtensionName
을 추가합니다.
extensions:
라인에 콤마, 공백, 또는 새줄 구분하여 복수의 extension 네임을 위치시킴으로써 여러개의 extensions 활용도 가능합니다.
-X
Options
REPL 세션 등에서는 플래그 -X
ExtensionName
이라는 형식으로 ghc
, ghci
, 또는 runghc
명령라인을 전달함으로써 사용가능합니다. 복수의 -X
플래그를 전달함으로써 복수의 extension 사용도 가능합니다.
'프로그래밍 Programming' 카테고리의 다른 글
Haskell Yesod의 템플릿 언어 세익스피어를 활용하여 웹페이지 만들기 (1) (0) | 2018.02.01 |
---|---|
Yesod의 위젯에 대해서 (1) (0) | 2018.01.27 |
하스켈 Yesod 튜토리얼 - 페이지 추가하기 Minimal echo application (0) | 2018.01.19 |
하스켈 Yesod Illegal view pattern: fromPathPiece -> Just dyn_anHx (0) | 2018.01.19 |
하스켈 Yesod Echo.hs:6:48: error: parse error on input ‘{’ (0) | 2018.01.19 |