在Haskell中可以禁用或绕过类型系统吗?在有些情况下,所有非类型的东西都可以像Forth和BCPL那样方便地输入,或者在Mathematica中是单类型的。我的思路是将所有内容声明为同一类型,或者完全禁用类型检查。
编辑:符合SO原则,这是一个狭窄的技术问题,而不是要求讨论不同编程方法的相对优点。要重新表达这个问题,“Haskell的使用方式是否可以使避免类型冲突完全是程序员的责任?”
发布于 2012-05-25 02:41:30
还可以查看Data.Dynamic,它允许您在代码的部分中具有动态类型值,而不需要在整个过程中禁用类型检查。
发布于 2012-05-25 02:29:52
GHC7.6(尚未发布)具有类似的特性,-fdefer-type-errors
http://hackage.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime
它将把所有类型错误推迟到运行时。它并不是真正的非类型化,但它允许几乎同样多的自由。
发布于 2012-05-25 05:39:20
即使使用fdefer-type-errors,也不能避免使用类型系统。它也不允许类型独立。该标志的要点是允许具有类型错误的代码进行编译,只要Main函数不调用这些错误。特别是,当Haskell解释器实际调用任何类型错误的代码时,仍然会失败。
虽然Haskell中的非类型化函数的前景可能很诱人,但值得注意的是,类型系统实际上是语言的核心。代码在编译中证明了自己的功能,类型系统的刚性防止了大量错误的发生。
也许,如果你给出了一个具体的例子,你的问题,社区可以解决它。数字类型之间的相互转换是我以前问过的问题,有很多好的技巧。
https://stackoverflow.com/questions/10747703
复制相似问题