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
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.
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
Música,
9 meses atrás
Química,
9 meses atrás
Filosofia,
9 meses atrás
Química,
1 ano atrás
Matemática,
1 ano atrás
Física,
1 ano atrás
Ed. Física,
1 ano atrás