![]() |
1
15
你可以定义 sequence 作为
问题在于
使用
上述代码在应用程序中将失败,因为IO Monad不是 MonadPlus . 所以再多握一下它的手
尽管
丢弃结果是微不足道的:
注意使用
你可能更喜欢
请注意,它与 span 在结果列表中包含失败的元素。这对搭档的第二个动作是剩下的动作。例如:
还有另一种选择:
注意谓词的意义是互补的:
|
![]() |
2
14
我不认为有什么像
仅在找到与谓词不匹配的元素之前对提供的列表进行计算:
|
![]() |
3
10
编辑: 现在我明白你在找什么了。
gbacon发了一个漂亮的
实际上,因为你只对副作用感兴趣,
你这样称呼它:
原始答案:
您不能只“取消”值与
这个
liftM
函数将接受函数
(作为旁注,您可以通过在上搜索其类型来查找类似的函数
Hoogle
,在本例中,通过搜索:
用
现在,这可能不是你想要的。这个
如果您想在第三个元素之后停止打印,则必须停止调用print。也就是说,不适用
顺便问一下,你想知道吗
为什么?
这个用函数定义替换函数的过程称为 等式推理 .
如果我没有犯任何错误,你现在(希望)能看到
|
![]() |
4
6
您可以使用 "List" 包裹。
|
![]() |
5
3
最近,您可以使用 MonadList 包括 handy functions 像Takewhilem,Dropwhilem,DeleteBym等等。 |