コンテンツにスキップ

F Sharp

出典: フリー百科事典『ウィキペディア(Wikipedia)』
F#
F#
F#のロゴ
パラダイム 関数型プログラミング命令型プログラミングオブジェクト指向プログラミングメタプログラミングリフレクション並行計算 ウィキデータを編集
登場時期 2005年 (19年前) (2005)
開発者 マイクロソフト、F Sharp Software Foundation ウィキデータを編集
最新リリース 8.0/ 2023年11月14日 (7か月前) (2023-11-14)[1]
型付け 強い静的型付け
影響を受けた言語 MLOCamlC SharpErlangHaskellPythonScala ウィキデータを編集
影響を与えた言語 F*
プラットフォーム クロスプラットフォーム ウィキデータを編集
ライセンス Apache License ウィキデータを編集
ウェブサイト fsharp.org ウィキデータを編集
拡張子 fs、fsi、fsx、fsscript ウィキデータを編集
テンプレートを表示

F# .NETVisual Studio 2010

[]


2002 (: Don Syme)  [2] OCaml

OCaml[3][3][4]OCamlC#Visual Basic .NET.NET[5].NET[6]MonoXamarinAndroid[7]SilverlightWindows Phone 7

F#FFunctional programming languageSystem F [8]

F#Visual StudioCommunityVisual F#Express[9][10][11][12]Visual F# Tools 4.1RoslynMono.NET Core[13][14]F#macOSLinuxF#

OCamlF#OCamlF#OCaml

[]


OCaml (: verbose syntax) Python (: lightweight syntax) 

[編集]

Hello world[編集]

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

再帰による階乗のプログラム[編集]

let rec factorial n =
    match n with
    | 0 -> 1
    | _ -> n * factorial (n - 1)

再帰関数の例[編集]

(* int リストの要素を再帰的にプリントする *)
let rec printList lst =
    match lst with 
    | [] -> ()
    | h :: t -> 
        printf "%d\n" h
        printList t
 
(* 上と同様だが任意の型の要素をプリントする *)
let rec printList2 l =
    match l with
    | []     -> ()
    | h :: t -> printfn "%A" h
                printList2 t
 
(* match の代りに function 式を利用する *)
let rec printList3 = function
    | []     -> ()
    | h :: t -> printfn "%A" h
                printList3 t
 
(* 高階関数を利用する *)
let printlist4 lst = List.iter (printfn "%A") lst
(* フィボナッチ数列 *)
let rec fib n =
    match n with
    | 0 | 1 -> n
    | _ -> fib (n - 1) + fib (n - 2)
 
(* 遅延再帰シーケンス式によるフィボナッチ数列 *)
let rec fibs = Seq.cache <| seq { yield! [1; 1]                                  
                                  for x, y in Seq.zip fibs <| Seq.skip 1 fibs -> x + y }
 
(* 遅延無限シーケンスによるフィボナッチ数列 *)
let fibSeq = Seq.unfold (fun (a,b) -> Some(a+b, (b, a+b))) (1,1)
 
(* 偶数のフィボナッチ数をプリントする *)
[1 .. 10]
|> List.map     fib
|> List.filter  (fun n -> (n % 2) = 0)
|> printList
 
(* 同じことをシーケンス式を利用する *)
[ for i in 1..10 do
    let r = fib i
    if r % 2 = 0 then yield r ]
|> printList

Windows フォームを使用した例[編集]

(* フォームの作成 *)
open System.Windows.Forms
let form = new Form(Visible=true, TopMost=true, Text="Welcome to F#")
(* フォーム テキストを決める *)
let x = 3 + (4 * 5)
do form.Text <- (if x = 23 then "Correct!" else "incorrect")

F#で書かれたソフトウェア[編集]

脚注[編集]



(一)^ Announcing .NET 8.  .NET Blog (20231114). 2024118

(二)^  F# at Microsoft Research.  Microsoft. 2016826

(三)^ abChris Smith 2008, p. VII, .

(四)^ Chris Smith 2008, p. 23, 2 .

(五)^ Chris Smith 2008, p. 383,  B F#.

(六)^ Chris Smith 2008, p. 8, 1 F#.

(七)^ Xamarin.Android - Xamarin.  Microsoft. 2019915

(八)^ The A-Z of programming languages: F#.  en:Network WorldbyIDG. 2016826

(九)^ Download Microsoft F#, August 2010 Community Technology Preview from Official Microsoft Download Center.  Microsoft. 2015528[]

(十)^ Download F# Tools for Visual Studio Express 2012 for Web from Official Microsoft Download Center.  Microsoft. 2015528

(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. 2015528

(12)^ Announcing the release of Visual F# Tools 3.1.2 - Visual F# Tools Team Blog - Site Home - MSDN Blogs.  Microsoft. 2015528

(13)^ Use F# on Linux.  F# Software Foundation. 2019915

(14)^ Get started with F# with command-line tools.  Microsoft. 2019915

[]


Chris Smith   F#20088ISBN 978-4-87311-466-8 

[]


C#

OCaml


[]


The F# Software Foundation

Microsoft Research - F#

Try F#

Don Syme's WebLog on F# and Other Research Projects