Hi > > It will detect that length ys is natural, and will be safe. However, > > if you pass any arbitrary value as the index to !! it will warn of a > > possible pattern match error. > > I hope catch doesn't actually think that's safe, because it's not - set > ys = xs = [1,2,3,4,5], you'll get an index out of range error. (Yes, I > deliberately chose a list longer than 4 elements).
Of course, it doesn't, I abstracted for the sake of simplicity :-) The !! operator has two entirely separate pattern match errors, one is "negative index", one is "ran off the end of the list". The length xs will satisfy the first one by proving that length is always a natural, but the only proof of the other condition is that either the list is infinite, or that the index is Zero/One, and the list is bigger than this. Thanks Neil _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe