作者NilPtr (神奇的空指标)
看板PLT
标题[闲聊] Meta-programming强的语言有哪些?
时间Wed Dec 24 00:21:05 2014
小弟最近玩C++的Template Meta-programming玩得有点上瘾了,
C++只靠Template做出来的元编程在所有语言中不是算是顶尖的吧?
所以我想研究一下别的语言的元编程,希望版上有相关经验的大大
能够给个研究方向,顺便分享一下那个语言是有多神奇XD
听说Lisp的Macro很厉害,但是我估狗来估狗去的还是看不太懂,
希望有大神能够举例一下(听说Ruby好像在这方面也很在行呢)
也欢迎有元编程成瘾症的患者一起讨论真实/幻想中的元编程,
功能会有多神奇~ XD
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.252.20.53
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PLT/M.1419351667.A.920.html
1F:推 mars90226: 个人觉得Ruby挺强,有define_method, method_missing 12/24 01:19
2F:→ mars90226: 还有send可以用,还可以改Class这个class去影响其他cla 12/24 01:20
3F:→ mars90226: class 12/24 01:20
4F:推 mars90226: Ruby在修改class方面的工具挺多,很轻易就可以做meta 12/24 01:22
5F:→ mars90226: programming相关的事情,google一下就有很多文章介绍 12/24 01:22
6F:→ mars90226: 一个最明显的例子就是standard library中的OpenStruct 12/24 01:24
7F:→ mars90226: person = OpenStruct.new; person.name = "Mars" 12/24 01:25
8F:→ mars90226: person.name # => "Mars" 完全不用管有没有name这个 12/24 01:26
9F:→ mars90226: attribute在里面,他内部就是用method_missing做的 12/24 01:26
10F:→ NilPtr: Ruby真的很方便,难怪有些人喜欢用Ruby来做DSL 12/24 17:58
11F:→ NilPtr: 而且Ruby的元编程非常的动态,之前好像看过能自己生出 12/24 18:00
12F:→ NilPtr: 一串结构类似的method的方法,像是自己生一堆setter之类的 12/24 18:03
13F:→ NilPtr: 是说我以前就摸过C++的TMP技术,直到最近学了FP类的语言 12/24 21:02
14F:→ NilPtr: 才知道C++Programmer口中的TMP特例化根本就是FP的匹配模式 12/24 21:03
15F:推 suhorng: 话说我觉得虽然很像, 不过应该有点差别; FP 的模式匹配会 12/24 21:08
16F:推 suhorng: (通常)由上到下 matching, C++ 则不是 12/24 21:08
19F:推 enthos: FORTH定义 : 1 type ; : 2 s" enthos" ; : 3 ." Hello," ; 12/30 23:06
20F:→ enthos: 执行, 3 2 1 结果 Hello,enthos ok 12/30 23:06
21F:→ enthos: 原本的加法 1 9 + . 10 ok 12/30 23:13
22F:→ enthos: 把1定义成9,+定义成* : 1 9 ; : + * ; redefined + ok 12/30 23:13
23F:→ enthos: 执行 1 9 + . 81 ok 12/30 23:13
25F:→ DBoyX: lua, javascript 03/24 19:59