最牛的实现:编译时自编译代码

oldrev 2007-04-04
刚在新闻组里看到的。
Blade是一个矢量计算程序,它在编译时利用MP和CTFE把D的表达式转换为文本形式的x87汇编程序,然后用 mixin() 把汇编程序嵌入主程序!

http://www.dsource.org/projects/mathextra/browser/trunk/mathextra/Blade.d

tomqyp 2007-04-04
果然NB
oldrev 2007-04-11
高人 Pragma 所作——用 tuple 实现树结构:
import std.stdio;

template Node(char[] Data,Nodes...){
        alias Data data;
        alias Nodes nodes;
}

template PrintData(char[] parent){
        const char[] PrintData = "";
}

template PrintData(char[] parent,alias Node){
        static if(parent == ""){
                const char[] PrintData = Node.data ~ "\n" ~
                        PrintData!(Node.data,Node.nodes);
        }
        else{
                const char[] PrintData = parent ~ "." ~ Node.data ~ "\n" ~
                        PrintData!(parent ~ "." ~ Node.data,Node.nodes);
        }
}

template PrintData(char[] parent,alias Node,V...){
        const char[] PrintData = PrintData!(parent,Node) ~ PrintData!(parent,V);
}

// example "tree" structure
alias Node!("1",
        Node!("1"),
        Node!("2",
                Node!("1"),
                Node!("2")
        )
) dataset;

void main(){
        writefln("%s",PrintData!("",dataset));
}
Global site tag (gtag.js) - Google Analytics