main = do
ขึ้นต้น นั่นเป็นเพราะว่าเมื่อเริ่ม ghci
เราจะเข้ามาอยู่ด้านในของ main
ที่ว่านั้นทันที ซึ่งการเขียน code ภายใน main
จะมีกฏที่ต่างออกไปเล็กน้อยด้วยความสะดวกอย่างอื่นๆ ของตัว interactive
- แสดงผลลัพท์จากคำสั่งที่พิมพ์เข้าไปทันที (read-eval-print-loop)
- ทำ keyword completion ด้วย tab
- macro สำหรับการ debug โดยใช้เครื่องหมาย colon ตามด้วย command (เช่น
:q
ที่ได้เจอไปแล้ว)
:{
และขึ้นบรรทัดใหม่ แล้วค่อยเริ่มส่วน 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) ตัวอย่างก็เช่นโปรแกรมนี้จะแสดงผลลัพท์เช่นเดียวกับตอนที่แล้ว อย่างไรก็ตามส่วนที่อธิบายโปรแกรมนั้น ไม่ได้ส่งผลให้เกิดความแตกต่างของ binary code แต่อย่างใด
ส่วนการ comment source ใน Haskell แบบบรรทัดเดียวใช้
--
เพื่อ comment ข้อความจนจบบรรทัด และแบบหลายบรรทัดใช้ {-
กับ -}
ครอบส่วนที่ต้องการ commentในที่นี้จะไม่ใช้ comment ให้ดู เนื่องจากตัว syntax highlighter ไม่ระบายสีให้ครับ :P
: ตามด้วยคำสั่งเหมือน vi เลยแฮะ
ReplyDelete