문제

Practical Common Lisp를 읽은 후 마침내 매크로의 중요성을 이해하고 이를 지원하는 .NET 플랫폼용 언어를 찾고 있었습니다..NET용 Lisp 방언이 몇 가지 있지만 제가 수집한 내용에 따르면 모두 베타 버전이거나 폐기되었습니다.최근 Clojure에 대한 관심이 촉발되었지만 이는 Java 플랫폼용이고 아마도 ikvm을 사용할 수는 있지만 일부 통합된 느낌은 들지 않습니다.특히 WPF와 같은 작업을 수행하려는 경우에는 더욱 그렇습니다.

최근 F#에 대한 속삭임을 듣고 매크로 지원에 대한 내용을 찾을 수 있는지 문서를 보려고 했지만 찾지 못했습니다.그럼 아는 사람 있나요?

감사해요 :)

도움이 되었습니까?

해결책

글쎄, F#은 OCaml을 기반으로 하고 OCaml은 오히려 광범위한 매크로 시스템.F#과 OCaml의 구문 및 의미적 유사성을 고려하면 Ocaml 매크로 시스템을 통해 F#으로 포팅할 수 있습니다.

Ocaml의 매크로 시스템을 훔친 것 외에는 F#용으로 미리 만들어진 매크로 시스템이 있다는 것을 알지 못합니다.

다른 팁

네멀레, 에 http://nemerle.org/ 는 시각적으로 C#에 가깝게 유지하면서 많은 기능적 프로그래밍 패러다임을 지원하는 .NET 언어(모노도 지원)입니다.광범위한 매크로 지원이 있습니다.

아니요.F#에 대한 매크로가 없습니다.

봤어? 우우?Boo에는 매크로가 없지만 구문 메타프로그래밍을 위한 매크로의 좋은 대안인 개방형 컴파일러 파이프라인이 있습니다.

[편집] 댓글에서 언급했듯이 Boo 하다 이제 매크로가 있습니다.

하지만 정말 끔찍한 일이군요. ocaml 예제의 구문이 모호해 보입니다.

여기서는 Lisp에서와 동일한 근본적인 구문 상충관계에 직면하게 됩니다.lisp 같은 매크로의 강력한 기능을 원한다면 해당 언어에 대해 lisp 같은 구문으로 끝나는 경향이 있거나 그렇지 않으면 매크로 구문이 일반 구문과 상당히 다르게 보일 것입니다.두 가지 접근 방식 모두 잘못된 것은 아니며 선택이 다를 뿐입니다.

나는 이제 꽤 활동적인 .NET/Mono 포트가 있다는 점을 지적해야 한다고 생각했습니다. 클로저.Clojure는 질문에 언급된 대로 LISP 스타일 매크로를 지원합니다.

다른 사람들이 말했듯이 현재(2010년 말) F#에서는 매크로가 지원되지 않습니다.

최근 F#에 대한 속삭임을 듣고 매크로 지원에 대한 내용을 찾을 수 있는지 문서를 보려고 했지만 찾지 못했습니다.그럼 아는 사람 있나요?

F#은 매크로를 지원하지 않으며 앞으로도 그럴 가능성이 거의 없습니다.

F# 인용문을 사용하는 것은 어떻습니까?

http://tomasp.net/blog/fsquotations.aspx

그것은 당신이 원하는 것과 반대일 수도 있지만, 당신은 그것에 대해 알고 있습니까? RDNZL?Lisp 코드에서 .NET 라이브러리를 호출할 수 있게 해주는 FFI(외인 함수 인터페이스)입니다.

Common Lisp 또는 Scheme 구현보다 성숙도가 훨씬 낮을 수도 있지만 .NET용 Lisp 방언이 있습니다. 엘# 그리고 도트리스프.

.net용으로 적극적으로 개발된 두 가지 Lisp가 있습니다.

IronScheme - DLR 기반 방식 구현

크로노스 - DLR 기반 클로저 포트

저는 현재 F#에서 메타 프로그래밍 가능성을 조사 중입니다.매크로를 코드로 확장되는 텍스트 템플릿으로 정의하는 경우 두 가지 확실한 접근 방식이 있습니다.

  1. T4 템플릿.F#에 대한 구현이 있습니다. https://github.com/kerams/Templatus

  2. 문자열에서 별도의 어셈블리로 F#을 호출한 후 어셈블리를 로드하는 경우를 본 적이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top