I think I might have mentioned this previously, but here's an interesting implementation of Knuth-Morris-Pratt substring searching (which is indeed a "little language") which illustrates something or other:
http://haskell.org/hawiki/RunTimeCompilation
Nice. Do you know if anyone has done anything like this for regular expressions? I'm thinking in particular that a function that turned a regular expression into a Parsec parser function could be useful, as in:
regexp.compile :: String -> GenParser Char st [String]
where GenParser is defined by the Parsec library [1], and the parsed result is a list of substrings corresponding to the (...) parts of the regexp (if matched, of course). (The parser result type might warrant some refinement.)
#g --
[1] http://www.cs.uu.nl/~daan/parsec.html
ParsecPrim.hs defines GenParser thus: [[ ----------------------------------------------------------- -- Parser definition. -- GenParser tok st a: -- General parser for tokens of type "tok", -- a user state "st" and a result type "a" ----------------------------------------------------------- type Parser a = GenParser Char () a
newtype GenParser tok st a = Parser (State tok st -> Consumed (Reply tok st a))
runP (Parser p) = p
data Consumed a = Consumed a --input is consumed
| Empty !a --no input is consumeddata Reply tok st a = Ok !a !(State tok st) ParseError --parsing succeeded with "a"
| Error ParseError --parsing failed
data State tok st = State { stateInput :: ![tok]
, statePos :: !SourcePos
, stateUser :: !st
}
]]------------ Graham Klyne For email: http://www.ninebynine.org/#Contact
_______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe
