21/09/22 10:43:55.15 02VLVXq+.net
パターンの質問です
Rational型の数が平方数であるかどうか判定するプログラムで
isSquare r = r >= 0 && r == ( sqrtR r )^2
sqrtI = truncate . sqrt . fromInteger
sqrtR r = let
( a, b ) = ( numerator r, denominator r )
in ( sqrtI a ) % ( sqrtI b )
というのを書きました
もちろんこれはうまくいきます
しかし numerator, denominator をいちいち取り出すのが鬱陶しいので
sqrtR ( a :% b ) = ( sqrtI a ) % ( sqrtI b ) ------- ①
と書きたかったのですがうまくいきません