Сборка библиотеки F # для использования в C # - PullRequest
9 голосов
/ 10 октября 2010

Допустим, у меня есть следующая функция.

let rec fib n =
    match n with
    | 1 | 2 -> 1
    | n -> fib(n-1) + fib(n-2)

Как мне скомпилировать этот код в dll, чтобы он использовался из C #?

Я использую как моно (в Mac OS X), так и Visual Studio 2010.

ДОБАВЛЕНО

Я добавил следующее, чтобы создать пространство имен.

namespace MyMath.Core
module public Process=

И fsc --target: библиотека facto.fs выдает мне facto.dll.

Код C # для использования этого кода следующим образом.

using System;
using MyMath.Core;

class TestFSharp {
    public static void Main() {
        int val = MyMath.Core.Process.fib(10);
        Console.WriteLine(val);
    }
}

dmcs /r:facto.dll testf.cs дает мне tesetf.exe.

1 Ответ

14 голосов
/ 10 октября 2010

Хорошо, если вы поместите это в файл Program.fs и скомпилируете его в библиотеку --target:library), то из C # это будет выглядеть как

Program.fib(5)

См. Также вызов F # dll в C #

Однако, если вы планируете предоставлять код F # для C #, вы можете использовать пространства имен и типы. См. Руководство по проектированию компонентов F # для получения дополнительной информации.

...