허락하다
let 이름은 _“Let ( x = 2 ) and ( y = 3 )"_에서와 같이 임시 바인딩을 도입하는 수학적 기원을 반영하기 때문에 사용됩니다.
Scheme의 let 문은 지역화된 범위 내에서 변수를 정의하는 데 사용되는 바인딩 구성입니다. 이를 통해 변수에 대한 임시 바인딩을 만든 다음 해당 바인딩을 사용하여 코드 블록을 실행할 수 있습니다. 이는 코드를 모듈화하고 전역 변수 오염을 방지하는 데 특히 유용합니다.
Scheme에는 let의 세 가지 주요 형식이 있습니다.
let: 간단한 로컬 바인딩을 생성하기 위한 표준입니다.let*: 순차적인 let, 바인딩은 이전 바인딩의 결과에 따라 달라질 수 있습니다.- **
let**라는 이름: 재귀 루프 또는 명명된 프로시저를 생성하는let의 특수 형식입니다.
가장 간단한 형태로 let은 지역 변수 바인딩을 생성하고 해당 바인딩을 사용하여 표현식을 평가합니다.
(let ((variable1 value1)
(variable2 value2))
expression)- 바인딩: 각 쌍이
value을variable에 할당하는 쌍 목록입니다. - Expression: 로컬로 정의된 변수를 사용할 수 있는
let의 본문입니다.
예
(let ((x 10)
(y 20))
(+ x y))- 이는
x(10) 및y(20)이라는 두 개의 지역 변수를 정의합니다. - 그런 다음 이러한 변수를 사용하여
(+ x y)을 계산합니다.
결과: 30
let* 구성
let* 구문은 let과 유사하지만 바인딩이 순차적으로 평가됩니다. 이는 이후 바인딩이 이전 바인딩에 종속될 수 있음을 의미합니다.
(let* ((variable1 value1)
(variable2 expression-using-variable1))
expression)예
(let* ((x 10)
(y (+ x 5)))
(* x y))- 첫 번째 바인딩에서는
10을x에 할당합니다. - 두 번째 바인딩은
x값을 사용하여y을(+ x 5)으로 계산합니다. - 본문은
(* x y)을 계산합니다.
결과: 150
이름은 let
let라는 이름은 let 블록 자체에 대한 이름을 제공하여 재귀 프로시저로 전환하는 let의 특수 형식입니다. 이는 루프나 재귀 계산을 생성하는 데 유용합니다.
(let name ((variable1 initial-value1)
(variable2 initial-value2))
body-expression)- 이름:
let블록에 이름이 부여되어 효과적으로 기능을 정의합니다. - 바인딩: 표준
let과 유사한 변수의 초기 값입니다. - 본문: 표현식은 명명된
let을 재귀적으로 호출할 수 있습니다.
예: let이라는 이름을 사용한 반복
(let loop ((n 5)
(result 1))
(if (= n 0)
result
(loop (- n 1) (* result n))))loop함수는n = 5및result = 1으로 시작됩니다.n이0인 경우result을 반환합니다.- 그렇지 않으면
n - 1및result * n을 사용하여 재귀적으로 자신을 호출합니다.
결과: 120(5의 팩토리얼)
요약표
| 구성 | 설명 | 사용 사례 |
|---|---|---|
let | 변수에 대한 로컬 바인딩을 정의합니다. | 모든 바인딩이 독립적이고 서로 의존하지 않는 경우에 사용합니다. |
let* | 순차 로컬 바인딩을 정의합니다. | 이후 바인딩이 이전 바인딩의 결과에 따라 달라질 때 사용합니다. |
이름은 let | 재귀적인 로컬 프로시저를 정의합니다. | for 루프, 반복 계산 또는 로컬 컨텍스트에서 재귀를 사용합니다. |
예
로컬 계산에 let 사용
(let ((x 2)
(y 3))
(+ (* x x) (* y y)))결과: 13(x² + y² 계산)
순차 종속성을 위해 let* 사용
(let* ((x 2)
(y (* x x))
(z (* y x)))
z)결과: 8(x³ 계산)
재귀 계산을 위해 명명된 let 사용
(let factorial ((n 5)
(result 1))
(if (= n 0)
result
(factorial (- n 1) (* result n))))결과: 120(5의 팩토리얼)
let, let* 및 let을 사용하여 Scheme은 명확한 범위 지정 규칙을 사용하여 모듈식, 재귀적 및 순차 프로그래밍을 가능하게 합니다.