我剛剛發現了一些我在F#中稱爲怪癖的東西,並且想知道它是通過設計還是錯誤,以及它是否是通過設計,爲什麼如此。 .. 如果您編寫任何範圍表達式,其中第一項大於第二項,則返回的序列爲空。看反射鏡表明這是設計,但我無法真正找到它必須如此的理由。 一個例子重現它是:範圍A到B,其中A> B在F#
[1..10] |> List.length
[10..1] |> List.length
第一個將打印出10,而第二打印出0 試驗是在F#CTP 1.9.6.2製成。
編輯:謝謝你建議說明範圍,但仍然有一個案例(這是什麼啓發我問這個問題),這將不會被覆蓋。如果A和B是變量,而且沒有一個比其他變量總是大,但是它們總是不同的呢? 考慮到範圍表達式似乎在編譯時無論如何都得到了優化,那麼在A和B是否允許負步驟的情況下,確定步驟(未明確指定)的代碼是否有很好的理由?
與一些可能感興趣的代碼稍有關聯的問題http://stackoverflow.com/questions/377078/f-floating-point-ranges-are-experimental-and-may-be-deprecated – Benjol 2009-05-19 07:37:10