{-# LANGUAGE MultiParamTypeClasses #-} {-# OPTIONS_GHC -Wno-missing-signatures #-} import qualified Data.List as List import Haal.BlackBox import Haal.EquivalenceOracle.WMethod (mkWMethod) import Haal.Experiment import Haal.Learning.LMstar import System.Process (readProcess) -------------------------------------------------------------------------------- -- Types -------------------------------------------------------------------------------- data Page = Home | About | CV | Links | Blogs | WrongUrl deriving (Eq, Show, Ord, Enum, Bounded) data PageTag = LandingTag | AboutTag | CVTag | LinksTag | BlogsTag | NotFoundTag deriving (Eq, Show, Ord, Enum, Bounded) data WebsiteSUL inp out = WebsiteSUL { baseUrl :: String , currentUrl :: String -- current path, e.g. "/about" } deriving (Eq, Show) -- Fetch + HTML processing -------------------------------------------------------------------------------- fetch :: String -> IO String fetch url = readProcess "curl" ["-sL", url] "" -------------------------------------------------------------------------------- -- Input and output abstraction -------------------------------------------------------------------------------- inputMap :: Page -> String inputMap Home = "/" inputMap About = "/about" inputMap CV = "/education-and-work" inputMap Links = "/links" inputMap Blogs = "/blogs" inputMap WrongUrl = "/garbage" outputMap :: String -> PageTag outputMap html | "