haskel

background image

Haskell

1

Haskell

Logo Haskella

Haskellczysto funkcyjny język programowania nazwany na cześć

Haskella Currego.

Cechy

Jego specyficzne cechy to m.in.:

leniwe wartościowanie

monady,

statyczny polimorfizm,

• klasy typów, definiowalne operatory (również możliwość tworzenia

nowych),

• strażnicy,

• wbudowana obsługa literate programming.

Rozszerzenia

Pliki Haskella mają rozszerzenie

• hs

• hsl gdy zawierają kod w stylu literate programming.

Kompilator

Haskell był początkowo intensywnie rozwijany wokół ośrodka University of Glasgow, popularny kompilator tego

języka to Glasgow Haskell Compiler (GHC) kompilujący szybki kod maszynowy porównywalny w szybkości

wykonania do kodów z GCC (ok. 1,3 razy wolniejszy niż C).

Przykłady

-- Komentarz

silnia

1

=

1

silnia

n

=

n

*

silnia(n

-1

)

silnia'

n

=

product [

1..

n]

fib

0

=

0

fib

1

=

1

fib

n

=

fib(n

-1

)

+

fib(n

-2

)

ack

(

0

,y)

=

y

+1

ack

(x,

0

)

=

ack(x

-1

,

1

)

ack

(x,y)

=

ack(x

-1

,ack(x,y

-1

))

-- przykład użycia strażników

sign

x

|

x

>

0

=

1

|

x

==

0

=

0

background image

Haskell

2

|

x

<

0

=

-1

myproduct

[]

=

1

myproduct

(n

:

m)

=

n

*

myproduct m

mysum

[]

=

0

mysum

(n

:

m)

=

n

+

mysum m

data

TreeOfMath

=

Mult

TreeOfMath

TreeOfMath

|

Div

TreeOfMath

TreeOfMath

|

Add

TreeOfMath

TreeOfMath

|

Sub

TreeOfMath

TreeOfMath

|

Leaf

Float

compute

(

Mult

x y)

=

compute x

*

compute y

compute

(

Div

x y)

=

compute x

/

compute y

compute

(

Add

x y)

=

compute x

+

compute y

compute

(

Sub

x y)

=

compute x

-

compute y

compute

(

Leaf

x)

=

x

showme

(

Mult

x y)

=

"("

++

(showme x)

++

"*"

++

(showme y)

++

")"

showme

(

Div

x y)

=

"("

++

(showme x)

++

"/"

++

(showme y)

++

")"

showme

(

Add

x y)

=

"("

++

(showme x)

++

"+"

++

(showme y)

++

")"

showme

(

Sub

x y)

=

"("

++

(showme x)

++

"-"

++

(showme y)

++

")"

showme

(

Leaf

x)

=

show x

qsort

[]

=

[]

qsort

(x

:

xs)

=

qsort less

++

x

:

(qsort more)

where

less

=

[ a

|

a

<-

xs, a

<

x ]

more

=

[ a

|

a

<-

xs, a

>=

x ]

-- lista liczb pierwszych

primes

=

map head

$

iterate (

\

(x

:

xs)

->

[ y

|

y

<-

xs, y `mod` x

/=

0

]) [

2..

]

-- lista liczb Fibonacciego

listFib

=

1

:

1

:

(zipWith (

+

) listFib (tail listFib))

-- wyrażenia TreeOfMath mają postać: (Sub (Mult (Leaf 5) (Leaf 4)) (Add

(

Leaf

3

) (

Leaf

2

)))

background image

Haskell

3

Linki zewnętrzne

• Strona domowa Haskella

[1]

Wiki poświęcona Haskellowi

[2]

Przypisy

[1] http:/

/

www.

haskell.

org/

[2] http:/

/

www.

haskell.

org/

haskellwiki

background image

Źródła i autorzy artykułu

4

Źródła i autorzy artykułu

Haskell  Źródło: http://pl.wikipedia.org/w/index.php?oldid=28899849  Autorzy: Adam majewski, Akira, BartekChom, Beno, Catz, Cek, Chilton, Derbeth, Dodek, EMeczKa, Katafrakt, Kocio,
Konradek, Krzysztof Sornat, Laforgue, Mciura, Proktor86, Pwl, Raiden, Skedra, Taw, Vindicator, Vmario, conversion script, pq61.warszawa.cvx.ppp.tpnet.pl, 10 anonimowych edycji

Źródła, licencje i autorzy grafik

Plik:Haskell-Logo.svg  Źródło: http://pl.wikipedia.org/w/index.php?title=Plik:Haskell-Logo.svg  Licencja: Public Domain  Autorzy: Thought up by Darrin Thompson and produced by Jeff
Wheeler

Licencja

Creative Commons Attribution-Share Alike 3.0 Unported
//creativecommons.org/licenses/by-sa/3.0/


Document Outline


Wyszukiwarka

Podobne podstrony:
Haskell cw2
Haskell cw2 2
Haskell def lokalne
Haskell cw2
Haskell definicje warunkowe
HASKELL MATERIAŁY
Haskell def lokalne
haskel
Haskell format kodu
Haskell cw1
Haskell format kodu
haskelWikibooks id 199570 Nieznany
HaskellServerPagesOld
Mirosław Przylipiak Amerykański protest, europejska estetyka (Chłodnym okiem Haskella Wexlera)
Hutton, Graham Programming in Haskell
haskell pl

więcej podobnych podstron