コンテンツにスキップ
Wikipedia

F Sharp

出典: フリー百科事典『ウィキペディア(Wikipedia)』
曖昧さ回避 この項目では、プログラミング言語について説明しています。音名のF♯については「嬰ヘ」をご覧ください。
本来の表記は「F#」です。この記事に付けられたページ名は技術的な制限または記事名の制約により不正確なものとなっています。
この記事は検証可能参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?"F Sharp" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL
(2015年5月)
F#
F#
F#のロゴ
パラダイム 関数型プログラミング命令型プログラミングオブジェクト指向プログラミングメタプログラミングリフレクション並行計算 ウィキデータを編集
登場時期 2005年 (20年前) (2005)
開発者 マイクロソフト、F Sharp Software Foundation ウィキデータを編集
最新リリース 9.0/ 2024年11月12日 (3か月前) (2024年11月12日)[1]
型付け 強い静的型付け
影響を受けた言語 MLOCamlC SharpErlangHaskellPythonScala ウィキデータを編集
影響を与えた言語 F*
プラットフォーム クロスプラットフォーム ウィキデータを編集
ライセンス Apache License ウィキデータを編集
ウェブサイト fsharp.org ウィキデータを編集
拡張子 fs、fsi、fsx、fsscript ウィキデータを編集
テンプレートを表示

F#(エフ シャープ)はマイクロソフトが開発した.NET向けのマルチパラダイムプログラミング言語である。Visual Studio 2010より標準開発言語として追加された。

概要

[編集 ]

2002年からマイクロソフトリサーチドン・サイム (英語版) (: Don Syme) ら [2] によってOCamlをベースに開発が始められた。

OCamlから多くの要素を引き継いだ関数型オブジェクト指向マルチパラダイムである[3] 型安全であり[3] 型推論の機能をもつ[4] 。ただし、オーバーロードをサポートしているため、OCamlのもつ型推論の完全性を失っている。C#Visual Basic .NETなどの.NET言語と相互運用性があり[5] 、.NETクラスライブラリの利用・開発が可能であり[6] MonoおよびXamarinを利用したAndroidアプリケーション開発もサポートされている[7] 。以前はSilverlightを利用したWindows Phone 7のアプリケーション開発もサポートされていた。

F#のFはFunctional programming language(関数型プログラミング言語)およびSystem Fが由来 [8] である。

F#の開発環境はVisual Studioの有償版製品(あるいは無償のCommunityエディション)にVisual F# として含まれているほか、Expressエディションで利用可能な無償ツールの配布もされている[9] [10] [11] [12] 。Visual F# Tools 4.1でRoslynコンパイラ (英語版)をサポートするようになった。また、Mono.NET Core [13] [14] 環境向けにもF#コンパイラが移植されているため、macOSLinuxなどでもF#プログラムの開発および実行ができる。

OCaml互換の標準ライブラリを備えており、F#とOCamlのどちらでもコンパイルできるコードを記述することも可能である。しかしクラスの構文などはF#とOCamlで異なっている。

構文

[編集 ]

OCamlと互換性のある冗語構文 (: verbose syntax) と、Pythonのようなインデント(オフサイドルール)による軽量構文 (: lightweight syntax) の二種類の構文を利用できる。標準では軽量構文が有効になっている。

[編集 ]

Hello world

[編集 ]
(* これはコメント *)
// 1行コメント。
(* Hello world プログラム *)
printfn"Hello World!"

再帰による階乗のプログラム

[編集 ]
letrecfactorialn=
matchnwith
|0->1
|_->n*factorial(n-1)

再帰関数の例

[編集 ]
(* int リストの要素を再帰的にプリントする *)
letrecprintListlst=
matchlstwith
|[]->()
|h::t->
printf"%d\n"h
printListt

(* 上と同様だが任意の型の要素をプリントする *)
letrecprintList2l=
matchlwith
|[]->()
|h::t->printfn"%A"h
printList2t

(* match の代りに function 式を利用する *)
letrecprintList3=function
|[]->()
|h::t->printfn"%A"h
printList3t

(* 高階関数を利用する *)
letprintlist4lst=List.iter(printfn"%A")lst
(* フィボナッチ数列 *)
letrecfibn=
matchnwith
|0|1->n
|_->fib(n-1)+fib(n-2)

(* 遅延再帰シーケンス式によるフィボナッチ数列 *)
letrecfibs=Seq.cache<|seq{yield![1;1]
forx,yinSeq.zipfibs<|Seq.skip1fibs->x+y}

(* 遅延無限シーケンスによるフィボナッチ数列 *)
letfibSeq=Seq.unfold(fun(a,b)->Some(a+b,(b,a+b)))(1,1)

(* 偶数のフィボナッチ数をプリントする *)
[1..10]
|>List.mapfib
|>List.filter(funn->(n%2)=0)
|>printList

(* 同じことをシーケンス式を利用する *)
[foriin1..10do
letr=fibi
ifr%2=0thenyieldr]
|>printList

Windows フォームを使用した例

[編集 ]
(* フォームの作成 *)
openSystem.Windows.Forms
letform=newForm(Visible=true,TopMost=true,Text="Welcome to F#")
(* フォーム テキストを決める *)
letx=3+(4*5)
doform.Text<-(ifx=23then"Correct!"else"incorrect")

F#で書かれたソフトウェア

[編集 ]

脚注

[編集 ]
  1. ^ RNDr. Tomáš Grošup, Ph.D. (2024年11月14日). "Nullable Reference Types in F# 9". .NET Blog. 2024年11月28日閲覧。
  2. ^ "F# at Microsoft Research". Microsoft. 2016年8月26日閲覧。
  3. ^ a b Chris Smith 2008, p. VII, まえがき.
  4. ^ Chris Smith 2008, p. 23, 2章 基本事項.
  5. ^ Chris Smith 2008, p. 383, 付録 B F#の相互運用性.
  6. ^ Chris Smith 2008, p. 8, 1章 F#の紹介.
  7. ^ "Xamarin.Android - Xamarin". Microsoft. 2019年9月15日閲覧。
  8. ^ "The A-Z of programming languages: F#". en:Network World by IDG. 2016年8月26日閲覧。
  9. ^ "Download Microsoft F#, August 2010 Community Technology Preview from Official Microsoft Download Center". Microsoft. 2015年5月28日閲覧。[リンク切れ ]
  10. ^ "Download F# Tools for Visual Studio Express 2012 for Web from Official Microsoft Download Center". Microsoft. 2015年5月28日閲覧。
  11. ^ "Announcing Visual F# Tools 3.1.1, with support for Desktop and Web express - Visual F# Tools Team Blog - Site Home - MSDN Blogs". Microsoft. 2015年5月28日閲覧。
  12. ^ "Announcing the release of Visual F# Tools 3.1.2 - Visual F# Tools Team Blog - Site Home - MSDN Blogs". Microsoft. 2015年5月28日閲覧。
  13. ^ "Use F# on Linux". F# Software Foundation. 2019年9月15日閲覧。
  14. ^ "Get started with F# with command-line tools". Microsoft. 2019年9月15日閲覧。

参考文献

[編集 ]
  • Chris Smith 著、鈴木幸敏 訳、頃末和義 編『プログラミングF#』(初版)オライリー・ジャパン、2008年8月。ISBN 978-4-87311-466-8 

関連項目

[編集 ]

外部リンク

[編集 ]
アーキテクチャ
共通言語基盤
言語
パッケージマネージャ
関連技術
その他のCLI実装
組織
開発環境
その他
カテゴリ カテゴリ

AltStyle によって変換されたページ (->オリジナル) /