2015-01-07 5 views
5

私たちは、もし関数が引数で非厳密であると正式にどのように言いますか?

f ⊥ = ⊥ 

関数は、引数に厳格であると言うが、我々は関数は、引数に非厳密であることをどのように言うのですか?

f ⊥ ≠ ⊥ 

のように関数が非厳密であると言うことができますか?

これは、他の引数の値に応じて引数を評価する場合と評価しない場合がある、多くの引数の関数にどのように拡張されますか?

私は、Haddockのドキュメントを使用して、Haskell関数の厳密性のプロパティをよりよく説明する文脈でこれを求めています。

+3

あなたは正しいですが、f≠≠⊥ならば関数は厳密ではありません。 に基づいて引数を評価しない場合、関数は非厳密(評価されない引数で)です。 – BadZen

+2

関数* always *が引数を評価する場合、その引数ではstrictと呼ばれます。引数を決して評価しない*関数は、その引数では無関係と呼ばれます。はい、私はちょうどそれを作った。しかし、この些細な行動を研究することは、非常にエキサイティングな科学ではないようです。常にその引数を評価するわけではない*関数は、その引数で非厳密と呼ばれます。 –

+2

@ n.m。関数はその引数を完全に無視することができ、引き続きその引数で厳密になります。 – augustss

答えて

12

複雑な厳密性を表現するための標準表記はありません。データ構造では、どれだけ評価されるかを正確に述べる必要があるかもしれないので、厳密にするだけでは簡単ではありません。あなたはそれが最初の引数を評価することを意味し、第二または第三のいずれか、厳密には1 & (2 | 3)であることを言って想像することができます

cond c t e = if c then t else e 

のような単純な機能のために、言った

。これらは、シンプルな厳密性アナライザが思いつく種類の厳密性です。 (単純なものだけが価値のある唯一のものと思われます)

関連する問題