Nattawut Phetmak
Jack of all Trades
จากตอนที่ผ่านมา จะเห็นว่าแบบ interactive นั้นไม่ต้องเขียน main = do
ขึ้นต้น นั่นเป็นเพราะว่าเมื่อเริ่ม ghci
เราจะเข้ามาอยู่ด้านในของ main
ที่ว่านั้นทันที ซึ่งการเขียน code ภายใน main
จะมีกฏที่ต่างออกไปเล็กน้อยด้วย
ความสะดวกอย่างอื่นๆ ของตัว interactive
:q
ที่ได้เจอไปแล้ว)อย่างไรก็ตาม ตัว interactive นั้นไม่รองรับการเขียนหลายบรรทัดเป็นค่าเริ่มต้น ถ้าต้องการเขียนหลายบรรทัด ให้เริ่มด้วย :{
และขึ้นบรรทัดใหม่ แล้วค่อยเริ่มส่วน code เรียบร้อยแล้วจบด้วยบรรทัดที่มีแต่ :}
ครับ
อนึ่ง เครื่องหมายหน้าบรรทัดที่บอกว่ากำลังอยู่ใน interactive จะเขียนว่า Prelude>
ซึ่งต่อไปเมื่อทำการ load module เยอะๆ แล้ว ข้อความตรงนี้จะเปลี่ยนไปบอกว่า load อะไรมาแล้วบ้าง (ซึ่งอาจจะยาวมาก) ดังนั้น ที่นี้จะใช้แค่ ghci>
แทน (สามารถ set ให้เป็นข้อความนี้ได้ด้วย :set prompt "ghci>"
ครับ)
ส่วนการเขียนโปรแกรมเก็บเป็นไฟล์นั้น นอกจากจะใช้ ghc
เพื่อ compile เป็น binary code ออกมาทดสอบแล้ว ยังมี runhaskell
ที่อ่านไฟล์แล้วรันให้ทันทีโดยไม่สร้างไฟล์พวก .o
, .hi
หรือตัว binary code ให้ แน่นอนว่ามันจะทำงานได้ช้ากว่าแบบ binary code เพราะไม่โดน optimize ด้วยตัว compiler และยังต้องแปลใหม่ทุกครั้งที่เรียกใช้ครับ
ก็เลือกใช้ ghci
, ghc
และ runhaskell
กันตามความเหมาะสมนะครับ
ด้านนามสกุลไฟล์นอกจาก .hs
แล้ว ก็มี .lhs
ซึ่งเป็นไฟล์ที่เน้นการเขียนโปรแกรมแบบเอกสาร แล้วแทรก code ตามจุดต่างๆ (literate programming) ตัวอย่างก็เช่น
Hello World Program
===================
This program simply says "Hello, world!" then exit.
> main = do
> putStrLn "Hello, world!"
โปรแกรมนี้จะแสดงผลลัพท์เช่นเดียวกับตอนที่แล้ว อย่างไรก็ตามส่วนที่อธิบายโปรแกรมนั้น ไม่ได้ส่งผลให้เกิดความแตกต่างของ binary code แต่อย่างใด
ส่วนการ comment source ใน Haskell แบบบรรทัดเดียวใช้ --
เพื่อ comment ข้อความจนจบบรรทัด และแบบหลายบรรทัดใช้ {-
กับ -}
ครอบส่วนที่ต้องการ comment
-- single line comment
{- multi
lines
comment -}