Yampa

7

'daki tepki (işlev) işlevindeki zaman farkı Şu anda Haskell ve Yampa'yı öğreniyorum ve tepki fonksiyonu hakkında bir sorum var. Tür imza görebileceğiniz gibiYampa

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

, duyu fonksiyonu için çıkış parçası fonksiyonunun mevcut ve önceki çağrı arasındaki zaman farkıdır. Gördüğüm örneklerde, bu zaman farkı, bir önceki aramanın değerini korumak için bir IORef kullanılarak, anlamın içinde "manuel" olarak hesaplanır.

Dışsal bir durum kullanarak zaman farkını takip etmeniz gerektiği garip görünüyor, bu hesap neden tepki fonksiyonunda yapılmıyor? IORef, bunun üstesinden gelmenin iyi bir yolu mu?

cevap

1

Tepkilendirmenin sebebinin, zaman deltasının kendisini hesaplamamasının nedeninin, bunun belirli bir zaman kavramını kodlayabilmesi olduğunu düşünürdüm. Portföy riskini on yıllık bir süre boyunca veya bunun gibi bir şeyde simüle etmek istediğinizi düşünün ve zamanınızdaki çözünürlük bir gün olmalıdır. Bu söylediklerim, Ioref şeylerine hacky gibi görünüyor, ama aynı tekniği benim kodumda kullandım.