Initial commit - fix problems & refactor code
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
from typing import Callable, Any
|
||||
|
||||
class tailRecursion:
|
||||
"""Tail-call optimization wrapper."""
|
||||
|
||||
f: Callable[..., Any]
|
||||
args: tuple[Any, ...]
|
||||
kwargs: dict[str, Any]
|
||||
|
||||
def __init__(self, func: Callable[..., Any], *args: Any, **kwargs: Any) -> None:
|
||||
self.f: Callable[..., Any] = func
|
||||
self.args: tuple[Any, ...] = args
|
||||
self.kwargs: dict[str, Any] = kwargs
|
||||
|
||||
def __call__(self) -> Any:
|
||||
return self.f(*self.args, **self.kwargs)
|
||||
|
||||
@staticmethod
|
||||
def eval(val: Any) -> Any:
|
||||
"""Evaluate tail calls recursively until completion."""
|
||||
while isinstance(val, tailRecursion):
|
||||
val = val()
|
||||
return val
|
||||
Reference in New Issue
Block a user