在 Haskell 中编写函数

Writing a function in Haskell

我想为 co::(b -> c) -> (a -> b) -> a -> c 编写一个函数。有人可以就如何为 co :: (b -> c) -> (a -> b) -> a -> c

编写 Haskell 函数提供一个清晰而简单的解释吗

我正在完成 Haskell 从第一原则开始编程的第 5 章练习(给定类型,编写函数),问题如下:

只有一个版本会进行类型检查:

co :: (b -> c) -> (a -> b) -> a -> c 
co = undefined

我不知道如何开始这个问题

I am not sure how to start this problem

是这样的:

co :: (b -> c) -> (a -> b) -> a -> c 
co       = undefined
co f     = undefined  -- f ::      b -> c    co f :: (a -> b) -> a -> c 
co f g   = undefined  -- g :: a -> b         co f g ::           a -> c
co f g a = c          -- a :: a              co f g a ::              c
  where               -- c ::           c
  c = undefined

这就是我们可以迈出的第一步。现在,
什么可以为我们产生一个cf 可以:

  c = f b             -- f ::      b -> c
  b = undefined

这是另一个步骤。但是现在我们需要一个 b.
什么可以为我们产生一个bg 可以:

  b = g a             -- g :: a -> b

我们能在什么地方找到 a 吗?我们需要吗?

另请参阅:Defining a function that satisfies a type in Haskell