2017-11-26 1 views
3

저는 며칠 동안이 일에 매달 렸습니다. 그런 질문에 대해 미안하지만, 저는 F # 자체의 초보자에 불과합니다. 타입 제공자에 관해 많은 논의가 있었기 때문에 나는 그것을 구축하고 그에 관한 논문을 쓰기로 결정했습니다. 시작했을 때 나는 타입 제공자가 무엇인지 전혀 몰랐다. 이제는 몇 가지 아이디어를 가지고 간단한 CSV 형식 공급자를 만들었지 만 평가에 대한 논점이 없으며 다른 언어로 이와 비슷한 것을 만들기까지 얼마나 많은 시간과 노력이들 것입니다. 지금까지 나는 그것에 대해 어떤 단서도 찾지 못했습니다. 단지 타입 제공자는 F # 3.0의 기능입니다. 누구든지 나를 도울 수 있습니까?형식 공급자가 F #을 제외한 다른 언어로 존재합니까?

+0

질문을 편집하여 적절한 답변을 식별 할 수있는 세부 정보가있는 특정 문제로 제한하십시오. 한 번에 여러 개의 다른 질문을하지 마십시오. 이 질문에 대한 설명은 [How to Ask] (https://stackoverflow.com/help/how-to-ask) 페이지를 참조하십시오. – aaron

+0

여러 언어로 비슷한 시설이 있습니다. 예를 들어, Lisp의 매크로와 GHC의 TemplateHaskell 확장. 일반적으로 그러한 것들은 "메타 프로그래밍"의 개념에 해당합니다. Google에 사용하십시오. –

+0

고마워요, @FyodorSoikin! 나는 그것을 즉시 찾으려고 노력할 것이다. – janix89

답변

7

필자가 아는 한, 유형 제공자를 직접 구현하는 유일한 다른 언어는 Idris입니다. Idris documentation on type providers을 참조하십시오. SQL type provider in David Christiansen's GitHub repo을 포함하여 몇 가지 예가 있습니다. 의존적으로 형식화 된 언어로서 타입 제공자는 F #에서와 매우 다른 모양을 가지고 있습니다 - 그들은 %provide 명령을 사용하여 호출되는 IO 모나드에서 기본적으로 계산이므로 F #과 비교하여 나머지 언어와 약간 더 균일합니다. 디자인.

형식 공급자와 관련된 다른 언어 기능이 있습니다.

  • 여기에는 다양한 템플릿 시스템 (예 : 템플릿 하스켈 및 OCaml의 camplp4)이 포함됩니다. 유형 공급자 기능 중 일부는 부족합니다 (실제로 코드를 생성하므로 "무한 크기"유형을 제공 할 수 없으며 도구와 통합되지 않습니다).

  • Java 및 C# (LINQ to SQL은 코드 생성 및 다양한 UI 프레임 워크를 사용함)와 같은 언어를위한 많은 코드 생성 도구가 있지만 언어 통합이 부족하고 상대적으로 비교적 빠른 형식 만 지원할 수 있습니다 작은.

  • 또 다른 관련 주제는 multi-stage programming과 같은 메타 프로그래밍이지만, 제가 말할 수있는 한, 이것은 대부분 학술적이며이를 구현하는 솔리드 언어는 없습니다.

이러한 유형 제공자 중 어느 것이 유형 제공자에 가깝다고 말할 수 없습니다. 필자에게 타입 제공자의 필수적인 특징은 개발자가 사용하는 경우 개발자가 얻는 빠른 피드백 (개발 중에는 스키마를 즉시 업데이트하는 것을 의미 함)입니다. 이는 코드 생성 도구가 일반적으로하지 않는 것입니다. 다른 유형은 무한 수의 유형을 느리게 제공 할 수 있지만 일부 유형 제공자에게는 유용하지만 모든 유형에 대해서는 유용하지 않습니다. JSON, XML 또는 CSV는 코드 생성 도구로 합리적으로 처리 할 수 ​​있습니다.