F Sharp

Z Wikipedii, wolnej encyklopedii
F#
Logo języka F#
Logo j?zyka
Pojawienie si?

2005

Paradygmat

wieloparadygmatowy

Typowanie

statyczne , silne , inferencja typow

Aktualna wersja stabilna

4.5 / 14 sierpnia 2018; ponad 5 lat temu [1]

Tworca

Microsoft Research

Licencja

Licencja MIT [2]

Platforma sprz?towa

wieloplatformowy ( .NET , Mono , Javascript [3] )

Platforma systemowa

wieloplatformowy ( Windows , Linux , macOS , Android , iOS , Windows Phone i inne)

Strona internetowa

F# ? wieloparadygmatowy j?zyk programowania zawieraj?cy w sobie głownie cechy j?zyka funkcyjnego , ale umo?liwiaj?cym tak?e pisanie kodu imperatywnego oraz obiektowego . Jest j?zykiem silnie typowanym zaprojektowanym w celu pisania prostego, solidnego i wydajnego kodu do rozwi?zywania zło?onych problemow. F# ł?czy w sobie cechy takie jak zwi?zło??, wydajno?? i ekspresywno??. J?zyk ten jest przykładem otwartego oprogramowania .

F# nale?y do rodziny j?zykow ML , ale posiada rownie? funkcjonalno?ci inspirowane innymi j?zykami, np. leniwe sekwencje wzorowane na j?zyku Haskell . Posiada tak?e funkcjonalno?ci nieobecne w innych j?zykach programowania, na przykład wbudowan? obsług? jednostek miar.

Przykładowe programy [ edytuj | edytuj kod ]

W przypadku wykonywania kodu j?zyka F# w interaktywnej powłoce fsharpi , ka?de wyra?enie musi by? zako?czone dwoma ?rednikami ( ;; ).

Program " Hello world " [ edytuj | edytuj kod ]

printfn
 "Witaj, ?wiecie!"

??danie HTTP [ edytuj | edytuj kod ]

open
 System.Net

let
 httpGet
 (
url
 :
 string
)
 =

  use
 wc
 =
 new
 WebClient
()

  wc
.
DownloadString
(
url
)


httpGet
 "https://pl.wikipedia.org/wiki/F_Sharp"

Leniwie warto?ciowany Ci?g Fibonacciego [ edytuj | edytuj kod ]

/// Ci?g Fibonacciego od trzeciego wyrazu

let
 fibonacciSeq
 =
 Seq
.
unfold
 (
fun
 (
x
,
 y
)
 ->
 Some
(
x
 +
 y
,
 (
y
,
 x
 +
 y
)))
 (
0
,
 1
)


/// Lista zawieraj?ca pi?? pierwszych elementow ci?gu

let
 firstFive
 =
 Seq
.
take
 5
 fibonacciSeq
 |>
 Seq
.
toList

// val it : int list = [1; 2; 3; 5; 8]


/// Dziewi?ty element ci?gu

let
 ninth
 =
 Seq
.
item
 8
 fibonacciSeq

// val it : int = 55


/// Funkcja obliczaj?ca ?redni? pierwszych `n' elementow ci?gu

let
 seqAverage
 seq
 n
 =

  Seq
.
take
 n
 seq

  |>
 Seq
.
map
 float

  |>
 Seq
.
average


/// Funkcja obliczaj?ca ?redni? pierwszych `n' elementow ci?gu Fibonacciego wykorzystuj?ca ``auto-currying''

let
 fibonacciAverage
 =
 seqAverage
 fibonacciSeq


fibonacciAverage
 10

// val it : float = 23.1

Przypisy [ edytuj | edytuj kod ]

Linki zewn?trzne [ edytuj | edytuj kod ]