标签: f#-interactive

类型不匹配 Seq.unfold

let fibgen (x,y) = if(x < 4000000) then Some(x+y, (y, x+y)) else None

let fibseq = Seq.unfold fibgen (1,1)
Run Code Online (Sandbox Code Playgroud)

在第二行键入不匹配错误。我究竟做错了什么?我正在使用 F# 2.0

回答

首先在我的交互式窗口上完成重置会话仍然出现相同的错误
,然后重新启动我的项目现在工作正常。

是的,我在同一会话中执行了下面的代码

// The option type is a discriminated union.
type Option<'a> =
    | Some of 'a
    | None




Interactive window Output as below

val fibgen : int * int -> Option<int * (int * int)>

> 


Eluer2.fs(27,25): error FS0001: Type mismatch. Expecting a
    int * int -> ('a * (int * int)) option    
but …
Run Code Online (Sandbox Code Playgroud)

f# f#-interactive

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

该表达式预计具有类型单位

我有以下代码.在这一行

 if min<=0  then     min <- List.nth list i |>ignore
Run Code Online (Sandbox Code Playgroud)

我有2个错误.首先是0

 This expression was expected to have type
    unit    
but here has type
    int
Run Code Online (Sandbox Code Playgroud)

然后在i

This expression was expected to have type
    unit    
but here has type
    int
Run Code Online (Sandbox Code Playgroud)

*我也看过这个 并尝试忽略,但它不起作用

let replace touple2=
   let first  (a,_,_,_,_)=a
   let second (_,b,_,_,_)=b
   let third  (_,_,c,_,_)=c
   let forth  (_,_,_,d,_)=d
   let fifth  (_,_,_,_,e)=e
   let sortedlist list= List.sort(list)

   let GetMin list=
        list |> List.rev |> List.head
        let mutable min=list.Head
        let mutable …
Run Code Online (Sandbox Code Playgroud)

f# f#-interactive unit-type

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

F#中List.Fold和List.Foldback的简单解释

任何人都可以用非常简单的方式解释 F# 中的 List.Fold 和 List.Foldback 是什么。我读了几本书,并试图在网上搜索一个简单的解释,但我仍然不明白。

- 这不是一个重复的问题,也没有在另一个链接中回答。

f# f#-interactive f#-3.0 f#-data

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

.NET 交互式笔记本:如何覆盖 nuget 包版本?

我正在为 VSCode 使用 .NET 笔记本。当前版本:v1.0.2419011

我正在尝试使用 nuget 包进行实验

我首先像这样加载包

#r "nuget: Microsoft.CodeAnalysis.Workspaces.MSBuild"
Run Code Online (Sandbox Code Playgroud)

然后我意识到我需要预览版本

#r "nuget: Microsoft.CodeAnalysis.Workspaces.MSBuild, 4.0.0-3.final"
Run Code Online (Sandbox Code Playgroud)

但是,笔记本不允许我更改软件包的版本。它的错误是

错误:无法添加 Microsoft.CodeAnalysis.Workspaces.MSBuild 版本 4.0.0-1.final,因为之前添加了版本 3.11.0。

我没有看到任何清除包或强制覆盖的选项。在之前加载不同版本后如何更改软件包版本?

.net f#-interactive visual-studio-code jupyter-notebook

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

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#交互式窗口问题

我在http://www.tryfsharp.org上的交互式窗口中收到此错误.它在视觉工作室工作正常,我不知道如何解决它.任何帮助将不胜感激

let randomNumberGenerator count =
    let rnd = System.Random()
    List.init count (fun numList -> rnd.Next(0, 100))

let rec sortFunction = function
| [] -> []
| l -> let minNum = List.min l in
       let rest = List.filter (fun i -> i <> minNum) l in
       let sortedList = sortFunction rest in
       minNum :: sortedList

let List = randomNumberGenerator 10
let sortList = sortFunction List
printfn "Randomly Generated numbers in a NON-SORTED LIST\n"
printfn "%A" List
printfn "\nSORTED …
Run Code Online (Sandbox Code Playgroud)

f# f#-interactive

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

如何将3元组的序列相加?并计算他们的平均值?

我有一系列像这样的3元组:

[(123, 143 ,136), (177, 284, 248), (143, 182, 252)...]
Run Code Online (Sandbox Code Playgroud)

我想通过总结所有3元组来将它们分成单个3元组:

[((x1+x2+x3),(y1+y2+y3),(z1+z2+z3))]
Run Code Online (Sandbox Code Playgroud)

然后找到他们的平均值

[((x1+x2+x3)/n,(y1+y2+y3)/n,(z1+z2+z3)/n)]
Run Code Online (Sandbox Code Playgroud)

我总结他们的尝试:

let averageRGB seqRGB = seqRGB |> Seq.fold(fun(R, G, B)(r, g, b) -> (R+r, G+g, B+b)) (0, 0, 0) (r, g, b)
Run Code Online (Sandbox Code Playgroud)

我试过用:

你如何总结和平均序列?

3元组列表的第一个元素的总和

http://social.msdn.microsoft.com/Forums/vstudio/en-US/776d6f05-40c9-43ac-9b1c-eab188466eed/f-how-to-use-foldback-for-array-of-tuples?forum= fsharpgeneral

f# f#-interactive

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

类型不匹配 - 适用于F#交互式,但不适用于真正的F#项目

我可以用F#interactive做到这一点,它运行正常:

> printf "%d\n" 5;;
5
val it : unit = ()
Run Code Online (Sandbox Code Playgroud)

但如果我在"真正的"F#项目中做同样的事情:

let main argv =
    printf "%d\n" 5
Run Code Online (Sandbox Code Playgroud)

我尝试编译时遇到此错误:

Type mismatch. Expecting a
    'a -> int    
but given a
    'a -> unit    
The type 'int' does not match the type 'unit'
Run Code Online (Sandbox Code Playgroud)

将语句包装ignore()或管道化为ignore(|> ignore)也不起作用.

这是一个语义错误,但我不知道如何推理它,谷歌没有帮助.

为什么它在F#交互式工作而不是在实际的F#项目中工作,为什么它在语义错误?

f# f#-interactive

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

用list.fold找到平均值

只是尝试制作一个非常简单的平均值float list -> float,即可找到列表的平均值.这是我的代码:

let list ls = List.fold (fun acc float -> acc + float) 0.0 ls;;

list [1.60; 2.30; 5.0; 2.30];;
Run Code Online (Sandbox Code Playgroud)

输出是 11.2

我需要在函数中添加一些可以11.2x元素划分来找到平均值的东西.

有帮助吗?

f# f#-interactive

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

如何在F#中对变量进行排序?

我如何按变量对列表进行排序但是按升序排序?

就像是:

Data |> List.sortBy(fun t -> t.Date,ascending(t.Value))
Run Code Online (Sandbox Code Playgroud)

以上就是一个例子,我知道如果运行它将不起作用.

f# f#-interactive

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

从 Python 转换为 F# 递归函数?

我正在尝试将此 Python 代码转换为 F# 而不使用不可变变量或List.map. 我仍然是这个新手。

def findMatches(s,l):
    temp=[]
    for i in l:
        if i[0]==s:
            temp.append(i[1])
    temp.sort()
    return temp

l=findMatches("A",[("A",5),("AA",9),("BB",6),("A",0)])
print(l)
Run Code Online (Sandbox Code Playgroud)

我已经开始:

let findMatches s l =
    for e1, e2 in list do
        if e1 = s then ...
Run Code Online (Sandbox Code Playgroud)

如果我朝着正确的方向前进或下一步要去哪里,则并非完全如此。

python f# f#-interactive

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

为什么当每个项都为 true 时,这个布尔表达式会返回 false?

> (Console.Read() = (int 'd'));;
d
val it: bool = true

> (Console.Read() = (int 'd')) && (Console.Read() = (int 'o'));;
val it: bool = false
Run Code Online (Sandbox Code Playgroud)

它似乎在没有调用 Read 的情况下终止,编译器如何知道使表达式为 false?

io f# f#-interactive

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