Lambda 미적분학은 순전히 구문 론적입니까?


29

나는 Lambda 미적분학에 대해 몇 주 동안 읽었지만 기존의 수학 함수와 실질적으로 다른 것을 보지 못했으며 그것이 단지 표기법의 문제인지 또는 새로운 것이 있는지 알고 싶습니다. 모든 수학 함수에 적용되지 않는 람다 미적분학 공리에 의해 생성 된 속성 또는 규칙. 예를 들어, 나는 그것을 읽었습니다.

"익명 함수가있을 수 있습니다" : Lambda 함수는 익명이 아니며 모두 람다라고합니다. 수학적 표기법에서 이름이 중요하지 않은 경우 다른 함수에 동일한 변수를 사용하는 것이 허용됩니다. 예를 들어, Galois Connection의 두 기능을 종종 *라고합니다.

"함수는 함수를 입력으로 받아 들일 수 있습니다" : 새로운 기능은 아닙니다.

"함수는 블랙 박스입니다" : 입력과 출력만으로도 수학 함수에 대한 유효한 설명입니다 ...

이것은 토론이나 의견이있는 질문처럼 보일 수 있지만이 질문에 대한 "올바른"답변이 있어야한다고 생각합니다. 람다 미적분학이 수학 함수로 작업하기위한 표기법 또는 구문 표기법인지 또는 람다와 일반 함수 사이에 실질적 또는 의미 론적 차이가 있는지 알고 싶습니다.


2
전체 답변을 원하지는 않지만 함수는 함수를 입력으로 받아 들일 수 없습니다. f (g (0))를 쓸 수는 있지만 f (g, 0)을 쓸 수는 없습니다. 후자를 "기능"이라고하며 다른 규칙을 요구합니다.
Cort Ammon-

@CortAmmon 기능은 기능입니다. 함수는 단지 쌍의 집합입니다 (엄밀히 말하면 3 배 (D, R, G)이지만 D는 도메인 R은 범위이고 G는 그래프 (쌍 세트)입니다. 받아 들일만한 대답이 있지만 여기도 없습니다.) 따라서 D가 함수의 집합이고 첫 번째 요소가 D의 함수 인 쌍을 취하는 경우 함수가 있습니다. Wikipedia를 확인하십시오 : "기능은 매핑입니다 [기능] ..."
Neil

즉, 모든 기능은 기능이며 모든 기능은 기능이 아닙니다. 그러나 기능에 적용되는 모든 규칙은 기능에 적용됩니다.
Neil

답변:


63

아이러니하게도, 제목은 제자리에 있지만 "람다 미적분학은 단지 표기법"이라는 의미가 아닙니다.

Lambda 항 은 함수가 아닙니다 1 . 그것들은 구문 조각, 즉 페이지의 심볼 모음입니다. 우리는 이러한 기호 모음을 조작하는 규칙이 있습니다. 가장 크게 베타를 줄입니다. 여러 수 있습니다 별개의 람다 조건 에 해당 같은 기능을. 2

귀하의 요점을 직접 해결하겠습니다.

첫째, 람다는 재사용되는 이름이 아닙니다. 그것은 매우 혼란 스러울뿐만 아니라 (또는 )는 쓰지 않습니다. 가 함수의 이름 인 경우 우리는 를 쓰는 것처럼 할 것입니다 . 에서 우리가 대체 할 수 같은 제조 람다 용어와 (이 람다 용어에 의해 정의 된 경우) 의미 , 기능을하지 나타낼 수있는 표현이며 함수를 선언하는 선언 (이름 :λ(x)(λ x)λf(x)f(x)f(λy.y)(x)(λy.y)λ또는 다른 것). 어쨌든 용어 / 표기법에 과부하가 걸리면 문맥을 통해 명확하게 표현할 수있는 방식으로 (하나의 희망) 이루어지며, 람다 용어에는 해당되지 않습니다.

다음 요점은 괜찮지 만 다소 관련이 없습니다. 이것은 Team Lambda 약관 및 팀 기능이있는 경쟁이 아니며 오직 하나만 이길 수 있습니다. 람다 용어의 주요 적용은 특정 종류의 기능을 연구하고 이해하는 것입니다. 다항식은 함수를 자주 식별하지 않지만 함수는 아닙니다. 다항식을 공부한다고해서 모든 함수가 다항식이어야한다고 생각하는 것은 아니며, 다항식이 공부할 가치가있는 "새로운"무언가를해야하는 경우도 아닙니다.

집합 이론 함수는 블랙 박스가 아니지만 입력-출력 관계에 의해 완전히 정의됩니다. (그들은 말 그대로 있습니다 자신의 입력 - 출력 관계.) 람다 용어도없는 블랙 박스 그리고 그들은이되어 있지 자신의 입력 - 출력 관계에 의해 정의. 앞에서 언급했듯이 동일한 입출력 관계를 생성하는 고유 한 람다 항을 가질 수 있습니다. 이것은 또한 람다 항이 함수가 될 수는 없지만 함수를 유도 할 수 는 있다는 사실을 강조합니다 . 2

실제로 다항식과 람다 항의 유사점은 매우 유사하므로 다항식과 그 함수가 구별하는 기능을 이해하지 못할 수 있으므로 조금 더 자세히 설명하겠습니다. 3 일반적으로 다항식이 도입 될 때 (일반적으로 실제 계수가있는 경우) 특정 유형의 실제 함수로 취급됩니다. 이제 LFSR ( linear-feedback shift register) 이론을 고려하십시오 . 그것은 대한 (단 변량) 다항식의 이론 이지만, 우리가 이것을 함수 로 생각하면 최대 함수가 있습니다. 그러나 보다 무한한 수의 다항식이 있습니다. 4F2 F2F24F2이를 보는 한 가지 방법은 이러한 다항식을 함수 이외의 다른 것으로 해석 할 수 있다는 것입니다 . 실제로 대수도 마찬가지입니다. 의 LFSR을 위해, 우리는 일반적으로 우리가 함수로 표현 될 수 원하는 경우, 비트 스트림에 대한 작업으로 다항식을 해석 , 비록 그러한 기능의 대부분은 LFSR 해석의 이미지에 있지 않을 것입니다.F2F2F22N2N

이것은 람다 용어에도 적용되며, 둘 다 함수 이외의 것으로 해석 할 수 있습니다. 그것들은 또한 일반적으로 셀 수 없을 정도로 무한한 함수들보다 훨씬 다루기 쉬운 객체입니다. 그것들은 임의의 함수보다 훨씬 더 계산적입니다. 다항식 (적어도 계산 가능하게 표현 가능한 계수 포함) 및 람다 항을 조작하는 프로그램을 작성할 수 있습니다. 실제로, 형식화되지 않은 람다 항은 계산 가능한 함수의 원래 모델 중 하나입니다. 이러한보다 상징적 / 구문 적 계산적 / 계산적 관점은 람다 미적분학의보다 의미론적인 해석보다 특히 유형화되지 않은 람다 미적분학에 대해 더 강조된다 . 타이핑람다 용어는 훨씬 더 관리하기 쉬운 것으로 일반적으로 (항상 그런 것은 아니지만) 설정된 이론 함수로 쉽게 해석 될 수 있지만 일반적으로 형식화되지 않은 람다 미적분보다 함수 이외의 더 광범위한 클래스로 해석 될 수도 있습니다. 그들은 또한 자신의 풍부한 문법 이론과이 논리에 매우 깊은 연결을 .

1 문제가 다른 방향으로 진행될 수 있습니다. 함수가 무엇인지에 대한 오해가있을 수 있습니다.

2 이것은 실제로 간단하지 않습니다. 를 들어 형식화되지 않은 람다 계산법, 정말 순진 같은 임의의 람다 용어 해석하는 의미가 없습니다 세트 이론적 기능을 . 해석의 영역이 무엇인지 명확히하려고 할 때 이것을 볼 수 있습니다. 나는 세트의 요소로 람다 용어를 해석 할 경우 , 나는 또한에 함수로 해석 할 수 있도록하려면 및에 I 기능 응용 프로그램으로 응용 프로그램을 해석하고자하기 때문이다. 싱글 톤 세트에만 해당되는 (또는 약화)로 끝납니다 . 유형화되지 않은 람다 미적분학에 필요한 것은 반사성 객체입니다.DDDDDD, 세트 범주의 경우 사소한 반사성 개체가 없습니다. 이야기는 입력 된 람다 용어와 는 약간 다르지만 여전히 사소하지 않을 수 있습니다.

3 이 구별이 명확하다면, 비유는 상당히 유익해야합니다.

4 이 문제는 복소수, 실수, 유리수 또는 정수와 같이 특징이 0 인 필드에서는 발생하지 않으므로 여전히 존재하기는하지만 구분이 명확하지 않습니다.


8
이것은 내가 말해야 할 놀라운 반응입니다. 나를 위해 오랫동안 오해를 해결합니다. 감사!
the0ther

4
이에 대해 자세히 답변 해 드리겠습니다! 내가 계속 추적하고 싶은 것들이 많이 있습니다. 전반적으로 이것은 나에게 매우 유용했지만 분명히 다른 사람들에게도 도움이되었으므로 철저하고 신중한 답변에 감사드립니다.

1
여기서 다룰 점은 다항식이 공부할 가치가있는 "새로운 것"을 할 필요가 없다는 주장입니다. 물론 그렇습니다! 물론, 당신의 분야에 따라, "새로운"은 다른 의미를 가질 수 있습니다 (예를 들어 순수한 수학자는 열 벡터와 행 벡터를 동형이기 때문에 열 벡터와 행 벡터를 구별하지 않지만 통계학자는 그 구별을 계산 목적에 유용한 것으로 간주 할 수 있습니다). 모든 새로운 형식주의는 그 자체를 정당화해야합니다.

2
@Neil : 특히 각주 # 2는 람다 미적분학이 "정상적인"기능으로는 "할 수없는"새로운 것을하고 있다는 증거를 제공합니다. 잘 설립되지 않은 람다 식의보다 구체적인 예는 고정 소수점 조합기를 참조하십시오 . 또한 교회 숫자 는 매혹적인 독서, 특히 전임자 기능을 위해 사용됩니다.
케빈

1
함수가 유용한 것을 수행하지 않기 때문에 람다를 추가 할 것입니다. 람다로 할 수있는 유일한 것은 람다를 전달하고 람다를 반환하는 것입니다. 결과 람다의 기능을 테스트 할 방법이 없습니다. 다른 람다를 전달하기 위해 다른 람다 만 전달할 수 있습니다. 함수로서 "람다 함수"세트는 항등 함수 만 포함하는 단일 세트처럼 동작합니다. 람다의 입력 및 출력을 람다를 차별화 할 수있는 표현식으로 고려하는 것만 가능합니다.
Florian F

0

변수의 개념에 대해 생각하십시오. 기본과 같은 오래된 언어에서는 동적 할당이 없었으며 각 변수마다 하나의 이름이 필요했습니다. (이것은 배열이 있었기 때문에 완벽하게 정확하지는 않지만 아이디어는 ...입니다) 많은 문제에서 프로그램이 정의하는 이름의 수에 제한되지 않고 원하는만큼 많은 변수를 할당 할 수 있어야합니다.

Lambda 함수를 사용하면 함수 이름에 대한 동일한 제한을 제거하여 프로그램이 필요한만큼의 함수를 정의하고 다른 변수와 동일한 복잡한 데이터 구조에 "저장"할 수 있습니다. 이것은 일반적인 명명 된 함수로 할 수있는 것이 아닙니다.


기존의 명명 된 함수로 이것을 수행 할 수없는 이유는 무엇입니까? 내가 글을 쓰면 f(x)=let g(y)=x+y in g, 모든 수학자가 의미하는 바를 즉시 알고 이것이 합리적인 수학적 대상이라는 것에 동의 할 것이다 f. 그들은 또한 {f(n) | n ∈ ℕ}무한히 많은 기능을 포함하고 특히 제한된 수의 이름을 사용하여 제한되지 않는 set을 쓰면 완벽하게 행복 할 것 입니다.
Daniel Wagner

문제는 람다 미적분에 관한 것입니다. 관련 동안, 그건 하지 프로그래밍 언어에서 람다 함수와 같은 일.
앤디 덴트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.