<?xml version="1.0" encoding="UTF-8"?>
<mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/mods/v3" version="3.1" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-1.xsd">
  <titleInfo>
    <title>Domain modeling made functional</title>
    <subTitle>tackle software complexity with domain-driven design and F#</subTitle>
  </titleInfo>
  <name type="personal">
    <namePart>Wlaschin, Scott</namePart>
    <role>
      <roleTerm authority="marcrelator" type="text">creator</roleTerm>
    </role>
    <role>
      <roleTerm type="text">author</roleTerm>
    </role>
  </name>
  <name type="personal">
    <namePart>MacDonald, Brian</namePart>
    <role>
      <roleTerm type="text">editor</roleTerm>
    </role>
  </name>
  <typeOfResource>text</typeOfResource>
  <originInfo>
    <place>
      <placeTerm type="code" authority="marccountry">xx</placeTerm>
    </place>
    <place>
      <placeTerm type="text">North Carolina</placeTerm>
    </place>
    <publisher>The Pragmatic Bookshelf</publisher>
    <dateIssued>©2018</dateIssued>
    <dateIssued encoding="marc">2018</dateIssued>
    <issuance>monographic</issuance>
  </originInfo>
  <language>
    <languageTerm authority="iso639-2b" type="code">und</languageTerm>
  </language>
  <physicalDescription>
    <extent>xiii, 290 pages :  illustrations ;  24 cm.</extent>
  </physicalDescription>
  <abstract>Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality. Domain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming - all the techniques you need will be introduced and explained. Model a complex domain accurately using the F# type system, creating compilable code that is also readable documentation---ensuring that the code and design never get out of sync. Encode business rules in the design so that you have "compile-time unit tests," and eliminate many potential bugs by making illegal states unrepresentable. Assemble a series of small, testable functions into a complete use case, and compose these individual scenarios into a large-scale design. Discover why the combination of functional programming and DDD leads naturally to service-oriented and hexagonal architectures. Finally, create a functional domain model that works with traditional databases, NoSQL, and event stores, and safely expose your domain via a website or API. Solve real problems by focusing on real-world requirements for your software. What You Need: The code in this book is designed to be run interactively on Windows, Mac and Linux. You will need a recent version of F# (4.0 or greater), and the appropriate .NET runtime for your platform.Full installation instructions for all platforms at fsharp.org.</abstract>
  <tableOfContents>Content notes
Part 1. Understanding the domain. Introducing domain-driven design -- Understanding the domain -- A functional architecture -- Part 2.
Modeling the domain. Understanding types -- Domain modeling with types -- Integrity and consistency in the domain -- Modeling workflows as
pipelines -- Part 3. Implementing the model. Understanding functions -- Implementation : composing a pipeline -- Implementation : working
with errors -- Serialization -- Persistence -- Evolving a design and keeping it clean</tableOfContents>
  <note type="statement of responsibility">Scott Wlaschin</note>
  <note>Includes bibliographical references and index.</note>
  <subject>
    <topic>Computer software</topic>
    <topic>Development</topic>
  </subject>
  <classification authority="lcc">QA76.76.D47 WLA</classification>
  <identifier type="isbn" invalid="yes"/>
  <recordInfo>
    <recordContentSource authority="marcorg"/>
    <recordCreationDate encoding="marc">180502</recordCreationDate>
    <recordChangeDate encoding="iso8601">20260618103431.0</recordChangeDate>
    <languageOfCataloging>
      <languageTerm authority="iso639-2b" type="code">eng</languageTerm>
    </languageOfCataloging>
  </recordInfo>
</mods>
