あなたの質問に対する実用的な答えは次のとおりです。
whatGoesHere = fun x xs -> if f x then x :: xs else xs
匿名関数、if-then-elseおよびリストはすべて、F#の実践者によってプリミティブと見なされます。これは、このコードを作成するための最も明確で保守しやすい方法です。
残念ながら、あなたは前のレスポンダーからの同等の正解を受け入れておらず、ラムダ式を含まないコードを見ることを主張しています。どういたしまして:
``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kk``s
`k`s`k``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki
`ki`k`ki``s``s`ks``s`kki`ki
`k``s``s`ks``s`kk``s`k``s``s`ks``s`kk``s`ks``s`k`s`ks
``s`k`s`kk``s`k`si``s`kki`k``s``s`ks
``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki
`k`kii`ki`k`ki
上記はwhatGoesHere
、ブール値とリストの適切な表現を使用したSKIコンビネータ計算であり、Unlambda表記で印刷されています。
便宜上、型なしラムダ計算からSKIコンビネータまでのサンプルコンパイラと、問題に対応するラムダ計算用語のF#定義を次に示します。
http://gist.github.com/3277850
コンビネータ論理とラムダ計算が同等であるため、理論的にはラムダ式は不要ですが、プログラマーとしての意図を表現するためには不可欠です。「関数型プログラミングが重要な理由」は、ラムダ式とヘルパー関数を回避することを決して主張していません。それどころか、高階関数を含む関数を定義する機能は、関数型プログラミングの中核です。関数が構成によって定義されているか、ラムダ計算を明示的に使用しているかはほとんど問題ではありません。どちらも、この論文で説明されている「接着剤」です。
論文(そしておそらくその優れた参考文献)をもう一度読んでから、HaskellまたはCleanをインストールすることをお勧めします。著者がデフォルトで怠惰な純粋な評価モデルを提唱していることを考えると、F#はこれらのアイデアを探求するための優れたプラットフォームではありません。