У меня есть небольшая ситуация с Хаскеллом здесь. Я пытаюсь написать две функции с монадами. Предполагается, что первый из них выполняет итерацию по функции, если условие истинно для ввода/вывода функции. Второй должен использовать первый, чтобы взять номер в качестве ввода и записать его в качестве вывода, пока вы не введете пробел.Пока петля в Haskell с условием
Я застрял в этом, любая помощь?
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 нечетный (квадрат 3)' должен проверить, является ли квадрат 3 нечетным, а затем использовать результат квадрата 3 = 9 и сделать 'while odd (square 9)' и так далее и далее. Технически он не должен иметь x, он должен просто работать с 'в то время как функция условия' – Chris