Informática, perguntado por MatheusToniolli, 1 ano atrás

Como implementar um botão liga e desliga em Haskell.
Por exemplo:
var bt = false;
if(bt==false)
bt = true;
else
bt = false;

Estou com esse duvida pois estou viciado em c em não consigo pensar em uma forma "funcional" para esse problema.
Espero que seja simple

Soluções para a tarefa

Respondido por bokomoko
2
o problema desse código aí é que até mesmo se fosse em C estaria mal feito.

observe essa complicaçào toda que você escreveu denota que você ainda não sacou qual é a da variável booleana

Como implementar um botão liga e desliga em Haskell.
Por exemplo:
var bt = false; // até aqui tudo bem, declarou uma variável e atribuiu um valor
// lógico (booleano) a ela. Tá certo
// a partir daqui começa o espagueti
// o que se quer é .. se bt = true, vire false. Se for false, vire true 
if(bt==false)
bt = true;
else
bt = false;

primeiro é um CRIME comparar uma variável booleana com true/false. Não precisa. Esse código pode ser melhorado para ficar assim
if (bt) 
    bt=false;
else
    bt=true;

Não se compara ! Ela já tem o valor true ou false
Pois bem, esse código aí ainda é spagethi pode ser simplificado para a forma correta que seria

bt = not(bt)

Isso porque estamos em Haskell

Se fosse em C, aquele spagethi que você "viciado em C" poderia ser sim abreviado para

int x=TRUE;
x = !x;

mesma coisa em C

Procure estudar mais sobre tipos de dados booleanos. Eles facilitam demais o trabalho.

Perguntas interessantes