4 ms·
Yes! "Now" is not a constant. It's a function. It's a function that takes no arguments. It's also a function that can be lazy-evaluated. f() != f() A != A
by ukj 5y ago
Yes! "Now" is not a constant. It's a function. It's a function that takes no arguments. It's also a function that can be lazy-evaluated.
f() != f()
A != A
You seem to be agreeing with me but your response to me starts with the English phrase "I disagree".
- the_af 5y agoI disagree, that's the thing: "now" is a function that takes one implicit argument: time. So "now" is a trickery to hide the fact you're really saying "now(Ti)", for varying i. I'm not tripping over syntax, but I think you are: You think you're saying A != A When you're really saying A1 != A2 (Or rather now(t0) != now(t1) ) And of course the second form is unsurprising.
- ukj 5y agoYou are talking about a different function. The function I am talking about doesn't take any arguments. [1] pry(main)> Time.now(1) ArgumentError: wrong number of arguments (given 1, expected 0)
- the_af 5y agoIt doesn't take an explicit argument, but time is definitely an implicit argument of your function; how else do you think the function is implemented?
- ukj 5y agoWe are talking about function declaration not implementation, right? The expression A = A can be trivially re-written in another notation as equal(A,A). The reason you don't question the implementation of the equal() function is because it's declared as being true however it's implemented. So, I declare f() != f() as being true. I also declare that f() takes no arguments. All I am doing is translating (transpiling?) English into Ruby. "Now is not now" => "Time.now != Time.now" Talking about function arguments is not even in point. What's the argument to now() in English?
- dragonwriter 5y ago> All I am doing is translating (transpiling?) English into Ruby. Incorrectly. > "Now is not now" => "Time.now != Time.now" Sure, “Now (pointedly looks at watch) is not now (pointedly looks at watch)” is true, and the equivalent of the Ruby. Ruby expressions lack the implicit simultaneity that English sentences wthout some contextual signal of explicit time dependency have, and your mistranslation ignores this.
- ukj 5y agoWhere is the "explicit simultinaity" in looking at your watch twice? The English and Ruby terms map 1:1. Now(Time.now) is not(!=) Now (Time.now) Why do you call the correct "incorrect"?
- dragonwriter 5y ago> Where is the "explicit simultinaity" in looking at your watch twice? Nowhere; that's the contextual signal that defeats the implicit simultaneity the English sentence would have without that body language.
- ukj 5y agoSo you looked at your watch twice at the same time? The English sentence "Now is not Now" describes my thought process (1st person view), not my body language (3rd person view). My thought process occurs over time. Exactly like the Ruby process.
- dragonwriter 5y ago> The function I am talking about doesn't take any arguments. All impure functions have an implicit dependency on (some subset of) the state of the universe when they execute; in mathematics and logic something with this kind of dependency is typically noted by parameterizing it by time when the actual precise nature of the dependency is outside of the scope of the immediate analysis (because a dependency on the state of the universe at the time of execution is equivalent to a dependency on the time of execution with a hidden function mapping time to state of the universe.) That impure functions methods are in many programming languages syntactically not distinguished from pure ones does not change the logic here. That Time.now(at time t0) is distinct from Time.now(at time t1) is... unsurprising, and not an example of A != A in logical terms.
- ukj 5y agoYou know what the state of the universe is when you do logic? Tell us more! I didn't believe in omniscience until now. Time.now(t1) and Time.now(t2) is meaningless in this context because t1 and t2 are unbound variables. What are you passing to your function? Where is it coming from? My function says you are overlooking something. [1] pry(main)> Time.now(t1) NameError: undefined local variable or method `t1' for main:Object from (pry):1:in `__pry__' [2] pry(main)> Time.now(1) ArgumentError: wrong number of arguments (given 1, expected 0) from (pry):2:in `now'
- the_af 5y agoIf you're familiar with the literature of programming languages, you'll see references to the "world" or the "universe" all the time. That's the kind of universe we mean in this discussion, not the one Carl Sagan talked about. As for the rest: please provide the implementation of your Time.now function and I'll tell you its implicit parameters. If you're not talking about an actual function that can be run by a computer, then please tell me so and I'll drop it -- I'm not interested in hypothetical functions tautologically defined not to be equal to themselves.
- ukj 5y ago