1
เมื่อค้นหาองค์ประกอบสุดท้าย แต่รายการที่สองทำไมจึงใช้ 'last` เร็วที่สุดในกลุ่มเหล่านี้
มี 3 ฟังก์ชั่นที่ระบุด้านล่างซึ่งค้นหาองค์ประกอบสุดท้าย แต่ที่สองในรายการ คนที่ใช้last . initดูเหมือนเร็วกว่าที่เหลือ ฉันดูเหมือนจะไม่เข้าใจว่าทำไม สำหรับการทดสอบฉันใช้รายการอินพุต[1..100000000](100 ล้าน) อันสุดท้ายวิ่งเกือบจะทันทีในขณะที่คนอื่นใช้เวลาหลายวินาที -- slow myButLast :: [a] -> a myButLast [x, y] = x myButLast (x : xs) = myButLast xs myButLast _ = error "List too short" -- decent myButLast' :: [a] -> a myButLast' = (!! 1) . reverse …
10
haskell