module IsString () where
import GHC.Exts (IsString(..))
import Control.Applicative ((<*))
import Text.Parsec (parse, eof)
import Prolog ( vname, term, clause
, VariableName, Term, Clause )
instance IsString Clause where
fromString s =
case parse (clause <* eof) "(Clause literal)" s of
Left e -> error (show e)
Right c -> c
instance IsString Term where
fromString s =
case parse (term <* eof) "(Term literal)" s of
Left e -> error (show e)
Right c -> c
instance IsString VariableName where
fromString s =
case parse (vname <* eof) "(VariableName literal)" s of
Left e -> error (show e)
Right c -> c