ここでいくつかのことが間違っています。
- else 句が必要になります。
True
大文字にする必要があります。
inputIndex
常に 2 つの引数を取る必要があります (現在、最後のケースではありません)。
このようなものが欲しいと思います...
inputIndex :: [String] -> [String] -> IO ()
inputIndex listx input = if inputIndex' listx input
then putStrLn ("ok")
else putStrLn ("not ok")
where
inputIndex' :: [String] -> [String] -> Bool
inputIndex' listx input = and [x `elem` listx |x <- input]
(ここでは、プライム/アポストロフィを追加して、ほぼ同じ名前の新しい関数を定義しました。where
句で定義することにより、外側のinputIndex
関数からのみ可視になります。必要に応じて、これをヘルパー関数と呼ぶことができます。まったく別の名前を選択することもできましたが、私は創造的ではありません.)
これを次のように要約することもできます (これもより一般的です)。
allPresent :: (Eq t) => [t] -> [t] -> IO ()
allPresent xs ys = putStrLn (if and [y `elem` xs | y <- ys] then "ok" else "not ok")