最牛的实现:编译时自编译代码
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)); } |