Q:

How do you turn the infix applicative operator into a prefix function?

In the code below, I have modified the first LET statement so that the infix operator  can be written as a prefix function. I'd like to do the same for the applicative operator <*> but have not been able to get it to compile. Where is the correct place to put this operator if you want to treat it as a prefix function?    
module Main(main) where

import Data.Functor
import Control.Applicative

main = do

   let y = add <$> (Just 1) <*> (Just 2)
   print y

   -- Turn <$> into a prefix operator
   let y = (<$>) add (Just 1) <*> (Just 2)
   print y

   --How do I turn <*> into a prefix operator
   --???

add x y = x + y

A:

After you turned <$> into a prefix operator, <*> is operating on two arguments. The first is everything to the left of it, (<$>) add (Just 1) and the second is everything to the right of it, (Just 2). To call a function f with these as the first two arguments, we'd write
f ((<$>) add (Just 1)) (Just 2)

If we substitute (<*>) for f we get
(<*>) ((<$>) add (Just 1)) (Just 2)

fmap and liftA2
If you really want to write this without infix notation, first you could notice that <$> is just infix fmap, so (<$>) = fmap.
liftA2 is exactly this pattern:
liftA2 f a b = f <$> a <*> b

So you could also write this as
liftA2 add (Just 1) (Just 2)

A:

You need to mentally add the parens involved:
     add <$> Just 1 <*> Just 2
   ≡ (add <$> Just 1) <*> Just 2      -- by left-associativity (infixl 4 <*>, <$>)
   ≡ ((<$>) add (Just 1)) <*> Just 2
   ≡ foo <*> Just 2                   -- let foo = add <$> Just 1
   ≡ (<*>) foo (Just 2)

