写了多年程序,突然想知道为什么函数可以连着用啊

2018-09-12 11:56:54 +08:00
 pinews
就是 a(b(c()))这样,虽然经常这样用,总觉得怪怪的,不知道在哪里是否有专门的说明?
15409 次点击
所在节点    PHP
148 条回复
pinews
2018-09-12 23:21:44 +08:00
@zagreb javascript 里面说了 函数调用是一种运算类型,和成员访问、new、数组是同一级别的。
molvqingtai
2018-09-13 02:15:12 +08:00
这不就是普通的高阶函数吗?
PythonAnswer
2018-09-13 02:42:25 +08:00
第一次学的时候, 就连着用的, 没有人跟我一样?
FrankHB
2018-09-13 08:10:25 +08:00
那么点基础 PL 问题怎么各路妖魔鬼怪都出来了……
一个 applicative order 有这么难找么?
好吧,这几十年搞语言的平均水平是比较低,大多就会瞎耦合特性不会复用成熟概念,拉低用户眼界也没办法,学校又不教你历史倒是容易懵逼。。。但是蒙也有点准头吧……还离谱得很那啥。(像 BS 老头搞不清 currying 和 partial application 的区别这种也就算了……)
@est 这里从头到尾都是 unary 的,如何想到跟 currying 有几毛钱关系的???
@mengzhuo 都没要求保存活动记录状态,直接死 reduction 都过得去,有没有栈有什么区别……?还 SSA ……您倒是介绍一下连个 binding 都搞不进去的构造里哪来能 A 的东西?实在想象不出这个例子里考虑了会有啥区别。
@jmc891205 @bumz 跟一般的数学还真不那么一样,数学因为 pure 反而不计较 normal order 还是 applicative order 什么的幺蛾子。
@forblackking molvqingtai 哪里看出的高阶函数?
@misaka19000 @jianleer 谁规定函数调用非得跟栈扯上关系的?
@persimmon 好吧,非得跟栈有一腿是吧……但这例子里一坨 tail call 凭什么就得加深……
@XXneet 跟有没有类型有几毛钱关系? UTLC 活该哭晕在厕所咯?
@zagreb 请避免“函数表达式”这种数学过头而引起误导的说法。这种说法中求值过程是被忽略的,只关心求值结果,暗示替换没有副作用而不改变语义。这对大多数语言根本不适用。另外,至少还得分清函数作为表达式和函数调用作为表达式的区别。
@laqow 不巧,传统 LISP 的 application 外面还要套(),并不长得这个样子;还有各种 special form 开洞。
@zmj1316 C++当然也有这规矩,[intro.execution]/11。
killerv
2018-09-13 08:18:15 +08:00
这是在黑 PHP
FrankHB
2018-09-13 08:24:39 +08:00
> 却不知道为什么能用

PHP 是吧。

https://github.com/php/php-langspec/blob/master/spec/10-expressions.md#function-call-operator

> An argument can be any value. In a function call, callable-expression is evaluated first, followed by each expression in the order left-to-right.

典型的 leftmost innermost 经典版 applicative order 了。
laoyuan
2018-09-13 08:35:49 +08:00
今年下半年黑 PHP 最狠的一次
laoyuan
2018-09-13 08:36:19 +08:00
多少人抬头看了看节点,一颗心就放下了
tourist2018
2018-09-13 08:45:55 +08:00
@laoyuan #108 哈哈
xiandao7997
2018-09-13 08:51:05 +08:00
@molvqingtai 这个不是高阶函数,传的是值不是 function..
VeryZero
2018-09-13 08:58:14 +08:00
参数其实是函数运算完的结果,为啥不能连着。。
andyliwrldk
2018-09-13 09:01:42 +08:00
柯里化和反柯里化
CoderEQ
2018-09-13 09:03:00 +08:00
v2 再一次刷新我的。。。。
vegito2002
2018-09-13 09:06:38 +08:00
这个帖子不知道暴露了多少只会甩 buzzword 的"大佬"
lihongjie0209
2018-09-13 09:07:29 +08:00
@vegito2002 笑看这些人
FakeLeung
2018-09-13 09:11:47 +08:00
日常黑 PHP (1/1)
DavidNineRoc
2018-09-13 09:12:59 +08:00
楼主这表达能力不行呀。
连着用至少也是这样
a()->b()->c();
你这个只是省略几个变量的写法就不行了。
这多年怕不是在写易语言吧 >_>
DavidNineRoc
2018-09-13 09:13:39 +08:00
不好意思,我没看到 PHP
wotemelon
2018-09-13 09:21:36 +08:00
@laoyuan 哈哈哈,看了一下是 php,默默返回了
blackguess
2018-09-13 09:23:09 +08:00
因为编译器在编译的时候有考虑过这种情况吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488475

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX