Functional programming 顶级任务

Functional programming 顶级任务,functional-programming,erlang,Functional Programming,Erlang,我试图使用Erlang中的高阶函数创建一个函数。令我惊讶的是,这似乎不好。下面是一个我得到的错误的简化示例 -module(test). -export([main/0]). X = 1. main() -> io:format("~p~n", [X]). 在erl中: > c(test). test.erl:4: syntax error before: X test.erl:7: variable 'X' is unbound error 您知道可以做些什么来避免

我试图使用Erlang中的高阶函数创建一个函数。令我惊讶的是,这似乎不好。下面是一个我得到的错误的简化示例

-module(test).
-export([main/0]).

X = 1.

main() ->
    io:format("~p~n", [X]).
在erl中:

> c(test).
test.erl:4: syntax error before: X
test.erl:7: variable 'X' is unbound
error

您知道可以做些什么来避免这种情况吗?

Erlang中没有全局变量。您可以改为使用函数,例如:

-module(test).
-export([main/0]).

x() ->
    1.

main() ->
    io:format("~p~n", [x()]).
对于像literal
1
这样简单的东西,您还可以定义一个预处理器宏,如下所示:

-define(X, 1).

main() ->
    io:format("~p~n", [?X]).

但是考虑到您的问题提到了高阶函数,您可能不想使用预处理器。

Erlang中没有全局变量。您可以改为使用函数,例如:

-module(test).
-export([main/0]).

x() ->
    1.

main() ->
    io:format("~p~n", [x()]).
对于像literal
1
这样简单的东西,您还可以定义一个预处理器宏,如下所示:

-define(X, 1).

main() ->
    io:format("~p~n", [?X]).

但是考虑到您的问题提到了高阶函数,您可能不想使用预处理器。

Erlang中没有全局变量。您可以改为使用函数,例如:

-module(test).
-export([main/0]).

x() ->
    1.

main() ->
    io:format("~p~n", [x()]).
对于像literal
1
这样简单的东西,您还可以定义一个预处理器宏,如下所示:

-define(X, 1).

main() ->
    io:format("~p~n", [?X]).

但是考虑到您的问题提到了高阶函数,您可能不想使用预处理器。

Erlang中没有全局变量。您可以改为使用函数,例如:

-module(test).
-export([main/0]).

x() ->
    1.

main() ->
    io:format("~p~n", [x()]).
对于像literal
1
这样简单的东西,您还可以定义一个预处理器宏,如下所示:

-define(X, 1).

main() ->
    io:format("~p~n", [?X]).

但是考虑到你的问题提到了高阶函数,你可能不想使用预处理器。

如果你想知道,我在实际项目中有一行类似的话:
EntityBehavior=behaviorOf(fun-entityBehaviorGroup/1,fun-entityNehavior/1)。
这里有一个相关的讨论:@zxq9,这让我的问题有点没用,我应该删除它吗?如果你想清除它,那当然可以——但我认为你不能接受一个被接受的答案(这会让史蒂夫倒霉,所以我认为系统会阻止它)。如果可以,您可以将其标记为副本。无论如何,我很高兴你对你原来问题的答案有了明确的理解。如果你想知道,我在真实的项目中有这样一句话:
EntityBehavior=behaviorOf(fun-entityBehaviorGroup/1,fun-entityNehavior/1)。
这里有一个相关的讨论:@zxq9,这让我的问题有点没用,我应该删除它吗?如果你想清除它,那当然可以——但我认为你不能接受一个被接受的答案(这会让史蒂夫倒霉,所以我认为系统会阻止它)。如果可以,您可以将其标记为副本。无论如何,我很高兴你对你原来问题的答案有了明确的理解。如果你想知道,我在真实的项目中有这样一句话:
EntityBehavior=behaviorOf(fun-entityBehaviorGroup/1,fun-entityNehavior/1)。
这里有一个相关的讨论:@zxq9,这让我的问题有点没用,我应该删除它吗?如果你想清除它,那当然可以——但我认为你不能接受一个被接受的答案(这会让史蒂夫倒霉,所以我认为系统会阻止它)。如果可以,您可以将其标记为副本。无论如何,我很高兴你对你原来问题的答案有了明确的理解。如果你想知道,我在真实的项目中有这样一句话:
EntityBehavior=behaviorOf(fun-entityBehaviorGroup/1,fun-entityNehavior/1)。
这里有一个相关的讨论:@zxq9,这让我的问题有点没用,我应该删除它吗?如果你想清除它,那当然可以——但我认为你不能接受一个被接受的答案(这会让史蒂夫倒霉,所以我认为系统会阻止它)。如果可以,您可以将其标记为副本。无论如何,我很高兴你对你原来问题的答案有一个坚定的理解。我想这可能是事实,但我想确定一下。谢谢。我想可能是这样,但我想确定一下。谢谢。我想可能是这样,但我想确定一下。谢谢。我想可能是这样,但我想确定一下。谢谢