Ответ 1
Вы можете использовать Hoogle для этого (как и для многих других вещей) с помощью оператора поиска +package
.
По умолчанию Hoogle будет искать внутри стандартного набора пакетов по имени или по типу:
- Поиск
traverse
найдет:-
traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
base Data.Traversable -
traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
base Data.Foldable
Сопоставьте каждый элемент структуры с действием, оцените эти действия слева направо и проигнорируйте результаты. - ... и т.д.
-
- Поиск
(a -> b -> c) -> f a -> f b -> f c
найдет:-
liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
base Control.Monad
Продвигайте функцию в монаду, просматривая монадические аргументы слева направо. -
liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
base Control.Applicative
Поднимите двоичную функцию на действия. - ... и т.д.
-
Теперь, это прекрасно и денди, но как насчет других пакетов? Если вы найдите render
, вы найдете Render :: RenderMode
from OpenGL, render :: Doc -> String
из pretty и некоторые другие вещи; по умолчанию пакет snap не выполняется.
Однако, если вы добавите +packagename
или +Module.Name
в свой поиск, Hoogle будет выполнять поиск только внутри указанных пакетов (и -packagename
и -Module.Name
удалить пакеты/модули из поиска). Таким образом, поиск +snap render
находит только следующие три вещи:
-
render :: HasHeist b => ByteString -> Handler b v ()
snap Snap.Snaplet.Heist
Отображает шаблон как text/html. Если данный шаблон не найден, он возвращается пустым. -
renderAs :: HasHeist b => ByteString -> ByteString -> Handler b v ()
snap Snap.Snaplet.Heist
Отображает шаблон как заданный тип контента. Если данный шаблон не найден, он возвращается пустым. -
renderWithSplices :: HasHeist b => ByteString -> [(Text, SnapletSplice b v)] -> Handler b v ()
snap Snap.Snaplet.Heist
Отображает шаблон с заданным набором сращений. Это синтаксический сахар для общей комбинации heistLocal, bindSplices и рендеринга.
Для получения дополнительной информации об использовании Hoogle вы можете проверить его руководство по вики Haskell.