知乎上看到有人说是 csharp, 搜了一下发现 csharp3.0(07 年)才支持这个语法

在编程语言历史中,代表 Lambda 表达式用箭头符号 "->" 或 "=>" 的确非常常见,但是要找到一个比 JavaScript 更早使用的语言,可能要涉及到一些历史悠久的或者不太为现代编程所熟知的语言。在我所获取的信息中,似乎没有比 JavaScript 更早采用这种表示方式的编程语言。值得注意的是,这并不代表实际上不存在比 JavaScript 更早使用箭头符号的语言,只是这些信息可能无法从当前可获得的资源中找到。

#1 你这个是 3.5 的回答不,看看 4 的回答:最早采用箭头(-> 或 =>)来表示 lambda 表达式或匿名函数的语言之一是 ALGOL 68 。ALGOL 68 在 1968 年推出,其中引入了使用箭头 "->" 来表示函数类型。此外,另一种语言是 Miranda ,它在 1980 年代早期被开发,使用了"->"来表示匿名函数或 lambda 表达式。然而,值得注意的是,"->" 和 "=>" 这样的表示法在后来的很多其他编程语言中变得更加流行,特别是在函数式编程语言中,比如 Haskell (使用 ->)和 Scala (使用 =>)等。这种表示法现在在许多现代语言中普遍存在,用于表示匿名函数或 lambda 表达式。

可能是某种函数式语言

ALGOL 68 和 Miranda 根本沒有箭頭函數.你的 ChatGPT4 比 ChatGPT3.5 還會胡說八道. ChatGPT 3.5 至少會說不知道.

#4 哈哈 这其实正是我想表达的 AI 回答不靠谱

查了下 1973 年的 ML 语言就有用 => 了

不懂别答。贴这些破玩意干什么。

您好,为什么要用 AI 回答来污染论坛?更不用说这句车轱辘话根本没有提供有价值信息

我这边不联网的 GPT4 也没有乱讲而联网的 gpt4 回答的是:这个箭头(lambda 或者箭头函数)的表示法最早在 C#语言中出现。随后,JavaScript 在 ES6 版本中借鉴了这个语法,用于表示匿名函数和 lambda 表达式。其实这种语法简化了函数的声明,使代码更加精简,也更容易阅读。

可能是(Standard) ML 吧

从渊源来说这个符号来自于 \mapsto ,初次引入应该是 Bourbaki 著《积分》第一章到第四章的部分,见 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 的语言,然后一个一个查看它是否有、何时引入了箭头记号。

查了一下确实 JavaScript 是正式在 2015 年 ES6 引入箭头符号,并非最早的。撤回我之前的回复。是我不懂装懂,盲目相信了 AI 结论,没有仔细求证,浪费了各位 v 友的时间,非常抱歉。

#2 加钱就是不一样

兄弟看着有点眼熟啊

dobegin.com/lambda-functions-everywhere/Lambda function syntax in programming languagesLanguage Lambda syntax Ver YearHaskell \x -> 2x+1 1 1990Python lambda x: 2x+1 1 1994OCaml/F# fun x -> 2x+1 1 1996Scala x => 2x+1 1 2004(2)C# x => 2x+1 3 2007(6)Ruby -> (x) { 2x+1 } 1.9 2007(1)Groovy { x -> 2x+1 } 1 2007(2)Visual Basic Function (x) 2x+1 9 2007PHP function ($x) { return 2*$x+1; } 5.3 2009Objective-C ^(int x) { return 2x+1; } 3.2 2009(3)Clojure (fn [x] (+ ( 2 x) 1)) 1 2009(2)C++ [](int x) { return 2x+1; } 11 2011Go func (x int) int { return 2x+1 } 1 2012(2)Java x -> 2x+1 8 2014Swift { x in 2x+1 } 1 2014JavaScript x => 2*x+1 6 2015(4)Perl -> $x { 2*$x+1 } 6 2015(5)知乎上 C#那帮人一股子饭圈味

知乎上很大一部分微软粉丝,吹的并不是微软的东西有多好用,功能多强大,设计多精致,而是乐于将微软那些没有流行的技术或产品,当作代入他们怀才不遇心态的对象。总之就是 C#没火,Silverlight 没火,ASP 没火,Windows Server 没火,Edge 换 Chromium ,都不是微软的问题,都是市场有问题,都是用户年纪小没有 taste🤣跟他们讨厌的果粉一个样

我❤️Haskell

本身就是技术没问题啊,不然为什么 js 这种 SB 语言会火呢,因为游览器只支持 JS 啊,如果 JS 那么好,为什么 nodejs 在后台开发上不怎么火呢

以我浅显对这东西的理解,这东西能不能叫“函数表达式”“函数简式”之类的,单看“拉姆达表达式”不知所云。

它本身就有另一个称呼,叫做“匿名函数”。之所以会叫作“lambda 表达式”,是因为最早期的“匿名函数”出现在 LISP ,但 LISP 并不使用箭头来表达,而是使用关键字 lambda 。 en.wikipedia.org/wiki/Anonymous_function zh.wikipedia.org/zh-cn/%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0 www.geeksforgeeks.org/lambda-functions-in-lisp/于是计算机学界把“匿名函数”叫作“lambda 表达式”已经有几十年的习惯了。可以这么说,“匿名函数”其实很早就已经出现在编程语言当中,但使用箭头来表示匿名函数的做法,已经是很后期的时期了(#15 提供的列表)。

lambda 表达式的叫法我觉得要归因于 lambda caculus ,而不是 Lisp 。

你这问题应该去 emacs china 问

#2 号要没了

我接触过的语言确实是 C# 最早,还有 async/await 、properties 均是来自 C#,不过我现在更喜欢 kotlin/groovy/dart 那种闭包写法,简单点

#14 哈哈哈哈

不管谁是第一个使用的,但 js 的写法是最爽的。

js 的"->"爽大部分来自于 function 这个单词过于长了😄

你这么说也没错。但我觉得如果没有 lisp ,也许永远不会有人管这个叫 lambda 。也就就叫管它叫匿名函数,甚至函数。