F#の紹介、または無用の有用性

エントリー



なぜ必要なのですか?

画像

どうして? たとえば、一般的な開発のため、または単に楽しみのために、そしてその後、F#が単なる知り合いの言語ではないことを確認するために。

それでは、次は何ですか?

画像

そして、おそらく始めます。 F#は、機能的、命令的、オブジェクト指向のパラダイムを組み合わせたOCamlをルーツとするマルチパラダイム言語であり、実際には最大の利点の1つです。 もう1つの利点は、.NET Frameworkとの統合です。 もう1つは、どれだけクールで便利かを長らくペイントせずに、ポイントに移ろうとすることです.3つのパラダイムを使用する機会が得られ、さらに。 多くの問題は、同じC#よりもF#の方がはるかに簡単で短く解決されますが、逆の場合も当てはまります。

素晴らしい、あなたはポイントに近づくと約束したようです。

画像

さて、古典的な紹介を終えたら、古典的なHelloWorldに移りましょう!
printfn "Hello, world!" 

はい、それだけです。 印象的? そして私はそうではないので、先に進みましょう。

要点をつかむ


F#の機能部分と、おそらく最も重要なキーワードletから始めます。 奇妙なことに、識別子とその値を決定するのに役立ちます。
 let someId = 5 // F#   unicode : let  = 1 

いくつかの注意事項があります。

いくつかの例:
 //    F#     let someFloat = 0.5 //       - int let someCalculation : int = 2 + 2 //   helloWorld     let someString = "Hello" let anotherString = ", World" let helloWorld = someString + anotherString 

さらに進んで、 機能を感じてみましょう。
 let add xy = x + y let someFunc xy = let val = x + y val / y 

まず、F#の関数のより抽象的な概念について説明します。
 fun xy -> x + y 

これは匿名関数、またはラムダ関数です。 引数はxとyであり、演算子->は関数の本体が次であることを示します。 この例では、本体は式x + yであり、戻り値にもなります。 この時点で「ラムダ」に出会ったことがない人にとっては、単に名前がないということを理解するだけで十分です。 F#のすべての関数は、何らかの形で同様の形式で表示されます。たとえば、
 let add = fun xy -> x + y 

ここで、関数がF#で実際にどのように表されるかを見ることができます。匿名関数は識別子にバインドされています。 上記の例として引用されたのは、単純化された構文です。
私たちの例を考えてみましょう:
 let add xy = x + y 

ここで、引数のタイプについて推測したいと思います。 実際には、F#は引数のタイプと戻り値を自動的に決定します。この場合、引数が加算演算をサポートしていれば、引数は任意のタイプになります。
 let someFunc xy = let val = x + y val / y 

ここでは、関数はより複雑な本体を持ち、中間識別子を使用しています。 コードのスコープはindentによって決定されます 。つまり、識別子valはsomeFunc関数の本体内でのみ表示されます。 戻り値はval / yです

結論として、コードで関数を呼び出す方法を示す小さな例を示します。
 let add xy = x + y // 2. -   ,   2.0 let avg xy = add xy / 2. printfn "%A" add 5. 2. //    //printfn "%A" add "Hello" ", World!" printfn "%A" avg 2. 10. 

-2番目のprintfn呼び出しでエラーが発生するのはなぜですか?
-avg関数がfloat型を返すため。
-なぜfloatを返すのですか?
-xyの加算結果をfloatで除算するため。
-そして、ここに行を追加しようとしたときのエラーがありますか?
-add関数の両方の引数がそれぞれfloat型であるにもかかわらず、floatを返します
-どうして?
-avgがfloatを返すためには、除算演算子の左右のオペランドがfloat型であることが必要です。これはF#が処理するものです。addの引数の型は明示的に指定されていないためです。

さよならは言わないでね

画像
これでF#での短いプレゼンテーションが終了しました。すべてがここに書かれているわけではなく、完全ではなく、欠陥がないわけでもありません。 しかし、誰もがそれを気に入ったら、この投稿の目的はF#の包括的な図を提供することではなく、FPの世界への扉を少し開くことだったので、私はさらに、より詳細に書きます。 。

何を読んだり見たりしますか?

英語が上手な人は、Beginning F#を読むことができます。 名前にもかかわらず、この本はF#とその応用についてかなり深い考えを与えています。
Microsoft Fの紹介#もご覧ください
また、RIAへのリンク( ApeCoder 'yのおかげ)があり、ブラウザウィンドウでF#Interactiveを直接使用できます。
[ 次の投稿 ]

Source: https://habr.com/ru/post/J116666/


All Articles