2012-02-24 6 views
4

は、以下のテンプレートHaskellの機能を考えてみましょう:ポイントフリースタイル

composeQ :: ExpQ -> ExpQ -> ExpQ 
composeQ = \x y -> [| $(x) . $(y) |] 

は、それは式の右側からラムダ式を排除し、ポイントフリースタイルを使用してcomposeQを書くことは可能ですか?

答えて

4

ありポイントフリースタイルで任意の引用に式をスプライスする一般的な方法はませんが、この特定の場合には、このように実装することができます

composeQ :: ExpQ -> ExpQ -> ExpQ 
composeQ = flip infixApp [|(.)|] 
ここ

フリップた普通に順left op rightにパラメータを取りinfixAppop left rightを入力し、合成演算子を入力します。ここでは、元のcomposeQと同等の無点関数が​​あります。