F# adalah bahasa pemrograman universal untuk menulis kode yang singkat, kuat, dan berkinerja.
F# memungkinkan Anda untuk menulis kode dokumentasi mandiri yang rapi, dan memfokuskan diri Anda tetap pada domain masalah, daripada detail pemrograman.
F# melakukan ini tanpa mengorbankan kecepatan dan kompatibilitas - F# merupakan sumber terbuka, lintas platform, dan memiliki keterkaitan operasi.
open System // Gets access to functionality in System namespace.
// Defines a list of names
let names = [ "Peter"; "Julia"; "Xi" ]
// Defines a function that takes a name and produces a greeting.
let getGreeting name = $"Hello, {name}"
// Prints a greeting for each name!
names
|> List.map getGreeting
|> List.iter (fun greeting -> printfn $"{greeting}! Enjoy your F#")
// Group data with Records
type SuccessfulWithdrawal =
{ Amount: decimal
Balance: decimal }
type FailedWithdrawal =
{ Amount: decimal
Balance: decimal
IsOverdraft: bool }
// Use discriminated unions to represent data of 1 or more forms
type WithdrawalResult =
| Success of SuccessfulWithdrawal
| InsufficientFunds of FailedWithdrawal
| CardExpired of System.DateTime
| UndisclosedFailure
Rekaman F# dan gabungan terdiskriminasi secara default tidak null, tidak dapat diubah, dan sebanding sehingga membuatnya sangat mudah digunakan.
Ketepatan fungsi dan pencocokan pola
Fungsi F# mudah didefinisikan. Ketika dikombinasikan dengan pencocokan pola, fungsi F# memungkinkan Anda untuk menentukan perilaku yang ketepatannya diberlakukan oleh kompilator.
// Returns a WithdrawalResult
let withdrawMoney amount = // Implementation elided
let handleWithdrawal amount =
let w = withdrawMoney amount
// The F# compiler enforces accounting for each case!
match w with
| Success s -> printfn $"Successfully withdrew %f{s.Amount}"
| InsufficientFunds f -> printfn $"Failed: balance is %f{f.Balance}"
| CardExpired d -> printfn $"Failed: card expired on {d}"
| UndisclosedFailure -> printfn "Failed: unknown :("
Fungsi F# juga merupakan kelas utama, yang berarti fungsi tersebut dapat diteruskan sebagai parameter dan dikembalikan dari fungsi lain.
Fungsi untuk menentukan operasi pada objek
F# memiliki dukungan penuh bagi objek sehingga berguna ketika Anda perlu memadukan data dan fungsi. Anggota dan fungsi F# dapat ditentukan untuk memanipulasi objek.
type Set<'T when 'T: comparison>(elements: seq<'T>) =
member s.IsEmpty = // Implementation elided
member s.Contains (value) =// Implementation elided
member s.Add (value) = // Implementation elided
// ...
// Further Implementation elided
// ...
interface IEnumerable<'T>
interface IReadOnlyCollection<'T>
module Set =
let isEmpty (set: Set<'T>) = set.IsEmpty
let contains element (set: Set<'T>) = set.Contains(element)
let add value (set: Set<'T>) = set.Add(value)
Dalam F#, Anda akan sering menulis kode yang memperlakukan objek sebagai jenis fungsi untuk dimanipulasi. Fitur seperti antarmuka generik, ekspresi objek, dan penggunaan anggota yang beralasan bersifat umum dalam program F# yang lebih besar.
Langkah berikutnya
Untuk mempelajari lebih lanjut tentang serangkaian fitur F# yang lebih besar, lihat Tur F#.
Berkolaborasi dengan kami di GitHub
Sumber untuk konten ini dapat ditemukan di GitHub, yang juga dapat Anda gunakan untuk membuat dan meninjau masalah dan menarik permintaan. Untuk informasi selengkapnya, lihat panduan kontributor kami.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
F# adalah bahasa pemrograman lintas platform open-source yang memudahkan penulisan kode ringkas, berkinerja, kuat, dan praktis. Ini adalah bahasa tujuan umum yang memungkinkan Anda membuat berbagai jenis aplikasi seperti Web API, Desktop, IoT, Gaming, dan banyak lagi.