Sam*_*Sam 2 f# functional-programming
鉴于一般功能 f:a->b->c
我想创建一个函数,它执行与f相同的事情/计算,但是交换了两个输入参数(或currying命令)的顺序.
所以寻找完全相同的计算g:b->a->c
在哪里g
f
==
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)
就是这样.