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