การใช้งาน Array ในภาษา Haskell แบบง่ายๆ
หากคุณมีประสบการณ์ในการเขียนโปรแกรมภาษาอื่นๆ คุณอาจรู้ดีว่า array หรือ "อาร์เรย์" นั้นเป็นหนึ่งในโครงสร้างข้อมูลประเภทพื้นฐานที่สำคัญที่สุดในการจัดเก็บและจัดการข้อมูลในลักษณะที่เป็นลำดับ ภาษา Haskell ซึ่งเป็นภาษาโปรแกรมแบบ functional programming ก็มีฟังก์ชั่นในการทำงานกับอาร์เรย์ที่ให้ความสามารถและความอเนกประสงค์สูงเช่นกัน
ตัวอย่างโค้ดที่ 1: การสร้างและเข้าถึง array
import Data.Array
-- สร้างอาร์เรย์โดยระบุขอบเขตและค่าของแต่ละสมาชิก
exampleArray :: Array Int Int
exampleArray = array (1, 3) [(1, 100), (2, 200), (3, 300)]
-- ฟังก์ชั่นในการเข้าถึงข้อมูลของอาร์เรย์
accessElement :: Int -> Maybe Int
accessElement i
| i < 1 || i > 3 = Nothing
| otherwise = Just (exampleArray ! i)
main :: IO ()
main = do
print $ accessElement 2 -- Output: Just 200
print $ accessElement 4 -- Output: Nothing
ในตัวอย่างข้างต้น, เราได้สร้างอาร์เรย์ที่มีขอบเขตตั้งแต่ 1 ถึง 3 และใส่ค่าเริ่มต้นให้กับแต่ละสมาชิกของอาร์เรย์ ส่วนฟังก์ชั่น `accessElement` จะช่วยตรวจสอบว่า index ที่เข้าถึงนั้นถูกต้องหรือไม่ แล้วคืนค่าจากอาร์เรย์ถ้าพบ หรือ `Nothing` ถ้า index นั้นไม่อยู่ในขอบเขต
ตัวอย่างโค้ดที่ 2: การทำ map กับ array
-- ฟังก์ชัน map ที่ทำงานบนอาร์เรย์
mapArray :: (Int -> Int) -> Array Int Int -> Array Int Int
mapArray f arr = array bounds [(i, f (arr ! i)) | i <- [fst bounds .. snd bounds]]
where bounds = bounds arr
main :: IO ()
main = do
let newArray = mapArray (*2) exampleArray
print newArray -- Output: array (1,3) [(1,200),(2,400),(3,600)]
ที่นี่เรามีฟังก์ชัน `mapArray` ซึ่งจะรับฟังก์ชันอีกอันหนึ่ง (`f`) และอาร์เรย์เพื่อสร้างอาร์เรย์ใหม่ที่มีค่าของแต่ละสมาชิกถูกดัดแปลงโดยฟังก์ชัน `f` นั่นเอง
ตัวอย่างโค้ดที่ 3: การพับ (fold) array
import Data.Array
import Data.Foldable (toList)
-- การใช้งาน foldl' (ซึ่งเป็นส่วนหนึ่งของ typeclass Foldable) บนอาร์เรย์
sumArray :: Array Int Int -> Int
sumArray arr = foldl' (+) 0 (toList arr)
main :: IO ()
main = do
print $ sumArray exampleArray -- Output: 600
ในตัวอย่างนี้ `sumArray` ใช้ `foldl'` จาก `Data.Foldable` ร่วมกับ `toList` เพื่อพับอาร์เรย์โดยการรวมค่าของสมาชิกทั้งหมดเข้าด้วยกัน
Usecase ทางโลกจริง:
ในการจัดการกับข้อมูลทางสถิติหรือการเงิน เราอาจมีการใช้อาร์เรย์สำหรับเก็บข้อมูลรายได้ขายประจำวันของบริษัท โดยในความเป็นจริง, Haskell มักถูกใช้งานในระบบที่ต้องการความถูกต้องสูง และการทำงานกับอาร์เรย์ใน Haskell ก็สามารถรับประกันถึงความถูกต้องในข้อมูลและการประมวลผลที่เชื่อถือได้
แน่นอนว่าการเรียนรู้ Haskell และการทำงานกับ array ใน Haskell สามารถเปิดประตูสู่โลกของ functional programming ที่แตกต่างจากภาษาการเขียนโปรแกรมแบบจำลองอื่นๆ หากคุณสนใจ ที่ EPT เรามีหลักสูตรที่จะนำคุณเข้าสู่โลกของภาษาการเขียนโปรแกรมฟังก์ชันที่ไม่เพียงแต่จะช่วยเพิ่มทักษะทางด้าน IT ของคุณเท่านั้น แต่ยังช่วยเสริมสร้างความคิดอย่างเป็นระบบและวิเคราะห์ปัญหาได้อย่างลึกซึ้งอีกด้วย
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: haskell array functional_programming data.array map_function fold_function data.foldable programming code_example usage real-world_usecase
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM