Skip to content

Fix list to tuple #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 28, 2020
Merged

Fix list to tuple #1

merged 2 commits into from
Jun 28, 2020

Conversation

Hong-Xiang
Copy link
Collaborator

@Hong-Xiang Hong-Xiang requested a review from thautwarm June 24, 2020 17:21
@Hong-Xiang Hong-Xiang merged commit 35dbeee into master Jun 28, 2020
Copy link
Member

@thautwarm thautwarm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

improve, please

@@ -6,15 +6,15 @@
def _rangeImpl(start):
def ap(end):
step = 1 if start <= end else -1
return list(_buitins["range"](start, end + step, step))
return tuple(_buitins["range"](start, end + step, step))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_builtins["range"] is very slow. please directly load range instead. You can give an alias to range in global context, like
_glob = global.


return ap


globals()["range"] = _rangeImpl


replicate = lambda count: lambda value: [value for _ in _buitins["range"](count)]
replicate = lambda count: lambda value: tuple([value for _ in _buitins["range"](count)])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do not bind lambda to variable, use def.
also, avoid _builtins["range"].

@@ -37,7 +37,7 @@ def listToArray(lst):
while xs is not None:
result.append(xs.head)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

result_app = result.append
for ...:
   result_app(xs.head)

fromFoldableImpl = _mkFromFoldableImpl()

length = lambda xs: len(xs)

cons = lambda e: lambda l: [e, *l]
cons = lambda e: lambda l: (e, *l)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use def

ll = list(l)
ll.insert(i, a)
return just(ll)
return just(tuple(ll))


_insertAt = lambda just: lambda nothing: lambda i: lambda a: lambda l: _insertAtImpl(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use def

@@ -137,24 +142,24 @@ def _updateAtImpl(just, nothing, i, a, l):
return nothing
ll = list(l)
ll[i] = a
return just(ll)
return just(tuple(ll))


_updateAt = lambda just: lambda nothing: lambda i: lambda a: lambda l: _updateAtImpl(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use def



_updateAt = lambda just: lambda nothing: lambda i: lambda a: lambda l: _updateAtImpl(
just, nothing, i, a, l
)

reverse = lambda xs: list(reversed(xs))
reverse = lambda xs: tuple(reversed(xs))


def concat(xss):
result = []
for x in xss:
result.extend(x)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bind extend = result.extend outside the loop.
There're a lot of same places you'd follow my above review to change

This was referenced Jun 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants