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

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

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

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    项目代言熊

    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
    trys1
        1
    trys1  
       2017-07-23 09:54:41 +08:00 via Android
    楼下的,你说这个会火吗?
    sorra
        2
    sorra  
       2017-07-23 10:17:27 +08:00
    好东西
    ihciah
        3
    ihciah  
       2017-07-23 11:04:00 +08:00 via iPhone
    熊很萌啊!
    smithtel
        4
    smithtel  
       2017-07-23 12:45:02 +08:00
    go 本熊
    glacier2002
        5
    glacier2002  
       2017-07-26 12:09:21 +08:00
    表示没看懂。。。
    SlipStupig
        6
    SlipStupig  
       2017-11-23 11:55:03 +08:00
    这到底是什么物种啊,长得不像老鼠也不想猪,更不像熊.............
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5340 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 08:24 · PVG 16:24 · LAX 01:24 · JFK 04:24
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com