2010-11-18 5 views
4

새 라이브러리를 사용할 수있는 경우에만 새로운 언어가 흥미 롭습니다. 그래서 나는 F #으로 .net에서 사용할 수있는 새로운 라이브러리가 무엇인지 알고 싶다. F #이 ML/OCaml과 호환되면 Ocaml 라이브러리가 F #으로 이식되거나 이식 될 수 있습니다. 나는 .NET에서 신호 처리/음성 인식, 논리 프로그래밍/SLD 해결 라이브러리에서 흥미 롭습니다.새로운 도구 세트 : OCaml에서 이식 된 원래 F # 모듈

+0

"Jon Harrop ... 전화 : – Benjol

답변

11

많은 수의 ML/OCaml 라이브러리가 F #으로 이식 된 것으로 생각하지 않습니다. F # 프로그래밍 스타일은 사람들이 ML/OCaml에서 사용하는 것과 매우 달랐습니다. 그래서 ML/OCaml 라이브러리는 F # 프로그래머들에게는 조금 외국어로 느껴질 것입니다.

그러나 일부 프로젝트는 F #과 OCaml에서 교차 컴파일됩니다. F # 컴파일러 자체가 그런 식으로 사용되었지만 MSR의 Slayer이 다른 예라고 생각합니다. 그러나, 당신이 언급 한 두 도메인에 대해, 나는 F # 라이브러리에 대해 알지 못한다. 당신은 F #으로 OCaml의 코드를 컴파일에 관심이 있다면

, 여기에 당신에게 도움이 될 수있는 몇 가지 작업은 다음과 같습니다 F 번호에 이식 OCaml의 코드가 F 번호가 지원하지 않는다는 것입니다

  • 큰 언어 제한 펑터.
  • OCaml의 일부 표준 라이브러리 (F# PowerPack에서 발견 될 수 있음) FSharp.PowerPack.Compatibility.dll 조립체
+1

OCAML 용 많은 라이브러리는 C 프로젝트 용 래퍼입니다. 그 패러다임이 F #/.NET에 어떻게 들어 맞는지 확신 할 수 없습니다. 어떤 통찰력? (나는 OCAML에서 F #으로 전환하는 것에 대한 당신의 요점을 덧붙이고 싶습니다; F #에는 OCAML 프로젝트에서 꽤 자주 사용되는 펑터 또는 다형성 변형이 포함되지 않습니다). – nlucaroni

11

F 번호가 같은 SetMap 모음 등 OCaml의 일부를 포함하는 포트에서 구현된다. 다른 콘크리트 데이터 구조는 순수 기능 데이터 구조 (예 : Chris Okasaki's excellent monograph)와 같이 쉽게 이식 할 수 있습니다. OCaml과 F #에서 왼쪽 힙 here을 기반으로 힙 정렬을 설명했습니다. 나는 F # here에있는 순전히 기능적인 힙에 대한보다 철저한 리뷰를 발표했다. 그러나 F #은 오카사키 (Okasaki)가 매우 전문적으로 사용하는 고차원 모듈 시스템이 없기 때문에 추상 데이터 구조 (예 : 대기열에 추상화 된 가등리스트)를 잘 표현할 수없는 것 같습니다. OCaml과 F #에 Burrows-Wheeler transform과 같은 다른 번역본도 게시했습니다. OCaml에는 ocamlgraph과 같은 많은 훌륭한 라이브러리가 있지만 F #에는 고차원 모듈, 다형성 변형, 매크로 등과 같은 핵심 언어 기능이 없기 때문에 직접 번역하기가 어렵거나 불가능합니다.

Microsoft는 물론 TrueSkill ranking system (Halo 3 및 Bing AdCenter에서 사용됨) 및 타사 드라이버 확인 프로그램 소프트웨어를 OCaml에서 F #으로 옮기는 첫 번째 F # 채택 자입니다.

Coherent PDF PDF 문서를 조작하기위한 명령 줄 도구는 OCaml과 F # 모두에서 크로스 컴파일되는 몇 가지 코드베이스 중 하나입니다.

Smoke Vector Graphics 엔진과 현재 사용중인 (중단 된) Presenta 응용 프로그램은 OCaml에서 F #으로 번역되었으며 현재는 F# for Visualization으로 판매되고 있습니다. 번역은 확실히 언어들 사이의 유사성으로 인해 더 쉬워졌지만 여전히해야 할 일이 있었고 우리는 크로스 컴파일 할 방법이 없습니다.

OCaml에서 F #으로 변환되는 대부분의 코드는 상업적 언어이므로 F #은 주로 상업용 언어이므로 결과적으로 OCaml의 상용 사용자는 F #으로 마이그레이션됩니다. 오픈 소스 F #은 OSS와 같은 F # 자체의 최근 릴리스에 이어 이륙을 시작할 수도 있지만 아직 초기 단계입니다.

특정 주제 (예 : 신호 처리)에 대해서는 Visual F# 2010 for Technical Computing에 설명 된 FFTW에 바인딩 할 것을 권장하지 않을 것입니다.

1

진화 알고리즘 개발을 지원하는 라이브러리가 하나 있습니다.

F # 인공 지능 도서관 - 차동 진화의 구현 :이 진화 알고리즘에 대한 http://fsai.codeplex.com/documentation?version=11

: http://en.wikipedia.org/wiki/Evolutionary_algorithm

또한에 SLD 해상도 엔진 "을 가지고 좋은"에 대한 짧은 토론이 F # (및 C#에 포팅 된 프롤로그에 대한 하나의 링크) http://cs.hubfs.net/forums/thread/6676.aspx

그게 전부입니다 ...