module Hoogle.DataBase.TypeSearch.All(
createTypeSearch, TypeSearch,
searchTypeSearch, TypeScore
) where
import Hoogle.DataBase.TypeSearch.Graphs
import Hoogle.DataBase.TypeSearch.TypeScore
import Hoogle.DataBase.Instances
import Hoogle.DataBase.Aliases
import Data.Binary.Defer
import Data.Binary.Defer.Index
import Hoogle.TextBase.All
import Hoogle.TypeSig.All
import Hoogle.Item.All
newtype TypeSearch = TypeSearch Graphs
instance Show TypeSearch where
show (TypeSearch x) = show x
instance BinaryDefer TypeSearch where
put (TypeSearch x) = put x
get = get1 TypeSearch
createTypeSearch :: Aliases -> Instances -> [Link Entry] -> TypeSearch
createTypeSearch aliases instances xs = TypeSearch $ newGraphs aliases instances types
where types = [(x, fromDefer sig) | x <- xs, Just sig <- [entryTypesig $ fromLink x]]
searchTypeSearch :: Aliases -> Instances -> TypeSearch -> TypeSig -> [(Link Entry,[EntryView],TypeScore)]
searchTypeSearch as is (TypeSearch g) t =
[(a, b, c) | (a,b,c) <- graphsSearch as is g t]