Tôi phải thừa nhận rằng tôi không biết nhiều về lập trình chức năng. Tôi đã đọc về nó từ đây và ở đó, và vì vậy biết rằng trong lập trình chức năng, một hàm trả về cùng một đầu ra, cho cùng một đầu vào, bất kể hàm đó được gọi bao nhiêu lần. Nó chính xác giống như một hàm toán học ước tính cho cùng một đầu ra cho cùng một giá trị của các tham số đầu vào liên quan đến biểu thức hàm.
Ví dụ, hãy xem xét điều này:
f(x,y) = x*x + y; // It is a mathematical function
Cho dù bạn sử dụng bao nhiêu lần f(10,4)
, giá trị của nó sẽ luôn như vậy 104
. Như vậy, bất cứ nơi nào bạn đã viết f(10,4)
, bạn có thể thay thế nó 104
, mà không làm thay đổi giá trị của toàn bộ biểu thức. Thuộc tính này được gọi là tính minh bạch tham chiếu của một biểu thức.
Như Wikipedia nói ( liên kết ),
Ngược lại, trong mã chức năng, giá trị đầu ra của hàm chỉ phụ thuộc vào các đối số được nhập vào hàm, do đó, gọi hàm f hai lần với cùng một giá trị cho một đối số x sẽ tạo ra cùng một kết quả f (x) cả hai lần.
Một hàm thời gian (trả về thời gian hiện tại ) có thể tồn tại trong lập trình hàm không?
Nếu có, làm thế nào nó có thể tồn tại? Nó không vi phạm nguyên tắc lập trình chức năng? Nó đặc biệt vi phạm tính minh bạch tham chiếu là một trong những tài sản của lập trình chức năng (nếu tôi hiểu chính xác về nó).
Hoặc nếu không, làm thế nào người ta có thể biết thời gian hiện tại trong lập trình chức năng?