Haskell>.>符号

HHC*_*HHC 4 syntax haskell operators notation

在"函数编程的工艺"一书中,符号'>.>'将函数连接在一起,与'.'的方向相反.但是当我使用ghci实现它时,它显示错误'>.>'超出范围.为什么?这是一个不再使用的旧记谱法吗?

Pra*_*eek 7

>.> 默认情况下未定义,但您可以自己定义:

infixl 9  >.>
(>.>) = flip (.)
Run Code Online (Sandbox Code Playgroud)

或等效地,

infixl 9  >.>
f >.> g = g . f
Run Code Online (Sandbox Code Playgroud)

(我给基础上,固定性声明infixr 9 .前奏.)


ken*_*ytm 6

它可能只是本书定义的一个函数(我没有读过这本书).AFAIK,>.>不在任何地方使用.您可以自己定义:

(>.>) = flip (.)
Run Code Online (Sandbox Code Playgroud)

这似乎是事实上的符号(#).

因为功能是 箭头 您也可以使用"Control.Category">>>,例如

Prelude Control.Category> ((*2) . (+1)) 4
10
Prelude Control.Category> ((*2) <<< (+1)) 4
10
Prelude Control.Category> ((*2) >>> (+1)) 4
9
Prelude Control.Category> ((+1) >>> (*2)) 4
10
Run Code Online (Sandbox Code Playgroud)