First off,
everything in Haskell is λ-calculus
This is not really correct. Haskell has lots of features that don't correspond to something in untyped λ-calculus. Maybe they mean it could be compiled to λ-calculus, but that's kind of obvious, what with “any Turing-complete language...” jadda jadda.
What is λ expression for a higher order function like map :: (a -> b) -> [a] -> [b]
There are two unrelated issues here. The “higher order function” part is no problem at all for a direct λ translation, and as the comments already said
($) = \f -> \x -> f x -- λf.λx.fx
or alternatively
($) = \f x -> f x
($) = \f -> f -- by η-reduction
(which in Haskell we would further shorten to ($) = id).
The other thing is that map is a recursive function defined on an algebraic data type, and translating that to untyped λ-calculus would lead us quite far away from Haskell. It is more instructive to translate it to a λ-flavour that includes pattern matching (case) and let-bindings, which is indeed essentially what GHC does when compiling a program. It's easy enough to come up with
map = \f l -> case l of
[] -> []
(x:xs) -> f x : map f xs
...or to avoid recursing on a top-level binding
map = \f -> let go l = case l of
[] -> []
(x:xs) -> f x : go xs
in go
We can't get rid of the let just like that, since λ-calculus doesn't directly support recursion. But recursion can also be expressed with a fixpoint combinator; unlike in untyped λ-calculus, we can't define the Y-combinator ourselves but we can just assume fix :: (a -> a) -> a as a primitive. That turns out to fulfill almost exactly the same job as a recursive let-binding, which is then immediately evaluated:
map = \f -> fix ( \go l -> case l of
[] -> []
(x:xs) -> f x : go xs )
To make up a λ-style syntax for this,
map = λf.fix(λg.λl.{l? []⟼[]; (x:s)⟼fx:gs})
$ = \f -> \x -> f xbecomesλf.λx.f(x). It's literally just a different syntax for the same thing.λf.λx.f(x), it means a function that returnsf(x)? While($) :: (a -> b) -> a -> btakes in a functionλx. termsOf(x)and returns another function orλx. termsOf(x)?::and[]is syntactic sugar for two constantscons :: α → [α] → [α]andnil :: [α]. The list[1,2,3]is just a term1::2::3::[]or with even less syntactic sugarcons(1, cons(2, cons(3, nil))).