Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 哈斯克尔的非决定论是什么?_Haskell - Fatal编程技术网

Haskell 哈斯克尔的非决定论是什么?

Haskell 哈斯克尔的非决定论是什么?,haskell,Haskell,Haskell程序员提到非决定论是什么意思?我读到列表单子可以用来模拟非确定性,但列表肯定不是非确定性的吗?对非决定论建模意味着什么?据我所知,这只意味着返回一组计算的所有可能结果。您的理解是正确的。列表单子捕捉到的不确定性确实处理可以返回多个可能结果的计算(函数) 也就是说,从a类型的输入不确定地计算B类型的输出的计算f然后在Haskell中由一个函数表示,该函数将a类型的值取为B类型的值列表: f :: A -> [B] 然后,如果我们还有计算g,它也从B类型的输入不确定地计算C类型

Haskell程序员提到非决定论是什么意思?我读到列表单子可以用来模拟非确定性,但列表肯定不是非确定性的吗?对非决定论建模意味着什么?据我所知,这只意味着返回一组计算的所有可能结果。

您的理解是正确的。列表单子捕捉到的不确定性确实处理可以返回多个可能结果的计算(函数)

也就是说,从
a
类型的输入不确定地计算
B
类型的输出的计算
f
然后在Haskell中由一个函数表示,该函数将
a
类型的值取为
B
类型的值列表:

f :: A -> [B]
然后,如果我们还有计算
g
,它也从
B
类型的输入不确定地计算
C
类型的输出

g :: B -> [C]
我们可以组合这些计算以获得组合计算
h
,该计算将
a
类型的输入转换为
C
类型的输出:

h :: A -> [C]
在Haskell中,定义这样一个函数涉及将函数
g
应用于应用的每个可能结果
fx
,然后将由此获得的
h
可能结果列表展平:

h x = concat zs where zs = [g y | y <- f x]
甚至

h = f >=> g

你的理解是正确的。列表单子捕捉到的不确定性确实处理可以返回多个可能结果的计算(函数)

也就是说,从
a
类型的输入不确定地计算
B
类型的输出的计算
f
然后在Haskell中由一个函数表示,该函数将
a
类型的值取为
B
类型的值列表:

f :: A -> [B]
然后,如果我们还有计算
g
,它也从
B
类型的输入不确定地计算
C
类型的输出

g :: B -> [C]
我们可以组合这些计算以获得组合计算
h
,该计算将
a
类型的输入转换为
C
类型的输出:

h :: A -> [C]
在Haskell中,定义这样一个函数涉及将函数
g
应用于应用的每个可能结果
fx
,然后将由此获得的
h
可能结果列表展平:

h x = concat zs where zs = [g y | y <- f x]
甚至

h = f >=> g

也许会有帮助。可能会有帮助。非常感谢。我还没有在其他地方看到如此清晰的解释。非常感谢。我还没有看到其他地方如此清楚地解释这一点。