text: CodeMirror.defineMode("haskell",function(){function e(e,t,r){return t(r),r(e,t)}function t(t,a){if(t.eatWhile(m))return null;var h=t.next();if(d.test(h)){if("{"==h&&t.eat("-")){var p="comment";return t.eat("#")&&(p="meta"),e(t,a,r(p,1))}return null}if("'"==h)return t.eat("\\")?t.next():t.next(),t.eat("'")?"string":"error";if('"'==h)return e(t,a,n);if(o.test(h))return t.eatWhile(f),t.eat(".")?"qualifier":"variable-2";if(i.test(h))return t.eatWhile(f),"variable";if(l.test(h)){if("0"==h){if(t.eat(/[xX]/))return t.eatWhile(u),"integer";if(t.eat(/[oO]/))return t.eatWhile(s),"number"}t.eatWhile(l);var p="number";return t.eat(".")&&(p="number",t.eatWhile(l)),t.eat(/[eE]/)&&(p="number",t.eat(/[-+]/),t.eatWhile(l)),p}if(c.test(h)){if("-"==h&&t.eat(/-/)&&(t.eatWhile(/-/),!t.eat(c)))return t.skipToEnd(),"comment";var p="variable";return":"==h&&(p="variable-2"),t.eatWhile(c),p}return"error"}function r(e,n){return 0==n?t:function(a,i){for(var o=n;!a.eol();){var l=a.next();if("{"==l&&a.eat("-"))++o;else if("-"==l&&a.eat("}")&&(--o,0==o))return i(t),e}return i(r(e,o)),e}}function n(e,r){for(;!e.eol();){var n=e.next();if('"'==n)return r(t),"string";if("\\"==n){if(e.eol()||e.eat(m))return r(a),"string";e.eat("&")||e.next()}}return r(t),"error"}function a(r,a){return r.eat("\\")?e(r,a,n):(r.next(),a(t),"error")}var i=/[a-z_]/,o=/[A-Z]/,l=/[0-9]/,u=/[0-9A-Fa-f]/,s=/[0-7]/,f=/[a-z_A-Z0-9']/,c=/[-!#$%&*+.\/<=>?@\\^|~:]/,d=/[(),;[\]`{}]/,m=/[ \t\v\f]/,h=function(){function e(e){return function(){for(var r=0;r<arguments.length;r++)t[arguments[r]]=e}}var t={};return e("keyword")("case","class","data","default","deriving","do","else","foreign","if","import","in","infix","infixl","infixr","instance","let","module","newtype","of","then","type","where","_"),e("keyword")("..",":","::","=","\\",'"',"<-","->","@","~","=>"),e("builtin")("!!","$!","$","&&","+","++","-",".","/","/=","<","<=","=<<","==",">",">=",">>",">>=","^","^^","||","*","**"),e("builtin")("Bool","Bounded","Char","Double","EQ","Either","Enum","Eq","False","FilePath","Float","Floating","Fractional","Functor","GT","IO","IOError","Int","Integer","Integral","Just","LT","Left","Maybe","Monad","Nothing","Num","Ord","Ordering","Rational","Read","ReadS","Real","RealFloat","RealFrac","Right","Show","ShowS","String","True"),e("builtin")("abs","acos","acosh","all","and","any","appendFile","asTypeOf","asin","asinh","atan","atan2","atanh","break","catch","ceiling","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromEnum","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","init","interact","ioError","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","iterate","last","lcm","length","lex","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","odd","or","otherwise","pi","pred","print","product","properFraction","putChar","putStr","putStrLn","quot","quotRem","read","readFile","readIO","readList","readLn","readParen","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showList","showParen","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","toEnum","toInteger","toRational","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3"),t}();return{startState:function(){return{f:t}},copyState:function(e){return{f:e.f}},token:function(e,t){var r=t.f(e,function(e){t.f=e}),n=e.current();return n in h?h[n]:r},blockCommentStart:"{-",blockCommentEnd:"-}",lineComment:"--"}}),CodeMirror.defineMIME("text/x-haskell","haskell");