Functional Design and Architecture

Paperback Engels 2024 9781617299612
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

Design patterns and architectures for building production quality applications using functional programming, with examples in Haskell and other FP languages.

In  Functional Design and Architecture you will learn:

Designing production applications in statically typed functional languages such as Haskell Controlling code complexity with functional interfaces Architectures, subsystems, and services for functional languages Developing concurrent frameworks and multithreaded applications Domain-driven design using free monads and other functional tools Property-based, integrational, functional, unit, and automatic whitebox testing
Functional Design and Architecture is a pioneering guide to software engineering using Haskell and other functional languages. In it, you'll discover Functional Declarative Design and other design principles perfect for working in Haskell, PureScript, F#, and Scala. about the technology Functional programming offers a powerful alternative to object-oriented programming that helps tackle the complexities of large-scale software. Entrenched design patterns and architectural principles made for OOP are poorly suited for creating large-scale functional applications. This book lays out new methodologies, principles, and architectures optimized for high-level software design using functional languages. about the book Functional Design and Architecture is a comprehensive guide to software engineering using functional programming. Inside, you'll find cutting-edge functional design principles and practices for every stage of application development, from architecting your application through to running simple and maintainable tests. There's no abstract theory—you'll learn by building exciting sample applications, including an application for controlling a spaceship and a full-fledged backend framework.

You'll explore functional design by looking at object-oriented principles you might already know, and learn how they can be reapplied to a functional environment. By the time you're done, you'll be ready to apply the brilliant innovations of the functional world to serious software projects.

Specificaties

ISBN13:9781617299612
Taal:Engels
Bindwijze:Paperback

Lezersrecensies

Wees de eerste die een lezersrecensie schrijft!

Inhoudsopgave

<div class="product-page-section table-of-contents meap-contents" style="box-sizing: border-box; margin-bottom: 36px; color: rgb(51, 51, 51); font-family: Lato, -apple-system, BlinkMacSystemFont, &quot;avenir next&quot;, avenir, &quot;helvetica neue&quot;, helvetica, Ubuntu, roboto, noto, &quot;segoe ui&quot;, arial, sans-serif; font-size: 17.25px;"> <h2 class="header" style="box-sizing: border-box; line-height: 1.1; color: inherit; margin: 0px 0px 10px; font-size: 27px; text-transform: lowercase;"><span style="box-sizing: border-box;">table of contents</span></h2> <a id="show-hide" style="box-sizing: border-box; color: rgb(0, 0, 0); font-size: 13px; font-weight: lighter; cursor: pointer;"><span class="fas fa-toggle-off" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; text-rendering: auto; line-height: 1; font-family: &quot;Font Awesome 5 Free&quot;; font-weight: 900; color: rgb(64, 127, 191);"></span>&nbsp;detailed TOC</a> <a name="toc" class="anchor" style="box-sizing: border-box; color: rgb(64, 127, 191); visibility: hidden; display: block; position: relative;"></a> <div class="toc" style="box-sizing: border-box; padding-top: 0px; user-select: none; margin-bottom: 0px; padding-bottom: 0px;"> <h1 id="part_id_1" class="sect0" style="box-sizing: border-box; font-size: 18px; margin: 19px 0px 0px; line-height: 22px; color: inherit; text-transform: uppercase; border-bottom: thin solid rgb(119, 119, 119); padding-bottom: 0.25em;">PART 1: INTRODUCTION TO FUNCTIONAL DECLARATIVE DESIGN</h1> <div class="sect1 available" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 19px;"> <span class="book_actions" style="box-sizing: border-box;"><a class="view-in-livebook" href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-1?origin=product-toc" title="Read in liveBook" target="_blank" style="box-sizing: border-box; color: rgb(51, 51, 51); text-decoration-line: none; display: block; float: right;"><span class="sr-only" style="box-sizing: border-box; border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; width: 1px;">READ IN LIVEBOOK</span></a></span> <h2 id="chapter_id_1" data-toggle="tooltip" data-placement="left" title="" data-original-title="Available" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px; cursor: pointer;"><a href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-1?origin=product-toc" title="Read in liveBook" class="read-in-livebook" target="_blank" style="box-sizing: border-box; color: rgb(64, 127, 191); text-decoration-line: none;"><span class="leading-number" style="box-sizing: border-box; margin-right: 0.5em; display: inline-block; white-space: nowrap;">1</span>WHAT IS SOFTWARE DESIGN?</a><a class="toc-controllo toc-expando" style="box-sizing: border-box; margin: -0.5em -0.5em -0.5em 0px; padding: 0.5em; cursor: pointer;"><span class="fa fa-caret-right expando" title="Expand" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; text-rendering: auto; line-height: 1; font-family: &quot;Font Awesome 5 Free&quot;;"></span></a></h2> </div> <div class="sect1 available" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <span class="book_actions" style="box-sizing: border-box;"><a class="view-in-livebook" href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-2?origin=product-toc" title="Read in liveBook" target="_blank" style="box-sizing: border-box; color: rgb(51, 51, 51); text-decoration-line: none; display: block; float: right;"><span class="sr-only" style="box-sizing: border-box; border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; width: 1px;">READ IN LIVEBOOK</span></a></span> <h2 id="chapter_id_2" data-toggle="tooltip" data-placement="left" title="" data-original-title="Available" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px; cursor: pointer;"><a href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-2?origin=product-toc" title="Read in liveBook" class="read-in-livebook" target="_blank" style="box-sizing: border-box; color: rgb(64, 127, 191); text-decoration-line: none;"><span class="leading-number" style="box-sizing: border-box; margin-right: 0.5em; display: inline-block; white-space: nowrap;">2</span>THE BASICS OF FUNCTIONAL DECLARATIVE DESIGN</a><a class="toc-controllo toc-expando" style="box-sizing: border-box; margin: -0.5em -0.5em -0.5em 0px; padding: 0.5em; cursor: pointer;"><span class="fa fa-caret-right expando" title="Expand" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; text-rendering: auto; line-height: 1; font-family: &quot;Font Awesome 5 Free&quot;;"></span></a></h2> </div> <h1 id="part_id_2" class="sect0" style="box-sizing: border-box; font-size: 18px; margin: 19px 0px 0px; line-height: 22px; color: inherit; text-transform: uppercase; border-bottom: thin solid rgb(119, 119, 119); padding-bottom: 0.25em;">PART 2: MINIMUM VIABLE PRODUCT</h1> <div class="sect1 available" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 19px;"> <span class="book_actions" style="box-sizing: border-box;"><a class="view-in-livebook" href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-3?origin=product-toc" title="Read in liveBook" target="_blank" style="box-sizing: border-box; color: rgb(51, 51, 51); text-decoration-line: none; display: block; float: right;"><span class="sr-only" style="box-sizing: border-box; border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; width: 1px;">READ IN LIVEBOOK</span></a></span> <h2 id="chapter_id_3" data-toggle="tooltip" data-placement="left" title="" data-original-title="Available" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px; cursor: pointer;"><a href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-3?origin=product-toc" title="Read in liveBook" class="read-in-livebook" target="_blank" style="box-sizing: border-box; color: rgb(64, 127, 191); text-decoration-line: none;"><span class="leading-number" style="box-sizing: border-box; margin-right: 0.5em; display: inline-block; white-space: nowrap;">3</span>DRAFTING THE MVP APPLICATION</a><a class="toc-controllo toc-expando" style="box-sizing: border-box; margin: -0.5em -0.5em -0.5em 0px; padding: 0.5em; cursor: pointer;"><span class="fa fa-caret-right expando" title="Expand" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; text-rendering: auto; line-height: 1; font-family: &quot;Font Awesome 5 Free&quot;;"></span></a></h2> </div> <div class="sect1 available" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <span class="book_actions" style="box-sizing: border-box;"><a class="view-in-livebook" href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-4?origin=product-toc" title="Read in liveBook" target="_blank" style="box-sizing: border-box; color: rgb(51, 51, 51); text-decoration-line: none; display: block; float: right;"><span class="sr-only" style="box-sizing: border-box; border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; width: 1px;">READ IN LIVEBOOK</span></a></span> <h2 id="chapter_id_4" data-toggle="tooltip" data-placement="left" title="" data-original-title="Available" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px; cursor: pointer;"><a href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-4?origin=product-toc" title="Read in liveBook" class="read-in-livebook" target="_blank" style="box-sizing: border-box; color: rgb(64, 127, 191); text-decoration-line: none;"><span class="leading-number" style="box-sizing: border-box; margin-right: 0.5em; display: inline-block; white-space: nowrap;">4</span>END-TO-END DESIGN</a><a class="toc-controllo toc-expando" style="box-sizing: border-box; margin: -0.5em -0.5em -0.5em 0px; padding: 0.5em; cursor: pointer;"><span class="fa fa-caret-right expando" title="Expand" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; text-rendering: auto; line-height: 1; font-family: &quot;Font Awesome 5 Free&quot;;"></span></a></h2> </div> <h1 id="part_id_3" class="sect0" style="box-sizing: border-box; font-size: 18px; margin: 19px 0px 0px; line-height: 22px; color: inherit; text-transform: uppercase; border-bottom: thin solid rgb(119, 119, 119); padding-bottom: 0.25em;">PART 3: DOMAIN-DRIVEN DESIGN</h1> <div class="sect1 available" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 19px;"> <span class="book_actions" style="box-sizing: border-box;"><a class="view-in-livebook" href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-5?origin=product-toc" title="Read in liveBook" target="_blank" style="box-sizing: border-box; color: rgb(51, 51, 51); text-decoration-line: none; display: block; float: right;"><span class="sr-only" style="box-sizing: border-box; border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; width: 1px;">READ IN LIVEBOOK</span></a></span> <h2 id="chapter_id_5" data-toggle="tooltip" data-placement="left" title="" data-original-title="Available" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px; cursor: pointer;"><a href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-5?origin=product-toc" title="Read in liveBook" class="read-in-livebook" target="_blank" style="box-sizing: border-box; color: rgb(64, 127, 191); text-decoration-line: none;"><span class="leading-number" style="box-sizing: border-box; margin-right: 0.5em; display: inline-block; white-space: nowrap;">5</span>EMBEDDED DOMAIN-SPECIFIC LANGUAGES</a><a class="toc-controllo toc-expando" style="box-sizing: border-box; margin: -0.5em -0.5em -0.5em 0px; padding: 0.5em; cursor: pointer;"><span class="fa fa-caret-right expando" title="Expand" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; text-rendering: auto; line-height: 1; font-family: &quot;Font Awesome 5 Free&quot;;"></span></a></h2> </div> <div class="sect1 available" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <span class="book_actions" style="box-sizing: border-box;"><a class="view-in-livebook" href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-6?origin=product-toc" title="Read in liveBook" target="_blank" style="box-sizing: border-box; color: rgb(51, 51, 51); text-decoration-line: none; display: block; float: right;"><span class="sr-only" style="box-sizing: border-box; border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; width: 1px;">READ IN LIVEBOOK</span></a></span> <h2 id="chapter_id_6" data-toggle="tooltip" data-placement="left" title="" data-original-title="Available" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px; cursor: pointer;"><a href="https://livebook.manning.com/book/functional-design-and-architecture/chapter-6?origin=product-toc" title="Read in liveBook" class="read-in-livebook" target="_blank" style="box-sizing: border-box; color: rgb(64, 127, 191); text-decoration-line: none;"><span class="leading-number" style="box-sizing: border-box; margin-right: 0.5em; display: inline-block; white-space: nowrap;">6</span>DOMAIN MODELING WITH FREE MONADS</a><a class="toc-controllo toc-expando" style="box-sizing: border-box; margin: -0.5em -0.5em -0.5em 0px; padding: 0.5em; cursor: pointer;"><span class="fa fa-caret-right expando" title="Expand" style="box-sizing: border-box; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; text-rendering: auto; line-height: 1; font-family: &quot;Font Awesome 5 Free&quot;;"></span></a></h2> </div> <h1 id="part_id_4" class="sect0" style="box-sizing: border-box; font-size: 18px; margin: 19px 0px 0px; line-height: 22px; color: inherit; text-transform: uppercase; border-bottom: thin solid rgb(119, 119, 119); padding-bottom: 0.25em;">PART 4: STATEFUL AND REACTIVE APPLICATIONS</h1> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 19px;"> <h2 id="chapter_id_7" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">7 APPLICATION STATE</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="chapter_id_8" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">8 REACTIVE APPLICATIONS (TODO: THE SIMULATOR)</h2> </div> <h1 id="part_id_5" class="sect0" style="box-sizing: border-box; font-size: 18px; margin: 19px 0px 0px; line-height: 22px; color: inherit; text-transform: uppercase; border-bottom: thin solid rgb(119, 119, 119); padding-bottom: 0.25em;">PART 5: DESIGNING REAL-WORLD SOFTWARE</h1> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 19px;"> <h2 id="chapter_id_9" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">9 MULTITHREADING AND CONCURRENCY</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="chapter_id_10" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">10 PERSISTENCE</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="chapter_id_11" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">11 BUSINESS LOGIC DESIGN</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="chapter_id_12" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">12 TESTING</h2> </div> <h1 id="part" class="sect0" style="box-sizing: border-box; font-size: 18px; margin: 19px 0px 0px; line-height: 22px; color: inherit; text-transform: uppercase; border-bottom: thin solid rgb(119, 119, 119); padding-bottom: 0.25em;">APPENDIXES</h1> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 19px;"> <h2 id="_plenty_of_monads" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">APPENDIX A: PLENTY OF MONADS</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="_layering_subsystems_with_a_monadic_stack" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">APPENDIX B: LAYERING SUBSYSTEMS WITH A MONADIC STACK</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="_word_statistics_example_with_monad_transformers" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">APPENDIX C: WORD STATISTICS EXAMPLE WITH MONAD TRANSFORMERS</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="_application_architectures_in_haskell_and_scala" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">APPENDIX D: APPLICATION ARCHITECTURES IN HASKELL AND SCALA</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="_the_mvar_request_response_pattern" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">APPENDIX E: THE MVAR REQUEST-RESPONSE PATTERN</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="_free_monadic_edsl_for_an_interactive_fiction_game" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">APPENDIX F: FREE MONADIC EDSL FOR AN INTERACTIVE FICTION GAME</h2> </div> <div class="sect1" style="box-sizing: border-box; font-weight: bold; text-transform: uppercase; margin-top: 6px;"> <h2 id="_haskell_and_purescript" style="box-sizing: border-box; line-height: 22px; color: inherit; margin: 0px; font-size: 15px;">APPENDIX G: HASKELL AND PURESCRIPT</h2> </div> </div> </div>

Managementboek Top 100

Rubrieken

    Personen

      Trefwoorden

        Functional Design and Architecture