이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
유.강민
가입: 2011년 3월 22일 올린 글: 38
|
올려짐: 2011년4월22일 18:27 주제: Lambda Calculus 질문입니다 |
|
|
코드: | (λx.(λy.x)) (λz.(z y)) |
위 식을 맨처음 리듀스하면
코드: | {x-> (λz.(z y))} (λy.x) |
와 같은 치환식이 성립되는데
(λy.x)의 y가 치환될 새로운 변수의 조건이
코드: | {x} U FV (λy.x) U FV (λz.(z y)) |
의 원소면 안된다는건데
이를 만족하는 z로 치환하면 될까요?
계산하면
코드: |
{x-> (λz.(z y))}(λz.{y->z}x)
->λz.(λz.(z y))
|
근데 w로 치환하면
코드: |
{x-> (λz.(z y))}(λw.{y->w}x)
->λw.(λz.(z y))
|
둘다 조건은 만족하는데 결과의 의미가 다른것 같습니다.
추가질문:
Church Numeral 의 표현방식이 λs.λz.s^n z인데요
reduce (encode X)중 X에 연산을 넣고 실행한다고 할때
예를들어
X가 1+2이면 s와z 변수로 이루어진 람다식이 나오는데
X가 어떤 특정 연산일떄(예 2-1) z가 다른 변수로 치환되서 나와도 괜찮나요? |
|
위로 |
|
|
정영범
가입: 2005년 9월 5일 올린 글: 167
|
올려짐: 2011년4월24일 23:15 주제: |
|
|
코드: |
λz.(λz.(z y))
λw.(λz.(z y))
|
두 람다식 모두 의미가 같습니다.
이유는 첫번째 람다식에서 처음에 나오는 z와 두번째 세번째 나오는 z는 다르기 때문입니다.
처음에 나오는 z는 y만 아니면 그 어떤 이름으로 바꿔도 의미가 변하지 않습니다.
다음과 같이 의미가 같은 람다식이면 그 변수 이름이 무엇이듯 상관없습니다.
코드: |
λs.λz.s^n z
λa.λb.a^n b
|
|
|
위로 |
|
|
|