packages feed

regexdot 0.11.1.2 → 0.12.0.1

raw patch · 15 files changed

+125/−96 lines, 15 filesdep +data-defaultdep ~toolshedPVP ok

version bump matches the API change (PVP)

Dependencies added: data-default

Dependency ranges changed: toolshed

API changes (from Hackage documentation)

- RegExDot.CompilationOptions: instance ToolShed.Defaultable.Defaultable RegExDot.CompilationOptions.CompilationOptions
- RegExDot.ExecutionOptions: instance ToolShed.Defaultable.Defaultable RegExDot.ExecutionOptions.ExecutionOptions
- RegExDot.RegEx: deconstructAlternatives :: Alternatives m -> [ExtendedRegEx m]
+ RegExDot.BracketExpressionMember: infix 4 =~
+ RegExDot.CompilationOptions: instance Data.Default.Class.Default RegExDot.CompilationOptions.CompilationOptions
+ RegExDot.ConsumptionProfile: infixr 2 <>
+ RegExDot.ConsumptionProfile: infixr 5 |+|
+ RegExDot.DSL: infixr 5 <~>
+ RegExDot.ExecutionOptions: instance Data.Default.Class.Default RegExDot.ExecutionOptions.ExecutionOptions
+ RegExDot.RegEx: [deconstructAlternatives] :: Alternatives m -> [ExtendedRegEx m]
+ RegExDot.RegEx: infix 4 /~
+ RegExDot.Repeatable: infix 6 ^#

Files

+ .ghci view
@@ -0,0 +1,1 @@+:set -isrc-lib:dist/build/autogen -optP-include -optPdist/build/autogen/cabal_macros.h
README.markdown view
@@ -1,7 +1,9 @@-# **RegExDot**.+# **RegExDot** -This is **RegExDot**, a polymorphic regex-engine.+[![Hackage](https://img.shields.io/hackage/v/regexdot.svg)](https://hackage.haskell.org/package/regexdot) [![Build Status](https://travis-ci.org/functionalley/RegExDot.svg?branch=master)](https://travis-ci.org/functionalley/RegExDot) +This is "**RegExDot**", a polymorphic regex-engine.+ ## Installation  It can be built and installed using [Cabal](https://www.haskell.org/cabal/users-guide/installing-packages.html).@@ -12,11 +14,11 @@  ## License -For information on copying and distributing this package, see the file **LICENSE** in this directory.+For information on copying and distributing this package, see the file "**LICENSE**" in this directory.  ## Bug-reporting -Bug-reports should be emailed to <regexdot *at* functionalley *dot* eu>.+Bug-reports should be emailed to <regexdot@functionalley.eu>.  ## Author 
changelog.markdown view
@@ -1,53 +1,75 @@-# 2010-11-18 Dr. Alistair Ward <regexdot at functionalley dot eu>+# 2010-11-18 Dr. Alistair Ward <regexdot@functionalley.eu>  ## 0.9.0.0-	* First version of the package.+* First version of the package.+ ## 0.10.0.0-	* Reacted to major-number changes in the package **ToolShed-0.10.0.0**.-	* Created **src/RegExDot/** sub-directory & then modified module-names accordingly.-	* Pacified **hlint**.-	* Added a makefile.-	* Removed awkward unary operators from **Repeatable.hs**.-	* Qualified identifiers used in error-messages.+* Reacted to major-number changes in the package "**ToolShed-0.10.0.0**".+* Created sub-directory "**src/RegExDot/**" & then modified module-names accordingly.+* Pacified **hlint**.+* Added a makefile.+* Removed awkward unary operators from **Repeatable.hs**.+* Qualified identifiers used in error-messages.+ ## 0.10.0.1-	* Ported to ghc-7.0.1:-		Used definitions of `NFData` & `rnf` from new package **deepseq**, rather than **parallel**.-		Replaced reference to the deprecated function `Control.Parallel.Strategies.parFlatMap` with `concat . Control.Parallel.Strategies.parMap`.+* Ported to **ghc-7.0.1**:+	+ Used definitions of `NFData` & `rnf` from new package "**deepseq**", rather than "**parallel**".+	+ Replaced reference to the deprecated function `Control.Parallel.Strategies.parFlatMap` with `concat . Control.Parallel.Strategies.parMap`.+ ## 0.10.1.0-	* Set @threaded@ flag to @True@ by default.-	* Replaced use of @threaded@-flag in source-code, with CABAL CPP-macro.-	* Relocated **RegExDot.Options** to **ToolShed.Options**.+* Set @threaded@ flag to @True@ by default.+* Replaced use of @threaded@-flag in source-code, with CABAL CPP-macro.+* Relocated module "**RegExDot.Options**" to "**ToolShed.Options**".+ ## 0.10.2.0-	* Renamed package from **RegExDot** to **regexdot**, for compatibility with Debian's *.deb*-format.+* Renamed package "**RegExDot**" to "**regexdot**", for compatibility with Debian's *.deb*-format.+ ## 0.10.2.1-	* Added manually controlled **llvm** flag to the *.cabal*-file.-	* Changed identifier for type-parameters, to better reflect its role.-	* Reacted to the creation of module **ToolShed.Defaultable**.-	* Uploaded to [Hackage](http://hackage.haskell.org/packages/hackage.html).+* Added manually controlled flag "**llvm**" to the *.cabal*-file.+* Changed identifier for type-parameters, to better reflect its role.+* Reacted to the creation of module "**ToolShed.Defaultable**".+* Uploaded to [Hackage](http://hackage.haskell.org/package/regexdot).+ ## 0.10.2.2-	* Amended the *.cabal*-file to more correctly specify dependency on package **toolshed**.-	* Used new module **ToolShed.Pair** from package **toolshed-0.12.0.0**.-	* Guarded **eager-blackholing** flag in the *.cabal*-file.+* Amended the *.cabal*-file to more correctly specify dependency on package "**toolshed**".+* Used new module "**ToolShed.Pair**" from package "**toolshed-0.12.0.0**".+* Guarded flag "**eager-blackholing**" in the *.cabal*-file.+ ## 0.11.0.0-	* Replaced `(+ 1)` and `(- 1)` with the faster calls `succ` and `pred`, in **RegExDot.RegEx**.-	* Reacted to new module-hierarchy, creation of new module **ToolShed.Data.List.Splits** and addition of method `ToolShed.SelfValidate.getErrors`, in **toolshed-0.13.0.0**, and used it to improved error-reporting in `instance Read RegExDot.RegEx.ExtendedRegEx`.-	* Minor reworking of `RegExDot.Repeatable.repeatableParser`.-	* Replaced `System` with `System.Environment` and `System.Exit`.+* Replaced `(+ 1)` and `(- 1)` with the faster calls `succ` and `pred`, in module "**RegExDot.RegEx**".+* Reacted to; new module-hierarchy, creation of new module "**ToolShed.Data.List.Splits**", and addition of method `ToolShed.SelfValidate.getErrors` in package "**toolshed-0.13.0.0**", and used it to improved error-reporting in `instance Read RegExDot.RegEx.ExtendedRegEx`.+* Minor reworking of `RegExDot.Repeatable.repeatableParser`.+* Replaced `System` with `System.Environment` and `System.Exit`.+ ## 0.11.0.1-	* Added class `Eq` to the context of `RegExDot.RegEx.safeReciprocal`, for migration to **ghc-7.4**.+* Added class `Eq` to the context of `RegExDot.RegEx.safeReciprocal`, for migration to **ghc-7.4**.+ ## 0.11.1.0-	* Removed comments referring to deleted module **ToolShed.Unsafe**, from **RegExDot.RegEx**.-	* Removed `Show` from the context of functions in **RegExDot.RegEx**-	* Exported a new constant `RegExDot.Anchor.unanchored`.-	* Refactored `RegExDot.ConsumptionProfile.withinConsumptionBounds`.+* Removed comments referring to deleted module "**ToolShed.Unsafe**", from **RegExDot.RegEx**.+* Removed `Show` from the context of functions in module "**RegExDot.RegEx**".+* Exported a new constant `RegExDot.Anchor.unanchored`.+* Refactored `RegExDot.ConsumptionProfile.withinConsumptionBounds`.+ ## 0.11.1.1-	* Tested with **haskell-platform-2013.2.0.0**.-	* Replaced preprocessor-directives with **build-depends** constraints in the *.cabal*-file.-	* In function `RegExDot.RegEx.findMatch.findMatchSlave.matchPairList`, changed `fromIntegral` (which required a type-signature) to `toRational`.-	* Either replaced instances of `(<$>)` with `fmap` to avoid ambiguity between **Control.Applicative** & **Prelude** which (from **base-4.8**) also exports this symbol, or hid the symbol when importing the **Prelude**..+* Tested with **haskell-platform-2013.2.0.0**.+* Replaced preprocessor-directives with **build-depends** constraints in the *.cabal*-file.+* In function `RegExDot.RegEx.findMatch.findMatchSlave.matchPairList`, changed `fromIntegral` (which required a type-signature) to `toRational`.+* Either replaced instances of `(<$>)` with `fmap` to avoid ambiguity between modules "**Control.Applicative**" & "**Prelude**" which (from package "**base-4.8**") also exports this symbol, or hid the symbol when importing the module "**Prelude**".+ ## 0.11.1.2-	* Added **Default-language**-specification to the *.cabal*-file.-	* Added file **README.markdown**.-	* Converted this file to markdown-format.-	* Renamed directory **src/** to **src-lib/** for consistency with other packages. -	* Used **CPP** to control the import of symbols from **Control.Applicative**.+* Added "**Default-language**"-specification to the *.cabal*-file.+* Added file "**README.markdown**".+* Converted this file to markdown-format.+* Renamed directory "**src/**" to "**src-lib/**" for consistency with other packages. +* Used **CPP** to control the import of symbols from **Control.Applicative**.++## 0.12.0.0+* Corrected the markdown-syntax in this file.+* Uploaded to [GitHub](https://github.com/functionalley/RegExDot.git).+* Added file **.travis.yml** to control testing by <https://docs.travis-ci.com>.+* Added file **.ghci**.+* Replaced use of module **ToolShed.Defaultable** with **Data.Default**.+* Reimplemented **RegExDot.RegEx.deconstruct** using record-syntax.+* Tested with **ghc-8.0.1**.+## 0.12.0.1+* Checked that pre-processor macros are defined.
@@ -1,5 +1,5 @@ Author:-	Dr. Alistair Ward <regexdot at functionalley dot eu>.+	Dr. Alistair Ward <regexdot@functionalley.eu>.  Copyright: 	Copyright (C) 2010-2011 Dr. Alistair Ward. All Rights Reserved.
regexdot.cabal view
@@ -14,7 +14,7 @@ -- along with RegExDot.  If not, see <http://www.gnu.org/licenses/>.  Name:		regexdot-Version:	0.11.1.2+Version:	0.12.0.1 Cabal-version:	>= 1.10 Copyright:	(C) 2010-2015 Dr. Alistair Ward License:	GPL@@ -25,17 +25,22 @@ Build-type:	Simple Description:	Provides a portable, POSIX, extended regex-engine, designed to process a list of /arbitrary/ objects. Category:	Search, Regex-Tested-with:	GHC == 6.10, GHC == 6.12, GHC == 7.0, GHC == 7.4, GHC == 7.6, GHC == 7.8, GHC == 7.10+Tested-with:	GHC == 7.4, GHC == 7.6, GHC == 7.8, GHC == 7.10.1, GHC == 8.0.1 Homepage:	http://functionalley.eu/RegExDot/regExDot.html-Maintainer:	mailto <colon> regexdot <at> functionalley <dot> eu-Bug-reports:	mailto <colon> regexdot <at> functionalley <dot> eu+Maintainer:	mailto:regexdot@functionalley.eu+Bug-reports:	mailto:regexdot@functionalley.eu  -- None of these files are needed at run-time. Extra-source-files:+    .ghci     changelog.markdown     copyright     README.markdown +source-repository head+    type:	git+    location:	https://github.com/functionalley/RegExDot+ -- Enable using: 'cabal configure -f llvm'. flag llvm     Description:	Whether the 'llvm' compiler-backend has been installed and is required for code-generation.@@ -44,7 +49,7 @@  Library     Default-language:	Haskell2010-    GHC-options:	-Wall -O2 -fno-warn-tabs+    GHC-options:	-O2 -Wall -fno-warn-tabs     Hs-source-dirs:	src-lib      Exposed-modules:@@ -71,15 +76,16 @@      Build-depends:         base == 4.*,+        data-default,         deepseq >= 1.1,         parallel >= 3.0,         parsec == 3.*,-        toolshed >= 0.13+        toolshed >= 0.17      if impl(ghc >= 7.4.1)-        GHC-prof-options:	-prof -fprof-auto -fprof-cafs+        GHC-prof-options:	-fprof-auto -fprof-cafs     else-        GHC-prof-options:	-prof -auto-all -caf-all+        GHC-prof-options:	-auto-all -caf-all      if impl(ghc >= 7.0) && flag(llvm)         GHC-options:	-fllvm
src-lib/RegExDot/CompilationOptions.hs view
@@ -1,5 +1,5 @@ {--	Copyright (C) 2010 Dr. Alistair Ward+	Copyright (C) 2010-2015 Dr. Alistair Ward  	This program is free software: you can redistribute it and/or modify 	it under the terms of the GNU General Public License as published by@@ -32,7 +32,7 @@ 	CompilationOptions(..) ) where -import qualified	ToolShed.Defaultable+import qualified	Data.Default import qualified	ToolShed.Options  -- | The switch(es) used to control compilation of the /regex/-engine.@@ -40,8 +40,8 @@ 	complyStrictlyWithPosix	:: Bool		-- ^ Define the offset of captured data, corresponding to a sub-expression which matched zero times, as the artificial value @-1@ specified by POSIX. } deriving (Eq, Show) -instance ToolShed.Defaultable.Defaultable CompilationOptions	where-	defaultValue	= ToolShed.Options.blankValue { complyStrictlyWithPosix	= True }+instance Data.Default.Default CompilationOptions	where+	def	= ToolShed.Options.blankValue { complyStrictlyWithPosix	= True }  instance ToolShed.Options.Options CompilationOptions	where 	blankValue	= MkCompilationOptions { complyStrictlyWithPosix = undefined }
src-lib/RegExDot/Consumer.hs view
@@ -53,7 +53,7 @@ {- | 	* A measure of the complexity of a /regex/, which has some baring on either the time-complexity or the space-complexity of the solution. -	* <http://en.wikipedia.org/wiki/Star_height>+	* <https://en.wikipedia.org/wiki/Star_height> -} type StarHeight	= Int 
src-lib/RegExDot/ConsumptionProfile.hs view
@@ -49,7 +49,7 @@ import qualified	RegExDot.ConsumptionBounds	as ConsumptionBounds import qualified	ToolShed.SelfValidate -#if !MIN_VERSION_base(4,8,0)+#if !defined(MIN_VERSION_base) || !MIN_VERSION_base(4,8,0) import	Control.Applicative((<$>), (<*>)) #endif @@ -68,13 +68,11 @@ } deriving (Eq, Read, Show)  instance ToolShed.SelfValidate.SelfValidator ConsumptionProfile	where-	getErrors c@(-		MkConsumptionProfile {-			consumptionBounds	= (fewest, most),-			hasSpecificRequirement	= hasSpecificRequirement',-			canConsumeAnything	= canConsumeAnything'-		}-	 ) = ToolShed.SelfValidate.extractErrors [+	getErrors c@ MkConsumptionProfile {+		consumptionBounds	= (fewest, most),+		hasSpecificRequirement	= hasSpecificRequirement',+		canConsumeAnything	= canConsumeAnything'+	} = ToolShed.SelfValidate.extractErrors [ 		(fewest < 0, "Negative fewest=" ++ show fewest ++ "."), 		( 			case most of
src-lib/RegExDot/ExecutionOptions.hs view
@@ -1,5 +1,5 @@ {--	Copyright (C) 2010 Dr. Alistair Ward+	Copyright (C) 2010-2015 Dr. Alistair Ward  	This program is free software: you can redistribute it and/or modify 	it under the terms of the GNU General Public License as published by@@ -35,7 +35,7 @@ 	setVerbose ) where -import qualified	ToolShed.Defaultable+import qualified	Data.Default import qualified	ToolShed.Options  -- | The switches used to control execution of the /regex/-engine.@@ -57,8 +57,8 @@ 	validateMinConsumptionOfAlternatives	:: Bool		-- ^ When the number of repetitions of a /RegExDot.RegEx.CaptureGroup/ is precisely specified, check whether the resulting minimum data-requirement is available. } deriving (Eq, Show) -instance ToolShed.Defaultable.Defaultable ExecutionOptions	where-	defaultValue	= setVerbose False $ ToolShed.Options.blankValue {+instance Data.Default.Default ExecutionOptions	where+	def = setVerbose False $ ToolShed.Options.blankValue { 		abortTrialRepetitionsOnInherentFailure	= True,		-- Regrettably, this slightly reduces performance for most non-pathological patterns. 		catchIncompatibleAnchors		= True, 		checkExistenceOfInelasticTail		= True,
src-lib/RegExDot/Meta.hs view
@@ -1,5 +1,5 @@ {--	Copyright (C) 2010 Dr. Alistair Ward+	Copyright (C) 2010-2015 Dr. Alistair Ward  	This program is free software: you can redistribute it and/or modify 	it under the terms of the GNU General Public License as published by
src-lib/RegExDot/RegEx.hs view
@@ -50,7 +50,7 @@   [@REFERENCES@] -	* <http://en.wikipedia.org/wiki/Regular_expression>+	* <https://en.wikipedia.org/wiki/Regular_expression>  	* <http://swtch.com/~rsc/regexp/regexp1.html> @@ -121,7 +121,10 @@ 	RepeatablePattern, --	Transformation, -- ** Data-types-	Alternatives(..),+	Alternatives(+		MkAlternatives,+		deconstructAlternatives+	), 	Match, 	ExtendedRegEx(..), 	Pattern(..),@@ -148,8 +151,7 @@ 	showsMaybeAnchor, 	simply, 	transformExtendedRegEx,--- ** Accessors (Deconstructors)-	deconstructAlternatives,+-- ** Accessors --	getInputData, -- ** Operators 	(+~),@@ -218,11 +220,9 @@  	* One could amalgamate this with 'Pattern', since it seems to exist merely as a peg to hang /instance/-declarations from. -}-newtype Alternatives m	= MkAlternatives [ExtendedRegEx m]	deriving Eq---- | Accessor, to expose the guts.-deconstructAlternatives :: Alternatives m -> [ExtendedRegEx m]-deconstructAlternatives (MkAlternatives extendedRegExList)	= extendedRegExList+newtype Alternatives m	= MkAlternatives {+	deconstructAlternatives	:: [ExtendedRegEx m]+} deriving Eq  -- | Similar to 'fmap', but operates on ['ExtendedRegEx'], rather than just @a@. transformAlternatives@@ -241,12 +241,12 @@ 	readsPrec _ ('\t' : s)	= reads s	-- Consume white-space. 	readsPrec _ s		= case reads s of 		[(extendedRegEx, s1)]	-> case dropWhile Data.Char.isSpace s1 of-			('|' : s2)	-> Control.Arrow.first (transformAlternatives (extendedRegEx :)) `map` reads s2 {-singleton-}+			'|' : s2	-> Control.Arrow.first (transformAlternatives (extendedRegEx :)) `map` reads s2 {-singleton-} 			_		-> [(MkAlternatives [extendedRegEx], s1)] 		_			-> []	-- No parse.  instance Show m => Show (Alternatives m)	where-	showsPrec _	= foldl (.) (showString "") . Data.List.intersperse (showChar alternativeExtendedRegExSeparatorToken) . map shows . deconstructAlternatives	-- Replace the default list-format, with 'egrep'-syntax.+	showsPrec _	= foldl (.) id . Data.List.intersperse (showChar alternativeExtendedRegExSeparatorToken) . map shows . deconstructAlternatives	-- Replace the default list-format, with 'egrep'-syntax.  instance Consumer.Consumer (Alternatives m)	where 	consumptionProfile	= Consumer.aggregateConsumptionProfilesFromAlternatives . deconstructAlternatives@@ -297,7 +297,7 @@ 	readsPrec _ ('\t' : s)	= reads s	-- Consume white-space. 	readsPrec _ ('(' : s)	= case {-Alternatives.-} reads s of 		[(alternatives, s1)]	-> case dropWhile Data.Char.isSpace s1 of-			(')' : s2)	-> [(CaptureGroup alternatives, s2)]+			')' : s2	-> [(CaptureGroup alternatives, s2)] 			_		-> []	-- No parse. 		_			-> []	-- No parse. 	readsPrec _ s		= case reads s of@@ -836,7 +836,7 @@  using a single repetition of 'concatenationFromAlternative' followed by a replacement infallible 'concatenationTail'. -} 										then {-#SCC "abortTrialRepetitionsOnInherentFailure" #-} case maybeMatchPairList of-											(Nothing {-failed attempt-} : _ {-subsequent attempt worth bypassing-} : _)	-> if (+											Nothing {-failed attempt-} : _ {-subsequent attempt worth bypassing-} : _	-> if ( 												minConsumptionConcatenationFromAlternative == 0	-- Can delegate consumption of unconsumable data to the infallible tail => unprovable culpability. 											 ) || inputData =~ RegExOpts.mkRegEx MkExtendedRegEx { 												bowAnchor	= Just Anchor.Bow,
src-lib/RegExDot/RegExOpts.hs view
@@ -2,7 +2,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-}  {--	Copyright (C) 2010 Dr. Alistair Ward+	Copyright (C) 2010-2015 Dr. Alistair Ward  	This program is free software: you can redistribute it and/or modify 	it under the terms of the GNU General Public License as published by@@ -33,13 +33,13 @@ 	RegExOpts(..), -- * Functions 	setVerbose,--- ** Constructors+-- ** Constructor 	mkRegEx ) where +import qualified	Data.Default import qualified	RegExDot.CompilationOptions	as CompilationOptions import qualified	RegExDot.ExecutionOptions	as ExecutionOptions-import qualified	ToolShed.Defaultable  -- | Aggregates both 'ExecutionOptions.ExecutionOptions' & 'CompilationOptions.CompilationOptions' with a polymorphic /regex/, to form a complete job-description. data RegExOpts a	= MkRegExOpts {@@ -51,11 +51,11 @@ instance Functor RegExOpts	where 	fmap f regExOpts	= regExOpts { regEx = f $ regEx regExOpts } --- | Smart constructor using 'ToolShed.Defaultable.defaultValue'.+-- | Smart constructor. mkRegEx :: a -> RegExOpts a mkRegEx	r	= MkRegExOpts {-	compilationOptions	= ToolShed.Defaultable.defaultValue,-	executionOptions	= ToolShed.Defaultable.defaultValue,+	compilationOptions	= Data.Default.def,+	executionOptions	= Data.Default.def, 	regEx			= r } 
src-lib/RegExDot/Repeatable.hs view
@@ -29,7 +29,7 @@  	* In the context of /regex/es, this concept is known as /Quantification/. -	* /regex/es evolved from the minimal ability to optionally qualify the datum with a <http://en.wikipedia.org/wiki/Kleene_star> suffix.+	* /regex/es evolved from the minimal ability to optionally qualify the datum with a <https://en.wikipedia.org/wiki/Kleene_star> suffix. 	More exotic repetition-specifications could be composed by concatenating these atomic building-blocks. 	Here, I've taken the contrary top-down view, & assumed that all data are qualified by a full 'RepetitionBounds', which in most cases will degenerate into a simpler form. @@ -90,7 +90,7 @@ import qualified	ToolShed.Data.Pair import qualified	ToolShed.SelfValidate -#if !MIN_VERSION_base(4,8,0)+#if !defined(MIN_VERSION_base) || !MIN_VERSION_base(4,8,0) import	Control.Applicative((<$>), (<*>)) #endif 
src-lib/RegExDot/Result.hs view
@@ -24,7 +24,7 @@  module RegExDot.Result( -- * Functions--- ** Accessors (Deconstructors)+-- ** Accessors 	getMatchList, 	getPreMatch, 	getPostMatch,
src-lib/RegExDot/Tree.hs view
@@ -1,5 +1,5 @@ {--	Copyright (C) 2010 Dr. Alistair Ward+	Copyright (C) 2010-2015 Dr. Alistair Ward  	This program is free software: you can redistribute it and/or modify 	it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@   [@DESCRIPTION@] -	* Defines a specific type of tree-structure, which is composed from either a datum, or a list of Tree-lists; <http://en.wikipedia.org/wiki/Rose_Tree>.+	* Defines a specific type of tree-structure, which is composed from either a datum, or a list of Tree-lists; <https://en.wikipedia.org/wiki/Rose_Tree>.  	* This more general tree-structure has the shape of a regular-expression match. @@ -45,7 +45,7 @@ -- | A general purpose tree-type structure. data Tree a	= 	Leaf a			-- ^ The payload.-	| Node [TreeList a]	-- ^ Recurse. NB: a list of lists is required to contain the /MatchLists/ resulting from repeated /Alternatives/.+	| Node [TreeList a]	-- ^ Recurse. N.B.: a list of lists is required to contain the /MatchLists/ resulting from repeated /Alternatives/. 	deriving Eq  -- | A list of 'Tree's; significant only because it is the essence of the recursive nature of 'Tree'.