0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ひとりカレンダー】ClojureAdvent Calendar 2024

Day 9

Clojure 高階関数

Last updated at Posted at 2024-12-08

advent_calendar_2024.png

Advent Calendar 2024 Day 9

高階関数とは

高階関数とは、関数を操作するための関数です。

  1. 関数を引数として受け取る関数
  2. 関数を返り値として返す関数

具体例

1. map

引数で関数とコレクションを受け取り、各要素に対して関数を適用し、新しいシーケンスを生成する関数

(map inc [1 2 3])
;; => (2 3 4)

(map + [1 2 3] [2 3 4])
;; => (3 5 7)

2. filter

引数で関数とコレクションを受け取り、条件を満たす要素だけを抽出する関数

(filter even? [1 2 3 4 5 6 7 8 9 10])
;; => (2 4 6 8 10)

3. 関数を返す関数

受け取った値(x)よりも大きいかどうかを判定する関数を返すgreater-thanという関数を作ってみます。

(defn greater-than [n]
  (fn [x] (> x n)))
;; => #'todo.core/greater-than
(def greater-than-5 (greater-than 5))
;; => #'todo.core/greater-than-5

(greater-than-5 6)
;; => true
(greater-than-5 4)
;; => false

このような高階関数を使うことで、コードの再利用性、コードの簡潔性、メンテナンス性、柔軟な抽象化をすることができそうです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?