相关疑难解决方法(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函数的类型?

我偶然发现了很多练习,它们会给你一个功能,并要求你推断出每个练习的类型.

我有以下示例.请注意,这不是我需要完成的功课.我有这个具体例子的答案,并在下面提供.也许有人可以帮助我学习如何推理这种练习.

功能:

h1 f g x y = f (g x y) x
Run Code Online (Sandbox Code Playgroud)

假设的类型:

h1 :: (a -> b -> c) -> (b -> d -> a) -> b -> d -> c
Run Code Online (Sandbox Code Playgroud)

谢谢!


我加了27次演习在这里 没有解决方案.

其中一些有解决方案包括在这里.但是,可以使用GHCi命令知道类型:t

haskell functional-programming

17
推荐指数
3
解决办法
6147
查看次数

如何手动推断'(.)的类型.(.).(.)"?

在Edward Kmett的演讲中,Lenses,Folds和Traversals,在幻灯片"The Power is the Dot"中,他展示的(.) . (.) . (.)

(a -> b) -> (c -> d -> e -> a) -> c -> d -> e -> b

我可以通过在GHCI中显示它的类型来看到它.但我也想知道原因.我想了解的另一件事是为什么有在从参数中经常换着花样(.)(.) . (.)(.) . (.) . (.):

(.)             :: (a -> b) -> (c ->           a) -> c ->           b
(.) . (.)       :: (a -> b) -> (c -> d ->      a) -> c -> d ->      b
(.) . …
Run Code Online (Sandbox Code Playgroud)

haskell types type-inference combinators function-composition

6
推荐指数
2
解决办法
215
查看次数