Calculator

ตัวเลขใน Haskell ก็เหมือนภาษาอื่น ที่แบ่งออกหลักๆ เป็นจำนวนเต็มกับทศนิยม

โดยการประกาศทศนิยม จะมีข้อบังคับว่า หน้าและหลังจุดทศนิยมต้องมีตัวเลขเสมอ (แม้จะเป็น 0 ก็ตาม)

    ghci> 1
    ghci> 2.0
    ghci> 0.5

การดำเนินการบวกลบคูณหาร ก็ใช้ operator +, -, *, / เช่นเดียวกับภาษาอื่นๆ

    ghci> 1.0 + 2.0
    3.0
    ghci> 2 - 0.5
    1.5
    ghci> 6 * 7
    42
    ghci> 10 / 2
    5.0

สังเกตว่าการหารจะให้ผลลัพท์เป็นทศนิยมเสมอ ส่วนการหารแบบไม่เก็บเศษ (ให้ผลลัพท์เป็นจำนวนเต็ม) จะใช้ฟังก์ชัน div แทน

    ghci> div 10 2
    5

จะเห็นว่า การเรียกฟังก์ชั่นใน Haskell ไม่ใช้วงเล็บล้อมรอบตัวแปรเหมือนภาษาอื่นๆ

ส่วนถ้ารู้สึกไม่สะดวกที่จะเขียนอย่างข้างบน ก็สามารถใช้ grave accent (`) ล้อมรอบชื่อฟังก์ชัน เพื่อให้มันทำงานเป็น infix แบบเดียวกับ operator พวกนั้นได้ (จะใช้ได้ก็ต่อเมื่อเป็นฟังก์ชันที่รับตัวแปร 2 ตัวเท่านั้น)

    ghci> 10 `div` 2
    5

ข้อแตกต่างอีกอย่างจาก / คือ div จะรับตัวแปรทั้ง 2 ตัวเป็นจำนวนเต็มเท่านั้น

และเมื่อต้องการหารเก็บเศษ ก็ใช้ฟังก์ชัน mod นั่นเอง

    ghci> 10 `mod` 2
    0

ส่วนการยกกำลังก็เช่นเดียวกับการหาร คือมี operator 2 แบบให้เลือกใช้

    ghci> 2 ^ 10
    1024
    ghci> 2 ** 10
    1024.0

ท้ายนี้ ถึงแม้ว่า Haskell จะไม่ใช้วงเล็บเพื่อส่งตัวแปรให้ฟังก์ชัน แต่วงเล็บก็สามารถใช้เพื่อบอกกลุ่มของตัวแปรได้เช่นเดียวกับภาษาทั่วไปครับ

    ghci> (3 + 7 `div` 4) ^ 5
    1024

หรือถ้ากลัวงง ก็สามารถประกาศค่าเหล่านั้นเป็นตัวแปร (ค่าคงที่) ได้โดยใช้คำสั่ง let

    ghci> let x = 7 `div` 4
    ghci> let y = 3 + x
    ghci> y ^ 5
    1024

ย้ำอีกครั้งว่า Haskell เป็นภาษา purely functional เพราะฉะนั้นจะไม่มี operator แบบ assignment (เช่น +=) สำหรับเปลี่ยนแปลงค่าของตัวแปรเหล่านั้นนะครับ

Nattawut Phetmak

Jack of all Trades

blog comments powered by Disqus