2010-12-20 5 views
5

数日前にハスケルのモナドについて知ったことがありますが、ネット環境ではモナドのコンセプトがいくつか使用されていますか? そして、このコンセプトを私の開発でC#で使用する方法があります。.net環境でモナドの使用法はありますか?

ありがとうございました。

答えて

1

ハスケルは関数型プログラミング言語です。これについて特別なことは何もありませんが、そのデザインは学習し理解しやすく、実際には非常に効果的で効率的です。 Haskellの非常に特殊な機能は、一般化の概念です。つまり、直接的にアイデアを実装するのではなく、あなたのアイデアを特別なケースとして暗示するより一般的なアイデアを見つけようとするのです。これは、将来他の特別なケースが見つかった場合、それらを実装する必要はなく、少なくとも最初から完全には完全ではないという利点があります。

しかし、あなたはC#ですべてのことをすることができないというわけではありません。内部的にはMonadsに入っているのと同じコンセプトを使用する多くのコンポーネントが.netにあります。ほとんどの開発者でさえ使用していましたが、 "Monads"という名前は認識していません。

c#で同じ構文を使用する場合は、実行できません。

もしあなたがthisのMonadsの記事を読めば、Monadsのすべての概念はC#であることがわかります。 Jonの答えに加えて

+0

もちろん、C#にはHaskellの構文はありませんが、モナドには特別な構文があります。 '〜からのAからyまでのBの選択f(x、y)'は、C#のモナドの構文的な砂糖です。 – Gabe

4

まあ、LINQ自体は、SelectManyによって、モナドに基づいています。詳細については、Wes Dyer's blog post on the topicを参照してください。

しかし、それらは一般的にそれ以外では使用されません。ほとんどのLINQユーザーは、自分自身がモナドを使用しているとは考えません。

0

、LINQの数学的な二重の、反応性の枠組みについては、この非常に興味深いだけでなく、専門家のビデオに専門家を楽しまチェックアウト:

Channel 9 - Expert to Expert

+0

'IObservable'は' IEnumerable'のデュアルですが、どちらも同じLINQ構文に関係しています。 – Gabe

2
  • F#の非同期 で非同期モナドをワークフロー(C#での非同期は モナドではありません)
  • .NETのきゅうでリスト内包 モナド、
0

C#6.0には、モナドがあります。ヌル条件付き演算子?.途中のものがヌルになる可能性のあるネストされたオブジェクトプロパティから値を取得する必要がある場合は、nullチェックを簡素化するのに役立ちます。あなたはヌル条件演算子のセクションでhereをもっと読むことができます。

関連する問題