12

Haskell の型システムを無効にしたり回避したりすることは可能ですか? Forth や BCPL のようにすべてを型なしにしたり、Mathematica のように単一型にしたりすると便利な場合があります。私は、すべてを同じ型として宣言するか、型チェックを完全に無効にする方向に沿って考えています。

編集: SO の原則に準拠して、これは狭い技術的な質問であり、さまざまなプログラミング アプローチの相対的なメリットについて議論するための要求ではありません。質問を言い換えると、「型の競合を完全にプログラマーの責任で回避するような方法で Haskell を使用できますか?」

4

4 に答える 4

10

また、Data.Dynamic型チェック全体を無効にすることなく、コードの一部で動的に型指定された値を使用できるようにする方法も見てください。

于 2012-05-25T02:41:30.807 に答える
9

GHC 7.6 (まだリリースされていません) には同様の機能があり-fdefer-type-errorsます:

http://hackage.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime

実行時まですべての型エラーを延期します。型付けされていないわけではありませんが、ほぼ同じくらい自由にできます。

于 2012-05-25T02:29:52.687 に答える
8

1 つでも、型システムをfdefer-type-errors回避することはできません。また、型の独立性も実際には許可されていません。フラグのポイントは、エラーが関数によって呼び出されない限り、型エラーのあるコードをコンパイルできるようにすることですMain。特に、型エラーのあるコードは、実際に Haskell インタープリターによって呼び出されたときに失敗します。

Haskell での型指定されていない関数の可能性は魅力的かもしれませんが、型システムが実際に言語の中心にあることは注目に値します。コードはコンパイル時に独自の機能を証明し、型システムの厳格さにより多数のエラーが防止されます。

おそらく、あなたが抱えている問題の具体例を挙げれば、コミュニティはそれに対処できるでしょう。数値型間の相互変換については、以前に質問したことがありますが、いくつかの優れたトリックがあります。

于 2012-05-25T05:39:20.213 に答える
0

おそらくhttps://hackage.haskell.org/package/base-4.14.1.0/docs/Unsafe-Coerce.htmlfdefer-type-errors と組み合わせると、必要なものが提供されます。

于 2022-01-31T10:14:01.333 に答える