在这本书中符号“功能编程的工艺”“>。>”连接功能结合在一起,方向相反的方向“”。但是当我使用ghci实现它时,它显示错误'>。>'超出了范围。为什么?这是一个旧的记号,不再使用吗?的Haskell>符号
回答
这可能只是经书定义的函数(我没读过书)。 AFAIK,>.>
不在任何地方使用。你可以自己定义:
(>.>) = flip (.)
这样做的事实上的符号似乎是(#)
。
由于函数是箭头"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
>.>
没有默认定义,但你可以自己定义:(我给基于Prelude的infixr 9 .
固定性声明)
infixl 9 >.>
(>.>) = flip (.)
或者等价地,
infixl 9 >.>
f >.> g = g . f
:
此外,还可以当然,总自己定义这样一个操作符:
(>.>) :: (a -> b) -> (b -> c) -> (a -> c) f >.> g = g . f
然后就可以写'(F>>克)X =克(FX)'或'(>>)FGX = G(FX)' – 2011-12-28 20:40:41
(>.>)
不会出现在标准库中定义。然而,在Control.Category
(>>>)
,它的行为是一样的:
Prelude> :m + Control.Category
Prelude Control.Category> :i (>>>)
(>>>) :: Category cat => cat a b -> cat b c -> cat a c
-- Defined in Control.Category
infixr 1 >>>
Prelude Control.Category> let f = (* 2) >>> (+ 3)
Prelude Control.Category> f 5
13
注意,您可以使用Hoogle这些事情弄清楚。也直接
Main*> ((* 2) >.> (+ 3)) 5
13
[Hoogle不是寻找>>>使用功能实例化非常有帮助的(http://www.haskell.org/hoogle/?hoogle=%28a+-%3E+b %29 + - %3E +%28b + - %3E + c%29 + - %3E +%28a + - %3E + c%29):( – 2011-12-28 20:42:54
- 1. Coq中字符的单引号符号?
- 2. 符号内的Flash CS4/AS3符号
- 3. 的QVariant符号/无符号比较
- 4. Common Lisp中的无符号符号
- 5. 的Javascript无符号短符号短
- 6. RSpec的 - 模拟符号符号参数
- 7. HTML符号以下符号
- 8. 括号中的运算符符号的括号
- 9. 的符号
- 10. strcmp()和有符号/无符号字符
- 11. BigDecimal符号/括号
- 12. 符号化的字符串
- 13. (+)符号
- 14. 符号
- 15. 符号
- 16. 我怎么能做出符号的字符像无符号
- 17. Java中的符号
- 18. &符号的问题
- 19. htaccess中的'+'符号
- 20. 的JRuby - 从符号
- 21. 额外的符号
- 22. restructuredText中的符号
- 23. 的COleDateTime ambigous符号
- 24. 重复的符号
- 25. 符号的Android Keycodes
- 26. matlab的phi符号
- 27. 重复的符号
- 28. Objective-C的符号** + -
- 29. L \字符符号?
- 30. C++ 11类型(有符号+无符号)?
感谢您给我们简单明确的答案。但是我只是不明白,书中有这样的记号,它没有在书中定义它,它使用它就像一个标准的符号。该>>甚至在书的索引,并在所有不同的Haskell运营商的图形....... – HHC 2011-12-28 12:42:23
@HHC:我不知道。你要问笔者... – kennytm 2011-12-28 13:54:39