小编Pri*_*e M的帖子

F#:Piping vs. Composing vs. ... Composing?

我是新手--F#,一般编程和这个社区.我是一名数学家,在我的本科生中接触过计算机科学.我正在尝试在F#中完成一些任务,而"F#Cheat Sheet"展示了在不解释重复的情况下构成函数的三种不同方式.以下是链接中的相关信息,以了解我的意思.

let 关键字还定义了一个名为功能.

let negate x = x * -1 
let square x = x * x 
let print x = printfn "The number is: %d" x

let squareNegateThenPrint x = 
print (negate (square x)) 
Run Code Online (Sandbox Code Playgroud)

管道运算符 |> 用于将函数和参数链接在一起.双重反引号标识符便于提高可读性,尤其是在单元测试中:

let ``square, negate, then print`` x = 
    x |> square |> negate |> print
Run Code Online (Sandbox Code Playgroud)

组合运算符 >> 用于组合函数:

let squareNegateThenPrint' = 
    square >> negate >> print
Run Code Online (Sandbox Code Playgroud)

通过检查和在VS F#中进行交互的功能:

  1. squareNegateThenPrint x
  2. ``square,negate,then print''x
  3. squareNegateThenPrint"

看来这是完成同样事情的3种方法的清单,这里有什么细微差别吗?我相信,给定相同的int它们都会返回相同的int,但是超出它的范围呢?我没看到什么?这三种方法各有哪些优缺点?

2和3都使用"运算符",1似乎是组成函数的通常的"数学"方式,以便从旧函数中创建新函数.我怀疑选项3真正等效于1(在某种意义上,>>运算符被定义square >> …

f#

12
推荐指数
2
解决办法
645
查看次数

标签 统计

f# ×1