What Does Haskell Have to Do with C++?

Max Samukha spambox at d-coding.com
Thu Oct 22 09:13:16 PDT 2009


On Thu, 22 Oct 2009 10:49:43 -0400, Jeremie Pelletier
<jeremiep at gmail.com> wrote:

>http://bartoszmilewski.wordpress.com/2009/10/21/what-does-haskell-have-to-do-with-c/
>
>Bartosz's second part of 'Template Metaprogramming Made Easy (Huh?)', 
>its quite a read :)

template allSatisfy(alias Pred, T...) {
    foreach(t; T)
        if (!Pred!(t))
            return false;
    return true;
}

Not that I disagree but something similar is doable now with CTFE +
'static' foreach hack. Of course you cannot return types, etc.

template TypeTuple(A...)
{
    alias A TypeTuple;
}


bool allSatisfy(alias pred, T...)()
{
   foreach (i, _; T)
   {
      static if (!pred!(T[i]))
        return false;
   }
   return true;
}

template TypePred(T)
{
   bool TypePred(U)()
   {
      return is(T == U);
   }
}

enum r = allSatisfy!(TypePred!bool, TypeTuple!(bool, bool, bool));
static assert(r);

BTW, is Bartosz's code published anywhere and what is the license? It
looks like I'm trying to do the same thing.



More information about the Digitalmars-d mailing list