您希望使用通用语言的哪些功能?

Bri*_*ian 7 language-features

您希望使用通用语言的哪些功能?更准确地说,我的意思是通常根本不存在的功能,但很高兴看到,而不是"我希望动态打字很受欢迎".

ben*_*ith 11

我经常认为"可观察"会产生很好的场修改器(如公共,私有,静态等)

GameState {
   observable int CurrentScore;
}
Run Code Online (Sandbox Code Playgroud)

然后,其他类可以声明该属性的观察者:

ScoreDisplay {
   observe GameState.CurrentScore(int oldValue, int newValue) {
      ...do stuff...
   }
}
Run Code Online (Sandbox Code Playgroud)

编译器将使用通知代码包装对CurrentScore属性的所有访问,并在修改值时立即通知观察者.

当然,你可以使用事件监听器和属性更改处理程序在大多数编程语言中做同样的事情,但这是一个巨大的痛苦,需要大量零碎的管道,特别是如果你不是你想要的值的类的作者观察.在这种情况下,您通常必须编写包装器子类,将所有操作委派给原始对象并从mutator方法发送更改事件.为什么编译器不能生成所有那些愚蠢的样板代码?


Jor*_*ans 5

我想最明显的答案是类似Lisp的宏.能够使用您的代码处理您的代码非常"元",并允许从(几乎)开始开发一些非常令人印象深刻的功能.

紧随其后的是C++等语言的双重或多重发送.如果多态可以扩展到虚函数的参数,我会喜欢它.


mip*_*adi 5

我希望有更多的语言来拥有像Haskell这样的类型系统.Haskell使用了一个非常棒的类型推理系统,所以你几乎不必声明类型,但它仍然是一种强类型语言.

我也非常喜欢你在Haskell中声明新类型的方式.我认为它比例如面向对象的系统更好.例如,要在Haskell中声明二叉树,我可以执行以下操作:

data Tree a = Node a (Tree a) (Tree a) | Nothing
Run Code Online (Sandbox Code Playgroud)

因此,复合数据类型更像是代数类型而不是对象.我认为这使得该程序的推理变得更加容易.

另外,混合类型类更好.类型类只是一个类实现的一组类 - 有点像Java这样的语言中的接口,但更像是像Ruby这样的语言中的mixin,我猜.这很酷.

理想情况下,我希望看到像Python这样的语言,但是使用数据类型和类型类(如Haskell而不是对象).


Ken*_*ric 5

我是闭包/匿名功能的忠实粉丝.

my $y = "world"; 

my $x = sub {  print @_ , $y }; 

&$x( 'hello' );  #helloworld 
Run Code Online (Sandbox Code Playgroud)

my $adder = sub {
    my $reg = $_[0];
    my $result = {};
    return sub { return $reg + $_[0]; }
};

print $adder->(4)->(3);
Run Code Online (Sandbox Code Playgroud)

我只是希望它们更常见.


Bri*_*ian 2

首先,如果您想使用转义码,我希望字符串的标准是使用前缀,而不是默认使用它们。例如,在 C# 中,您可以为原始字符串添加 @ 前缀。同样,Python 有 r 前缀。当我不需要原始字符串并且需要转义码时,我宁愿使用@/r。