Tôi đang có một Trạng thái Haskell nhỏ ở đây. Tôi đang cố gắng viết hai hàm với monads. Thứ nhất có nghĩa vụ lặp qua một hàm miễn là điều kiện là đúng cho đầu vào/đầu ra của hàm. Thứ hai là một trong những nghĩa vụ phải sử dụng đầu tiên để có một số như đầu vào và viết nó như là đầu ra cho đến khi bạn nhập vào một không gian.Khi vòng lặp trong Haskell với điều kiện
Tôi bị kẹt với điều này, bất kỳ trợ giúp nào?
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
Vì vậy, câu hỏi của bạn là câu hỏi nào? Bạn bị mắc kẹt ở đâu, cái gì không hiệu quả? – leftaroundabout
Cả hai chức năng này thậm chí không biên dịch được, và tôi khá chắc chắn rằng họ sẽ không làm những gì tôi muốn họ làm anyways. Tôi chỉ không biết cách viết nó trong một phiên bản làm việc. Tôi về cơ bản cố gắng để có được một vòng lặp while làm việc với một điều kiện. Vì vậy, ví dụ: 'trong khi lẻ (hình vuông 3)' nên kiểm tra nếu hình vuông 3 là lẻ, sau đó sử dụng kết quả của hình vuông 3 = 9 và làm 'trong khi lẻ (hình vuông 9)' v.v. Về mặt kỹ thuật, không cần x, nó chỉ hoạt động với 'trong khi chức năng điều kiện ' – Chris