Результаты поиска по запросу "f#"

2 ответа

Большое спасибо за просмотр этого Томаса. Однако, как говорит kvb, это вызывает немного больше вопросов, чем ответов. В частности, есть ли что-то в выражениях вычислений, из-за которых компилятор теряет "хвостовую рекурсивность" функций, написанных с использованием bind, если bind не записан в стиле передачи продолжения? Значит ли это, что любой построитель вычислений в реальном мире должен проходить мимо?

ытие: это появилось в FsCheck, среде случайного тестирования F #, которую я поддерживаю. У меня есть решение, но оно мне не нравится. Более того, я не понимаю проблемы - ее просто обошли. Довольно стандартная реализация последовательности ...

3 ответа

Могу ли я использовать разные рабочие процессы одновременно в F #?

Мне нужно, чтобы мое состояние передавалось вместе с возможностью цепочки функций, возможно, с рабочим процессом. Есть ли способ для двух рабочих процессов использовать один и тот же контекст? Если нет, как это сделать? ОБНОВИТЬ: Ну, у меня ...

1 ответ

К счастью, издержки, связанные с синтаксисом выражений вычислений, обычно незначительны для наиболее важного применения выражений вычислений в F #: асинхронных выражениях. (Выражения seq являются особым случаем, поскольку компилятор F # компилирует их в конечные автоматы.)

ил проверить FParsec и попытался написать парсер для λ-выражений. Оказывается, рвение затрудняет рекурсивный анализ. Как я могу решить это? Код: open FParsec type λExpr = | Variable of char | Application of λExpr * λExpr | Lambda of char * ...

ТОП публикаций

4 ответа

, Но простота использования велика, и, поскольку моему приложению не нужна максимальная производительность, оно работает достаточно хорошо для меня. Хотя, поскольку это библиотека, если кто-то знает, как ее улучшить, всегда приятно делать из библиотеки лучшие исполнители из коробки, чтобы остальные могли просто использовать работающий код и просто выполнить свою работу!

аюсь загрузить более 3000 фотографий, на которые есть ссылки из резервной копии xml моего блога. Проблема, с которой я столкнулся, заключается в том, что если только одна из этих фотографий больше не доступна, вся асинхронность блокируется, ...

5 ответов

Пожалуйста, посмотрите на предлагаемые ссылки в комментариях. Я надеюсь, что они помогут вам.

жен сделать проекцию списка списков, который возвращает все комбинации с каждым элементом из каждого списка. Например: projection([[1]; [2; 3]]) = [[1; 2]; [1; 3]]. projection([[1]; [2; 3]; [4; 5]]) = [[1; 2; 4]; [1; 2; 5]; [1; 3; 4]; [1; 3; ...

4 ответа

 Я предполагаю, что в производстве FSharp.Core больше оптимизаций, чем '% s'.

просто удивлен тем, насколько медленным является printf из F #. У меня есть несколько программ на C #, которые обрабатывают большие файлы данных и записывают несколько файлов CSV. Я изначально начал с использованиемfprintf writer ...

3 ответа

К сожалению, приведенный выше код больше не компилируется в F # 3.0: активный шаблон '| Option | _ |' имеет тип результата, содержащий переменные типа, которые не определены входными данными. Распространенной причиной является случай, когда результат не упоминается, например, 'let (| A | B |) (x: int) = A x'. Это можно исправить с помощью ограничения типа, например, 'let (| A | B |) (x: int): Choice <int, unit> = A x'

я есть функция, которая принимает параметр типа объекта и должен уменьшить его доoption<obj>. member s.Bind(x : obj, rest) = let x = x :?> Option<obj>Если я прохожу (например)Option<string> какxпоследняя строка выдает ...

3 ответа

@Brian: Почему мы не можем писать inline IL? Это не ошибка; это особенность. :-)

ько что узнал, что OCAML должен иметь. постфикс для выполнения арифметики с плавающей точкой. Примером будет3. +. 4. который равен7. (С плавающей точкой). Однако F # обрабатывает арифметику с плавающей точкой и целочисленную одинаково, поэтому ...

2 ответа

Необязательный параметр - это синтаксис, который удобен для пользователей библиотеки, но не для авторов библиотеки. Вы стоите на точке зрения авторов библиотеки, чтобы судить об этой функции. Чем динамичнее интерфейс, тем больше проверок в базовой реализации.

отрим следующий код: type Test () = member o.fn1 (?bo) = 1 member o.fn2 (?bo) = o.fn1 bo member o.fn3 (?bo) = 1 + bo.Value member o.fn4 (?bo) = o.fn3 boПокаfn1 а такжеfn2 работать просто отлично,fn4 выдает следующую ошибку: init.fsx (6,30): ...

2 ответа

Ваш значительно быстрее (и вызывает меньше GC). Смотрит мне, что у тебя хорошо.

е ли вы предложить более простой и понятный способ написания этой функции? let cartesian_product sequences = let step acc sequence = seq { for x in acc do for y in sequence do yield Seq.append x [y] } Seq.fold step (Seq.singleton Seq.empty) ...