Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Практика работы на языке Haskell

Покупка
Артикул: 616092.01.99
К покупке доступен более свежий выпуск Перейти
В книге рассматриваются прикладные аспекты работы на языке функционального программирования Haskell. Приводятся описания инструментальных средств пяти классов - трансляторов, интегрированных сред разработки, вспомогательных утилит, специализированных библиотек и справочно-архивных систем. Для каждого программного средства приводится краткое описание, его функциональность и примеры использования. Книга станет хорошим подспорьем как для начинающих программистов, так и для профессионалов, использующих в своей практике функциональную парадигму программирования. К книге прилагается компакт-диск, на котором имеются все описанные в книге инструменты для полноценной работы на языке Haskell.
Душкин, Р. В. Практика работы на языке Haskell [Электронный ресурс] / Р. В. Душкин. - Москва : ДМК Пресс, 2010. - 288 с.: ил. - ISBN 978-5-94074-588-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/408467 (дата обращения: 03.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Практика работы

на языке Haskell + CD

Душкин Р. В.

Москва, 2010

УДК
004.4

ББК
32.973.26018.2
Д86

Душкин Р. В.

Д86
Практика работы на языке Haskell. – М.: ДМК Пресс, 2010. – 288 с., ил.
ISBN 9785940745884

В книге рассматриваются прикладные аспекты работы на языке функционального программирования Haskell. Приводятся описания инструментальных средств пяти классов – трансляторов, интегрированных сред разработки, вспомогательных утилит, специализированных библиотек и
справочноархивных систем. Для каждого программного средства приводится краткое описание, его функциональность и примеры использования.

Книга станет хорошим подспорьем как для начинающих программистов, так и для профессионалов, использующих в своей практике функциональную парадигму программирования.

К книге прилагается компактдиск, на котором имеются все описанные в

книге инструменты для полноценной работы на языке Haskell.

УДК 004.4
ББК 32.973.26018.2

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то

ни было форме и какими бы то ни было средствами без письменного разрешения владельцев
авторских прав.

Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность

технических ошибок все равно существует, издательство не может гарантировать абсолютную
точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

© Душкин Р. В., 2010

   ISBN 9785940745884
© Оформление ДМК Пресс, 2010

8

1
11

1.1
HUGS . . . . . . . . . . . . . . . . . . . . . . . . . . .
11

1.1.1
. . . . . . . . . . . . . . . .
12

1.1.2
. . . . . . . . . . . . . . . . . . . . . . . . . .
12

1.1.3
. . . . . . . . . . . . . .
13

1.1.4
HUGS
. . . . . . .
23

1.1.5
. . . . . . . . . . . . . . . . . . . .
24

1.1.6
. . . . . . . . . . . . . . . . . . . .
26

1.2
GHC . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26

1.2.1
. . . . . . . . . . . . . . . .
27

1.2.2
. . . . . . . . . . . . . . . . . . . . . . . . . .
27

1.2.3
. . . . . . . . . . . . . .
28

1.2.4
. . . . . . . . . .
43

1.2.5
. . . . . . . . . . . . . . . . . . . . .
47

1.2.6
Haskell
. . . . . . . . . . . . .
51

2
53

2.1
Eclipse . . . . . . . . . . . . . . . .
54

2.1.1
. . . . . . . . . . . . . . . .
54

2.1.2
. . . . . . . . . . . . . . . . . . . . . . . . . .
55

2.1.3
. . . . . . . . . . . . . .
57

2.2
EclipseFP . . . . . . . . . . . . . . . . . . . . . . . . . . .
58

2.2.1
. . . . . . . . . . . . . . . .
59

2.2.2
. . . . . . . . . . . . . . . . . . . . . . . . . .
59

2.2.3
. . . . . . . . . . . . . .
61

3
70

3.1
DrIFT
. . . . . . . . . . . . . . . . . . . . . . . . . . .
70

3.1.1
. . . . . . . . . . . . . . . .
72

3.1.2
. . . . . . . . . . . . . . . . . . . . . . . . . .
72

3.1.3
. . . . . . . . . . . . . .
75

3.1.4
. . . . . . . . . . . . . . . . .
78

3.2
Buddha . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81

3.2.1
. . . . . . . . . . . . . . . .
83

3.2.2
. . . . . . . . . . . . . . . . . . . . . . . . . .
83

3.2.3
. . . . . . . . . . . . . .
84

3.2.4
. . . . . . . . . . . . . . . . . . . . . . . .
88

3.3
HLint . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91

3.3.1
. . . . . . . . . . . . . . . .
92

3.3.2
, . . . . . . . . . .
92

3.3.3
. . . . . . . . . . . . . . . . . . . .
96

3.4
Haddock . . . . . . . . . . . . . . . .
97

3.4.1
. . . . . . . . . . . . . . . .
99

3.4.2
. . . . . . . . . . . . . . . . . . . . . . . . . .
99

3.4.3
. . . . . . . . . . . . . . 105

3.5
Darcs . . . . . . . . . . . . . . . . . . . . . 111
3.5.1
. . . . . . . . . . . . . . . . 112

3.5.2
. . . . . . . . . . . . . 113

3.5.3
. . . . . . . . . 115

3.6
Cabal
. . . . . . . . . . . . . . . . . . . . 140

3.6.1
. . . . . . . . . . . . . . . . 142

3.6.2
. . . . . . . . . . . . . . . . . . . . . . . . . . 142

3.6.3
. . . . . . . . . . . . . . 143

3.6.4
. . . . . . . . . . . . . . . . . . . . 156

4
160

4.1
Parsec . . . . . 161
4.1.1
. . . . . . . . . . . . . . . . 163

4.1.2
. . . . . . . . . . . . . . . 163

4.1.3
. . . . . . . . . . . 169

4.2
PPrint . . . . . 195
4.2.1
. . . . . . . . . . . . . . . . 196

4.2.2
. . . . . . . . . . . . . . . . . . . . . . . . . . 197

4.2.3
. . . . . . . . . . . 199

4.3
HaskellDB . . . . . . . . . . . . . . . . . . . 212
4.3.1
. . . . . . . . . . . . . . . . 212

4.3.2
. . . . . . . . . . . . . . . . . . . . . . . . . . 213

4.3.3
. . . . . . . . . . . 217

4.4
wxHaskell . . . 233
4.4.1
. . . . . . . . . . . . . . . . 234

4.4.2
. . . . . . . . . . . . . . . . . . . . . . . . . . 234

4.4.3
. . . . . . . . . . . . . . . . . . . . . 235

4.5
HaskellNet
. . . . . . . . . . 242

4.5.1
. . . . . . . . . . . . . . . . 243

4.5.2
. . . . . . . . . . . 243

5
273

5.1
Hackage
. . . . . . . . . . . . . . . . . . . . 273

5.1.1
. . . . . . . . . . . . . . . . 275

5.2
Hoogle . . . . . . . . . . . . . . . . . . . . . . . . . . 275
5.2.1
. . . . . . . . . . . . . . . . 276

5.2.2
. . . . . . . . . . . . . . 276

5.3
 HsColour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
5.3.1
. . . . . . . . . . . . . . . . 279

5.3.2
. . . . . . . . . . . . . . . . . . . . . 279

5.3.3
. . . . . . . . . . . . . . 280

282

284

Haskell [4, 5] , . , , , . [4] , , , . , ,
, .

1998 . [22] , . ,
, , . XXI , Haskell  , . , Java C++?

, , , , 7

. , , . ,  Hello, world!. , .

? , , . , , . ?, Haskell λ-?, ?, ?. . , . , .

, . , . , ,
, β-. , . , CD , , .

!

, , Haskell . :

1) ;

2) ;

3) ;

4) ;

5) .

, . . 1.

, , . , , , , . (, ), , . , , .

. 1. . . , . . 12 HUGS. , , ().

. 2009 . () . Windows. , , .

, . 10
LATEX listingsHaskell, .

, Haskell

: foldr, last, Functor, fst . . , , : let, class, module. : (//), ($) . ., : [, }.

, :

class Pretty a where

pretty
: :
a −> Doc

prettyList
: :
[ a ] −> Doc

prettyList = list
.
map pretty

-, . , , , , , , . -.

, , , , .

, , (),
(), . . Haskell , . :

1) HUGS;

2) GHC (GHCi, ,

, ).

[1, 2]. [5] Haskell.

1.1
HUGS

HUGS (, HUGS 98) Haskell, -. HUGS 98 Haskell-98. [3].

1. 1.1.1
HUGS

Haskell User's Gofer System

2006

(Mark P. Jones)

(Yale Haskell Group)

MacOS, Unix, Windows

14 BSD

Web-http://www.haskell.org/hugs/

HBI, GHCi

1.1.2
HUGS 1995 Gofer (. GOod For Equational Reasoning). Haskell . 1999 HUGS Haskell-98 ().

HUGS , Haskell, , , , 1.1. HUGS
13

.

HUGS Haskell-98 () , :

1) HUGS () Haskell-98 FFI () (, (.)).

2) Haskell, GHC, HUGS.

3) HUGS , (GHC).

runhugs, Haskell . main . .

1.1.3
HUGS :

hugs {option} {file}

. (, ), ().
, 14
1. , .

:

_ _
_ _
_ _
_ _
_ _ _ _
_ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

| |
| |
| |
| |
| |
| |
| | _ _
H u g s
9 8 :
B a s e d
o n
t h e
H a s k e l l
98
s t a n d a r d

| | _ _ _ | |
| | _ _ | |
| | _ _ | |
_ _ | |
C o p y r i g h t
( c )
1994 −2005

| | _ _ _ | |
_ _ _ | |
W o r l d
W i d e
W e b :
h t t p : / / h a s k e l l . o r g / h u g s

| |
| |
B u g s :
h t t p : / / h a c k a g e . h a s k e l l . o r g / t r a c / h u g s

| |
| |
V e r s i o n :
S e p
2006
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

H u g s
m o d e :
R e s t a r t
w i t h
c o m m a n d
l i n e
o p t i o n
+98
f o r
H a s k e l l
98
m o d e

T y p e
: ?
f o r
h e l p

H u g s >

Hugs>, Hugs, , . -, .

Haskell , HUGS, (:).

HUGS, . , , (, :q :quit).

:

expression

Haskell , show. show , default (,
Integer). :

1.1. HUGS
15

Hugs> 2 + 3 ∗ 4 − 5
9

Hugs> foldl (∗) 1
[ 1 . . 1 0 ]

3628800

Hugs> map snd
[ ( 1 ,
'a ' ) ,
(2 ,
'b ' ) ,
(3 ,
'c ' ) ]

"abc"

expression IO t t, -, . , do {print (25^3); putStr "Greetings !"}

print putStr:

15625
Greetings !

:t :

: type expression

expression, . :

Hugs> : t sequence
sequence
: :
Monad a => [ a b ] −> a [ b ]

:s HUGS, :

: set {option}

, (), . .

:

1. 1) , (+) , (−) . , (+). .

2) , −Pstr.

(−) (+) . str .

98
+
Haskell-98 . , , HUGS . .

−cnum
num (40, HUGS).

o
+
(.) . (−98). .

O
+
(.) , . (−98). .

1.1. HUGS
17

H
+
, ``''. , ,
($). , . .

l
+
(). .hs , .lhs . HUGS .

.
+
(.) . .

q
+
.
.

w
+
, . .

−Fcmd
cmd , , . , HUGS . -Haskell, .

К покупке доступен более свежий выпуск Перейти