gpt4 book ai didi

syntax - erlang REPL定义范围错误: cannot execute function

转载 作者:行者123 更新时间:2023-12-05 02:13:41 27 4
gpt4 key购买 nike

我在 erl 中有这个简单的文本:

$erl
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Eshell V8.2 (abort with ^G)
1> right_age(X) when X >= 16, X =< 104 -> true;
1> right_age(_) -> false;
1> right_age(30).
* 1: syntax error before: 'when'

我哪里做错了,如何改正?

谢谢。

最佳答案

您不能使用您在问题中展示的方法在 Erlang shell 中定义命名函数。您必须改为使用 fun 关键字来定义函数,并将其绑定(bind)到变量:

1> RightAge = fun(X) when X >= 16, X =< 104 -> true; (_) -> false end.
#Fun<erl_eval.6.128620087>
2> RightAge(30).
true

顺便说一句,还请注意,通过将守卫移动到函数体中,您可以更轻松地定义此函数,只需一个子句:

1> RightAge = fun(X) -> X >= 16 andalso X =< 104 end.
#Fun<erl_eval.6.128620087>
2> RightAge(30).
true

关于syntax - erlang REPL定义范围错误: cannot execute function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54720810/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com