前提・実現したいこと
where式を使った後に処理を書きたいのですが、エラーになります。
データベースを表示するプログラムを書いていて、その後に処理を書こうとしたらエラーになりました。
発生している問題・エラーメッセージ
/home/apo/Documents/project/make/haskell/where/my-project/app/Main.hs:39:5: error: parse error on input ‘print’ | 39 | print "hello" | ^^^^^ -- While building package my-project-0.1.0.0 (scroll up to its section to see the error) using: /home/apo/.stack/setup-exe-cache/x86_64-linux-tinfo6/Cabal-simple_mPHDZzAJ_2.0.1.0_ghc-8.2.2 --builddir=.stack-work/dist/x86_64-linux-tinfo6/Cabal-2.0.1.0 build lib:my-project exe:my-project-exe --ghc-options " -fdiagnostics-color=always" Process exited with code: ExitFailure 1
該当のソースコード
Haskell
1{-# LANGUAGE OverloadedStrings #-} 2 3module Main where 4 5import Lib 6import Database.MySQL.Base 7import qualified System.IO.Streams as Streams 8import qualified Data.Text.IO as T 9import Data.Text 10 11main :: IO () 12main = do 13 print "id name comment time" 14 conn <- connect 15 defaultConnectInfo {ciUser = "root", ciPassword = "Password1234!", ciDatabase = "test"} 16 (defs, is) <- query_ conn "SELECT * FROM memos" 17 --print =<< Streams.toList is 18 19 mapM_ (mapM f) =<< Streams.toList is 20 where 21 -- 受け取った引数が MySQLText の場合だけ、取り出した文字列をputStrLnする関数 22 f :: MySQLValue -> IO () 23 24 f (MySQLText text) = do 25 T.putStr text 26 T.putStr " " 27 28 f (MySQLInt32 int) = do 29 T.putStr (Data.Text.pack (show int)) 30 T.putStr " " 31 32 f (MySQLDateTime text) = do 33 T.putStr (Data.Text.pack (show text)) 34 T.putStrLn "" 35 36 f _other = return () 37 38 39 print "hello"
試したこと
「print "hello"」の部分のインデントがわるいのかと思い、色々変えてみましたがダメでした。
その前の「where」及び関数「f」のインデントも色々変えてみましたがダメでした。
補足情報(FW/ツールのバージョンなど)
stack:Version 2.5.1, Git revision d6ab861544918185236cf826cb2028abb266d6d5 x86_64 hpack-0.33.0
HostPC:Windows10Pro
VirtualBox:6.1
GuestPC OS:Gentoo
すべてのソースコード
https://github.com/ringo-apo/Haskell_where
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/13 02:41 編集
2021/04/13 02:45
2021/04/13 02:45
2021/04/13 02:49
2021/04/13 02:50
2021/04/13 02:52