#8346·taichi

Suggest that the taichi library add support for lambda functions in python.

Author: YongYahnCreated Sep 5, 2023Updated May 9, 2026
Labelsfeature requestwelcome contribution

When I use the taichi library again to speed up my code, the result is that the taichi library does not support lambda functions.

Below is an example of some of my code: @ti.func def coefficient_Qn(self, n: int): """Qn表达式""" theta = ti.var(ti.f32) Qn_func = lambda theta: ((self.alphaS0 / 2 - theta) ** (-1 / 3) - (self.alphaS0 / 2 + theta) ** (-1 / 3)) * sin( n * self.Ns * theta) Qn = ti.quad(Qn_func, (0, self.alphaS0 / 2), max_num_intervals=10) # print('Qn =', Qn) self.Qn = Qn return self.Qn

@ti.kernel def calculate_lambda_a(self, theta: ti.f32):

    Qn = lambda n: self.coefficient_Qn(n)
    Ra = lambda n: self.parameter_Ra(n)
    g1 = self.Rs - self.Rr  # 参数系数
    kc = self.ts * (5 * g1 + self.bs) / (self.ts * (5 * g1 + self.bs) - self.bs ** 2)  
    
    func_a = lambda n: (g1 * self.K0 * self.Ns + g1 * self.Ns * (kc - 1) * Qn(n) * Ra(n) * cos(
        n * self.Ns * theta)) / (self.K0 * self.Ns *
         self.R0 * log(self.Rs / self.Rr) + self.Rs * (kc - 1) * (-1) ** n * Qn(n) / n)

    # lambda_a = mp.nsum(func_a, [1, N], method="richardson + shanks")
    lambda_a = ti.nsum(func_a, [1, N])
    self.lambda_a = lambda_a
    return self.lambda_a

The result of running the programme:

Qn = lambda n: self.coefficient_Qn(n) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Unsupported node "Lambda"