Git Product home page Git Product logo

bimap.mo's People

Contributors

q-uint avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

difibase 7flash

bimap.mo's Issues

clumsy workaround to access Overwritten<L, R>

Sorry, wasn't sure where to put this. I'm writing a commit/rollback transaction system and I use BiMap for indexes.

This is the code I have in my index, had to do it this way as Overwritten isn't public. Can you think of a better way for me to do it? Is it possible to maybe have a method that accepts Overwritten?

    // remove
    public func remove(v : T) {
      ignore data.removeByLeft(v);
    };

    type Overwritten<L, R> = {
      #Neither;
      #Right : (L, R);
      #Pair  : (L, R);
      #Left  : (L, R);
      #Both  : ((L, R), (L, R));
    };

    // replace
    public func replace(v : T, id : Nat) : () -> () {

      // no query for null values
      if (isNull(v)) {
        return func() {};
      };

      return switch (data.replace(v, id)) {
        case (#Neither) {
          func(){
            remove(v);
          };
        };
        case (#Left i) {
          func() {
            remove(v);
            ignore data.replace(i.0, i.1)
          };
        };
        case (#Right i) {
          func() {
            remove(v);
            ignore data.replace(i.0, i.1)
          };
        };
        case (#Pair i) {
          func() {
            remove(v);
            ignore data.replace(i.0, i.1)
          };
        };
        case (#Both (i, j)) {
          func() {
            remove(v);
            ignore data.replace(i.0, i.1);
            ignore data.replace(j.0, j.1);
          };
        };
      };
    };

Can bigmap be stable?

did not try yet but BiMap stable? if not how to implement in
preupgrade() and postupgrade()?

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.