dialyzer相关内容

"Dialyzer通常永远不会出错",但是我无法弄清楚我的@spec如何不正确

我有一些无法通过透析器的代码,我不明白为什么.无论我在函数顶部的@spec中放入什么内容,对该函数的调用都会返回令人困惑的透析器错误.这是功能的简化.据我所知,我已经正确指定了该功能. @spec balances(uuid :: String.t(), retries :: non_neg_integer) :: {:ok, list()} | {:inte ..
发布时间:2020-07-21 19:22:36 其他开发

Erlang Dialyzer整数范围

-module(test). -export([f/0, g/0]). -spec f() -> RESULT when RESULT :: 0..12 . -spec g() -> RESULT when RESULT :: 0..13 . f () -> 100 . g () -> 100 . 仅运行功能f的透析器(和键入器)正在运行. dialyze ..
发布时间:2020-07-21 19:22:33 其他开发

erlang中非终止函数的类型

我正在学习erlang,并尝试使用透析器来尽可能获得最大的类型安全性.有一件事我不理解:非终止函数的类型是什么以及如何在规范中表示它.您能说明一下吗? 解决方案 一个永久循环且永不终止的函数的返回类型为no_return(). (该返回类型还用于总是抛出异常的函数,例如自定义错误函数.如果您未指定该返回类型,则Dialyzer会告诉您该函数“没有本地返回".) 《 Erlang参考手 ..
发布时间:2020-07-21 19:21:22 其他开发

Elixir/Erlang Dialyzer:为什么行为回调的param类型应该是子类型而不是超类型?

我有一个行为X和一个带有参数类型的回调函数: %{a: any} 模块Y实现行为X,而实现模块Y中的回调函数具有参数类型: %{a: any, b: any} Dialyzer不喜欢它并抱怨: (#{'a':=_, 'b':=_, _=>_}) is not a supertype of #{'a':=_} 这意味着透析器尝试确定实现模块Y中的回调参数的类型是否为 ..
发布时间:2020-05-26 20:16:04 其他开发