無効constrastユニット
-
19-09-2019 - |
質問
たいと思いるかを理解するの違いはこれら二つのプログラミングの概念.最初の表のデータ型では後者のタイプが存在するものはありません。またあると認識しているユニットからプログラミングの理論的基盤がまだまだ理解できなかのユーザビリティのユニットプリミティブ(例えば、F#プログラム)
解決
ユニットタイプは、ちょうどすべてがより規則的になります。程度に、あなたは、単一のパラメータを取り、単一の結果を返すようにF#ですべての関数と考えることができます。結果として、任意のパラメータは、実際のパラメータとして「ユニット」を取る必要があり、すべての結果のリターンを返さない関数は、「単位」しない関数。これは、様々な利点があります。 1のために、あなたが値を返す様々なアリティの機能を表すために「FUNC」代表団のスルーだけでなく、例えばFunc<int,void>
は合法ではないので(値を返さない「アクション」代表団のスルーの両方を必要とするどのようにC#で考えます - それは非常に「実際の」タイプではないので、ボイドが、そのように使用することはできません)。
他のヒント
機能プログラミングして、通常のマッピング入力します。<br></p><このきっかけとなるマッピングの引数、戻り値ます。だいは機能の数理カテゴリ理論の意味では、す 何か.A void
値を表する関数が返すものであるナンセンスにすることができる。
unit
の機能回答 void
.で基本的にはタイプの唯一の価値 ()
.また、ここでは簡単にします。いったようなことがより伝統的な言語:
public static <T, U> List<U> map(List<T> in, Function<T, U> func) {
List<U> out = new ArrayList<U>(in.size());
for (T t : in) {
out.add(func.apply(t));
}
return out;
}
これは、特定の機能 func
各要素のリストを新規製作のリスト func
's出力タイプです。 がれば、一体どうなることを通機能と版画、その引数? でない出力タイプと同じように、できるだけのために U
?
一部の言語を通過するような機能もこのコードのようにクライアントまで、フルのC#できな割り当て void
る汎用タイプ)です。いリゾートへの回避策などを Action<T>
, ので、無骨.
この概念 unit
有: で は aタイプもとってのみ行うことができる単一の値です。が大幅に簡素化などをチェーン機能と構成が大幅に削減の数が特殊な場合において安心です。