
On Thu, 19 Oct 2006, Mikael Johansson wrote:
Comparing the code for permutationgropus at http://www.polyomino.f2s.com/david/haskell/codeindex.html with my own thoughts on the matter, I discover the one line to figure out whether a specific list represents the identity:
isIdentity (PL xs) = all (\(i,j) -> i==j) (zip [1..] xs)
Is there any sort of benefit to be won by using this construction instead of
isIdentity (PL xs) = xs == [1..(length xs)]
and if so, what?
At some point in the future, I'll learn to think more before I post. Say isIdentity xs = all (\(i,j) -> i==j) (zip [1..] xs) isIdentity' xs = xs == [1..(length xs)] Then isIdentity 1:3:2:[4..100000] finishes in an instant, whereas isIdentity' 1:3:2:[4..100000] takes noticable time before completing. So it's a question of getting laziness to work for you. -- Mikael Johansson | To see the world in a grain of sand mikael@johanssons.org | And heaven in a wild flower http://www.mikael.johanssons.org | To hold infinity in the palm of your hand | And eternity for an hour