Expression์ ๊ฐ์ ์ฐ์ถํ๋ ๊ณ์ฐ์ด๊ณ ,
Statement๋ ํ๋์ ์ํํ๋ ๋ฌธ์ฅ์ด๋ค.
Statement๋ ์ข ์ข Expression์ ๋ดํฌํ๋ค.
ํญ๋ชฉ | Expression (ํํ์) | Statement (๋ฌธ์ฅ) |
---|---|---|
๋ชฉ์ | **๊ฐ(value)**์ ๊ณ์ฐ | **ํ๋(action)**์ ์ํ (ex: ์ํ ๋ณ๊ฒฝ) |
๊ฒฐ๊ณผ | ์ด๋ค ๊ฐ์ ์ฐ์ถ | ๋ณดํต ๊ฐ์ ์๊ณ ๋ถ์์ฉ(side-effect) ๋ฐ์ |
์ํ ๋ณํ | ์์ ๋๋ ์ ํ์ (์ผ๋ฐ์ ์ผ๋ก ์์) | ์์ (๋ณ์ ๋ณ๊ฒฝ, ๋ฃจํ ์คํ ๋ฑ) |
๋ ๋ฆฝ ์คํ ๊ฐ๋ฅ์ฑ | ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ฆฝ ์คํ ๋ถ๊ฐ | ๋ ๋ฆฝ ์คํ ๊ฐ๋ฅ (ํ ์ค ๋จ์ ์ฝ๋) |
์๋ฏธ๋ก ์ ํด์ | โฆexprโง : Env โ Value |
โฆstmtโง : State โ State ๋๋ โโฅ |
์์ | 1 + 2 , x * y , f(3) |
x := 1 , if ... then ... , while ... |
ํฌํจ ๊ด๊ณ | Statement ์์ Expression์ด ํฌํจ๋ ์ ์์ | Expression์ Statement์ ๊ตฌ์ฑ ์์์ผ ์ ์์ |
์์:
x := 1 + 2
1 + 2
๋ expressionassignment
statementexpression
์ statement
๋ฅผ ํฌํจํ์ง ์์์ธ์ด ์ ํ | ํน์ง |
---|---|
C, Java | Statement์ Expression์ ๋ช ํํ ๊ตฌ๋ถํจ |
Python, JavaScript | ์ผ๋ถ Expression์ด Statement์ฒ๋ผ ์ฌ์ฉ๋๊ธฐ๋ ํจ (print("hi") ) |
Lisp, Haskell, Rust | ๋ชจ๋ ๊ฒ์ด Expression์ผ ์ ์์ (expression-based language) |