แม้จะทนอ่านจนจบไม่ได้ แต่ก็ทำให้เริ่มเห็นภาพ 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, ฯลฯ
5 comments:
เทอมนี้ผมกำลังเรียน haskell พอดีเลยครับถ้ามีอะไรสงสัยจะได้ขอคำปรึกษา
ได้เลย
พี่จะได้บังคับตัวเองให้รู้ haskell เยอะยิ่งขึ้นด้วย
ลืมไป
codefest ปีหน้า
ว่าจะเสนอ project ที่ใช้ haskell ดูบ้าง
น่าสนครับพอดีตอนนี้อาจารย์ที่มหาลัยกำลังทำโปรแกรม แบบ WEKA นะครับแต่เปลี่ยนมาใช้ haskell ทำ engine ภายในทั้งหมด ของ WEKA รู้สึกว่าจะใช้ JAVA
ว้าวหัวข้อน่าสนุกดี
Post a Comment