标签: f#

F# - 这段代码不是为我编译的

这段代码不是为我编译的: let countDown = [5L .. ?1L .. 0L];;

我有一本书(第33页)说它应该归还:
val countDown : int list = [5L; 4L; 3L; 2L; 1L; 0L]

编译器错误:

Program.fs(42,24): error FS0010: Unexpected character '?' in expression
>
> let countDown = [5L .. ?1L .. 0L];;

  let countDown = [5L .. ?1L .. 0L];;
  -----------------------^
Run Code Online (Sandbox Code Playgroud)

这本书错了.但为什么?它是对语言的更新吗?实现这个目标的方法是什么?

编辑:问题是?从PDF复制的-字符不是字符.

f#

0
推荐指数
1
解决办法
316
查看次数

如何从C#/ F#调用IronPython函数?

这是C#,F#,IronPython和IronRuby集成的后续问题

为了使用Python的C/C++函数,SWIG是最简单的解决方案.反过来也可以使用Python C API,例如,如果我们有一个python函数,如下所示

def add(x,y):
    return (x + 10*y)

我们可以在C中提出使用此python的包装器,如下所示.

double Add(double a, double b)
{
    PyObject *X, *Y, *pValue, *pArgs;
    double res;

    pArgs = PyTuple_New(2);
    X = Py_BuildValue("d", a);
    Y = Py_BuildValue("d", b);

    PyTuple_SetItem(pArgs, 0, X);
    PyTuple_SetItem(pArgs, 1, Y);
    pValue = PyEval_CallObject(pFunc, pArgs);
    res = PyFloat_AsDouble(pValue);    

    Py_DECREF(X);
    Py_DECREF(Y);
    Py_DECREF(pArgs);
    return res;
}

IronPython/C#甚至F#怎么样?

  • 如何从IronPython调用C#/ F#函数?或者,IronPython/C#中是否有任何SWIG等效工具?
  • 如何从C#/ F#调用IronPython函数?我想我可以使用"engine.CreateScriptSourceFromString"或类似的东西,但我需要找到一种方法来调用IronPython函数看起来像一个C#/ F#函数,不是在字符串中编写代码,而是从文件中读取.

c# f# ironpython

0
推荐指数
1
解决办法
1592
查看次数

类型定义中的F#递归

我在尝试在F#中实现自动微分时遇到了一些问题.我认为问题在于评估不是"懒惰".

这是我的代码:

type Diff =
    {d : double; df : Diff}
    static member (+) (x : Diff, y : Diff) =
        {d = x.d + y.d; df = x.df + y.df}
    static member (-) (x : Diff, y : Diff) =
        {d = x.d - y.d; df = x.df - y.df}
    static member (*) (x : Diff, a : double) =
        {d = x.d * a; df = x.df * a}
    static member (*) (x : Diff, y : Diff) …
Run Code Online (Sandbox Code Playgroud)

recursion f#

0
推荐指数
1
解决办法
364
查看次数

F#中的n + k个模式?

我在F#中写了以下内容:

let fib x = 
  match x with
  | 0 -> 0
  | 1 -> 1
  | n+2 -> fib n + fib (n+1)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到一个编译器错误,说明我在意外的地方使用了一个中缀操作符.除了使用通配符之外,有没有办法在F#中表达我的意图?

f# pattern-matching

0
推荐指数
1
解决办法
301
查看次数

以递归方式合并F#中的两个列表

我期待写一个递归函数来合并到F#中的整数列表

我从这开始,但不知道接下来该做什么.

let rec merge xs ys =
    match xs with
    | [] -> ys
    | 

let li = [1;3;5;7;]
let ll = [2;4;5;8;]
Run Code Online (Sandbox Code Playgroud)

recursion f#

0
推荐指数
1
解决办法
2690
查看次数

jQuery Ajax调用F#?

有没有办法使用jQuery调用f#库而不必将其包装到Web服务方法中?

.net jquery f# web-services

0
推荐指数
1
解决办法
381
查看次数

F#互动错误?

我在VS2010中尝试了以下代码:

open System.Security.Cryptography

let rsaTest1 =
    let ecKey = [|0uy..143uy|] // junk data for testing

    let ecKeyMod = ecKey.[8..8+128-1]   
    let ecKeyExp = ecKey.[136..136+8-1]
    let rsa = RSAParameters(Modulus = ecKeyMod, Exponent = ecKeyExp)

    rsa


let rsaTest2 =
    let ecKey = [|0uy..143uy|] // junk data for testing

    let rsa = RSAParameters(Modulus = ecKey.[8..8+128-1], Exponent = ecKey.[136..136+8-1])

    rsa
Run Code Online (Sandbox Code Playgroud)

如果我突出显示所有代码并将其发送到F#Interactive(Alt + Enter),则rsaTest1可以工作,但rsaTest2会给出错误消息,

System.NullReferenceException: Object reference not set to an instance of an object.
   at <StartupCode$FSI_0004>.$FSI_0004.main@() in P:\proj\Tachograph\Project\CompuTachTest\CompuTachTest\rsaTest.fsx:line 16
Run Code Online (Sandbox Code Playgroud)

但是,如果我将rsaTest2从值更改为函数并调用它,

let rsaTest2 () =
    let …
Run Code Online (Sandbox Code Playgroud)

f# f#-interactive

0
推荐指数
1
解决办法
207
查看次数

F#懒惰像素读数

我想将图像像素延迟加载到3维整数数组.例如,它看起来像这样:

   for i=0 to Width 
     for j=0 to Height
       let point=image.GetPixel(i,j)
       pixels.[0,i,j] <- point.R
       pixels.[1,i,j] <- point.G
       pixels.[2,i,j] <- point.B
Run Code Online (Sandbox Code Playgroud)

如何以懒惰的方式制作?

f# pixel lazy-evaluation

0
推荐指数
1
解决办法
720
查看次数

F#中的函数..为什么不编译

我写了两个版本的代码.第一个按预期工作并打印"嗨".第二个给我一个错误,"阻止这个让未完成"

第一版

#light 

let samplefn() =
            let z = 2
            let z = z * 2
            printfn "hi"

samplefn()
Run Code Online (Sandbox Code Playgroud)

第二版

#light 

let samplefn() =
            let z = 2
            let z = z * 2           

samplefn()
Run Code Online (Sandbox Code Playgroud)

唯一的区别是第二版中没有printfn.我使用Visual Studio 2010作为我的IDE.我对F#很新,但这个错误对我来说似乎很奇怪.我想我错过了一些非常重要的概念.请解释.

编辑:此外,如果我在函数外执行此操作,即使使用第一个版本的代码,我也会收到错误.

#light
let z = 2
let z = z * 2
printfn "Error: Duplicate definition of value z"
Run Code Online (Sandbox Code Playgroud)

f#

0
推荐指数
2
解决办法
624
查看次数

在F#中将字面值转换为字节

这是我的代码片段:

let targetMeasure (usesPercent:Nullable<byte>) value =
            match usesPercent.Value with
            | 0 -> sprintf "$%A" value
            | _ -> sprintf "%A%%" value
Run Code Online (Sandbox Code Playgroud)

尝试将"usesPercent"与0匹配,但0必须是一个字节.这总是让我在F#中感到困惑.我超越了可以为空的东西,但那时的值不是同一类型.我该如何解决这个问题?

f# casting

0
推荐指数
1
解决办法
441
查看次数