すみません、Haskell初心者です。if文だと動作するのにcase文だとエラーになってしまうので、ソースコードの誤りを教えて頂きたく。ちなみにpaiza.ioを使用しています。
case文を使用したコード(parse error)
haskell
1import Control.Monad 2import Control.Applicative 3import Data.List 4 5data Operation a = PushBack a | RandomAccess a | PopBack 6 7-- reads an Operation, input i is dummy. 8readOperation :: Int -> IO Operation Int 9readOperation i = do 10 opStr <- getLine 11 let opList = (map read (words opStr)) :: [Int] 12 let op = case (head opList) of 13 0 -> PushBack (opList !! 1) 14 1 -> RandomAccess (opList !! 1) 15 _ -> PopBack 16 return op
Main.hs:28:11: parse error on input ‘->’
「0 -> PushBack (opList !! 1)」の行です。
if文を使用したコード(コンパイルできる)
haskell
1import Control.Monad 2import Control.Applicative 3import Data.List 4 5data Operation a = PushBack a | RandomAccess a | PopBack 6 7-- reads an Operation, input i is dummy. 8readOperation :: Int -> IO (Operation Int) 9readOperation i = do 10 opStr <- getLine 11 let opList = (map read (words opStr)) :: [Int] 12 let op = if (head opList) == 0 13 then PushBack (opList !! 1) 14 else if (head opList) == 1 15 then RandomAccess (opList !! 1) 16 else PopBack 17 return op
よろしくお願いします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/29 02:59