【发布时间】:2015-04-27 03:47:50
【问题描述】:
我一直在向 Learn You A Haskell 和 just came across the following statement 学习 Haskell:
执行
(+) <$> [1,2] <*> [4,5,6]会导致不确定性 计算x + y其中x采用来自[1,2]和y的每个值 来自[4,5,6]的每个值。
我想我不明白什么是不确定的。只是结果的顺序还是计算的顺序不保证每次都一样?
【问题讨论】:
-
简而言之,有两种非确定性计算:一种是随机选择结果;另一种是随机选择结果。在其他情况下,所有可能的答案都是由计算生成的,然后您可以稍后决定是要随机选择其中一个还是继续分析所有答案。
-
如果您使用 do 表示法根据列表 monad 编写计算,则声明具有与非确定性有限自动机的转换相同的非确定性语法。我喜欢将
val <- list :: [a]视为声明a类型的正式值val,或将val声明为[a]中的正式a值,称为list。
标签: haskell