Haskell'i yeni öğrenmeye başladım ve garip bir şey buldum.Haskell'de aralıkları kullanırken harita neden ek bir öğe döndürüyor?
ghci> [0,2..5]
[0,2,4]
Bu 3 unsur vardır:
Let bir liste var. Bu liste ile map
kullandığınızda ben örneğin, çıktı olarak 3 elementi olsun:
ghci> map (+ 1) [0,2..5]
[1,3,5]
ghci> map (* 2) [0,2..5]
[0,4,8]
ghci> map (`div` 2) [0,2..5]
[0,1,2]
Ama fraksiyonel bölünme kullandığımda çıkış listesinde 4 öğelerini almak:
ghci> map (/ 2) [0,2..5]
[0.0,1.0,2.0,3.0]
ghci> length (map (/ 2) [0,2..5])
4
nedenini açıklayabilir misiniz map
daha fazla elementi döndürebilir mi?
Teşekkür ederiz!
İlgili: http://stackoverflow.com/q/7290438/2541573 – Jubobs
Not: 'length (map f xs) == uzunluk (map f 'xs')' her uzunluk xs == uzunluk xs 'için . Bu *, * türünden türediği için "map" uygulamasının bağımsız olarak doğru olması gerekir. 'map' farklı tipler arasında ayrım yapamaz ve dolayısıyla kaç elemanın geri döneceğine karar vermiştir. – Bakuriu