为什么权力集在haskell中被认为是非确定性的例子?

时间:2015-01-21 12:00:35

标签: haskell

给定一组[1,2,3],功率集是唯一的。为什么我们说这是非确定性的?考虑另一个例子

[1,2] >>= \n -> ['a','b'] >>= \ch -> return (n,ch)  

为什么这个函数不确定?

如果我认为\ch -> return (n,ch)是第二个函数,那么第一个函数是什么?

如果第一个功能是

\n -> ['a','b'] >>= \ch -> return (n,ch)  

为什么从右到左进行评估。

不应该是\n -> (function)吗?

这个(['a','b'] >>= \ch -> return (n,ch))是什么功能?

如果它是从左到右它不能使用第一部分\ch来评估第二个['a','b']函数,它不需要对'n'参数做任何事情。

1 个答案:

答案 0 :(得分:12)

在谈论列表monad时,有时会使用术语非确定性的原因是因为指称语义。在为非确定性语言提供语义时,通常使用电源域。可以使用列表在Haskell中近似该域。由于在Haskell中使用monad来自于它们在指称语义中的使用,因此该领域中使用的一些术语已被延续,即使它们在新的语境中可能有意义也可能没有意义。