【发布时间】:2013-07-18 09:29:39
【问题描述】:
我在这里遇到了一点 Haskell 情况。我正在尝试用 monads 编写两个函数。 只要函数的输入/输出条件为真,第一个就应该遍历函数。第二个应该使用第一个将数字作为输入并将其写入输出,直到您输入一个空格。
我被困住了,有什么帮助吗?
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
【问题讨论】:
-
那么您的问题是关于哪一个?你在哪里卡住了,什么不起作用?
-
这两个函数甚至都没有编译,而且我很确定他们不会做我想让他们做的事情。我只是不知道如何在工作版本中编写它。我基本上是想让一个while循环处理一个条件。例如,
while odd (square 3)应该测试方格 3 是否为奇数,然后使用方格 3 = 9 的结果并执行while odd (square 9)等等。从技术上讲,它不需要 x,它应该只适用于while condition function
标签: loops haskell while-loop