Comment puis-je effacer l'écran d'un terminal après que mon utilisateur ait sélectionné une option dans le menu de mon application ?
Existe-t-il une feuille de route pour le ghci ?
Comment puis-je effacer l'écran d'un terminal après que mon utilisateur ait sélectionné une option dans le menu de mon application ?
@Peter ma meilleure supposition est que c'est parce qu'ils ne pensent pas que c'est une solution haskell (à juste titre ; cela ne fonctionne que dans GHCi), cela ne fonctionne pas pour eux (dépendant du shell) ou ils considèrent simplement que la réponse de ZachS est meilleure. :! cls
est largement suffisant pour mon cas d'utilisation mais ne fonctionne pas pour le cas du demandeur car celui-ci n'utilise pas GHCi.
C'est ce que vous recherchez peut-être :
ansi-terminal : Prise en charge simple des terminaux ANSI, avec compatibilité avec Windows
Vous pouvez le trouver dans Hackage et l'installer en utilisant cabal install ansi-terminal
. Il dispose notamment de fonctions pour effacer l'écran, afficher les couleurs, déplacer le curseur, etc.
L'utiliser pour effacer l'écran est facile : (avec GHCI)
`import System.Console.ANSI
clearScreen`
Sur un terminal qui comprend les séquences d'échappement ANSI (je crois que tous les termes des systèmes Unix/Linux), vous pouvez le faire simplement avec :
clear = putStr "\ESC[2J"
Le site 2
efface tout l'écran. Vous pouvez utiliser 0
o 1
respectivement si vous voulez effacer du curseur à la fin de l'écran ou du curseur au début de l'écran.
Cependant, je ne pense pas que cela fonctionne dans le shell Windows.
Sur les systèmes Unix, vous pouvez faire System.system "clear"
qui invoque simplement l'utilitaire de ligne de commande clear. Pour une solution qui ne dépend pas d'outils externes, vous auriez besoin d'une bibliothèque qui fait abstraction des différents types de terminaux, comme par exemple ansi-terminal .
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.
2 votes
Pouvez-vous être plus clair sur le système d'interface utilisateur que vous utilisez dans votre programme Haskell ? Voulez-vous dire que vous lisez et écrivez simplement du texte sur stdin/stdout ? Si c'est le cas, ceux-ci n'ont pas de concept implicite d'"écran". Si vous voulez que votre programme fonctionne en supposant qu'un terminal est connecté à stdin/stdout, vous devez coder votre programme pour qu'il utilise un paquet de contrôle de terminal, comme indiqué dans la réponse de @ZackS.
2 votes
Veuillez choisir la bonne réponse. Les gens doivent passer par toutes les réponses !