私はここに少しハスケルの状況があります。私はモナドで2つの関数を書こうとしています。 最初に、関数の入出力に対して条件が真である限り、関数を反復することになっています。 2番目のものは最初のものを使って数字を入力し、スペースを入力するまで出力として書き出すものとします。条件付きのハスケルのwhileループ
私はこれに助けられましたか?
module Test where
while :: (a -> Bool) -> (a -> IO a) -> a -> IO a
while praed funktion x = do
f <- praed (funktion x)
if f == True then do
y <- funktion x
while praed funktion y
else return x
power2 :: IO()
power2 = do putStr (Please enter a number.")
i <- getChar
while praed funktion
where praed x = if x /= ' ' then False else True
funktion = i
これらのうちどれがあなたの質問ですか?あなたはどこに行き詰まっていますか、何が動かないのですか? – leftaroundabout
これらの関数はどちらもまだコンパイルされていないので、私は彼らが私にとってやりたいことをやっていないと確信しています。私はちょうど実際のバージョンでそれを書く方法を知らない。私は基本的に条件付きのwhileループを作成しようとしています。したがって、たとえば 'while odd(square 3) ' は、正方形3が奇数であるかどうかをテストし、次に正方形3 = 9の結果を使用して ' while odd(square 9) 'などを実行します。 技術的にはxが必要ではありません。 'while condition function' – Chris