web-dev-qa-db-fra.com

Comment puis-je voir la définition d'une fonction de haskell / ghci?

J'utilise Haskell 2010.1.0.0.1 avec GHC 6. Typing :t à l'invite GHCI suivie du nom d'une fonction indique le type de fonction. Y a-t-il un moyen d'afficher la définition de la fonction aussi?

49
franco hades

Pas actuellement.

La commande la plus proche de ce que vous voulez est :info

: Nom de l'information ...

Affiche des informations sur le (s) nom (s) donné. Par exemple, si le nom est une classe, les méthodes de classe et leurs types seront imprimés; Si le nom est un constructeur de type, sa définition sera imprimée; Si le nom est une fonction, son type sera imprimé. Si le nom a été chargé à partir d'un fichier source, GHCI affichera également l'emplacement de sa définition dans la source.

Pour les types et les classes, GHCI résume également les instances qui les mentionnent. Pour éviter de montrer des informations non pertinentes, une instance est montrée uniquement si (a) sa tête mentionne le nom, et (b) toutes les autres choses mentionnées dans l'instance sont en portée (soit autrement) à la suite d'un: charge ou: Commandes de module.

ainsi:

Prelude> :info ($)
($) :: (a -> b) -> a -> b   -- Defined in GHC.Base
infixr 0 $

Vous pouvez cependant voir la source d'identificateurs générés par l'outil Haddock, sur Hackage.

  1. Recherchez le module sur Hackage
  2. Cliquez sur le lien source

Notez que "? SRC" est une commande valide à Lambdabot, sur le #hakell IRC canal, et fait quoi vous attendriez.

> ?src ($)
> f $ x = f x
40
Don Stewart

Je ne le pense pas. Vous pouvez utiliser :i Pour un peu plus d'informations (plus utiles pour les opérateurs d'infixes et les constructions de données, etc.), mais pas la définition:

ghci> :i repeat
repeat :: a -> [a]       -- Defined in GHC.List

Vous pouvez utiliser HOOGLE pour trouver rapidement la documentation d'une fonction de bibliothèque standard, laquelle de droite a un lien pour aller à la source. Il reste encore quelques clics à distance.

6
luqui

Nope, je ne peux pas faire ça. Certaines choses amusantes vous, le débutant Haskell, peuvent faire:

  • Sur les documents HTML Haddock, cliquez sur "Source" ... Étudiez la source.
  • :browse Pour trouver toutes les définitions exportées par un module
  • Utilisation :help pour le résultat évident
  • utilisez l'interface Web de howogle pour rechercher des fonctions ou installer Hoogle localement!
  • ?
  • Profit!
6