Sachverhalt: A. Die Staatsanwaltschaft Zürich-Sihl (im Folgenden: Staatsanwaltschaft) führt ein Strafverfahren gegen X._ insbesondere wegen des Verdachts der Widerhandlung gegen das Betäubungsmittelgesetz. Sie wirft ihm vor, mit harten Drogen gehandelt und solche konsumiert zu haben. Am 3. Oktober 2008 nahm ihn die Polizei fest. Mit Verfügung vom 6. Oktober 2008 versetzte ihn der Haftrichter am Bezirksgericht Zürich in Untersuchungshaft. Am 15. Dezember 2008 ersuchte X._ um Haftentlassung. Mit Verfügung vom 19. Dezember 2008 wies der Haftrichter das Gesuch ab und ordnete die Verlängerung der Untersuchungshaft bis zum 3. März 2009 an. Er bejahte den Haftgrund der Wiederholungsgefahr nach § 58 Abs. 1 Ziff. 3 der Strafprozessordnung des Kantons Zürich vom 4. Mai 1919 (StPO; LS 321). B. X._ führt Beschwerde in Strafsachen mit dem Antrag, er sei unverzüglich aus der Untersuchungshaft zu entlassen. Eventuell sei die Entlassung mit Ersatzmassnahmen im Sinne von § 72 StPO/ZH zu verbinden. Zu diesem Zweck sei das Verfahren an den Haftrichter zurückzuweisen. C. Der Haftrichter hat auf Gegenbemerkungen verzichtet. Die Staatsanwaltschaft hat sich vernehmen lassen mit dem Antrag, die Beschwerde abzuweisen. X._ hat eine Replik eingereicht.