2010-06-01 5 views
17

처음부터 다시 구현하는 것이 공식 시스템이 더 흥미로울 수 있는지 묻고 싶습니다.재미 있고 강력한 무엇이 : 카레, 머큐리 또는 람다 프롤로그?

필자는 논리적/선언적 프로그래밍 시스템의 기존 및 오픈 소스 프로젝트를 살펴 보았습니다. 나는 여유 시간에 비슷한 것을 만들거나 적어도 구현의 일반적인 생각을 잡기로 결정했다.

이러한 시스템 중 일부가 논리에서 현대 학술 조사의 표현력과 간결함 및 계산 모델과의 관련성을 대부분 제공한다면 좋을 것입니다.

최소한 개념적 수준에서 공부하는 것이 좋습니다. 예를 들어, Lambda-Prolog는 고차원 관계가 가능하기 때문에 특히 흥미 롭습니다.하지만 AFAIK는 직관 론적 논리를 기반으로하므로 배제 된 중간 원칙이 없습니다. 그것은 일반적으로 나에게 불리하다.

덜 인기 있지만 표현력이 뛰어난/현대적인 논리 프로그래밍 시스템에 대한 제안을 환영합니다.

+0

비슷한 질문입니다. http://stackoverflow.com/questions/17675133/most-useful-instructive-functional-logic-language-to-learn?rq=1 –

답변

16

프롤로그는 프로그래밍에서 내 관점을 바꾼 첫 번째 언어입니다. 그러나 나중에 나는 그것이 그것을보고 싶어하는만큼 높은 수준이 아니라는 것을 알았다.

카레 - 뮌스터 CC 만 시도했지만 다소 불편 함을 느꼈습니다. 사실,이 시점에서, 나는 하스켈을 무시하는 것을 멈추기로 결정했습니다.

수성에는 Prolog에서보고 싶었던 많은 것들이 있습니다. 나는 규칙의 모드를 구별 할 수있는 가능성에 대해 정말로 기대하고있다. Mercury로 작성된 프로그램은 컴파일러가 많은 최적화 작업을 수행하도록 유도해야합니다 (필자는 추측합니다).

+4

프롤로그는 매혹적입니다. 그러나 더욱 더 그렇습니다. 그것이 얼마나 단순한 지요. – alex

2

필자가 수행 한 프로그래밍 언어 과정의 최종 프로젝트에서 연속 및 매크로를 사용하여 Scheme에 Prolog 평가기를 포함해야했습니다. 최종 결과는 Scheme과 Prolog 코드를 자유롭게 혼합 할 수 있고, Scheme으로 작성된 임의의 술어를 Prolog 엔진에 전달할 수 있다는 것입니다.

매우 유익한 연습이었습니다. 처음 12 줄의 코드 (andor)는 글자를 쓰고 올바른 것을 얻는데 6 시간이 걸렸습니다. 그것은 연속성을 사용하여 매우 간결하게 작성된 검색 로직이었습니다. 나머지는 조금 더 쉽게 따라 갔다. 그런 다음 통일 알고리즘을 추가하고 나면 모든 것이 작동했습니다.

4

논리 기반 시스템을 확장하려고한다면, 나는 오픈 소스이며 표준을 따르는 오픈 소스이기 때문에 Prolog Cafe을 선택하고 Java 기반 시스템에 쉽게 통합 할 수 있습니다.

9

Twelf.

이것은 람다 - 프롤로그를 상당히 일반화하며 논리적 프레임 워크이자 금속 프로그래밍 프레임 워크 및 논리 프로그래밍 언어입니다. 논리뿐만 아니라 계산에 중점을 둔 언어가 필요한 경우 가장 잘 알고 있습니다.

+1

2013 년 이래로 Twelf에 대한 업데이트가 없었습니다. 여전히 활성 프로젝트인지 알고 있습니까? –