Sto avendo una piccola situazione Haskell qui. Sto cercando di scrivere due funzioni con le monadi. Prima si suppone di iterare attraverso una funzione fintanto che la condizione è vera per l'input/output della funzione. Il secondo dovrebbe usare il primo per prendere un numero come input e scriverlo come output finché non si entra in uno spazio.Durante il ciclo in Haskell con una condizione
Sono bloccato con questo, qualsiasi aiuto?
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
Quindi, qual è la vostra domanda? Dove sei bloccato, cosa non funziona? – leftaroundabout
Entrambe queste funzioni non sono ancora state compilate, e sono abbastanza sicuro che non farebbero quello che voglio che facciano comunque. Non so come scriverlo in una versione funzionante. Fondamentalmente sto cercando di ottenere un ciclo temporale che funzioni con una condizione. Quindi, per esempio, 'dispari (quadrato 3)' dovrebbe verificare se il quadrato 3 è dispari, quindi utilizzare il risultato del quadrato 3 = 9 e fare 'mentre dispari (quadrato 9)' e così via e via. Tecnicamente non dovrebbe aver bisogno di una x, dovrebbe funzionare solo con 'while condition function' – Chris