रेंडरिंगhi

योग

Translation status: हिन्दी reader-locale proof. Term names and code fences follow the hi pack; supporting prose may still be English.

Sequential sum-reduce expression: योग सेवन <tensor> पर [i] स्थिर s { लौटाओ <term> }.

Syntax: योग सेवन <source> पर [coords] स्थिर <binder> { लौटाओ <term> }

Category#

collection

Examples#

radix/corpus/lista/methodi-functionales.fab (canonical · existing-home)#

Returns the sum of numeric list elements.

# =============================================================================
# योग — Returns the sum of numeric list elements.
# =============================================================================
#
# What this teaches:
#   • higher-order intrinsics for lists — `filtrata` (filter), `mappata` (map), `समेटो` (fold), `cumulata` (cumulate)
#   • closure syntax with `∴` — inline anonymous functions for collection operations
#
# Common mistakes:
#   • Omitting the initial accumulator value in समेटो/cumulata — both require an explicit seed argument.
#
# See also: prima, ultima, सूची
# =============================================================================

# सूची<T> higher-order intrinsics
#
# res.filter(T x ∴ <pred>)                        -- filter
# res.map(T x ∴ <expr>)                         -- map
# res.reduce((acc, x) ∴ <expr>, init)              -- fold
# res.cumulata((acc, x) ∴ <expr>, init)             -- cumulate (serial prefix scan)
#
# GRAMMAR:
#   listMethod :← expr '.' ('filtrata' | 'mappata' | 'समेटो' | 'cumulata') '(' closure ')'
#
# EXPECTED OUTPUT:
#   [2, 4]
#   [2, 4, 6, 8, 10]
#   15
#   [1, 3, 6, 10, 15]
#
# BACKEND: Go e2e whitelist — सूची intrinsic methods not yet lowered for Go
# (whitelist: सूची/methodi-functionales.fab).

main {
    const list<int> res ← [1, 2, 3, 4, 5] ∷ list<int>
    const list<int> pares ← res.filter(int x ∴ x % 2 ≡ 0)
    const list<int> duplicata ← res.map(int x ∴ x * 2)
    const int योग ← res.reduce((int collectus, int x) ∴ collectus + x, 0)
    const list<int> cumulata ← res.cumulate((int collectus, int x) ∴ collectus + x, 0)
    print pares
    print duplicata
    print योग
    print cumulata
}

Expected output:

[2, 4]
[2, 4, 6, 8, 10]
15
[1, 3, 6, 10, 15]

radix/corpus/summa/summa.fab (canonical · concept)#

Sequential sum-reduce expression: योग सेवन <tensor> पर [i] स्थिर s { लौटाओ <term> }.

# =============================================================================
# योग — one-expression sequential sum-reduce over a टेंसर
# =============================================================================
#
# What this teaches:
#   • Sequential fold — `योग सेवन` lowers to a MIR fold over the टेंसर's
#     पर iteration arm: a `+` accumulator seeded at zero, one term per
#     element, `लौटाओ` inside the body yields the term value.
#   • Identity term — `लौटाओ s` is the sequential spelling of `a.summa()`;
#     the printed pair matches under the numeric tolerance contract.
#   • Transformed term — the body may compute any numeric scalar term from
#     the bound element (here `s + 1.0` per लेन).
#
# Common mistakes:
#   • non-scalar terms — the term must be a numeric scalar (भिन्न/numerus)
#   • the distributed `धागा` spelling is admitted only inside `@ कर्नेल`
#     kernels (v1)
#
# See also: टेंसर, पर, धागा
# =============================================================================

फलन identity(टेंसर<f32, [8]> a) → f32 {
    लौटाओ योग सेवन a पर [i] स्थिर s {
        लौटाओ s
    }
}

फलन shifted(टेंसर<f32, [8]> a) → f32 {
    लौटाओ योग सेवन a पर [i] स्थिर s {
        चर f32 t ← s
        t ← t + 1.0
        लौटाओ t
    }
}

आरंभ {
    स्थिर सूची<f32> flat ← [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
    स्थिर tf32[] seed ← खाली
    स्थिर tf32[8] a ← seed.समतल_से_बनाओ(flat, [8])
    स्थिर f32 per_summam ← a.योग()
    स्थिर f32 plicatum ← identity(a)
    स्थिर f32 summam_totam ← shifted(a)
    दिखाओ per_summam
    दिखाओ plicatum
    दिखाओ summam_totam
}

Expected output:

36.0
36.0
44.0

radix/corpus/summa/summa-combine-refusal.fab (supporting · reject)#

General-combine refusal: योग admits no identity/combine clause — the combine is sum only, pinned by a parse reject.

# =============================================================================
# योग general-combine refusal — no identity/combine clause exists.
# =============================================================================
#
# Decline row (reject reason in the comment):
#   1. general combine — the समेटो ruling bars overloading `योग` with a
#      general combiner; there is no identity or combine clause in the
#      grammar. An attempted `coniunge` tail after the binder fails at
#      parse: the production expects the term block, never an operator
#
# Common mistakes:
#   • expecting `योग` to spell product/min/max reduces — the combine is
#     sum only; general reduce/scan heads belong to the rejection-review
#     sketch, and `समेटो`/`cumulata` own the intrinsic family
#
# See also: योग, धागा, पर, टेंसर
# =============================================================================

# 1. general combine — a combine-operator tail is not grammar; parse reject
फलन product(टेंसर<f32, [8]> a) → f32 {
    लौटाओ योग सेवन a पर [i] स्थिर sconiunge '*' { लौटाओ s }
}

Expected: compilation rejects this example.

radix/corpus/summa/summa-decline.fab (supporting · reject)#

योग decline rows: धागा placement outside @ कर्नेल, K % 32 ≠ 0 tails, and non-scalar terms fail closed.

# =============================================================================
# योग decline — placement, tail alignment, and scalar terms fail closed.
# =============================================================================
#
# Decline rows (reject reason in each comment):
#   1. placement — `धागा` admits only inside an `@ कर्नेल` kernel;
#      this host function declines: SEM010 summa_filum_requires_nucleum_kernel
#   2. tail — K = 8 is not a multiple of the 32-lane width; the v1 tail
#      gate fails closed at admission:
#      SEM010 summa_tail_not_aligned
#   3. non-scalar term — the term body returns a आव्यूह row (a टेंसर),
#      not a numeric scalar: SEM010 summa_term_type_non_scalar
#
# Common mistakes:
#   • expecting a partial-lane धागा fold — K % W ≠ 0 is an admission
#     error, never a tail loop
#   • expecting list/tensor terms to combine element-wise — the term type
#     must be a scalar of the element family
#
# See also: योग, धागा, कर्नेल, पर, टेंसर
# =============================================================================

# 1. placement — धागा outside @ कर्नेल declines
फलन placement(टेंसर<f32, [32]> a) → f32 {
    लौटाओ योग सेवन a पर [i] धागा f स्थिर s { लौटाओ s }
}

# 2. tail — K = 8 not aligned to the 32-lane width declines
@ कर्नेल
@ सार्वजनिक
फलन tail(टेंसर<f32, [8]> a, tf32[1] out) → रिक्त {
    स्थिर f32 total ← योग सेवन a पर [i] धागा f स्थिर s { लौटाओ s }
    out[0] ← total
}

# 3. non-scalar term — a पाठ element is not a numeric scalar
फलन non_scalar(टेंसर<पाठ, [8]> t) → पाठ {
    लौटाओ योग सेवन t पर [i] स्थिर s { लौटाओ s }
}

Expected: compilation rejects this example.