「runghc euler4.hs 1000」を貼り付けて実行するだけでこれが機能することを願っています。私は Haskell を学ぶのに苦労しているので、ここで改善できる方法を誰か教えてもらえますか? 特に、これらすべての「fromIntegral」は混乱しています。
module Main where
import System.Environment
main :: IO ()
main = do
args <- getArgs
let
hBound = read (args !! 0)::Int
squarePal = pal hBound
lBound = floor $ fromIntegral squarePal /
(fromIntegral hBound / fromIntegral squarePal)
euler = maximum $ takeWhile (>squarePal) [ x | y <- [lBound..hBound],
z <- [y..hBound],
let x = y * z,
let s = show x,
s == reverse s ]
putStrLn $ show euler
pal :: Int -> Int
pal n
| show pow == reverse (show pow) = n
| otherwise = pal (n-1)
where
pow = n^2