是否可以禁用或解决 Haskell 中的类型系统?在某些情况下,如 Forth 和 BCPL 中的所有内容都没有类型化或 Mathematica 中的单类型化很方便。我正在考虑将所有内容声明为相同类型或完全禁用类型检查。
编辑:根据 SO 原则,这是一个狭窄的技术问题,而不是要求讨论不同编程方法的相对优点。换个说法,“Haskell 的使用方式可以避免类型冲突完全是程序员的责任吗?”
另请查看Data.Dynamic
哪些允许您在部分代码中具有动态类型的值,而不会在整个过程中禁用类型检查。
GHC 7.6(尚未发布)具有类似的功能-fdefer-type-errors
:
http://hackage.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime
它将所有类型错误推迟到运行时。它并不是真正的无类型,但它允许几乎同样多的自由。
即使有fdefer-type-errors
一个也不会避免类型系统。它也确实不允许类型独立。该标志的要点是允许编译具有类型错误的代码,只要Main
函数不调用错误。特别是,任何带有类型错误的代码,当被 Haskell 解释器实际调用时,仍然会失败。
虽然 Haskell 中无类型函数的前景可能很诱人,但值得注意的是,类型系统确实是该语言的核心。代码在编译中证明了自己的功能,类型系统的刚性防止了大量的错误。
或许如果你给出了你遇到的问题的一个具体例子,社区可以解决它。数字类型之间的相互转换是我之前问过的问题,并且有很多很好的技巧。
也许fdefer-type-errors
结合https://hackage.haskell.org/package/base-4.14.1.0/docs/Unsafe-Coerce.html可以满足您的需求。