Hi Everybody,

I'm having some strange issues with Network.CGI's pathInfo action, or else some other strangeness with pattern matching.

My "mainCGI" CGI action is:

mainCGI :: CGI CGIResult
mainCGI = pathInfo >>= outputSlotTHtml . packagesPage

outputSlotTHtml is irrelevant to my problem.  packagesPage generates a SlotT IO Html -- Slot semantics are essentially irrelevant to my problem.  But packagesPage calls a function called pathCrossRef which is having some problems:

packagesPage :: WebPath -> SlotT IO Html
packagesPage wp = do
     infos <- getPackageInfos . pathCrossRef $ wp
     ...

pathCrossRef :: String -> String
pathCrossRef "/working/" = "/development/code/haskell/working/"
pathCrossRef _           = "/development/code/haskell/packages/"

The intention is that when the cgi program is called with "/working/" as an argument, the pathCrossRef should point at "/development/.../working/", and when called with "/packages/" (or anything else) as an argument, pathCrossRef should point to "/development/.../packages/".

But it is not working!  When I visit http://localhost/working/, I end up using the "packages" cross ref.  I have even printed the cgi argument to the Apache log, and the argument is "/working/".  If I get rid of the wildcard pattern, I get a "missing pattern" error when I visit http://localhost/working/.  Can anybody help?

Thanks,
Alex