Monday, July 03, 2006

เริ่มเห็นภาพ Monads

วันนี้อ่านเจอ Tutorial ที่พูดถึง IO ของ haskell (ที่เต็มไปด้วย Monads)
แม้จะทนอ่านจนจบไม่ได้ แต่ก็ทำให้เริ่มเห็นภาพ Monads มากยิ่งขึ้น
เริ่มรู้แล้วว่า เหตุผลที่ต้องมี monad ก็เพราะ
  • Haskell is a pure language, which means that the result of any function call is fully determined by its arguments.
    ตามกฎนี้ เราไม่สามารถเขียน function พวก rand() หรือ getchar() ได้
    เพราะกฎของ haskell จะบังคับไว้ว่า ถ้า argument เหมือนเดิม (กรณีนี้คือ void)
    return ที่ได้ ต้องเหมือนกันทุกครั้ง
  • Haskell functions can't have side effects, which means that they can't effect any changes to the "real world"
    ถ้าตามกฎนี้ haskell จะไม่สามารถเปลี่ยนแปลง file content ภายนอก
    หรือไม่สามารถ writing to screen, ฯลฯ

Related link from Roti

5 comments:

Prach Pongpanich said...

เทอมนี้ผมกำลังเรียน haskell พอดีเลยครับถ้ามีอะไรสงสัยจะได้ขอคำปรึกษา

PPhetra said...

ได้เลย
พี่จะได้บังคับตัวเองให้รู้ haskell เยอะยิ่งขึ้นด้วย

PPhetra said...

ลืมไป
codefest ปีหน้า
ว่าจะเสนอ project ที่ใช้ haskell ดูบ้าง

Prach Pongpanich said...

น่าสนครับพอดีตอนนี้อาจารย์ที่มหาลัยกำลังทำโปรแกรม แบบ WEKA นะครับแต่เปลี่ยนมาใช้ haskell ทำ engine ภายในทั้งหมด ของ WEKA รู้สึกว่าจะใช้ JAVA

PPhetra said...

ว้าวหัวข้อน่าสนุกดี