有人可以为我提供一个易于理解的解释方法守护方程式,因为它在Haskell中使用及其数学意义?Haskell中的守卫方程式
10
A
回答
10
哈斯克尔卫兵可以被看作是一个数学函数分段定义输入。
foo x | x < 0 = bar
| x < 5 = baz
| x < 20 = quux
| otherwise = quaffle
将由数学家喜欢这样写:
foo(x) = { bar, if x < 0
baz, if x >= 0 && x < 5
quux, if x >= 5 && x < 20
quaffle, if x >= 20
每一个Haskell功能的卫兵隐含携带所有它前面的警卫的否定,因为他们之后尝试一个其他。
Haskell选择在等号的左边写保护,使其更容易遵循控制流程。如果您选择阅读|作为'那样',那么它变得相当直观。
4
守护方程是一个piecewise function的Haskell等价构造。
8
守护方程是一个方程(关于相等的陈述),其涉及所谓的个案区分。一个例子是:
fac :: Integer -> Integer
fac n | n > 0 = n * fac (n - 1)
| otherwise = 1
这是factorial function的定义。数学家会写,
0!根据定义,= 1。对于所有值n大于,n!可以根据(n - 1)来定义!。 0的情况并非如此!。这就是需要区分两种情况的原因。这就是守卫方程式所做的。
相关问题
- 1. 模式守卫和让
- 2. 什么是在emacs中运行守卫的最佳方式
- 3. 为什么不是一个除了模式守卫的谓词守卫?
- 4. 范围守卫在C中
- 5. typescript守卫在方法声明
- 6. 什么是守卫方法/类?
- 7. 在Haskell中,处理守卫时where子句的范围是什么?
- 8. 计划中的“包括守卫”的推荐模式?
- 9. 在哈斯克尔中分解守卫
- 10. Haskell守护lambda函数?
- 11. Lesscss与守卫混合。语法错误
- 12. 试图让守卫块工作
- 13. vue.js:路由守卫等待异步值
- 14. 如何使用LESS CSS isurl守卫?
- 15. 雨燕 “守卫让” 解包失败
- 16. 自动插入校验和守卫
- 17. 什么时候守卫表情适当?
- 18. 守卫开始然后退出?
- 19. 当守卫在模式匹配中使用分组模式时,F#倍数
- 20. 模式匹配比守卫更高性能吗?
- 21. 警告模式守卫并非详尽无遗,即使它是
- 22. 我如何为守卫编写自定义通知程序?
- 23. 以编程方式在linux中启动GPSD守护进程
- 24. 我可以依靠标准报头中的包含守卫
- 25. 为什么在一个模式守卫中使用可变性借款?
- 26. 在我的monadic随机实现(haskell)中很慢的警卫
- 27. 在Angular 2应用程序中为所有路线使用基地守卫
- 28. 头部守卫难题 - 已经在.obj问题中定义了
- 29. 在haskell中使用警卫时的多个条件
- 30. Haskell中的求和 - 函数式编程
所以,就像执行一个函数的条件那样......并且根据条件,它只会在条件为真时执行那个函数,并且所有以前的条件都是错误的?对? – 2010-02-08 22:35:20
“quaffle”...对我来说这是一个新的:D – 2010-02-09 06:00:36
我读了“|” as“when”:'foo x,当x <0时,= bar ...当x <5,= baz'等等。不要与'when'混淆。 – Nefrubyr 2010-02-09 11:45:33