我這輩子第三次想學習哈斯克爾,這次是通過Learn you a Haskell...。
當筆者說明了警衛,他顯示了這個例子:哪個感官警衛比命令更好 - 如果? (哈斯克爾新手)
bmiTell :: (RealFloat a) => a -> String
bmiTell bmi
| bmi <= 18.5 = "You're underweight, you emo, you!"
| bmi <= 25.0 = "You're supposedly normal. Pffft, I bet you're ugly!"
| bmi <= 30.0 = "You're fat! Lose some weight, fatty!"
| otherwise = "You're a whale, congratulations!"
,並說
這很容易讓人想起在命令式語言一個大的if else樹,僅此是遠遠更好,更可讀。雖然大樹如果通常被人忽視,有時候問題會以這樣一種離散的方式來定義,以至於無法繞過它們。衛兵是一個非常好的選擇。
我可以看到警衛更具可讀性,但我不明白爲什麼這句法是「更好」
更靈活?它更強大?警衛的最大優勢是什麼?
我的大問題,它可能是句子
得到這樣的分立方式定義雖然很大,如果其他的樹木,通常令人難以接受的,有時一個問題是,你不能身邊
任何人都可以舉一個例子嗎?
除了更可讀的警衛不添加任何東西。 –
@KarolisJuodelė:他們增加了一些東西:模式守衛,這不能用簡單的'if''然後''else'來完成 - 也不能用''''''''但是隻有兩者的組合。 – leftaroundabout