blob: 88e9c897574b413ce6e7c676aac5b77de32e7630 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE TypeFamilies #-}
module Oracles.Flavour
( oracles
, askDynGhcPrograms
, askGhcProfiled
) where
import Base
import Flavour
import Settings (flavour)
newtype DynGhcPrograms =
DynGhcPrograms () deriving (Show, Typeable, Eq, Hashable, Binary, NFData)
type instance RuleResult DynGhcPrograms = Bool
newtype GhcProfiled =
GhcProfiled () deriving (Show, Typeable, Eq, Hashable, Binary, NFData)
type instance RuleResult GhcProfiled = Bool
oracles :: Rules ()
oracles = do
void $ addOracle $ \(DynGhcPrograms _) -> dynamicGhcPrograms =<< flavour
void $ addOracle $ \(GhcProfiled _) -> ghcProfiled <$> flavour
askDynGhcPrograms :: Action Bool
askDynGhcPrograms = askOracle $ DynGhcPrograms ()
askGhcProfiled :: Action Bool
askGhcProfiled = askOracle $ GhcProfiled ()
|