Sam*_*Sam 2 f# functional-programming
鉴于一般功能 f:a->b->c
我想创建一个函数,它执行与f相同的事情/计算,但是交换了两个输入参数(或currying命令)的顺序.
所以寻找完全相同的计算g:b->a->c在哪里gf
==
let transform1 (f:a->b->c) : (b->a->c) =
?
Run Code Online (Sandbox Code Playgroud)
您实际上可以从函数的类型告诉如何执行此操作.
transform1具有类型(a -> b -> c) -> (b -> a -> c)或等效地(a -> b -> c) -> b -> a -> c.
所以你要找的是一个需要的功能
a -> b -> c我们称之为的功能f,b,a,f与a和b,以产生一个c.由于只有"用"的一种方式f与a和b产生一个c你写的一路下滑:
flip f b a = f a b
Run Code Online (Sandbox Code Playgroud)
就是这样.