Function haskell翻转模拟问题

Function haskell翻转模拟问题,function,haskell,flip,Function,Haskell,Flip,我想问一下,在上面的flip'函数中,似乎flip'将返回一个名为g的函数,并且gxy与fyx共享相同的值 然而,在“where gxy=fyx”中,fyx是一个函数调用,将返回一个值,gxy也将返回一个值,所以“where v2=v1”有意义吗 我知道代码会起作用,但我想知道更多关于它实现这一点的方式 有人有主意吗?非常感谢您在中,其中gxy=fyx,gxy不是带有参数x和y的函数调用。它是函数g的声明,作为一个函数,使用两个参数x和y并计算fyx 因此它意味着flip'给定一个函数f,取两个

我想问一下,在上面的flip'函数中,似乎flip'将返回一个名为g的函数,并且gxy与fyx共享相同的值

然而,在“where gxy=fyx”中,fyx是一个函数调用,将返回一个值,gxy也将返回一个值,所以“where v2=v1”有意义吗

我知道代码会起作用,但我想知道更多关于它实现这一点的方式


有人有主意吗?非常感谢您

中,其中gxy=fyx
gxy
不是带有参数
x
y
的函数调用。它是函数
g
的声明,作为一个函数,使用两个参数
x
y
并计算
fyx


因此它意味着
flip'
给定一个函数
f
,取两个参数将计算为
g
g
本身被定义为交换两个参数以调用
f

中,其中gxy=fyx
gxy
不是带有参数
x
y
的函数调用
g
。它是函数
g
的声明,作为一个函数,使用两个参数
x
y
并计算
fyx


因此它意味着
flip'
给定一个函数
f
,取两个参数将计算为
g
g
本身被定义为交换两个参数以调用
f

如果“其中gxy=fyx”表示g的函数定义,那么,下面的代码为什么会起作用?flip':(a->b->c)->b->a->c flip'fyx=fxy因为“fxy”是一个值,但返回类型应该是一个函数我不明白为什么有人会这样定义它,而不是
flip'f=\xy->fyx
(如果你想超级清晰)。如果“其中gxy=fyx”意味着g的函数定义,那么,为什么下面的代码可以工作?flip':(a->b->c)->b->a->c flip'fyx=fxy,因为“fxy”是一个值,但返回类型应该是一个函数。我不明白为什么有人会这样定义它,而不是
flip'f=\xy->fyx
(如果你想非常清楚的话)。谢谢你的帮助。但是这个代码翻转如何?:(a->b->c)->b->a->c翻转fyx=fxy,因为“fxy”是一个值,但返回类型应该是afunction@user3129535您不应将
=
视为作业。这是一个定义
flip fyx=fxy
类似于:
def flip(f,y,x):以命令式语言返回f(x,y)
=
的右侧是表达式,而左侧是函数的
flip
参数的声明。@user3129535与此不同。在这种情况下,
flip':(a->b->c)->b->a->c
获取一个函数
(a->b->c)
,一个值
b
和一个值
a
返回一个值
c
。在你的问题中,你说的是一个函数接受一个函数
(a->b->c)
,然后返回一个函数
(b->a->c)
@Bakuriu谢谢,我明白你的意思了。但它仍然让我困惑,因为fxy是一个表达式,所以它在求值后会变成一个值,所以返回类型是一个值,这与signature@user3129535没有赋值这样的东西,所以是的,你可以把它看作是一个可以不带参数计算的函数,也就是常数,别名,等等…谢谢你的帮助。但是这个代码翻转如何?:(a->b->c)->b->a->c翻转fyx=fxy,因为“fxy”是一个值,但返回类型应该是afunction@user3129535您不应将
=
视为作业。这是一个定义
flip fyx=fxy
类似于:
def flip(f,y,x):以命令式语言返回f(x,y)
=
的右侧是表达式,而左侧是函数的
flip
参数的声明。@user3129535与此不同。在这种情况下,
flip':(a->b->c)->b->a->c
获取一个函数
(a->b->c)
,一个值
b
和一个值
a
返回一个值
c
。在你的问题中,你说的是一个函数接受一个函数
(a->b->c)
,然后返回一个函数
(b->a->c)
@Bakuriu谢谢,我明白你的意思了。但它仍然让我困惑,因为fxy是一个表达式,所以它在求值后会变成一个值,所以返回类型是一个值,这与signature@user3129535没有赋值这样的东西,所以是的,你可以把它看作一个函数,可以不带参数,也就是常数,别名,等等进行计算。。。
flip' :: (a -> b -> c) -> (b -> a -> c)   
flip' f = g   
    where g x y = f y x