2
シンプルなニーズのために、私はイエロータイプを手元に置いていると思いました。ハ! ここでコンパイルする2つの関数はありますが、現時点で私が望むものとまったく同じものではありません。マッチングタイプ: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
私はそれをコメント解除し、またはgetCurrentTimeに呼び出した場合、私は下に表示されますエラーを取得し、理由コメントアウトaddNote
の型シグネチャを持っています。
addNote'
の種類がわかりません。 GHCが、それは次のようであると言う:
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
の種類はこれですと言う:
addNote :: forall (m :: * -> *).
Monad m =>
SelectedProduct -> m (NotesGeneric SqlPersist)
ここで私はgetUTCTime
行をコメント解除した場合、私は取得エラー、または型シグネチャがあります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'
どのようにタイプを一致させるのですか?
この解決策は、昨夜の青から私に届いた、私はこれが簡単だったと思っていた。 –