Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Compondo um Sistema

Compondo um Sistema

Estado é difícil. Não à toa vemos em linguagens funcionais uma panacea para nossos problemas, já que tratam da separação do domínio de negócio daquilo que é incidental ao problema. É inevitável porém manter estas variantes, logo devemos aprender a trabalhar efetivamente com elas afim de construir qualquer aplicação não trivial. Vamos estudar como estruturar estas variáveis e compor nossa arquitetura em cima de camadas funcionais, promovendo a iteratividade e agilidade de nosso fluxo de trabalho.

Andrew Rosa

May 14, 2016
Tweet

More Decks by Andrew Rosa

Other Decks in Programming

Transcript

  1. ?

  2. N

  3. (defrecord Database [db-spec] component/Lifecycle (start [component] (assoc component :conn (make-conn!

    db-spec)) (stop [component] (release! (:conn component)) component) ! (defn make-database [db-spec] (->Database db-spec))
  4. (defrecord WebApp [db mailer] component/Lifecycle (start [component] (assoc component :handler

    (app-routes db mailer))) (stop [component] component)) ! (defn make-web-app [] (->WebApp))
  5. (defn new-system [] (component/system-map :db (make-database {:url "..."}) :mailer (make-mailer

    {:endpoint "..." :api-key "..."} :web-app (component/using (make-web-app) [:db :mailer])))