Previous Up Next

Chapter 1  ¤Ï¤¸¤á¤Ë

1.1  ´Ø¿ô·¿¸À¸ì ML ¤È Objective Caml¤Ë¤Ä¤¤¤Æ

¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì ML ¤Ï¸µ¡¹¡¤Edinburgh LCF ¤È¤¤¤¦¡¤·×»»µ¡¤Ë¤è¤ë¾ÚÌÀµ­ ½Ò¥·¥¹¥Æ¥à¤Î¤¿¤á¤Ë³«È¯¤µ¤ì¤Æ¤­¤¿¡¥¾ÚÌÀµ­½Ò¥·¥¹¥Æ¥à¤Ç¤Ï¡¤¾ÚÌÀ¤½¤Î¤â¤Î¤ò µ­½Ò¤¹¤ë¸À¸ì¤È¡¤¾ÚÌÀ¤òÁàºî¤¹¤ë(¾ÚÌÀ¤ò¤É¤Î¤è¤¦¤Ê¼ê½ç¤Ç¹Ô¤Ê¤¦¤« ¤Ê¤É¤òÀ©¸æ¤¹¤ë)¤¿¤á¤Î¸À¸ì¤¬»È¤ï¤ì¤Æ¤¤¤ë¡¥Á°¼Ô¤òÂоݸÀ¸ì—object language—¤È¸Æ¤Ó¡¤¸å¼Ô¤ò¥á¥¿¸À¸ì—meta language—¤È¸Æ¤Ö¡¥ML ¤Ï¤³¤Î ¾ÚÌÀÁàºîÍѤΥ᥿¸À¸ì(Ƭʸ»ú¤ò¤È¤Ã¤Æ ML)¤«¤éȯŸ¤·¤Æ¤­¤¿¸À¸ì¤Ç¡¤´Ø¿ô·¿ ¥×¥í¥°¥é¥ß¥ó¥°¤È¸Æ¤Ð¤ì¤ë¥×¥í¥°¥é¥ß¥ó¥°¥¹¥¿¥¤¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡¥ML¤Ï ³Ë¤È¤Ê¤ëÉôʬ¤¬¾®¤µ¤¯¥·¥ó¥×¥ë¤Ç¤¢¤ë¤¿¤á¡¤¥×¥í¥°¥é¥ß¥ó¥°½é¿´¼Ô¸þ¤±¤Î¶µ°é ÍѤËŬ¤·¤¿¸À¸ì¤Ç¤¢¤ë¤ÈƱ»þ¤Ë¡¤Â絬ÌϤʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó³«È¯¤Î¤¿¤á¤Î¥µ¥Ý¡¼ ¥È(¥â¥¸¥å¡¼¥ë¥·¥¹¥Æ¥à¡¦¥é¥¤¥Ö¥é¥ê)¤¬½¼¼Â¤·¤Æ¤¤¤ë¡¥ML¤Î³Ë¸À¸ì¤Ï·¿ÉÕ¤­ λ·×»»¤È¸Æ¤Ð¤ì¤ë¡¤·Á¼°Åª¤Ê·×»»¥â¥Ç¥ë¤Ë´ð¤Å¤¤¤Æ¤¤¤ë¡¥¤³¤Î¤³¤È ¤Ï¡¤¸À¸ì»ÅÍͤò·Á¼°Åª¤Ë(¿ô³ØŪ¤Ê¸·Ì©¤Ê³µÇ°¤òÍѤ¤¤Æ)ÄêµÁ¤·¡¤¤½¤ÎÀ­¼Á¤ò¸· Ì©¤Ë¡Ö¾ÚÌÀ¡×¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤·¤Æ¤¤¤ë¡¥¼ÂºÝ¡¤Standard ML ¤È¤¤¤¦É¸½à²½¤µ ¤ì¤¿¸À¸ì»ÅÍÍ []¤Ë¤ª¤¤¤Æ¤Ï¡¤(¥³¥ó¥Ñ¥¤¥é¤Î¼õÍý¤¹¤ë)Àµ¤·¤¤¥×¥í ¥°¥é¥à¤Ï·è¤·¤Æ̤ÄêµÁ¤ÎÆ°ºî¤ò¤ª¤³¤µ¤Ê¤¤¡¤¤È¤¤¤Ã¤¿À­¼Á¤¬¼¨¤µ¤ì¤Æ¤¤¤ë¡¥

¤³¤Î±é½¬¤Ç³Ø¤Ö¤Î¤Ï ML ¤ÎÊý¸À¤Ç¤¢¤ë Objective Caml ¤È¤¤¤¦¸À¸ì¤Ç¤¢¤ë¡¥Objective Caml ¤Ï INRIA ¤È¤¤¤¦¥Õ¥é¥ó¥¹¤Î¹ñΩ¤Î·×»»µ¡²Ê³Ø¤Î¸¦µæ½ê¤Ç¥Ç¥¶¥¤¥ó³«È¯¤µ¤ì¤¿ ¸À¸ì¤Ç¡¤Standard ML ¤È¤ÏʸˡŪ¤Ë°ã¤Ã¤¿¸À¸ì¤Ç¤¢¤ë¤¬¡¤¤Û¤È¤ó¤É¤Î³µÇ°¡¦µ¡ ǽ¤Ï¶¦Í­¤·¤Æ¤¤¤ë¡¥¤Þ¤¿¡¤Objective Caml ¤Ç¤Ï Standard ML ¤Ë¤Ï¸«¤é¤ì¤Ê¤¤¡¤Æȼ« ¤Î³ÈÄ¥¤¬Â¿¤¯»Ü¤µ¤ì¤Æ¤ª¤ê¡¤´Ø¿ô·¿¥×¥í¥°¥é¥ß¥ó¥°¤À¤±¤Ç¤Ê¤¯¡¤¥ª¥Ö¥¸¥§¥¯¥È »Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°¤â¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡¥¤Þ¤¿¥³¥ó¥Ñ¥¤¥é¤â¸úΨ¤Î¤è¤¤¤â¤Î¤¬ ³«È¯¤µ¤ì¤Æ¤¤¤ë¡¥

1.1.1  ML¡¦Objective Caml ¤ÎÆÃħ

ML ¤ÎÆÃħ¤È¤·¤Æ¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î¤¬µó¤²¤é¤ì¤ë¡¥

¤Þ¤¿¡¤Objective Caml Æȼ«¤ÎÆÃħ¤È¤·¤Æ¤Ï¡¤

¤Ê¤É¤¬µó¤²¤é¤ì¤ë¡¥

1.2  »²¹Í½ñ¡¤»ñÎÁ¡¤¥Þ¥Ë¥å¥¢¥ë

Objective Caml ¤Î¥Þ¥Ë¥å¥¢¥ë [] (±Ñ¸ì)¤Ï ¤è¤ê¥ª¥ó¥é¥¤¥óÍøÍѤ¬²Äǽ¤Ê¤è¤¦¤Ë¤·¤Æ¤¢¤ë¡¥ ¤Þ¤¿ ¤«¤é¡¤FAQ ¤Ê¤É¤Îʸ½ñ¡¤½èÍý·Ï¤Î¥½¡¼¥¹¡¦¥³¥ó¥Ñ¥¤¥ëºÑ ¥Ð¥¤¥Ê¥ê¡¤Objective Caml ¤ò»È¤Ã¤¿¥½¥Õ¥È¥¦¥§¥¢¤Ê¤É¤¬ÍøÍѤǤ­¤ë¡¥ Objective Caml ¤Ï¡¤Caml ¤È¤¤¤¦¸À¸ì¤ò³ÈÄ¥¤·¤Æ¡¤¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥° ¤Îµ¡Ç½¤Ê¤É¤ò²Ã¤¨¤¿¤â¤Î¤Ç¤¢¤ë¤¬¡¤ËÜÍè¤Î Caml ¤Î¶µ²Ê½ñ¤È¤·¤Æ []¤¬½ÐÈǤµ¤ì¤Æ¤¤¤ë¡¥¤Þ¤¿¡¤¥Õ¥é¥ó¥¹¸ì¤Î Objective Caml ¤ÎËܤ¬ O'Reilly ¤«¤é½ÐÈǤµ¤ì¤Æ¤¤¤ë¤¬¡¤¸½ºß¡¤±ÑÌõ¥×¥í¥¸¥§¥¯¥È¤¬¿Ê¹ÔÃæ¤Ç¡¤¥ª¥ó ¥é¥¤¥ó¤Çhttp://caml.inria.fr/oreilly-book/ ¤è¤êÍøÍѲÄǽ¤Ë¤Ê¤Ã¤Æ ¤¤¤ë¡¥°ìÊý¡¤Standard ML¤Î¶µ²Ê½ñ¤Ï¤½¤ì¤ËÈæ¤Ù¤ì¤Ð¿¿ô½ÐÈǤµ¤ì¤Æ¤¤¤ë [, , ]¤¬¡¤Objective Caml¤È¤Ïʸˡ¤ò´Þ¤áÈù̯¤Ë°Û¤Ê¤ë¤Î¤Ç ML ÆþÌç¼Ô¤Ï¤«¤¨¤Ã¤Æº®Í𤹤뤫¤â¤·¤ì¤Ê¤¤¡¥

[]¤Ï¡¤ºÆµ¢/·¿¤Î³µÇ°¤òÂÐÏ÷Á¼°¤ÇÊ¿°×¤Ë ²òÀ⤷¤Æ¤¤¤ë°ìÉ÷ÊѤä¿ËܤǤ¢¤ë¡¥Æɤߤ䤹¤¤¤Î¤Ç¡¤¤³¤Î¼Â¸³¤Ç¶½Ì£¤ò»ý¤Ã¤¿¤éÆÉ ¤ó¤Ç¤ß¤ë¤ÈÌÌÇò¤¤¤À¤í¤¦¡¥

1.3  ´Ä¶­ÀßÄê

´Ä¶­ÀßÄê¤Ï¡¤Emacs ¥¨¥Ç¥£¥¿¤Ç¤Î ¥×¥í¥°¥é¥àÊÔ½¸/¼Â¹Ô¤Î¤¿¤á¤ÎÀßÄê¤ò¹Ô¤¦¡¥

Emacs ¤ÎÀßÄê

Emacs (Mule) ¾å¤Ç Objective Caml¥×¥í¥°¥é¥à¤ÎÊÔ½¸¤ò½õ¤±¤ë¥×¥í¥°¥é¥à tuareg-mode () ¤¬~igarashi/lib/elisp ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì ¤Æ¤¤¤ë¡¥°Ê²¼¤Ï ~/.emacs ¤Ë²Ã¤¨¤ëÀßÄê¤Ç¤¢¤ë¡¥

;; append-tuareg.el - Tuareg quick installation: Append this file to .emacs.

(setq load-path (cons "~igarashi/lib/elisp/tuareg-mode" load-path))

(setq auto-mode-alist (cons '("\.ml\w?" . tuareg-mode) auto-mode-alist))
(autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code" t)
(autoload 'camldebug "camldebug" "Run the Caml debugger" t)

(if (and (boundp 'window-system) window-system)
    (when (string-match "XEmacs" emacs-version)
        (if (not (and (boundp 'mule-x-win-initted) mule-x-win-initted))
            (require 'sym-lock))
        (require 'font-lock)))

Emacs ¤òµ¯Æ°¤·Ä¾¤·¤Æ¡¤.ml ¤È¤¤¤¦³ÈÄ¥»Ò¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤ò³«¤¤¤¿¤È¤­¤Ë ¥â¡¼¥É¥é¥¤¥ó¤Ë (Tuareg) ¤Èɽ¼¨¤µ¤ì¤ë¤³¤È¤ò³Îǧ¤¹¤ë¤³¤È¡¥

¤Ê¤ª¡¤°Ê¾å¤ÎÀßÄê¤Ï¡¤¼ø¶ÈWWW¥Ú¡¼¥¸¤Î¼ø¶È¥¹¥±¥¸¥å¡¼¥ëÍó¤Î´Ä¶­ÀßÄê (http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/configure.txt) ¤è¤ê¥ª¥ó¥é¥¤¥ó¤ÇÍøÍѤǤ­¤ë¤Î¤Ç¡¤¥«¥Ã¥È¡õ¥Ú¡¼¥¹¥È¤¹¤ë¤È¤è¤¤¤À¤í¤¦¡¥


Previous Up Next