Я работаю над IronJS, и один из наших исходных файлов становится очень длинным.
Прямо сейчас я пытаюсь получить .NET interop работает. Я добавляю метод TryBinaryOperation
к Undefined
, чтобы C # мог использовать семантику JavaScript неопределенного значения.
Однако это вводит зависимость от операторов
, который вызывает циклическую зависимость.
Runtime.fs:
type BoxedValue() =
struct
// Contains IsUndefined and get_Undefined, referencing the Undefined class, below.
...
and type Undefined() =
inherit DynamicObject()
...
override x.TryBinaryOperation(binder:BinaryOperationBinder, arg:obj, result:obj byref) : bool =
// Here, we are referencing BoxedValue, above.
result <- Operators.add(Und, BoxedValue.Box(arg))
true
...
Operators.fs:
type Operators =
...
// Here, we are referencing BoxedValue.
static member add(BoxedValue l, BoxedValue r)
...
Итак, у нас есть этот набор зависимостей:
В идеале мы хотели бы разделить каждую из этих в отдельный файл.
Возможно ли в F # иметь межфайловые циклические зависимости?