2
나는 단순한 요구를 위해 Yesod 유형을 잘 알고 있다고 생각했습니다. 하! 지금 컴파일하는 두 가지 기능이 있지만 현재 내가 원하는 기능을 제대로 수행하지 못하고 진행 방법을 잘 모르겠습니다. 내가 주석을 제거하거나 getCurrentTime에 대한 호출이, 내가 아래에 표시됩니다 오류가 발생하는 경우일치 유형 : Befuddlement
addNote' selectedProduct = do
_ <- runDB $ insert <=< liftIOHandler $ addNote selectedProduct
return()
-- addNote :: SelectedProduct -> IO (NotesGeneric SqlPersist)
addNote (MKsp tid firmware version _ requester (Textarea note)) = do
-- currentTime <- getCurrentTime
return $ Notes tid requester firmware version note undefined
가 나는 이유 주석 addNote
의 유형 서명을해야합니다.
addNote'
의 형식이 무엇인지 알 수 없습니다. 나는 getUTCTime
선 또는 유형 서명을 주석을 제거하면 다음
addNote :: forall (m :: * -> *).
Monad m =>
SelectedProduct -> m (NotesGeneric SqlPersist)
은 내가 오류입니다 : 또한
Warning: Top-level binding with no type signature:
addNote' :: forall master (monad :: * -> *) sub sub1 master1.
(YesodPersistBackend master
~
Control.Monad.Trans.Reader.ReaderT (HandlerData sub1 master1),
YesodPersist master,
PersistBackend
(Control.Monad.Trans.Reader.ReaderT (HandlerData sub1 master1))
(GGHandler sub master IO),
Control.Monad.IO.Class.MonadIO monad) =>
SelectedProduct
-> Control.Monad.Trans.Reader.ReaderT
(HandlerData sub master) monad()
, GHC는 addNote
의 유형이 말한다 : GHC은 다음을 말한다 addNote
입니다.
Couldn't match expected type `Control.Monad.Trans.Reader.ReaderT
(HandlerData sub0 master0) IO b0'
with actual type `IO (NotesGeneric SqlPersist)'
Expected type: GGHandler sub0 master0 IO b0
Actual type: IO (NotesGeneric SqlPersist)
In the return type of a call of `addNote'
In the second argument of `($)', namely `addNote selectedProduct'
일치하는 유형을 얻으려면 어떻게해야합니까?
어젯밤에이 솔루션이 나에게 파란색으로 나왔습니다. 나는 이것이 간단하기를 바랬습니다. –