下面是代碼,我試着讓類型推理找出函數的類型。代碼編譯時,它在運行時失敗。有人可以向我解釋我應該如何解決這種類型的簽名?
Ambiguous type variables `b0', `m0' in the constraint:
(PersistBackend b0 m0) arising from a use of `isFree'
Probable fix: add a type signature that fixes these type variable(s)
In the expression: isFree testDay
In an equation for `it': it = isFree testDay
:t isFree
isFree :: PersistBackend b m => C.Day -> b m Bool
>isFree day = do
match <- selectList [TestStartDate ==. day,
TestStatus !=. Passed,
TestStatus !=. Failed] []
if (L.null match) then (liftIO $ return True) else (liftIO $ return False)
'liftIO(return x)'可能只是'return x'。不確定是否有任何「MonadIO」或「MonadTrans」實例的「法律」,但如果有,那肯定會是一個。 =) –
不知道Foo和Bar需要什麼。 –
D'oh。當然,謝謝。引用我最喜歡的簽名:「如果我沒有看到更進一步,那就是站在巨人的腳印下。」 –