最近 Haskell でコーディングを始めたばかりで、do blockを使い始めました。私は Scala の世界から来ました。本やいくつかのブログを読んだ後、do ブロックが私たちの理解のインスピレーションであることがわかりました。しかし、それでも私はすべての関数を入力 - >出力として渡す引数に苦労しています
ここで私のコードでは、リクエストを取得するために scotty http サーバー ライブラリを使用しており、そのリクエストを mySQL で永続化しようとしています。
しかし、この行では、たぶんから値を取得して、別の関数に送信して永続化しようとしています
user <- (fmap (\user -> insertUser user) maybeUser)
関数が期待される型を返さないため、コンパイルされません
ActionT テキスト IO (おそらくユーザー)
しかし
IO ユーザー
ここに私のホールプログラム
createUser :: ActionM ()
createUser = do maybeUser <- getUserParam
-- Persist the user
_ <- persistUser
json maybeUser
getUserParam :: ActionT Text IO (Maybe User)
getUserParam = do requestBody <- body
return (decode requestBody)
persistUser :: Maybe User -> ActionT Text IO (Maybe User)
persistUser _maybeUser = let maybeUser = _maybeUser in do
user <- maybeUser
user <- (fmap (\user -> insertUser user) maybeUser)
return maybeUser
insertUser :: User -> IO User
insertUser _user = let user = _user in do
conn <- createConnection
status <- execute conn insertUserQuery [MySQLInt32 (intToInt32 $ getUserId user), MySQLText "hello_haskell_world"]
return user