Skip to content

Utility functions #11

@steinerkelvin

Description

@steinerkelvin

We should be able to provide functions like benda.util.to_tree(xs: Iterable[T]) -> Tree[T] native-optimized, though I'm not sure on the interface format.

We should also be able to iterate over Tree and List easily and
native-optimizedly with functions like benda.util.from_tree(tree: Tree[T]) -> Iterator[T]:

tree = book.adts.Tree.Node(…, …, …)
for x in benda.util.iter_tree(tree):
   print(x)

I'm inclined to think we should not provide this __iter__ behavior directly on
the types of Tree.Node etc because this behavior is not that obvious and is
implemented as separate functions on Bend's side.


  • benda.util.to_nat(int) -> Nat throws ValueError("Negative integer")
  • benda.util.from_nat(Nat) -> int
  • benda.util.to_string(str) -> String
  • benda.util.from_string(String) -> str
  • benda.util.to_list(Iterable[T]) -> List[T]
  • benda.util.from_list(List[T]) -> list[T]
  • benda.util.iter_list(List[T]) -> Iterator[T]
  • benda.util.iter_tree(Tree[T]) -> Iterator[T]

Note: str conversion from and to String should probably also automatic, but we can't
do that for intNat because they don't map directly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions