| 
								
							 | 
							
								<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
							 | 
						
						
						
							| 
								
							 | 
							
								<html>
							 | 
						
						
						
							| 
								
							 | 
							
								<head>
							 | 
						
						
						
							| 
								
							 | 
							
								<meta http-equiv="content-type" content="text/html; charset=UTF-8">
							 | 
						
						
						
							| 
								
							 | 
							
								<title>~/Projects/blag/static/Parser.hs.html</title>
							 | 
						
						
						
							| 
								
							 | 
							
								<meta name="Generator" content="Vim/7.4">
							 | 
						
						
						
							| 
								
							 | 
							
								<meta name="plugin-version" content="vim7.4_v2">
							 | 
						
						
						
							| 
								
							 | 
							
								<meta name="syntax" content="haskell">
							 | 
						
						
						
							| 
								
							 | 
							
								<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=t">
							 | 
						
						
						
							| 
								
							 | 
							
								<meta name="colorscheme" content="onedark">
							 | 
						
						
						
							| 
								
							 | 
							
								<style type="text/css">
							 | 
						
						
						
							| 
								
							 | 
							
								<!--
							 | 
						
						
						
							| 
								
							 | 
							
								pre { white-space: pre-wrap; font-family: 'Iosevka', monospace; color: #ABB2BF; background-color: #282C34; }
							 | 
						
						
						
							| 
								
							 | 
							
								body { font-family: 'Iosevka', monospace; color: #ABB2BF; background-color: #282C34; }
							 | 
						
						
						
							| 
								
							 | 
							
								* { font-size: 1em; }
							 | 
						
						
						
							| 
								
							 | 
							
								input { border: none; margin: 0; padding: 0; font-family: 'Iosevka', monospace; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='1'] { width: 1em; width: 1ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='2'] { width: 2em; width: 2ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='3'] { width: 3em; width: 3ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='4'] { width: 4em; width: 4ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='5'] { width: 5em; width: 5ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='6'] { width: 6em; width: 6ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='7'] { width: 7em; width: 7ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='8'] { width: 8em; width: 8ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='9'] { width: 9em; width: 9ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='10'] { width: 10em; width: 10ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='11'] { width: 11em; width: 11ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='12'] { width: 12em; width: 12ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='13'] { width: 13em; width: 13ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='14'] { width: 14em; width: 14ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='15'] { width: 15em; width: 15ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='16'] { width: 16em; width: 16ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='17'] { width: 17em; width: 17ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='18'] { width: 18em; width: 18ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='19'] { width: 19em; width: 19ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								input[size='20'] { width: 20em; width: 20ch; }
							 | 
						
						
						
							| 
								
							 | 
							
								#oneCharWidth, #oneEmWidth, #oneInputWidth { padding: 0; margin: 0; position: absolute; left: -999999px; visibility: hidden; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em5 input[size='1'] { width: 0.05em; } .em5 input[size='2'] { width: 0.1em; } .em5 input[size='3'] { width: 0.15em; } .em5 input[size='4'] { width: 0.2em; } .em5 input[size='5'] { width: 0.25em; } .em5 input[size='6'] { width: 0.3em; } .em5 input[size='7'] { width: 0.35em; } .em5 input[size='8'] { width: 0.4em; } .em5 input[size='9'] { width: 0.45em; } .em5 input[size='10'] { width: 0.5em; } .em5 input[size='11'] { width: 0.55em; } .em5 input[size='12'] { width: 0.6em; } .em5 input[size='13'] { width: 0.65em; } .em5 input[size='14'] { width: 0.7em; } .em5 input[size='15'] { width: 0.75em; } .em5 input[size='16'] { width: 0.8em; } .em5 input[size='17'] { width: 0.85em; } .em5 input[size='18'] { width: 0.9em; } .em5 input[size='19'] { width: 0.95em; } .em5 input[size='20'] { width: 1.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em10 input[size='1'] { width: 0.1em; } .em10 input[size='2'] { width: 0.2em; } .em10 input[size='3'] { width: 0.3em; } .em10 input[size='4'] { width: 0.4em; } .em10 input[size='5'] { width: 0.5em; } .em10 input[size='6'] { width: 0.6em; } .em10 input[size='7'] { width: 0.7em; } .em10 input[size='8'] { width: 0.8em; } .em10 input[size='9'] { width: 0.9em; } .em10 input[size='10'] { width: 1.0em; } .em10 input[size='11'] { width: 1.1em; } .em10 input[size='12'] { width: 1.2em; } .em10 input[size='13'] { width: 1.3em; } .em10 input[size='14'] { width: 1.4em; } .em10 input[size='15'] { width: 1.5em; } .em10 input[size='16'] { width: 1.6em; } .em10 input[size='17'] { width: 1.7em; } .em10 input[size='18'] { width: 1.8em; } .em10 input[size='19'] { width: 1.9em; } .em10 input[size='20'] { width: 2.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em15 input[size='1'] { width: 0.15em; } .em15 input[size='2'] { width: 0.3em; } .em15 input[size='3'] { width: 0.45em; } .em15 input[size='4'] { width: 0.6em; } .em15 input[size='5'] { width: 0.75em; } .em15 input[size='6'] { width: 0.9em; } .em15 input[size='7'] { width: 1.05em; } .em15 input[size='8'] { width: 1.2em; } .em15 input[size='9'] { width: 1.35em; } .em15 input[size='10'] { width: 1.5em; } .em15 input[size='11'] { width: 1.65em; } .em15 input[size='12'] { width: 1.8em; } .em15 input[size='13'] { width: 1.95em; } .em15 input[size='14'] { width: 2.1em; } .em15 input[size='15'] { width: 2.25em; } .em15 input[size='16'] { width: 2.4em; } .em15 input[size='17'] { width: 2.55em; } .em15 input[size='18'] { width: 2.7em; } .em15 input[size='19'] { width: 2.85em; } .em15 input[size='20'] { width: 3.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em20 input[size='1'] { width: 0.2em; } .em20 input[size='2'] { width: 0.4em; } .em20 input[size='3'] { width: 0.6em; } .em20 input[size='4'] { width: 0.8em; } .em20 input[size='5'] { width: 1.0em; } .em20 input[size='6'] { width: 1.2em; } .em20 input[size='7'] { width: 1.4em; } .em20 input[size='8'] { width: 1.6em; } .em20 input[size='9'] { width: 1.8em; } .em20 input[size='10'] { width: 2.0em; } .em20 input[size='11'] { width: 2.2em; } .em20 input[size='12'] { width: 2.4em; } .em20 input[size='13'] { width: 2.6em; } .em20 input[size='14'] { width: 2.8em; } .em20 input[size='15'] { width: 3.0em; } .em20 input[size='16'] { width: 3.2em; } .em20 input[size='17'] { width: 3.4em; } .em20 input[size='18'] { width: 3.6em; } .em20 input[size='19'] { width: 3.8em; } .em20 input[size='20'] { width: 4.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em25 input[size='1'] { width: 0.25em; } .em25 input[size='2'] { width: 0.5em; } .em25 input[size='3'] { width: 0.75em; } .em25 input[size='4'] { width: 1.0em; } .em25 input[size='5'] { width: 1.25em; } .em25 input[size='6'] { width: 1.5em; } .em25 input[size='7'] { width: 1.75em; } .em25 input[size='8'] { width: 2.0em; } .em25 input[size='9'] { width: 2.25em; } .em25 input[size='10'] { width: 2.5em; } .em25 input[size='11'] { width: 2.75em; } .em25 input[size='12'] { width: 3.0em; } .em25 input[size='13'] { width: 3.25em; } .em25 input[size='14'] { width: 3.5em; } .em25 input[size='15'] { width: 3.75em; } .em25 input[size='16'] { width: 4.0em; } .em25 input[size='17'] { width: 4.25em; } .em25 input[size='18'] { width: 4.5em; } .em25 input[size='19'] { width: 4.75em; } .em25 input[size='20'] { width: 5.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em30 input[size='1'] { width: 0.3em; } .em30 input[size='2'] { width: 0.6em; } .em30 input[size='3'] { width: 0.9em; } .em30 input[size='4'] { width: 1.2em; } .em30 input[size='5'] { width: 1.5em; } .em30 input[size='6'] { width: 1.8em; } .em30 input[size='7'] { width: 2.1em; } .em30 input[size='8'] { width: 2.4em; } .em30 input[size='9'] { width: 2.7em; } .em30 input[size='10'] { width: 3.0em; } .em30 input[size='11'] { width: 3.3em; } .em30 input[size='12'] { width: 3.6em; } .em30 input[size='13'] { width: 3.9em; } .em30 input[size='14'] { width: 4.2em; } .em30 input[size='15'] { width: 4.5em; } .em30 input[size='16'] { width: 4.8em; } .em30 input[size='17'] { width: 5.1em; } .em30 input[size='18'] { width: 5.4em; } .em30 input[size='19'] { width: 5.7em; } .em30 input[size='20'] { width: 6.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em35 input[size='1'] { width: 0.35em; } .em35 input[size='2'] { width: 0.7em; } .em35 input[size='3'] { width: 1.05em; } .em35 input[size='4'] { width: 1.4em; } .em35 input[size='5'] { width: 1.75em; } .em35 input[size='6'] { width: 2.1em; } .em35 input[size='7'] { width: 2.45em; } .em35 input[size='8'] { width: 2.8em; } .em35 input[size='9'] { width: 3.15em; } .em35 input[size='10'] { width: 3.5em; } .em35 input[size='11'] { width: 3.85em; } .em35 input[size='12'] { width: 4.2em; } .em35 input[size='13'] { width: 4.55em; } .em35 input[size='14'] { width: 4.9em; } .em35 input[size='15'] { width: 5.25em; } .em35 input[size='16'] { width: 5.6em; } .em35 input[size='17'] { width: 5.95em; } .em35 input[size='18'] { width: 6.3em; } .em35 input[size='19'] { width: 6.65em; } .em35 input[size='20'] { width: 7.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em40 input[size='1'] { width: 0.4em; } .em40 input[size='2'] { width: 0.8em; } .em40 input[size='3'] { width: 1.2em; } .em40 input[size='4'] { width: 1.6em; } .em40 input[size='5'] { width: 2.0em; } .em40 input[size='6'] { width: 2.4em; } .em40 input[size='7'] { width: 2.8em; } .em40 input[size='8'] { width: 3.2em; } .em40 input[size='9'] { width: 3.6em; } .em40 input[size='10'] { width: 4.0em; } .em40 input[size='11'] { width: 4.4em; } .em40 input[size='12'] { width: 4.8em; } .em40 input[size='13'] { width: 5.2em; } .em40 input[size='14'] { width: 5.6em; } .em40 input[size='15'] { width: 6.0em; } .em40 input[size='16'] { width: 6.4em; } .em40 input[size='17'] { width: 6.8em; } .em40 input[size='18'] { width: 7.2em; } .em40 input[size='19'] { width: 7.6em; } .em40 input[size='20'] { width: 8.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em45 input[size='1'] { width: 0.45em; } .em45 input[size='2'] { width: 0.9em; } .em45 input[size='3'] { width: 1.35em; } .em45 input[size='4'] { width: 1.8em; } .em45 input[size='5'] { width: 2.25em; } .em45 input[size='6'] { width: 2.7em; } .em45 input[size='7'] { width: 3.15em; } .em45 input[size='8'] { width: 3.6em; } .em45 input[size='9'] { width: 4.05em; } .em45 input[size='10'] { width: 4.5em; } .em45 input[size='11'] { width: 4.95em; } .em45 input[size='12'] { width: 5.4em; } .em45 input[size='13'] { width: 5.85em; } .em45 input[size='14'] { width: 6.3em; } .em45 input[size='15'] { width: 6.75em; } .em45 input[size='16'] { width: 7.2em; } .em45 input[size='17'] { width: 7.65em; } .em45 input[size='18'] { width: 8.1em; } .em45 input[size='19'] { width: 8.55em; } .em45 input[size='20'] { width: 9.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em50 input[size='1'] { width: 0.5em; } .em50 input[size='2'] { width: 1.0em; } .em50 input[size='3'] { width: 1.5em; } .em50 input[size='4'] { width: 2.0em; } .em50 input[size='5'] { width: 2.5em; } .em50 input[size='6'] { width: 3.0em; } .em50 input[size='7'] { width: 3.5em; } .em50 input[size='8'] { width: 4.0em; } .em50 input[size='9'] { width: 4.5em; } .em50 input[size='10'] { width: 5.0em; } .em50 input[size='11'] { width: 5.5em; } .em50 input[size='12'] { width: 6.0em; } .em50 input[size='13'] { width: 6.5em; } .em50 input[size='14'] { width: 7.0em; } .em50 input[size='15'] { width: 7.5em; } .em50 input[size='16'] { width: 8.0em; } .em50 input[size='17'] { width: 8.5em; } .em50 input[size='18'] { width: 9.0em; } .em50 input[size='19'] { width: 9.5em; } .em50 input[size='20'] { width: 10.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em55 input[size='1'] { width: 0.55em; } .em55 input[size='2'] { width: 1.1em; } .em55 input[size='3'] { width: 1.65em; } .em55 input[size='4'] { width: 2.2em; } .em55 input[size='5'] { width: 2.75em; } .em55 input[size='6'] { width: 3.3em; } .em55 input[size='7'] { width: 3.85em; } .em55 input[size='8'] { width: 4.4em; } .em55 input[size='9'] { width: 4.95em; } .em55 input[size='10'] { width: 5.5em; } .em55 input[size='11'] { width: 6.05em; } .em55 input[size='12'] { width: 6.6em; } .em55 input[size='13'] { width: 7.15em; } .em55 input[size='14'] { width: 7.7em; } .em55 input[size='15'] { width: 8.25em; } .em55 input[size='16'] { width: 8.8em; } .em55 input[size='17'] { width: 9.35em; } .em55 input[size='18'] { width: 9.9em; } .em55 input[size='19'] { width: 10.45em; } .em55 input[size='20'] { width: 11.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em60 input[size='1'] { width: 0.6em; } .em60 input[size='2'] { width: 1.2em; } .em60 input[size='3'] { width: 1.8em; } .em60 input[size='4'] { width: 2.4em; } .em60 input[size='5'] { width: 3.0em; } .em60 input[size='6'] { width: 3.6em; } .em60 input[size='7'] { width: 4.2em; } .em60 input[size='8'] { width: 4.8em; } .em60 input[size='9'] { width: 5.4em; } .em60 input[size='10'] { width: 6.0em; } .em60 input[size='11'] { width: 6.6em; } .em60 input[size='12'] { width: 7.2em; } .em60 input[size='13'] { width: 7.8em; } .em60 input[size='14'] { width: 8.4em; } .em60 input[size='15'] { width: 9.0em; } .em60 input[size='16'] { width: 9.6em; } .em60 input[size='17'] { width: 10.2em; } .em60 input[size='18'] { width: 10.8em; } .em60 input[size='19'] { width: 11.4em; } .em60 input[size='20'] { width: 12.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em65 input[size='1'] { width: 0.65em; } .em65 input[size='2'] { width: 1.3em; } .em65 input[size='3'] { width: 1.95em; } .em65 input[size='4'] { width: 2.6em; } .em65 input[size='5'] { width: 3.25em; } .em65 input[size='6'] { width: 3.9em; } .em65 input[size='7'] { width: 4.55em; } .em65 input[size='8'] { width: 5.2em; } .em65 input[size='9'] { width: 5.85em; } .em65 input[size='10'] { width: 6.5em; } .em65 input[size='11'] { width: 7.15em; } .em65 input[size='12'] { width: 7.8em; } .em65 input[size='13'] { width: 8.45em; } .em65 input[size='14'] { width: 9.1em; } .em65 input[size='15'] { width: 9.75em; } .em65 input[size='16'] { width: 10.4em; } .em65 input[size='17'] { width: 11.05em; } .em65 input[size='18'] { width: 11.7em; } .em65 input[size='19'] { width: 12.35em; } .em65 input[size='20'] { width: 13.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em70 input[size='1'] { width: 0.7em; } .em70 input[size='2'] { width: 1.4em; } .em70 input[size='3'] { width: 2.1em; } .em70 input[size='4'] { width: 2.8em; } .em70 input[size='5'] { width: 3.5em; } .em70 input[size='6'] { width: 4.2em; } .em70 input[size='7'] { width: 4.9em; } .em70 input[size='8'] { width: 5.6em; } .em70 input[size='9'] { width: 6.3em; } .em70 input[size='10'] { width: 7.0em; } .em70 input[size='11'] { width: 7.7em; } .em70 input[size='12'] { width: 8.4em; } .em70 input[size='13'] { width: 9.1em; } .em70 input[size='14'] { width: 9.8em; } .em70 input[size='15'] { width: 10.5em; } .em70 input[size='16'] { width: 11.2em; } .em70 input[size='17'] { width: 11.9em; } .em70 input[size='18'] { width: 12.6em; } .em70 input[size='19'] { width: 13.3em; } .em70 input[size='20'] { width: 14.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em75 input[size='1'] { width: 0.75em; } .em75 input[size='2'] { width: 1.5em; } .em75 input[size='3'] { width: 2.25em; } .em75 input[size='4'] { width: 3.0em; } .em75 input[size='5'] { width: 3.75em; } .em75 input[size='6'] { width: 4.5em; } .em75 input[size='7'] { width: 5.25em; } .em75 input[size='8'] { width: 6.0em; } .em75 input[size='9'] { width: 6.75em; } .em75 input[size='10'] { width: 7.5em; } .em75 input[size='11'] { width: 8.25em; } .em75 input[size='12'] { width: 9.0em; } .em75 input[size='13'] { width: 9.75em; } .em75 input[size='14'] { width: 10.5em; } .em75 input[size='15'] { width: 11.25em; } .em75 input[size='16'] { width: 12.0em; } .em75 input[size='17'] { width: 12.75em; } .em75 input[size='18'] { width: 13.5em; } .em75 input[size='19'] { width: 14.25em; } .em75 input[size='20'] { width: 15.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em80 input[size='1'] { width: 0.8em; } .em80 input[size='2'] { width: 1.6em; } .em80 input[size='3'] { width: 2.4em; } .em80 input[size='4'] { width: 3.2em; } .em80 input[size='5'] { width: 4.0em; } .em80 input[size='6'] { width: 4.8em; } .em80 input[size='7'] { width: 5.6em; } .em80 input[size='8'] { width: 6.4em; } .em80 input[size='9'] { width: 7.2em; } .em80 input[size='10'] { width: 8.0em; } .em80 input[size='11'] { width: 8.8em; } .em80 input[size='12'] { width: 9.6em; } .em80 input[size='13'] { width: 10.4em; } .em80 input[size='14'] { width: 11.2em; } .em80 input[size='15'] { width: 12.0em; } .em80 input[size='16'] { width: 12.8em; } .em80 input[size='17'] { width: 13.6em; } .em80 input[size='18'] { width: 14.4em; } .em80 input[size='19'] { width: 15.2em; } .em80 input[size='20'] { width: 16.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em85 input[size='1'] { width: 0.85em; } .em85 input[size='2'] { width: 1.7em; } .em85 input[size='3'] { width: 2.55em; } .em85 input[size='4'] { width: 3.4em; } .em85 input[size='5'] { width: 4.25em; } .em85 input[size='6'] { width: 5.1em; } .em85 input[size='7'] { width: 5.95em; } .em85 input[size='8'] { width: 6.8em; } .em85 input[size='9'] { width: 7.65em; } .em85 input[size='10'] { width: 8.5em; } .em85 input[size='11'] { width: 9.35em; } .em85 input[size='12'] { width: 10.2em; } .em85 input[size='13'] { width: 11.05em; } .em85 input[size='14'] { width: 11.9em; } .em85 input[size='15'] { width: 12.75em; } .em85 input[size='16'] { width: 13.6em; } .em85 input[size='17'] { width: 14.45em; } .em85 input[size='18'] { width: 15.3em; } .em85 input[size='19'] { width: 16.15em; } .em85 input[size='20'] { width: 17.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em90 input[size='1'] { width: 0.9em; } .em90 input[size='2'] { width: 1.8em; } .em90 input[size='3'] { width: 2.7em; } .em90 input[size='4'] { width: 3.6em; } .em90 input[size='5'] { width: 4.5em; } .em90 input[size='6'] { width: 5.4em; } .em90 input[size='7'] { width: 6.3em; } .em90 input[size='8'] { width: 7.2em; } .em90 input[size='9'] { width: 8.1em; } .em90 input[size='10'] { width: 9.0em; } .em90 input[size='11'] { width: 9.9em; } .em90 input[size='12'] { width: 10.8em; } .em90 input[size='13'] { width: 11.7em; } .em90 input[size='14'] { width: 12.6em; } .em90 input[size='15'] { width: 13.5em; } .em90 input[size='16'] { width: 14.4em; } .em90 input[size='17'] { width: 15.3em; } .em90 input[size='18'] { width: 16.2em; } .em90 input[size='19'] { width: 17.1em; } .em90 input[size='20'] { width: 18.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em95 input[size='1'] { width: 0.95em; } .em95 input[size='2'] { width: 1.9em; } .em95 input[size='3'] { width: 2.85em; } .em95 input[size='4'] { width: 3.8em; } .em95 input[size='5'] { width: 4.75em; } .em95 input[size='6'] { width: 5.7em; } .em95 input[size='7'] { width: 6.65em; } .em95 input[size='8'] { width: 7.6em; } .em95 input[size='9'] { width: 8.55em; } .em95 input[size='10'] { width: 9.5em; } .em95 input[size='11'] { width: 10.45em; } .em95 input[size='12'] { width: 11.4em; } .em95 input[size='13'] { width: 12.35em; } .em95 input[size='14'] { width: 13.3em; } .em95 input[size='15'] { width: 14.25em; } .em95 input[size='16'] { width: 15.2em; } .em95 input[size='17'] { width: 16.15em; } .em95 input[size='18'] { width: 17.1em; } .em95 input[size='19'] { width: 18.05em; } .em95 input[size='20'] { width: 19.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								.em100 input[size='1'] { width: 1.0em; } .em100 input[size='2'] { width: 2.0em; } .em100 input[size='3'] { width: 3.0em; } .em100 input[size='4'] { width: 4.0em; } .em100 input[size='5'] { width: 5.0em; } .em100 input[size='6'] { width: 6.0em; } .em100 input[size='7'] { width: 7.0em; } .em100 input[size='8'] { width: 8.0em; } .em100 input[size='9'] { width: 9.0em; } .em100 input[size='10'] { width: 10.0em; } .em100 input[size='11'] { width: 11.0em; } .em100 input[size='12'] { width: 12.0em; } .em100 input[size='13'] { width: 13.0em; } .em100 input[size='14'] { width: 14.0em; } .em100 input[size='15'] { width: 15.0em; } .em100 input[size='16'] { width: 16.0em; } .em100 input[size='17'] { width: 17.0em; } .em100 input[size='18'] { width: 18.0em; } .em100 input[size='19'] { width: 19.0em; } .em100 input[size='20'] { width: 20.0em; }
							 | 
						
						
						
							| 
								
							 | 
							
								input.Folded { cursor: default; }
							 | 
						
						
						
							| 
								
							 | 
							
								.Conditional { color: #C678DD; }
							 | 
						
						
						
							| 
								
							 | 
							
								.Operator { color: #C678DD; }
							 | 
						
						
						
							| 
								
							 | 
							
								.Keyword { color: #E06C75; }
							 | 
						
						
						
							| 
								
							 | 
							
								.String { color: #98C379; }
							 | 
						
						
						
							| 
								
							 | 
							
								.Identifier { color: #E06C75; }
							 | 
						
						
						
							| 
								
							 | 
							
								.haskellType { color: #61AFEF; }
							 | 
						
						
						
							| 
								
							 | 
							
								.Structure { color: #E5C07B; }
							 | 
						
						
						
							| 
								
							 | 
							
								.Number { color: #D19A66; }
							 | 
						
						
						
							| 
								
							 | 
							
								-->
							 | 
						
						
						
							| 
								
							 | 
							
								</style>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<script type='text/javascript'>
							 | 
						
						
						
							| 
								
							 | 
							
								<!--
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								/* simulate a "ch" unit by asking the browser how big a zero character is */
							 | 
						
						
						
							| 
								
							 | 
							
								function FixCharWidth() {
							 | 
						
						
						
							| 
								
							 | 
							
								  /* get the hidden element which gives the width of a single character */
							 | 
						
						
						
							| 
								
							 | 
							
								  var goodWidth = document.getElementById("oneCharWidth").clientWidth;
							 | 
						
						
						
							| 
								
							 | 
							
								  /* get all input elements, we'll filter on class later */
							 | 
						
						
						
							| 
								
							 | 
							
								  var inputTags = document.getElementsByTagName("input");
							 | 
						
						
						
							| 
								
							 | 
							
								  var ratio = 5;
							 | 
						
						
						
							| 
								
							 | 
							
								  var inputWidth = document.getElementById("oneInputWidth").clientWidth;
							 | 
						
						
						
							| 
								
							 | 
							
								  var emWidth = document.getElementById("oneEmWidth").clientWidth;
							 | 
						
						
						
							| 
								
							 | 
							
								  if (inputWidth > goodWidth) {
							 | 
						
						
						
							| 
								
							 | 
							
								    while (ratio < 100*goodWidth/emWidth && ratio < 100) {
							 | 
						
						
						
							| 
								
							 | 
							
								      ratio += 5;
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								    document.getElementById("vimCodeElement").className = "em"+ratio;
							 | 
						
						
						
							| 
								
							 | 
							
								  }
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								-->
							 | 
						
						
						
							| 
								
							 | 
							
								</script>
							 | 
						
						
						
							| 
								
							 | 
							
								</head>
							 | 
						
						
						
							| 
								
							 | 
							
								<body onload='FixCharWidth();'>
							 | 
						
						
						
							| 
								
							 | 
							
								<!-- hidden divs used by javascript to get the width of a char -->
							 | 
						
						
						
							| 
								
							 | 
							
								<div id='oneCharWidth'>0</div>
							 | 
						
						
						
							| 
								
							 | 
							
								<div id='oneInputWidth'><input size='1' value='0'></div>
							 | 
						
						
						
							| 
								
							 | 
							
								<div id='oneEmWidth' style='width: 1em;'></div>
							 | 
						
						
						
							| 
								
							 | 
							
								<pre id='vimCodeElement'>
							 | 
						
						
						
							| 
								
							 | 
							
								{-# LANGUAGE LambdaCase #-}
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">module</span> <span class="haskellType">Parser</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  ( <span class="haskellType">Parser</span>()
							 | 
						
						
						
							| 
								
							 | 
							
								  , <span class="Structure">module</span> <span class="haskellType">X</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  , <span class="haskellType">Parser</span><span class="Operator">.</span>any
							 | 
						
						
						
							| 
								
							 | 
							
								  , satisfy
							 | 
						
						
						
							| 
								
							 | 
							
								  , string
							 | 
						
						
						
							| 
								
							 | 
							
								  , digit
							 | 
						
						
						
							| 
								
							 | 
							
								  , number
							 | 
						
						
						
							| 
								
							 | 
							
								  , spaces
							 | 
						
						
						
							| 
								
							 | 
							
								  , reserved
							 | 
						
						
						
							| 
								
							 | 
							
								  , lexeme
							 | 
						
						
						
							| 
								
							 | 
							
								  , (<span class="Operator"><?></span>)
							 | 
						
						
						
							| 
								
							 | 
							
								  , runParser
							 | 
						
						
						
							| 
								
							 | 
							
								  , between ) <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">import</span> <span class="haskellType">Control</span><span class="Operator">.</span><span class="haskellType">Applicative</span> <span class="Structure">as</span> <span class="haskellType">X</span>
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">import</span> <span class="haskellType">Control</span><span class="Operator">.</span><span class="haskellType">Monad</span> <span class="Structure">as</span> <span class="haskellType">X</span>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">import</span> <span class="haskellType">Data</span><span class="Operator">.</span><span class="haskellType">Char</span>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">newtype</span> <span class="haskellType">Parser</span> a
							 | 
						
						
						
							| 
								
							 | 
							
								  <span class="Operator">=</span> <span class="haskellType">Parser</span> { <span class="Identifier">parse</span> <span class="Operator">::</span> <span class="haskellType">String</span> <span class="Operator">-></span> <span class="haskellType">Either</span> <span class="haskellType">String</span> (a, <span class="haskellType">String</span>) }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">runParser</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">String</span> <span class="Operator">-></span> <span class="haskellType">Either</span> <span class="haskellType">String</span> a
							 | 
						
						
						
							| 
								
							 | 
							
								runParser (<span class="haskellType">Parser</span> p) s <span class="Operator">=</span> fst <span class="Operator"><$></span> p s
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								(<span class="Operator"><?></span>) <span class="Operator">::</span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">String</span> <span class="Operator">-></span> <span class="haskellType">Parser</span> a
							 | 
						
						
						
							| 
								
							 | 
							
								p <span class="Operator"><?></span> err <span class="Operator">=</span> p <span class="Operator"><|></span> fail err
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Keyword">infixl</span> <span class="Number">2</span> <span class="Operator"><?></span>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">instance</span> <span class="haskellType">Functor</span> <span class="haskellType">Parser</span> <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  fn <span class="Operator">`fmap`</span> (<span class="haskellType">Parser</span> p) <span class="Operator">=</span> <span class="haskellType">Parser</span> go <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								    go st <span class="Operator">=</span> <span class="Keyword">case</span> p st <span class="Keyword">of</span>
							 | 
						
						
						
							| 
								
							 | 
							
								      <span class="haskellType">Left</span> e            <span class="Operator">-></span> <span class="haskellType">Left</span> e
							 | 
						
						
						
							| 
								
							 | 
							
								      <span class="haskellType">Right</span> (res, str') <span class="Operator">-></span> <span class="haskellType">Right</span> (fn res, str')
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">instance</span> <span class="haskellType">Applicative</span> <span class="haskellType">Parser</span> <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  pure x <span class="Operator">=</span> <span class="haskellType">Parser</span> <span class="Operator">$</span> <span class="Operator">\</span>str <span class="Operator">-></span> <span class="haskellType">Right</span> (x, str)
							 | 
						
						
						
							| 
								
							 | 
							
								  (<span class="haskellType">Parser</span> p) <span class="Operator"><*></span> (<span class="haskellType">Parser</span> p') <span class="Operator">=</span> <span class="haskellType">Parser</span> go <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								    go st <span class="Operator">=</span> <span class="Keyword">case</span> p st <span class="Keyword">of</span>
							 | 
						
						
						
							| 
								
							 | 
							
								      <span class="haskellType">Left</span> e <span class="Operator">-></span> <span class="haskellType">Left</span> e
							 | 
						
						
						
							| 
								
							 | 
							
								      <span class="haskellType">Right</span> (fn, st') <span class="Operator">-></span> <span class="Keyword">case</span> p' st' <span class="Keyword">of</span>
							 | 
						
						
						
							| 
								
							 | 
							
								        <span class="haskellType">Left</span> e' <span class="Operator">-></span> <span class="haskellType">Left</span> e'
							 | 
						
						
						
							| 
								
							 | 
							
								        <span class="haskellType">Right</span> (v, st'') <span class="Operator">-></span> <span class="haskellType">Right</span> (fn v, st'')
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">instance</span> <span class="haskellType">Alternative</span> <span class="haskellType">Parser</span> <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  empty <span class="Operator">=</span> fail <span class="String">"nothing"</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  (<span class="haskellType">Parser</span> p) <span class="Operator"><|></span> (<span class="haskellType">Parser</span> p') <span class="Operator">=</span> <span class="haskellType">Parser</span> go <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								    go st <span class="Operator">=</span> <span class="Keyword">case</span> p st <span class="Keyword">of</span>
							 | 
						
						
						
							| 
								
							 | 
							
								      <span class="haskellType">Left</span> <span class="Operator">_</span>  <span class="Operator">-></span> p' st
							 | 
						
						
						
							| 
								
							 | 
							
								      <span class="haskellType">Right</span> x <span class="Operator">-></span> <span class="haskellType">Right</span> x
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Structure">instance</span> <span class="haskellType">Monad</span> <span class="haskellType">Parser</span> <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  return <span class="Operator">=</span> pure
							 | 
						
						
						
							| 
								
							 | 
							
								  (<span class="haskellType">Parser</span> p) <span class="Operator">>>=</span> f <span class="Operator">=</span> <span class="haskellType">Parser</span> go <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								    go s <span class="Operator">=</span> <span class="Keyword">case</span> p s <span class="Keyword">of</span>
							 | 
						
						
						
							| 
								
							 | 
							
								      <span class="haskellType">Left</span> e <span class="Operator">-></span> <span class="haskellType">Left</span> e
							 | 
						
						
						
							| 
								
							 | 
							
								      <span class="haskellType">Right</span> (x, s') <span class="Operator">-></span> parse (f x) s'
							 | 
						
						
						
							| 
								
							 | 
							
								  fail m <span class="Operator">=</span> <span class="haskellType">Parser</span> go <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								    go <span class="Operator">=</span> <span class="haskellType">Left</span> <span class="Operator">.</span> go'
							 | 
						
						
						
							| 
								
							 | 
							
								    go' []     <span class="Operator">=</span> <span class="String">"expected "</span> <span class="Operator">++</span> m <span class="Operator">++</span> <span class="String">", got to the end of stream"</span>
							 | 
						
						
						
							| 
								
							 | 
							
								    go' (x<span class="Operator">:</span>xs) <span class="Operator">=</span> <span class="String">"expected "</span> <span class="Operator">++</span> m <span class="Operator">++</span> <span class="String">", got '"</span> <span class="Operator">++</span> x<span class="Operator">:</span><span class="String">"'"</span>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">any</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> <span class="haskellType">Char</span>
							 | 
						
						
						
							| 
								
							 | 
							
								any <span class="Operator">=</span> <span class="haskellType">Parser</span> go <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  go []     <span class="Operator">=</span> <span class="haskellType">Left</span> <span class="String">"any: end of file"</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  go (x<span class="Operator">:</span>xs) <span class="Operator">=</span> <span class="haskellType">Right</span> (x,xs)
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">satisfy</span> <span class="Operator">::</span> (<span class="haskellType">Char</span> <span class="Operator">-></span> <span class="haskellType">Bool</span>) <span class="Operator">-></span> <span class="haskellType">Parser</span> <span class="haskellType">Char</span>
							 | 
						
						
						
							| 
								
							 | 
							
								satisfy f <span class="Operator">=</span> <span class="Keyword">do</span> x <span class="Operator"><-</span> <span class="haskellType">Parser</span><span class="Operator">.</span>any
							 | 
						
						
						
							| 
								
							 | 
							
								               <span class="Conditional">if</span> f x
							 | 
						
						
						
							| 
								
							 | 
							
								                 <span class="Conditional">then</span> return x
							 | 
						
						
						
							| 
								
							 | 
							
								                 <span class="Conditional">else</span> fail <span class="String">"a solution to the function"</span>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">char</span> <span class="Operator">::</span> <span class="haskellType">Char</span> <span class="Operator">-></span> <span class="haskellType">Parser</span> <span class="haskellType">Char</span>
							 | 
						
						
						
							| 
								
							 | 
							
								char c <span class="Operator">=</span> satisfy (c <span class="Operator">==</span>) <span class="Operator"><?></span> <span class="String">"literal "</span> <span class="Operator">++</span> [c]
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">oneOf</span> <span class="Operator">::</span> <span class="haskellType">String</span> <span class="Operator">-></span> <span class="haskellType">Parser</span> <span class="haskellType">Char</span>
							 | 
						
						
						
							| 
								
							 | 
							
								oneOf s <span class="Operator">=</span> satisfy (<span class="Operator">`elem`</span> s) <span class="Operator"><?></span> <span class="String">"one of '"</span> <span class="Operator">++</span> s <span class="Operator">++</span> <span class="String">"'"</span>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">string</span> <span class="Operator">::</span> <span class="haskellType">String</span> <span class="Operator">-></span> <span class="haskellType">Parser</span> <span class="haskellType">String</span>
							 | 
						
						
						
							| 
								
							 | 
							
								string [] <span class="Operator">=</span> return []
							 | 
						
						
						
							| 
								
							 | 
							
								string (x<span class="Operator">:</span>xs) <span class="Operator">=</span> <span class="Keyword">do</span> char   x
							 | 
						
						
						
							| 
								
							 | 
							
								                   string xs
							 | 
						
						
						
							| 
								
							 | 
							
								                   return <span class="Operator">$</span> x<span class="Operator">:</span>xs
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">natural</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> <span class="haskellType">Integer</span>
							 | 
						
						
						
							| 
								
							 | 
							
								natural <span class="Operator">=</span> read <span class="Operator"><$></span> some (satisfy isDigit)
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">lexeme</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> a
							 | 
						
						
						
							| 
								
							 | 
							
								lexeme <span class="Operator">=</span> (<span class="Operator"><*</span> spaces)
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">reserved</span> <span class="Operator">::</span> <span class="haskellType">String</span> <span class="Operator">-></span> <span class="haskellType">Parser</span> <span class="haskellType">String</span>
							 | 
						
						
						
							| 
								
							 | 
							
								reserved <span class="Operator">=</span> lexeme <span class="Operator">.</span> string
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">spaces</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> <span class="haskellType">String</span>
							 | 
						
						
						
							| 
								
							 | 
							
								spaces <span class="Operator">=</span> many <span class="Operator">$</span> oneOf <span class="String">" \n\r"</span>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">digit</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> <span class="haskellType">Char</span>
							 | 
						
						
						
							| 
								
							 | 
							
								digit <span class="Operator">=</span> satisfy isDigit
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">number</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> <span class="haskellType">Int</span>
							 | 
						
						
						
							| 
								
							 | 
							
								number <span class="Operator">=</span> <span class="Keyword">do</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  s <span class="Operator"><-</span> string <span class="String">"-"</span> <span class="Operator"><|></span> empty
							 | 
						
						
						
							| 
								
							 | 
							
								  cs <span class="Operator"><-</span> some digit
							 | 
						
						
						
							| 
								
							 | 
							
								  return <span class="Operator">$</span> read (s <span class="Operator">++</span> cs)
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">between</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> b <span class="Operator">-></span> <span class="haskellType">Parser</span> c <span class="Operator">-></span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> a
							 | 
						
						
						
							| 
								
							 | 
							
								between o c x <span class="Operator">=</span> o <span class="Operator">*></span> x <span class="Operator"><*</span> c
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">contents</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> a
							 | 
						
						
						
							| 
								
							 | 
							
								contents x <span class="Operator">=</span> spaces <span class="Operator">*></span> x <span class="Operator"><*</span> spaces
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">sep</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> b <span class="Operator">-></span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> [a]
							 | 
						
						
						
							| 
								
							 | 
							
								sep s c <span class="Operator">=</span> sep1 s c <span class="Operator"><|></span> return []
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">sep1</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> b <span class="Operator">-></span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> [a]
							 | 
						
						
						
							| 
								
							 | 
							
								sep1 s c <span class="Operator">=</span> <span class="Keyword">do</span> x <span class="Operator"><-</span> c
							 | 
						
						
						
							| 
								
							 | 
							
								              xs <span class="Operator"><-</span> many <span class="Operator">$</span> s <span class="Operator">>></span> c
							 | 
						
						
						
							| 
								
							 | 
							
								              return <span class="Operator">$</span> x<span class="Operator">:</span>xs
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">option</span> <span class="Operator">::</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> a
							 | 
						
						
						
							| 
								
							 | 
							
								option x p <span class="Operator">=</span> p <span class="Operator"><|></span> return x
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">optionMaybe</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> (<span class="haskellType">Maybe</span> a)
							 | 
						
						
						
							| 
								
							 | 
							
								optionMaybe p <span class="Operator">=</span> option <span class="haskellType">Nothing</span> <span class="Operator">$</span> <span class="haskellType">Just</span> <span class="Operator"><$></span> p
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">optional</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> a <span class="Operator">-></span> <span class="haskellType">Parser</span> ()
							 | 
						
						
						
							| 
								
							 | 
							
								optional p <span class="Operator">=</span> void p <span class="Operator"><|></span> return ()
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<span class="Identifier">eof</span> <span class="Operator">::</span> <span class="haskellType">Parser</span> ()
							 | 
						
						
						
							| 
								
							 | 
							
								eof <span class="Operator">=</span> <span class="haskellType">Parser</span> go <span class="Structure">where</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  go (x<span class="Operator">:_</span>) <span class="Operator">=</span> <span class="haskellType">Left</span> <span class="Operator">$</span> <span class="String">"expected eof, got '"</span> <span class="Operator">++</span> x<span class="Operator">:</span><span class="String">"'"</span>
							 | 
						
						
						
							| 
								
							 | 
							
								  go []    <span class="Operator">=</span> <span class="haskellType">Right</span> ((), [])
							 | 
						
						
						
							| 
								
							 | 
							
								</pre>
							 | 
						
						
						
							| 
								
							 | 
							
								</body>
							 | 
						
						
						
							| 
								
							 | 
							
								</html>
							 | 
						
						
						
							| 
								
							 | 
							
								<!-- vim: set foldmethod=manual : -->
							 |