<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!-- Haskell syntax highlighting by Marcel Martin <mmar@freenet.de> -->
<language name="Haskell" version="1.04" kateversion="2.3" section="Sources" extensions="*.hs" author="Marcel Martin (mmar@freenet.de)" license="">
	<highlighting>
	<list name="keywords">
		<item> case </item>
		<item> class </item>
		<item> data </item>
		<item> deriving </item>
		<item> do </item>
		<item> else </item>
		<item> if </item>
		<item> in </item>
		<item> infixl </item>
		<item> infixr </item>
		<item> instance </item>
		<item> let </item>
		<item> module </item>
		<item> of </item>
		<item> primitive </item>
		<item> then </item>
		<item> type </item>
		<item> where </item>
	</list>
        <list name="infix operators">
		<item> quot </item>
		<item> rem </item>
		<item> div </item>
		<item> mod </item>
		<item> elem </item>
		<item> notElem </item>
		<item> seq </item>
	</list>
	<list name="functions">
		<!--
                These operators are not handled yet.
		<item> !! </item>
		<item> % </item>
		<item> && </item>
		<item> $! </item>
		<item> $ </item>
		<item> * </item>
		<item> ** </item>
		<item> - </item>
		<item> . </item>
		<item> /= </item>
		<item> < </item>
		<item> <= </item>
		<item> =<< </item>
		<item> == </item>
		<item> > </item>
		<item> >= </item>
		<item> >> </item>
		<item> >>= </item>
		<item> ^ </item>
		<item> ^^ </item>
		<item> ++ </item>
		<item> || </item>
		//-->

		<item> FilePath </item>
		<item> IOError </item>
		<item> abs </item>
		<item> acos </item>
		<item> acosh </item>
		<item> all </item>
		<item> and </item>
		<item> any </item>
		<item> appendFile </item>
		<item> approxRational </item>
		<item> asTypeOf </item>
		<item> asin </item>
		<item> asinh </item>
		<item> atan </item>
		<item> atan2 </item>
		<item> atanh </item>
		<item> basicIORun </item>
		<item> break </item>
		<item> catch </item>
		<item> ceiling </item>
		<item> chr </item>
		<item> compare </item>
		<item> concat </item>
		<item> concatMap </item>
		<item> const </item>
		<item> cos </item>
		<item> cosh </item>
		<item> curry </item>
		<item> cycle </item>
		<item> decodeFloat </item>
		<item> denominator </item>
		<item> digitToInt </item>
		<item> div </item>
		<item> divMod </item>
		<item> drop </item>
		<item> dropWhile </item>
		<item> either </item>
		<item> elem </item>
		<item> encodeFloat </item>
		<item> enumFrom </item>
		<item> enumFromThen </item>
		<item> enumFromThenTo </item>
		<item> enumFromTo </item>
		<item> error </item>
		<item> even </item>
		<item> exp </item>
		<item> exponent </item>
		<item> fail </item>
		<item> filter </item>
		<item> flip </item>
		<item> floatDigits </item>
		<item> floatRadix </item>
		<item> floatRange </item>
		<item> floor </item>
		<item> fmap </item>
		<item> foldl </item>
		<item> foldl1 </item>
		<item> foldr </item>
		<item> foldr1 </item>
		<item> fromDouble </item>
		<item> fromEnum </item>
		<item> fromInt </item>
		<item> fromInteger </item>
		<item> fromIntegral </item>
		<item> fromRational </item>
		<item> fst </item>
		<item> gcd </item>
		<item> getChar </item>
		<item> getContents </item>
		<item> getLine </item>
		<item> head </item>
		<item> id </item>
		<item> inRange </item>
		<item> index </item>
		<item> init </item>
		<item> intToDigit </item>
		<item> interact </item>
		<item> ioError </item>
		<item> isAlpha </item>
		<item> isAlphaNum </item>
		<item> isAscii </item>
		<item> isControl </item>
		<item> isDenormalized </item>
		<item> isDigit </item>
		<item> isHexDigit </item>
		<item> isIEEE </item>
		<item> isInfinite </item>
		<item> isLower </item>
		<item> isNaN </item>
		<item> isNegativeZero </item>
		<item> isOctDigit </item>
		<item> isPrint </item>
		<item> isSpace </item>
		<item> isUpper </item>
		<item> iterate </item>
		<item> last </item>
		<item> lcm </item>
		<item> length </item>
		<item> lex </item>
		<item> lexDigits </item>
		<item> lexLitChar </item>
		<item> lines </item>
		<item> log </item>
		<item> logBase </item>
		<item> lookup </item>
		<item> map </item>
		<item> mapM </item>
		<item> mapM_ </item>
		<item> max </item>
		<item> maxBound </item>
		<item> maximum </item>
		<item> maybe </item>
		<item> min </item>
		<item> minBound </item>
		<item> minimum </item>
		<item> mod </item>
		<item> negate </item>
		<item> not </item>
		<item> notElem </item>
		<item> null </item>
		<item> numerator </item>
		<item> odd </item>
		<item> or </item>
		<item> ord </item>
		<item> otherwise </item>
		<item> pi </item>
		<item> pred </item>
		<item> primExitWith </item>
		<item> print </item>
		<item> product </item>
		<item> properFraction </item>
		<item> putChar </item>
		<item> putStr </item>
		<item> putStrLn </item>
		<item> quot </item>
		<item> quotRem </item>
		<item> range </item>
		<item> rangeSize </item>
		<item> read </item>
		<item> readDec </item>
		<item> readFile </item>
		<item> readFloat </item>
		<item> readHex </item>
		<item> readIO </item>
		<item> readInt </item>
		<item> readList </item>
		<item> readLitChar </item>
		<item> readLn </item>
		<item> readOct </item>
		<item> readParen </item>
		<item> readSigned </item>
		<item> reads </item>
		<item> readsPrec </item>
		<item> realToFrac </item>
		<item> recip </item>
		<item> rem </item>
		<item> repeat </item>
		<item> replicate </item>
		<item> return </item>
		<item> reverse </item>
		<item> round </item>
		<item> scaleFloat </item>
		<item> scanl </item>
		<item> scanl1 </item>
		<item> scanr </item>
		<item> scanr1 </item>
		<item> seq </item>
		<item> sequence </item>
		<item> sequence_ </item>
		<item> show </item>
		<item> showChar </item>
		<item> showInt </item>
		<item> showList </item>
		<item> showLitChar </item>
		<item> showParen </item>
		<item> showSigned </item>
		<item> showString </item>
		<item> shows </item>
		<item> showsPrec </item>
		<item> significand </item>
		<item> signum </item>
		<item> sin </item>
		<item> sinh </item>
		<item> snd </item>
		<item> span </item>
		<item> splitAt </item>
		<item> sqrt </item>
		<item> subtract </item>
		<item> succ </item>
		<item> sum </item>
		<item> tail </item>
		<item> take </item>
		<item> takeWhile </item>
		<item> tan </item>
		<item> tanh </item>
		<item> threadToIOResult </item>
		<item> toEnum </item>
		<item> toInt </item>
		<item> toInteger </item>
		<item> toLower </item>
		<item> toRational </item>
		<item> toUpper </item>
		<item> truncate </item>
		<item> uncurry </item>
		<item> undefined </item>
		<item> unlines </item>
		<item> until </item>
		<item> unwords </item>
		<item> unzip </item>
		<item> unzip3 </item>
		<item> userError </item>
		<item> words </item>
		<item> writeFile </item>
		<item> zip </item>
		<item> zip3 </item>
		<item> zipWith </item>
		<item> zipWith3 </item>
	</list>
	<list name="type constructors">
		<item> Bool </item>
		<item> Char </item>
                <item> Double </item>
		<item> Either </item>
		<item> Float </item>
		<item> IO </item>
		<item> Integer </item>
		<item> Int </item>
		<item> Maybe </item>
		<item> Ordering </item>
		<item> Rational </item>
		<item> Ratio </item>
		<item> ReadS </item>
		<item> ShowS </item>
		<item> String </item>

	</list>
	<list name="classes">
		<item> Bounded </item>
		<item> Enum </item>
		<item> Eq </item>
		<item> Floating </item>
		<item> Fractional </item>
		<item> Functor </item>
		<item> Integral </item>
		<item> Ix </item>
		<item> Monad </item>
		<item> Num </item>
		<item> Ord </item>
		<item> Read </item>
		<item> RealFloat </item>
		<item> RealFrac </item>
		<item> Real </item>
		<item> Show </item>
	</list>
	<list name="data constructors">
		<item> EQ </item>
		<item> False </item>
		<item> GT </item>
		<item> Just </item>
		<item> LT </item>
		<item> Left </item>
		<item> Nothing </item>
		<item> Right </item>
		<item> True </item>
	</list>
	<contexts>
		<context attribute="Normal Text" lineEndContext="#stay" name="normal">
			<Detect2Chars attribute="Comment" context="comment_multi_line" char="{" char1="-" />
			<Detect2Chars attribute="Comment" context="comment_single_line" char="-" char1="-" />
			<keyword attribute="Keyword" context="#stay" String="keywords" />
			<keyword attribute="Class" context="#stay" String="classes" />
			<keyword attribute="Type Constructor" context="#stay" String="type constructors" />
			<keyword attribute="Function" context="#stay" String="functions" />
			<keyword attribute="Data Constructor" context="#stay" String="data constructors" />
			<DetectChar attribute="String" context="string" char="&quot;" />
			<DetectChar attribute="Infix Operator" context="infix" char="`"/>
			<RegExpr attribute="Normal Text" context="#stay" String="\w[']+" />
			<DetectChar attribute="Char" context="single_char" char="'" />
			<RegExpr attribute="Function Definition" context="#stay" String="[a-z_]+\w*'*\s*::" />
			<Float attribute="Float" context="#stay" />
			<Int attribute="Decimal" context="#stay" />
		</context>
		<context attribute="Comment" lineEndContext="#pop" name="comment_single_line" />
		<context attribute="Comment" lineEndContext="#stay" name="comment_multi_line">
			<Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
		</context>
		<context attribute="String" lineEndContext="#stay" name="string">
			<RegExpr attribute="String" context="#stay" String="\\." />
			<DetectChar attribute="String" context="#pop" char="&quot;" />
		</context>
		<context attribute="Infix Operator" lineEndContext="#stay" name="infix">
			<DetectChar attribute="Infix Operator" context="#pop" char="`"/>
		</context>
		<context attribute="Char" lineEndContext="#pop" name="single_char">
			<RegExpr attribute="Char" context="#stay" String="\\." />
			<DetectChar attribute="Char" context="#pop" char="'" />
		</context>
		<context attribute="Function Definition" lineEndContext="#pop" name="function_definition">
			<DetectChar attribute="Function Definition" context="#pop" char=";" />
		</context>
	</contexts>
	<itemDatas>
		<itemData name="Normal Text"		defStyleNum="dsNormal"/>
		<itemData name="Keyword" 		defStyleNum="dsKeyword"/>
		<itemData name="Function"		defStyleNum="dsFunction"/>
		<itemData name="Function Definition"	defStyleNum="dsFunction"/>
		<itemData name="Class"			defStyleNum="dsKeyword"/>
		<itemData name="Decimal"		defStyleNum="dsDecVal"/>
		<itemData name="Float"			defStyleNum="dsFloat"/>
		<itemData name="Char"			defStyleNum="dsChar"/>
		<itemData name="String"			defStyleNum="dsString"/>
		<itemData name="Constructor"		defStyleNum="dsOthers"/>
		<itemData name="Comment"		defStyleNum="dsComment"/>
		<itemData name="Data Constructor"	defStyleNum="dsKeyword"/>
		<itemData name="Type Constructor"	defStyleNum="dsDataType"/>
		<itemData name="Infix Operator"		defStyleNum="dsOthers"/>
	</itemDatas>
	</highlighting>
	<general>
		<comments>
			<comment name="singleLine" start="--" />
			<comment name="multiLine" start="{-" end="-}" />
		</comments>
		<keywords casesensitive="1" />
	</general>
</language>
