<?xml version="1.0" encoding="UTF-8"?>
<record
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
    xmlns="http://www.loc.gov/MARC21/slim">

  <leader>03546nam a22002655a 4500</leader>
  <controlfield tag="003">GSU</controlfield>
  <controlfield tag="005">20260618103431.0</controlfield>
  <controlfield tag="008">180502s2018    xx |||||o|||||000 0|und|d</controlfield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="z">9781680502541 (paperback)</subfield>
  </datafield>
  <datafield tag="040" ind1=" " ind2=" ">
    <subfield code="e">rda</subfield>
    <subfield code="b">eng</subfield>
    <subfield code="c">GSU</subfield>
    <subfield code="d">GSU</subfield>
  </datafield>
  <datafield tag="050" ind1="0" ind2="0">
    <subfield code="a">QA76.76.D47</subfield>
    <subfield code="b">WLA</subfield>
  </datafield>
  <datafield tag="100" ind1="1" ind2=" ">
    <subfield code="a">Wlaschin, Scott</subfield>
    <subfield code="e">author</subfield>
  </datafield>
  <datafield tag="245" ind1="1" ind2="0">
    <subfield code="a">Domain modeling made functional :</subfield>
    <subfield code="b">tackle software complexity with domain-driven design and F# /</subfield>
    <subfield code="c">Scott Wlaschin</subfield>
  </datafield>
  <datafield tag="260" ind1=" " ind2=" ">
    <subfield code="a">North Carolina :</subfield>
    <subfield code="b">The Pragmatic Bookshelf, </subfield>
    <subfield code="c">&#xA9;2018</subfield>
  </datafield>
  <datafield tag="300" ind1=" " ind2=" ">
    <subfield code="a">xiii, 290 pages : </subfield>
    <subfield code="b">illustrations ; </subfield>
    <subfield code="c">24 cm.</subfield>
  </datafield>
  <datafield tag="336" ind1=" " ind2=" ">
    <subfield code="a">text</subfield>
    <subfield code="b">txt</subfield>
    <subfield code="2">rdacontent</subfield>
  </datafield>
  <datafield tag="337" ind1=" " ind2=" ">
    <subfield code="a">unmediated</subfield>
    <subfield code="b">n</subfield>
    <subfield code="2">rdamedia</subfield>
  </datafield>
  <datafield tag="338" ind1=" " ind2=" ">
    <subfield code="a">volume</subfield>
    <subfield code="b">nc</subfield>
    <subfield code="2">rdacarrier</subfield>
  </datafield>
  <datafield tag="504" ind1=" " ind2=" ">
    <subfield code="a">Includes bibliographical references and index.</subfield>
  </datafield>
  <datafield tag="505" ind1=" " ind2=" ">
    <subfield code="a">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</subfield>
  </datafield>
  <datafield tag="520" ind1=" " ind2=" ">
    <subfield code="a">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.</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2=" ">
    <subfield code="a">Computer software</subfield>
    <subfield code="v">Development</subfield>
  </datafield>
  <datafield tag="700" ind1="1" ind2=" ">
    <subfield code="a">MacDonald, Brian</subfield>
    <subfield code="e">editor</subfield>
  </datafield>
  <datafield tag="942" ind1=" " ind2=" ">
    <subfield code="2">lcc</subfield>
    <subfield code="c">BK</subfield>
    <subfield code="h">QA76.76.D47</subfield>
    <subfield code="k">QA</subfield>
    <subfield code="m">WLA</subfield>
    <subfield code="n">0</subfield>
  </datafield>
  <datafield tag="999" ind1=" " ind2=" ">
    <subfield code="c">2662</subfield>
    <subfield code="d">2662</subfield>
  </datafield>
  <datafield tag="952" ind1=" " ind2=" ">
    <subfield code="0">0</subfield>
    <subfield code="1">0</subfield>
    <subfield code="2">lcc</subfield>
    <subfield code="4">0</subfield>
    <subfield code="7">0</subfield>
    <subfield code="8">GC</subfield>
    <subfield code="a">GSULE</subfield>
    <subfield code="b">GSULE</subfield>
    <subfield code="c">GEN</subfield>
    <subfield code="d">2026-05-19</subfield>
    <subfield code="e">B A I</subfield>
    <subfield code="i">05621</subfield>
    <subfield code="l">0</subfield>
    <subfield code="o">QA76.76.D47 WLA</subfield>
    <subfield code="p">50000006753</subfield>
    <subfield code="r">2026-05-19 11:52:00</subfield>
    <subfield code="t">1</subfield>
    <subfield code="w">2026-05-19</subfield>
    <subfield code="y">BK</subfield>
  </datafield>
  <datafield tag="952" ind1=" " ind2=" ">
    <subfield code="0">0</subfield>
    <subfield code="1">0</subfield>
    <subfield code="2">lcc</subfield>
    <subfield code="4">0</subfield>
    <subfield code="7">0</subfield>
    <subfield code="8">GC</subfield>
    <subfield code="a">GSULE</subfield>
    <subfield code="b">GSULE</subfield>
    <subfield code="c">GEN</subfield>
    <subfield code="d">2026-05-19</subfield>
    <subfield code="e">B A I</subfield>
    <subfield code="i">05622</subfield>
    <subfield code="l">0</subfield>
    <subfield code="o">QA76.76.D47 WLA</subfield>
    <subfield code="p">50000006754</subfield>
    <subfield code="r">2026-05-19 11:52:00</subfield>
    <subfield code="t">2</subfield>
    <subfield code="w">2026-05-19</subfield>
    <subfield code="y">BK</subfield>
  </datafield>
  <datafield tag="952" ind1=" " ind2=" ">
    <subfield code="0">0</subfield>
    <subfield code="1">0</subfield>
    <subfield code="2">lcc</subfield>
    <subfield code="4">0</subfield>
    <subfield code="7">0</subfield>
    <subfield code="8">GC</subfield>
    <subfield code="a">GSULE</subfield>
    <subfield code="b">GSULE</subfield>
    <subfield code="c">GEN</subfield>
    <subfield code="d">2026-05-19</subfield>
    <subfield code="e">B A I</subfield>
    <subfield code="i">05625</subfield>
    <subfield code="l">0</subfield>
    <subfield code="o">QA76.76.D47 WLA</subfield>
    <subfield code="p">50000006948</subfield>
    <subfield code="r">2026-06-17 21:41:31</subfield>
    <subfield code="t">3</subfield>
    <subfield code="w">2026-05-19</subfield>
    <subfield code="y">BK</subfield>
  </datafield>
</record>
