Может ли fsi работать с версией 4.0 на MAC OS, и если да, то как мне ее настроить? - PullRequest
4 голосов
/ 15 ноября 2010

Вроде понятно ...

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

Это репост более или менее моего вопроса здесь в F # на MAC OSX и Ubuntu Я получаю ошибку при запуске FSI в 4.0

Спасибо

Gary

Редактировать Я пытаюсь запустить следующее в демонстрационной версии на моем MacBook с Mono 2.8 и fsharp. (Код был выбран кем-то другим)

open System.Numerics
open System

let maxIteration = 100

let modSquared (c : Complex) = c.Real * c.Real + c.Imaginary * c.Imaginary

type MandelbrotResult = 
    | DidNotEscape
    | Escaped of int

let mandelbrot c =
    let rec mandelbrotInner z iterations =
        if(modSquared z >= 4.0) 
            then Escaped iterations
        elif iterations = maxIteration
            then DidNotEscape
        else mandelbrotInner ((z * z) + c) (iterations + 1)
    mandelbrotInner c 0

for y in [-1.0..0.1..1.0] do
    for x in [-2.0..0.05..1.0] do
        match mandelbrot (Complex(x, y)) with
        | DidNotEscape -> Console.Write "#"
        | Escaped _ -> Console.Write " "
    Console.WriteLine ()

Ответы [ 2 ]

2 голосов
/ 16 ноября 2010

Я скачал двоичные файлы ZIP и попытался запустить версию 4.0 на MacOS.Изначально я получаю ту же ошибку, что и вы (не могу найти BigInteger).Это можно исправить, добавив аргумент командной строки -I, но затем я получил еще одну ошибку, и я пока не уверен, что с этим делать:

fsmac:fsharp4 tomas$ mono Fsi.exe 
  -I:/Library/Frameworks/Mono.framework/Versions/2.8/lib/mono/4.0/

Microsoft (R) F# 2.0 Interactive build 4.0.30319.1
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> 
error FS0192: internal error: unreachable: GetGlobals

EDIT Вот еще одна (неудачная) попытка.Это похоже на ошибку Mono, потому что метод UnsafeLoadFrom, похоже, не существует в Mono (время выполнения 4.0).По крайней мере, я не вижу его в IDE MonoDevelop в проектах C # (когда я изменяю время выполнения на 4.0)

fsmac:fsharp4 tomas$ mono --runtime=v4.0.30319 Fsi.exe --noframework 
  -r:/Library/Frameworks/Mono.framework/Versions/2.8/lib/mono/4.0/mscorlib.dll 
  -r:FSharp.Core.dll 

Microsoft (R) F# 2.0 Interactive build 4.0.30319.1
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> Missing method System.Reflection.Assembly::UnsafeLoadFrom(string) in 
assembly /Library/Frameworks/Mono.framework/Versions/2.8/lib/mono/4.0/
mscorlib.dll, referenced in assembly /Users/tomas/Programs/fsharp4/
FSharp.Compiler.dll
0 голосов
/ 16 ноября 2010

Вы должны попробовать установить сборки F # в GAC. Для этого:

  1. Открыть терминал
  2. Перейдите в каталог, в который вы скачали дистрибутив F #, а затем перейдите на bin/
  3. Установите каждую DLL в GAC, используя gacutil

$ cd FSharp-2.0.0.0/bin/; for a in *.dll; do sudo gacutil -i $a; done

Возможно, вы захотите сделать то же самое с PowerPack.

Удачи.

...