7

현재 저는 하스켈과 Yampa를 배우고 있으며 반응 함수에 대해 질문하고 있습니다.Yampa의 반응 (센스) 기능의 시간차

reactimate :: IO a -- init 
     -> (Bool -> IO (DTime, Maybe a)) -- sense 
     -> (Bool -> b -> IO Bool) -- actuate 
      -> SF a b -- signal function 
     -> IO() 

감지 유형 기능에서 볼 수 있듯이 감지 기능 출력의 일부는 현재 및 이전 기능 호출 간의 시간 차이입니다. 필자가 보았던 예제에서,이 시간 차이는 이전 호출의 값을 유지하기 위해 IORef를 사용하여 감각 내부에서 "수동으로"계산됩니다.

외부 상태를 사용하여 시간차를 추적해야하는 것은 이상한 것처럼 보입니다. 왜이 계산이 반응 함수에서 수행되지 않았습니까? IORef가이를 처리하는 좋은 방법입니까?

답변

1

나는 반응 시간이 델타 자체를 계산하지 않는다고 생각한다. 이는 시간의 특정 개념을 하드 코딩하는 것이라고 생각한다. 10 년 동안의 포트폴리오 리스크 또는 이와 유사한 것을 시뮬레이션하고 싶다고 가정하고, 시간 델타 해결은 하루가되어야합니다. 이것은 말하기를, 나는 내가 코드에서 같은 기술을 사용했지만, Ioref가 해커처럼 보이는 것에 동의합니다.