## Lambda Calculus Hamming Numbers

 home  Bib  Algorithms  Bioinfo  FP  Logic  MML  Prog.Lang and the  mmlist

FP
Lambda
Introduction
Examples

Calculate the Hamming numbers by the well-known recursive method; also see the [PFL] version.

 ``` let rec merge = lambda a. lambda b. if hd a < hd b then (hd a)::(merge tl a b) else if hd b < hd a then (hd b)::(merge a tl b) else (hd a)::(merge tl a tl b), mul = lambda n. lambda l. (n* hd l)::(mul n tl l) in let rec hamm = 1 :: (merge (mul 2 hamm) (merge (mul 3 hamm) (mul 5 hamm))) in hamm {\fB Hamming Numbers. \fP} ```

The program, as it stands, will try to print the infinitely many Hamming numbers and will fall prey to arithmetic overflow and/or will hit the limits of the execution constraints. Modify it to print the first `n' Hamming numbers.

 let rec merge = lambda a. lambda b. if hd a < hd b then (hd a)::(merge tl a b) else if hd b < hd a then (hd b)::(merge a tl b) else (hd a)::(merge tl a tl b), mul = lambda n. lambda l. (n* hd l)::(mul n tl l) in let rec hamm = 1 :: (merge (mul 2 hamm) (merge (mul 3 hamm) (mul 5 hamm))) in hamm {\fB Hamming Numbers. \fP}
window on the wide world:
 The Darwin Awards V: Next Evolution

 Linux  Ubuntu free op. sys. OpenOffice free office suite, ver 3.4+ The GIMP ~ free photoshop Firefox web browser FlashBlock like it says!

λ ...
 :: list cons nil the [ ] list null predicate hd head (1st) tl tail (rest)

 © L. Allison   http://www.allisons.org/ll/   (or as otherwise indicated), Faculty of Information Technology (Clayton), Monash University, Australia 3800 (6/'05 was School of Computer Science and Software Engineering, Fac. Info. Tech., Monash University, was Department of Computer Science, Fac. Comp. & Info. Tech., '89 was Department of Computer Science, Fac. Sci., '68-'71 was Department of Information Science, Fac. Sci.) Created with "vi (Linux + Solaris)",  charset=iso-8859-1,  fetched Wednesday, 27-May-2020 21:58:10 AEST.