2015-12-20 4 views
3

я увидел исходный код на Haskell, и в начале исходного файла, он включал в себя несколько вещей, как:Какова цель ключевого слова LANGUAGE в Haskell?

{-# LANGUAGE DeriveFunctor #-} 
{-# LANGUAGE BangPatterns #-} 
{-# LANGUAGE DeriveTraversable #-} 
{-# LANGUAGE DeriveFoldable #-} 

Я знаю, что комментарии в Haskell стат с {- и заканчиваться -}, но это явно что-то остальное. Какова цель этого? Это похоже на аналогичные include операторы или макросы в C.

+1

Комментарии, которые имеют эти '#' между ними, как прагмы. Они имеют эффект. И есть больше, чем «LANGUAGE» (например, «SPECIALIZE», «INLINE», «MINIMAL» и т. Д.). Посмотрите [здесь] (https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/pragmas.html). – MasterMastic

ответ

6

Цель состоит в том, чтобы включить языковые расширения. Это прагма компилятора. Компилятор GHC поддерживает множество языковых расширений. GHC manual содержит пояснения к каждому расширению и примерам.

+5

Возможно, стоит отметить, что прагмы «LANGUAGE» предназначены для полупортации. В настоящее время это не очень актуально, но это было, когда Hugs, NHC и т. Д. Были живы. – dfeuer

Смежные вопросы