爱意满满的作品展示区。
taowen

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

  •  
  •   taowen · Jul 23, 2017 · 5328 views
    This topic created in 3285 days ago, the information mentioned may be changed or developed.

    项目代言熊

    wombat

    目标

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

    详细内容

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

    • 动态编译
    • 静态代码生成
    • 泛型展开时计算
    • 递归展开
    • 泛型容器
    • 类型推断
    6 replies    2017-11-23 11:55:03 +08:00
    trys1
        1
    trys1  
       Jul 23, 2017 via Android
    楼下的,你说这个会火吗?
    sorra
        2
    sorra  
       Jul 23, 2017
    好东西
    ihciah
        3
    ihciah  
       Jul 23, 2017 via iPhone
    熊很萌啊!
    smithtel
        4
    smithtel  
       Jul 23, 2017
    go 本熊
    glacier2002
        5
    glacier2002  
       Jul 26, 2017
    表示没看懂。。。
    SlipStupig
        6
    SlipStupig  
       Nov 23, 2017
    这到底是什么物种啊,长得不像老鼠也不想猪,更不像熊.............
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3279 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 00:30 · PVG 08:30 · LAX 17:30 · JFK 20:30
    ♥ Do have faith in what you're doing.