GithubHelp home page GithubHelp logo

Comments (4)

qwertie avatar qwertie commented on September 21, 2024

Since EC# doesn't have dynamic syntax, the answer depends on what syntax you want. So what syntax do you want?

from ecsharp.

furesoft avatar furesoft commented on September 21, 2024

i want a swap operator:

a <-> b

from ecsharp.

qwertie avatar qwertie commented on September 21, 2024

While EC# doesn't let you use that exact syntax, you can use the backtick operator which has customizable text. Here's how it's supposed to work:

define operator`<->`($a, $b) { G.Swap(ref $a, ref $b); }

void f() {
    int a = 1, b = 2;
    a `<->` b;
}

This assumes you have a swap function called G.Swap (it exists in Loyc.Essentials). Unfortunately when I tried this, the output was incorrect... it came out as G.Swap(a, b) instead of G.Swap(ref a, ref b) so I will have to investigate how the ref modifier got eaten. However you can write it like this to do the swap inline:

define operator`<->`($a, $b) {
    { var _tmp_ = $a; $a = $b; $b = _tmp_; }
}

LeMP macros are not hygienic, so the _tmp_ variable needs to be declared inside its own scope to avoid conflicts when <-> is used more than once in a method.

from ecsharp.

qwertie avatar qwertie commented on September 21, 2024

I hope that answers your question well enough.

from ecsharp.

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.