有g = (. not)。
函数最一般的类型g是
g :: (Bool -> a) -> Bool -> a
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何考虑构图(.)功能。
为什么不 h :: (a -> Bool) -> a -> Bool呢?
g = (. not)
Run Code Online (Sandbox Code Playgroud)
根据本节的定义,等同于
g = \f -> f . not
Run Code Online (Sandbox Code Playgroud)
或者
g f = f . not
Run Code Online (Sandbox Code Playgroud)
由于f将的输出not作为输入,因此它必须接受布尔值作为输入,因此它必须具有type Bool -> something。
由此,我认为您可以弄清楚其余的内容。
请注意,这与将段写为(或作为lambda表示为)(. not)非常不同。我认为您的困惑源于此。(.) not(not .)\f -> not . f