JuliaArrays / JuliaArrays/StaticArrayInterface.jl

Can we contextualize `parent_type`?

Offen
#9 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Julia
Sterne
14
Forks
8
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

When I made this PR to base some good points were brought up about what we knew about parent(x) compared to x. With a few exceptions (that we should probably clean up), we simply use parent_type as convenient syntax for communicating the type of the underlying data buffer/collection. An informal search through juliahub shows that a handful of packages define something very similar independent of this package, so it's clearly something that has utility already. I'd like to know if we could do better.

The biggest hangup here is how we succinctly describe what assumptions persists between x and parent(x). The only approachable idea I have is a method like is_lazy_wrapper when we can assume that the wrapper type changes nothing. However, that seems extremely limiting and questionably useful.

A more approachable aspect to this is describing the kind of type that is parent_type(x). For example, sub-typing something like BufferStyle with these subtypes:

  • WrappedBuffer: single wrapped buffer like SubArray.
  • MultiBuffer: multiple distinct buffers like Tridiagonal
  • ComputedBuffer: buffer is computed on the fly and isn't stored in memory (e.g., FillArrays).

However, creating traits for describing parent_type(x) isn't terribly useful until we have a generic approach for doing f(x) = f(parent(x)).

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den verlinkten PR und die Diskussion des Issues über parent(x), parent_type(x) und die vorgeschlagenen BufferStyle-Kategorien zu lesen. Vergleiche die genannten Beispiele – SubArray, Tridiagonal und FillArrays – und bestimme, ob ein konkretes Trait oder ein generisches Design f(x) = f(parent(x)) spezifiziert werden kann. Erledigt bedeutet, einen festgelegten, implementierbaren Schnittstellenvorschlag zu erreichen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
julia
Bereich
data
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.