【发布时间】:2022-01-03 13:03:09
【问题描述】:
我有这个程序:
-module(a).
-export([add/2]).
-export([add2/1]).
-spec add(integer(),integer())->integer().
add(A,B)->A+B.
add2(C)->C+add(1,"a").
我可以毫无错误地编译这个 prog。但我认为我应该得到该行的错误
add(1,"a").
在任何静态类型语言中,它都无法编译,那么为什么erlang会编译它呢?如何
编写类型签名以便 erlang 可以捕获此错误?如果 erlang 不能,elixir 可以编写相同的 prog 但可以捕获此错误吗?谢谢!
【问题讨论】: