ghciに次の2つの事柄が発生すると考えて、以下のようにタイプしました。1)インタプリタが無限リストのすべてのメンバーを検索して述語に一致するかどうかを調べます。または2)カーテンの後ろを通ってHaskell jujitsuを通して、通訳者は何とかシーケンスが4で終了しそこで止まることを理解するだろう。無限リストの有限の理解
[x | x <- [1..],5>x]
結果1が発生しました。今、結果2は多くのことを求めていました。しかし、人間はシーケンスが4で終了することを証明することができるので、通訳者にそれをさせる方法があるだろうか?これは終了するように書き直すことができますか?実際には、無限リストの有限の理解をする述語がありますか?
'takeWhile(<5)[1 ..]' – m09
@Mog:私はあなたのコメントにあなたに同意しながらあなたがやや理解の意味を変更したので、浮気されていませんか?プログラムについて何かを証明するために、人間の –
機能は常に自動プログラムを模倣することができるものではありません:あなたは、いくつかの特定のプログラムを終了できることを推論することができるかもしれないが、一般的に、これは(それは停止問題だ計算することはできません、決めることはできません)。そして、あなたはリストの理解に必要な任意のコードを書くことができます、私は一般的なケースでは、コンパイラはあなたのリスト内包について非常に困難な時間推論を持っていると考えています。 – gfour