有人可以爲我提供一個易於理解的解釋方法守護方程式,因爲它在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. 什麼是守衛方法/類?
- 6. typescript守衛在方法聲明
- 7. 在Haskell中,處理守衛時where子句的範圍是什麼?
- 8. C中的守衛功能調用
- 9. 瞭解Elixir中的守衛子句
- 10. 代碼守衛失敗
- 11. 計劃中的「包括守衛」的推薦模式?
- 12. 在哈斯克爾中分解守衛
- 13. 更大的項目的標題守衛
- 14. Haskell衛兵如何評估?
- 15. 創建新的守衛子句
- 16. 用戶角色的AngularFire2路由守衛
- 17. Elixir守衛一個特定的協議
- 18. 守衛運行我的規格兩次
- 19. 紅寶石寶石衛隊在Ubuntu上,沒有「守衛」命令
- 20. 我可以在Haskell的警衛內部使用警衛嗎
- 21. (WIN32)使用標題守衛崩潰我的程序
- 22. Haskell守護lambda函數?
- 23. 如何使用LESS CSS isurl守衛?
- 24. 守衛和匿名函數列表
- 25. 試圖讓守衛塊工作
- 26. 自動插入校驗和守衛
- 27. vue.js:路由守衛等待異步值
- 28. 什麼時候守衛表情適當?
- 29. 守衛不知道文件更改
- 30. 雨燕 「守衛讓」 解包失敗
所以,就像執行一個函數的條件那樣......並且根據條件,它只會在條件爲真時執行那個函數,並且所有以前的條件都是錯誤的?對? – 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