module Hoogle.DataBase.TypeSearch.Cost(
Cost(..), cost, score, (*+)
) where
infixl 7 *+
(*+) :: Cost -> Int -> [Cost]
(*+) = flip replicate
data Cost = CostAliasFwd
| CostAliasBwd
| CostUnbox
| CostRebox
| CostRestrict
| CostUnrestrict
| CostDupVarResult
| CostDupVarQuery
| CostInstanceDel
| CostInstanceAdd
| CostDeadArg
| CostArgReorder
deriving (Show,Eq,Ord,Enum,Bounded)
score :: [Cost] -> Int
score = sum . map cost
cost :: Cost -> Int
cost CostAliasFwd = 1
cost CostAliasBwd = 1
cost CostUnbox = 5
cost CostRebox = 4
cost CostRestrict = 5
cost CostUnrestrict = 4
cost CostDupVarResult = 4
cost CostDupVarQuery = 5
cost CostInstanceDel = 4
cost CostInstanceAdd = 4
cost CostDeadArg = 3
cost CostArgReorder = 1