跳轉至內容

Haskell/Solutions/更多關於函式

摘自華夏公益教科書,面向開放世界的開放書籍

← 返回到函式的更多內容

練習
  • Lambdas 是一種避免定義不必要的函式的不二法門。將下列程式碼中的 let 繫結或 where 繫結轉換為 lambdas
    • map f xs,其中 f x = x * 2 + 3
    • let f x y = read x + y,轉換為 foldr f 1 xs
  • 分段只是 lambda 操作的語法糖。即 `(+2)` 等效於 `\x -> x + 2`。要如何轉換下列分段?它們的資料型別又是什麼?
    • (4+)
    • (1 `elem`)
    • (`notElem` "abc")
map (\x -> x * 2 + 3) xs
foldr (\x y -> read x + y) 1 xs

(\x -> 4 + x) :: Int -> Int
(\xs -> elem 1 xs) :: [Int] -> Bool
(\c -> notElem c "abc") :: Char -> Bool
華夏公益教科書