gpt4 book ai didi

syntax - '->'之前的语法错误,无明显原因

转载 作者:行者123 更新时间:2023-12-03 08:18:05 26 4
gpt4 key购买 nike

我正在Erlang脚本文件中定义一些函数,并在main中调用它们以证明其正确性。到目前为止,我还没有遇到任何问题,但是突然之间,我没有任何真正的原因遇到了错误。这是有问题的代码(我已经通过注释掉了这一行来检查问题所在):

fibSeq() -> [0] ++ [1] ++ lists:zipwith(func(X, Y) -> X + Y end, fibs(), lists:delete(0, fibSeq())).

该功能背后的想法是有效地计算斐波那契数列。由于函数的无限递归性质,可能会出现错误,但是我相信我读到Erlang使用了惰性求值,所以我觉得这应该可行。

编辑:用法是 list:sublist(fibSeq(), N)list:nth(N, fibSeq()),其中 N是整数。

编辑2:
错误消息是 "Syntax error before '->'",它引用了fibSeq()函数上方的第一行,而该代码之前是
merge([], []) -> [];
merge(A, []) -> A;
merge([], B) -> B;
merge([A|As], [B|Bs]) when A < B -> [A] ++ merge(As, [B] ++ Bs);
merge([A|As], [B|Bs]) -> [B] ++ merge([A] ++ As, Bs).

mergesort([]) -> [];
mergesort([A]) -> [A];
mergesort(As) ->
merge(mergesort(lists:sublist(As, length(As) div 2)), mergesort(lists:sublist(As, length(As) div 2 + 1, length(As) div 2 + 1))).

我更改了斐波那契代码,以使用不久之后想到的其他线性评估:
fib(N) when N >= 0, is_integer(N) ->  fibHelp(0, 1, N).

fibHelp(L, _, 0) -> L;
fibHelp(L, H, A) when A > 0, is_integer(L), is_integer(H), is_integer(A) ->
fibHelp(H, L+H, A - 1).

最佳答案

erlang中高阶函数的语法为fun(X) -> X * 2 end。使用func是语法错误。

关于syntax - '->'之前的语法错误,无明显原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24832378/

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