首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
V2EX  ›  分享创造

Wombat - 对大规模生成 Go 代码的探索

  •  
  •   taowen · 2017-07-23 08:51:23 +08:00 · 2708 次点击
    这是一个创建于 636 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目代言熊

    wombat

    目标

    泛型展开不是简单的类型替换。在 C++中有模板偏特化,以及由此发展出来一系列实现编译期计算的奇技淫巧,直到最后以 constexpr 变成语言的一部分。D 语言的 static if 也是类似的,在编译期实现了 D 语言的一个子集。在 Go 2.0 中即便支持了泛型,要达到 D 语言的高度,可能还需要很长的路要走。所以目前最佳的方案还是用代码生成的方案。但是纯手写的代码生成没有办法做到很复杂的泛型代码的组合,比如一个泛型函数调用另外一个泛型函数之类的。所以 wombat 的实现目标是设计一个能够支撑大规模代码生成的机制,使得复杂的 utility 能够被广泛复用。这些 utility 不仅仅是简单的 compare,max,甚至复杂的 json 编解码,参数校验工具等都可以代码生成。

    详细内容

    全文链接 http://v2p.ro/generics.cn.html

    • 动态编译
    • 静态代码生成
    • 泛型展开时计算
    • 递归展开
    • 泛型容器
    • 类型推断
    6 回复  |  直到 2017-11-23 11:55:03 +08:00
        1
    trys1   2017-07-23 09:54:41 +08:00 via Android
    楼下的,你说这个会火吗?
        2
    sorra   2017-07-23 10:17:27 +08:00
    好东西
        3
    ihciah   2017-07-23 11:04:00 +08:00 via iPhone
    熊很萌啊!
        4
    smithtel   2017-07-23 12:45:02 +08:00
    go 本熊
        5
    glacier2002   2017-07-26 12:09:21 +08:00
    表示没看懂。。。
        6
    SlipStupig   2017-11-23 11:55:03 +08:00
    这到底是什么物种啊,长得不像老鼠也不想猪,更不像熊.............
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   776 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 20:29 · PVG 04:29 · LAX 13:29 · JFK 16:29
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1