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 7

Clojureの基本構文 - 特殊フォームその2

Last updated at Posted at 2024-12-06

advent_calendar_2024.png

Advent Calendar 2024 Day 7

基本構文

3つの基本についてまとめています

  1. リテラル
  2. 関数の定義と呼び出し
  3. 特殊フォーム

3. 特殊フォーム についてまとめています

昨日はdefについてまとめたので、今日は続きから書いていきます

2. 特殊フォーム

特殊フォーム(Special forms)は、Clojureコンパイラによって直接解釈されます

if

(if test then else?)

test の評価が真の場合、thenが評価され、elseが定義されている場合は、elseが評価され、定義されていないときは nil を返す

(if true        ;test
  "Trueの場合"   ;then
  "Falseの場合") ;else?
;; => Trueの場合

do

(do 1 2 3 ... N)

渡された式を左から順に評価され、最後の式の評価結果が全体の結果となる

(do
  (println "Hello,")
  (println "World")
  (+ 1 2))
;; => 3

ここでは、2つの println は標準出力はされますが(副作用)、最後の(+ 1 2)の結果の3が返されます

let

(let [ binding* ] expr*)

letはローカルなスコープで変数を設定するために使用される構文です。

(let
 [x 1]
  (+ x 2))

ここでは、xという名前に1を割り当て、(+ x 2)で、1 + 2をしています

quote

(quote form)

; 短縮記法
'(form)

quoteは、formを評価せずにそのまま返します
これによって、コードをデータとして扱うことができます

(quote (+ 1 1))
; (+ 1 1)

'(+ 1 1)
; (+ 1 1)

var

(var symbol)

指定されたシンボルのvarを返します

(def x 42)

(var x)
; #'todo.core/x
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?