4
考慮下面的模板哈斯克爾功能:自由點式
composeQ :: ExpQ -> ExpQ -> ExpQ
composeQ = \x y -> [| $(x) . $(y) |]
是否有可能從等式的右邊消除lambda表達式,並使用免費的點式寫composeQ
?
考慮下面的模板哈斯克爾功能:自由點式
composeQ :: ExpQ -> ExpQ -> ExpQ
composeQ = \x y -> [| $(x) . $(y) |]
是否有可能從等式的右邊消除lambda表達式,並使用免費的點式寫composeQ
?
有拼接表達式爲自由點式的任何報價沒有通用的方式,但這種特殊情況下可以這樣實現:
composeQ :: ExpQ -> ExpQ -> ExpQ
composeQ = flip infixApp [|(.)|]
這裏是翻蓋infixApp
,通常需要在訂單left op right
參數成op left right
,然後向組合運算符提供它。現在我們有一個免費的功能,這相當於原來的composeQ
。