Giter Club home page Giter Club logo

Comments (3)

swlaschin avatar swlaschin commented on June 15, 2024 1

Thanks for catching this and thanks for making a PR. I decided to handle this differently and just make the dummy implementations internal as well (which they should be anyway). So I will close the PR, but thanks again!

from domainmodelingmadefunctional.

jasondown avatar jasondown commented on June 15, 2024

@kentcb Another option to keep the actual implementation internal is to change module internal OrderTaking.PlaceOrder.Implementation to module OrderTaking.PlaceOrder.ImplementationTypes (for all the types that are declared in that file) and then in section 2 where the actual implementation of the various functions takes place, create an internal module called module internal Implementation (you'll have to define it like so module internal Implementation = and then indent everything underneath that).

Once you've done that, you just need to change the OrderTaking.PlaceOrder.Api module to qualify the types with ImplementationTypes (e.g. ImplementationTypes.CheckedAddress). You'll also have to change the placeOrderApi workflow function (at the bottom of the file) to be like so:

let placeOrderApi : PlaceOrderApi =
...
    let workflow = 
                ImplementationTypes.Implementation.placeOrder 

This exposes the types as public, but keeps the actual functions using the types as internal.

To answer your question about the compiler improvement, yes, it was a change (in 4.1 I think) to turn that into a compiler error. You can also trigger a similar compiler warning (not error) if you were to leave the code as is and add the following line as a type alias in PlaceOrder.Api:

type CheckAddressExists = Implementation.CheckAddressExists

from domainmodelingmadefunctional.

jasondown avatar jasondown commented on June 15, 2024

I've created a PR for this (I guess I did it wrong because it opened a new issue, oops). The PR is issue #17

from domainmodelingmadefunctional.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.