User loginNavigation |
expressivity of "idiomatic C++"The April issue of C/C++ Users Journal has an article called A New Solution To an Old Problem by Andrew Koenig and Barbara E. Moo. In it, they revisit the Hamming numbers problem from Dijkstra's A Discipline of Programming. They examine four different solutions:
The Haskell solution is the following
scale n (x:xs) = (n * x) : (scale n xs)
merge xs [] = xs
merge [] ys = ys
merge (x:xs) (y:ys) =
if x == y then
x : (merge xs ys)
else if x < y then
x : (merge xs (y:ys))
else
y : (merge (x:xs) ys)
seq = 1 : (merge (scale 2 seq)
(merge (scale 3 seq) (scale 5 seq)))
Their "idiomatic C++" solution uses ordered sets: set<int> seq; seq.insert(1); set<int>::const_iterator it = seq.begin(); int val = *it; seq.insert(val * 2); seq.insert(val * 3); seq.insert(val * 5); it++; In conclusion, they have this to say (emphasis mine),
I may be reading too much into this quote, but it sounds to me like Koenig and Moo consider it a bad thing to require a "totally different way of thinking about programming". P.S. While googling for Hamming numbers, I came across this related paper: Expressivity of Functional-Logic Languages and Their Implementation by Juan José Moreno Navarro. By el-vadimo at 2005-03-29 15:22 | LtU Forum | previous forum topic | next forum topic | other blogs | 37760 reads
|
Browse archivesActive forum topics |
Recent comments
7 hours 28 min ago
11 hours 52 min ago
13 hours 11 min ago
13 hours 58 min ago
14 hours 45 min ago
14 hours 47 min ago
20 hours 56 min ago
1 day 35 min ago
1 day 49 min ago
1 day 2 hours ago