Бессмысленный стиль в шаблоне Haskell
Рассмотрим следующую функцию Template Haskell:
composeQ :: ExpQ -> ExpQ -> ExpQ
composeQ = \x y -> [| $(x) . $(y) |]
Можно ли исключить лямбда-выражение из правой части уравнения и записать composeQ
используя бессмысленный стиль?
1 ответ
Не существует универсального способа объединить выражения в любую цитату в стиле без точек, но этот конкретный случай может быть реализован так:
composeQ :: ExpQ -> ExpQ -> ExpQ
composeQ = flip infixApp [|(.)|]
Здесь были сальто infixApp
который обычно принимает параметры в порядке left op right
в op left right
и затем предоставьте его оператору композиции. Теперь у нас есть функция без точек, которая эквивалентна оригинальной composeQ
,