Én dag med F#

Én dag med F#

  • Comments 1

... første (og eneste) gang jeg så på et funktionelt programmeringssprog var på DTU til kurset kunstig intelligens ... og skal vi ikke bare sige at jeg endte med at kaste håndklædet i ringen ;)

For det første var det helt vildt besværligt at installere denne afart af standard-ML som skulle bruges til faget og for det andet var dokumentationen ikke super hjælpsom.
Men jeg endte dog med at købe bogen, og fik redefineret min opfattelse af ordet "afart" til noget i retning af "omskrevet til det ukendelige".
Så ikke den helt positive oplevelse, men nok heller ikke den bedste måde at "mødes" på ;)

Det har faktisk irriteret mig grusomt. ML bogen har beholdt sin plads i reolen ... klar til at blive læst hvis nu jeg lige skulle ha' ...

... så er tiden kommet til at se lidt på F# og mit andet forsøg på at lære lidt funktionel programmering.

Scenen
Jeg har arbejdet en hel del med C# og OO, men aldrig med funktionel programmering, så min introduktion er baseret på at man kan lidt C# og absolut intet ved om F# eller funktionel programmering :-)

Den rigtige stemning
Det er ganske enkelt ikke muligt at side i sit standard VS2008 Theme og kode funktionel ;)
For at komme i den rigtige stemning må du bruge et "Black Theme" du finder dem her:
www.hanselman.com/blog/VisualStudioProgrammerThemesGallery.aspx
Personligt er jeg gået efter John Lam's Vibrant Ink Port. Ser man på trenden, er der frit valg bare baggrund er sort ... he he;)

Installation af F#
F# er et Microsoft Research projekt og du finder projektsiden her:
research.microsoft.com/fsharp/fsharp.aspx
Vælg "F# Downloads" i menuen til højre.

Hello World
Yes tiden er kommet til "Hello World", men lad os tage en akademisk vinkel og stave det bagfra... "dlroW olleH"

1. Opret et nyt F# projekt i Visual Studio

2. Tilføj en F# kodefil

3. Slet indholdet i (*.fs) standard filen 
    ... og skriv den magiske linie

   1:  print_endline "dlroW olleH"

Hvis vi skraller alt det overflødig væk, så fylder hele programmet (måske lidt flot at kalde én enkelt linie for et program) kun én eneste linie :-)

4. Ikke helt overraskende 'HIT F5' og kør det ;)

Det var jo reelt meget smertefrit så skal vi ikke lige pille lidt i koden og lige gøre det lidt sjovere...

Den lidt sjovere version
Herunder har jeg omskrevet koden lidt og jeg benytter nu variable, funktioner, kompiler direktiver, typer og klasser fra .NET Base Class Library, jeg bruger klasser fra System namespace'et!

   1:  #light
   2:  #nowarn "62" 
   3:  open System
   4:   
   5:  let word1 = ["o";"l";"l";"e";"H"]
   6:  let word2 = ["d";"l";"r";"o";"W"]
   7:   
   8:  let world = List.rev word2
   9:   
  10:  let printer msg =
  11:   List.iter print_string msg
  12:   
  13:  let main() = 
  14:   printer (List.rev word1)
  15:   printer [" "]
  16:   printer world
  17:   print_string "\n\n'press a key to quit'"
  18:   Console.ReadLine()
  19:   
  20:  main()

TIP: Hvis du kopiere koden ind (eller skriver den selv) så husk mellemrum har betydning i F#, altså i C# term antallet af mellemrum styre scope ;)
Ja jeg klapper heller ikke i mine hænder af glæde...

Jeg ser mere på koden ovenfor og på hvordan F# og C# arbejder sammen i den næste post ...

Martin Esmann
Academic Developer Evangelist,
Developer & Platform Strategy
Microsoft Denmark

Leave a Comment
  • Please add 5 and 2 and type the answer here:
  • Post
Page 1 of 1 (1 items)