在下面的示例中,“try 0”工作,我得到“Nothing”,而“try2 0”不起作用,我得到“Irrefutable pattern failed for pattern Just(x,y)” 我不知道如何从“尝试0”中得到“Nothing”...因为“calc n”的输出被绑定到(x,y)...请帮助我理解为什么......
locationid
答案 0 :(得分:5)
您从Nothing
获得try
,因为您从Nothing
获得了calc
。 Maybe
Monad实例(通过do
- 符号调用)将Nothing
向前传播到输出。 try2
失败是因为您尝试将Nothing
与模式Just (x,y)
匹配。这些显然不匹配,因为一个是Just
,一个是Nothing
。