<div class="gmail_quote">On Mon, Jul 9, 2012 at 3:30 PM, Paulo Pinto <span dir="ltr"><<a href="mailto:pjmlp@progtools.org" target="_blank">pjmlp@progtools.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">On Monday, 9 July 2012 at 11:16:45 UTC, Gor Gyolchanyan wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I've put together a code sample, which could demonstrate the awesome power<br>
of D when it comes to getting good results very quickly and safely. Perhaps<br>
it could end up on display for newcomers:<br>
<br>
import std.traits;<br>
<br>
/// Returns the t-th point on the bezier curve, defined by non-empty set p<br>
of d-dimensional points, where t : [0, 1] and d > 1.<br>
real[d] bezier(size_t d, Number)(Number[d][] p, Number t)<br>
    if(d > 1 && isFloatingPoint!Number)<br>
in<br>
{<br>
    assert(p.length > 0);<br>
    assert(t >= 0.0L && t <= 1.0L);<br>
}<br>
body<br>
{<br>
    return p.length > 1 ? (1 - t) * p[0..$-1].bezier(t) + t *<br>
p[1..$].bezier(t) : p[0];<br>
}<br>
<br>
/// Returns k unidistant points on the bezier curve, defined by non-empty<br>
set p of d-dimensional points, where k > 0 and d > 1.<br>
real[d][] bezier(size_t d, Number)(Number[d][] p, size_t k)<br>
    if(d > 1 && isFloatingPoint!Number)<br>
in<br>
{<br>
    assert(p.length > 0);<br>
    assert(k > 0);<br>
}<br>
body<br>
{<br>
    Number[d][] result = new Number[d][k];<br>
    foreach(i; 0..k)<br>
        result[k] = p.bezier(i * (1.0L / k));<br>
    return result;<br>
}<br>
</blockquote>
<br></div></div>
I would not show this to newcomers, as they would probably go running for Go.<br>
<br>
This type of code is quite nice and the reason why I think I am better served with D than Go, but newcomers without strong generic programming background in other languages might get scared.<br>
<br>
--<br>
Paulo<br>
</blockquote></div><br>You're right. This is a bit advanced code sample, which uses templates, template constraints, contract programming among syntax advantages of D.<br clear="all"><div><br></div>-- <br>Bye,<br>Gor Gyolchanyan.<br>