Documentation hors ligne Haskell?

94

Quelles sont les possibilités, le cas échéant, d'obtenir des documents hors ligne pour les bibliothèques principales de Haskell (et peut-être plus)?

Parfois, je prends mon ordinateur portable au café où il n'y a pas de wifi, et ce serait bien d'avoir quelque chose comme Hoogle mais pour une utilisation hors ligne.

Andriy Drozdyuk
la source

Réponses:

53

Hoogle est disponible hors ligne, installable depuis Cabal: http://hackage.haskell.org/package/hoogle

Les instructions d'utilisation sont disponibles à l' adresse http://www.haskell.org/haskellwiki/Hoogle#Command_Line_Search_Flags .

Usage:

$ hoogle --help
Hoogle v4.2.8, (C) Neil Mitchell 2004-2011
http://haskell.org/hoogle

hoogle [COMMAND] ... [OPTIONS]

Commands:
  [search]  Perform a search
  data      Generate Hoogle databases
  server    Start a Hoogle server
  combine   Combine multiple databases into one
  convert   Convert an input file to a database
  test      Run tests
  dump      Dump sections of a database to stdout
  rank      Generate ranking information
  log       Analyse log files

Common flags:
  -? --help     Display help message
  -V --version  Print version information
  -v --verbose  Loud verbosity
  -q --quiet    Quiet verbosity

Créez une base de données par défaut avec hoogle data(plus d'informations sur http://neilmitchell.blogspot.com/2008/08/hoogle-database-generation.html ).

EDIT: Une session d'utilisation après l'installation de Hoogle localement:

$ hoogle
No query entered
Try --help for command line options
$ hoogle data
(downloads databases...takes a few minutes)

J'ai rencontré une erreur ici ... apparemment, elle est liée à la version de Cabal, alors j'ai mis à jour cela (http://hackage.haskell.org/trac/hackage/ticket/811). Cela n'a pas aidé, alors j'ai couru hoogle data all, ce que j'ai annulé car cela prenait si longtemps (cela semble passer par tous les paquets sur Hackage). Cela n'autorisait toujours pas une requête comme hoogle mapmais l'a permis hoogle map +base(c'est-à-dire restreindre la recherche au basepaquet). Espérons que cela fonctionne pour vous!

EDIT2: Cela semble résoudre le problème (pour moi):

$cd .cabal/share/hoogle-4.2.8/databases
$hoogle combine base.hoo
$hoogle foldl\'
Data.List foldl' :: (a -> b -> a) -> a -> [b] -> a
Data.Foldable foldl' :: Foldable t => (a -> b -> a) -> a -> t b -> a
li.davidm
la source
15
Vous voudrez probablement aussi activer la documentation pour vos packages installés, en ajoutant documentation: Trueà votre ~/.cabal/configfichier puis en réinstallant ces packages avec cabal install world --reinstall.
hammar
2
hoogle data --localm'a pris 3 minutes (dont la plupart étaient en téléchargement), je peux ensuite exécuter hoogle foldlqui trouve la fonction foldl, ouhoogle server --local puis visiter http://localhost/qui est à la fois un serveur complet et comprend des liens vers la documentation HTML.
Neil Mitchell
1
@NeilMitchell hoogle data all et hoogle data --localfaire / télécharger beaucoup de choses, mais cela ne me permet toujours pas de trouver des fonctions dans les packages (par exemple parseFileWithMode). Est-ce censé fonctionner?
nh2
1
@ nh2: par défaut Hoogle ne recherche que la plate-forme, essayez hoogle +haskell-src-exts parseFile
Neil Mitchell
1
hoogle server --locala besoin de plus de visibilité. C'est l'analogon par exemple godoc -http.
sjakobi
21

La documentation HTML peut être téléchargée comme .tar.bz2 partir du site Web Haskell:

https://downloads.haskell.org/~ghc/latest/docs/

Je viens de télécharger https://www.haskell.org/ghc/docs/7.6.3/libraries.html.tar.bz2 et c'est exactement ce que j'espérais.

Il existe également d'autres options, telles que Dash et Zeal , et voir aussi ce fil de discussion reddit .

Emmanuel Touzery
la source
Réponse non à jour: (il semble que le premier lien soit rompu.
MaiaVictor
Le voilà. Je vous remercie!
MaiaVictor
C'est la meilleure réponse pour moi, car je n'ai pas pu atteindre l'objectif avechoogle server --local
user24601
14

Si vous installez la plate-forme Haskell, elle inclut les documents GHC et les documents de la bibliothèque GHC (qui couvrent les bibliothèques principales). Sous Windows, ils se trouvent dans le menu Démarrer sous «Tous les programmes | Haskell Platform».

arx
la source
C'est bon à savoir. Y a-t-il quelque chose comme ça sur Linux?
Andriy Drozdyuk
Je pense que la plate-forme Haskell est censée être à peu près la même sur différents systèmes d'exploitation, mais je ne l'ai jamais utilisée sous Linux. Si vous l'avez installé, vous pouvez essayer de rechercher le fichier "Data-Binary.html" (la documentation pour Data.Binary) pour voir si les documents ont été installés quelque part.
arx
4
@drozzy: Sur Debian / Ubuntu, je crois qu'il existe des packages de documentation que haskell-platform-docvous pouvez installer.
li.davidm
La plate-forme haskell ne sera plus maintenue et elle était toujours obsolète, donc je n'avais pas considéré cela comme une bonne réponse
dredozubov
1
@dredozubov Source? Je ne trouve rien sur le fait qu'il ne soit pas maintenu à l'avenir.
Andriy Drozdyuk
10

Modifiez votre fichier ~ / .cabal / config. Recherchez la ligne (probablement commentée) qui dit documentation: False. Changez cette ligne documentation: Trueet supprimez-la de commentaire. Désormais, lorsque vous créez des projets, la cabal installdocumentation sera également construite et enregistrée localement.

Regardez un peu plus dans ce même fichier de configuration et vous trouverez des options comme doc-index-file, docdir, datadir, prefix, etc. qui vous permettent de configurer l'emplacement de stockage de la documentation.

puissant
la source
5

Ce n'est peut-être pas «canonique» en soi, mais je pense que l'option la plus utile est un logiciel docset comme dash (OS X) / zeal + généré des docsets. De cette façon, vous obtiendrez la recherche gratuitement et aurez également une option pour créer vos ensembles de documents personnalisés. Ce n'est pas un problème pour obtenir la documentation haddock du package «de base» avec l'un ou l'autre des projets hors de la boîte. Vous pouvez créer des ensembles de documents personnalisés avec haddocset ou dash-haskell . En outre, il s'intègre bien avec emacs / vim / autres éditeurs, vous permet d'avoir des ensembles de documents basés sur des projets (vous aurez les versions pertinentes sur une base par projet de cette façon, oubliez tous ces tracas avec hoogle local!) Et ne le faites pas vous restreindre à tout flux de construction que vous pouvez avoir.

Si vous construisez votre projet avec, cabal-installvous pouvez définir documentation: Truedans votre~/.cabal/config , puis réinstallez les dépendances pour obtenir des haddocks générés localement.

Si vous utilisez stack , vous pouvez utiliser la stack haddockcommande pour créer vos dépendances et votre projet avec des haddocks générés.

dredozubov
la source
3

J'utilise devdocs.io , il contient des documents pour de nombreux langages et bibliothèques (y compris Haskell) et dispose d'un mode hors ligne.

stusherwin
la source
1

Rapidité est un outil universel gratuit et magnifique pour faire exactement cela. Il prend en charge un large éventail de langues, de technologies et de bibliothèques, et la mise à jour en un clic.

Vous pourrez probablement trouver plus de ce que vous utilisez déjà dans sa liste de documentation.

hardcore
la source
1

Pour Windows, installez les packages wget et curl de cygwin. Cela permettra hoogle data.

Pete Klein
la source
0

Si vous utilisez une distribution dérivée de Debian et ses packages, vous trouverez la documentation combinée de tous les packages Haskell installés (si vous installez également les libghc-foo-docpackages) sur

file:///usr/share/doc/ghc-doc/html/libraries/index.html

De plus, les libghc-foo-docpaquets contiennent les fichiers nécessaires pour hoogle, donc si vous apt-get install hoogle, vous devriez immédiatement pouvoir utiliser hooglepour rechercher dans toutes les bibliothèques installées de cette façon.

Joachim Breitner
la source