hls-graph-1.7.0.0: test/Example.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Example where
import Development.IDE.Graph
import Development.IDE.Graph.Rule
import Development.IDE.Graph.Classes
import GHC.Generics
import Type.Reflection (typeRep)
data Rule a = Rule
deriving (Eq, Generic, Hashable, NFData)
instance Typeable a => Show (Rule a) where
show Rule = show $ typeRep @a
type instance RuleResult (Rule a) = a
ruleUnit :: Rules ()
ruleUnit = addRule $ \(Rule :: Rule ()) old mode -> do
return $ RunResult ChangedRecomputeDiff "" ()
-- | Depends on Rule @()
ruleBool :: Rules ()
ruleBool = addRule $ \Rule old mode -> do
() <- apply1 Rule
return $ RunResult ChangedRecomputeDiff "" True