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 | 82855 reads
|
Browse archives
Active forum topics |
Recent comments
3 weeks 6 days ago
3 weeks 6 days ago
4 weeks 1 day ago
4 weeks 1 day ago
4 weeks 6 days ago
4 weeks 6 days ago
4 weeks 6 days ago
7 weeks 6 days ago
8 weeks 5 days ago
8 weeks 5 days ago