[Haskell-cafe] type constructor confusion

Stephen Howard stephen at enterity.com
Wed Jun 18 15:31:18 EDT 2008

hello list,

loading the code below into ghci gives me this error:

HttpMessage.hs:36:20: Not in scope: type constructor or class `HttpRequest'

The troublesome line is the definition of the cookie function at the end 
of the code.  I've made HttpRequest and HttpResponse constructors of 
HttpMessage as I've sketched out an action that might return either 
one.  Given that I thought what I was doing below was defining these as 
type constructors (maybe I have my vocabulary mixed up) I don't know why 
ghci is returning this error.

module HttpMessage ( HttpMessage(..), HttpRequestMethod(..), cookie ) where

import Data.Map as M

data HttpHeaders = HttpHeaders !(M.Map String String )
data HttpMessage =
    HttpRequest {
        headers        :: HttpHeaders,
        body           :: String,
        request_method :: HttpRequestMethod,
        uri            :: URI,
        http_version   :: Float,
        cookies        :: !(M.Map String String)
    | HttpResponse {
        headers        :: HttpHeaders,
        body           :: String,
        status         :: HttpStatus

data HttpRequestMethod = Get | Head | Post | Put | Delete | Unsupported 
data HttpStatus = OK | NotFound | NotAuthorized | ServerError

data URI = URI {
    protocol :: String,
    domain   :: String,
    port     :: String,
    path     :: String,
    query    :: !(M.Map String String),
    anchor   :: String

cookie :: String -> HttpRequest -> Maybe String
cookie n request = M.lookup n (cookies request)

More information about the Haskell-Cafe mailing list