람다 미적분과 조합 논리는 동일합니까?


26

현재 Hindley와 Seldin의 " Lambda-Calculus and Combinators "를 읽고 있습니다. 저는 전문가는 아니지만 함수형 프로그래밍 (Lisp 및 SICP로 시작하여 R 및 Haskell으로 시작)으로 인해 람다 미적분학에 관심을 가져 왔습니다.

John Tromp 는 " Binary Lambda Calculus and Combinatory Logic" 에서

CL은 람다 미적분학의 부분 집합으로 간주 될 수 있습니다.

어떤 조건 에서 람다 미적분학 대신 조합 논리 를 사용 합니까?

모든 참조를 부탁드립니다.


HP Barendregt의 "Lambda calculus : 구문 및 의미"를 살펴보십시오.
Kaveh

답변:


15

조합 논리를 구별하는 것은 변수가 없다는 것입니다. 변수의 상태가 까다로운 메타 수학 및 철학적 논리에 때로는 유용합니다.

변수 관리가 어려울 수 있으므로 구현에 유용 할 수도 있습니다. 예 : Hughes, 1982, Super-combinators : 응용 언어를위한 새로운 구현 방법


3
조합 논리는 구현에 더 이상 유용한 것으로 간주되지 않으며 "변수 관리가 골치 아픈 일이 될 수 있기 때문에"결코 사용되지 않았습니다. 결합 자 및 변형은 게으른 언어에 대한 그래프 축소를 구현하는 데 사용되었지만 현재 Haskell (가장 두드러진 게으른 언어)은 훨씬 더 합리적인 기술을 사용하여 그래프 축소를 구현합니다.
Blaisorblade

"재고 하드웨어에 게으른 함수형 언어의 구현 다음 무척추 태그가 필요 없음 G-기계", 예를 들어, S. 페이튼 존스, 1992 참조 - research.microsoft.com/copyright/accept.asp?path=/users/simonpj/...을
Blaisorblade

2
@Blaisorblade : 게으른 언어에 대한 그래프 축소를 구현하기 위해 결합기 와 변형이 사용되었습니다 .주의 : Haskell과 ghc는 동일하지 않으며 문헌에는 여러 슈퍼 콤비 네이터 기반 Haskells가 포함되어 있습니다. 그러나 기능 프로그래밍의 최첨단 기술은 복잡한 환경보다 처리 환경의 효율성 이점을 발견했습니다. 예를 들어, 상위 논리 프로그래밍과 같이 슈퍼 콤비 네이터가 여전히 사용되는 것을 볼 수 있습니다. 수퍼 콤비 네이터는 고차 프로그래밍 구현에 사용되는 기술 인벤토리의 일부로 남아 있습니다.
Charles Stewart

수퍼 콤비 네이터는 바운드 변수가 아닌 자유 변수 만 피하므로 IMHO는 결합 논리 자체의 사용으로 간주 될 수 없습니다. 그들은 대부분 특별한 람다 용어입니다. 수퍼 콤비 네이터, 람다 리프팅 프로그램 (있는 경우 확실하지 않음) 및 GHC 구현 (자유 변수에 대한 클로저의 포인터를 순도 덕분에 호스트 함수에서 복사 할 수 있음) 간에는 훨씬 작은 차이가 있습니다. 나는 또한 GHC와 매우 유사한 최신 Utrecht Haskell Compiler를 생각하고 있었지만 IIRC는 람다 리프팅을 사용합니다. 여전히, 그것은 CL이 아닙니다.
Blaisorblade

고차 로직 프로그래밍에 대해 몰랐습니다. springerlink.com/content/t68777w270713p5n 에서이 백서를 발견했습니다 . 불행히도, 나는 그것을 읽을 시간이 없을 것입니다.
Blaisorblade

4

John Tromp의 의견을 참조하면 조합 논리 람다 미적분학과 매우 다르다는 느낌을 줍니다. 관심사는 함수형 프로그래밍에서 비롯되므로 조합 논리에 대해 많이 알고 싶지 않습니다.

조합 논리에 대해 제가 가장 좋아하는 튜토리얼 은 Cambridge University의 강의 노트에 있습니다.

그러나 소위 게으른 (또는 적용 가능한) 언어의 구현을 설명하기 위해 도입되었습니다. 이전 의견에서 언급했듯이 이러한 기술은 이제 구식입니다.


조합 언어는 더 이상 게으른 / 응용 언어를 구현하는 데 사용되지 않기 때문에 현재 최첨단 기술은 무엇입니까? 그리고 이러한 기술을 분류 할 이름 / 범주가 있습니까?
CMCDragonkai

@CMCDragonkai 토론 은 cstheory.stackexchange.com/a/306/989의 의견을 참조하십시오 . 간단한 실제 답변은 "GHC의 기능에 관한 논문을 참조하십시오": 게으른 프로그램을 빠르게 만들기 위해 서로 결합 된 다양한 기술 (STG 기계 및 엄격 성 분석과 같은 최적화를 포함)이 있습니다.
Blaisorblade
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.