Você pode ser mais claro sobre o sistema de interface do usuário que está usando no programa Haskell? Você quer dizer que está simplesmente lendo e escrevendo texto em stdin / stdout? Nesse caso, eles não têm nenhum conceito implícito de "tela". Se você pretende que seu programa funcione assumindo que há um terminal conectado a stdin / stdout, então você deve codificar seu programa para usar algum pacote de controle de terminal, como a resposta indicada de @ZackS.
MtnViewMark
2
Escolha a resposta correta. As pessoas têm que passar por todas as respostas!
Shishir Gupta
Respostas:
195
:! execute o comando shell :! CLS no Windows : limpar no Linux e OS X
@Peter, meu melhor palpite é que eles não acham que seja uma solução haskell (com razão; funciona apenas no GHCi), não funciona para eles (dependente de shell) ou eles apenas consideram a resposta de ZachS uma melhor . :! clsé suficiente para o meu caso de uso, mas não funciona para o caso do autor da pergunta, pois o autor da pergunta não está usando GHCi.
John Dvorak
58
Isso é o que você pode estar procurando:
ansi-terminal: Suporte a terminal ANSI simples, com compatibilidade com Windows
Você pode encontrá-lo em Hackage e instalar usando cabal install ansi-terminal. Ele tem funções específicas para limpar a tela, exibir cores, mover o cursor, etc.
Usá-lo para limpar a tela é fácil: (isso é com GHCI)
Essa é a resposta correta. Tente procurar o pacote no gerenciador de pacotes do seu sistema, pois o cabal geralmente não funciona com isso e não oferece um comando de desinstalação.
Evi1M4chine
13
Em um terminal que entende sequências de escape ANSI (acredito que todos os termos em sistemas Unix / Linux), você pode fazer isso simplesmente com:
clear = putStr "\ESC[2J"
o 2 limpa a tela inteira. Você pode usar 0ou, 1respectivamente, se desejar limpar do cursor ao final da tela ou do cursor ao início da tela.
No entanto, não acho que isso funcione no shell do Windows.
Em sistemas Unix, você pode fazer o System.system "clear"que apenas invoca o utilitário de linha de comando clear. Para uma solução que não dependa de ferramentas externas, você precisaria de uma biblioteca que abstraia sobre diferentes tipos de terminais como, por exemplo, ansi-terminal .
Respostas:
:! execute o comando shell
:! CLS no Windows
: limpar no Linux e OS X
fonte
:! cls
é suficiente para o meu caso de uso, mas não funciona para o caso do autor da pergunta, pois o autor da pergunta não está usando GHCi.Isso é o que você pode estar procurando:
ansi-terminal: Suporte a terminal ANSI simples, com compatibilidade com Windows
Você pode encontrá-lo em Hackage e instalar usandocabal install ansi-terminal
. Ele tem funções específicas para limpar a tela, exibir cores, mover o cursor, etc.Usá-lo para limpar a tela é fácil: (isso é com GHCI)
import System.Console.ANSI
clearScreen
fonte
Em um terminal que entende sequências de escape ANSI (acredito que todos os termos em sistemas Unix / Linux), você pode fazer isso simplesmente com:
o
2
limpa a tela inteira. Você pode usar0
ou,1
respectivamente, se desejar limpar do cursor ao final da tela ou do cursor ao início da tela.No entanto, não acho que isso funcione no shell do Windows.
fonte
Basta pressionar Ctrl + L (funciona no Windows)
fonte
Em sistemas Unix, você pode fazer o
System.system "clear"
que apenas invoca o utilitário de linha de comando clear. Para uma solução que não dependa de ferramentas externas, você precisaria de uma biblioteca que abstraia sobre diferentes tipos de terminais como, por exemplo, ansi-terminal .fonte
Uma maneira rápida no Windows seria
fonte
system "clear
.No Windows, use Ctrl + L para o terminal de prompt de comando Haskell. E, por GUI usar Ctrl + S .
fonte
No Linux (Ubuntu pelo menos), esse é o código que uso para limpar o terminal:
fonte