Onde estão todos os padrões de design de programação funcional? [fechadas]

70

A literatura de programação OO está repleta de padrões de design. A maioria dos livros sobre programação orientada a objetos dedica um capítulo ou dois para projetar padrões como fábricas e decoradores. Então, quais são os padrões equivalentes em linguagens funcionais e por que ninguém escreveu um livro sobre eles ainda? Existe algo especial sobre linguagens funcionais que elimina a necessidade de padrões de design?

    
por davidk01 03.07.2011 / 09:35
fonte

6 respostas

46

OO e programação funcional são dois paradigmas de programação muito diferentes, e os padrões de design (DP) são uma parte significativa do design e da programação OO. DP não tem esse papel na programação funcional.

Poder-se-ia até dizer que os DP não são necessários na programação funcional - não há coceira para a qual o DP cura.

  • Alguém poderia argumentar que os padrões de design são um sinal de recursos ausentes em uma linguagem de programação.

  • Peter Norvig encontrou que 16 dos 23 padrões nos Padrões de Design book são " invisíveis ou simples r" em Lisp ou Dylan.

  • "Muitos padrões implicam orientação a objeto ou estado mais geralmente mutável, e assim pode não ser tão aplicável em linguagens de programação funcionais, nas quais os dados são imutáveis ou tratados como tal." - link

por 04.07.2011 / 12:39
fonte
62

Jeremy Gibbons está escrevendo o livro. Até terminar, você pode ler o blog dele, Padrões em programação funcional . Ele recomenda ler seus posts do mais antigo para o mais novo.

Procure também as publicações . Ele aborda os padrões da Gang of Four em Padrões de design como programas genéricos de tipo hierárquico de ordem superior e descreve os padrões de programação com equações recursivas em Programação de Origami (desdobra e desdobra).

    
por 04.04.2012 / 16:48
fonte
11

O simples fato é que muitos Padrões OO seriam considerados idiomas em linguagens funcionais (especialmente os padrões originais do GoF). Por exemplo, o padrão Iterator (embutido em linguagens como o C # agora) simplesmente não é necessário em um Lisp ou ML que possui operadores sequenciais.

Muitos dos padrões que usamos nos sistemas O-O estão lá para nos ajudar a tirar os "não essenciais" do caminho, para que possamos nos concentrar na codificação de objetos. Em outras palavras, os padrões são soluções para as partes não interessantes do aplicativo. Devemos aproveitar os padrões para atender às necessidades comuns que foram resolvidas antes (como os padrões em Fowlers Patterns da Enterprise Application Architecture para lidar com coisas como transmissão de banco de dados ou xUnit Patterns para aumentar seu teste de unidade) para que possamos nos concentrar em agregar valor aos negócios para o aplicativo.

Tenho certeza de que, além das especificidades dos padrões do GoF, há padrões de design que também serão aplicáveis à programação funcional. A coisa é que O-O é o paradigma dominante. Escrever um livro de padrões que tenha como alvo desenvolvedores funcionais ... bem, francamente, não obterá um sinal verde de um editor. Isso é o que tudo se resume a. Não há mercado suficiente para que os Functional Patterns tenham um número significativo de livros dedicados ao tópico.

    
por 03.07.2011 / 12:36
fonte
8

Uma boa conversa (~ 45 min) sobre este tema por Stuart Sierra:

link

Não necessariamente vinculante e autoritativo, mas reconheci vários de seus exemplos por experiência própria usando FP para análise de dados.

Exemplos escritos em Clojure, mas provavelmente aplicáveis a qualquer linguagem FP. Os nomes que ele dá aos padrões que ele cobre são:

  • Estado / evento
  • Consequências
  • Acumulador
  • Reduzir / Combinar
  • Expansão Recursiva
  • Pipeline
  • Wrapper
  • Token
  • Observador
  • Estratégia
por 03.01.2015 / 00:01
fonte
5

Se você estiver genuinamente interessado em aprender os padrões de design, não procure mais do que Haskell. Se você tomar o tempo para aprender o idioma da maneira mais difícil você vai encontrar e se aconchegar com a maioria dos padrões básicos - eles são incorporados à linguagem.

Não pule as mônadas. Há um monte de explicações prolixas por aí e é preciso fazer algumas coisas para que as idéias se aprofundem, mas se você continuar se conectando, eventualmente ele vai aparecer em você e você ficará surpreso com quantos padrões de design podem ser construir em cima desta abstração / interface.

Uma vez que você curte o Haskell, você terá o suficiente do arsenal do FP à sua disposição para ser perigoso. O ponto é, continue até até conseguir. Não há atalhos.

    
por 20.06.2014 / 19:42
fonte
-3

Na medida em que a metodologia de projeto para FP é projetar seus tipos para refletir com precisão o espaço do problema e a implementação deve seguir automaticamente, o equivalente em FP de um livro sobre padrões de design é algo como de Chris Okasaki /rads.stackoverflow.com/amzn/click/0521663504"> Estruturas de dados funcionais funcionais .

    
por 03.07.2011 / 09:42
fonte