由于“例外”,类型系统无法讲述整个​​故事

时间:2011-07-24 09:39:29

标签: exception programming-languages type-systems

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

所以我的问题一般是,使用异常是一种不好的风格,因为它隐藏了类型系统的信息?

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

well-typed_1: environment -> statement -> unit

但这似乎是不够的,因为环境会因局部变量声明而被修改,因此对于typechecker来说,一个更合理的界面将是

well-typed_2: environment -> statement -> environment

另一种方法是使用前者,well-typed_1,通过异常Var_declaration(e:environment)处理局部变量声明,该异常将更新的环境返回给类型检查器以进行其他递归。

所以,我对这个具体例子的问题是,我应该使用well-typed_1 +异常进行变量声明,还是使用well-typed_2?

well-typed_2的缺点似乎是,对于大多数陈述而言,对于类型的环境没有副作用,因此良好类型的2的签名似乎有点多余。 well_typed_2 +异常的缺点似乎揭示了一个普遍的问题:well-typed_1 in的签名并不能说明整个故事。 (它没有告诉潜在的例外)

0 个答案:

没有答案