私はHaskellを初めて使用しています。私は入力文字列(a)を読んでいて、内部に文字(e)が見つかると文字列を返したいと思います。今、私の全体のソースコード:IO()の代わりに[Char]を取得するString
a = "b,b,b,b/b,b,b/b,b,b,b/e,e,e/w,w,w,w/w,w,w/w,w,w,w"
n = length a
simpleCase n =
case n of
'a' -> "hey cutie"
eLoopCase i =
if i < n
then do
let char = a !! i
case char of
'e' -> putStr $ "(" ++ "found an e" ++ "),"
'w' -> return()
'b' -> return()
',' -> eLoopCase (i+1)
'/' -> eLoopCase (i+1)
if (char == ',' || char == '/') == False
then eLoopCase (i+1)
else return()
else return()
simpleCaseは私に文字列をバック与えるがeLoopCaseは私のIO()バックを提供します。それは動作しますが、私はeLoopCaseがStringを返すようにしたいので、私はそれに取り組むことができます。
:t simpleCase
simpleCase :: Char -> [Char]
:t eLoopCase
eLoopCase :: Int -> IO()
私は私の理解が終わるところこれは、これはモナド、then do
とputStr
とは何かを持っていることを理解しています。 do
を削除すると、解析エラーが発生します。
タイプの署名をお願いします。そして、問題に関連していない事例句のいくつかを削除しないのはなぜですか? – leftaroundabout
ここにあなたのコードをすべて入れないで[MCVE](http://stackoverflow.com/help/mcve)を作ってください。 – wizzup
Not * nomads *しかし* monads *。 –