0

I have a call myFun @m @d. And now I want to code it for my template Haskell. I try

let myFunCall = AppTypeE (VarE $ mkName "myFun") (AppT (VarT $ mkName "m") (VarT $ mkName "d"))

But it's invalid because I get myFun @(m d).

To be honest I have not idea even how to achieve it.

RandomB
  • 3,367
  • 19
  • 30

1 Answers1

2

As with any other sort of function application in Haskell, it associates argument by argument. I.e. myFun @m @d is (myFun @m) @d. Each of the @ is an AppTypeE of its own, i.e. you need

   AppTypeE (AppTypeE (VarE $ mkName "myFun") ...) ...
leftaroundabout
  • 117,950
  • 5
  • 174
  • 319