繁体   English   中英

质数列表

[英]List of prime numbers

let liczby_pierw n x =
x = n || x % n <> 0

    let rec usuń listn listx =
        match listn with
        | głowa :: ogon ->  usuń ogon (List.filter (liczby_pierw głowa) listx)
        | [] -> listx
    
    let liczby_pierw1 n =
        let max = int (sqrt(float n)) 
        usuń [ 2 .. max ] [ 2.. n ]
    printfn "Liczby pierwsze od 2 do %d:\n %A" 100 (liczby_pierw1 100)

我不知道此时我们如何用一个参数调用 function | głowa:: ogon -> usuń ogon (List.filter (liczby_pierw głowa) listx),因为上面将 function 声明为带有两个参数的 function。

我希望有人向我解释这是如何工作的,为什么我们可以使用带有一个参数的 function 调用。

这称为部分 function 应用程序 当你有一个带有多个参数的 function 时,你可以只用前几个参数调用它,结果将是一个带有其余参数的 function。

当你写:

usuń ogon (List.filter (liczby_pierw głowa) listx)

它实际上与编写相同:

usuń ogon (List.filter (fun x -> liczby_pierw głowa x) listx)

调用liczby_pierw głowa int -> bool 这是您需要传递给filter的 function 的类型,因此您可以在没有显式fun的情况下执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM