19

私は現在http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Set.html#t:Setを読んでいます

次の詳細は(絶対的なHaskell初心者に)何を伝えますか?

移植性:ポータブル(移植性の値は他にどれですか?)
安定性:暫定(安定性の値は他にどれですか?)
メンテナ:libraries@haskell.org
Safe Haskell:安全(何か安全でないものはありますか?)

4

1 に答える 1

19

フィールドは、パッケージの.cabalメタデータをリストしたパッケージのファイルから取得されます。多くのフィールドは自由形式の値を持つことができるため、開発者はそのフィールドに何を書き込むかを自分で決定し、各フィールドに含めることのできない固定の「ルール」はありません。

移植性: Haskellコンパイラ間、場合によってはオペレーティングシステム間でもパッケージがどれだけ移植可能かを説明します。私が見た唯一の値は「ポータブル」と「ポータブルではない」です。移植不可能なパッケージとは、GHCコンパイラにのみ存在するHaskell言語拡張に依存し、 UHCなどの他のHaskellコンパイラでは機能しないパッケージ、またはUNIXにのみ存在し、 Windowsでは動作しません。

安定:ライブラリの安定性を指定します。これには、ライブラリの信頼性(たとえば、クラッシュの頻度)が含まれますが、最も重要なのは、APIが変更される頻度です。「実験的」、「暫定的」、「安定的」という値を見てきましたが、もっとどこかにリストがあるかもしれません(Cabalのドキュメントにあるものを見つけることができない場合があります)。パッケージが実験的なものである場合、開発者がまだ実装方法を決定していないため、または開発者がどこかの論文から理論的な機能を実装したばかりで、実装していないため、リリースごとにインターフェイスが変更される可能性があります。パッケージを維持するつもりです。彼/彼はそれが可能かどうかを確認するために機能を実装したかっただけで、デモンストレーションとしてパッケージを公開しています。パッケージが暫定的な場合、これは、一般的なAPIが安定していることを意味します。そのため、内部のバグを修正するだけで、関数を追加または削除しないパッケージの更新がある可能性があります。ただし、これは暫定的なものであるため、将来、開発者が新しい機能を追加したり、ライブラリを再構築したりするときに変更される可能性があります。安定したライブラリでは、これは基本的に発生しません。APIはおそらく変更されることはなく、実装は「堅実」またはAPIなどのリファレンス実装です。

パッケージのメンテナは、パッケージの責任者または個人のグループです。電子メールには、これらのメンテナに連絡する方法が明記されています。

SafeHaskell 」フィールドはGHC拡張機能を指し、ここで詳細を読むことができます。安全でないモジュールはunsafePerformIO、参照透過性のようなHaskellの基本的な「ルール」のいくつかを破るような関数を使用します。安全でないモジュールは、安全でない言語拡張機能を使用する場合もあります。安全なモジュールとは、安全でない機能などを使用せず、他の安全でないモジュールをインポートしないモジュールです。トラステッドモジュールは安全でない機能を使用します(直接信頼できる、間接的に信頼できる))が、作成者はモジュールのパブリックAPIがこの事実を安全に隠していることを確認しているため、外部からはモジュールがすべての目的と目的に対して安全であるように見えます。これらは、「SafeHaskell」フィールドのオプションです。

于 2012-07-17T17:07:38.483 に答える