绑定也可以在do-block中使用,但它在函数中不起作用

时间:2017-03-19 00:32:13

标签: haskell

在下面的示例中,“try 0”工作,我得到“Nothing”,而“try2 0”不起作用,我得到“Irrefutable pattern failed for pattern Just(x,y)” 我不知道如何从“尝试0”中得到“Nothing”...因为“calc n”的输出被绑定到(x,y)...请帮助我理解为什么......

locationid

1 个答案:

答案 0 :(得分:5)

您从Nothing获得try,因为您从Nothing获得了calcMaybe Monad实例(通过do - 符号调用)将Nothing向前传播到输出。 try2失败是因为您尝试将Nothing与模式Just (x,y)匹配。这些显然不匹配,因为一个是Just,一个是Nothing