您希望使用通用语言的哪些功能?更准确地说,我的意思是通常根本不存在的功能,但很高兴看到,而不是"我希望动态打字很受欢迎".
我经常认为"可观察"会产生很好的场修改器(如公共,私有,静态等)
GameState { observable int CurrentScore; }
然后,其他类可以声明该属性的观察者:
ScoreDisplay { observe GameState.CurrentScore(int oldValue, int newValue) { ...do stuff... } }
编译器将使用通知代码包装对CurrentScore属性的所有访问,并在修改值时立即通知观察者.
当然,你可以使用事件监听器和属性更改处理程序在大多数编程语言中做同样的事情,但这是一个巨大的痛苦,需要大量零碎的管道,特别是如果你不是你想要的值的类的作者观察.在这种情况下,您通常必须编写包装器子类,将所有操作委派给原始对象并从mutator方法发送更改事件.为什么编译器不能生成所有那些愚蠢的样板代码?
我想最明显的答案是类似Lisp的宏.能够使用您的代码处理您的代码非常"元",并允许从(几乎)开始开发一些非常令人印象深刻的功能.
紧随其后的是C++等语言的双重或多重发送.如果多态可以扩展到虚函数的参数,我会喜欢它.
我希望有更多的语言来拥有像Haskell这样的类型系统.Haskell使用了一个非常棒的类型推理系统,所以你几乎不必声明类型,但它仍然是一种强类型语言.
我也非常喜欢你在Haskell中声明新类型的方式.我认为它比例如面向对象的系统更好.例如,要在Haskell中声明二叉树,我可以执行以下操作:
data Tree a = Node a (Tree a) (Tree a) | Nothing
因此,复合数据类型更像是代数类型而不是对象.我认为这使得该程序的推理变得更加容易.
另外,混合类型类更好.类型类只是一个类实现的一组类 - 有点像Java这样的语言中的接口,但更像是像Ruby这样的语言中的mixin,我猜.这很酷.
理想情况下,我希望看到像Python这样的语言,但是使用数据类型和类型类(如Haskell而不是对象).
我是闭包/匿名功能的忠实粉丝.
my $y = "world"; my $x = sub { print @_ , $y }; &$x( 'hello' ); #helloworld
和
my $adder = sub { my $reg = $_[0]; my $result = {}; return sub { return $reg + $_[0]; } }; print $adder->(4)->(3);
我只是希望它们更常见.