module Seminal.Options (Options(..), SearchMethod(..)) where

data Options = Options {
    -- | Tells when to stop searching
    Options -> SearchMethod
search :: SearchMethod,
    -- | If True, for each call to the typechecker, will print infor about it
    Options -> Bool
traceTcCalls :: Bool
}

data SearchMethod =
    -- | Stop when the bottom of the AST is reached
    Eager |
    -- | Stop when a `Terminal` change is found
    Lazy
    deriving SearchMethod -> SearchMethod -> Bool
(SearchMethod -> SearchMethod -> Bool)
-> (SearchMethod -> SearchMethod -> Bool) -> Eq SearchMethod
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SearchMethod -> SearchMethod -> Bool
== :: SearchMethod -> SearchMethod -> Bool
$c/= :: SearchMethod -> SearchMethod -> Bool
/= :: SearchMethod -> SearchMethod -> Bool
Eq