Giter Club home page Giter Club logo

Comments (9)

dpsanders avatar dpsanders commented on July 22, 2024

(Closed accidentally.)

from intervalarithmetic.jl.

lbenet avatar lbenet commented on July 22, 2024

I understand the idea, but I'm not so sure about it; I'm simply thinking about the "validated" part of all that.

What about implementing an UnsafeInterval type (or whatever name you want) which does what you want (and is not exported), and the relevant methods to convert it to an Interval, which involves checking the correctness of the interval?

from intervalarithmetic.jl.

dpsanders avatar dpsanders commented on July 22, 2024

Given a valid interval, all the functions in the library will return a valid interval.
(If they didn't, then the current test suite would fail.)

So the problem is only constructing valid intervals to start with, which is what the interval function will check for.

Using an UnsafeInterval type will simply require rewriting every function in the library to use it ;)

from intervalarithmetic.jl.

dpsanders avatar dpsanders commented on July 22, 2024

Although it's possible that it would be useful to make a SafeInterval type that does all the checking (as currently stands), make both of them subtypes of an abstract supertype, and rewrite everything to use the abstract supertype.

abstract Interval

immutable UnsafeInterval <: Interval
immutable SafeInterval <: Interval

and run the test suite with both types sometimes.

from intervalarithmetic.jl.

lbenet avatar lbenet commented on July 22, 2024

Whatever (SafeInterval or UnsafeInterval) I think this is more convenient than the function interval, since we would be dispatching on them.

The question is how to enforce the user to use the SafeInterval? I think we should do it by only exporting the SafeInterval version (currently Interval) and constructing a fast conversion from UnsafeInterval to SafeInterval. Yet, I'm not sure how to avoid the checks in SafeInterval...

from intervalarithmetic.jl.

dpsanders avatar dpsanders commented on July 22, 2024

I have implemented a simpler solution in the simplify_constructor branch: there is a global variable validity_check defined at the start of intervals.jl. If it is true, then the validity check is compiled into the constructor; if not, then the validity check is omitted.

Currently you have to manually go and change it in that file, and then do using IntervalArithmetic, and validity checks will be enabled.

If validity checks are disabled, then the interval function validates the input and creates the interval.

from intervalarithmetic.jl.

dpsanders avatar dpsanders commented on July 22, 2024

Not sure what else there is to do here.

from intervalarithmetic.jl.

lbenet avatar lbenet commented on July 22, 2024

Same as for #36...

from intervalarithmetic.jl.

dpsanders avatar dpsanders commented on July 22, 2024

This has been done: the Interval constructor does no checks; checks are done by using interval.

from intervalarithmetic.jl.

Related Issues (20)

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.