  We construct a channel coding scheme to achieve the capacity of any discrete
memoryless channel based solely on the techniques of polar coding. In
particular, we show how source polarization and randomness extraction via
polarization can be employed to "shape" uniformly-distributed i.i.d. random
variables into approximate i.i.d. random variables distributed ac- cording to
the capacity-achieving distribution. We then combine this shaper with a variant
of polar channel coding, constructed by the duality with source coding, to
achieve the channel capacity. Our scheme inherits the low complexity encoder
and decoder of polar coding. It differs conceptually from Gallager's method for
achieving capacity, and we discuss the advantages and disadvantages of the two
schemes. An application to the AWGN channel is discussed.
