SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
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 Resursi
Funkcijsko 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 Resursi
Primjer
[ for x in 1 .. 999 do
if x % 3 = 0 or x % 5 = 0 then yield x ]
| List.sum
4.
Funkcijsko programiranje F# Primjeri Resursi
Primjer
[ 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 Resursi
Povijest
• teorijska podloga: A. Church - λ ra£un (1930-ih)
6.
Funkcijsko programiranje F# Primjeri Resursi
Povijest
• teorijska podloga: A. Church - λ ra£un (1930-ih)
• po£eci: kasnih 1950-ih
• MIT: John McCarthy / LISP
7.
Funkcijsko programiranje F# Primjeri Resursi
Povijest
• teorijska podloga: A. Church - λ ra£un (1930-ih)
• po£eci: kasnih 1950-ih
• MIT: John McCarthy / LISP
• Scheme, ML
8.
Funkcijsko programiranje F# Primjeri Resursi
Povijest
• 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 Resursi
FP u drugim jezicima
• C#: LINQ
10.
Funkcijsko programiranje F# Primjeri Resursi
FP u drugim jezicima
• C#: LINQ
• Python: list comprehensions, higher-order functions, ...
11.
Funkcijsko programiranje F# Primjeri Resursi
FP u drugim jezicima
• C#: LINQ
• Python: list comprehensions, higher-order functions, ...
• Ruby, JavaScript...
13.
Funkcijsko programiranje F# Primjeri Resursi
Za²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 Resursi
Za²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 Resursi
Za²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 Resursi
Za²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++
19.
Funkcijsko programiranje F# Primjeri Resursi
F#
• ML =⇒ (O)Caml =⇒ F#
• Don Syme, Microsoft Research, Cambridge cca. 2002.
20.
Funkcijsko programiranje F# Primjeri Resursi
F#
• ML =⇒ (O)Caml =⇒ F#
• Don Syme, Microsoft Research, Cambridge cca. 2002.
• vi²eparadigmatski
• funkcijski
• objektno-orijentirani
• imperativni
21.
Funkcijsko programiranje F# Primjeri Resursi
F#
1
• stati£no i jako tipiziran
1 statically strongly typed
2 Hindley-Milner
22.
Funkcijsko programiranje F# Primjeri Resursi
F#
1
• stati£no i jako tipiziran
2
• pogaa tipove: type inference
1 statically strongly typed
2 Hindley-Milner
23.
Funkcijsko programiranje F# Primjeri Resursi
F#
1
• stati£no i jako tipiziran
2
• pogaa tipove: type inference
• eksplicitna promjenjivost (keyword mutable)
1 statically strongly typed
2 Hindley-Milner
24.
Funkcijsko programiranje F# Primjeri Resursi
F# i .NET Framework
• puni pristup Base Class Libraryju + libraryji speci£ni za F#
(Microsoft.FSharp)
25.
Funkcijsko programiranje F# Primjeri Resursi
F# 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 Resursi
F# 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 Resursi
F# 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 Resursi
F# na Windowsima
• Visual Studio 2010
• Visual Studio 2008 uz zasebnu instalaciju
29.
Funkcijsko programiranje F# Primjeri Resursi
F# 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