给定一组[1,2,3],功率集是唯一的.为什么我们说这是非确定性的?考虑另一个例子
[1,2] >>= \n -> ['a','b'] >>= \ch -> return (n,ch)
Run Code Online (Sandbox Code Playgroud)
为什么这个函数不确定?
如果我认为\ch -> return (n,ch)第二个功能是第一个?
如果第一个功能是
\n -> ['a','b'] >>= \ch -> return (n,ch)
Run Code Online (Sandbox Code Playgroud)
为什么从右到左进行评估.
不应该\n -> (function)吗?
这是什么功能(['a','b'] >>= \ch -> return (n,ch))?
如果它从左到右它不能在\ch不使用第一部分的情况下评估第二部分['a','b'],而第一部分不需要对'n'参数做任何事情.
sve*_*son 12
在谈论列表monad时有时会使用术语非确定性的原因是因为指称语义.在为非确定性语言提供语义时,通常使用电源域.可以使用列表在Haskell中近似该域.由于在Haskell中使用monad来自于它们在指称语义中的使用,因此该领域中使用的一些术语已被延续,即使它们在新的上下文中可能有意义也可能没有意义.