问题标签 [first-class-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scheme - 如何将函数存储在 Lisp 中的变量中并使用它
我想print
在变量中存储一个函数,这样我就可以输入一些简短的东西p
,例如:
在Scheme
:
同样的方法似乎不适用于Common Lisp
:
我在Attempt 1
上面遇到了这个错误:
这与Attempt 2
和3
在Clisp
:
并与gcl
:
所以:
- 是什么
try using a symbol
意思?p
绝对是一个symbol
;假阳性? - 怎么了
eval
?评估不p
产生程序print
吗? - 我以为
Lisp
程序是first class objects
. 为什么Attempt 1
不像在工作Scheme
?
编辑
(从下面的评论移动)
我想知道为什么(setf (symbol-function 'p) #'print)
不能这样工作
(setf (symbol-function 'p) 'print)
。我收到以下(不是很有帮助)错误:
我知道尖号(#
)应该消除函数和
同名变量之间的歧义,但在这种情况下,只有一个print
函数。
另外,为什么它不能使用defvar
而不是setf
像这样:
然而defvar
,setf
两者都为变量赋值。
相关的错误是:
function - 带有函数的模式建模
我正在寻找一种允许定义函数的模式语言。起初我想到了http://json-schema.org/,但这种格式是纯数据的。我对 XSD 的了解是一样的。
语言一开始并不重要,我的项目才刚刚开始,所以有很大的灵活性。我认为重要的是能够对包含函数的数据结构进行建模。
最终,可以使用纯数据文字对函数进行建模,如果不存在具有本机支持的良好语言,这将是我最后的手段。
javascript - 如何处理nodejs中的异步函数
我一直在学习 nodejs,而让我感到困惑的一件事是 nodejs 所基于的异步编程。也许我做错了什么,但尽管我进行了所有研究,但我无法从同步编程背景中思考如何适应它。如果有人给我一个基于以下结构的简单异步示例,我将不胜感激,因为您想从任何地方调用 func2。
我偶然发现的问题是 obj 在 func1 中打印为未定义,而 func2 没有问题。当我将函数相互嵌套时,它起作用了,这让我相信由于 nodejs 的异步性质,它在 func2 完成之前继续登录 func1。我的假设错了吗?
在上面的示例中,我遇到的问题是如何对函数进行编码而不是将它们相互嵌套,这样我就可以一次从几个不同的函数中调用 func2。我研究了回调,但无法理解各种答案中给出的示例,其中包含函数中的函数。
scala - ScalaFx:具有一流函数的事件处理程序
我尝试在 scalaFx 应用程序中编写事件处理程序。我找到了以下解决方案:
但这似乎是非常 Java 风格的样板代码。有没有办法用这样的一流功能做到这一点?
编译器说:
javafx.scene.input.MouseEvent => scalafx.delegate.SFXDelegate[javafx.scene.input.MouseEvent] 与 javafx.scene.input.MouseEvent 没有可用的隐式视图。
java - Java 8 以一等公民的身份跳舞?
所以我的函数式程序员喜欢像 python 这样将函数视为一等公民的语言。看起来 Java 8 屈服于压力并且“某种”实现了诸如 lambda 表达式和方法引用之类的东西。
我的问题是,Java 是否正在使用一流的函数,或者这真的只是语法糖来减少实现匿名类/接口(如可运行)所需的代码量?(我的直觉说后者)。
我的理想场景
function - 一等函数究竟是什么?
我在网上搜索以尝试理解这个术语。我了解“一流函数”是可以分配给变量并“传递”的函数。但我实际上不明白这意味着什么。
那么这是什么意思呢?一等函数究竟是什么?
示例将受到欢迎。
actionscript-3 - 我如何将 get 函数称为对象
我想将 get 函数作为Function
对象引用,而不是作为它返回的值。
通常我可以简单地引用没有括号的函数,如下所示:
但是 get 函数的全部意义在于您可以在没有括号的情况下调用该函数,所以如果我这样做,我只会得到 0 的返回:
有没有办法获取对foo
函数对象的引用?
javascript - 不了解 node.js 示例中一流函数和 csv 模块事件的用法
我在理解此代码段中的代码时遇到了一些麻烦。我一直在评论和研究,但我遇到了障碍。好吧,我遇到了两个障碍,但其中一个与过时的 csv 库有关。这是代码片段:
我对这个代码片段的主要问题与第二个函数有关。我知道他们正在将一个函数传递回调用函数,但我不明白为什么 response2console 函数有两个参数,但在市场研究函数中使用它时似乎没有任何参数传递给该函数. 这些是默认参数还是虚拟参数?它们似乎正在被使用,所以参数需要从某个地方获取?它们是否与 csvfile 和 headers 对应?
我的第二个问题与 .on() 函数有关。我查看了 csv 文档,但找不到任何关于它的作用的评论。他们似乎只使用它。经过更多研究,我得出结论,这是一个 javascript 或 node.js 事件函数,并且“记录”是一种事件。但是我在任何地方都找不到这个“记录”事件是什么的文档。任何关于在哪里寻找的建议或任何帮助将不胜感激。
csv 文档: http: //www.adaltas.com/projects/node-csv/from.html
python - python函数装饰器有什么我不能用一流函数做的吗?
我正在尝试理解 Python 函数装饰器,但到目前为止,我还没有看到任何情况下函数装饰器可以做一些我使用一流函数无法做到的事情。
例如,logger decorator
通常作为一个有用的函数装饰器的简单示例给出:
然后这个装饰器经典地与我们想要记录的函数一起使用,如下所示:
但是,对于相同的结果,我们可以只定义 func1 并用 logger 包装它:
Callinglogged_fun2
类似于 call fun1
。此外,当我们使用 wrap 时fun2
,如果我们愿意,logger
我们仍然可以在不记录的情况下调用原始文件。fun2
有没有我可以用装饰器做的事情我不能用一流的功能做?还是将装饰器视为包装函数的语法糖形式更好?