Hacker News new | ask | show | jobs
by JoshCole 1212 days ago
You seem to have thought I was talking about the utilities of `f` but I wasn't. I not only see the distinction you are talking about, but I'm making still further distinctions. To make it easier to avoid confusion, I'm just going to write some code to explain the distinction rather than trying to use just language to do so.

    # Analogy is basically saying things are similar.  For example, a good analogy to a function is that same function, but cached.
    analogy = memoized(f)

    # This is a good analogy because of the strong congruence
    [f(x) for x in domain(f)] == [analogy(x) for x in domain(f)]

    # But the thing that makes us want to use the analogy is that there are differences
    benchmark(f, somePropertyToMeasure) != benchmark(analogy, somePropertyToMeasure)

    # For example, in the use of caches in particular, we often resort them to for the time advantage of doing so 
    benchmark(f, timeMetric) > benchmark(analogy, timeMetric)

    # The danger of an analogy breaking down comes when the analogy doesn't actually hold
    bad_analogy = memoized(impure_f)

    # Because the congruence doesn't hold
    [impure_f(x) for x in domain(impure_f)] != [bad_analogy(x) for x in domain(impure_f)]

    # All of this matters to the discussion of anthropomorphism because
    isinstance(Analogy, anthropomorphism)
    isinstance(Analogy, analogy)
Okay, now that you see the structure I'm looking at, lets go back to your comment. You said "because reflex considerations" and I took you to be talking about speed. Imagine you were watching someone be interviewed about caches. They get tossed the question: "when cache lookups are done what is the typical danger" and they hit the question back with "because they are fast". If you then commented that it isn't true, because typically when we use caches we do it because of the performance benefit of doing so that would be a valid point. Now, since caches are analogies and since anthropomorphism is an analogy, they are going to have similar properties. So the reasonableness of this logic with respect to caches says something about the reasonableness of this logic with respect to anthropomorphism.

Hopefully you can see why I think my reasoning is not weird now and hopefully you agree with me? I've tried to be more specific to avoid confusion, but I'm assuming you are familiar with programming terms like memoization and mathematical terms like domain.