"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Monogramas são monólitos na categoria de functores ...

Monogramas são monólitos na categoria de functores ...

Postado em 2025-04-13
Navegar:947

A monad is a monoid in the category of endofunctors...

O que é uma Monad?

Uma mônada é um monoid na categoria de endofunctores ...?

... vamos tentar novamente:

Uma Monad é uma abstração usada na programação funcional para lidar com cálculos de maneira consistente. É um padrão de design que permite o encadeamento de operações enquanto encapsula os efeitos colaterais, como mudanças de estado, E/S ou erros, de maneira controlada.

Mônadas podem ser consideradas uma maneira de envolver valores e aplicar funções a eles, garantindo que os cálculos sejam realizados em um ambiente previsível e controlado.

meu entendimento pessoal é: uma mônada é uma estrutura de dados com

  • um único valor imutável (ou função)
  • uma função map/bind para mapear uma função para esse valor
  • uma função retornar/aclatten que retorna o novo estado em uma nova mônada a cada vez

Isso permite encadear e composição de operações de uma maneira que preserve a imutabilidade e a pureza funcional-uma abordagem "reversa" de uma classe, onde o estado não pode ser modificado no local, mas as transformações são aplicadas funcionalmente para produzir novas instâncias.

Esta "simetria reversa" destaca o contraste:

  • as classes modificam seu estado interno, mantendo mutabilidade e interação direta através de métodos internos. Eles na maioria das vezes interagem com um estado global

  • Monads alcançam resultados semelhantes a uma classe, mas, envolvendo valores e mapeando transformações imutáveis ​​externas, elas não têm efeitos colaterais: não há estado global

Exemplo:

  • Aula: Uma classe de caixa contém um valor e você pode modificar o valor chamando métodos como setValue (newValue), que se afasta o estado interno da caixa.
  • Monad: Um Boxmonad manteria um valor de maneira imutável. Para transformar o valor, você usaria uma função como mapa, que aplica uma função externa ao valor e retorna um novo Boxmonad, com o novo valor.

Projeto de exemplo em Python:
https://github.com/blackopsrepl/py-monad-task-managerlente

Neste aplicativo, usamos a Monad State para gerenciar o estado da lista de tarefas. A Mônada do Estado fornece uma maneira de modelar o processo de gerenciamento de tarefas como uma série de transformações no estado do aplicativo, mantendo o próprio estado imutável.

! Cada vez que uma operação é realizada (como adicionar, editar ou excluir tarefas), ela retorna uma nova instância do estado, garantindo imutabilidade e composibilidade.

Funções de chave:

return_: envolve um valor em um contêiner Monadic, tornando -o parte da cadeia de computação monádica.
  • Bind: aplica uma função ao valor dentro da mônada, retornando um novo contêiner Monadic com o valor transformado.
  • usando a Mônada do Estado, podemos lidar com operações de gerenciamento de tarefas de uma maneira que garante que o estado seja atualizado imutavelmente e os cálculos sejam compostos sem efeitos colaterais ou interações indesejadas entre operações.

Declaração de lançamento Este artigo é reimpresso em: https://dev.to/blacopsrepl/a-monad-is-a-monoid-in-the-category-of-endofunctors-47oi?1 Se houver alguma infração, entre em contato com [email protected] para excluí-lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3