我不得不承认,我对函数式编程知之甚less。 我从这里到那里读了一遍,所以知道在函数式编程中,无论调用多less次函数,函数都会返回相同的输出。 这与math函数完全相同,即对函数expression式中涉及的input参数的相同值进行相同的输出。 例如,考虑一下: f(x,y) = x*x + y; //it is a mathematical function 无论你使用f(10,4)多less次,它的值总是104 。 因此,无论你在哪里写f(10,4) ,都可以用104replace它,而不用改变整个expression式的值。 这个属性被称为expression式的引用透明 。 正如维基百科所说( 链接 ), 相反,在函数代码中,函数的输出值仅仅依赖于input到函数的参数,所以用参数x的相同值调用函数f两次将产生相同的结果f(x)。 所以我的问题是:函数式编程中是否可以存在时间函数(返回当前时间)? 如果是,那么它又如何存在? 这是否违反函数式编程的原则? 它特别违反了参照透明性 ,这是函数式编程的一个属性(如果我正确地理解它的话)。 或者如果没有,那么在函数式编程中如何知道当前的时间呢?