On Thursday, 8 February 2018 at 15:23:05 UTC, Simen Kjærås wrote:
So I was bored in a meeting and decided to implement a generic template for defining complex numbers, dual numbers, quaternions and many other possible algebras by simply defining a set of rules and the components on which they act:


alias quaternion = Algebra!(
        float,
        "1,i,j,k",
        op("1",     any)  = any,
        op("i,j,k", self) = "-1",
        op("i",     "j")  = "k".antiCommutative,
        op("j",     "k")  = "i".antiCommutative,
        op("k",     "i")  = "j".antiCommutative,
    );

source:

https://gist.github.com/Biotronic/833680b37d4afe774c8562fd21554c6b

--
  Simen

It would be nice if you learned how to document your code. It's not always easy for someone on the outside to be able to pick it up and it ultimately means your hard work will be less used as it could be. I know that sometimes comments can be redundant but it can also provide a better understanding.

For example, it seems that you are using a group presentation to define the a algebra... but a few examples are not enough to provide a complete context in what it can be used for besides the example. This requires understanding the details in detail, which can be too time consuming for some. For example, can it be used to define an algebra on sets? If not, could it be modified to do so easily? To answer that one probably has to know how the code works in detail... which means spending time, which then goes to if it is worth it over a new implementation, etc.



Reply via email to