Mono, библиотеки F # не работают под Mac OSX - PullRequest
2 голосов
/ 19 ноября 2011

У меня очень простой вопрос.Я пытался гуглить, но безрезультатно.

Я установил Mono и F # с Macports в OSX.Есть некоторые ошибки в интерактивном F #, но все же его можно использовать, если вы вызываете его из emacs с режимом F #.

Теперь проблема в том, что, хотя F # есть и работает, даже самые простые библиотеки / функции неимеется в наличии.Например, следующий код не выполняется с ошибкой, которую он не может найти, ни sum , ни out :

let sumMultiples n =
    [1..n]
    |> List.filter (fun i -> (i%3 = 0 || i%5 = 0))
    |> List.sum

let out = sumMultiples 999

printfn "%d" out

Иошибка:

test.fs(6,12): error FS0039: The value, constructor, namespace or type 'sum' is not defined.


test.fs(10,17): error FS0039: The value or constructor 'out' is not defined.
stopped due to error

Что мне здесь не хватает?

Ответы [ 2 ]

2 голосов
/ 20 ноября 2011

Это резюме обсуждения с @jbssm через комментарии:

  • Исходная конфигурация: Mono 2.10.6 и F # 1.9.4.19 (старая F # версия от 2008 года), установленная через MacPorts. Его попытка удалить эти пакеты и установить Mono с образа диска получает тестовый код работает, но приводит к странной ошибке Failed to install ctrl-c handler - Ctrl-C handling will not be available. Error was: Exception has been thrown by the target of an invocation. всякий раз, когда начиная FSI.

И давайте начнем мой ответ отсюда:

  1. Чтобы выйти из ФСИ без Ctrl-C, я думаю, что вы всегда можете использовать #quit;;. Чтобы решить новую проблему, вы можете найти ответ следующий вопрос полезно.
  2. Я нахожу это немного странным, потому что ваша новая конфигурация F # должно сработать. Вы установили новые Mono и F #, используя или не используя MacPorts, потому что это известная ошибка F # в MacPorts? Если вы не используете MacPorts, я думаю, что некоторые данные остались из старого моно установка на MacPorts, которая конфликтует с новым Mono монтаж. Если первое предложение не работает, возможно, вам следует выполните следующую процедуру:

    1. Удалить старую установку Mono .
    2. Установка последней версии Mono с образа диска : Mono 2.10 и выше уже включает в себя пакет F #, поэтому нет необходимости устанавливать отдельный Пакет F #.
    3. Попробуйте свой тестовый скрипт с fsi на терминале.
    4. Обновите конфигурацию Emacs (при необходимости) и попробуйте запустить F # на Emacs.

    У меня Mono 2.10 с F # на моем Mac (хотя я не использую Emacs), поэтому я не думаю, что есть какие-либо проблемы с установкой Mono 2.10 с нуля.

Пожалуйста, предоставьте дополнительную информацию, если какая-либо из них подойдет вам.

2 голосов
/ 20 ноября 2011

Вот несколько инструкций, которые я недавно написал для работы F # под Mono (на Mac). https://github.com/Phrogz/laink/wiki/F%23s-on-Mac

Ваш код работает после выполнения этих шагов:

~/code/fs harold$ cat test.fs
let sumMultiples n =
    [1..n]
    |> List.filter (fun i -> (i%3 = 0 || i%5 = 0))
    |> List.sum

let out = sumMultiples 999

printfn "%d" out

~/code/fs harold$ fsc test.fs
Microsoft (R) F# 2.0 Compiler build 2.0.0.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

~/code/fs harold$ mono test.exe
233168
...