相关疑难解决方法(0)

我怎么能理解"(.).(.)"?

我相信我对fmap . fmapFunctors 了解,但是在功能方面它已经让我头疼了好几个月了.

我已经看到你可以只应用(.)to 的定义(.) . (.),但我忘了怎么做.
当我自己尝试时,它总是错误的:

(.) f g = \x -> f (g x)
(.) (.) (.) = \x -> (.) ((.) x)
\x f -> (.) ((.) x) f
\x f y  -> (((.)(f y)) x)
\x f y g-> (((.)(f y) g) x)
\x f y g-> ((f (g y)) x)
\x f y g-> ((f (g y)) x):: t2 -> (t1 -> t2 -> t) -> t3 …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming pointfree

33
推荐指数
3
解决办法
2141
查看次数

导出Haskell类型和(<*>)(<*>)的实现

我是一个刚开始学习Haskell的菜鸟,所以如果我问愚蠢的问题,请耐心等待.

最近我遇到了SO中的问题,演示了如何推导出函数和表达式的类型和实现(问题如

我怎么能理解"(.).(.)"?

&

Haskell函数组成,(.)(.)的类型以及它是如何呈现的 )

我发现答案非常鼓舞人心

然后,我尝试为自己做一些练习,以确保我知道如何应用这些技巧.

然后我自己想出这个表达:(<*>)(<*>)我不知道如何解决.

在GHCi中,它给出了类型签名:

(<*>)(<*>) :: Applicative f => (f (a -> b) -> f a) -> f (a -> b) -> f b
Run Code Online (Sandbox Code Playgroud)

但我的问题是我怎么能从这开始

(<*>) :: Applicative f => f (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

并导出GHCi给出的类型签名?

而且,基于类型签名,如何实现(<*>)(<*>) = ??呢?

我陷入困境,无法通过重新安排术语等技术来解决这个问题.我甚至都不知道从哪里开始.

有人会帮我一个忙吗?

非常感谢

注意**:表达式(<*>)(<*>)确实没有特殊意义,这只是我随机为自己做的一个练习

haskell types functional-programming

7
推荐指数
1
解决办法
174
查看次数

如何理解Haskell中的函数"(.)(.)"

我是Haskell的初学者,我遇到了函数(.)(.),我用它:t来获取GHCi中的类型:

:t (.)(.)
(.)(.) :: (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c
Run Code Online (Sandbox Code Playgroud)

如何理解(.)(.) :: (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c这里的类型?我很迷茫.

haskell types

6
推荐指数
1
解决办法
655
查看次数