Your SlideShare is downloading. ×
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
F#: Funkcijsko programiranje za .NET
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

F#: Funkcijsko programiranje za .NET

671

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
671
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Funkcijsko programiranje F# Primjeri Resursi F# Funkcijsko programiranje za .NET Nikola Pleji¢ <nikola@plejic.com> Web User Group, studeni 2010.
  • 2. Funkcijsko programiranje F# Primjeri ResursiFunkcijsko programiranje • In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data.
  • 3. Funkcijsko programiranje F# Primjeri ResursiPrimjer [ for x in 1 .. 999 do if x % 3 = 0 or x % 5 = 0 then yield x ] | List.sum
  • 4. Funkcijsko programiranje F# Primjeri ResursiPrimjer [ for x in 1 .. 999 do if x % 3 = 0 or x % 5 = 0 then yield x ] | List.sum (Project Euler, zadatak 1: suma svih umnoºaka brojeva 3 i 5 manjih od 1000)
  • 5. Funkcijsko programiranje F# Primjeri ResursiPovijest • teorijska podloga: A. Church - λ ra£un (1930-ih)
  • 6. Funkcijsko programiranje F# Primjeri ResursiPovijest • teorijska podloga: A. Church - λ ra£un (1930-ih) • po£eci: kasnih 1950-ih • MIT: John McCarthy / LISP
  • 7. Funkcijsko programiranje F# Primjeri ResursiPovijest • teorijska podloga: A. Church - λ ra£un (1930-ih) • po£eci: kasnih 1950-ih • MIT: John McCarthy / LISP • Scheme, ML
  • 8. Funkcijsko programiranje F# Primjeri ResursiPovijest • teorijska podloga: A. Church - λ ra£un (1930-ih) • po£eci: kasnih 1950-ih • MIT: John McCarthy / LISP • Scheme, ML • FP danas: • Haskell, Erlang, OCaml, XSLT... • vrlo popularno u akademskoj zajednici i u razvoju visokorizi£nih sustava
  • 9. Funkcijsko programiranje F# Primjeri ResursiFP u drugim jezicima • C#: LINQ
  • 10. Funkcijsko programiranje F# Primjeri ResursiFP u drugim jezicima • C#: LINQ • Python: list comprehensions, higher-order functions, ...
  • 11. Funkcijsko programiranje F# Primjeri ResursiFP u drugim jezicima • C#: LINQ • Python: list comprehensions, higher-order functions, ... • Ruby, JavaScript...
  • 12. Funkcijsko programiranje F# Primjeri ResursiZa²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora
  • 13. Funkcijsko programiranje F# Primjeri ResursiZa²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove...
  • 14. Funkcijsko programiranje F# Primjeri ResursiZa²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove... • manje koda = manje bugova
  • 15. Funkcijsko programiranje F# Primjeri ResursiZa²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove... • manje koda = manje bugova • osobno prosvjetljenje
  • 16. Funkcijsko programiranje F# Primjeri ResursiZa²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove... • manje koda = manje bugova • osobno prosvjetljenje • geekPoints++
  • 17. Funkcijsko programiranje F# Primjeri ResursiHello, World! printfn Hello, World!
  • 18. Funkcijsko programiranje F# Primjeri ResursiF# • ML =⇒ (O)Caml =⇒ F#
  • 19. Funkcijsko programiranje F# Primjeri ResursiF# • ML =⇒ (O)Caml =⇒ F# • Don Syme, Microsoft Research, Cambridge cca. 2002.
  • 20. Funkcijsko programiranje F# Primjeri ResursiF# • ML =⇒ (O)Caml =⇒ F# • Don Syme, Microsoft Research, Cambridge cca. 2002. • vi²eparadigmatski • funkcijski • objektno-orijentirani • imperativni
  • 21. Funkcijsko programiranje F# Primjeri ResursiF# 1 • stati£no i jako tipiziran 1 statically strongly typed 2 Hindley-Milner
  • 22. Funkcijsko programiranje F# Primjeri ResursiF# 1 • stati£no i jako tipiziran 2 • pogaža tipove: type inference 1 statically strongly typed 2 Hindley-Milner
  • 23. Funkcijsko programiranje F# Primjeri ResursiF# 1 • stati£no i jako tipiziran 2 • pogaža tipove: type inference • eksplicitna promjenjivost (keyword mutable) 1 statically strongly typed 2 Hindley-Milner
  • 24. Funkcijsko programiranje F# Primjeri ResursiF# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp)
  • 25. Funkcijsko programiranje F# Primjeri ResursiF# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp) • referenca na DLL + open [namespace]
  • 26. Funkcijsko programiranje F# Primjeri ResursiF# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp) • referenca na DLL + open [namespace] • C# library → F#
  • 27. Funkcijsko programiranje F# Primjeri ResursiF# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp) • referenca na DLL + open [namespace] • C# library → F# • F# library → C#
  • 28. Funkcijsko programiranje F# Primjeri ResursiF# na Windowsima • Visual Studio 2010 • Visual Studio 2008 uz zasebnu instalaciju
  • 29. Funkcijsko programiranje F# Primjeri ResursiF# na drugim platformama 3 • GNU/Linux i MacOS X: Mono 4 • editori: MonoDevelop 2.4 , Emacs, Vim... 3 http://fsxplat.codeplex.com/ 4 http://functional-variations.net/screencasts/linux-monodevelop.aspx
  • 30. Funkcijsko programiranje F# Primjeri ResursiPrimjeri
  • 31. Funkcijsko programiranje F# Primjeri ResursiResursi • F# Programming: http://en.wikibooks.org/wiki/F_Sharp_Programming • F# PowerPack: http://fsharppowerpack.codeplex.com/ • hubFS: http://cs.hubfs.net/ • F# Developer Center: http://fsharp.net/ • Don Syme: http://blogs.msdn.com/b/dsyme/ • Tomas Petricek: http://tomasp.net/

×