gpt4 book ai didi

f# - 创建元组 pointfree

转载 作者:行者123 更新时间:2023-12-02 06:52:51 26 4
gpt4 key购买 nike

下面的函数createTuple可以表示为pointfree吗?

let createTuple = fun v -> (v, v*2)

createTuple 2 |> printfn "%A" // (2,4)

最佳答案

F# 库没有提供很多用于以无点样式编写代码的函数(主要是因为它不是编写 F# 的特别惯用的方式),因此您不能仅使用什么来编写 createTuple 函数在核心库中可用。

如果您真的想这样做,您可以定义几个辅助组合器来处理元组:

/// Duplicates any given value & returns a tuple with two copies of it
let dup a = a, a
/// Transforms the first element using given function
let mapFst f (a, b) = (f a, b)
/// Transforms the second element (not needed here, but adding for symmetry)
let mapSnd f (a, b) = (a, f b)

有了这些,您可以以无点方式实现您的功能:

let createTuple = dup >> mapSnd ((*) 2)

这与您的函数做同样的事情。我认为要破译这里发生的事情要困难得多,而且我永远不会真正编写该代码,但这是另一个问题:-)。

关于f# - 创建元组 pointfree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39230520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com