知乎上看到有人说是 csharp, 搜了一下发现 csharp3.0(07 年)才支持这个语法
1
vToExer 309 天前
在编程语言历史中,代表 Lambda 表达式用箭头符号 "->" 或 "=>" 的确非常常见,但是要找到一个比 JavaScript 更早使用的语言,可能要涉及到一些历史悠久的或者不太为现代编程所熟知的语言。在我所获取的信息中,似乎没有比 JavaScript 更早采用这种表示方式的编程语言。值得注意的是,这并不代表实际上不存在比 JavaScript 更早使用箭头符号的语言,只是这些信息可能无法从当前可获得的资源中找到。
|
2
garipan 309 天前
@vToExer #1 你这个是 3.5 的回答不,看看 4 的回答:
最早采用箭头(-> 或 =>)来表示 lambda 表达式或匿名函数的语言之一是 ALGOL 68 。ALGOL 68 在 1968 年推出,其中引入了使用箭头 "->" 来表示函数类型。此外,另一种语言是 Miranda ,它在 1980 年代早期被开发,使用了"->"来表示匿名函数或 lambda 表达式。 然而,值得注意的是,"->" 和 "=>" 这样的表示法在后来的很多其他编程语言中变得更加流行,特别是在函数式编程语言中,比如 Haskell (使用 ->)和 Scala (使用 =>)等。这种表示法现在在许多现代语言中普遍存在,用于表示匿名函数或 lambda 表达式。 |
3
Bromine0x23 309 天前
可能是某种函数式语言
|
4
shyangs 309 天前 7
|
6
Bromine0x23 309 天前
查了下 1973 年的 ML 语言就有用 => 了
|
7
kneo 309 天前 via Android 17
不懂别答。贴这些破玩意干什么。
|
9
taotaodaddy 309 天前
我这边不联网的 GPT4 也没有乱讲
而联网的 gpt4 回答的是: 这个箭头(lambda 或者箭头函数)的表示法最早在 C#语言中出现。随后,JavaScript 在 ES6 版本中借鉴了这个语法,用于表示匿名函数和 lambda 表达式。其实这种语法简化了函数的声明,使代码更加精简,也更容易阅读。 |
10
ssz66666 309 天前 via Android
可能是(Standard) ML 吧
|
11
geelaw 309 天前 1
从渊源来说这个符号来自于 \mapsto ,初次引入应该是 Bourbaki 著《积分》第一章到第四章的部分,见 https://hsm.stackexchange.com/a/5777 翻了一下,第 13 页有
Corollaire. On suppose que M(1) = 1 ; alors, pour toute fonction numérique finie f, définie dans X, l'application p ↦ N_p(f) est croissante dans ]0, +∞[. 如果要找可以机器执行的语言(“编程语言”)则比较困难,一个思路是先找支持 anonymous function 的语言,然后一个一个查看它是否有、何时引入了箭头记号。 |
12
vToExer 309 天前
|
15
Leviathann 309 天前 6
http://dobegin.com/lambda-functions-everywhere/
Lambda function syntax in programming languages Language Lambda syntax Ver Year Haskell \x -> 2*x+1 1 1990 Python lambda x: 2*x+1 1 1994 OCaml/F# fun x -> 2*x+1 1 1996 Scala x => 2*x+1 1 2004(2) C# x => 2*x+1 3 2007(6) Ruby -> (x) { 2*x+1 } 1.9 2007(1) Groovy { x -> 2*x+1 } 1 2007(2) Visual Basic Function (x) 2*x+1 9 2007 PHP function ($x) { return 2*$x+1; } 5.3 2009 Objective-C ^(int x) { return 2*x+1; } 3.2 2009(3) Clojure (fn [x] (+ (* 2 x) 1)) 1 2009(2) C++ [](int x) { return 2*x+1; } 11 2011 Go func (x int) int { return 2*x+1 } 1 2012(2) Java x -> 2*x+1 8 2014 Swift { x in 2*x+1 } 1 2014 JavaScript x => 2*x+1 6 2015(4) Perl -> $x { 2*$x+1 } 6 2015(5) 知乎上 C#那帮人一股子饭圈味 |
16
agagega 309 天前 3
知乎上很大一部分微软粉丝,吹的并不是微软的东西有多好用,功能多强大,设计多精致,而是乐于将微软那些没有流行的技术或产品,当作代入他们怀才不遇心态的对象。
总之就是 C#没火,Silverlight 没火,ASP 没火,Windows Server 没火,Edge 换 Chromium ,都不是微软的问题,都是市场有问题,都是用户年纪小没有 taste🤣跟他们讨厌的果粉一个样 |
17
Alias4ck 309 天前
@Leviathann 我❤️Haskell
|
18
chenqh 309 天前
@agagega 本身就是技术没问题啊,不然为什么 js 这种 SB 语言会火呢,因为游览器只支持 JS 啊,如果 JS 那么好,为什么 nodejs 在后台开发上不怎么火呢
|
19
cpstar 309 天前
以我浅显对这东西的理解,这东西能不能叫“函数表达式”“函数简式”之类的,单看“拉姆达表达式”不知所云。
|
20
cnbatch 309 天前
@cpstar 它本身就有另一个称呼,叫做“匿名函数”。
之所以会叫作“lambda 表达式”,是因为最早期的“匿名函数”出现在 LISP ,但 LISP 并不使用箭头来表达,而是使用关键字 lambda 。 https://en.wikipedia.org/wiki/Anonymous_function https://zh.wikipedia.org/zh-cn/%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0 https://www.geeksforgeeks.org/lambda-functions-in-lisp/ 于是计算机学界把“匿名函数”叫作“lambda 表达式”已经有几十年的习惯了。 可以这么说,“匿名函数”其实很早就已经出现在编程语言当中,但使用箭头来表示匿名函数的做法,已经是很后期的时期了(#15 提供的列表)。 |
21
nagisaushio 309 天前 via Android
@cnbatch lambda 表达式的叫法我觉得要归因于 lambda caculus ,而不是 Lisp 。
|
22
Uanti 309 天前
你这问题应该去 emacs china 问
|
24
ychost 309 天前
我接触过的语言确实是 C# 最早,还有 async/await 、properties 均是来自 C#,不过我现在更喜欢 kotlin/groovy/dart 那种闭包写法,简单点
|
26
superedlimited 309 天前 via iPhone
不管谁是第一个使用的,但 js 的写法是最爽的。
|
27
june4 309 天前
@superedlimited js 的"->"爽大部分来自于 function 这个单词过于长了😄
|
28
kneo 308 天前 via Android
@nagisaushio 你这么说也没错。但我觉得如果没有 lisp ,也许永远不会有人管这个叫 lambda 。也就就叫管它叫匿名函数,甚至函数。
|
30
mind3x 307 天前 via Android
|
31
drymonfidelia 306 天前
@Livid 1 楼 2 楼 AI 回复还是错的
|