Exception 由于“异常”,类型系统不能说明全部情况

Exception 由于“异常”,类型系统不能说明全部情况,exception,programming-languages,type-systems,Exception,Programming Languages,Type Systems,我的问题应该有点含糊,很肤浅。很抱歉但我想知道使用exception是否是一种不好的风格。例如,在Ocaml中,异常不会显示为.mli文件。所以在我看来,异常是类型系统无法跟踪的 所以我的问题是,使用异常是否是一种糟糕的样式,因为它隐藏了针对类型系统的信息 具体地说,我正在尝试为命令式语言(比如Pascal)实现一个类型检查器。基本判断应该是这个签名 well-typed_1: environment -> statement -> unit 但这似乎是不够的,因为环境将由于局部变

我的问题应该有点含糊,很肤浅。很抱歉但我想知道使用exception是否是一种不好的风格。例如,在Ocaml中,异常不会显示为.mli文件。所以在我看来,异常是类型系统无法跟踪的

所以我的问题是,使用异常是否是一种糟糕的样式,因为它隐藏了针对类型系统的信息

具体地说,我正在尝试为命令式语言(比如Pascal)实现一个类型检查器。基本判断应该是这个签名

well-typed_1: environment -> statement -> unit
但这似乎是不够的,因为环境将由于局部变量声明而被修改,因此typechecker的更合理接口将是

well-typed_2: environment -> statement -> environment
另一种选择是使用前一种类型良好的_1,通过异常Var_声明e:environment处理局部变量声明,该声明将更新后的环境返回给类型检查器进行其他递归

因此,对于这个具体示例,我的问题是,我应该使用类型良好的_1+异常来声明变量,还是使用类型良好的_2


类型良好的_2的缺点似乎是,对于大多数语句来说,对于类型的环境没有副作用,因此类型良好的_2的签名似乎有点多余。类型良好的\u 2+异常的缺点似乎揭示了一个普遍问题:中类型良好的\u 1的签名并不能说明全部情况。它不告诉潜在的异常

你可能对CSSCM理论有更多的运气。StExchange。com。我甚至不考虑在Python中返回数据的异常。如果您想返回数据,即使只是偶尔返回,那么返回数据而不是单位。很抱歉,这个问题不应该出现在这里。我从你那里得到了答案