Code Monkey home page Code Monkey logo

Comments (6)

thomashaener avatar thomashaener commented on June 7, 2024

Most compiler engines have an internal state, so re-using them does not make sense unless you reset that internal state (so you might as well create a new object).

from projectq.

Strilanc avatar Strilanc commented on June 7, 2024

If that's the case, then the "engine list" should be a list of engine-state-creators. Keep the configuration data separate from the state data.

from projectq.

thomashaener avatar thomashaener commented on June 7, 2024

This is why default_engines creates the list and is not itself a list of engines.
The reason we do not want to enforce this in general is that it becomes very cumbersome to use.

from projectq.

Strilanc avatar Strilanc commented on June 7, 2024

In general I would say that ProjectQ has far too much mutability throughout its design. This is one of the more egregious cases, because compiler passes are the kind of thing you configure and then keep around,

from projectq.

thomashaener avatar thomashaener commented on June 7, 2024

The user might want to access the state of a compiler engine (e.g., resource counts, circuits, ... at intermediate compilation steps). So it is easiest if the user can provide a list of objects which he/she can access after compiling the quantum program. It then also doesn't make sense to re-use this engine_list for, e.g., a different quantum program.

from projectq.

Strilanc avatar Strilanc commented on June 7, 2024

The fix you pushed has helped with this a lot.

I do still think it's a good idea to somehow extract the engine linked list so that it is not inline with the engine instances, but I think you addressed the core of this issue.

from projectq.

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.