gpt4 book ai didi

purescript - 翻转功能有什么作用?

转载 作者:行者123 更新时间:2023-12-02 20:41:25 24 4
gpt4 key购买 nike

我是 purescript 的新手。这本书Leanpub-purescript我正在其中学习。我不明白什么是翻转功能。这类似于交换概念吗?

> :type flip
forall a b c. (a -> b -> c) -> b -> a -> c

这意味着a值转移到b,然后b转移到a,然后c就是它本身??。我对此感到震惊。请解释一下翻转的概念,如果我引用的书不好,请推荐一些其他 Material

最佳答案

flip 函数反转双参数函数的参数顺序。考虑一个简单的函数:

subtract :: Int -> Int -> Int
subtract a b = a - b

subtract 4 3
-- 4 - 3 = 1

如果在 subtract 函数上调用 flip,它会更改要减去的数字:

(flip subtract) 4 3
-- 3 - 4 = -1

它还适用于不同参数类型的函数:

showIntAndString :: Int -> String -> String
showIntAndString int string = (show int) <> string

showIntAndString 4 "asdf"
-- "4asdf"

(flip showIntAndString) "asdf" 4
-- "4asdf"

如果它对您来说更有意义,请尝试将 Flip 视为一个函数,它接受双参数函数作为参数并返回另一个双参数函数作为结果:

flip :: forall a b c.
(a -> b -> c) -- takes a function
-> (b -> a -> c) -- returns a function with flipped arguments

flip 的用例之一是当您想要部分应用某个函数,但您想要部分应用的参数位于第二位时。然后,您可以翻转原始函数,并部分应用结果函数。

关于purescript - 翻转功能有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46010172/

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