AtCoder regular contest 4 A

http://arc004.contest.atcoder.jp/tasks/arc004_1

haskellって絶対覚えること多くないか?
今のところ関数型言語の良いところがわからん
覚えることが多いって、プログラムでいう事前計算があるだけでこれが長所とはいえんよなぁ

あと、演算子がわからないと検索しにくくてきついのと
このfが返すリストのサイズがn*(n-1)/2になっててn=10000とかなるとメモリに乗っからない気がするんだけど
問題はn=100までだからいいけど

main = interact (show . solve . tail . lines) >> putStrLn ""
solve xs = (maximum . f) $ map ((\(a:b:_) -> (a,b)) . map read . words) xs
f xss@((a,b):xs) = f xs ++ [sqrt ((a-c)^2+(b-d)^2) | (c,d) <- xs]
f _ = []

-- EOFがないと処理しないっぽい からリダイレクトでできた
-- 入力を取って、リストxsに入れて合成関数fに渡す
-- 再帰になってる やってることは各要素の距離を計算してるだけ

-- >> はmonad
-- putStrLn "" は改行してるだけ
-- interact :: (String -> String) -> IO()
-- main = interact てよく使われる気がする
-- . は合成関数にする
-- lines Stringを改行で分けてリストにする
-- tail リストの先頭だけ除いて返す
-- show 引数aをstringに変換する
-- words stringをスペースで分けてリストにする linesと似ている
-- read showの反対、read :: Read a => String -> a aってなんの型でもいいのか?
-- \はラムダ
-- (a,b)の形はタプル、[a,b]はリスト
-- リストからタプルへは変換できるのかな mapはリストを返すけどラムダの(\(a:b:_) -> (a,b))はタプルの最初の2つを取って長さ2つのタプルにしている?
-- このラムダ入るのか?
-- @ はアズパターン
-- 3行目の xxs@ がなくても動く
-- _ はワイルドカード