2014-10-04 2 views
5

그래서 저는 clojure의 코드와 같은 데이터 접근법에 대한 생각을 고수하기 위해 노력해 왔으며 조금 혼란 스럽습니다. 그것들은 단순히 그 종류의 고차 함수 일뿐입니다. 이 두 개념간에 차이점이 있습니까?LISP의 데이터 - 코드 이데올로기는 기본적으로 고차 함수와 동일한 것인가?

+0

나는 이것이 너무 광범위하다고 들었다. 따라서, 사회자를 행복하게 만드는 방법으로 이것을 다시 말해 보겠습니다. 필자는 기능적 프로그래밍을 배우려는 프로그래머이며 코드 별 데이터에 대한 내용을 읽었으며이 개념의 실제적인 사용법을 이해하고자합니다. - 이것이 "너무 광범위하다"는 생각은 다소 어리 석다 - – patrickbarker

+1

Stackoverflow는 '이데올로기'에 관한 질문이 아니라 실제 프로그래밍 문제를위한 것이다. 여기를 참조하십시오 : http://stackoverflow.com/tour –

+0

모두가 이데올로기 질문 만 허용 할 수는 없나요? 그것은 정말 스택 교환 사이트 사이에 점프 고통의 종류 – patrickbarker

답변

12

데이터 코드는 더 큰 발전입니다. HOF는 ​​실행 가능한 블록을 다른 실행 가능한 블록으로 전달하고 작성할 수 있다는 점에서 코드와 마찬가지로 데이터를 제공합니다. 그러나 블록 자체의 구조를 조작 할 수는 없습니다. 그것은 하나의 메소드 (함수 호출)를 가진 오브젝트로 작업하는 것과 비슷하지만 그렇지 않으면 데이터를 누출하지 않는 것과 같습니다.

전체 코드에서 데이터 코드는 내용이 인 사용자 환경에서 다른 코드와 마찬가지로 작동합니다. 언급 한 homoiconicity @coredump는 다른 네이티브 데이터 구조에 적용 할 수있는 코드 블록과 완전히 똑같은 연산과 변환을 사용할 수 있으므로이 작업을 매우 용이하게합니다. 그러나 동질성은 엄격하게 요구되지 않습니다. 비 homoicic 언어의 많은 스칼라의 macrosquasiquotes (컴파일 타임 코드 조작을위한)과 toolboxes (런타임 컴파일을위한)이나 파이썬의 ast과 같은 비슷한 결과를 얻을 수있는 metaprogramming 기능을 제공합니다.

+0

Btw 스칼라 homoiconicity을 준 준칙하지 말라? –

+0

굉장한 대답, 패턴 매칭과 HOF를 제외하고 다른 실용적인 응용 프로그램은 무엇이라고 생각하십니까? – patrickbarker

+0

@EugeneBurmako 필자는 실제로 문서를 읽지 않고 쿼시 퀘스트로 작업하지 않았습니다. AST를 작성하는 구문 인 것 같지만 쿼시 코드 형식으로 AST를 조작 할 수 있는지 확신 할 수 없습니다. 당신이 더 잘 알고 있다면 저를 고쳐 주셔도 좋습니다. Lisps의 경우 동질성 논증은 코드의 직접적인 표현이 이미 AST와 일반 목록이기 때문에 좀 더 직접적인 것처럼 보입니다. – acjay

0

코드는 homoiconicity에 관한 코드이며 일반적으로 코드를 작성하는 코드입니다. 고차 함수는이 함수에 사용할 수 있지만 매크로에 대한 자세한 내용입니다. 몇 가지 코드를 가져 와서 변환하고 다른 코드를 반환하면 평가 될 것입니다.