57 votes

Comment puis-je visualiser la définition d'une fonction en Haskell/GHCi ?

J'utilise Haskell 2010.1.0.0.1 avec GHC 6. Typage :t à l'invite de GHCi suivi du nom d'une fonction nous indique le type de la fonction. Existe-t-il un moyen d'afficher également la définition de la fonction ?

42voto

Don Stewart Points 94361

Pas actuellement.

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

:info nom ...

Affiche des informations sur le(s) nom(s) donné(s). Par exemple, si nom est une classe, alors les méthodes de la classe et leurs types seront imprimés ; si nom est un constructeur de type, alors sa définition sera imprimée ; si nom est une fonction, alors son type sera imprimé. Si nom a été chargé à partir d'un fichier source, alors 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 n'est montrée que si (a) sa tête mentionne le nom, et (b) toutes les autres choses mentionnées dans l'instance sont dans la portée (qualifiée ou non) suite à une commande :load ou :module.

comme ça :

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

Vous pouvez cependant voir la source des identifiants 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" es une commande valide dans lambdabot, sur le canal IRC #haskell, et fait ce que vous attendez.

> ?src ($)
> f $ x = f x

7voto

luqui Points 26009

Je ne pense pas. Vous pouvez utiliser :i pour un peu plus d'informations (plus utiles pour les opérateurs 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 la bibliothèque standard, qui comporte à droite un lien pour aller à la source. Il faut cependant encore quelques clics pour y parvenir.

7voto

Thomas M. DuBuisson Points 31851

Non, je ne peux pas faire ça. Quelques trucs amusants que vous, le débutant en Haskell, pouvez faire :

  • Sur les documents HTML haddock, cliquez sur "source"... étudiez la source.
  • :browse pour trouver toutes les définitions exportées par un module
  • Utilice :help pour le résultat évident
  • utiliser l'interface web de hoogle pour rechercher des fonctions, ou installer hoogle localement !
  • ?
  • Profit !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X