Talk:Display a linear combination

From Rosetta Code
Revision as of 23:30, 13 October 2015 by rosettacode>Craigd (→‎Wat?: huh?)

Wat?

There's a variety of ways of implementing linear combinations, and this particular task is requiring a representation which will not be executable in many languages. So it would be good to add some motivation to the task description. Why would someone want to do this? --Rdm (talk) 16:15, 13 October 2015 (UTC)

I was working on my Perl 6 Geometric Algebra library and I needed some way of displaying a multivector. By default I had an output like this one:
MultiVector.new(blades => (my Real %{UInt} = 0 => 1, 4 => 1, 10 => 3))
Which is the output from , and it is clearly not satisfying. I wanted an output that looks like the input. The more I thought about it the more I was annoyed by the idea that in order to have something that looks good I would have to make sure I don't display the scalars if they are 1, and that I use a subtraction where appropriate. It was looking like quite a hassle,so I thought: « why not make a rosetta task so that I can steal the solution from others? »  :-)
As a matter of fact soon after I created the task I realized I could get a simple solution by using string substitutions on the output, so I was actually able to write the first solution in Perl 6.
I still think it's a useful task, as it can be used for instance to display complex numbers or quaternions. In perl 6 for instance the output for complex numbers is not perfect. i is displayed as '0+1i;', which to me is acceptable but not so great. With Math::Quaternions it's much worse and arguably not acceptable.
--Grondilu (talk) 22:09, 13 October 2015 (UTC)
Sure, it's useful, but the syntactic constraints are also tailored towards perl6 - so that should at minimum be mentioned in the task description (and ideally would also have been in the page name). --Rdm (talk) 23:17, 13 October 2015 (UTC)
Is it really [targeted at Perl]? It looks like something a functional language or Lisp would be pretty good at and the Tcl solution is nice. --CraigD (talk) 23:30, 13 October 2015 (UTC)