# Haskell language definition file
#
# Author: Andre Simon
#   Mail: andre.simon1@gmx.de
#   Date: 21.11.2002
# Update: 08.06.2009 added ghc keywords
# ------------------------------------------
# This file is a part of highlight, a free source code converter released under the GPL.
#
# The file is used to describe keywords and special symbols of programming languages.
# See README in the highlight directory for details.
#
# New definition files for future releases of highlight are always appreciated ;)
#
# ----------
# andre.simon1@gmx.de
# http:/www.andre-simon.de/


$DESCRIPTION=Haskell

$KEYWORDS(kwa)= absolute value addition and array boolean ceiling character concatenate
concatenation constant continuation passing style cosine cosine hyperbolic cosine
hyperbolic inverse cosine inverse division empty equality even floor function
composition index lazy evaluation length list list calculation list construction
list insertion list item modulo monad multiplication nint odd or order power
round sine sine hyperbolic sine hyperbolic inverse sine inverse split string
subtraction sum tangent tangent hyperbolic tangent hyperbolic inverse tangent
inverse trigonometry truncation tuple True
False

$KEYWORDS(kwb)=Array Bool BufferMode CalendarTime Char ClockTime Complex Complex Day Double Either
ExitCode FilePath Float Handle HandlePosn Int Integer IO IOError IOMode Maybe Month
Ordering Permissions Ratio Rational Rational Read ReadS SeekMode Show ShowS StdGen
String TimeDiff  TimeLocale

$KEYWORDS(kwc)=abs accum accumArray acos acosh addToClockTime all and any ap appendFile
approxRational array asin asinh assocs asTypeOf atan atan2 atanh bounds bracket
bracket_ break calendarTimeToString catch catMaybes ceiling chr cis compare concat
concatMap conjugate const cos cosh cpuTimePrecision createDirectory curry cycle
decodeFloat defaultTimeLocale delete deleteBy denominator diffClockTimes digitToInt
div divMod doesDirectoryExist doesFileExist drop dropWhile either elem elemIndex
elemIndices elems encodeFloat enumFrom enumFromThen enumFromThenTo enumFromTo error
even executable exitFailure exitWith exp exponent fail filter filterM find findIndex
findIndices flip floatDigits floatRadix floatRange floatToDigits floor fmap foldl
foldl1 foldM foldr foldr1 formatCalendarTime fromEnum fromInteger fromIntegral
fromJust fromMaybe fromRat fromRational fst gcd genericDrop genericIndex genericLength
genericReplicate genericSplitAt genericTake getArgs getChar getClockTime getContents
getCPUTime getCurrentDirectory getDirectoryContents getEnv getLine getModificationTime
getPermissions getProgName getStdGen getStdRandom group groupBy guard hClose head
hFileSize hFlush hGetBuffering hGetChar hGetContents hGetLine hGetPosn hIsClosed
hIsEOF hIsOpen hIsReadable hIsSeekable hIsWritable hLookAhead hPrint hPutChar hPutStr
hPutStrLn hReady hSeek hSetBuffering hSetPosn hWaitForInput id imagPart index indices
init inits inRange insert insertBy interact intersect intersectBy intersperse
intToDigit ioeGetErrorString ioeGetFileName ioeGetHandle ioError isAlpha isAlphaNum
isAlreadyExistsError isAlreadyInUseError isAscii isControl isDenormalized isDigit
isDoesNotExistError isEOF isEOFError isFullError isHexDigit isIEEE isIllegalOperation
isInfinite isJust isLatin1 isLower isNaN isNegativeZero isNothing isOctDigit
isPermissionError isPrefixOf isPrint isSpace isSuffixOf isUpper isUserError iterate
ixmap join last lcm length lex lexDigits lexLitChar liftM liftM2 liftM3 liftM4 liftM5
lines listArray listToMaybe log logBase lookup magnitude map mapAccumL mapAccumR
mapAndUnzipM mapM mapM_ mapMaybe max maxBound maximum maximumBy maybe maybeToList min
minBound minimum minimumBy mkPolar mkStdGen mod msum negate newStdGen next not notElem
nub nubBy null numerator odd openFile or ord otherwise partition phase pi polar pred
print product properFraction putChar putStr putStrLn quot quotRem random randomIO
randomR randomRIO randomRs randoms range rangeSize read readable readDec readFile
readFloat readHex readInt readIO readList readLitChar readLn readOct readParen reads
readSigned readsPrec realPart realToFrac recip rem removeDirectory removeFile
renameDirectory renameFile repeat replicate return reverse round scaleFloat scanl
scanl1 scanr scanr1 searchable seq sequence sequence_ setCurrentDirectory
setPermissions setStdGen show showChar showEFloat showFFloat showFloat showGFloat
showInt showList showLitChar showParen shows showSigned showsPrec showString
significand signum sin sinh snd sort sortBy split splitAt sqrt stderr stdin stdout
subtract succ sum system tail tails take takeWhile tan tanh toCalendarTime toClockTime
toEnum toInteger toLower toRational toUpper toUTCTime transpose truncate try uncurry
undefined unfoldr union unionBy unless unlines until unwords unzip unzip3 unzip4
unzip5 unzip6 unzip7 userError when words writable writeFile zip zip3 zip4 zip5 zip6
zip7 zipWith zipWith3 zipWith4 zipWith5 zipWith6 zipWith7 zipWithM zipWithM_

#GHC keywords
$KEYWORDS(kwd)= as case of class data default deriving do forall foreign hiding
if then else import infix infixl infixr instance let in mdo module newtype
qualified type where

$STRINGDELIMITERS="

$SL_COMMENT=--
$ML_COMMENT={- -}

$IGNORECASE=false

$SYMBOLS= ( ) [ ]  { } , ; : & | < > ! = / * % + - . ' # @ $ \
