【发布时间】:2010-05-24 08:56:12
【问题描述】:
我还在学习 Haskell,需要类型推断方面的帮助!
使用包 SDL 和 Yampa
我从FRP.Yampa.reactimate 得到以下类型签名:
(Bool -> IO (DTime, Maybe a))
我想将它用于:
myInput :: Bool -> IO (DTime, Maybe [SDL.Event])
myInput isBlocking = do
event <- SDL.pollEvent
return (1, Just [event])
...
reactimate myInit myInput myOutput mySF
但它说
无法匹配预期类型 `()' 针对推断类型“[SDL.Event]” 预期类型:IO (DTime, Maybe ()) 推断类型:IO (DTime, Maybe [SDL.Event]) 在 `reactimate' 的第二个参数中,即 `input' 表达式中:reactimate 初始化输入输出过程我认为Maybe a 允许我使用任何东西,甚至是SDL.Event 列表?
当类型签名实际上是 Maybe a 时,为什么会期待 Maybe ()?
为什么它需要一个空元组,或者一个不带参数的函数,或者() 应该是什么?
【问题讨论】: