7
votes

Réduire le niveau d'avertissement Eclipse (type)

J'ai récemment installé le plug-in Haskell Eclipse-Plugin "Eclipsefp". Tout fonctionne assez bien alors qu'il y a une caractéristique qui me rend très en colère hehe em>. Je ne peux pas réduire le niveau d'avertissement de la sortie. Eclipse / Son plugin semble auto-ajoute le drapeau "-Wall", qui est très très sensible contre les choses de type. Montrons ceci sur un exemple:

factorial :: (Integral a) => a -> a
factorial 1 = 1
factorial n = n * factorial (n-1)

*Main> factorial 3

<interactive>:1:1:
    Warning: Defaulting the following constraint(s) to type `Integer'
               (Integral a0) arising from a use of `factorial'
                             at <interactive>:1:1-9
               (Num a0) arising from the literal `3' at <interactive>:1:11
    In the expression: factorial 3
    In an equation for `it': it = factorial 3

<interactive>:1:1:
    Warning: Defaulting the following constraint(s) to type `Integer'
               (Integral a0) arising from a use of `factorial'
                             at <interactive>:1:1-9
               (Num a0) arising from the literal `3' at <interactive>:1:11
               (Show a0) arising from a use of `print' at <interactive>:1:1-11
    In the expression: factorial 3
    In an equation for `it': it = factorial 3
6
*Main> 


1 commentaires

Comment écririez-vous ce code pour que l'avertissement ne s'affiche pas en premier lieu?


4 Réponses :


6
votes

Je ne sais pas sur Eclipse, mais vous pouvez désactiver des avertissements dans votre fichier .ghci . Mettez xxx

et quoi que ce soit d'autre que vous ne voulez pas avoir averti par défaut dans votre ~ / .ghci et réduisez les avertissements aux importants. Si vous souhaitez charger des modules par défaut, vous pouvez également ajouter importer contrôler.Applicatif (ou quelle que soit la précédente).


1 commentaires

Merci, ça fait le travail. Notez que sous Windows, le chemin serait C: \ utilisateurs \ \ appdata \ itinérant \ ghc \ ghci.conf - Créez le fichier et copiez ce qui précède si le fichier n'existe pas encore.



2
votes

Il existe un moyen de mettre ces commandes suggéré par Daniel Fischer directement dans Eclipsefp.

Ouvrir " exécuter configurations ... ", sélectionnez le vôtre, passez à " Automation " onglet, tapez une commande dans le texte édition. Malheureusement, c'est une entrée d'édition d'une ligne et GHCI ne prend pas en charge plusieurs commandes en une seule ligne.

Toutefois, vous pouvez taper du texte multiligne quelque part et la coller dans ce texte édit de sorte qu'il ressemblerait à : SET -FNO-warn-Type-type par défaut [000a]: Set -fno-warn-inutilisé -do-bind .

Il existe également une modification de texte multiligne spéciale nommée " arguments ", mais cela ne résout pas le problème car ces arguments sont insérés avant que ce -wall , c'est-à-dire pourquoi ils n'ont pas de sens.


1 commentaires

Il est correct de mettre deux options sur une commande définie comme: SET -FNO-WARN-TYPE-TYPE-SAUF-DEFAULTS -FNO-WARN-INUTILISÉE-DO-BIND



5
votes

in .Cabal Fichier Écrire: GHC-Options: -Wall -Fno-Warn-Type-Type-Parks -fno-warn-inutilisé-do-bind


0 commentaires

1
votes

Une autre approche, au lieu d'ajouter des arguments pour éteindre ce comportement, il est de l'empêcher d'être allumée en premier lieu.

Dans le projet Eclipse Haskell, il existe un fichier appelé eclispeprojectName em >cabal. C'est là que l'argument -wall code> GHCI est défini. Commentaire sur cette ligne. P>

Par exemple: Dans un projet Eclipse Haskell appelé Haskelltest, il existe un fichier appelé haskelltest.cabal code> au niveau supérieur du projet. Définissez son contenu comme ci-dessous - voir la dernière ligne où j'ai commenté le paramètre Options de GHC: P>

name:           haskelltest
version:        0.1
cabal-version:  >=1.2
build-type:     Simple
author:         marty

executable haskelltest
  hs-source-dirs:  src
  main-is:         Main.hs
  build-depends:   base >= 4
--  ghc-options:     -Wall


1 commentaires

BTW éteignant apparemment le paramètre -Wall est considéré comme une mauvaise pratique. Voir Link Donc, l'approche de la Lambdor est probablement meilleure.