2016-03-18 9 views
3

Я установил hoogle, используя stack install hoogle. Теперь я могу найти функции, используя такую ​​команду из stack ghci:Hoogle и yesod - как легко найти функции в пакетах, отличных от по умолчанию

:!hoogle --count=15 "[a] -> a" 

Я нахожусь в корневом каталоге моего проекта Йесод - главная причина, я установил его в том, чтобы получить помощь с функциями Йесод - но когда я пытаюсь найти функцию от Йесод как addHeader, он не распознает тип, определенный на Йесод:

:t addHeader 
addHeader :: MonadHandler m => Text -> Text -> m() 
:!hoogle --count=15 "MonadHandler m => Text -> Text -> m()" 
Warning: Unknown class MonadHandler 
. 
. 
. 

Как я могу настроить hoogle красиво работать с Йесод, а также это сам проект я работаю, так что hoogle приведут мои собственные функции и Йесод?

ответ

3

Вам нужно сначала получить Hoogle создать вам Йесод-ядро базы данных:

λ> :!hoogle data yesod-core 
0 warnings, saved to .warnings 
Data generation complete 

Тогда он просто работает!

λ> :!hoogle "+yesod-core MonadHandler m => Text -> Text -> m()" 
Yesod.Core.Handler addHeader :: MonadHandler m => Text -> Text -> m() 
Yesod.Core.Handler deleteCookie :: MonadHandler m => Text -> Text -> m() 
Yesod.Core.Handler setHeader :: MonadHandler m => Text -> Text -> m() 
Yesod.Core.Handler setSession :: MonadHandler m => Text -> Text -> m() 
Yesod.Core.Widget toWidgetMedia :: (ToWidgetMedia site a, MonadWidget m, HandlerSite m ~ site) => Text -> a -> m() 
Yesod.Core.Json (.=) :: KeyValue kv => forall v. ToJSON v => Text -> v -> kv 

Yuck, +yesod-core тег не большой. К счастью, мы можем combine our Hoogle databases into one big one:

$ cd ~/.stack/snapshots/x86_64-osx/lts-5.8/7.10.3/share/x86_64-osx-ghc-7.10.3/hoogle-4.2.43/databases 
$ mv default.hoo{,-prev} 
$ hoogle combine *.hoo 

(Ваш базы данных путь будет варьироваться в зависимости от того, stack install ред или cabal install ред.)

λ> :!hoogle "addHeader" 
Yesod.Core.Handler addHeader :: MonadHandler m => Text -> Text -> m() 
Network.CGI.Monad cgiAddHeader :: MonadCGI m => HeaderName -> String -> m() 

путь лучше, чем Google.

+0

Не могли бы вы объяснить свою команду 'mv'? 'mv default.hoo {, - prev}' – FtheBuilder

+0

это расширение оболочки! a {foo, bar} = afoo aba – hao

 Смежные вопросы

  • Нет связанных вопросов^_^