Without the flag:

[EMAIL 
PROTECTED]:~/websites/gnuplotwebinterface/cgi-bin/gnuplot-scripts>./financial2.hs
cisco candles 31-May-04 11-Jun-04

./financial2.hs:58:0:
   Illegal instance declaration for `MyString (Either String String)'
       (The instance type must be of form (T a b c)
        where T is not a synonym, and a,b,c are distinct type variables)
   In the instance declaration for `MyString (Either String String)'

./financial2.hs:61:0:
   Illegal instance declaration for `MyString String'
       (The instance type must be of form (T a b c)
        where T is not a synonym, and a,b,c are distinct type variables)
   In the instance declaration for `MyString String'

[EMAIL PROTECTED]:~/websites/gnuplotwebinterface/cgi-bin/gnuplot-scripts>cat
--number financial2.hs | tail
   58  instance MyString (Either String String)
   59     where mystr = id
   60
   61  instance MyString String
   62     where mystr = Right
   63
   64  x <++> y = do xv <- mystr x
   65                yv <- mystr y
   66                return $ xv ++ yv
   67




2007/4/18, Thomas Hartman <[EMAIL PROTECTED]>:
Looks like this needs to be run with

#!/usr/lib/ghc-6.6/bin/runghc
{-# OPTIONS_GHC -fglasgow-exts #-}

to get

instance MyString (Either String String)
   where mystr = id

instance MyString String
   where mystr = Right

to work.

I'm curious if there is a community feeling on whether glasgow-exts is
sort of a de-facto standard now? Or is it common to try to get things
to work without this, for maximum portability?

Is there an easy way to get the above to work without the compiler flag?


2007/4/16, jeff p <[EMAIL PROTECTED]>:
> {----
>
> Hello,
>
>   Here is a variation on Claus' code which returns an Either type
> rather than fails with error. This could be further generalized to use
> any instance of MonadError, rather than Either.
>
> -Jeff
>
> ----}
>
> import Control.Monad.Error
>
> financial_output :: String -> String -> String -> String -> Either String 
String
> financial_output company displaymode startDate endDate = financial_script
>     where
>       financial_script = gnuplot_timeseries_settings <++> "\n"
>                          <++> "plot [\"" <++> startDate <++> "\":\""
> <++> endDate <++> "\"]"
>                          <++> " '" <++> companyFile <++> "'" <++> modeString
>                          <++> " title \"" <++> company <++> " " <++>
> titleEnd <++> "\""
>
>       companyFile = lookupWith ("no company file for " ++ company)
>                     company company_to_companyfile
>
>       modeString  = lookupWith ("no mode string for " ++ displaymode)
>                     displaymode displaymode_to_modestring
>
>       titleEnd    = lookupWith ("no title end for " ++ displaymode)
>                     displaymode displaymode_to_titleend
>
> lookupWith :: (Eq a) => String -> a -> [(a,String)] -> Either String String
> lookupWith error key assocs = maybe (Left error) Right $ lookup key assocs
>
> class MyString a
>     where mystr :: a -> Either String String
> instance MyString (Either String String)
>     where mystr = id
> instance MyString String
>     where mystr = Right
>
> x <++> y = do xv <- mystr x
>                       yv <- mystr y
>                       return $ xv ++ yv
>

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to