我在我的一個演講中遇到了一個練習,這讓我對[2,2,2]的輸出感到困惑。爲什麼當輸入[2,2 .. 2]時,它會生成一個帶有2的「無限」列表。Haskell範圍表示法生成列表。意外的輸出
我理解符號的方式是第一個元素是開始邊界,第二個是數字之間的「間隙」,最後一個是列表的結束,換言之,當達到該數字時停止。
如果我的推理是正確的,爲什麼表達式[2,2,2]不輸出[2]?。
我認爲Haskell可能會這樣評價它;
- 當打印的 列表中的第一個元素它等於最後 ,因此停止。或者,如果第一個元素沒有針對「外部」邊界進行檢查,那麼輸出將是[2,2],因爲當向前一個數字加上零(在出現開始邊界2的情況下)時,我們將達到結束,因此停止。
我顯然不正確理解符號的運作,它是如何哈斯克爾計算表達式?
@Robert哈維時,我很好奇,爲什麼你恢復的標籤。這種符號更好地被稱爲範圍符號,而`dot-dot-notation`是一個新的標籤。我可以看到重新添加`dot-dot-notation`標籤的可能推理,但我不明白爲什麼要刪除`range`標籤。 – luqui 2011-02-16 04:48:26
@luqui:`range`可以表示任何東西。我將標籤更改爲`range-notation`並添加了標籤wiki。 – 2011-02-16 05:24:03