私は、Haskell関数の集合はすべての数学関数のサブセットであることを知っています。なぜなら、それはプログラミング言語なので、関数のすべてが計算可能でなければならないからです。しかし、すべてのハスケル関数(および一般的な純関数)はcontinuousであり、数学的な観点から真実であるか?関数型プログラミングの純関数はすべて連続していますか?
6
A
答えて
18
計算機能は、リンク先のWikipediaページの第2段落に記載されているスコットの連続性という意味で連続しています。
連続ないある(擬似ハスケル)である関数の一例
isInfinite :: [a] -> Bool
isInfinite xs
| {- xs is an infinite list x0 : x1 : x2 : ... -} = True
| {- xs is a finite list x0 : x1 : x2 : ... : xn : [] -} = False
| {- xs is a list with diverging spine
x0 : x1 : x2 : ... : xn : _|_ -} = _|_
() :() :() : ...
シーケンス
のsupremumあるので連続して失敗しました_|_
() : _|_
() :() : _|_
...
しかし、
True = isInfinite (() :() :() : ...)
シーケンスのsupremumない
_|_ = isInfinite (_|_)
_|_ = isInfinite (() : _|_)
_|_ = isInfinite (() :() : _|_)
...
計算可能な関数は、時間の有限量で機能のみ、その入力の有限の量を検査することができ、本質的にので、連続しています。したがって、計算可能な関数が、例えば特定の入力でTrue
を返す場合、特定の有限の観測値の収集に対する元の入力と一致する入力セットのすべての入力に対して、True
を返す必要があります。元の入力に収束する任意の増加するシーケンスは、最終的に着陸し、このセット内にとどまるので、この増加するシーケンス上の関数の値のシーケンスは、True
に収束する。
連続関数は必ずしも計算可能ではありません。例えば、Integer
がフラットなドメインであるため、任意の順序保存(すなわち、f _|_ = _|_
、またはf
は定数)機能Integer -> Bool
が連続しています。もちろん、それらの多くは計算可能です。
+0
優れた、明確な答え。 – luqui
関連する問題
- 1. 関数型プログラミング - すべてのパラメータを持つ関数呼び出し
- 2. jQueryは関数型プログラミングとどのように関係していますか?
- 3. 関数型プログラミング:あなたは、引数
- 4. 関数型プログラミングにおける関数の型の決定
- 5. 関数型プログラミング、Haskell関数を変数リストに適用する
- 6. C#で静的関数を使用しているのは、関数型プログラミングの一種ですか?
- 7. プログラミングで関数のデータ型を返す
- 8. は、パンダがインプレイス関数と連結していますか?
- 9. 関数型プログラミングの依存性注入
- 10. C/C++での関数型プログラミング?
- 11. すべての型パラメータは関数の依存関係によってお互いに依存します
- 12. C内のsetcontext関数ファミリは継続していますか?
- 13. 関数型プログラミングでの再帰代数型の理解
- 14. excel vba:特殊型 - 関数の引数としての関数
- 15. 関数内の不連続/区間関数をコーディングするR
- 16. 関数型プログラミングの副作用は何ですか?
- 17. 関数型プログラミングに基づくUI
- 18. 関数を連続して実行する
- 19. どうやってカレーランカレーができますか?関数型プログラミングで
- 20. 関数プログラミングR
- 21. 関数型プログラミング言語はどのように実装しますか?
- 22. C++単純参照型関数
- 23. session.invalidate()はすべてのセッション関連データをクリアしますか?
- 24. Ruby on Rails:複数の多型関連
- 25. ViewModelは単純なビュー関連のロジックに適していますか?
- 26. 関数ポインタはC++のインスタンス型をサポートしていません
- 27. Haskell - A型のすべての関数 - > A - > ... - > A
- 28. 関数間のすべての接続を分析する
- 29. 関数を返す関数型を記述できますか?
- 30. erlangと関数型プログラミングに関する重要でない質問
@ HarryDeveloper1212これは良い質問だと思います。私は、質問が意味することを理解していることを明確にするために(私が望む)いくつかの編集を行った。変更に不満がある場合は、[質問の編集](http://stackoverflow.com/posts/34617662/edit)をもう一度押してください。 –