\lstdefinestyle{haskell}{%
	language=Haskell,
	deletekeywords={%
		Applicative,%
		Bool,%
		Char,%
		Double,%
		Either,%
		Eq,%
		False,%
		Float,%
		Fractional,%
		Functor,%
		Int,%
		Integer,%
		Just,%
		Left,%
		List,%
		Maybe,%
		Monad,%
		Nothing,%
		Num,%
		Right,%
		Show,%
		String,%
		True,%
		concatMap,%
		const,%
		div,%
		error,%
		fail,%
		foldM,%
		foldl,%
		foldr,%
		fst,%
		id,%
		length,%
		map,%
		mapM,%
		pred,%
		print,%
		product,%
		sequence,%
		show,%
		snd,%
		sum,%
		uncurry,%
		undefined,%
		unwords,%
		unzip,%
		zip,%
		zipWith,%
		}
	morekeywords={forall,Q},
	literate=%
		{forall}{{$\forall$}}1
		{\_}{{\raisebox{.15ex}{\_}}}1
		{~}{{\raisebox{-.6ex}{\textasciitilde}}}1
		{\\}{{$\lambda\:$}}1
		{->}{{$\shortrightarrow$}}2
		{<-}{{$\shortleftarrow$}}2
		{=>}{{$\Rightarrow$}}2
		{<=}{{$\Leftarrow$}}2
		{...}{{$\cdots$}}3 %chktex 11
		{\[p|}{{$\llbracket_p$}}2
		{\[d|}{{$\llbracket_d$}}2
		{\[t|}{{$\llbracket_t$}}2
		{\[e|}{{$\llbracket_e$}}2
		{\[dsl|}{{$\llbracket_{dsl}$}}4
		{\[bin|}{{$\llbracket_{bin}$}}4
		{\[|}{{$\llbracket$}}1
		{|\]}{{$\rrbracket$}}1
}
