Movatterモバイル変換


[0]ホーム

URL:


Hopp til innhold
Wikipedia
Søk

F Sharp

Fra Wikipedia, den frie encyklopedi
Denne artikkelen omhandler programmeringsspråket. For tonen «fiss» (F♯), setone.
Referanseløs: Denne artikkelen inneholder enliste over kilder, litteratur ellereksterne lenker, men enkeltopplysninger lar seg ikkeverifisere fordi det mangler konkrete kildehenvisninger i form av fotnotebasertereferanser. Du kan hjelpe til med å sjekke opplysningene mot kildemateriale og legge inn referanser. Opplysninger uten kildehenvisning i form av referanser kan bli fjernet.
F Sharp
Tilblivelse2005
Paradigme
Designet avDon Syme,Microsoft Research
Utviklet avMicrosoft,F Sharp Software Foundation
Siste versjon(er)10.0 / 11. nov. 2025
Typetildeling statisk, sterk, inferens
Filendelse(r).fs, .fsi, .fsx, .fsscript
OSmultiplattform
LisensApache-lisensen
Påvirket av
MetaLanguage,Objective Caml,C#,Erlang,Haskell,Python,Scala

F# (uttalt somF Sharp) er et funksjonelt programmeringsspråk utviklet avMicrosoft medDon Syme som hovedarkitekt. F# kan bli kalt et hybridspråk, da det ikke er et rent funksjonelt programmeringsspråk, men forener flere typer paradigmer, deriblant imperativ ogobjektorientert programmering. Syntaksmessig er F# stort sett kompatibelt medOCaml, et språk iML-familien.

I likhet med flere språk utviklet av Microsoft har man gjennom F# tilgang til hele.NET-rammeverket. Dette gjør at man kan drive utvikling på samme plan i F# som i C# ogVisual Basic.

Historie

[rediger |rediger kilde]

Don Syme i Microsoft Research brukte 5 år på å utforske muligheten til å implementere et funksjonelt programmeringsspråk som siktet seg inn på .NET-rammeverket. En av hovedgrunnene til Microsofts investering i F# var å nå inn i nye domener som deres tidligere språk ikke har vært innblandet i, blant annet vitenskapelige og matematiske områder.Simon Peyton Jones, en av de største bidragsyterne til programmeringsspråketHaskell og kollega av Don Syme, var en nøkkelperson i utviklingen av asynkrone arbeidsforløp i F#.

Syntaks

[rediger |rediger kilde]

Syntaksmessig tar F# veldig mye fra OCaml, og flere av språkutviklerne for OCaml ble brukt som ressurser i utviklingen av F#. F# låner også ideer fra flere andre funksjonelle språk, som Haskell, men også fra imperative og objektorienterte språk somC# ogPython.

F# tar i bruk sterk typesetting og implisitt typededuksjon. Som resultat kan man velge hvorvidt man ønsker å spesifikt definere type, eller om kompilatoren skal undersøke det selv. I enkelte tilfeller kan det være en fordel å spesifisere hvilke type man ønsker å bruke for å være sikker på at inndata kommer i den typen man ønsker, og utdata blir levert av samme grunn. Dermed kan man tidlig oppdage feil som man ellers ikke ville funnet før etter kompilering.

I F# er alle variabler i utgangspunktet uforanderlige. Hvis utvikleren ønsker det, kan dette omgås ved å brukemutable nøkkelordet.

Hello World

[rediger |rediger kilde]

En liten sammenligning av etHello World-program i F# og et tilsvarende i OCaml, med kommentarer og variabeldeklarasjon:

(* Dette er en kommentar og eksempel i F# *)letvariabel="Hello World"printfn"%s"variabel


(* Dette er en kommentar og eksempel i OCaml*)letvariabel="Hello world"print_stringvariabel

Currying

[rediger |rediger kilde]

Både variabler og funksjoner er verdier i F#. Dette gjør at man kan bruke ufullstendige funksjoner ogcurrying på funksjoner. Et lite eksempel på currying i F#:

openSystem.Windows.Formsletmsgboxtittelinnhold=MessageBox.Show(innhold,tittel)letdelvisMsgBox=msgbox"Dette er tittelen"delvisMsgBox"Dette er innholdet"

Lat evaluering

[rediger |rediger kilde]

Som standard blir F# lest og evaluert fra topp til bunn, men ved å brukelazy-nøkkelordet kan man bruke lat evaluering, slik at koden ikke blir evaluert før man absolutt vil det. Et eksempel på nytten av lat evaluering kan være hvis man ønsker å kalkulere store tall som man ikke vil bruke tid og prosessorkraft på før det faktisk trengs.

Siden F# blir lest fra topp til bunn, vil første eksempel i koden nedenfor feile. fordi Først evaluerescreateDir, som oppretter mappen "Mappenavn", deretter vil den igjen prøve å skape den samme mappen når if-uttrykket blir evaluert som sant. I det neste eksemplet blir ikke funksjonencreateDir evaluert og mappen opprettet før if-uttrykket blir evaluert som sant i den tredje kodelinjen.

(** Med ivrig evaluering **)letskalOpprette=trueletcreateDir=Directory.CreateDirectory(@"C:\Mappenavn")ifskalOpprettethencreateDirelsefailwith"Ikke opprettet"


(** Med lat evaluering **)letskalOpprette=trueletcreateDir=lazy(Directory.CreateDirectory(@"C:\Mappenavn"))ifskalOpprettethencreateDir.Force()elsefailwith"Ikke opprettet"

Eksterne lenker

[rediger |rediger kilde]
A# ·ActionScript ·Ada ·Alef ·ALGOL ·ALGOL 58 ·ALGOL 60 ·ALGOL 68 ·ALTRAN ·APL ·AppleScript ·Argus ·Assembler ·Autokode ·awk ·B ·BASIC ·BCPL ·BETA ·BitC ·BLISS ·Bourne Shell ·Bourne Again Shell ·C ·C++ ·C-- ·CHILL ·C# ·C shell ·Caml ·Ch ·Cilk · Cilk++ ·Cilk Plus ·Clarion ·Clipper ·CLISP ·Clojure ·CLU ·COBOL ·COMAL ·Common Lisp ·Concurrent C ·Concurrent Euclid ·Concurrent Pascal ·D ·Delphi ·Dylan ·ECMAScript ·Eiffel ·Emacs Lisp ·Erlang ·Euclid ·F* ·F# ·Forth ·Fortran ·GNU Common Lisp ·GNU Pascal ·Go ·Haskell ·HyperTalk ·Incr Tcl ·INTERCAL ·Interlisp ·Java ·JavaScript ·JRuby ·KornShell ·LaTeX ·Legoscript ·LilyPond ·Limbo ·Lisp ·LPC ·Lua ·Lynx ·Mary ·MATLAB ·Mesa ·ML ·MML ·Modula ·Modula-2 ·Modula-2+ ·MUMPS ·Objective-C ·Objective-C++ ·OCaml ·OpenVera ·O'Haskell ·Pascal ·Perl ·PHP ·Pike ·PL/I ·Plankalkül ·PLEX ·Prolog ·Protel ·Pure Data ·Python ·R ·Ratfor ·REXX ·RTL/2 ·Ruby ·Rust ·SAS ·Scala ·Scheme ·Scratch ·Simula ·SML ·Smalltalk ·SNOBOL ·Tcsh ·Tcl ·TECO ·TOM ·Turbo C ·Turbo C++ ·Turbo Basic ·Turbo Modula-2 ·Turbo Pascal ·Verilog ·Visual Prolog ·Turing ·TypeScript ·Vala ·VHDL ·Visual Basic
Autoritetsdata
Hentet fra «https://no.wikipedia.org/w/index.php?title=F_Sharp&oldid=23298145»
Kategori:
Skjulte kategorier:

[8]ページ先頭

©2009-2026 Movatter.jp