.


:




:

































 

 

 

 


2

. Haskell

1. :

Haskell. Haskell. .

2. :

1. .

2. Haskell .

3. , , Haskell.

4. .

 

3. :

3.1. Haskell?

Haskell , . Haskell , , , , , , , - , , , . Haskell , .

Hasckell . , . , Haskell-98. Miranda, Ҹ . .

1990 . Haskell , . , (.Net, COM/ActiveXHaskellScript, Javajaskell), .

Haskell , . . . , , :type (:t). , :set +t, , .
Haskell :

Integer Int , Integer .

Float Double .

Bool : True False, .

Char . Haskell .

Haskell . , . .

, - , , : :: . +t, .
. , , Prelude>, , .

 

:

Prelude>:set +t

Prelude>1

Integer

Prelude>1.2

Double

Prelude>a

a:: Char

Prelude>True

True:: Bool

, Integer, Double Char , .
Haskell . , Haskell . , Haskell (Accessviolation). , . , , .

 

Hugs . +, -,*, / (, , ) . , ^ ( ). , :

 

:

Prelude>2*2

Integer

Prelude>4*5 + 1

Integer

Prelude >2^3

Integer

, sqrt (), sin, cos, exp .. , Haskell . , sqrt 2, sqrt(2). :

 

:

Prelude>sqrt 2

Double

Prelude>1 + sqrt 2

Double

Prelude>sqrt 2 + 1

Double

Prelude>sqrt (2 + 1)

Double

 

, , , sqrt 2 + 1 (sqrt 2) + 1, sqrt (2 + 1). , . ( , .) , , Haskell ( 2^5000.) , int ( 2 1 2147483647 31 − =), Integer Haskell .

 

, Haskell . , , . Haskell , : (5,3). : , , - ..

, a b Haskell, , a, - b, (a,b). , (5,3) (Integer, Integer); (1, 'a') (Integer, Char). : ((1,'a'),1.2) ((Integer,Char),Double). .

, (1,2) (Integer,Integer) , Haskell . , - .

Haskell fst snd, , , ( firs() second ()). , :

 

:

 

Prelude > fst (5, True)

Integer

Prelude > snd (5, True)

True:: Bool

, , .. .

 

:

Prelude>(1,2,3)

(1,2,3):: (Integer,Integer,Integer)

Prelude>(1,2,3,4)

(1,2,3,4):: (Integer,Integer,Integer,Integer)

 

. . fst snd . , , , .

, . , , fst snd. 'a' (1, ('a', 23.12)):

 

:

Prelude >

fst (snd (1, ('a', 23.12)))

'a':: Char

 

, . Haskell, . . , a, [a].

 

:

 

Prelude>[1,2]

[1,2]:: [Integer]

Prelude>['1','2','3']

['1','2','3']:: [Char]

 

. [].

: () . , - :

 

:

 

Prelude>1:[2,3]

[1,2,3]:: [Integer]

Prelude>'5':['1','2','3','4','5']

['5','1','2','3','4','5']:: [Char]

Prelude>False:[]

[False]:: [Bool]

 

(:) :

 

:

Prelude>1:(2:(3:[]))

[1,2,3]:: Integer

 

(:) , :

 

:

 

Prelude>1:2:3:[]

[1,2,3]:: Integer

 

- , , , ..

 

:

 

Prelude>[(1,'a'),(2,'b')]

[(1,'a'),(2,'b')]:: [(Integer,Char)]

Prelude>[[1,2],[3,4,5]]

[[1,2],[3,4,5]]:: [[Integer]]

 

Haskell . .

head .

last .

tail

init

null . , True, False.

length .

elem .

take , n .

zip , .

!! , ( 0).

head tail . . :

 

:

 

Prelude>head [1,2,3]

1:: IntegerPrelude>tail [1,2,3]

[2,3]:: [Integer]

Prelude>tail [1]

[]:: Integer

Prelude>length [1,2,3]

Int

Prelude>elem 2 [1,2,3]

True:: Bool

Prelude> take 2 [1,2,3]

[1,2]:: [Integer]

Prelude> zip ["20","30"] [1,2,3]

[("20",1),("30",2)]:: [([Char],Integer)]

Prelude> [1,2,3,4,5]!! 3

Integer

, length Int, Integer.

() Haskell ++.

 

:

 

Prelude>[1,2]++[3,4]

[1,2,3,4]:: Integer

 

Haskell, , . String.

 

:

 

Prelude>"hello"

"hello":: String

 

; , "hello", ['h','e','l','l','o'] 'h':'e':'l':'l':'o':[] , String [Char]. :

 

:

 

Prelude>head "hello"

'h':: Char

Prelude>tail "hello"

"ello":: [Char]

Prelude>length "hello"

Int

Prelude >" hello " ++ ", world "

"hello, world":: [Char]

 

read show:

 

:

 

Prelude>show 1

"1":: [Char]

Prelude>"Formula " ++ show 1

"Formula 1":: [Char]

Prelude>1 + read "12"

Integer

 

show , .

 

Haskell. . (, ):

:load Haskell, .

:edit .

:reload .

, Hugs :load. :edit. ( Notepad) . ; Hugs . Windows. , , :reload.

. - lab1.hs.

:\labs\lab1.hs ( , -). Hugs :

Prelude>:load "c:\\labs\\lab1.hs"

, Main>. , , , Main.

Main>:edit

, . :

x = [1,2,3]

. Hugs :\labs\lab1.hs x :

Main>x

[1,2,3]:: [Integer]

, :load \ . , , Haskell \ ('\n' ..) , \, , , \. . , , , - :

 

:

 

square:: Integer -> Integer

square x = x * x

 

(square:: Integer ->Integer) , square, Integer Integer.

(square x = x * x) . square .

Haskell . , , , , , .. , .. Haskell, . , a b, a->b.

:

 

:

 

Main>:typesquare

square:: Integer ->Integer

Main > square 2

Integer

 

, square : . , -, , Integer ->Integer, -, Haskell, .

. , _ ' ( ). , :

 

Var

Var 1

VariableName

Variable _ name

var '

 

Haskell .

signum, :

 

:

 

signum:: Integer -> Integer

signum x = if x > 0 then 1

else if x < 0 then -1

Else 0

 

: if then else . then- else- .

Bool. . : <, >, <=, >=.

== .

/= .

Bool && || ( ), not. :

 

:

 

x >= 0 && x <= 10

x > 3 && x /= 10

(x > 10 || x < -10) &&not (x == y)

 

, , Bool, . , isPositive, True, False :

 

isPositive:: Integer ->Bool

isPositive x = if x > 0 then True else False

 

signum :

 

signum:: Integer -> Integer

signum x = if isPositive x then 1

else if x < 0 then -1 else 0

 

, isPositive :

 

isPositive x = x > 0

, . , Haskell , . add, , :

 

:

 

add:: Integer ->Integer ->Integer

add x y = x + y

 

add . Haskell , -> . , add Integer -> (Integer ->Integer), .. , add , Integer. , , n , t1, t2,, tn, a, t1->t2->...->tn->a.

, . , signum isPositive, . : ? , isPositive signum; Haskell ! , isPositive , signum.

 

:

, :

1.

2. . .

3. 2 . , /.

4. 2 . .

5. 2 . .

6. . .

7. . .

8. .

9. .

10. . , 10.

 

:

1. Haskell?

2. Haskell.

3. .

4. .

5. Haskell.

6. Haskell.

 

 

:

1

. Haskell

: .

division.hs

division:: Int -> [Int]

division x=filter (divisible x) [1.. x]

divisible x y= x `mod` y ==0 --

 

1

 



<== | ==>
. |
:


: 2018-10-15; !; : 178 |


:

:

.
==> ...

1494 - | 1424 -


© 2015-2024 lektsii.org - -

: 0.159 .