【发布时间】:2014-01-19 12:17:54
【问题描述】:
有没有办法让Behavior t [a] 在时间 t 的 [a] 的值是在时间 t 包含在 Behavior t [Behavior t a] 中的值?即,具有以下类型的函数:
Behavior t [Behavior t a] -> Behavior t [a]
如果这不可能,是因为逻辑上的不可能性还是反应香蕉的限制?
【问题讨论】:
-
类型签名是有效的,你能解释一下你的问题到底是什么吗?如果我猜对了,你想进行某种过滤吗?
-
我不知道反应香蕉,但仍然有一个问题是这种类型是否有人居住。
-
感谢您提到“类型是有人居住的”,它把我带到了 Haskell Wiki 上的 Curry-Howard 同构定理 wiki 页面。
-
语义上
Behavior a是Time -> a,因此Behavior [Behavior a]是Time -> [Time -> a]而Behavior [a]是Time -> [a]。你在寻找类似fix :: Behavior [Behavior a] -> Behavior [a]; fix as t = map ($ t) (as t)的东西吗? -
@Adrian Highly 建议与 Software Foundations 或 Certified Programming with Dependent Types 一起玩,如果你对这些东西感兴趣的话。
标签: haskell frp reactive-banana