全てTrueならTrueを返す
Main> all (\x -> f(f(x)) == -x) (0:concatMap (\x -> [-x,x]) [1..10]) True
もしくは、$を使って、
Main> all (\x -> f(f(x)) == -x) $ 0:concatMap (\x -> [-x,x]) [1..10] True
さらにテスト用の関数を作る。
test_f :: RealFloat a => [Complex a] -> Bool test_f lst = all (\x -> f(f(x)) == -x) lst
Main> test_f $ 0:concatMap (\x -> [-x,x]) [1..10] True
ここまでは、ほとんどコメントで教えてもらった事そのまま。
じゃあ「一つでも条件が成り立たなかったらその時の要素を返す」ようにするにはどうすればいいんだろう?
(原理的にはMaybeとかを使えばできるだろうけど、それ用の関数もありそう)
もう一つ別の問題として、今のままだと整数しかテストしていないので、これを適当な数の実数でテストするようにしたい。乱数のリストみたいな物があればいいのかな。