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を直接使用できます。

[ 次の投稿 ]



All Articles