6
6
def _rangeImpl (start ):
7
7
def ap (end ):
8
8
step = 1 if start <= end else - 1
9
- return tuple (_buitins ["range" ](start , end + step , step ))
9
+ return list (_buitins ["range" ](start , end + step , step ))
10
10
11
11
return ap
12
12
13
13
14
14
globals ()["range" ] = _rangeImpl
15
15
16
16
17
- replicate = lambda count : lambda value : tuple ( [value for _ in _buitins ["range" ](count )])
17
+ replicate = lambda count : lambda value : [value for _ in _buitins ["range" ](count )]
18
18
19
19
20
20
def _mkFromFoldableImpl ():
@@ -37,7 +37,7 @@ def listToArray(lst):
37
37
while xs is not None :
38
38
result .append (xs .head )
39
39
xs = xs .tail
40
- return tuple ( result )
40
+ return result
41
41
42
42
def result (foldr ):
43
43
def ap (xs ):
@@ -47,17 +47,14 @@ def ap(xs):
47
47
48
48
return result
49
49
50
- # TODO: discuss performance consideration with alternative implementation
51
- # at least should we use 2-tuple instead of class?
52
- # current implementation is aiming to mimic JS implementation as much as possible
53
- # same problem in NonEmpty.Internal.py
50
+
54
51
fromFoldableImpl = _mkFromFoldableImpl ()
55
52
56
53
length = lambda xs : len (xs )
57
54
58
- cons = lambda e : lambda l : ( e , * l )
55
+ cons = lambda e : lambda l : [ e , * l ]
59
56
60
- snoc = lambda xs : lambda x : ( * xs , x )
57
+ snoc = lambda xs : lambda x : [ * xs , x ]
61
58
62
59
63
60
def unconsImpl (empty ):
@@ -114,11 +111,9 @@ def findLastIndexImpl(just):
114
111
def _insertAtImpl (just , nothing , i , a , l ):
115
112
if i < 0 or i > len (l ):
116
113
return nothing
117
- # TODO: discuss performance consideration with alternative implementation
118
- # (*l[i-1], a, *l[i:])
119
114
ll = list (l )
120
115
ll .insert (i , a )
121
- return just (tuple ( ll ) )
116
+ return just (ll )
122
117
123
118
124
119
_insertAt = lambda just : lambda nothing : lambda i : lambda a : lambda l : _insertAtImpl (
@@ -142,24 +137,24 @@ def _updateAtImpl(just, nothing, i, a, l):
142
137
return nothing
143
138
ll = list (l )
144
139
ll [i ] = a
145
- return just (tuple ( ll ) )
140
+ return just (ll )
146
141
147
142
148
143
_updateAt = lambda just : lambda nothing : lambda i : lambda a : lambda l : _updateAtImpl (
149
144
just , nothing , i , a , l
150
145
)
151
146
152
- reverse = lambda xs : tuple (reversed (xs ))
147
+ reverse = lambda xs : list (reversed (xs ))
153
148
154
149
155
150
def concat (xss ):
156
151
result = []
157
152
for x in xss :
158
153
result .extend (x )
159
- return tuple ( result )
154
+ return result
160
155
161
156
162
- filter = lambda f : lambda xs : tuple (_buitins ["filter" ](f , xs ))
157
+ filter = lambda f : lambda xs : list (_buitins ["filter" ](f , xs ))
163
158
164
159
165
160
def partition (f ):
@@ -171,22 +166,20 @@ def result(xs):
171
166
yes .append (x )
172
167
else :
173
168
no .append (x )
174
- return {"yes" : tuple ( yes ) , "no" : tuple ( no ) }
169
+ return {"yes" : yes , "no" : no }
175
170
176
171
return result
177
172
178
173
179
- sortImpl = lambda f : lambda xs : tuple (
180
- sorted ( xs , key = functools .cmp_to_key (lambda a , b : f (a )(b ) ))
174
+ sortImpl = lambda f : lambda xs : sorted (
175
+ xs , key = functools .cmp_to_key (lambda a , b : f (a )(b ))
181
176
)
182
177
183
178
slice = lambda s : lambda e : lambda xs : xs [s :e ]
184
179
185
- take = lambda n : lambda xs : xs [: max (n , 0 )]
186
- drop = lambda n : lambda xs : xs [max (n , 0 ) :]
180
+ take = lambda n : lambda xs : xs [:max (n , 0 )]
181
+ drop = lambda n : lambda xs : xs [max (n , 0 ):]
187
182
188
- zipWith = lambda f : lambda xs : lambda ys : tuple (
189
- map (lambda t : f (t [0 ])(t [1 ]), zip (xs , ys ))
190
- )
183
+ zipWith = lambda f : lambda xs : lambda ys : list (map (lambda t : f (t [0 ])(t [1 ]), zip (xs , ys )))
191
184
192
185
unsafeIndexImpl = lambda xs : lambda n : xs [n ]
0 commit comments