РассмотримКак использовать стрелки здесь?
foldr (\x (a,b) -> (a || x==2, b || x==7)) (False,False) [1..6]
--(True,False)
Игнорируя тот факт, что это может быть написано легко с помощью elem
, у меня есть стойкое ощущение, что я мог бы трудоустроить Arrow
синтаксис для упрощения лямбды, я просто не могу получить это права.
Можно ли упростить эту лямбду, используя стрелки? И есть ли у вас общие подсказки о том, как «видеть», когда стрелки могут работать, и как найти правильное выражение?
Эдвард Kmett освободил меня от необходимости заботиться о стрелкам три недели флаговых o [с этими комментариями к блогу Брэндона Симмонса] (http://brandon.si/code/categories-that-want-to-be-arrows/#comment-437318026). –
@ DanielLyons тем не менее, типичные комбинации стрелок '&&&', '|||' и '***' могут быть полезны из-за экземпляра функции стрелки. –
Согласовано. Я просто не думаю, что выигрыш по-настоящему, полностью понимая их, оправдывает боль. –