• possiblywrong 12 minutes ago

    Following is the closed form solution linked in the article (from a since-deleted Reddit comment):

        from functools import reduce
    
        def recurrence(ops, a0, n):
            def transform(x, op):
                return eval(repr(x) + op)
            ops = ops.split()
            m = reduce(transform, [op for op in ops if op[0] in ('*', '/')], 1)
            b = reduce(transform, ops, 0)
            for k in range(n + 1):
                print('Term 0: ', a0 * m ** k + b * (m ** k - 1) / (m - 1))
    
    > This is really only interesting if a particular (potentially really large) term of the sequence is desired, as opposed to all terms up to a point. The key observation is that any sequence of the given set of operations reduces to a linear recurrence which has the given solution.
    • kscarlet 11 minutes ago

      It seems that JIT is overloaded with at least 2 meaning.

      The canonical definition of JIT is "compilation during execution of a program". Usually, a program is being interpreted first, then switches to compiled code in the middle of execution. This is not what this article does.

      What this article does is sometimes called on-the-fly AOT, or just on-the-fly compilation. I'd prefer not overloading the term "JIT".