``````mapAbsPlusTen :: [Int] -> [Int]
mapAbsPlusTen xs = map absPlus10 xs
where absPlusTen x = abs x + 10
``````

# 使用 lambda 函式

``````mapAbsPlustTen :: [Int] -> [Int]
mapAbsPlusTen xs = map (\x -> abs x + 10) xs
``````

`zip` 可以將兩個 List 中的各元素兩兩配對為 Tuple，然後傳回新的 List，上頭的 `map` 接受的 lambda 函式，設定了模式比對，將各 Tuple 的元素拆解然後進行相加。

``````isRightTriangle :: Float -> Float -> Float -> Bool
isRightTriangle a b c = a ** 2 + b ** 2 == c ** 2
``````

``````isRightTriangle :: Float -> Float -> Float -> Bool
isRightTriangle = \a -> \b -> \c -> a ** 2 + b ** 2 == c ** 2
``````

# 函式合成

``````mapAbsPlus10 :: [Int] -> [Int]
mapAbsPlus10 xs = map ((10 +) . abs) xs
``````

# Point free 風格

``````showAbsSumOf :: [Int] -> String
showAbsSumOf xs = show (abs (sum xs))
``````

``````showAbsSumOf :: [Int] -> String
showAbsSumOf xs = show \$ abs \$sum xs
``````

``````showAbsSumOf :: [Int] -> String
showAbsSumOf xs = show . abs . sum xs
``````

``````showAbsSumOf :: [Int] -> String
showAbsSumOf = show . abs . sum
``````

``````showAbsSumOf :: [Int] -> String
showAbsSumOf = show \$ abs \$ sum
``````