从另一个函数中读取整数列表,然后对其进行平方

read a list of integers from another function and then square it

我想构建一个名为 Square(N) 的函数。此函数将获取来自我之前构建的函数的整数列表,然后它将 return 它收到的整数列表,现在只对每个数字进行平方。

因此,如果阅读列表是 [1,2,3,4],那么它应该 return [1,4,9,16]。我的函数如下:

Square(N) when N > 0 -> Square(digitize(N));
Square([]) -> [];
Square([H|T]) -> [H*H|Square(T)].

如果您想知道 digitize(N) 的作用,它会读取任何数字,然后将该数字的每个数字显示到一个列表中。数字化函数如下:

digitize(N) when N < 10 -> [N];
digitize(N) -> digitize(N div 10)++[N rem 10].

我编译函数得到的结果是错误的:

an error occurred when evaluating an arithmetic expression

将 N(整数)传递给数字化函数后,它 returns 一个列表。所以你不能将返回的列表传递回同一个函数并将它与整数零进行比较。您应该分解 square 函数,以便它调用另一个函数示例 square_list 来处理从 digitize 函数返回的列表。请参见下面的示例。

square(N) when N > 0 -> square_list(digitize(N)).

square_list([]) -> [];
square_list([H|T]) -> [H*H|square_list(T)].

digitize(N) when N < 10 -> [N];
digitize(N) -> digitize(N div 10)++[N rem 10].