이 두 사람 (? x lives-in? city) (john lives-in new-york)과 함께 Scheme에서 패턴 일치를 만드는 방법에 대한 아이디어가 있습니까?스키마에서 패턴 일치를 수행하는 방법은 무엇입니까?
나는 match-define을 사용해 보았지만 성공하지 못했습니다.
이 두 사람 (? x lives-in? city) (john lives-in new-york)과 함께 Scheme에서 패턴 일치를 만드는 방법에 대한 아이디어가 있습니까?스키마에서 패턴 일치를 수행하는 방법은 무엇입니까?
나는 match-define을 사용해 보았지만 성공하지 못했습니다.
패턴이 맞는 것 같습니다. 이 문제에 대한 일반적인 해결책은 Unification Algorithm을 구현하는 것입니다. SICP에 설명 된 완전한 해결책이 있습니다. 또는 miniKANREN을 코드에 삽입하는 것을 고려해보십시오.이 코드는 Scheme에서 작동하는 간단한 논리 프로그래밍 시스템입니다.
더 간단한 일치를 위해 Racket의 Pattern Matching 능력을 사용할 수 있습니다. 질문의 예를 들면 다음과 같습니다
(define expression '(john lives-in new-york))
(match expression
[(list ?x 'lives-in ?city) (list ?x ?city)]
[_ #f])
=> '(john new-york)
은 위의 일치하는 항목이없는 경우 ?x
및 ?city
, 또는 #f
의 일치 값리스트를 반환 (?x lives-in ?city)
패턴에 대한 주어진 식을 일치합니다.
질문이 하나 있습니다. 구성표 패턴 일치가 통합 알고리즘을 사용하여 구현 되었습니까? 필자에게 Scheme Pattern Matching은 정말 강력하고 공식적인 측면을 이해하고 싶습니다. –
어떤 체계로 작업하고 계십니까? 치킨, 라켓 등? –