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 세션 등에서는 플래그 -XExtensionName 이라는 형식으로 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 |