prelude 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. data/CHANGELOG +25 -1
  2. data/README +11 -12
  3. data/Rakefile +6 -10
  4. data/lib/prelude.rb +36 -91
  5. data/lib/prelude/{tuple.rb → array_list.rb} +30 -27
  6. data/lib/prelude/functions.rb +414 -0
  7. data/lib/prelude/functors.rb +72 -0
  8. data/lib/prelude/lambda.rb +89 -0
  9. data/lib/prelude/minimal_array_list.rb +61 -0
  10. data/lib/prelude/monad.rb +11 -15
  11. data/lib/prelude/proper_list.rb +47 -0
  12. data/lib/prelude/proper_ruby_list.rb +48 -0
  13. data/lib/prelude/util.rb +33 -0
  14. data/test/tc_functions.rb +801 -0
  15. data/test/tc_monad.rb +21 -41
  16. data/test/ts_prelude.rb +2 -8
  17. metadata +13 -36
  18. data/doc/classes/Kernel.html +0 -198
  19. data/doc/classes/Prelude.html +0 -241
  20. data/doc/classes/Prelude/EmptyListError.html +0 -113
  21. data/doc/classes/Prelude/List.html +0 -2692
  22. data/doc/classes/Prelude/MissingFunctionError.html +0 -113
  23. data/doc/classes/Prelude/Monad.html +0 -283
  24. data/doc/classes/Prelude/Tuple.html +0 -217
  25. data/doc/classes/Proc.html +0 -198
  26. data/doc/classes/Symbol.html +0 -219
  27. data/doc/created.rid +0 -1
  28. data/doc/files/CHANGELOG.html +0 -122
  29. data/doc/files/README.html +0 -328
  30. data/doc/files/TODO.html +0 -95
  31. data/doc/files/lib/prelude/list_rb.html +0 -83
  32. data/doc/files/lib/prelude/monad_rb.html +0 -83
  33. data/doc/files/lib/prelude/tuple_rb.html +0 -83
  34. data/doc/files/lib/prelude_rb.html +0 -98
  35. data/doc/fr_class_index.html +0 -35
  36. data/doc/fr_file_index.html +0 -33
  37. data/doc/fr_method_index.html +0 -140
  38. data/doc/index.html +0 -27
  39. data/doc/rdoc-style.css +0 -208
  40. data/lib/prelude/list.rb +0 -588
  41. data/test/tc_higher.rb +0 -89
  42. data/test/tc_list.rb +0 -777
  43. data/test/tc_tuple.rb +0 -82
@@ -1,27 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
-
6
- <!--
7
-
8
- Prelude -- a Haskell-like library for functional programming
9
-
10
- -->
11
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
- <head>
13
- <title>Prelude -- a Haskell-like library for functional programming</title>
14
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
- </head>
16
-
17
- <frameset cols="20%,*">
18
- <frameset rows="15%,35%,50%">
19
- <frame src="fr_file_index.html" title="Files" name="Files">
20
- <frame src="fr_class_index.html" name="Classes">
21
- <frame src="fr_method_index.html" name="Methods">
22
- </frameset>
23
- <frameset>
24
- <frame src="files/README.html" name="docwin">
25
- </frameset>
26
- </frameset>
27
- </html>
@@ -1,208 +0,0 @@
1
-
2
- body {
3
- font-family: Verdana,Arial,Helvetica,sans-serif;
4
- font-size: 90%;
5
- margin: 0;
6
- margin-left: 40px;
7
- padding: 0;
8
- background: #efefef;
9
- }
10
-
11
- h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
- h1 { font-size: 150%; }
13
- h2,h3,h4 { margin-top: 1em; }
14
-
15
- a { background: #eef; color: #039; text-decoration: none; }
16
- a:hover { background: #039; color: #eef; }
17
-
18
- /* Override the base stylesheet's Anchor inside a table cell */
19
- td > a {
20
- background: transparent;
21
- color: #039;
22
- text-decoration: none;
23
- }
24
-
25
- /* and inside a section title */
26
- .section-title > a {
27
- background: transparent;
28
- color: #eee;
29
- text-decoration: none;
30
- }
31
-
32
- /* === Structural elements =================================== */
33
-
34
- div#index {
35
- margin: 0;
36
- margin-left: -40px;
37
- padding: 0;
38
- font-size: 90%;
39
- }
40
-
41
-
42
- div#index a {
43
- margin-left: 0.7em;
44
- }
45
-
46
- div#index .section-bar {
47
- margin-left: 0px;
48
- padding-left: 0.7em;
49
- background: #ccc;
50
- font-size: small;
51
- }
52
-
53
-
54
- div#classHeader, div#fileHeader {
55
- width: auto;
56
- color: white;
57
- padding: 0.5em 1.5em 0.5em 1.5em;
58
- margin: 0;
59
- margin-left: -40px;
60
- border-bottom: 3px solid #006;
61
- }
62
-
63
- div#classHeader a, div#fileHeader a {
64
- background: inherit;
65
- color: white;
66
- }
67
-
68
- div#classHeader td, div#fileHeader td {
69
- background: inherit;
70
- color: white;
71
- }
72
-
73
-
74
- div#fileHeader {
75
- background: #057;
76
- }
77
-
78
- div#classHeader {
79
- background: #048;
80
- }
81
-
82
-
83
- .class-name-in-header {
84
- font-size: 180%;
85
- font-weight: bold;
86
- }
87
-
88
-
89
- div#bodyContent {
90
- padding: 0 0 0 0;
91
- }
92
-
93
- div#description {
94
- padding: 0.5em 0.5em;
95
- border: 1px dotted #999;
96
- margin-left: -40px;
97
- }
98
-
99
- div#description h1,h2,h3,h4,h5,h6 {
100
- color: #125;;
101
- background: transparent;
102
- }
103
-
104
- div#validator-badges {
105
- text-align: center;
106
- }
107
- div#validator-badges img { border: 0; }
108
-
109
- div#copyright {
110
- color: #333;
111
- background: #efefef;
112
- font: 0.75em sans-serif;
113
- margin-top: 5em;
114
- margin-bottom: 0;
115
- padding: 0.5em 2em;
116
- }
117
-
118
-
119
- /* === Classes =================================== */
120
-
121
- table.header-table {
122
- color: white;
123
- font-size: small;
124
- }
125
-
126
- .type-note {
127
- font-size: small;
128
- color: #DEDEDE;
129
- }
130
-
131
- .xxsection-bar {
132
- background: #eee;
133
- color: #333;
134
- padding: 3px;
135
- }
136
-
137
- .section-bar {
138
- color: #333;
139
- border-bottom: 1px solid #999;
140
- margin-left: -20px;
141
- }
142
-
143
-
144
- .section-title {
145
- background: #79a;
146
- color: #eee;
147
- padding: 3px;
148
- margin-top: 2em;
149
- margin-left: -30px;
150
- border: 1px solid #999;
151
- }
152
-
153
- .top-aligned-row { vertical-align: top }
154
- .bottom-aligned-row { vertical-align: bottom }
155
-
156
- /* --- Context section classes ----------------------- */
157
-
158
- .context-row { }
159
- .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
- .context-item-value { font-size: small; color: #448; }
161
- .context-item-desc { color: #333; padding-left: 2em; }
162
-
163
- /* --- Method classes -------------------------- */
164
- .method-detail {
165
- background: #efefef;
166
- padding: 0;
167
- margin-top: 0.5em;
168
- margin-bottom: 1em;
169
- border: 1px dotted #ccc;
170
- }
171
- .method-heading {
172
- color: black;
173
- background: #ccc;
174
- border-bottom: 1px solid #666;
175
- padding: 0.2em 0.5em 0 0.5em;
176
- }
177
- .method-signature { color: black; background: inherit; }
178
- .method-name { font-weight: bold; }
179
- .method-args { font-style: italic; }
180
- .method-description { padding: 0 0.5em 0 0.5em; }
181
-
182
- /* --- Source code sections -------------------- */
183
-
184
- a.source-toggle { font-size: 90%; }
185
- div.method-source-code {
186
- background: #888888;
187
- color: #ffdead;
188
- margin: 1em;
189
- padding: 0.5em;
190
- border: 1px dashed #999;
191
- overflow: hidden;
192
- }
193
-
194
- div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
-
196
- /* --- Ruby keyword styles --------------------- */
197
-
198
- .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
-
200
- .ruby-constant { color: #7fffd4; background: transparent; }
201
- .ruby-keyword { color: #00ffff; background: transparent; }
202
- .ruby-ivar { color: #eedd82; background: transparent; }
203
- .ruby-operator { color: #00ffee; background: transparent; }
204
- .ruby-identifier { color: #ffdead; background: transparent; }
205
- .ruby-node { color: #ffa07a; background: transparent; }
206
- .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
- .ruby-regexp { color: #ffa07a; background: transparent; }
208
- .ruby-value { color: #7fffd4; background: transparent; }
@@ -1,588 +0,0 @@
1
- #--
2
- # This file is part of the Prelude library that provides tools to
3
- # enable Haskell style functional programming in Ruby.
4
- #
5
- # http://prelude.rubyforge.org
6
- #
7
- # Copyright (C) 2006 APP Design, Inc.
8
- #
9
- # This library is free software; you can redistribute it and/or
10
- # modify it under the terms of the GNU Lesser General Public
11
- # License as published by the Free Software Foundation; either
12
- # version 2.1 of the License, or (at your option) any later version.
13
- #
14
- # This library is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
- # Lesser General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU Lesser General Public
20
- # License along with this library; if not, write to the Free Software
21
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
- #++
23
-
24
- module Prelude
25
-
26
- # $Id: list.rb 17 2006-09-17 18:03:15Z prelude $
27
- #
28
- # This eventually needs to be implemented with lazy lists, see
29
- # http://lazylist.rubyforge.org for details
30
- #
31
- # I used the signatures of Haskell's List.hs file in order not to forget to implement
32
- # the functions defined there and to remind of what was intended.
33
- module List
34
-
35
- # head -- :: [a] -> a
36
- def head(list)
37
- case list
38
- when [] : empty_list_error
39
- else lambda { list[0] }
40
- end
41
- end
42
-
43
- # tail -- :: [a] -> [a]
44
- def tail(list)
45
- case list
46
- when [] : empty_list_error
47
- else lambda { list[1..-1] }
48
- end
49
- end
50
-
51
- # last -- :: [a] -> a
52
- def last(list)
53
- case list
54
- when [] : empty_list_error
55
- when [list[0]] : lambda { list[0] }
56
- else last(~tail(list))
57
- end
58
- end
59
-
60
- # init -- :: [a] -> [a]
61
- def init(list)
62
- case list
63
- when [] : empty_list_error
64
- when [list[0]] : lambda { [] }
65
- else lambda { [~head(list)]+~init(~tail(list)) }
66
- end
67
- end
68
-
69
- # null -- :: [a] -> Bool
70
- def null(list)
71
- lambda { list.size == 0 }
72
- end
73
-
74
- # length -- :: [a] -> Int
75
- def length(list)
76
- lambda { list.length }
77
- end
78
-
79
- # map -- :: (a -> b) -> [a] -> [b]
80
- def map(f, list)
81
- case list
82
- when [] : lambda{ [] }
83
- else lambda{ [ f[~head(list)] ] + ~map(f, ~tail(list)) }
84
- end
85
- end
86
-
87
- # , reverse -- :: [a] -> [a]
88
- def reverse(list)
89
- r = proc { |l, a|
90
- case l
91
- when [] : lambda { a }
92
- else lambda { ~r[~tail(l), [~head(l)]+a] }
93
- end
94
- }
95
- r[list, []]
96
- end
97
-
98
- # intersperse -- :: a -> [a] -> [a]
99
- def intersperse(list)
100
- warn "Method 'intersperse' is not implemented yet." if $VERBOSE
101
- return lambda { [] }
102
- end
103
-
104
- # transpose -- :: [[a]] -> [[a]]
105
- def transpose(list)
106
- # FIXIT
107
- lambda { list.transpose }
108
- end
109
-
110
- # # -- * Reducing lists (folds)
111
-
112
- # foldl -- :: (a -> b -> a) -> a -> [b] -> a
113
- def foldl(f, a, list)
114
- case list
115
- when [] : lambda { a }
116
- else lambda { f[~foldl(f, a, ~tail(list)), ~head(list)] }
117
- end
118
- end
119
-
120
- # foldl' -- :: (a -> b -> a) -> a -> [b] -> a
121
- def foldl_(list)
122
- warn "Method 'foldl_' is not implemented yet." if $VERBOSE
123
- return lambda { [] }
124
- end
125
-
126
- # foldl1 -- :: (a -> a -> a) -> [a] -> a
127
- def foldl1(f, list)
128
- foldl(f, ~head(list), ~tail(list))
129
- end
130
-
131
- # foldl1' -- :: (a -> a -> a) -> [a] -> a
132
- def foldl1_(list)
133
- warn "Method 'foldl1_' is not implemented yet." if $VERBOSE
134
- return lambda { [] }
135
- end
136
-
137
- # foldr -- :: (a -> b -> b) -> b -> [a] -> b
138
- def foldr(f, s, list)
139
- case list
140
- when [] : lambda { s }
141
- else lambda { f[~head(list), ~foldr(f, s, ~tail(list))] }
142
- end
143
- end
144
-
145
- # foldr1 -- :: (a -> a -> a) -> [a] -> a
146
- def foldr1(f, list)
147
- foldr(f, ~head(list), ~tail(list))
148
- end
149
-
150
- # -- ** Special folds
151
-
152
- # concat -- :: [[a]] -> [a]
153
- def concat(list)
154
- foldr(-:+, [], list)
155
- end
156
-
157
- # concatMap -- :: (a -> [b]) -> [a] -> [b]
158
- def concat_map(list)
159
- warn "Method 'concatMap' is not implemented yet." if $VERBOSE
160
- return lambda { [] }
161
- end
162
- alias concatMap concat_map
163
-
164
- # and -- :: [Bool] -> Bool
165
- def and_(list)
166
- foldr(lambda {|x,y| x && y}, true, list)
167
- end
168
-
169
- # or -- :: [Bool] -> Bool
170
- def or_(list)
171
- foldr(lambda {|x,y| (x || y)}, false, list)
172
- end
173
-
174
- # any -- :: (a -> Bool) -> [a] -> Bool
175
- def any(f, list)
176
- or_(~map(f, list))
177
- end
178
-
179
- # all -- :: (a -> Bool) -> [a] -> Bool
180
- def all(f, list)
181
- and_(~map(f, list))
182
- end
183
-
184
- # sum -- :: (Num a) => [a] -> a
185
- def sum(list)
186
- warn "Method 'sum' is not implemented yet." if $VERBOSE
187
- return lambda { [] }
188
- end
189
-
190
- # product -- :: (Num a) => [a] -> a
191
- def product(list)
192
- warn "Method 'product' is not implemented yet." if $VERBOSE
193
- return lambda { [] }
194
- end
195
-
196
- # maximum -- :: (Ord a) => [a] -> a
197
- def maximum(list)
198
- warn "Method 'maximum' is not implemented yet." if $VERBOSE
199
- return lambda { [] }
200
- end
201
-
202
- # minimum -- :: (Ord a) => [a] -> a
203
- def minimum(list)
204
- warn "Method 'minimum' is not implemented yet." if $VERBOSE
205
- return lambda { [] }
206
- end
207
-
208
- # -- * Building lists
209
-
210
- # -- ** Scans
211
-
212
- # scanl -- :: (a -> b -> a) -> a -> [b] -> [a]
213
- def scanl(f, s, list)
214
- warn "Method 'scanl' is not implemented yet." if $VERBOSE
215
- return lambda { [] }
216
- end
217
-
218
- # scanl1 -- :: (a -> a -> a) -> [a] -> [a]
219
- def scanl1(f, list)
220
- warn "Method 'scanl1' is not implemented yet." if $VERBOSE
221
- return lambda { [] }
222
- end
223
-
224
- # scanr -- :: (a -> b -> b) -> b -> [a] -> [b]
225
- def scanr(f, s, list)
226
- warn "Method 'scanr' is not implemented yet." if $VERBOSE
227
- return lambda { [] }
228
- end
229
-
230
- # scanr1 -- :: (a -> a -> a) -> [a] -> [a]
231
- def scanr1(f, list)
232
- warn "Method 'scanr1' is not implemented yet." if $VERBOSE
233
- return lambda { [] }
234
- end
235
-
236
- # -- ** Accumulating maps
237
-
238
- # mapAccumL -- :: (a -> b -> (a,c)) -> a -> [b] -> (a,[c])
239
- def map_accum_l(list)
240
- warn "Method 'map_accum_l' is not implemented yet." if $VERBOSE
241
- return lambda { [] }
242
- end
243
-
244
- alias mapAccumL map_accum_l
245
-
246
- # mapAccumR -- :: (a -> b -> (a,c)) -> a -> [b] -> (a,[c])
247
- def map_accum_r(list)
248
- warn "Method 'map_accum_r' is not implemented yet." if $VERBOSE
249
- return lambda { [] }
250
- end
251
-
252
- alias mapAccumR map_accum_r
253
-
254
- # -- ** Infinite lists
255
-
256
- # iterate -- :: (a -> a) -> a -> [a]
257
- def iterate(list)
258
- warn "Method 'iterate' is not implemented yet." if $VERBOSE
259
- return lambda { [] }
260
- end
261
-
262
- # repeat -- :: a -> [a]
263
- def repeat(list)
264
- warn "Method 'repeat' is not implemented yet." if $VERBOSE
265
- return lambda { [] }
266
- end
267
-
268
- # replicate -- :: Int -> a -> [a]
269
- def replicate(list)
270
- warn "Method 'replicate' is not implemented yet." if $VERBOSE
271
- return lambda { [] }
272
- end
273
-
274
- # cycle -- :: [a] -> [a]
275
- def cycle(list)
276
- warn "Method 'cycle' is not implemented yet." if $VERBOSE
277
- return lambda { [] }
278
- end
279
-
280
- # -- ** Unfolding
281
-
282
- # unfoldr -- :: (b -> Maybe (a, b)) -> b -> [a]
283
- def unfoldr(list)
284
- warn "Method 'unfoldr' is not implemented yet." if $VERBOSE
285
- return lambda { [] }
286
- end
287
-
288
- # -- * Sublists
289
-
290
- # -- ** Extracting sublists
291
-
292
- # take -- :: Int -> [a] -> [a]
293
- def take(n, list)
294
- lambda { list[0..(n-1)] }
295
- end
296
-
297
- # drop -- :: Int -> [a] -> [a]
298
- def drop(n, list)
299
- lambda { list[n..-1] }
300
- end
301
-
302
- # splitAt -- :: Int -> [a] -> ([a], [a])
303
- def split_at(n, list)
304
- lambda { [~take(n, list), ~drop(n, list)] }
305
- end
306
-
307
- # takeWhile -- :: (a -> Bool) -> [a] -> [a]
308
- def take_while(p, list)
309
- case list
310
- when [] : lambda { [] }
311
- else p[~head(list)] ? lambda { [~head(list)]+ ~take_while(p, ~tail(list)) } : lambda { [] }
312
- end
313
- end
314
-
315
- alias takeWhile take_while
316
-
317
- # dropWhile -- :: (a -> Bool) -> [a] -> [a]
318
- def drop_while(p, list)
319
- case list
320
- when [] : lambda { [] }
321
- else p[~head(list)] ? lambda { ~drop_while(p, ~tail(list)) } : lambda { list }
322
- end
323
- end
324
-
325
- alias dropWhile drop_while
326
-
327
- # span -- :: (a -> Bool) -> [a] -> ([a], [a])
328
- def span(p, list)
329
- lambda { [~takeWhile(p, list), ~dropWhile(p,list)] }
330
- end
331
-
332
- # break -- :: (a -> Bool) -> [a] -> ([a], [a])
333
- def break_(list)
334
- warn "Method 'break' is not implemented yet." if $VERBOSE
335
- return lambda { [] }
336
- end
337
-
338
- # group -- :: Eq a => [a] -> [[a]]
339
- def group(list)
340
- warn "Method 'group' is not implemented yet." if $VERBOSE
341
- return lambda { [] }
342
- end
343
-
344
- # inits -- :: [a] -> [[a]]
345
- def inits(list)
346
- warn "Method 'inits' is not implemented yet." if $VERBOSE
347
- return lambda { [] }
348
- end
349
-
350
- # tails -- :: [a] -> [[a]]
351
- def tails(list)
352
- warn "Method 'tails' is not implemented yet." if $VERBOSE
353
- return lambda { [] }
354
- end
355
-
356
- # -- ** Predicates
357
-
358
- # isPrefixOf -- :: (Eq a) => [a] -> [a] -> Bool
359
- def is_prefix_of(list)
360
- warn "Method 'is_prefix_of' is not implemented yet." if $VERBOSE
361
- return lambda { [] }
362
- end
363
-
364
- alias isPrefixOf is_prefix_of
365
-
366
- # isSuffixOf -- :: (Eq a) => [a] -> [a] -> Bool
367
- def is_suffix_of(list)
368
- warn "Method 'is_suffix_of' is not implemented yet." if $VERBOSE
369
- return lambda { [] }
370
- end
371
-
372
- alias isSuffixOf is_suffix_of
373
-
374
- # -- * Searching lists
375
-
376
- # -- ** Searching by equality
377
-
378
- # elem -- :: a -> [a] -> Bool
379
- def elem(list)
380
- warn "Method 'elem' is not implemented yet." if $VERBOSE
381
- return lambda { [] }
382
- end
383
-
384
- # notElem -- :: a -> [a] -> Bool
385
- def not_elem(list)
386
- warn "Method 'not_elem' is not implemented yet." if $VERBOSE
387
- return lambda { [] }
388
- end
389
-
390
- alias notElem not_elem
391
-
392
- # lookup -- :: (Eq a) => a -> [(a,b)] -> Maybe b
393
- def lookup(list)
394
- warn "Method 'lookup' is not implemented yet." if $VERBOSE
395
- return lambda { [] }
396
- end
397
-
398
- # -- ** Searching with a predicate
399
-
400
- # find -- :: (a -> Bool) -> [a] -> Maybe a
401
- def find(p, list)
402
- warn "Method 'find' is not implemented yet." if $VERBOSE
403
- return lambda { [] }
404
- end
405
-
406
- # filter -- :: (a -> Bool) -> [a] -> [a]
407
- def filter(list)
408
- warn "Method 'filter' is not implemented yet." if $VERBOSE
409
- return lambda { [] }
410
- end
411
-
412
- # partition -- :: (a -> Bool) -> [a] -> ([a], [a])
413
- def partition(p, list)
414
- warn "Method 'partition' is not implemented yet." if $VERBOSE
415
- return lambda { [] }
416
- end
417
-
418
- # -- * Indexing lists
419
-
420
- # -- | These functions treat a list @xs@ as a indexed collection,
421
- # -- with indices ranging from 0 to @'length' xs - 1@.
422
-
423
-
424
- # elemIndex -- :: (Eq a) => a -> [a] -> Maybe Int
425
- def elem_index(list)
426
- warn "Method 'elem_index' is not implemented yet." if $VERBOSE
427
- return lambda { [] }
428
- end
429
-
430
- alias elemIndex elem_index
431
-
432
- # elemIndices -- :: (Eq a) => a -> [a] -> [Int]
433
- def elem_indices(list)
434
- warn "Method 'elem_indices' is not implemented yet." if $VERBOSE
435
- return lambda { [] }
436
- end
437
-
438
- alias elemIndices elem_indices
439
-
440
- # findIndex -- :: (a -> Bool) -> [a] -> Maybe Int
441
- def find_index(list)
442
- warn "Method 'find_index' is not implemented yet." if $VERBOSE
443
- return lambda { [] }
444
- end
445
-
446
- alias findIndex find_index
447
-
448
- # findIndices -- :: (a -> Bool) -> [a] -> [Int]
449
- def find_indices(list)
450
- warn "Method 'find_indices' is not implemented yet." if $VERBOSE
451
- return lambda { [] }
452
- end
453
-
454
- alias findIndices find_indices
455
-
456
- # -- * Zipping and unzipping lists
457
-
458
- # zip -- :: [a] -> [b] -> [(a,b)]
459
- def zip(list1, list2)
460
- warn "Method 'zip' is not implemented yet." if $VERBOSE
461
- return lambda { [] }
462
- end
463
-
464
- # zip3
465
- def zip3(list)
466
- warn "Method 'zip3' is not implemented yet." if $VERBOSE
467
- return lambda { [] }
468
- end
469
-
470
- # zip4, zip5, zip6, zip7
471
- def zip4(list)
472
- warn "Method 'zip4' is not implemented yet." if $VERBOSE
473
- return lambda { [] }
474
- end
475
-
476
- # zipWith -- :: (a -> b -> c) -> [a] -> [b] -> [c]
477
- def zip_with(list)
478
- warn "Method 'zip_with' is not implemented yet." if $VERBOSE
479
- return lambda { [] }
480
- end
481
-
482
- alias zipWith zip_with
483
-
484
- # zipWith3
485
- def zip_with3(list)
486
- warn "Method 'zip_with3' is not implemented yet." if $VERBOSE
487
- return lambda { [] }
488
- end
489
-
490
- alias zipWith3 zip_with3
491
-
492
- # zipWith4, zipWith5, zipWith6, zipWith7
493
- def zip_with4(list)
494
- warn "Method 'zip_with4' is not implemented yet." if $VERBOSE
495
- return lambda { [] }
496
- end
497
-
498
- alias zipWith4 zip_with4
499
-
500
- # unzip -- :: [(a,b)] -> ([a],[b])
501
- def unzip(list)
502
- warn "Method 'unzip' is not implemented yet." if $VERBOSE
503
- return lambda { [] }
504
- end
505
-
506
- # unzip3
507
- def unzip3(list)
508
- warn "Method 'unzip3' is not implemented yet." if $VERBOSE
509
- return lambda { [] }
510
- end
511
-
512
- # unzip4, unzip5, unzip6, unzip7
513
- def unzip4(list)
514
- warn "Method 'unzip4' is not implemented yet." if $VERBOSE
515
- return lambda { [] }
516
- end
517
-
518
- # -- * Special lists
519
-
520
- # -- ** Functions on strings
521
-
522
- # lines -- :: String -> [String]
523
- def lines(list)
524
- warn "Method 'lines' is not implemented yet." if $VERBOSE
525
- return lambda { [] }
526
- end
527
-
528
- # words -- :: String -> [String]
529
- def words(list)
530
- warn "Method 'words' is not implemented yet." if $VERBOSE
531
- return lambda { [] }
532
- end
533
-
534
- # unlines -- :: [String] -> String
535
- def unlines(list)
536
- warn "Method 'unlines' is not implemented yet." if $VERBOSE
537
- return lambda { [] }
538
- end
539
-
540
- # unwords -- :: [String] -> String
541
- def unwords(list)
542
- warn "Method 'unwords' is not implemented yet." if $VERBOSE
543
- return lambda { [] }
544
- end
545
-
546
- # -- ** \"Set\" operations
547
-
548
- # nub -- :: (Eq a) => [a] -> [a]
549
- def nub(list)
550
- warn "Method 'nub' is not implemented yet." if $VERBOSE
551
- return lambda { [] }
552
- end
553
-
554
- # delete -- :: (Eq a) => a -> [a] -> [a]
555
- def delete(o, list)
556
- warn "Method 'delete' is not implemented yet." if $VERBOSE
557
- return lambda { [] }
558
- end
559
-
560
- # union -- :: (Eq a) => [a] -> [a] -> [a]
561
- def union(list)
562
- warn "Method 'union' is not implemented yet." if $VERBOSE
563
- return lambda { [] }
564
- end
565
-
566
- # intersect -- :: (Eq a) => [a] -> [a] -> [a]
567
- def intersect(list)
568
- warn "Method 'intersect' is not implemented yet." if $VERBOSE
569
- return lambda { [] }
570
- end
571
-
572
- # -- ** Ordered lists
573
-
574
- # sort -- :: (Ord a) => [a] -> [a]
575
- def sort(list)
576
- warn "Method 'sort' is not implemented yet." if $VERBOSE
577
- return lambda { [] }
578
- end
579
-
580
- # insert -- :: (Ord a) => a -> [a] -> [a]
581
- def insert(o, list)
582
- warn "Method 'insert' is not implemented yet." if $VERBOSE
583
- return lambda { [] }
584
- end
585
-
586
- end # List
587
-
588
- end # Prelude