gpt4 book ai didi

elixir - Dialyzer 是否分析匿名函数?

转载 作者:行者123 更新时间:2023-12-04 15:42:54 24 4
gpt4 key购买 nike

在我学习 Elixir 的过程中,我正在使用 Dialyzer 来为我的函数添加类型。在这方面,我注意到 Dialyzer 似乎没有检查匿名函数的类型。

在下面的示例中,我传递了一个匿名函数,该函数将两个数字相加并返回一个数字 (t::number -> number) ,进入all?功能。因此,我没有按照 all? 中的 promise 返回 bool 值。规范(t::any -> boolean) .

defmodule Exercises do                                                                         
@spec all?([t::any], (t::any -> boolean)) :: boolean
def all?([], _), do: true
def all?([h|t], con) do
if con.(h) do
all?(t,con)
else
false
end
end

@spec funski() :: boolean
def funski() do
all?([1,1,2], &(&1 + 1))
end
end

Dialyzer 似乎没有报告此代码的任何错误或警告,如果 Dialyzer 无法检查此类错误或我做错了什么,我很想知道。

最佳答案

这似乎是一个透析器错误。调用 :lists.all/2 (交换了参数)产生了正确的警告,但出于某种原因调用您的本地 all?/2具有相同规范的功能没有。

关于elixir - Dialyzer 是否分析匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306991/

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