【发布时间】:2012-05-13 00:28:59
【问题描述】:
对不起,我英语不好。
让我们看看下面的代码。
main = getChar
首先,main会被求值,它的值是“getChar”,但是编译器不知道“getChar”的值,所以编译器会求值“getChar”来计算“getChar”的值,所以会执行getChar .
实际上,当我测试上面的代码时。 "getChar 被执行。
让我们看看下面的代码。
main = return (getChar, getChar)
首先,main 求值,它的值是 return (undefined, undefined) -> IO (undefined, undefined),所以 prelude 会求值 IO (undefined, undefined) 来打印值。因此将评估两个 getChar 之一。
但是,当我测试上面的代码时,两个 getChar 都没有被评估。我不明白为什么没有两个 getChar 被评估。
【问题讨论】:
-
顺便问一下,你从哪里得到 main 的结果应该打印出来的信息?事实并非如此。无论如何它都会被丢弃。
-
return X不执行X的效果。例如,main = return getChar什么都不做。 -
这里的任何人都可以提供该代码的应用样式版本来满足 OP 的要求吗?
-
@missingno:
(,) <$> getChar <*> getChar
标签: haskell