Skip to content

feat(quadtree): add filter, exists, forall with tests and benchmarks#20

Open
narysh wants to merge 2 commits into
Lamagraph:mainfrom
narysh:narysev-work
Open

feat(quadtree): add filter, exists, forall with tests and benchmarks#20
narysh wants to merge 2 commits into
Lamagraph:mainfrom
narysh:narysev-work

Conversation

@narysh

@narysh narysh commented Jun 12, 2026

Copy link
Copy Markdown

Implement:

  • Vector.filter / Matrix.filter
  • Vector.exists / Vector.forall (short-circuit || / &&)
  • Matrix.exists / Matrix.forall (short-circuit || / &&)

Tests (64 total):

  • Vector.filter: 9
  • Vector.exists: 12
  • Vector.forall: 12
  • Matrix.filter: 9
  • Matrix.exists: 11
  • Matrix.forall: 11

Benchmarks:

  • Filters.fs: Vector/Matrix filter (dense + sparse), N=64,256,4096
  • Exists.fs: Vector/Matrix exists (dense + sparse), N=64,256,4096
  • Forall.fs: Vector/Matrix forall (dense + sparse), N=64,256,4096
  • Register in BenchmarkSwitcher and .fsproj

narysh added 2 commits June 12, 2026 22:04
Implement:
  - Vector.filter / Matrix.filter
  - Vector.exists / Vector.forall (short-circuit || / &&)
  - Matrix.exists / Matrix.forall (short-circuit || / &&)

Tests (64 total):
  - Vector.filter: 9
  - Vector.exists: 12
  - Vector.forall: 12
  - Matrix.filter: 9
  - Matrix.exists: 11
  - Matrix.forall: 11

Benchmarks:
  - Filters.fs: Vector/Matrix filter (dense + sparse), N=64,256,4096
  - Exists.fs: Vector/Matrix exists (dense + sparse), N=64,256,4096
  - Forall.fs: Vector/Matrix forall (dense + sparse), N=64,256,4096
  - Register in BenchmarkSwitcher and .fsproj
@gsvgit

gsvgit commented Jun 13, 2026

Copy link
Copy Markdown
Member

Правда ли, что то, что Вы сделали, не выражается через map тривиальным образом,

@narysh

narysh commented Jun 13, 2026

Copy link
Copy Markdown
Author

Правда ли, что то, что вы сделали, нельзя выразить через map тривиальным образом?

filter выразить можно, но это было одной из моих задач в проекте
forall и exists можно выразить через аналог fold, но тогда он пройдёт всё дерево, а forall и exists это оптимизируют и полный обход случится, только в худшем случае.
Я понимаю, что этого мало. Остальные задачи, которые у меня были изначально, вы уже реализовали, может вы можете тогда подсказать другие функции, которые нужно реализовать?

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