250x250
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 연습문제
- virtualmachine
- 리눅스
- 퇴근길
- podman
- 티스토리챌린지
- 인프라
- 잡담
- Flutter
- FreeBSD
- 에러
- 주유소
- Bloc
- 개발
- VM
- C언어
- 오토바이
- Linux
- DART
- 가상머신
- K&R
- 일상
- ubuntu
- 휘발류
- 개발기
- 오블완
- 템플릿
- VMware
- node.js
- 객체지향프로그래밍
Archives
- Today
- Total
그냥저냥
SICP 노트 | 표현식 (2) 본문
728x90
반응형
연산자 조합의 평가
"이번장의 목표가 절차적 사고(Procedure thinking)에 관한 논점을 잘 구분해야 한다."고 하는데 연산이 이뤄지는 과정을 세분화 할 수 있어야 한다는 의미 같아 보인다.
연산자를 평가하기 위해서는 다음과 같은 과정을 거친다.
- 조합의 피연산자 표현식들을 평가.
- 연산자가 나타내는 함수를 인수(피연자들의 값)들에 적용.
조합의 피연산자 표현식들을 평가하면서 조합의 각 피연산자들를 먼저 평가하고 자신의 규칙을 반복해서 수행한다. 이러하듯이 자신의 규칙을 반복해서 수행하는 것을 재귀적라고 한다. 재귀적 개념 덕분에 깊게 중첩된 평가 규칙을 간결하게 표현할 수 있다고 한다.
원문을 보면 subexpressions 이라는 단어가 나온다. subexpressions을 찾아보니 아래의 그림과 같은 질문을 찾을 수 있었다. 내용을 보면 2 * 3 + 4 * 5가 있을 때 이를 분리하여 세분화 할 수 있는 단위인 (2 * 3)과 (4 * 5)가 subexpressions이고, 더 세분화 할 수 있다고 하는 것 같은데 2, 3, 4, 5 자체도 subexpressions라고 하는 것 같다.
출처: https://stackoverflow.com/questions/22577679/what-is-a-sub-expression-in-c
최종적으로 책의 예제인 (2 + 4 * 6) * (3 + 12)을 아래와 같이 세분화 할 수 있으며 이를 트리 형태로 표현할 수 있다고 한다. 이렇게 트리 형태로 표현된 형태를 트리 누산이라는 형태로 일반화된 과정으로 불려진다고 한다.
- 처음으로 (4 * 6)의 형태로 세분화할 수 있다.
- 그 다음으로 (4 * 6)이 먼저 평가되어 24라는 값이 되고, (2 + 24)의 형태로 세분화 할 수 있다.
- 그 다음으로 (3 + 12)의 형태로 세분화 되고 이는 15라는 값으로 평가될 수 있다.
- 최정적으로 (26 * 15)의 형태로 세분화 되고 이는 390이라는 값으로 평가될 수 있다.
잘못 이해한 것 아니겠지? 의문이 든다. 아직까지는 책에서 이야기 하고 있는 표현식과 원시 표현식이 잘 구분이 안된다. ㅠㅠ 그리고 혹시 책의 저작권 문제가 있는 것은 아니겠지? 문제가 있다면 이글 자체를 삭제해야할지도 모르겠다.
728x90
반응형
'개발기' 카테고리의 다른 글
| Functional Programming in Scala 연습문제 2.1 (0) | 2025.10.12 |
|---|---|
| [Scala] Java 24 환경에서 Scala 실행 시 sun.misc.Unsafe 경고 발생 해결 방법 (Scala 3.8 로드맵) (0) | 2025.09.13 |
| [Javascript] Truthy/Falsy 값 (0) | 2025.02.28 |
| SICP 노트 | 표현식 (1) (0) | 2025.02.17 |
| SICP 노트 | 프로그래밍 언어에서 다루는 요소 (0) | 2025.02.17 |
