Tôi đang học Haskell và Yampa vào lúc này và có một câu hỏi về chức năng phản ứng.Sự khác biệt về thời gian trong hàm phản ứng (ý nghĩa) trong Yampa
reactimate :: IO a -- init
-> (Bool -> IO (DTime, Maybe a)) -- sense
-> (Bool -> b -> IO Bool) -- actuate
-> SF a b -- signal function
-> IO()
Như bạn có thể thấy trong chữ ký loại, một phần đầu ra cho hàm ý nghĩa là chênh lệch thời gian giữa lệnh gọi hiện tại và cuộc gọi trước đó của hàm. Trong các ví dụ tôi đã thấy, sự khác biệt về thời gian này là "thủ công" được tính toán bên trong ý nghĩa, sử dụng IORef để giữ giá trị của cuộc gọi trước đó.
Có vẻ lạ khi bạn phải theo dõi chênh lệch thời gian bằng cách sử dụng trạng thái bên ngoài, tại sao tính toán này không được thực hiện trong hàm phản ứng? IORef là một cách hay để xử lý?