F#中的类型不匹配错误

John A Zoidberg博士

下面的脚本应计算数字的第一个素数。但是,它在第​​10行的char 28上抛出了一个错误

 ~vs7F27.fsx(10,28): error FS0001: Type mismatch. Expecting a
 unit list    
 but given a
 int64 list    
 The type 'unit' does not match the type 'int64'

我的代码如下。为什么在这里要一个单位作为类型?如何更改代码以允许使用int64?

let makeList x  = [2L..(x-1L)]
let divides x y = x%y = 0L
let isprime n =
    let rec check i =
        i > n/2L || (n % i <> 0L && check (i + 1L))
    check 2L
let findFirstPrimeFactor x = 
    let rec find y list = 
        if divides y (list |> List.head) &&  list |> List.head |> isprime 
            then List.head(list)
        if list |> List.length <> 1 then 1L
        else find y (list |> List.tail)
    find x (makeList x)

findFirstPrimeFactor 7L
马辛·侏罗纪

您的代码缩进具有误导性。应该更像

let findFirstPrimeFactor x = 
    let rec find y list = 
        if divides y (list |> List.head) &&  list |> List.head |> isprime 
            then List.head(list)
                 if list |> List.length <> 1 then 1L
        else find y (list |> List.tail)
    find x (makeList x)

这就是为什么您遇到错误的原因-List.head(list)不是该组中的最后一个语句,因此它不应返回任何内容。

更改秒ifelif使其起作用:

let findFirstPrimeFactor x = 
    let rec find y list = 
        if divides y (list |> List.head) &&  list |> List.head |> isprime 
            then List.head(list)
        elif list |> List.length <> 1 then 1L
        else find y (list |> List.tail)
    find x (makeList x)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

F#中的类型不匹配错误

来自分类Dev

得到同样的错误 ''a list' 类型与 F# 中的类型 'int' 不匹配

来自分类Dev

在F#中,“期望”和“给定”之间类型不匹配的错误是什么意思?

来自分类Dev

F#中数据库记录的记录模式和类型不匹配

来自分类Dev

F#If语句类型不匹配错误

来自分类Dev

Scala中奇怪的类型不匹配错误

来自分类Dev

在vbScript中获取类型不匹配错误

来自分类Dev

Excel VBA中的类型不匹配错误

来自分类Dev

grails中的remoteFunction()类型不匹配错误

来自分类Dev

Android中的错误类型不匹配asynctask

来自分类Dev

在vbScript中获取类型不匹配错误

来自分类Dev

Scala中奇怪的类型不匹配错误

来自分类Dev

QueryTables 中的 VBA 类型不匹配错误

来自分类Dev

F#:不了解与..的匹配

来自分类Dev

F#:不了解与..的匹配

来自分类Dev

为什么在F#中不编译匹配的代码版本

来自分类Dev

F#错误:类型错误?

来自分类Dev

C#代码中的模式匹配F#类型

来自分类Dev

F# Seq.head & Seq.tail 类型与自定义类型不匹配

来自分类Dev

在VBA中的替换功能中获取类型不匹配错误

来自分类Dev

错误类型与replaceitemvalue不匹配

来自分类Dev

奇怪的类型不匹配错误

来自分类Dev

VBA错误:类型不匹配

来自分类Dev

奇怪的类型不匹配错误

来自分类Dev

错误类型与replaceitemvalue不匹配

来自分类Dev

类型不匹配错误#13

来自分类Dev

奇怪的类型不匹配错误

来自分类Dev

Scala 错误:类型不匹配

来自分类Dev

在泛型函数上使用约束时,F#类型约束不匹配